diff --git a/.gitignore b/.gitignore index 172b3486d2..270f81832d 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,8 @@ _ReSharper*/ [Tt]est[Rr]esult* ipch/ *.opensdf +SubmissionInfo +Generated Files # Ignore files build by ndk and eclipse libs/ @@ -103,6 +105,7 @@ CMakeCache.txt CMakeFiles Makefile cmake_install.cmake +CMakeLists.txt.user # Ignore files generated by console build/build/ @@ -132,7 +135,9 @@ project.properties /external/websockets/ /external/win32-specific/ /external/winrt-specific/ +/external/winrt_8.1-specific/ /external/wp8-specific/ +/external/wp_8.1-specific/ /external/version.json /templates/lua-template-runtime/runtime /v*-deps-*.zip @@ -144,3 +149,4 @@ tests/cpp-tests/Resources/audio /external/ConvertUTF/ /external/audio/ /external/xxtea/ +/external/protobuf-lite/ diff --git a/AUTHORS b/AUTHORS index d30a8d123c..02c00f0548 100644 --- a/AUTHORS +++ b/AUTHORS @@ -662,6 +662,7 @@ Developers: Added HttpClient::sendImmediate() Added operator == != for Value Replace dynamic_cast to std::is_base_of in object_to_luaval + Added support normalize path on android superrad Clear NoSuchMethodError Exception when JniHelper fails to find methodID @@ -812,6 +813,7 @@ Developers: Added getAllTouches() in GLViewProtocol Precompiled headers improvements Added Application::openUrl for all supported platforms ecept WP8 and WinRT + Scale9Sprite capInsets set fix youknowone Adds iOS-like elastic bounceback support for cocos2d::extension::ScrollView @@ -853,6 +855,7 @@ Developers: Fixed memory leak in 'Image' Fixed loosing precision when using 'recv' in 'Console' Fixed link error with Xcode 6 when building with 32-bit architecture + Fixed CMake for Mac OS X ololomax Fixed a potential crash in SceneReader::createNodeWithSceneFile @@ -1025,6 +1028,9 @@ Developers: yestein Add Cocostudio Armature getOffsetPoints API for Lua + + coldfog + Fix bug that ActionManagerEx::initWithBinary can only load one UI animation Retired Core Developers: WenSheng Yang diff --git a/CHANGELOG b/CHANGELOG index 6e41066be9..2222f70ba9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,24 +1,33 @@ -cocos2d-x-3.3-beta1 +cocos2d-x-3.3-rc0 Oct.21 2014 [NEW] 3d: added light support: direction light, point light, spot light and ambient light + [NEW] Added ClippingRectangleNode + [NEW] Added AssetsManagerEx, which is more powerful than AssetsManager + [NEW] Added a test case of sprite lamp effect + [NEW] Animate3D: can create with start frame and end frame [NEW] Audio: new audio supports Mac OS X and Windows [NEW] Application: added openUrl() [NEW] Armature: added getOffsetPoints() [NEW] Lua-binding: added Camera3DTest ,BillBoradTest [NEW] Node: schedule/unschedule lambda functions [NEW] Rect: added merge() + [NEW] Spine: update to 2.0.18 + [NEW] TileMap: added staggered tile map support [NEW] Utils: added getCascadeBoundingBox() - [NEW] UI: `WebView` support on windows [NEW] WP8: enabled screen orientation change handling [FIX] Accelerometer: using Accelerometer will freeze app and then crash on WP8 + [FIX] Application: getCurrentLanguageCode() always return empty string [FIX] Action: kRepeatForever macro superseded by CC_REPEAT_FOREVER macro [FIX] C++: remove armv7s in VALID_ARCHS for Xcode projects [FIX] Cocos Studio reader: UI animation playing crash if GUI JSON file is loaded again [FIX] Cocos Studio reader: improvement ImageViewReader don't necessary loadTexture when imageFilePath is empty [FIX] EditBox: view rendereed in wrong position if click EditBox on iOS 8 + [FIX] FileUtils: can not remove files/directory on iOS devices + [FIX] GLProgram: crashed on some Android devices that do not support more than 8 attributes [FIX] Label: getStringNumLines() may returns wrong result if label is dirty [FIX] Label: can not change opacity if using FNT font [FIX] Label: endless loop if not using system font, and constrained length is less than one character width + [FIX] LabelAtlas: opacity do not change when setting parent's opacity [FIX] Lua-bindings: may crash if passing two-dimensional table from lua to c++ [FIX] New audio: can not play audio after playing some times on Android [FIX] Node: macro scheduler_selector() superseded by CC_SCHEDULER_SELECTOR(). The same is true for the other schedule_ macros @@ -26,6 +35,8 @@ cocos2d-x-3.3-beta1 [FIX] Node: crashed if remove/add child too quickly when using integrated physics [FIX] TextFieldTTF: will get wrong characters if using Chinese input method on WP8 [FIX] UI: Button: button remains gray when releasing it, this issue only happened if enable scale9 and only has one texture + [FIX] UI: Button: when creating a button with a title only, button content size is not immediately updated + [FIX] UI: EditBox: setMaxLength is invalid on mac cocos2d-x-3.3-beta0 Sep.20 2014 [NEW] 3d: added `BillBoard` @@ -804,1176 +815,4 @@ cocos2d-x-3.0alpha0-pre @Jul.30 2013 [Refactor] #2300: Using clone() pattern instead of 'copyWithZone' pattern [Refactor] #2305: Use std::thread instead of pthread [Refactor] #2328: ETC support for all platforms - [Refactor] #2373: Change some member functions to const - [Refactor] #2378: Remove the usage of CC_PROPERTY_XXX in engine code - [Refactor] #2388: Creating a default texture for CCSprite if setTexture(nullptr) is invoked - [Refactor] #2397: Singleton refactor, sharedXXX --> getInstance, purgeXXX --> destroyInstance - [Refactor] #2404: Move all deprecated global functions and variables into CCDeprecated.h - [Refactor] #2430: Uses strongly typed enums (enum class) instead of simple enums -[iOS] - [FIX] #2274: compile and run for iOS7 and Xcode5 - [Refactor] #2371: use one single Xcode project for iOS and Mac projects -[Android] - [FIX] #2306: CCLabelTTF::setString crash - [Refactor] #2329: use Android "asset manager" to improve file system read performance - [Refactor] #2400: use onWindowFocusChanged(bool) instead of onResume()/onPause() -[OS X] - [FIX] #2275: LabelTTF vertical alignment - [FIX] #2398: Add support for initializing Image with raw data -[windows] - [FIX] #2322: link error becasue of using multiply inheritance -[JavaScript bindings] - [FIX] #2307: PhysicsSprite::getCPBody return wrong type - [FIX] #2313: bind cc.ClippingNode - [FIX] #2315: iterating through cc.Node children crash - [Feature] #2285: bind MontionStreak - [Feature] #2340: Updates SpiderMonekey to Firefox v22 (JS Bindings) - [Feature] #2427: bind FileUtils.getInstance().createDictionaryWithContentsOfFile -[Lua bindings] - [Feature] #2276: Add CCScrollView Lua binding and corresponding test sample - [Feature] #2277: Add OpenGL Lua binding and corresponding test sample - [Feature] #2324: Add OpenGL Lua module - [Feature] #2343: Redesign the mechanism of invoking Lua func from c++ - [Feature] #2344: make some execute functions into one function in ScriptEngineProtocol - [Feature] #2426: Add DrawPrimitives test sample - [Feature] #2429: LuaWebSocket supports sending binary string -[plugin-x] - [FIX] #2348: event will not be sent to server when paramMap argument of logEvent function is nil -[Emscript] - [Feature] #2289: Asynchronous Image loading - - -2.1rc0-x-2.1.4 @Jnue.12 2013 -[all platforms] - Bug #2098: fix TouchPriority issue of CCScrollView - Bug #2107: fix crash in HttpClient request on 64Bit - Bug #2115: fix linking errors for TestCPP with libcurl - Bug #2128: remove setting ignoreAnchorPoint for child CCB files and fix crash while trying to load sprite frame when the file is missing - Bug #2140: fix a bug that the displayed color of CCDrawNode is incorrect when VAO is disabled - Bug #2142: adding CCDataVisitor and implementing CCPrettyPrinter - Bug #2143: fix a crash caused by ScrollView.setDelegate(tmp function) - Bug #2146: unpack texture data correctly - Bug #2147: fix null pointer access in CCBAnimationManager::getRunningSequenceName() - Bug #2150: fix a bug that setColor and setOpacity of CCControlButton and CCScale9Sprite are broken - Bug #2251: fix a logical error in CCDrawNode::drawPolygon() - Bug #2271: fix memory leak as possible - Feature #1859: make AssetsManager download resources in a new thread - Feature #2086: make CCLabelTTF supports shadows and stroke - Feature #2100: add CCDirector::popToSceneStackLevel(int level) - Feature #2105: add Travis build support - Feature #2108: add example for russian language in TestCpp - Feature #2111: add CC_DISABLE_COPY macro - Feature #2114: add __attribute__(__format__()) for CCLog and CCString - Feature #2116: support negative node scales for CCScrollView - Feature #2117: implement CCDictionary::writeToFile() - Feature #2122: add method to create a CCMenuItemToggle from a CCArray with a target selector - Feature #2132: add encrypted PVR.CCZ support to ZipUtils + Tests - Feature #2157: add Mingw-crt Support without breaking VS SDK - Feature #2265: add CCLabelTTF::createWithFontDefinition() - Feature #2270: add Armature(CocoStudio runtime) support - Refactor #2109: add const modifier for classes CCArray, CCObject - Refactor #2118: move ccpX functions to CCPoint methods and operators - Refactor #2119: use httpresponse_selector instead of callfuncND_selector for the callback function of CCHttpRequest - Refactor #2123: refactor network extension, fixing unlikely memory leaks, adding PUT/DELETE methods - Refactor #2127: add CCLOG before original path is returned in CCFileUtils::fullPathForFileName to aid in debugging - Refactor #2149: add const qualification to some CCNode's getters - Refactor #2189: CCLabelTTF::enableShadow() const update - Refactor #2215: refactor CCConfiguration - Refactor #2217: use CCLabelAtlas instead of CCLabelTTF to show FPS - Refactor #2231: implement a format of CCConfiguration - Refactor #2233: add support for "CCString" types for boolean and integers in CCConfiguration - Refactor #2236: fix memory hot spot of CCTextureAtlas::updateQuad() -[android] - Bug #1284: fix a bug that SimpleAudioEngine may cause crash on i9100 - Bug #2151: fix custom font loading on Android for resource mapped font files - Bug #2190: updat .classpath of Android project to latest ADT 22 build tool compatibility - Bug #2266: fix a bug that CCFileUtils::getFileData() may not get file data correctly on Android - Feature #2161: add ETC1 image format -[iOS] - Bug #2102: fix missing protocol method warning for iOS 6.0 addition - Bug #2104: fix a bug that JPEG picture not displayed correctly on iOS 4.3 - Bug #2260: fix a bug that CCDirectory::createWithContentsOfFile() returns a valid pointer though the file is missing on iOS - Refactor #2101: update cocos2dx Xcode project to detect more warnings - Refactor #2253: add UITextField only when keyboard was opened, removing it when keyboard was closed -[mac] - Bug #2249: fix linebreaks on Mac OSX -[win32] - Bug #2131: fix memory leak of SimpleAudioEngine::preloadEffect() - Bug #2145: center the window correctly on windows -[emscripten] - Feature #2120: compile c++ to js - Bug #2159: use browser font rendering instead of FreeType - Refactor #2133: compile for Emscripten in asm.js mode - Document #2121: write a document to describe the usage of emscriptenate port -[tizen] - Feature #2185: add support for Tizen -[JavaScript bindings] - Bug #2099: fix a bug in ScriptingCore::evalString() not setting the outval - Bug #2179: fix a bug that pointQueryFirst returns invalid Shape when a shape is not found - Bug #2186: fix a bug that new PivotJoint can't access 4 parameters like in html5 version - Bug #2187: JavaScript debugger improved and bug fixed - Bug #2243: fix a bug that XMLHttpRequest dones't support non-ascii characters - Bug #2244: fix a bug that cc.Camera.getEyeXYZ, cc.Camera.getCenterXYZ, cc.Camera.getUpXYZ return bad values - Feature #1647: Bind websocket to JavaScript - Feature #2092: add XMLHttpRequest and bind it to JSB - Feature #2106: add support for JavaScript byte code - Feature #2162: add command line tool for generating JavaScript bytecode - Feature #2214: upgrade Spidermonkey to Firefox v21 - Refactor #2152: log assert messages to the console and renaming CCScriptSupport::executeAssert to CCScriptSupport::handleAssert - Refactor #2247: use functions instead of macros to speeding up building for JSB project -[Lua bindings] - Feature #2103: implement most test cases - -cocos2d-2.1rc0-x-2.1.3 @May.01 2013 -[all platforms] - Bug #1853: use SHELLOPTS instead of "-o igncr" for Android Eclipse project - Bug #1860: fix a bug that onNodeLoaded will be called twice if ccb was added as a CCBFile - Bug #1862: fix a bug that CCScrollView::setContainer may cause dangling pointer when NULL is passed into - Bug #1876: fix a bug that CCScale9Sprite::setColor() & setOpacity() are broken - Bug #1935: fix a bug that use "==" for float comparison of CCPoint and CCSize - Bug #1937: fix a bug that CCControl's touch priority is not set correctly, m_nDefaultTouchPriority is never used - Bug #1943: added some missing function for setting integer shader uniforms in CCGLProgram - Bug #1999: allowing to set fontName and fontSize separately for CCEditBox - Bug #2003: fix a potential crash in CCScheduler::removeHashElement() - Bug #2030: fix a bug that scissor rectangle in nested CCScrollView is wrong - Bug #2031: make CCFileUtils::createXXXXWithContentsOfFile() support relative path - Bug #2035: fix a potential crash in CCSaxParser - Bug #2037: fix a wrong logic in CCArray::initWithObjects() - Bug #2040: get scale property from sub-ccb node may trigger an assert - Bug #2054: fix a bug that anchorPoint property of CCScale9Sprite doesn't work in CCBReader - Bug #2055: enable easy switching between Box2D and chipmunk - Bug #2058: properly resets the tile's Y flipping - Bug #2061: fix a bug that wrong type of argument signature is used in setAccelerometerIntervalJNI function - Bug #2073: fix a memory leak in CCUserDefault - Bug #2080: fix a bug that _realOpacity isn't assigned in CCLayerColor::initWithColor - Feature #2001: add CCRemoveSelf Action - Feature #2048: support variable cell sizes in CCTableView - Feature #2065: adding kResolutionFixedHeight and kResolutionFixedWidth resolution policy - Feature #2068: adding a secureTextEntry property to CCTextFieldTTF - Feature #2069: adding new macro CCB_MEMBERVARIABLEASSIGNER_GLUE_WEAK to CCBMemberVariableAssigner.h - Feature #2075: support spine editor - Feature #2076: adding a method CCBReader::setResolutionScale for setting resolution scale manually - Refactor #1592: updating UTHASH to v1.9.8 - Refactor #2042: remove libxml2 - Refactor #2097: use pthread mutex and condition variable instead of pthread semaphore to load image asynchronizely -[android] - Bug #1996: adding missing JNIEXPORT / JNICALL declarations - Bug #2028: fix a bug taht application can not run correctly on Android simulator - Bug #2045: some small fixes to CocosPlayer - Bug #2062: fix for spaces at the beginning of wrapped lines - Bug #2083: fix a bug that Bytecode of LuaJIT can't work on android - Refactor #1613: not reload resources when coming from background on Android - Refactor #1861: CocosPlayer Android update - Refactor #1904: strip libcurl.a on x86 architecture - Refactor #2027: reduce function call in nativeInitBitmapDC to improve performance - Refactor #2047: clean up linked libraries for android -[iOS] - Bug #1863: fix a bug that CCUserDefault on iOS may not save immediately - Feature #2096: adding Cocosplayer for iOS and bug fixes -[linux] - Bug #1932: fix a bug that font rendering crashed for certain fonts - Bug #2036: correct passed buffer size to readlink - Bug #2044: link libpthread and libGL - Bug #2046: strip newlines from log message and fixing linux library location - Bug #2052: fix a bug that [-Werror=array-bounds] error appears when compiling Box2dTestBed - Feature #2032: Linux OpenAL support - Refactor #2000: improve font rendering performance for linux platform - Refactor #2053: set writable path to "/.config/" -[mac] - Bug #2051: fix a bug that TestCpp/ExtensionsTest/CocosbuilderTest crashes under x86_64 target - Feature #1856: adding 64bit target for Mac project -[JavaScript bindings] - Bug #1855: fix a bug that std_string_to_jsval generates messy js string when passed a non-ascii UTF8 std::string - Bug #2057: adding response for back and menu keypad event for Android - Bug #2059: fix a bug that cc.FileUtils.getInstance().getStringFromFile(filename) doesn't return a whole string - Bug #2071: fix a bug that cc.TMXLayer.getTiles() can't work - Feature #1841: find a way to obfuscate JavaScript code on the top of JSB - Feature #1936: adding OpenGL Bindings to Javascript - Feature #2043: upgrading SpiderMonkey to Firefox20.0 - Feature #2060: support for cc.FileUtils.getInstance().getByteArrayFromFile(filename) - Feature #2064: exposing cc.Node.nodeTo***Transform to JS - Refactor #1944: subclass of cc.Sprite,cc.Layer... doesn't need cc.associateWithNative anymore -[Lua bindings] - Feature #1814: add menutest - Feature #1941: add TileMapTest - Feature #1942: add LayerTest - Feature #1945: use CCLOG to implement print() function - Feature #1993: add ParallaxTest - Feature #1994: add ActionManagerTest - Feature #1997: add IntervalTest - Feature #1998: add SceneTest - Feature #2002: add Texture2dTest, RenderTexture, ZwoptexTest, FontTest, CocosDenshionTest and EffectsAdvancedTest - Feature #2004: add UserDefaultTest - Feature #2005: add CurrentLanguageTest - Refactor #1847: use luajit - Refactor #2084: unify the method of loading Lua files on all platforms - -cocos2d-2.1rc0-x-2.1.2 @Mar.20 2013 -[all platforms] - Bug #1529: use NSUserDefaults on iOS and SharedPreferences on Android implement CCUserDefault - Bug #1672: fix a bug that CCTableView is too sensitive on some devices with high density display - Bug #1689: support horizontal alignment for Custom TTF fonts - Bug #1691: fix a bug that CCControlSwitch::setOn(isOn,false) doesn't work - Bug #1692: add TMX polygon parsing - Bug #1697: fix a logical error in CCRenderTexture::initWithWidthAndHeight() - Bug #1710: add simpler,correct handling of spritesheet sources for CCScale9Sprite - Bug #1711: fix a bug that clipping rectangle of CCScrollView is wrong when the scale of its ancestors isn't equal to 1 - Bug #1731: change declaration of CCSize, CCPoint and CCRect in pkg file - Bug #1751: fix a bug that clicking outside of CCTableViewCell will also get response when container size is smaller than view size - Bug #1754: fix a bug that offset of the container is wrong in CCTableView - Bug #1821: fix a bug that the display result is wrong when invoking CCControlButton::setHighlighted() - Feature #1686: synchronize to cocos2d-iphone v2.1rc0 - Feature #1708: adding Portuguese and Arabic language support - Feature #1712: add an interface to get DPI - Feature #1741: CCLens3d can be concave - Feature #1742: add 'rotationIsDir' property to ParticleSystem - Feature #1761: implement setVisible() for CCEditBox - Feature #1807: add getStartLocationInView() and getStartLocation() methods in CCTouch - Feature #1822: add CCNotificationCenter::removeAllObservers(CCObject *target) - Feature #1838: synchronize CCBReader to the lastest version - Feature #1489: add AssetsManager - Refactor #1687: refactor CCFileUtils and CCImage - Refactor #1700: add webp image format support - Refactor #1702: change return value of CCFileUtils::getWritablePath() - Refactor #1703: replace libxml2 with tinyxml2 - Refactor #1749: add 'setFont' and 'setAnchorPoint' to CCEditBox -[android] - Bug #1752: fix a bug that libcurl.a causes link error after being stripped - Bug #1760: fix a bug that cpufeatures module is redefined - Bug #1775: fix a bug that OpenSLEngine can not load resources from SD card - Bug #1812: fix a warning of getStringWithEllipsisJni() function when compiling it with clang - Feature #1827: support building android project, including native codes, in Eclipse -[iOS] - Bug #1750: fix a bug that CCEditBox's position is incorrect when it's added to a non-fullscreen CCNode - Bug #1804: fix for loading custom fonts on iOS when referenced from a CCB file - Feature #1842: support kEditBoxInputFlagSensitive setting for CCEditBox on iOS - Refactor #1755: add CocosDenshion xcode project - Refactor #1825: use CCLabelTTF to show text for CCEditBox -[JavaScript bindings] - Bug #1707: fix a crash caused by unaligned memory access in CCBReader::readFloat() - Bug #1726: fix crash of JSB application on android device with armv6 architecture - Bug #1729: fix compiling error of ScriptingCore.cpp with C++11 on iOS - Bug #1747: fix a crash when passing null to cc.AnimationFrame.initWithSpriteFrame() - Bug #1823: use shared NodeLoaderLibrary in CCBReader bindings - Feature #1724: add HelloJS sample - Feature #1730: bind CCScrollView and CCTableView to js - Feature #1748: separate chipmunk and sqlite from js_binding_core.cpp - Feature #1753: upgrade SpiderMonkey to Firefox19. - Feature #1808: make cxx_generator support parsing functions that have default parameters - Feature #1811: add a method to get file data for JSB - Feature #1824: bind CCEditBox to JS - Refactor #1682: add ScriptingCore::getGlobalObject() function - Refactor #1740: add cleanup and reset methods to ScriptingCore - Refactor #1830: use JS::CompileOptions::setUTF8(true) to compile script - Refactor #1836: make js target of "cc.Scheduler().scheduleCallbackForTarget()" accept a object that not depend on CCNode or its subclass - Refactor #1837: refactor schedule binding codes -[Lua bindings] - Bug #1745: fix a bug that CCRepeat:create() receives error argument - Feature #1425: fix errors in Lua test cases and add more test cases - Feature #1698: add CCLuaObjcBridge - Feature #1802: add TouchesTest for Lua binding - Refactor #1818: cleanup the tolua++ bindings build system -[win32] - Feature #1634: CCEditBox support - Feature #1746: add VS2012 Express template installing support -[linux] - Bug #1688: fix a bug that truetype fonts from resource directory can't be found - Bug #1810: fix a bug that SimpleAudioEngine::playEffect() and playBackgroundMusic() play twice on linux - Bug #1819: fix a bug that building script exits when missing packages - Bug #1834: fix the size calculations for true type fonts (especially for italic fonts) - Refactor #1806: refactor linux build system - Refactor #1820: add 'make run' target for linux projects -[mac os] - Bug #1637: fix a bug that CCLabelTTF & CCMenuItemLabel cannot display on Mac Retina -[black berry] - Refactor #1709: add support for multiple background music sources -[chrome native client] - Feature #1762: add Native Client support - - -cocos2d-2.1beta3-x-2.1.1 @Jan.29 2013 -[ all platforms] - Bug #1547: fix a bug that when CCMenuItem is removed before touch ended, application will crash if keeping moving - Bug #1553: fix a memory leak in CCControllButton - Bug #1604: fix a bug that the enum values in ccPVR3TexturePixelFormat are truncated to 32bit - Bug #1605: fix a crash that when adding just one action to CCSequence - Bug #1639: fix a bug that CCBReader miss parsing some properties - Bug #1659: fix a bug that invoking runAnimation() in CCBAnimationManagerDelegate::completedAnimationSequenceNamed will cause crash - Bug #1662: fix a bug that returns wrong full path if texture name in the plist doesn't contain relative path - Bug #1664: fix a logical error in CCAtlasNode::setOpacityModifyRGB - Bug #1670: fix a memory leak in CCBReader - Bug #1674: fix a logical error in CCScale9Sprite constructor - Bug #1680: fix a bug that can't set touch priority by invoking CCMenu::setTouchPriority() - Bug #1681: fix a bug that CCTableView crashes if CCTableViewDelegate is not provided - Feature #1598: add japanese language support - Feature #1625: add stackable action support and exchange the order of parameters for 3d relative actions - Feature #1667: add file name lookup support - Refactor #1593: remove all deprecated methods - Refactor #1599: do some improvements of CCScrollView and CCTableView - Refactor #1602: add randomObject to CCDictionary - Refactor #1603: adjust samples directory structure - Refactor #1606: return CCSequence pointer for CCSequence::create - Refactor #1648: make CCPoint, CCRect and CCSize not inherit from CCObject - Refactor #1649: change return type to const reference for member variable accessing - Refactor #1654: report function and line number for CCAssert - Refactor #1683: refactor CCFileUtils to make it be compatible with the resource searching strategy of cocos2d-iphone - Document #1650: add detailed comments for CCDictionary - Document #1678: add detailed doxygen comments for CCNode -[android] - Bug #1544: fix a bug that CCRenderTexture works wrong after coming back to foreground - Bug #1580: fix a bug that application may lost focus after popping up keyboard - Bug #1607: fix a bug that the path CCUserDefault saves in may cause issue - Bug #1610: fix a bug that CCLabelTTF will lost a character at the end of a line - Bug #1623: fix a bug that SimpleAudioEngine::playBackgroundMusic() may not take effect - Bug #1679: upload unstripped prebuilt libraries for armeabi-v7a architectures - Refactor #1673: add to AndroidManifest.xml -[iOS] - Bug #1600: fix a bug that application created by xCode template will crash after coming to foreground - Bug #1612: fix some compilation errors when using c++11 compiler - Bug #1657: fix a memory leak in CCTextureCache::addImageAsync() - Refactor #1636: refactor CCEditBox -[win32] - Refactor #1627: add VS version check in project file -[marmalade] - Bug #1631: make SimpleGame force landscape - Refactor #1629: add marmalade third party cleanup - Refactor #1630: add TestLua post-build script - Refactor #1632: remove grskia dependency and add in freetype support to the builds. -[linux] - Feature #1611: add Lua support - Refactor #1621: add linux 64bit target for eclipse project - Refactor #1676: refactor makefile and eclipse project configuration -[JavaScript bindings] - Bug #1550: fix some memory leaks in JSBinding - Bug #1614: fix a crash caused by DrawNodeTest - Bug #1622: fix a crash when cc.Node.getChildren is invoked if it has no children - Bug #1641: fix a bug that the coins in WatermelonWithMe don't animate - Bug #1644: fix a crash caused by passing NULL parameter to ccdictionary_to_jsval - Bug #1645: fix a bug that JS Project created by xXode template doesn't work correctly - Bug #1653: handle correctly when parsing int value in JSB - Feature #1620: add sys.localStorage support for JSB - Feature #1642: add tools for generating js-binding codes on windows - Feature #1646: update SpiderMonkey to v18.0 - Feature #1660: add js-debugger for js-binding - Feature #1661: add jsb sample game CrystalCraze - Refactor #1530: do some improvements to JS Bindings - Refactor #1633: implement sys.capabilities for JSB -[Lua bindings] - Refactor #1608: add CCNode::scheduleUpdateWithPriorityLua() for LuaBinding - Refactor #1626: add CCDirector::setDisplayStats() for luabinding - -cocos2d-2.1beta3-x-2.1.0 @Dec.5 2012 - [all platforms] - Bug #1556: set a default texture for CCParticleFire, CCParticleFireworks, etc - Feature #1555: update to cocos2d-iphone v2.1 beta3 - Feature #1564: update tests to cocos2d-iphone v2.1beta3 - Feature #1572: add sample game WatermelonWithMe - Feature #1573: add sample game CocosDragonJS - Refactor #1545: remove the usage of NODE_FUNC and CREATE_FUNC - Refactor #1565: remove VS2008 support - Refactor #1576: update CCBReader to latest version of CocosBuilder - Refactor #1589: add CCBReader::setCCBRootPath() - [iOS] - Bug #1548: update libcurl header files to 7.26.0 on iOS - [android] - Bug #1551: add error handler when reading image data using libjpeg - Refactor #1558: improve the speed of accessing to files from apk - [marmalade] - Bug #1559: fix a bug that if a file in resource directory doesn't exist, it will not search from root directory - Bug #1571: add box2d rope to marmalade project - Bug #1590: JPEG and File fixes for marmalade - Feature #1557: Marmalade support - Refactor #1574: update marmalade languages - Refactor #1575: update samples/TestCpp to compatible with marmalade - Refactor #1578: create cocos2dx-ext marmalade project - Refactor #1591: add TestLua marmalade project - [JavaScript bindings] - Bug #1577: fix a bug that touch events lost on Win32 when using JSBinding - Bug #1586: fix a crash in WatermelonWithMe - Bug #1588: rescheduleCallback support for JSBinding - Refactor #1570: improve the debugger for JSBinding - [Lua bindings] - Bug #1587: remove Lua script handler in CCCallFunc's destructor - -cocos2d-2.0-x-2.0.4 @Nov.2 2012 - [all platforms] - Bug #1473: fix a bug that CCScale9Sprite does not support rotated spriteframe in atlas - Bug #1494: fix a bug that missing removing auto-release object from AutoReleasePool if it invokes 'autorelease' method more than one time - Bug #1495: fix a bug that CCScrollView display area and touch area are wrong if its parent's postion isn't at CCPointZero in world - Bug #1508: fix a bug that potential observer array modification while it's traversed in CCNotificationCenter - Bug #1510: fix a bug that application will freeze when 'numberOfCellsInTableView' returns zero - Bug #1516: fix a bug that the font size of labels for displaying FPS,SPF,DrawCount is incorrect in different design resolutions - Bug #1536: CCControl* should not respond to touches if the control is not visible - Bug #1538: fix a logic error in CCControlHuePicker::checkSliderPosition() - Bug #1543: fix a bug that CCLayerGradient background of CocosBuilderTest can't be shown - Feature #1515: add a zoom function for debugging large resolution (e.g.new ipad) app on desktop - Refactor #1312: upgrade libcurl to 7.26.0 - Refactor #1486: apply multi-resolution mechanic on iOS, especially for iphone5 - Refactor #1520: add comments to describe the usage of multiresolution in HelloCpp - Refactor #1521: use relative coordinates in TestCpp - Document #1532: write a document describes how to debug games for ipad3 on low-resolution PC - Document #1493: add doxygen comments in CCNotificationCenter.h - [android] - Bug #1466: reload shader for test case "ShaderTest" after it comes from background - Bug #1500: fix a bug that CCRenderTexture cannot render properly on some Qualcomm Adreno GPUs - Bug #1507: fix a bug that can not play effect for the first time without pre-load effect - [iOS] - Bug #1527: fix a bug that MoonWarriors can not run on iOS simulator sometimes - Refactor #1491: remove dependency of FontLabel lib - [JavaScript bindings] - Bug #1526: fix a bug that JavaScript binding related samples will crash on iOS devices - Feature #1469: add MoonWarriors as a sample game - Refactor #1487: use shared JavaScript test cases with cocos2d-html5 and cocos2d-iphone - Refactor #1517: upgrade SpiderMonkey to FF 17.0 beta3 - [Lua bindings] - Bug #1506: fix a compilation error of TestLua if the path of cocos2d-x contains spaces - [win32] - Bug #1496: fix an error of comparing font's face name in CCImage of win32 port - Bug #1511: fix openGL framebuffer access violation - Bug #1540: fix win32 CCLuaLog memory leaks and invalid console UTF8 output - Feature #1513: add Multi-Touch support for win7/8 tablet or ultrabook - Refactor #1512: change writable directory to "C:\Documents and Settings\username\Local Settings\Application Data\your app name" if the app be built in release mode - -cocos2d-2.0-x-2.0.3 @Sep.26 2012 - [all platforms] - Bug #1452: change CCRGBAProtocol to public in order for actions like CCTintTo to have an affect on the CCScale9Sprite - Bug #1454: make JavaScript binding work together with Lua binding and c++ codes - Bug #1464: fix a crash caused by CCLabelBMFont - Bug #1478: fix a bug that TMX parser causes tileset images not to be loaded - Bug #1479: fix a bug that CCNotificationCenter does not check whether the object is valid before post notification - Bug #1485: fix potential memory leak in CCNotificationObserver - Feature #1458: add CCTableView - Feature #1460: min/max allowed value for CCControlSlider - Feature #1470: update CCBReader to cocosbuilder v2.1 beta - Feature #1483: synchronize CCControlExtension to newest version - Refactor #1477: abstracts Lua and JS binding protocol, some bugs fixes in lua-binding, adding custom menu on win32 and mac for switching resolutions - [iOS] - Bug #1482: fix a bug that orientation is wrong on iOS 6 SDK - Bug #1453: fix a bug that CCGL.h includes wrong path of a header file - Bug #1484: fix a minor memory-logic error in EditBoxImplIOS.mm - Feature #1455: add Xcode template for cocos2dx-js - [android] - Refactor #1481: refactor android Java+JNI - [mac os] - Bug #1456: remove code signing from MAC TestCpp project - [linux] - [win32] - Feature #1457: Add vs2012 sln - Feature #1474: popup a warning dialog instead of crash directly when OpenGL version is too old to run 2dx - [js-bindings] - Feature #1451: merge new js-binding codes - Refactor #1476: update location of spidermonkey-android makefile - [lua] - Refactor #1480: Update lua-binding for overloaded functions - [tools] - Feature #1404: add scripts for jenkins-ci - -cocos2d-2.0-x-2.0.2 @Aug.30 2012 - [all platforms] - Bug #1298: fix a logical error of CCSequence - Bug #1371: fix a particle crashes if setAutoRemoveOnFinish(true) - Bug #1379: fix a typo error of comment in CCNode.cpp - Bug #1381: fix a bug that CCLayerColor::setContentSize() declared differently with CCNode::setContentSize() - Bug #1382: fix a crash of CCBReader caused by null pointer - Bug #1384: fix an error when loading CCControlButton from ccbi - Bug #1385: fix a logic error in BitmapFontMultiLineAlignment - Bug #1386: fix a crash of PauseResumeActionsTest - Bug #1395: fix a bug that CCTextureCache::addImage ignores error in CCTexture2D::initWithImage() - Bug #1400: re-assign texture rect of CCControlSlider to consider SpriteFrame orientation - Bug #1403: fix a bug that do not support png8 format - Bug #1408: fix a bug that CCMenuItemImage is not loaded when the target and selector are empty in CCBReader - Bug #1409: fix a bug that loading CCControlButton from ccbi failed - Bug #1427: fix a bug that CCArray::randomObject() may use index that out of range - Bug #1430: fix a bug that can not compute correct label's width or height when its value is 0 - Bug #1440: fix a bug that CCSprite::displayFrame() uses wrong offset to create a sprite frame - Feature #1416: add object-oriented API of CCGeometry - Feature #1405: implement multi-resolution adaption solution - Feature #1424: add a simple wrapper of http access - Feature #1429: add CCEditBox which wraps system edit control - Feature #1439: synchronize to cocos2d-iphone 2.0 stable version - Refactor #1399: adjust directory structure - Refactor #1402: improve static creator function names to avoid confusion - Refactor #1413: improve CCTouch::getLocation(), getDelta() which returns OpenGL coordinates directly - Refactor #1437: change the return type of CCApplication::sharedApplication() and CCGLView::sharedOpenGLView() to a pointer - Refactor #1441: put hd and iPad resources of TestCpp into separate directories - Refactor #1442: use CREATE_FUNC to replace LAYER_CREATE_FUNC and SCENE_CREATE_FUNC - [iOS] - Bug #1389: fix a Xcode 4.5-specific compiling errors that can not convert -1 to unsigned int - Bug #1432: fix a bug that "MutiTouchTest" crashes on IOS if putting more than 5 fingers on the screen - Refactor #1383: change the file path that CCUserDefault saves xml file in - Refactor #1433: remove fpsxxx.png in template - Refactor #1443: Fix some warnings - [android] - Bug #1284: use OpenSL ES to play effects when the device is i9100 - Bug #1372: fix a typo error in platform/android/CCEGLView.h - Bug #1377: fix TMX Tile cracks in the Test App - Refactor #1407: cleaner build script - Refactor #1438: make android template use its own source files - [mac os] - Bug #1417: fix a compiling error when building TestCpp for mac port using command line - Feature #1401: add mac port - [win32] - Bug #1390: fix a win32 error says "The application failed to initialize properly" - [linux] - Bug #1445: fix compiling errors on linux - Feature #1419: add linux port - [blackberry] - Feature #1420: add blackberry port - -cocos2d-2.0-rc2-x-2.0.1 @Jun.28 2012 - [all platforms] - Bug #1257: synchronize CCGrabber.cpp - Bug #1280: fix a bug that BitmapFontMultiLineAlignment test doesn't work correctly - Bug #1286: fix the declaration of tgaLoadRLEImageData() - Bug #1293: fix a bug that CCDirector::getFrames() returns wrong value - Bug #1296: fix a logical error in CCTMXTiledMap::tilesetForLayer() - Bug #1300: fix a typo of CC_ENABLE_CACHE_TEXTTURE_DATA - Bug #1301: apply scissor with points in CCGLView::sharedOpenGLView().setScissorInPoints() - Bug #1302: change the parameter type of CCMenu::setHandlerPriority to signed int - Bug #1308: fix a logical bug in CCTouchDispatcher - Bug #1326: fix a bug that the compilation of HelloLua and testjs project was broken after synchronizing to rc2 - Bug #1330: fix bugs of CCBIReader - Bug #1335: fix memory leaks in cocos2dx and CCBReader - Bug #1368: implement a test case(Effect4) in EffectsAdvancedTest - Feature #1202: remove CCFileData - Feature #1310: synchronize to rc2 - Feature #1323: support CCBIReader - Feature #1324: add create() for static member functions that new an autorelease object - Feature #1332: add macro COCOS2D_VERSION in cocos2d.h - Feature #1333: support CCScrollView - Feature #1334: add ScrollViewTest to CocosBuilderTest - Refactor #1181: refactor CCRenderTexture - Refactor #1283: use relative path in cocos2d.h - Refactor #1288: enhances CCTransitionScene to work even if there is no running scene - Refactor #1289: update CCControlButton: add zoomOnTouchDown property and setPreferredSize - Refactor #1292: modify some function names to make them more readable - Refactor #1336: use CC_DEPRECATED_ATTRIBUTE macro to mark deprecated interfaces - Refactor #1367: change some function names that start with "createWith" to "create" - [iOS] - Bug #1290: fix a bug that a project generated by template can not find Shaders folder - Bug #1297: fix a bug that the effect is wrong when using projection 2d and enabling retina - Bug #1299: fix a bug that SimpleAudioEngine::resumeEffect and SimpleAudioEngine::resumeAllEffects will play effects that are played previously - Bug #1315: fix wrong effect of TileMapTest when enabling retina - Bug #1338: fix a crash of CocosdenshionTest when playing effect then clicking HOME menu - Bug #1343: fix a bug of Xcode template - Bug #1364: fix a bug that can not resume background music after pausing it - Refactor #1269: generate project for cocos2dx, then HelloWorld, tests, HelloLua and testjs can refer it - [android] - Bug #1239: fix a bug that can not stop effect if play effect with loop mode twice - Bug #1278: fix a bug that CocosDenshion::unloadEffect() can not stop playing effect - Bug #1322: make CCLabelTTF support vertical alignment - Refactor #1287: make android template's build_native.sh automatically copy new icons - Refactor #1329: move all java files part of engine into a certain directory, then all projects refer them - [win32] - Bug #1282: fix a crash that if the display card is ATI - Bug #1344: fix a bug of win32 template - Bug #1365: fix a bug that some files of Resources folder which is copied by build_native.sh will lost authority in cygwin - Bug #1366: fix a crash of tests - [lua] - Bug #1369: fix a crash when invoking CCLabelTTF:setPosition(x,y) - Feature #1327: export 'create' method for Lua bindings - -cocos2d-2.0-rc0a-x-2.0 @May.31 2012 - [all platforms] - Bug #1094: fix a bug that nothing will be shown when using CCParticleBatchNode - Bug #1115: fix a bug that CCFileUtils::fullPathFromRelativePath() with resolution parameter return error value with empty string - Bug #1137: fix a memory leak in CCLabelBMFont and sync the implementation of CCLabelBMFont to gles20 branch - Bug #1138: fix a memory leak in CCTextureCache::addPVRImage. - Bug #1155: revert CCDirector singleton to original implementation - Bug #1157: fix a bug that nothing is shown in TMX Orthogonal Test - Bug #1158: fix a bug in CCParticleSystemQuad - Bug #1159: update "CallFuncND + auto remove" test demo - Bug #1160: rename 'CGFloat' to 'CCFloat' - Bug #1164: add the render mode which uses VBO without VAO in CCParticleSystemQuad - Bug #1165: merge pull request #842 - Bug #1187: fix a bug that spanish(Buen día) cannot be shown completely in CCLabelBMFont unicode test - Bug #1189: CCLabelBMFont updateLabel() optimizations and fixes - Bug #1212: fix a bug that TMXBug787Test crash. - Bug #1217: fix a bug that EaseActions reverse broken - Bug #1232: fix a bug that CCLayerGradient::updateColor() assign wrong value to m_pSquareColors - Bug #1244: fix memory leak in CCParticleSystem::initWithDictionary() - Bug #1273: fix a bug that app will crash after clicking closed button in TextureCacheTest - Bug #1275: fix memory leaks in tests project - Bug #1277: implement CCToggleVisibility::copyWithZone() - Feature #1114: integrate CCControlExtension and implement corresponding tests - Feature #1180: synchronize CCConfiguration - Feature #1194: merge texturewatcher contributed by NetGragon - Feature #1205: add ccbreader and test case for CocosBuilder - Feature #1240: support TIFF format picture - Feature #1258: merge Rolando's testjs into gles20 branch - Refactor #1156: synchronize CCDirector - Refactor #1166: improve CCString and CCArray, optimize CCDictionary - Refactor #1176: change linebreak symbol to UNIX format ('\n'), replace 'tab' with four spaces - Refactor #1177: refactor platform - Refactor #1178: use macro NS_CC_BEGIN instead of "namespace cocos2d {", NS_CC_END instead of "}" - Refactor #1188: refactor directory structure - Refactor #1191: update templates for all platforms - Refactor #1198: optimize CCTextureCache::removeUnusedTextures() - Refactor #1203: remove CCFileUtils::setResource(const char* pszZipFileName) and SimpleAudioEngine::setResource - Refactor #1204: refactor AppDelegate::initInstance() - Refactor #1206: remove some unused files, only supports iOS, win32 and android - Refactor #1211: translate Chinese comments to English for CCTextureWatcher and CCListView - Refactor #1246: fix CCDirector using CCLabelBMFont instead of CCLabelTTF - Refactor #1252: add CCEGLViewProtocol::getFrameSize() method for getting the real screen size of device - Refactor #1253: add static method "purgeConfiguration" for CCConfiguration to avoid memory leak - [iOS] - Bug #1109: add parentheses to remove Xcode warnings - Bug #1230: fix a bug that Calculation of string width may be wrong on iOS - Bug #1266: fix a bug that CCTextureCahce::addImageAsync() don't work correctly on iOS - Feature #1095: IOS screen resolution support - [android] - Bug #1139: fix a bug that screen becomes black when backing from background - Bug #1140: fix a bug that ParticleTest crashed - Bug #1141: fix a bug that NodeTest crashed in StressTest1 and StressTest2 - Bug #1142: fix a bug that TouchesTest crashed - Bug #1143: fix a bug that MenuTest crashed - Bug #1144: fix a bug that ParallaxTest crashed - Bug #1145: fix a bug that TileMap crashed - Bug #1146: fix a bug that IntervalTest crashed - Bug #1147: fix a bug that ChipmunkAccelTouchTest crashed - Bug #1148: fix a bug that LabelTest crashed - Bug #1149: fix a bug that SpriteTest crashed when go to second test case - Bug #1150: fix a bug that RenderTextureTest crashed at second test case - Bug #1151: fix a bug that Box2DTest crashed - Bug #1152: fix a bug that PerformanceTest crashed at 1, 2, 5 test cases - Bug #1185: fix a bug that when backing to foreground, will lost texture if it uses sprite batch node - Bug #1216: fix JNI memory leaks - Bug #1229: fix a bug that android port can not be compiled on ndk android-8 level - Bug #1236: fix a bug that JniHelper::jstring2string may crash when parameter is null - Bug #1237: fix a bug that line number message printed by CCAssert is wrong - Bug #1279: fix a bug that NodeNonOpaqueTest can't be shown correctly - Feature #1247: add profiler support for android - Feature #1265: build dynamic library of SpiderMonkey for Android, and implement testjs for android - Refactor #1179: popup a message box when invoking CCAssert() on Android - Refactor #1201: simplify the usage of writing Android.mk - [windows] - Bug #1215: fix a bug that Win32 retina cannot work - Bug #1251: add CocosBuilderTest to the test project for VS2008 - Bug #1264: fix wrong string alignment when using utf-8 encoded text with CCLabelTTF - Bug #1268: fix a bug that Testjs will crash after clicking the close button on win32 - Bug #1270: fix some warning on win32 - Feature #1186: add console window for Win32 application, all debug message output to this console window - Feature #1263: build dynamic library of SpiderMonkey for win32, and add testjs project to solution - Refactor #1170: remove win32 template of wophone - [lua] - Refactor #1190: update Lua binding to 2.0 - Refactor #1220: using CCString::stringWithContentsOfFile to get string from Lua script files - - -cocos2d-1.0.1-x-0.12.0 @ Mar.5 2012 - [all platforms] - Bug #925: rename HelloWorld/Resource to HelloWorld/Resources - Bug #948: fix a bug that CCMutableArray::getIndexOfObject returns 0 on both "index 0" and "not existing" - Bug #951: remove definition of NSMutableSet - Bug #961: fix mad behaviour in second stage of CCEaseBackInOut - Bug #965: remove some dynamic_cast calling since selector_protocol.h was removed - Bug #967: fix a bug that PVR Textures cannot be reloaded after GL context lost - Bug #986: add init() funciton in CCMenu class - Feature #952: make CCLabelBMFont supports other languages, include Chinese, Korean, Janpanese and so on. - Feature #972: add Support for CCNotificationCenter - Refactor #933: refactor CCUserDefault - Refactor #958: move the implement of SelectorProtocol to CCObject - Document #975: add comment for CCTMXTiledMap::getMapSize and more methods - [iOS] - Bug #946: fix a bug that can not load HD image for both Retina and Normal correctly - Bug #762: fix a bug that CCLabelTTF is in different position (higher) than in previous version on iphone - Refactor #985: remove template for xcode3 - [android] - Bug #947: fix a bug that long chinese string causes closed loop on android - Bug #950: fix a crash when touching the screen because of RTTI - Bug #954: fix a bug that accelerometer axes inverted on android tablet when setting orientation to portrait - Bug #957: fix a bug that when running textInputTest, application enters background after input character and click back key on android devices - Bug #959: fix a bug that get wrong multitouch id - Bug #964: fix a bug that can not show whole charactor - Bug #971: fix dynamic_cast error on android - Feature #982: make android template supports box2d, chipmunk and lua - Refactor #970: use modules in the Android NDK build - Bug #1008: fix a bug that missing "return" in SimpleAudioEngine::getEffectsVolume() method on android platform - [bada] - Bug #984: use static library for cocos2dx project on bada and qnx platform - [blackberry] - Bug #960: detect when the application goes and return from background in QNX (Black Berry Playbook) - Bug #962: fix some bugs on qnx port - Bug #963: fix a bug that applicationWillEnterForeground will be invoked twice when application is launched - Bug #968: fix a bug about "Out of bound" in CCFileUtils::getWriteablePath() for BlackBerry - Feature #994: add support for bbndk2.0 - [marmalade] - Bug #995: modify project configure for marmalade port after adding extension support and refactor resource folder - [win32] - Feature #969: implement Accelerometer Simulation for Win32. - [lua] - Bug #942: fix a crash when invoking CCScheduler:sharedScheduler():scheduleScriptFunc in lua - Bug #953: add tolua++ for Mac - Refactor #973: refactor Lua support - -cocos2d-1.0.1-x-0.11.0 @ Jan.13 2012 - [blackberry] - Feature #907: support blackberry playbook - [all platforms] - Bug #752: fix a bug that enable and disable touch more times in touch handler callback function may cause memory leak - Bug #911: fix a bug that TextureCache::addUIImage() cannot create texture when key is null - Bug #920: export export functions in CCAffineTransform with CC_DLL - Bug #922: make CCTexture2D::setPVRImagesHavePremultipliedAlpha() to be a static function - Bug #926: fix a crash caused by RTTI when running TouchesTest - Bug #936: fix a bug that touch menu item may crash when selector is null - Feature #892: use RTTI to simplify the codes - Feature #903: add touch index for CCTouch - Refactor #934: add 'isEqual' function for CCString, make CCObject::isEqual to a virtual function - Refactor #940: use new icons and new background pictures with new logo of cocos2d-x - [android] - Bug #923: fix a bug that CCTextureCache::addImageAsync() crashes when a game enters foreground from background - Bug #906: remove unneeded codes in CCImage_android.cpp - Bug #910: fix a bug that create-android-project.bat may erase exist folder with appointed name - Bug #884: fix a crash error caused by CocosDenshion on android simulator - Bug #921: fix a bug that accelerometer axes inverted in Motorola Xoom tablet - Bug #928: fix a bug that 16-bit texture is changed to 32-bit after application enter foreground - Bug #935: fix a bug that terminateProcessJNI() invoke wrong jni function - Bug #937: fix a compiling error on android x86 - Bug #941: fix a bug that volume of background music may not in [0, 1.0] - Feature #887: define GL_GLEXT_PROTOTYPES = 1 automatically when compile on ndk r7 - Feature #919: improve build_native.sh and create-android-project.sh - Refactor #924: make loading music resources thread safe - Document #837: Write a document describes how to use jni - Document #914: update document to fit android r5~r7 - [iOS] - Bug #917: implement CCFileUtils::getFileDataFromZip() - Feature #893: remove cached data when receiving memory warning on iOS - [bada] - Bug #918: fix a compiling error after renaming airplay to marmalade - Bug #927: fix a crash caused by invoking unloadEffect after invoking stopEffect - Bug #938: fix a bug that glGenFramebuffersOES isn't supported on wave m device - Bug #943: fix a bug that box2d can't be compiled successfully on bada sdk 1.2.1 - Refactor #904: Recreate bada 2.0 projects - [win32] - Bug #915: fix a bug that msvc template uses old version of .cpp files - [linux] - Bug #888: fix compiling error with eclipse - Bug #930: fix a crash caused by load jpg format files - [marmalade] - Refactor #908: merge marmalade to latest cocos2d-x source - -cocos2d-1.0.1-x-0.10.0 @ Dec.2 2011 - [bada] - Feature #223 integrate cocos2d-bada branch to master - Bug #852 fix a bug that CCSpriteBatchNode cannot be drawn correctly - [all platforms] - Feature #854 integrate pthread and write a test case on all platforms - Feature #465 implement CCTextureCache::addImageAsync() - Feature #850 upgrade box2d from 2.1.2 to last 2.2.1 - Feature #781 add functions for effects - Feature #760 add methods to get/set CCDirector::m_pNotificationNode - Bug #883 fix the crash of SpriteTest - Refactor #879 use CCAssert() instead of assert() - Document #882 Write a document describes some cautions about using pthread - [android] - Feature #838 support android x86 platform - Bug #758 fix a bug that custom TTF fonts causing low memory - Bug #848 fix a bug that accelerometer values are wrong if the content is scaled - Bug #885 fix a bug that SimpleAudioEngine::setEffectVolume() don't take effect immediately - Document #864 write a describe how to build on sdk 4.0 & ndk-r7 - Document #878 write a document describe how to build project for x86 android - Document #881 write a document describes building android ndk project with ndk-r7 - [linux] - Bug #780 fix build error on ubuntu 11.0 - Bug #776 fix a bug in the audio player - -cocos2d-1.0.1-x-0.9.2 @ Oct.20,2011 - [linux] - Feature #728 Linux port is born! http://www.cocos2d-x.org/projects/cocos2d-x/wiki/How_to_run_HelloWorld_and_tests_on_linux - [all platforms] - Feature #672 Implements copyWithZone() for CCShow & CCHide - Feature #676 add more languages into CCApplication::getCurrentLanguage() - Feature #678 add private constructor for CCArray - Feature #684 add test case for CCApplication::getCurrentLanguage() - Feature #685 add test case in LabelTest to display Chinese charactors - Bug #675 Fix memory leak in CCLayer when using accelerometer - Bug #686 CCTMXLayer::appendTileForGID() not setting Z index tag causes the first screen of tiles to be re-created - Bug #689 CCRect should assert the width and height is positive - Bug #698 CCSprite::init() is excited twice in all CCSprite's static methods - Bug #700 CC_SWAP32 marco has a typo with leads to error swap result - Bug #701 CCZHeader.version should be unsigned short - Bug #715 CCFadeOut causes a crash when applied to CCMenuItem and m_pSelectedImage is NULL - Bug #718 fix a typo in method CCMenu::alignItemsInRows - Bug #749 CCSpriteTest crashes at the test case SpriteNilTexture - Bug #750 CCTextureCache::textureForKey() can't find textures added by function addUIImage() - Refactor #677 Pass arguments by reference instead of pointer if possible - Refactor #703 Refactor Accelerometer. Because it only sends data to one delegate, so it needs only one setDelegate() - Document #692 Describe the usage of view orientation http://www.cocos2d-x.org/projects/cocos2d-x/wiki/About_device_orientation - [android] - Feature #670 Pause & resume effect playing when activity is paused & resumed - Feature #687 Implement preloadBackgroundMusic to android - Feature #688 Support reading resources not only from apk - Feature #726 use external storage on android - Feature #746 add a helper method to draw filled polygons - Bug #683 getPackagenameJNI() and getCurrentLanguageJNI() mustn't return invalid pointer - Bug #696 Some android devices may crash at CCRenderTexture::end(bool) - Bug #719 CocosDenshionTest crashes when start the test case on android - Bug #714 CCLabelTTF has different visual result between Android & Windows - Bug #727 Memory leak of NewStringUTF - Bug #736 Remove android:installLocation in AndroidManifest.xml - Bug #743 nativeInit is called with wrong screen size when running on device with software android buttons - Bug #744 CCUserDefault crashes in v0.9.1 - Bug #755 Multi-touch causes crash on sum sung devices - [ios] - Bug #660 CCLabelBMFont image error in retina display - Bug #693 CCLabelTTF can not break line by '\n' on iOS - Bug #716 subbing & adding volume of sound effects don't change volume little by little on iOS - Bug #738 Passing CCSize(width,0) to CCLabelTTF causes the label invisible - Bug #753 visual orientation is wrong on ios5 simulator - Bug #754 Missing png file for CCLabelAtlas cause crashes on iOS 4.3.3 & 5.0 - [win32] - Feature #731 add ability of simulating android back/menu key on win32 - Feature #735 add ability of simulating android enter/resume background on win32. Shift+F1=android Back, Shift+F2 =android Menu - Feature #745 export CCTime to all - Bug #747 Win32 templates should put all resources into "Resources" folder - Bug #748 build error in win32 release version - [wophone] - Bug #702 tests crash at the start on wophone devices - [lua] - Feature #704 Print error descriptions ad pop error code in CCLuaScriptModule::executeString & CCLuaScriptModule::executeScriptFile - Feature #707 Support 'require' for Lua on android - Feature #732 Add particle systems to Lua bindings - Feature #733 Use ant to generate a Lua project, refer to http://www.cocos2d-x.org/boards/11/topics/3957 - Feature #734 Use ant to generate LuaCocos2d.cpp - - -cocos2d-1.0.1-x-0.9.1 @ Aug.17,2011 - [all platforms] - Feature #347 Support custom TTF fonts - Feature #536 Support PVR Texture - Feature #645 update to cocos2d-iphone v1.0.1 - Feature #633 allow SimpleAudioEngine::playEffect repeatly - Feature #630 implement CCRenderTexture::saveBuffer method - Feature #613 Call executeCallFuncN instead of executeCallFunc in CCMenuItem::active() - Feature #620 add Texture2d test case - Feature #638 Add support for per ccz format - Feature #641 users can CCRenderTexture::saveBuffer to any path - Feature #643 swap Accelerometer input x/y according to the orientation - Feature #665 add test case for CCRenderTexture::saveBuffer - Bug #513 CCProgressTimer doesn't work with CCspriteFrameCache - Bug #609 Retain & Release CCObject in CCSet - Bug #628 CCMutableArray::arrayWithObjects should autorelease array object - Bug #629 pass eImgFmt to initWithImageData in initWithImageFile - Bug #636 CCTextureCache::textureForKey() can't find the right texture - Bug #639 m_PositionInPixels isn't correctly initialized - Bug #640 the image read from render texture is upseted - Bug #644 CCSpriteBatchNode::removeAllChildrenWithCleanup() not work as expected - Bug #680 CCtouchDispatcher::rearrangeHandlers() crash - Refactor #623 refactor Cocos2dJni.cpp - Refactor #652 refactor char* JniHelper::jstringtochar() - Document #622 comment CCUserDefault in doxygen format - Document #651 add CCFileUtils to oxygen api document - [lua] - Feature #679 bind Lua to CocosDenshion - Feature #647 add a method to set search path of Lua script - Feature #611 Add some methods in CCMenuItemLabel & CCMenuItemToggle for lua - Feature #612 Export CCNode::getContentSizeInPixels & setContentSizeInPixels to lua - Feature #653 add CCScheduler::unscheduleScriptFunc - Bug #615 CCLOG may crash in LuaEngineImpl - [android] - Feature #610 Remove the support of ndk-r4 crystax.net version - Bug #608 CCRenderTexture cannot show textures after sleep and wake-up - Bug #618 HelloWorld & Tests crash when X is clicked - Bug #619 CCFadeTo may crash on android - Bug #624 CCLabelTTF::setString("\n\n\n") crashes on android - Bug #625 test_image_rgba4444.pvr.gz can not packed into app - Bug #631 TextInputTest crash when input nothing - Bug #637 Create resources folder instead of resource in create-android-project.sh - Bug #648 CCRenderTexture::saveBuffer may crash on some devices like Moto Defy - Bug #655 CCLabelTTF doesn't draw all characters, it may lost the last char - Refactor #656 refactor CCFileUtils, make it support reading data from directory other than assets - [ios] - Feature #642 CCImage_ios.mm should be modified for saving image - Feature #658 xcode3 template should create AppDelegate.cpp/.h instead of ${PROJECT_NAME}AppDelegate.cpp/.h - Feature #661 fix TMXTiledMap for iPhone Retina mode - Bug #667 AppDelegate::applicationDidEnterBackground isn't invoked on iOS - Bug #668 CCLabelBMFont display 4 characters in a square per character block in retina mode - [win32] - Feature #620 change Lua library to static lib - Feature #632 Update visual studio template for Lua support - - -cocos2d-1.0.0-x-0.9.0 @ Jul.14,2011 - [all platforms] - Feature #584 sync with cocos2d-iphone v1.0.0 - Feature #601 use Chipmunk v5.3.5 - Feature #581 change return types of xxxAction::reverse() to its own type - Bug #522 CCSpriteFrameCache::addSpriteFramesWithFile(const char* pszPlist) crashed if the param have no '/' - Bug #522 CCTextureCache::removeTextureForKey(const char*) cache the image path incorrectly - Bug #573 CCLayerColor does not init its m_tColor, which will result to a random color - Bug #576 some CCMutableDictionary methods must return _KeyT instead of std::string - Bug #577 CCReverseTime may crash - Bug #578 Debian & LavaFlow of ParticleTest have not picture, the effect of ParticleFire is wrong - Bug #580 ShuffleTilesTest of EffectText may crash - [ios] - Bug #546 CCLabelTTF::labelWithString() works incorrectly when height = 0 - Bug #604 test.xcodeproject miss Summary & Info in xcode4 since v0.8.5 - [android] - Feature #547 deal with line wrap of CCLabelTTF::initWithString(...) - [win32] - Bug #659 ChipmunkTest Sensors crashes in a few seconds - Bug #583 SimpleAudioEngine::playBackgroundMusic(const char*, true) have no sound on win32 - Bug #605 export C methods in CCNS.h to dll interfaces - Bug #548 export CCConfiguration to dll interfaces - [marmalade/airplay] - Bug #600 incorrect memory allocation in marmalade port - Refactor #582 use libpng instead of CIwImage in CCImage_airplay.cpp - [wophone] - Bug #545 fix the wrong effect of ChipmunkTest - Bug #606 PageTransitionForward in TransitionsTest has wrong visual effect - - - -cocos2d-0.99.5-x-0.8.5 @ Jun.28,2011 - [all platforms] - Feature #577 Lua Support! We export all the cocos2d-x classes & methods to lua! - Please compile and run HelloLua, and read HelloLua/Resource/hello.Lua for more details. - And the Lua new project template/wizard is ready on xcode3, xcode4 and VisualStudio2008 & 2010 - Feature #398 Xcode4 templates! Run install-template-xcode.sh to do the magic - Feature #323 Internationalization support! Add CCApplication::getCurrentLanguage() method on all platforms - Feature #529 add static node() method to CCLayerColor & CCLayerGradient - Bug #534 don't raise compile error if ios project includes CCImage.cpp & CCFileUtils.cpp - Bug #429 Effect is wrong when the value of defaultAlphaPixelFormet=kCCTexture2DPixelFormat_A8 in CCTexture2D - Bug #491 Unsafe cycle in CCScheduler::unscheduleAllSelectors - Bug #502 Refactor the singleton mode of CCConfiguration - Bug #512,#525 fix warnings in /Wall flag - Bug #516 Undefined behavious in ccCArray.h (signed / unsigned conversion) - Bug #518 CCScheduler::unscheduleAllSelectors() uses tHashSelectorEntry in wrong way - Bug #521 the effect of PageTurn3D is curious - Bug #523 CCParticleSystemQuad::particleWithFile() can't work correctly - Bug #524 CCFileUtils::dictionaryWithContentsOfFile() can't parse special plist format - Bug #526 glScissior can't work correctly when use autoscale function - Bug #543 EffectTest renders x4 scale when use auto-scale on android/win32/wophone - Bug #544 some test cases of TransitionTest renders x4 scale when use auto-scale on android/win32/wophone - [android] - Bug #490 TextInputTest show words on soft keyboard detach instead of each key pressed - Bug #507 RenderTextureTest failed on some android devices - Bug #532 GLSurface has no response when tap screen frequently for a long time - Bug #542 SimpleAudioEngine::setBackgroundMusicVolume() not work when background music changed - Refactor #535 remove skia dependence when drawing strings, which cause bug #507 - [ios] - Feature #540 Add RootViewController into xcode3/xcode4 templates. Games can use ios rotation mechanism - [win32] - Feature #537 Update PVRFrame lib to version 2.8 for ATI graphic card new driver - [wophone] - Bug #539 games on wophone wva devices probably failed on reading resource from zip package - - - -cocos2d-0.99.5-x-0.8.4 @ May.26,2011 - [android] - Feature #496 SUPPORT ANDROID 3.0! We test it on both Motorola XOOM & Samsung Galaxy Tab 10.1 (Highlight!!!!!) - Bug #494 typo fixed, Cocos2dxActivity::setPackgeName() to setPackageName() - Bug #495 Memory leak of CCFileUtils::getWriteablePath() - Bug #497 soft keyboard stays shown on some devices while the project includes CCTextFieldTTF - Bug #501 projects creaed by android template have the same package name - Bug #510 Tests progress is killed at the power down phase - [all platforms] - Feature #503 upgrade chipmunk from 5.1 to 5.3.4, keep sync with cocos2d-iphone (Highlight!) - Feature #509 For integrting IME, we had to rotate UI to landscape by default - Bug #499 CCRGBAProtocol isn't inherited and implemented in CCMenuItemSprite - [ios] - Bug #493 the return value of CCFileUtils::getWriteablePath() is not end with '/' - Bug #508 Problem in running Tests in Retina resolution since 0.8.2 - [win32] - Bug #492 CCFileUtils::fullPathFromRelativeFile forget to consider the path separated by '\' - Feature #489 Use GetCurrentDirectory instead of GetModuleFileName in CCFileUtils_win32.cpp - - - -cocos2d-0.99.5-x-0.8.3 @ May.12,2011 - [all platforms] - Feature #317 wrap input box for game dev, CCTextFieldTTF. (Highlight!) - Feature #455 implement CCUserDefault for data persistence (Highlight!) - Feature #456 integrate libcurl for network access (Highlight!) - Feature #468 implement CCProfiler & CCProfilingTimer - Feature #450 can set default pixel format other than RGBA888 - Feature #449 Remove the sources for mac platform. We plan to focus on mobile platforms & reduce the complexity - Refactor #451 Remove the event dispatcher and refactor CCLayer & CCMenu & CCParticleSystemPoint. - Refactor #452 Refactor CCDirector CCGrid CCNode, reduce the complexity - Refactor #472 Refactor duplicated modules under cocos2dx/platform, reduce the complexity - Bug #341 CCTMXFiledMap crashed when a child is not the obj of CCTMXLayer - Bug #371 A layer can't registered as a StandardTouchDelegate when touch event is handling - Bug #428 Function addChild low efficiency - Bug #448 CCCallFuncO crashes - Bug #467 CCLayer:m_eTouchDelegateType = ccTouchDeletateAllBit all the time - Bug #471 invoke CCFileUtils::setResourcePath may cause loading texture for ParticleSystem failed - Bug #484 CCTextureAtlas::initWithTexture() may cause memory leak - Bug #486 transition test FlipX, FlipY, FlipAngular, ZoomFlipXxx flickers on ios simulator & device - [ios] - Bug #447 really exit application when "x" button is clicked - Bug #460 cocos2dx + box2d template cannot find libxml2.dylib - [android] - Feature #393 use full version of libxml2, with xmlXPath.. serial methods - Feature #477 Set compilation default ndk version to r5 - Bug #374 replace the method for EGL rendering context lost - Bug #453 Android Cocosdenshion can't replace background music - Bug #462 no applicationDidEnterBackground / applicationWillEnterBackground on Android - Bug #470 use GAME_ROOT or other words instead of HELLOWORLD_ROOT in anroid new projects - Bug #475 CCImage::initWithString return true even if the bitmap hasn't been initialized - [win32] - Feature #454 Modify the including path of Box2D genereated by win32 template - Bug #459 the project create by template for vs use the RuntimeLibrary MTd, different with other project - [wophone] - Feature #482 Modify the resource data path for the new WoPhone SDK - Feature #487 Implement the function CCFiltUtils::getWriteablePath() on wophone - Refactor #466 Refactor CCFileUtils for the new packing approach on wophone - Bug #481 After power down & up, backlight will turn off automaticlly if there's no operation - Bug #485 reduce the CPU occupation, modify the approach of FPS control on wophone - [airplay] - Feature #480 add template for airplay - - - -cocos2d-0.99.5-x-0.8.2 @ Apr.7,2011 - [all platforms] - 390 Feature Implement performance test - 411 Feature support .plist format outputed by the last version of Zwoptex - 415 Feature Make all xxxFromFile methods can accept relative path - 439 Feature all file reading must pass though CCFileUtils::getFileData - 441 Feature Initialize pointers in construction & detect them in destruction - 427 Refactor refactor CCTMXXMLParser with multi-platform CCSAXParser design - 434 Refactor refactor class CCFileUtils - 396 Refactor remove ccxScopedPtr & ccxScopedArray, use STL instead - 350 Bug TransitionFade flickers - 391 Bug CCSpriteFrameCache doesn't support .plist files which format isn't equal to 0 - 420 Bug CCSprite::spriteWithFile() returns a valid object when the image file isn't present - 440 Bug Can't show MessageBox when imageFromFile can't find the image - [ios] - 349 Bug deal with plist files in binary format - 435 Bug CocosDenshion crashes at foreground/background switching - 438 Bug MotionStreak Test crashes on device - [android] - 421 Feature Add a template & new project script for android - 443 Feature implement CCKeypadDelegate on android - 367 Bug Android.mk of HelloWorld and Tests depends on alphabet order - 422 Bug the 2nd point in multi-touch isn't located to the correct coordinate - 430 Bug replace glColor4ub with glColor4f to avoid "called unimplement OpenGL ES API" on some android devices - 431 Bug ParticleFlower on G3 can't show the particles correctly - [win32] - 417 Bug No touchEnd when the mouse move out from the window - 424 Bug open vs2010.sln says cannot open CCamera.cpp - [airplay] - 379 Feature integrate airplay sdk port - 442 feature implement CocosDenshion on airplay port - - - -cocos2d-0.99.5-x-0.8.1 @ Mar.21,2011 - [all platforms] - 400 Bug typo, rename CCamera.cpp to CCCamera - 403 Feature rename cocos2d::UIEvent to cocos2d::CCEvent, to avoid class name conflict on ios - 405 Bug CCConfiguration::checkForGLExtension(const string&) sometimes may crashes - 407 Bug replace "CCGL.h" with "CCGL.h" in CCCamera.cpp, for case-sensitive systems - 408 Bug memory leak in CCImage::_initWithPngData - 409 Feature rename cocos2d::NSArray to cocos2d::CCArray, to avoid the conflict on ios - 418 Feature add copyright of cocos2d-iphone original authors to each file - 423 Bug fix compilation warnings when COCOS2D_DEBUG == 2 - [ios] - 404 Bug HiResTest isnot prerfect on HVGA/Retina yet - 410 Bug xcode3 template, cannot find libxml from header searh paths in release build - 419 Bug test case TMXIsoVertexZ in TileMapTst has wrong effect on ios - [android] - 399 Bug HelloWorld crashes when the screen is touched - 405 Bug CocosDenshion test, BGM isn't paused after HOME key tapped - [win32] - 395 Bug make AppDelegate.cpp created by VS wizard portable without any modification - 401 Bug VisualStudio template for 2010 OutputDir errors - - - -cocos2d-0.99.5-x-0.8.0 @ Mar.15,2011 - [all platforms] - 316 Feature Resolution auto adjustment, auto scale HVGA resource to WVGA or any other resolutions - 336 Refactor refactor platform porting layer - 253 Bug xml parser sometimes crashes - 375 Feature Rename NS,CG,UI prefix classes/definitions to CC prefix, avoid the crash at ios dev - 332 Feature upgrade tests from 0.99.4 to 0.99.5 - [ios] - 363 Bug CCLabelTTF can't treat line breaks and wrapping correctly. - 351 Feature CCLabelTTF cannot automatic line break on iphone - 352 Bug ccRemoveHDSuffixFromFile & CCFileUtils::getDoubleResolutionImage isnot work - 392 Bug border of sprite debug draw isn't scaled if enableRetinaDisplay(true) - 385 Feature implement ccos2d::CCLog - 388 Feature update the template for iOS - [android] - 247 Feature support multitouch - 242 Feature support accelerometer on android - 353 Feature support jpg on android - 344 Feature add APP_ABI := armeabi armeabi-v7a to improve the performance on some devices - 356 Bug CCLabelTTF::initWithString crashed - [wophone] - 386 Bug resolve the compile conflict on wophone sdk - 383 Bug The approach which handle left soft-key clicked is not work - 377 Feature Replace the word "uphone" with "wophone" - 357 Bug CCLabelTTF doesn't support words contain line breaks. - 348 Bug CCLabelTTF blur if color = white and fontSize < 24 - [win32] - 373 Feature Disable PVRFrame window when cocos2d running - 355 Bug CCLabelTTF doesn't support line breaks and wrapping words - 300 Feature wizard for Visual C++ 2008 Express & VS2010 Express/Professional - - - -cocos2d-0.99.5-x-0.7.2 @ Jan.26,2011 - [all platforms] - - upgrade engine logic internal & interfaces to 0.99.5 - - the list of menu items in tests is showing how to scroll now - - lots of bugs fixed - [iphone] - - add new project templates for Xcode - - add the c++ wrapper for CocosDenshion::SimpleAudioEngine - - support UTF8 charactors in text renderring, such as CCLabelTTF, CCMenuItemFont - [android] - - add CocosDenshion::SimpleAudioEngine implement on android - - the engine can adjust the apk filename automatically - - the engine will not crash at surface recreate, especially at background-to-foreground switching - [wophone] - - switch the game to background, then press power key will not cause the background music play again - - remove the methods of using resouce map in cocos2d-wophone & SimpleAudioEngine. - Only zip resource is recommended and suppported. - - can auto find the installed path of your game, and load zip resource file from the current folder. - No absolute path in code any more. Do this to support installing games to micro-SD card - - - -cocos2d-0.99.4-x-0.7.1 @ Dec.20,2010 - [all platforms] - - add CCKeypadDelegate class, which enable CCLayer to respond "back" key in wophone & android - - Add namespace for CocosDenshion - - fix compile errors when enable CC_XXX_DEBUG_DRAW switchs in ccConfig.h - - fix memory leaks on each platform - - more details: http://www.cocos2d-x.org/versions/show/5 - [android] - - Run through all the test cases of cocos2d, support ndk r4,r5, sdk higher than 2.0. Tested on HTC G2,G3,G6,G7 - - HelloWorld integrate all platforms in one directory now - - WANRNING: this version isn't ready for android games porting yet. The CocosDenshion isn't ported to android, - and this version will crashes when screen orientation changes or the game gack to foreground - look more on this bug http://www.cocos2d-x.org/boards/10/topics/202 - [iphone] - - Add support of loading textureImageData from the ParticleDesign plist file - - Fix more then 3000 complie warnings - - You can try to use this version to develop your iOS game now. It's much more stable than the previous version - [wophone] - - Games can easily read resources from zip file now. This will drastically reduce the memory usage - - Add power management: pause the message loop when cocos2d-x game is switched to background or backlight down - - Multi-touch support - [win32] - - SimpleAudioEngine can play background musci with repeating now - - - -cocos2d-0.99.4-x-0.7.0 @ Nov.29,2010 -* cocos2d-iphone-cpp port ready! include accelerometer & multi-touch -* refactor the directory structure of HelloWorld & tests -* cocos2d-wophone supports accelerometer -* add cocos2d-x wizard for cocos2d-win32 & cocos2d-wophone for VisualStudio2008 -* jump out a message box when load texture failed (win32 & wophone) -* more details: http://www.cocos2d-x.org/versions/show/4 - -cocos2d-0.99.4-wophone-win32-stable-rc1 - http://www.cocos2d-x.org/versions/show/1 - http://www.cocos2d-x.org/versions/show/2 - http://www.cocos2d-x.org/versions/show/3 - - + [Refactor] #2373: C diff --git a/CMakeLists.txt b/CMakeLists.txt index 81e7059db9..5f949dbb9b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,7 +87,7 @@ if(WINDOWS) ADD_DEFINITIONS (-DCOCOS2DXWIN32_EXPORTS -D_WINDOWS -DWIN32) set(PLATFORM_FOLDER win32) -elseif(MACOSX) +elseif(MACOSX OR APPLE) ADD_DEFINITIONS (-DCC_TARGET_OS_MAC) ADD_DEFINITIONS (-DUSE_FILE32API) set(PLATFORM_FOLDER mac) @@ -152,8 +152,8 @@ endif() # NB -# we need to return these to libraries to their official state rather than -# having our custom cocos2d namespace so that we may use system versions if +# we need to return these to libraries to their official state rather than +# having our custom cocos2d namespace so that we may use system versions if # the platform provides them. It is very important that this # is done before we make prebuilt versions of these two libs @@ -164,13 +164,13 @@ include_directories( ) -if(LINUX) +if(LINUX OR APPLE) find_package(GLFW3 REQUIRED) message( STATUS "GLFW3 dirs: ${GLFW3_INCLUDE_DIRS}") include_directories(${GLFW3_INCLUDE_DIRS}) -endif(LINUX) +endif(LINUX OR APPLE) if(NOT MINGW) @@ -188,8 +188,7 @@ if(NOT MINGW) ${CMAKE_CURRENT_SOURCE_DIR}/external/freetype2/include/${PLATFORM_FOLDER} ${CMAKE_CURRENT_SOURCE_DIR}/external/websockets/include/${PLATFORM_FOLDER} ${CMAKE_CURRENT_SOURCE_DIR}/external/curl/include/${PLATFORM_FOLDER} - - + ${CMAKE_CURRENT_SOURCE_DIR}/external/protobuf-lite/src ${CMAKE_CURRENT_SOURCE_DIR}/external/freetype2/include/${PLATFORM_FOLDER}/freetype2 ) @@ -215,11 +214,12 @@ if(NOT MINGW) endif() # build for 3rd party libraries -if(LINUX) +if(LINUX OR APPLE) add_subdirectory(external/Box2D) add_subdirectory(external/unzip) add_subdirectory(external/xxhash) add_subdirectory(external/tinyxml2) +add_subdirectory(external/protobuf-lite) endif() # libcocos2d.a diff --git a/build/android-build.py b/build/android-build.py index cb1405b38e..15f708437e 100755 --- a/build/android-build.py +++ b/build/android-build.py @@ -157,22 +157,12 @@ def copy_resources(target, app_android_root): os.mkdir(assets_src_dir) copy_files(src_dir, assets_src_dir) - common_script_dir = os.path.join(app_android_root, "../../../../cocos/scripting/lua-bindings/script") - if target == "lua-tests": - copy_files(os.path.join(common_script_dir, "cocos2d"), assets_dir) - copy_files(os.path.join(common_script_dir, "cocosbuilder"), assets_dir) - copy_files(os.path.join(common_script_dir, "cocosdenshion"), assets_dir) - copy_files(os.path.join(common_script_dir, "cocostudio"), assets_dir) - copy_files(os.path.join(common_script_dir, "extension"), assets_dir) - copy_files(os.path.join(common_script_dir, "network"), assets_dir) - copy_files(os.path.join(common_script_dir, "ui"), assets_dir) - elif target == "lua-empty-test": - copy_files(os.path.join(common_script_dir, "cocos2d"), assets_dir) - copy_files(os.path.join(common_script_dir, "cocosdenshion"), assets_dir) - copy_files(os.path.join(common_script_dir, "network"), assets_dir) - elif target == "lua-game-controller-test": - copy_files(os.path.join(common_script_dir, "cocos2d"), assets_dir) - copy_files(os.path.join(common_script_dir, "controller"), assets_dir) + common_script_dir = os.path.join(app_android_root, "../../../../cocos/scripting/lua-bindings/script/") + cocos_src_dir = os.path.join(assets_src_dir,"cocos") + if os.path.exists(cocos_src_dir): + shutil.rmtree(cocos_src_dir) + os.mkdir(cocos_src_dir) + copy_files(common_script_dir, cocos_src_dir) luasocket_script_dir = os.path.join(app_android_root, "../../../../external/lua/luasocket") for root, dirs, files in os.walk(luasocket_script_dir): @@ -214,9 +204,9 @@ def build_samples(target,ndk_build_param,android_platform,build_mode): exit(1) if build_mode is None: - build_mode = 'debug' - elif build_mode != 'release': - build_mode = 'debug' + build_mode = 'release' + elif build_mode != 'debug': + build_mode = 'release' app_android_root = '' diff --git a/build/cocos2d-win32.vc2012.sln b/build/cocos2d-win32.vc2012.sln index 45dcf34217..2b6824c9ef 100644 --- a/build/cocos2d-win32.vc2012.sln +++ b/build/cocos2d-win32.vc2012.sln @@ -1,4 +1,4 @@ - + Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 VisualStudioVersion = 12.0.21005.1 @@ -15,12 +15,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "..\cocos\2d\l EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libluacocos2d", "..\cocos\scripting\lua-bindings\proj.win32\libluacocos2d.vcxproj", "{9F2D6CE6-C893-4400-B50C-6DB70CC2562F}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbox2d", "..\external\Box2D\proj.win32\libbox2d.vcxproj", "{929480E7-23C0-4DF6-8456-096D71547116}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "External", "External", "{92D54E36-7916-48EF-A951-224DD3B25442}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libSpine", "..\cocos\editor-support\spine\proj.win32\libSpine.vcxproj", "{B7C2A162-DEC9-4418-972E-240AB3CBFCAE}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbox2d", "..\external\Box2D\proj.win32\libbox2d.vcxproj", "{929480E7-23C0-4DF6-8456-096D71547116}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM = Debug|ARM @@ -65,25 +65,25 @@ Global {9F2D6CE6-C893-4400-B50C-6DB70CC2562F}.Release|ARM.ActiveCfg = Release|Win32 {9F2D6CE6-C893-4400-B50C-6DB70CC2562F}.Release|Win32.ActiveCfg = Release|Win32 {9F2D6CE6-C893-4400-B50C-6DB70CC2562F}.Release|Win32.Build.0 = Release|Win32 - {929480E7-23C0-4DF6-8456-096D71547116}.Debug|ARM.ActiveCfg = Debug|Win32 - {929480E7-23C0-4DF6-8456-096D71547116}.Debug|Win32.ActiveCfg = Debug|Win32 - {929480E7-23C0-4DF6-8456-096D71547116}.Debug|Win32.Build.0 = Debug|Win32 - {929480E7-23C0-4DF6-8456-096D71547116}.Release|ARM.ActiveCfg = Release|Win32 - {929480E7-23C0-4DF6-8456-096D71547116}.Release|Win32.ActiveCfg = Release|Win32 - {929480E7-23C0-4DF6-8456-096D71547116}.Release|Win32.Build.0 = Release|Win32 {B7C2A162-DEC9-4418-972E-240AB3CBFCAE}.Debug|ARM.ActiveCfg = Debug|Win32 {B7C2A162-DEC9-4418-972E-240AB3CBFCAE}.Debug|Win32.ActiveCfg = Debug|Win32 {B7C2A162-DEC9-4418-972E-240AB3CBFCAE}.Debug|Win32.Build.0 = Debug|Win32 {B7C2A162-DEC9-4418-972E-240AB3CBFCAE}.Release|ARM.ActiveCfg = Release|Win32 {B7C2A162-DEC9-4418-972E-240AB3CBFCAE}.Release|Win32.ActiveCfg = Release|Win32 {B7C2A162-DEC9-4418-972E-240AB3CBFCAE}.Release|Win32.Build.0 = Release|Win32 + {929480E7-23C0-4DF6-8456-096D71547116}.Debug|ARM.ActiveCfg = Debug|Win32 + {929480E7-23C0-4DF6-8456-096D71547116}.Debug|Win32.ActiveCfg = Debug|Win32 + {929480E7-23C0-4DF6-8456-096D71547116}.Debug|Win32.Build.0 = Debug|Win32 + {929480E7-23C0-4DF6-8456-096D71547116}.Release|ARM.ActiveCfg = Release|Win32 + {929480E7-23C0-4DF6-8456-096D71547116}.Release|Win32.ActiveCfg = Release|Win32 + {929480E7-23C0-4DF6-8456-096D71547116}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {929480E7-23C0-4DF6-8456-096D71547116} = {92D54E36-7916-48EF-A951-224DD3B25442} {B7C2A162-DEC9-4418-972E-240AB3CBFCAE} = {92D54E36-7916-48EF-A951-224DD3B25442} + {929480E7-23C0-4DF6-8456-096D71547116} = {92D54E36-7916-48EF-A951-224DD3B25442} EndGlobalSection GlobalSection(DPCodeReviewSolutionGUID) = preSolution DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} diff --git a/build/cocos2d-wp8.vc2012.sln b/build/cocos2d-wp8.sln similarity index 52% rename from build/cocos2d-wp8.vc2012.sln rename to build/cocos2d-wp8.sln index 8a9fce10df..04ac85839f 100644 --- a/build/cocos2d-wp8.vc2012.sln +++ b/build/cocos2d-wp8.sln @@ -1,41 +1,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 +VisualStudioVersion = 12.0.30723.0 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "..\cocos\2d\cocos2d_wp8.vcxproj", "{B5AF91B3-64EA-44E1-84B0-D759E93758FB}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libSpine", "..\cocos\editor-support\spine\proj.wp8\libSpine.vcxproj", "{7D4FC6EB-9497-4804-98F3-3EAEDC896154}" - ProjectSection(ProjectDependencies) = postProject - {B5AF91B3-64EA-44E1-84B0-D759E93758FB} = {B5AF91B3-64EA-44E1-84B0-D759E93758FB} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCocosStudio", "..\cocos\editor-support\cocostudio\proj.wp8\libCocosStudio.vcxproj", "{51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}" - ProjectSection(ProjectDependencies) = postProject - {B5AF91B3-64EA-44E1-84B0-D759E93758FB} = {B5AF91B3-64EA-44E1-84B0-D759E93758FB} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCocosBuilder", "..\cocos\editor-support\cocosbuilder\proj.wp8\libCocosBuilder.vcxproj", "{20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}" - ProjectSection(ProjectDependencies) = postProject - {B5AF91B3-64EA-44E1-84B0-D759E93758FB} = {B5AF91B3-64EA-44E1-84B0-D759E93758FB} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libExtensions", "..\extensions\proj.wp8\libExtensions.vcxproj", "{04A0C42F-23BB-469B-A9D8-CA49136ADBD4}" - ProjectSection(ProjectDependencies) = postProject - {B5AF91B3-64EA-44E1-84B0-D759E93758FB} = {B5AF91B3-64EA-44E1-84B0-D759E93758FB} - EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Box2D", "..\external\Box2D\proj.wp8\Box2D.vcxproj", "{C55734A3-702C-4FA1-B950-32C8E169302F}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libLocalStorage", "..\cocos\storage\local-storage\proj.wp8\libLocalStorage.vcxproj", "{88982C27-5A7B-40A8-86E7-B3187B44B322}" - ProjectSection(ProjectDependencies) = postProject - {B5AF91B3-64EA-44E1-84B0-D759E93758FB} = {B5AF91B3-64EA-44E1-84B0-D759E93758FB} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CocosDenshion", "..\cocos\audio\proj.wp8\CocosDenshion.vcxproj", "{DF125891-EEE9-4466-B903-F828FD272158}" - ProjectSection(ProjectDependencies) = postProject - {B5AF91B3-64EA-44E1-84B0-D759E93758FB} = {B5AF91B3-64EA-44E1-84B0-D759E93758FB} - EndProjectSection -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "cpp-tests", "cpp-tests", "{671E147E-1DBD-41FC-99B3-2119CA828C8A}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cpp-tests", "..\tests\cpp-tests\proj.wp8-xaml\cpp-tests\cpp-tests.csproj", "{60D53713-1675-4466-81DC-D67A031C3D21}" @@ -45,11 +15,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cpp-tests", "..\tests\cpp-t EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpp-testsComponent", "..\tests\cpp-tests\proj.wp8-xaml\cpp-testsComponent\cpp-testsComponent.vcxproj", "{86B2C23C-3A6C-4C4E-AB0E-16A8CC1523E9}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libNetwork", "..\cocos\network\proj.wp8\libNetwork.vcxproj", "{7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}" - ProjectSection(ProjectDependencies) = postProject - {B5AF91B3-64EA-44E1-84B0-D759E93758FB} = {B5AF91B3-64EA-44E1-84B0-D759E93758FB} - EndProjectSection -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "cpp-empty-test", "cpp-empty-test", "{2C306303-EB4F-4058-8CA0-1F28A4FECE39}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cpp-empty-test", "..\tests\cpp-empty-test\proj-wp8-xaml\cpp-empty-test\cpp-empty-test.csproj", "{5921FE12-7EF3-4847-8453-42EF286DDBE7}" @@ -59,11 +24,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cpp-empty-test", "..\tests\ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpp-empty-testComponent", "..\tests\cpp-empty-test\proj-wp8-xaml\cpp-empty-testComponent\cpp-empty-testComponent.vcxproj", "{F5D665F8-AE19-4F3F-99A7-230A1E8305D2}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libGUI", "..\cocos\ui\proj.wp8\libGUI.vcxproj", "{08FB23E4-1517-4EDC-B682-DA238CDAA83D}" - ProjectSection(ProjectDependencies) = postProject - {B5AF91B3-64EA-44E1-84B0-D759E93758FB} = {B5AF91B3-64EA-44E1-84B0-D759E93758FB} - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CopyTemplateFiles", "..\cocos\platform\wp8-xaml\CopyTemplateFiles.vcxproj", "{271FEE84-9198-4C26-8567-4247C563B0B1}" ProjectSection(ProjectDependencies) = postProject {5921FE12-7EF3-4847-8453-42EF286DDBE7} = {5921FE12-7EF3-4847-8453-42EF286DDBE7} @@ -72,6 +32,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CopyTemplateFiles", "..\coc {F5D665F8-AE19-4F3F-99A7-230A1E8305D2} = {F5D665F8-AE19-4F3F-99A7-230A1E8305D2} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d_wp8", "..\cocos\2d\libcocos2d_wp8.vcxproj", "{7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -88,26 +50,6 @@ Global Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|ARM.ActiveCfg = Debug|ARM - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|ARM.Build.0 = Debug|ARM - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|Win32.ActiveCfg = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|Win32.Build.0 = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|x64.ActiveCfg = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|x86.ActiveCfg = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|x86.Build.0 = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|Any CPU.ActiveCfg = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|ARM.ActiveCfg = Release|ARM - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|ARM.Build.0 = Release|ARM - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|Mixed Platforms.Build.0 = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|Win32.ActiveCfg = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|Win32.Build.0 = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|x64.ActiveCfg = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|x86.ActiveCfg = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|x86.Build.0 = Release|Win32 {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|Any CPU.ActiveCfg = Debug|Win32 {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|ARM.ActiveCfg = Debug|ARM {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|ARM.Build.0 = Debug|ARM @@ -128,66 +70,6 @@ Global {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|x64.ActiveCfg = Release|Win32 {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|x86.ActiveCfg = Release|Win32 {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|x86.Build.0 = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|ARM.ActiveCfg = Debug|ARM - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|ARM.Build.0 = Debug|ARM - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|Win32.ActiveCfg = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|Win32.Build.0 = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|x64.ActiveCfg = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|x86.ActiveCfg = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|x86.Build.0 = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|Any CPU.ActiveCfg = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|ARM.ActiveCfg = Release|ARM - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|ARM.Build.0 = Release|ARM - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|Mixed Platforms.Build.0 = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|Win32.ActiveCfg = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|Win32.Build.0 = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|x64.ActiveCfg = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|x86.ActiveCfg = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|x86.Build.0 = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|ARM.ActiveCfg = Debug|ARM - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|ARM.Build.0 = Debug|ARM - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|Win32.ActiveCfg = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|Win32.Build.0 = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|x64.ActiveCfg = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|x86.ActiveCfg = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|x86.Build.0 = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|Any CPU.ActiveCfg = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|ARM.ActiveCfg = Release|ARM - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|ARM.Build.0 = Release|ARM - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|Mixed Platforms.Build.0 = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|Win32.ActiveCfg = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|Win32.Build.0 = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|x64.ActiveCfg = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|x86.ActiveCfg = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|x86.Build.0 = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|ARM.ActiveCfg = Debug|ARM - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|ARM.Build.0 = Debug|ARM - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|Win32.ActiveCfg = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|Win32.Build.0 = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|x64.ActiveCfg = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|x86.ActiveCfg = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|x86.Build.0 = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|Any CPU.ActiveCfg = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|ARM.ActiveCfg = Release|ARM - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|ARM.Build.0 = Release|ARM - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|Mixed Platforms.Build.0 = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|Win32.ActiveCfg = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|Win32.Build.0 = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|x64.ActiveCfg = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|x86.ActiveCfg = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|x86.Build.0 = Release|Win32 {C55734A3-702C-4FA1-B950-32C8E169302F}.Debug|Any CPU.ActiveCfg = Debug|Win32 {C55734A3-702C-4FA1-B950-32C8E169302F}.Debug|ARM.ActiveCfg = Debug|ARM {C55734A3-702C-4FA1-B950-32C8E169302F}.Debug|ARM.Build.0 = Debug|ARM @@ -208,46 +90,6 @@ Global {C55734A3-702C-4FA1-B950-32C8E169302F}.Release|x64.ActiveCfg = Release|Win32 {C55734A3-702C-4FA1-B950-32C8E169302F}.Release|x86.ActiveCfg = Release|Win32 {C55734A3-702C-4FA1-B950-32C8E169302F}.Release|x86.Build.0 = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|ARM.ActiveCfg = Debug|ARM - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|ARM.Build.0 = Debug|ARM - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|Win32.ActiveCfg = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|Win32.Build.0 = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|x64.ActiveCfg = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|x86.ActiveCfg = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|x86.Build.0 = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|Any CPU.ActiveCfg = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|ARM.ActiveCfg = Release|ARM - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|ARM.Build.0 = Release|ARM - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|Mixed Platforms.Build.0 = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|Win32.ActiveCfg = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|Win32.Build.0 = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|x64.ActiveCfg = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|x86.ActiveCfg = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|x86.Build.0 = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|ARM.ActiveCfg = Debug|ARM - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|ARM.Build.0 = Debug|ARM - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|Win32.ActiveCfg = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|Win32.Build.0 = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|x64.ActiveCfg = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|x86.ActiveCfg = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|x86.Build.0 = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|Any CPU.ActiveCfg = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|ARM.ActiveCfg = Release|ARM - {DF125891-EEE9-4466-B903-F828FD272158}.Release|ARM.Build.0 = Release|ARM - {DF125891-EEE9-4466-B903-F828FD272158}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|Mixed Platforms.Build.0 = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|Win32.ActiveCfg = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|Win32.Build.0 = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|x64.ActiveCfg = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|x86.ActiveCfg = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|x86.Build.0 = Release|Win32 {60D53713-1675-4466-81DC-D67A031C3D21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {60D53713-1675-4466-81DC-D67A031C3D21}.Debug|Any CPU.Build.0 = Debug|Any CPU {60D53713-1675-4466-81DC-D67A031C3D21}.Debug|Any CPU.Deploy.0 = Debug|Any CPU @@ -300,26 +142,6 @@ Global {86B2C23C-3A6C-4C4E-AB0E-16A8CC1523E9}.Release|x64.ActiveCfg = Release|Win32 {86B2C23C-3A6C-4C4E-AB0E-16A8CC1523E9}.Release|x86.ActiveCfg = Release|Win32 {86B2C23C-3A6C-4C4E-AB0E-16A8CC1523E9}.Release|x86.Build.0 = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|ARM.ActiveCfg = Debug|ARM - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|ARM.Build.0 = Debug|ARM - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|Win32.ActiveCfg = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|Win32.Build.0 = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|x64.ActiveCfg = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|x86.ActiveCfg = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|x86.Build.0 = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|Any CPU.ActiveCfg = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|ARM.ActiveCfg = Release|ARM - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|ARM.Build.0 = Release|ARM - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|Mixed Platforms.Build.0 = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|Win32.ActiveCfg = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|Win32.Build.0 = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|x64.ActiveCfg = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|x86.ActiveCfg = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|x86.Build.0 = Release|Win32 {5921FE12-7EF3-4847-8453-42EF286DDBE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5921FE12-7EF3-4847-8453-42EF286DDBE7}.Debug|Any CPU.Build.0 = Debug|Any CPU {5921FE12-7EF3-4847-8453-42EF286DDBE7}.Debug|Any CPU.Deploy.0 = Debug|Any CPU @@ -372,26 +194,6 @@ Global {F5D665F8-AE19-4F3F-99A7-230A1E8305D2}.Release|x64.ActiveCfg = Release|Win32 {F5D665F8-AE19-4F3F-99A7-230A1E8305D2}.Release|x86.ActiveCfg = Release|Win32 {F5D665F8-AE19-4F3F-99A7-230A1E8305D2}.Release|x86.Build.0 = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|ARM.ActiveCfg = Debug|ARM - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|ARM.Build.0 = Debug|ARM - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|Win32.ActiveCfg = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|Win32.Build.0 = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|x64.ActiveCfg = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|x86.ActiveCfg = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|x86.Build.0 = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|Any CPU.ActiveCfg = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|ARM.ActiveCfg = Release|ARM - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|ARM.Build.0 = Release|ARM - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|Mixed Platforms.Build.0 = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|Win32.ActiveCfg = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|Win32.Build.0 = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|x64.ActiveCfg = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|x86.ActiveCfg = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|x86.Build.0 = Release|Win32 {271FEE84-9198-4C26-8567-4247C563B0B1}.Debug|Any CPU.ActiveCfg = Debug|Win32 {271FEE84-9198-4C26-8567-4247C563B0B1}.Debug|ARM.ActiveCfg = Debug|ARM {271FEE84-9198-4C26-8567-4247C563B0B1}.Debug|ARM.Build.0 = Debug|ARM @@ -412,6 +214,26 @@ Global {271FEE84-9198-4C26-8567-4247C563B0B1}.Release|x64.ActiveCfg = Release|Win32 {271FEE84-9198-4C26-8567-4247C563B0B1}.Release|x86.ActiveCfg = Release|Win32 {271FEE84-9198-4C26-8567-4247C563B0B1}.Release|x86.Build.0 = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|ARM.ActiveCfg = Debug|ARM + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|ARM.Build.0 = Debug|ARM + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|Win32.ActiveCfg = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|Win32.Build.0 = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|x64.ActiveCfg = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|x86.ActiveCfg = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|x86.Build.0 = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|Any CPU.ActiveCfg = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|ARM.ActiveCfg = Release|ARM + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|ARM.Build.0 = Release|ARM + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|Mixed Platforms.Build.0 = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|Win32.ActiveCfg = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|Win32.Build.0 = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|x64.ActiveCfg = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|x86.ActiveCfg = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/build/cocos2d_libs.xcodeproj/project.pbxproj b/build/cocos2d_libs.xcodeproj/project.pbxproj index 4164e3cd82..5c5fae4844 100644 --- a/build/cocos2d_libs.xcodeproj/project.pbxproj +++ b/build/cocos2d_libs.xcodeproj/project.pbxproj @@ -347,8 +347,6 @@ 15AE196F19AAD35700C27E9E /* CCActionTimelineCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0634A4C8194B19E400E608AF /* CCActionTimelineCache.h */; }; 15AE197019AAD35700C27E9E /* CCFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0634A4C9194B19E400E608AF /* CCFrame.cpp */; }; 15AE197119AAD35700C27E9E /* CCFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 0634A4CA194B19E400E608AF /* CCFrame.h */; }; - 15AE197219AAD35700C27E9E /* CCNodeReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0634A4CB194B19E400E608AF /* CCNodeReader.cpp */; }; - 15AE197319AAD35700C27E9E /* CCNodeReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0634A4CC194B19E400E608AF /* CCNodeReader.h */; }; 15AE197419AAD35700C27E9E /* CCTimeLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0634A4CD194B19E400E608AF /* CCTimeLine.cpp */; }; 15AE197519AAD35700C27E9E /* CCTimeLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 0634A4CE194B19E400E608AF /* CCTimeLine.h */; }; 15AE197619AAD35700C27E9E /* CCTimelineMacro.h in Headers */ = {isa = PBXBuildFile; fileRef = 0634A4CF194B19E400E608AF /* CCTimelineMacro.h */; }; @@ -358,8 +356,6 @@ 15AE197A19AAD35700C27E9E /* CCActionTimelineCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0634A4C8194B19E400E608AF /* CCActionTimelineCache.h */; }; 15AE197B19AAD35700C27E9E /* CCFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0634A4C9194B19E400E608AF /* CCFrame.cpp */; }; 15AE197C19AAD35700C27E9E /* CCFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 0634A4CA194B19E400E608AF /* CCFrame.h */; }; - 15AE197D19AAD35700C27E9E /* CCNodeReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0634A4CB194B19E400E608AF /* CCNodeReader.cpp */; }; - 15AE197E19AAD35700C27E9E /* CCNodeReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 0634A4CC194B19E400E608AF /* CCNodeReader.h */; }; 15AE197F19AAD35700C27E9E /* CCTimeLine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0634A4CD194B19E400E608AF /* CCTimeLine.cpp */; }; 15AE198019AAD35700C27E9E /* CCTimeLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 0634A4CE194B19E400E608AF /* CCTimeLine.h */; }; 15AE198119AAD35700C27E9E /* CCTimelineMacro.h in Headers */ = {isa = PBXBuildFile; fileRef = 0634A4CF194B19E400E608AF /* CCTimelineMacro.h */; }; @@ -421,108 +417,6 @@ 15AE19B919AAD39700C27E9E /* TextFieldReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 50FCEB8C18C72017004AD434 /* TextFieldReader.h */; }; 15AE19BA19AAD39700C27E9E /* TextReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50FCEB8E18C72017004AD434 /* TextReader.cpp */; }; 15AE19BB19AAD39700C27E9E /* TextReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 50FCEB8F18C72017004AD434 /* TextReader.h */; }; - 15AE19BC19AAD3A700C27E9E /* SkeletonBounds.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AC795D918628689005EC8E1 /* SkeletonBounds.cpp */; }; - 15AE19BD19AAD3A700C27E9E /* SkeletonBounds.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AC795DA18628689005EC8E1 /* SkeletonBounds.h */; }; - 15AE19BE19AAD3A700C27E9E /* Event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AC795D51862867D005EC8E1 /* Event.cpp */; }; - 15AE19BF19AAD3A700C27E9E /* Event.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AC795D61862867D005EC8E1 /* Event.h */; }; - 15AE19C019AAD3A700C27E9E /* EventData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AC795D71862867D005EC8E1 /* EventData.cpp */; }; - 15AE19C119AAD3A700C27E9E /* EventData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AC795D81862867D005EC8E1 /* EventData.h */; }; - 15AE19C219AAD3A700C27E9E /* BoundingBoxAttachment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AC795D318628672005EC8E1 /* BoundingBoxAttachment.cpp */; }; - 15AE19C319AAD3A700C27E9E /* BoundingBoxAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AC795D418628672005EC8E1 /* BoundingBoxAttachment.h */; }; - 15AE19C419AAD3A700C27E9E /* Animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D7E180E26E600808F54 /* Animation.cpp */; }; - 15AE19C519AAD3A700C27E9E /* Animation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D7F180E26E600808F54 /* Animation.h */; }; - 15AE19C619AAD3A700C27E9E /* AnimationState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D80180E26E600808F54 /* AnimationState.cpp */; }; - 15AE19C719AAD3A700C27E9E /* AnimationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D81180E26E600808F54 /* AnimationState.h */; }; - 15AE19C819AAD3A700C27E9E /* AnimationStateData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D82180E26E600808F54 /* AnimationStateData.cpp */; }; - 15AE19C919AAD3A700C27E9E /* AnimationStateData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D83180E26E600808F54 /* AnimationStateData.h */; }; - 15AE19CA19AAD3A700C27E9E /* Atlas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D84180E26E600808F54 /* Atlas.cpp */; }; - 15AE19CB19AAD3A700C27E9E /* Atlas.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D85180E26E600808F54 /* Atlas.h */; }; - 15AE19CC19AAD3A700C27E9E /* AtlasAttachmentLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D86180E26E600808F54 /* AtlasAttachmentLoader.cpp */; }; - 15AE19CD19AAD3A700C27E9E /* AtlasAttachmentLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D87180E26E600808F54 /* AtlasAttachmentLoader.h */; }; - 15AE19CE19AAD3A700C27E9E /* Attachment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D88180E26E600808F54 /* Attachment.cpp */; }; - 15AE19CF19AAD3A700C27E9E /* Attachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D89180E26E600808F54 /* Attachment.h */; }; - 15AE19D019AAD3A700C27E9E /* AttachmentLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D8A180E26E600808F54 /* AttachmentLoader.cpp */; }; - 15AE19D119AAD3A700C27E9E /* AttachmentLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D8B180E26E600808F54 /* AttachmentLoader.h */; }; - 15AE19D219AAD3A700C27E9E /* Bone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D8C180E26E600808F54 /* Bone.cpp */; }; - 15AE19D319AAD3A700C27E9E /* Bone.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D8D180E26E600808F54 /* Bone.h */; }; - 15AE19D419AAD3A700C27E9E /* BoneData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D8E180E26E600808F54 /* BoneData.cpp */; }; - 15AE19D519AAD3A700C27E9E /* BoneData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D8F180E26E600808F54 /* BoneData.h */; }; - 15AE19D619AAD3A700C27E9E /* CCSkeleton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D90180E26E600808F54 /* CCSkeleton.cpp */; }; - 15AE19D719AAD3A700C27E9E /* CCSkeleton.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D91180E26E600808F54 /* CCSkeleton.h */; }; - 15AE19D819AAD3A700C27E9E /* CCSkeletonAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D92180E26E600808F54 /* CCSkeletonAnimation.cpp */; }; - 15AE19D919AAD3A700C27E9E /* CCSkeletonAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D93180E26E600808F54 /* CCSkeletonAnimation.h */; }; - 15AE19DA19AAD3A700C27E9E /* extension.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D94180E26E600808F54 /* extension.cpp */; }; - 15AE19DB19AAD3A700C27E9E /* extension.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D95180E26E600808F54 /* extension.h */; }; - 15AE19DC19AAD3A700C27E9E /* Json.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D96180E26E600808F54 /* Json.cpp */; }; - 15AE19DD19AAD3A700C27E9E /* Json.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D97180E26E600808F54 /* Json.h */; }; - 15AE19DE19AAD3A700C27E9E /* RegionAttachment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D98180E26E600808F54 /* RegionAttachment.cpp */; }; - 15AE19DF19AAD3A700C27E9E /* RegionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D99180E26E600808F54 /* RegionAttachment.h */; }; - 15AE19E019AAD3A700C27E9E /* Skeleton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D9A180E26E600808F54 /* Skeleton.cpp */; }; - 15AE19E119AAD3A700C27E9E /* Skeleton.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D9B180E26E600808F54 /* Skeleton.h */; }; - 15AE19E219AAD3A700C27E9E /* SkeletonData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D9C180E26E600808F54 /* SkeletonData.cpp */; }; - 15AE19E319AAD3A700C27E9E /* SkeletonData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D9D180E26E600808F54 /* SkeletonData.h */; }; - 15AE19E419AAD3A700C27E9E /* SkeletonJson.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D9E180E26E600808F54 /* SkeletonJson.cpp */; }; - 15AE19E519AAD3A700C27E9E /* SkeletonJson.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D9F180E26E600808F54 /* SkeletonJson.h */; }; - 15AE19E619AAD3A700C27E9E /* Skin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71DA0180E26E600808F54 /* Skin.cpp */; }; - 15AE19E719AAD3A700C27E9E /* Skin.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71DA1180E26E600808F54 /* Skin.h */; }; - 15AE19E819AAD3A700C27E9E /* Slot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71DA2180E26E600808F54 /* Slot.cpp */; }; - 15AE19E919AAD3A700C27E9E /* Slot.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71DA3180E26E600808F54 /* Slot.h */; }; - 15AE19EA19AAD3A700C27E9E /* SlotData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71DA4180E26E600808F54 /* SlotData.cpp */; }; - 15AE19EB19AAD3A700C27E9E /* SlotData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71DA5180E26E600808F54 /* SlotData.h */; }; - 15AE19EC19AAD3A700C27E9E /* spine-cocos2dx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71DA6180E26E600808F54 /* spine-cocos2dx.cpp */; }; - 15AE19ED19AAD3A700C27E9E /* spine-cocos2dx.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71DA7180E26E600808F54 /* spine-cocos2dx.h */; }; - 15AE19EE19AAD3A700C27E9E /* spine.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71DA8180E26E600808F54 /* spine.h */; }; - 15AE19EF19AAD3A700C27E9E /* SkeletonBounds.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AC795D918628689005EC8E1 /* SkeletonBounds.cpp */; }; - 15AE19F019AAD3A700C27E9E /* SkeletonBounds.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AC795DA18628689005EC8E1 /* SkeletonBounds.h */; }; - 15AE19F119AAD3A700C27E9E /* Event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AC795D51862867D005EC8E1 /* Event.cpp */; }; - 15AE19F219AAD3A700C27E9E /* Event.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AC795D61862867D005EC8E1 /* Event.h */; }; - 15AE19F319AAD3A700C27E9E /* EventData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AC795D71862867D005EC8E1 /* EventData.cpp */; }; - 15AE19F419AAD3A700C27E9E /* EventData.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AC795D81862867D005EC8E1 /* EventData.h */; }; - 15AE19F519AAD3A700C27E9E /* BoundingBoxAttachment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AC795D318628672005EC8E1 /* BoundingBoxAttachment.cpp */; }; - 15AE19F619AAD3A700C27E9E /* BoundingBoxAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AC795D418628672005EC8E1 /* BoundingBoxAttachment.h */; }; - 15AE19F719AAD3A700C27E9E /* Animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D7E180E26E600808F54 /* Animation.cpp */; }; - 15AE19F819AAD3A700C27E9E /* Animation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D7F180E26E600808F54 /* Animation.h */; }; - 15AE19F919AAD3A700C27E9E /* AnimationState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D80180E26E600808F54 /* AnimationState.cpp */; }; - 15AE19FA19AAD3A700C27E9E /* AnimationState.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D81180E26E600808F54 /* AnimationState.h */; }; - 15AE19FB19AAD3A700C27E9E /* AnimationStateData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D82180E26E600808F54 /* AnimationStateData.cpp */; }; - 15AE19FC19AAD3A700C27E9E /* AnimationStateData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D83180E26E600808F54 /* AnimationStateData.h */; }; - 15AE19FD19AAD3A700C27E9E /* Atlas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D84180E26E600808F54 /* Atlas.cpp */; }; - 15AE19FE19AAD3A700C27E9E /* Atlas.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D85180E26E600808F54 /* Atlas.h */; }; - 15AE19FF19AAD3A700C27E9E /* AtlasAttachmentLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D86180E26E600808F54 /* AtlasAttachmentLoader.cpp */; }; - 15AE1A0019AAD3A700C27E9E /* AtlasAttachmentLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D87180E26E600808F54 /* AtlasAttachmentLoader.h */; }; - 15AE1A0119AAD3A700C27E9E /* Attachment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D88180E26E600808F54 /* Attachment.cpp */; }; - 15AE1A0219AAD3A700C27E9E /* Attachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D89180E26E600808F54 /* Attachment.h */; }; - 15AE1A0319AAD3A700C27E9E /* AttachmentLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D8A180E26E600808F54 /* AttachmentLoader.cpp */; }; - 15AE1A0419AAD3A700C27E9E /* AttachmentLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D8B180E26E600808F54 /* AttachmentLoader.h */; }; - 15AE1A0519AAD3A700C27E9E /* Bone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D8C180E26E600808F54 /* Bone.cpp */; }; - 15AE1A0619AAD3A700C27E9E /* Bone.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D8D180E26E600808F54 /* Bone.h */; }; - 15AE1A0719AAD3A700C27E9E /* BoneData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D8E180E26E600808F54 /* BoneData.cpp */; }; - 15AE1A0819AAD3A700C27E9E /* BoneData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D8F180E26E600808F54 /* BoneData.h */; }; - 15AE1A0919AAD3A700C27E9E /* CCSkeleton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D90180E26E600808F54 /* CCSkeleton.cpp */; }; - 15AE1A0A19AAD3A700C27E9E /* CCSkeleton.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D91180E26E600808F54 /* CCSkeleton.h */; }; - 15AE1A0B19AAD3A700C27E9E /* CCSkeletonAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D92180E26E600808F54 /* CCSkeletonAnimation.cpp */; }; - 15AE1A0C19AAD3A700C27E9E /* CCSkeletonAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D93180E26E600808F54 /* CCSkeletonAnimation.h */; }; - 15AE1A0D19AAD3A700C27E9E /* extension.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D94180E26E600808F54 /* extension.cpp */; }; - 15AE1A0E19AAD3A700C27E9E /* extension.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D95180E26E600808F54 /* extension.h */; }; - 15AE1A0F19AAD3A700C27E9E /* Json.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D96180E26E600808F54 /* Json.cpp */; }; - 15AE1A1019AAD3A700C27E9E /* Json.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D97180E26E600808F54 /* Json.h */; }; - 15AE1A1119AAD3A700C27E9E /* RegionAttachment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D98180E26E600808F54 /* RegionAttachment.cpp */; }; - 15AE1A1219AAD3A700C27E9E /* RegionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D99180E26E600808F54 /* RegionAttachment.h */; }; - 15AE1A1319AAD3A700C27E9E /* Skeleton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D9A180E26E600808F54 /* Skeleton.cpp */; }; - 15AE1A1419AAD3A700C27E9E /* Skeleton.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D9B180E26E600808F54 /* Skeleton.h */; }; - 15AE1A1519AAD3A700C27E9E /* SkeletonData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D9C180E26E600808F54 /* SkeletonData.cpp */; }; - 15AE1A1619AAD3A700C27E9E /* SkeletonData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D9D180E26E600808F54 /* SkeletonData.h */; }; - 15AE1A1719AAD3A700C27E9E /* SkeletonJson.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71D9E180E26E600808F54 /* SkeletonJson.cpp */; }; - 15AE1A1819AAD3A700C27E9E /* SkeletonJson.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71D9F180E26E600808F54 /* SkeletonJson.h */; }; - 15AE1A1919AAD3A700C27E9E /* Skin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71DA0180E26E600808F54 /* Skin.cpp */; }; - 15AE1A1A19AAD3A700C27E9E /* Skin.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71DA1180E26E600808F54 /* Skin.h */; }; - 15AE1A1B19AAD3A700C27E9E /* Slot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71DA2180E26E600808F54 /* Slot.cpp */; }; - 15AE1A1C19AAD3A700C27E9E /* Slot.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71DA3180E26E600808F54 /* Slot.h */; }; - 15AE1A1D19AAD3A700C27E9E /* SlotData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71DA4180E26E600808F54 /* SlotData.cpp */; }; - 15AE1A1E19AAD3A700C27E9E /* SlotData.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71DA5180E26E600808F54 /* SlotData.h */; }; - 15AE1A1F19AAD3A700C27E9E /* spine-cocos2dx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD71DA6180E26E600808F54 /* spine-cocos2dx.cpp */; }; - 15AE1A2019AAD3A700C27E9E /* spine-cocos2dx.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71DA7180E26E600808F54 /* spine-cocos2dx.h */; }; - 15AE1A2119AAD3A700C27E9E /* spine.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71DA8180E26E600808F54 /* spine.h */; }; 15AE1A2219AAD3D500C27E9E /* Box2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 46A168B41807AF9C005B8026 /* Box2D.h */; }; 15AE1A2319AAD3D500C27E9E /* b2BroadPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46A168B61807AF9C005B8026 /* b2BroadPhase.cpp */; }; 15AE1A2419AAD3D500C27E9E /* b2BroadPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 46A168B71807AF9C005B8026 /* b2BroadPhase.h */; }; @@ -902,6 +796,26 @@ 15AE1C1819AAE2C700C27E9E /* CCPhysicsSprite.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AD71EEF180E27CF00808F54 /* CCPhysicsSprite.h */; }; 15AE1C1919AAE30900C27E9E /* libwebsockets.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AAF5387180E35AC000584C8 /* libwebsockets.a */; }; 15AE1C1A19AAE3C800C27E9E /* libwebsockets.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AAF5384180E35A3000584C8 /* libwebsockets.a */; }; + 15B3707819EE414C00ABE682 /* AssetsManagerEx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15B3706E19EE414C00ABE682 /* AssetsManagerEx.cpp */; }; + 15B3707919EE414C00ABE682 /* AssetsManagerEx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15B3706E19EE414C00ABE682 /* AssetsManagerEx.cpp */; }; + 15B3707A19EE414C00ABE682 /* AssetsManagerEx.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B3706F19EE414C00ABE682 /* AssetsManagerEx.h */; }; + 15B3707B19EE414C00ABE682 /* AssetsManagerEx.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B3706F19EE414C00ABE682 /* AssetsManagerEx.h */; }; + 15B3707C19EE414C00ABE682 /* CCEventAssetsManagerEx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15B3707019EE414C00ABE682 /* CCEventAssetsManagerEx.cpp */; }; + 15B3707D19EE414C00ABE682 /* CCEventAssetsManagerEx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15B3707019EE414C00ABE682 /* CCEventAssetsManagerEx.cpp */; }; + 15B3707E19EE414C00ABE682 /* CCEventAssetsManagerEx.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B3707119EE414C00ABE682 /* CCEventAssetsManagerEx.h */; }; + 15B3707F19EE414C00ABE682 /* CCEventAssetsManagerEx.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B3707119EE414C00ABE682 /* CCEventAssetsManagerEx.h */; }; + 15B3708019EE414C00ABE682 /* CCEventListenerAssetsManagerEx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15B3707219EE414C00ABE682 /* CCEventListenerAssetsManagerEx.cpp */; }; + 15B3708119EE414C00ABE682 /* CCEventListenerAssetsManagerEx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15B3707219EE414C00ABE682 /* CCEventListenerAssetsManagerEx.cpp */; }; + 15B3708219EE414C00ABE682 /* CCEventListenerAssetsManagerEx.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B3707319EE414C00ABE682 /* CCEventListenerAssetsManagerEx.h */; }; + 15B3708319EE414C00ABE682 /* CCEventListenerAssetsManagerEx.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B3707319EE414C00ABE682 /* CCEventListenerAssetsManagerEx.h */; }; + 15B3708419EE414C00ABE682 /* Downloader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15B3707419EE414C00ABE682 /* Downloader.cpp */; }; + 15B3708519EE414C00ABE682 /* Downloader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15B3707419EE414C00ABE682 /* Downloader.cpp */; }; + 15B3708619EE414C00ABE682 /* Downloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B3707519EE414C00ABE682 /* Downloader.h */; }; + 15B3708719EE414C00ABE682 /* Downloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B3707519EE414C00ABE682 /* Downloader.h */; }; + 15B3708819EE414C00ABE682 /* Manifest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15B3707619EE414C00ABE682 /* Manifest.cpp */; }; + 15B3708919EE414C00ABE682 /* Manifest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15B3707619EE414C00ABE682 /* Manifest.cpp */; }; + 15B3708A19EE414C00ABE682 /* Manifest.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B3707719EE414C00ABE682 /* Manifest.h */; }; + 15B3708B19EE414C00ABE682 /* Manifest.h in Headers */ = {isa = PBXBuildFile; fileRef = 15B3707719EE414C00ABE682 /* Manifest.h */; }; 15EFA211198A2BB5000C57D3 /* CCProtectedNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15EFA20F198A2BB5000C57D3 /* CCProtectedNode.cpp */; }; 15EFA212198A2BB5000C57D3 /* CCProtectedNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15EFA20F198A2BB5000C57D3 /* CCProtectedNode.cpp */; }; 15EFA213198A2BB5000C57D3 /* CCProtectedNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 15EFA210198A2BB5000C57D3 /* CCProtectedNode.h */; }; @@ -1265,6 +1179,106 @@ 299CF1FC19A434BC00C378C1 /* ccRandom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 299CF1F919A434BC00C378C1 /* ccRandom.cpp */; }; 299CF1FD19A434BC00C378C1 /* ccRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = 299CF1FA19A434BC00C378C1 /* ccRandom.h */; }; 299CF1FE19A434BC00C378C1 /* ccRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = 299CF1FA19A434BC00C378C1 /* ccRandom.h */; }; + 3828C09519EB8ACA002AB57B /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C06719EB8AC9002AB57B /* config.h */; }; + 3828C09619EB8ACA002AB57B /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C06719EB8AC9002AB57B /* config.h */; }; + 3828C09719EB8ACA002AB57B /* extension_set.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C06819EB8AC9002AB57B /* extension_set.cc */; }; + 3828C09819EB8ACA002AB57B /* extension_set.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C06819EB8AC9002AB57B /* extension_set.cc */; }; + 3828C09919EB8ACA002AB57B /* extension_set.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C06919EB8AC9002AB57B /* extension_set.h */; }; + 3828C09A19EB8ACA002AB57B /* extension_set.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C06919EB8AC9002AB57B /* extension_set.h */; }; + 3828C09B19EB8ACA002AB57B /* generated_message_util.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C06A19EB8AC9002AB57B /* generated_message_util.cc */; }; + 3828C09C19EB8ACA002AB57B /* generated_message_util.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C06A19EB8AC9002AB57B /* generated_message_util.cc */; }; + 3828C09D19EB8ACA002AB57B /* generated_message_util.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C06B19EB8AC9002AB57B /* generated_message_util.h */; }; + 3828C09E19EB8ACA002AB57B /* generated_message_util.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C06B19EB8AC9002AB57B /* generated_message_util.h */; }; + 3828C09F19EB8ACA002AB57B /* coded_stream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C06D19EB8AC9002AB57B /* coded_stream.cc */; }; + 3828C0A019EB8ACA002AB57B /* coded_stream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C06D19EB8AC9002AB57B /* coded_stream.cc */; }; + 3828C0A119EB8ACA002AB57B /* coded_stream.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C06E19EB8AC9002AB57B /* coded_stream.h */; }; + 3828C0A219EB8ACA002AB57B /* coded_stream.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C06E19EB8AC9002AB57B /* coded_stream.h */; }; + 3828C0A319EB8ACA002AB57B /* coded_stream_inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C06F19EB8AC9002AB57B /* coded_stream_inl.h */; }; + 3828C0A419EB8ACA002AB57B /* coded_stream_inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C06F19EB8AC9002AB57B /* coded_stream_inl.h */; }; + 3828C0A519EB8ACA002AB57B /* zero_copy_stream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C07019EB8AC9002AB57B /* zero_copy_stream.cc */; }; + 3828C0A619EB8ACA002AB57B /* zero_copy_stream.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C07019EB8AC9002AB57B /* zero_copy_stream.cc */; }; + 3828C0A719EB8ACA002AB57B /* zero_copy_stream.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07119EB8AC9002AB57B /* zero_copy_stream.h */; }; + 3828C0A819EB8ACA002AB57B /* zero_copy_stream.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07119EB8AC9002AB57B /* zero_copy_stream.h */; }; + 3828C0A919EB8ACA002AB57B /* zero_copy_stream_impl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C07219EB8AC9002AB57B /* zero_copy_stream_impl.cc */; }; + 3828C0AA19EB8ACA002AB57B /* zero_copy_stream_impl.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C07219EB8AC9002AB57B /* zero_copy_stream_impl.cc */; }; + 3828C0AB19EB8ACA002AB57B /* zero_copy_stream_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07319EB8AC9002AB57B /* zero_copy_stream_impl.h */; }; + 3828C0AC19EB8ACA002AB57B /* zero_copy_stream_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07319EB8AC9002AB57B /* zero_copy_stream_impl.h */; }; + 3828C0AD19EB8ACA002AB57B /* zero_copy_stream_impl_lite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C07419EB8AC9002AB57B /* zero_copy_stream_impl_lite.cc */; }; + 3828C0AE19EB8ACA002AB57B /* zero_copy_stream_impl_lite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C07419EB8AC9002AB57B /* zero_copy_stream_impl_lite.cc */; }; + 3828C0AF19EB8ACA002AB57B /* zero_copy_stream_impl_lite.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07519EB8AC9002AB57B /* zero_copy_stream_impl_lite.h */; }; + 3828C0B019EB8ACA002AB57B /* zero_copy_stream_impl_lite.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07519EB8AC9002AB57B /* zero_copy_stream_impl_lite.h */; }; + 3828C0B119EB8ACA002AB57B /* message_lite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C07619EB8AC9002AB57B /* message_lite.cc */; }; + 3828C0B219EB8ACA002AB57B /* message_lite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C07619EB8AC9002AB57B /* message_lite.cc */; }; + 3828C0B319EB8ACA002AB57B /* message_lite.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07719EB8AC9002AB57B /* message_lite.h */; }; + 3828C0B419EB8ACA002AB57B /* message_lite.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07719EB8AC9002AB57B /* message_lite.h */; }; + 3828C0B519EB8ACA002AB57B /* repeated_field.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C07819EB8AC9002AB57B /* repeated_field.cc */; }; + 3828C0B619EB8ACA002AB57B /* repeated_field.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C07819EB8AC9002AB57B /* repeated_field.cc */; }; + 3828C0B719EB8ACA002AB57B /* repeated_field.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07919EB8AC9002AB57B /* repeated_field.h */; }; + 3828C0B819EB8ACA002AB57B /* repeated_field.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07919EB8AC9002AB57B /* repeated_field.h */; }; + 3828C0B919EB8ACA002AB57B /* atomicops.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07B19EB8AC9002AB57B /* atomicops.h */; }; + 3828C0BA19EB8ACA002AB57B /* atomicops.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07B19EB8AC9002AB57B /* atomicops.h */; }; + 3828C0BB19EB8ACA002AB57B /* atomicops_internals_arm_gcc.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07C19EB8ACA002AB57B /* atomicops_internals_arm_gcc.h */; }; + 3828C0BC19EB8ACA002AB57B /* atomicops_internals_arm_gcc.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07C19EB8ACA002AB57B /* atomicops_internals_arm_gcc.h */; }; + 3828C0BD19EB8ACA002AB57B /* atomicops_internals_arm_qnx.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07D19EB8ACA002AB57B /* atomicops_internals_arm_qnx.h */; }; + 3828C0BE19EB8ACA002AB57B /* atomicops_internals_arm_qnx.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07D19EB8ACA002AB57B /* atomicops_internals_arm_qnx.h */; }; + 3828C0BF19EB8ACA002AB57B /* atomicops_internals_atomicword_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07E19EB8ACA002AB57B /* atomicops_internals_atomicword_compat.h */; }; + 3828C0C019EB8ACA002AB57B /* atomicops_internals_atomicword_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07E19EB8ACA002AB57B /* atomicops_internals_atomicword_compat.h */; }; + 3828C0C119EB8ACA002AB57B /* atomicops_internals_macosx.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07F19EB8ACA002AB57B /* atomicops_internals_macosx.h */; }; + 3828C0C219EB8ACA002AB57B /* atomicops_internals_macosx.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C07F19EB8ACA002AB57B /* atomicops_internals_macosx.h */; }; + 3828C0C319EB8ACA002AB57B /* atomicops_internals_mips_gcc.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08019EB8ACA002AB57B /* atomicops_internals_mips_gcc.h */; }; + 3828C0C419EB8ACA002AB57B /* atomicops_internals_mips_gcc.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08019EB8ACA002AB57B /* atomicops_internals_mips_gcc.h */; }; + 3828C0C519EB8ACA002AB57B /* atomicops_internals_pnacl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08119EB8ACA002AB57B /* atomicops_internals_pnacl.h */; }; + 3828C0C619EB8ACA002AB57B /* atomicops_internals_pnacl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08119EB8ACA002AB57B /* atomicops_internals_pnacl.h */; }; + 3828C0C719EB8ACA002AB57B /* atomicops_internals_x86_gcc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C08219EB8ACA002AB57B /* atomicops_internals_x86_gcc.cc */; }; + 3828C0C819EB8ACA002AB57B /* atomicops_internals_x86_gcc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C08219EB8ACA002AB57B /* atomicops_internals_x86_gcc.cc */; }; + 3828C0C919EB8ACA002AB57B /* atomicops_internals_x86_gcc.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08319EB8ACA002AB57B /* atomicops_internals_x86_gcc.h */; }; + 3828C0CA19EB8ACA002AB57B /* atomicops_internals_x86_gcc.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08319EB8ACA002AB57B /* atomicops_internals_x86_gcc.h */; }; + 3828C0CB19EB8ACA002AB57B /* atomicops_internals_x86_msvc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C08419EB8ACA002AB57B /* atomicops_internals_x86_msvc.cc */; }; + 3828C0CC19EB8ACA002AB57B /* atomicops_internals_x86_msvc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C08419EB8ACA002AB57B /* atomicops_internals_x86_msvc.cc */; }; + 3828C0CD19EB8ACA002AB57B /* atomicops_internals_x86_msvc.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08519EB8ACA002AB57B /* atomicops_internals_x86_msvc.h */; }; + 3828C0CE19EB8ACA002AB57B /* atomicops_internals_x86_msvc.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08519EB8ACA002AB57B /* atomicops_internals_x86_msvc.h */; }; + 3828C0CF19EB8ACA002AB57B /* common.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C08619EB8ACA002AB57B /* common.cc */; }; + 3828C0D019EB8ACA002AB57B /* common.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C08619EB8ACA002AB57B /* common.cc */; }; + 3828C0D119EB8ACA002AB57B /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08719EB8ACA002AB57B /* common.h */; }; + 3828C0D219EB8ACA002AB57B /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08719EB8ACA002AB57B /* common.h */; }; + 3828C0D319EB8ACA002AB57B /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08819EB8ACA002AB57B /* hash.h */; }; + 3828C0D419EB8ACA002AB57B /* hash.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08819EB8ACA002AB57B /* hash.h */; }; + 3828C0D519EB8ACA002AB57B /* map-util.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08919EB8ACA002AB57B /* map-util.h */; }; + 3828C0D619EB8ACA002AB57B /* map-util.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08919EB8ACA002AB57B /* map-util.h */; }; + 3828C0D719EB8ACA002AB57B /* once.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C08A19EB8ACA002AB57B /* once.cc */; }; + 3828C0D819EB8ACA002AB57B /* once.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C08A19EB8ACA002AB57B /* once.cc */; }; + 3828C0D919EB8ACA002AB57B /* once.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08B19EB8ACA002AB57B /* once.h */; }; + 3828C0DA19EB8ACA002AB57B /* once.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08B19EB8ACA002AB57B /* once.h */; }; + 3828C0DB19EB8ACA002AB57B /* platform_macros.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08C19EB8ACA002AB57B /* platform_macros.h */; }; + 3828C0DC19EB8ACA002AB57B /* platform_macros.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08C19EB8ACA002AB57B /* platform_macros.h */; }; + 3828C0DD19EB8ACA002AB57B /* stl_util.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08D19EB8ACA002AB57B /* stl_util.h */; }; + 3828C0DE19EB8ACA002AB57B /* stl_util.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08D19EB8ACA002AB57B /* stl_util.h */; }; + 3828C0DF19EB8ACA002AB57B /* stringprintf.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C08E19EB8ACA002AB57B /* stringprintf.cc */; }; + 3828C0E019EB8ACA002AB57B /* stringprintf.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C08E19EB8ACA002AB57B /* stringprintf.cc */; }; + 3828C0E119EB8ACA002AB57B /* stringprintf.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08F19EB8ACA002AB57B /* stringprintf.h */; }; + 3828C0E219EB8ACA002AB57B /* stringprintf.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C08F19EB8ACA002AB57B /* stringprintf.h */; }; + 3828C0E319EB8ACA002AB57B /* template_util.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C09019EB8ACA002AB57B /* template_util.h */; }; + 3828C0E419EB8ACA002AB57B /* template_util.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C09019EB8ACA002AB57B /* template_util.h */; }; + 3828C0E519EB8ACA002AB57B /* type_traits.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C09119EB8ACA002AB57B /* type_traits.h */; }; + 3828C0E619EB8ACA002AB57B /* type_traits.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C09119EB8ACA002AB57B /* type_traits.h */; }; + 3828C0E719EB8ACA002AB57B /* wire_format_lite_inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C09219EB8ACA002AB57B /* wire_format_lite_inl.h */; }; + 3828C0E819EB8ACA002AB57B /* wire_format_lite_inl.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C09219EB8ACA002AB57B /* wire_format_lite_inl.h */; }; + 3828C0E919EB8ACA002AB57B /* wire_format_lite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C09319EB8ACA002AB57B /* wire_format_lite.cc */; }; + 3828C0EA19EB8ACA002AB57B /* wire_format_lite.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3828C09319EB8ACA002AB57B /* wire_format_lite.cc */; }; + 3828C0EB19EB8ACA002AB57B /* wire_format_lite.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C09419EB8ACA002AB57B /* wire_format_lite.h */; }; + 3828C0EC19EB8ACA002AB57B /* wire_format_lite.h in Headers */ = {isa = PBXBuildFile; fileRef = 3828C09419EB8ACA002AB57B /* wire_format_lite.h */; }; + 38B8E2CF19E65F4C002D7CE7 /* CSParseBinary.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 38B8E2CD19E65F4C002D7CE7 /* CSParseBinary.pb.cc */; }; + 38B8E2D019E65F4C002D7CE7 /* CSParseBinary.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 38B8E2CD19E65F4C002D7CE7 /* CSParseBinary.pb.cc */; }; + 38B8E2D119E65F4C002D7CE7 /* CSParseBinary.pb.h in Headers */ = {isa = PBXBuildFile; fileRef = 38B8E2CE19E65F4C002D7CE7 /* CSParseBinary.pb.h */; }; + 38B8E2D219E65F4C002D7CE7 /* CSParseBinary.pb.h in Headers */ = {isa = PBXBuildFile; fileRef = 38B8E2CE19E65F4C002D7CE7 /* CSParseBinary.pb.h */; }; + 38B8E2D519E66581002D7CE7 /* CSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 38B8E2D319E66581002D7CE7 /* CSLoader.cpp */; }; + 38B8E2D619E66581002D7CE7 /* CSLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 38B8E2D319E66581002D7CE7 /* CSLoader.cpp */; }; + 38B8E2D719E66581002D7CE7 /* CSLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 38B8E2D419E66581002D7CE7 /* CSLoader.h */; }; + 38B8E2D819E66581002D7CE7 /* CSLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 38B8E2D419E66581002D7CE7 /* CSLoader.h */; }; + 38B8E2E119E671D2002D7CE7 /* UILayoutComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 38B8E2DF19E671D2002D7CE7 /* UILayoutComponent.cpp */; }; + 38B8E2E219E671D2002D7CE7 /* UILayoutComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 38B8E2DF19E671D2002D7CE7 /* UILayoutComponent.cpp */; }; + 38B8E2E319E671D2002D7CE7 /* UILayoutComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 38B8E2E019E671D2002D7CE7 /* UILayoutComponent.h */; }; + 38B8E2E419E671D2002D7CE7 /* UILayoutComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 38B8E2E019E671D2002D7CE7 /* UILayoutComponent.h */; }; 3E2BDADE19C030ED0055CDCD /* AudioEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E2BDADD19C030ED0055CDCD /* AudioEngine.h */; }; 3E2BDAEC19C0436F0055CDCD /* AudioEngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E2BDAEB19C0436F0055CDCD /* AudioEngine.cpp */; }; 3E2F27A619CFBFE100E7C490 /* AudioEngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E2BDAEB19C0436F0055CDCD /* AudioEngine.cpp */; }; @@ -1786,6 +1800,128 @@ B29594B51926D5EC003EEF37 /* CCMeshCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B29594B21926D5EC003EEF37 /* CCMeshCommand.cpp */; }; B29594B61926D5EC003EEF37 /* CCMeshCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B29594B31926D5EC003EEF37 /* CCMeshCommand.h */; }; B29594B71926D5EC003EEF37 /* CCMeshCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = B29594B31926D5EC003EEF37 /* CCMeshCommand.h */; }; + B29A7DC719EE1B7700872B35 /* SkeletonRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D8A19EE1B7700872B35 /* SkeletonRenderer.cpp */; }; + B29A7DC819EE1B7700872B35 /* SkeletonRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D8A19EE1B7700872B35 /* SkeletonRenderer.cpp */; }; + B29A7DC919EE1B7700872B35 /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D8B19EE1B7700872B35 /* SlotData.c */; }; + B29A7DCA19EE1B7700872B35 /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D8B19EE1B7700872B35 /* SlotData.c */; }; + B29A7DCB19EE1B7700872B35 /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D8C19EE1B7700872B35 /* Skeleton.c */; }; + B29A7DCC19EE1B7700872B35 /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D8C19EE1B7700872B35 /* Skeleton.c */; }; + B29A7DCD19EE1B7700872B35 /* Slot.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D8D19EE1B7700872B35 /* Slot.h */; }; + B29A7DCE19EE1B7700872B35 /* Slot.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D8D19EE1B7700872B35 /* Slot.h */; }; + B29A7DCF19EE1B7700872B35 /* RegionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D8E19EE1B7700872B35 /* RegionAttachment.h */; }; + B29A7DD019EE1B7700872B35 /* RegionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D8E19EE1B7700872B35 /* RegionAttachment.h */; }; + B29A7DD119EE1B7700872B35 /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D8F19EE1B7700872B35 /* Skin.c */; }; + B29A7DD219EE1B7700872B35 /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D8F19EE1B7700872B35 /* Skin.c */; }; + B29A7DD319EE1B7700872B35 /* Skin.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D9019EE1B7700872B35 /* Skin.h */; }; + B29A7DD419EE1B7700872B35 /* Skin.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D9019EE1B7700872B35 /* Skin.h */; }; + B29A7DD519EE1B7700872B35 /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9119EE1B7700872B35 /* RegionAttachment.c */; }; + B29A7DD619EE1B7700872B35 /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9119EE1B7700872B35 /* RegionAttachment.c */; }; + B29A7DD719EE1B7700872B35 /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9219EE1B7700872B35 /* SkeletonData.c */; }; + B29A7DD819EE1B7700872B35 /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9219EE1B7700872B35 /* SkeletonData.c */; }; + B29A7DD919EE1B7700872B35 /* SkeletonRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D9319EE1B7700872B35 /* SkeletonRenderer.h */; }; + B29A7DDA19EE1B7700872B35 /* SkeletonRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D9319EE1B7700872B35 /* SkeletonRenderer.h */; }; + B29A7DDB19EE1B7700872B35 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9419EE1B7700872B35 /* Event.c */; }; + B29A7DDC19EE1B7700872B35 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9419EE1B7700872B35 /* Event.c */; }; + B29A7DDD19EE1B7700872B35 /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9519EE1B7700872B35 /* BoneData.c */; }; + B29A7DDE19EE1B7700872B35 /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9519EE1B7700872B35 /* BoneData.c */; }; + B29A7DDF19EE1B7700872B35 /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9619EE1B7700872B35 /* IkConstraintData.c */; }; + B29A7DE019EE1B7700872B35 /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9619EE1B7700872B35 /* IkConstraintData.c */; }; + B29A7DE119EE1B7700872B35 /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9719EE1B7700872B35 /* MeshAttachment.c */; }; + B29A7DE219EE1B7700872B35 /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9719EE1B7700872B35 /* MeshAttachment.c */; }; + B29A7DE319EE1B7700872B35 /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9819EE1B7700872B35 /* SkeletonBounds.c */; }; + B29A7DE419EE1B7700872B35 /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9819EE1B7700872B35 /* SkeletonBounds.c */; }; + B29A7DE519EE1B7700872B35 /* SkeletonAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D9919EE1B7700872B35 /* SkeletonAnimation.h */; }; + B29A7DE619EE1B7700872B35 /* SkeletonAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D9919EE1B7700872B35 /* SkeletonAnimation.h */; }; + B29A7DE719EE1B7700872B35 /* spine.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D9A19EE1B7700872B35 /* spine.h */; }; + B29A7DE819EE1B7700872B35 /* spine.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D9A19EE1B7700872B35 /* spine.h */; }; + B29A7DE919EE1B7700872B35 /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9B19EE1B7700872B35 /* EventData.c */; }; + B29A7DEA19EE1B7700872B35 /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9B19EE1B7700872B35 /* EventData.c */; }; + B29A7DEB19EE1B7700872B35 /* MeshAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D9C19EE1B7700872B35 /* MeshAttachment.h */; }; + B29A7DEC19EE1B7700872B35 /* MeshAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D9C19EE1B7700872B35 /* MeshAttachment.h */; }; + B29A7DED19EE1B7700872B35 /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9D19EE1B7700872B35 /* IkConstraint.c */; }; + B29A7DEE19EE1B7700872B35 /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9D19EE1B7700872B35 /* IkConstraint.c */; }; + B29A7DEF19EE1B7700872B35 /* SkeletonBounds.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D9E19EE1B7700872B35 /* SkeletonBounds.h */; }; + B29A7DF019EE1B7700872B35 /* SkeletonBounds.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7D9E19EE1B7700872B35 /* SkeletonBounds.h */; }; + B29A7DF119EE1B7700872B35 /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9F19EE1B7700872B35 /* AtlasAttachmentLoader.c */; }; + B29A7DF219EE1B7700872B35 /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7D9F19EE1B7700872B35 /* AtlasAttachmentLoader.c */; }; + B29A7DF319EE1B7700872B35 /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DA019EE1B7700872B35 /* AttachmentLoader.c */; }; + B29A7DF419EE1B7700872B35 /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DA019EE1B7700872B35 /* AttachmentLoader.c */; }; + B29A7DF519EE1B7700872B35 /* Skeleton.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DA119EE1B7700872B35 /* Skeleton.h */; }; + B29A7DF619EE1B7700872B35 /* Skeleton.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DA119EE1B7700872B35 /* Skeleton.h */; }; + B29A7DF719EE1B7700872B35 /* Attachment.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DA219EE1B7700872B35 /* Attachment.h */; }; + B29A7DF819EE1B7700872B35 /* Attachment.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DA219EE1B7700872B35 /* Attachment.h */; }; + B29A7DF919EE1B7700872B35 /* Json.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DA319EE1B7700872B35 /* Json.h */; }; + B29A7DFA19EE1B7700872B35 /* Json.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DA319EE1B7700872B35 /* Json.h */; }; + B29A7DFB19EE1B7700872B35 /* spine-cocos2dx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DA419EE1B7700872B35 /* spine-cocos2dx.cpp */; }; + B29A7DFC19EE1B7700872B35 /* spine-cocos2dx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DA419EE1B7700872B35 /* spine-cocos2dx.cpp */; }; + B29A7DFD19EE1B7700872B35 /* IkConstraintData.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DA519EE1B7700872B35 /* IkConstraintData.h */; }; + B29A7DFE19EE1B7700872B35 /* IkConstraintData.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DA519EE1B7700872B35 /* IkConstraintData.h */; }; + B29A7DFF19EE1B7700872B35 /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DA619EE1B7700872B35 /* Json.c */; }; + B29A7E0019EE1B7700872B35 /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DA619EE1B7700872B35 /* Json.c */; }; + B29A7E0119EE1B7700872B35 /* extension.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DA719EE1B7700872B35 /* extension.h */; }; + B29A7E0219EE1B7700872B35 /* extension.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DA719EE1B7700872B35 /* extension.h */; }; + B29A7E0319EE1B7700872B35 /* BoundingBoxAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DA819EE1B7700872B35 /* BoundingBoxAttachment.h */; }; + B29A7E0419EE1B7700872B35 /* BoundingBoxAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DA819EE1B7700872B35 /* BoundingBoxAttachment.h */; }; + B29A7E0519EE1B7700872B35 /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DA919EE1B7700872B35 /* extension.c */; }; + B29A7E0619EE1B7700872B35 /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DA919EE1B7700872B35 /* extension.c */; }; + B29A7E0719EE1B7700872B35 /* SkinnedMeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DAA19EE1B7700872B35 /* SkinnedMeshAttachment.c */; }; + B29A7E0819EE1B7700872B35 /* SkinnedMeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DAA19EE1B7700872B35 /* SkinnedMeshAttachment.c */; }; + B29A7E0919EE1B7700872B35 /* AttachmentLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DAB19EE1B7700872B35 /* AttachmentLoader.h */; }; + B29A7E0A19EE1B7700872B35 /* AttachmentLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DAB19EE1B7700872B35 /* AttachmentLoader.h */; }; + B29A7E0B19EE1B7700872B35 /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DAC19EE1B7700872B35 /* Atlas.c */; }; + B29A7E0C19EE1B7700872B35 /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DAC19EE1B7700872B35 /* Atlas.c */; }; + B29A7E0D19EE1B7700872B35 /* Bone.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DAD19EE1B7700872B35 /* Bone.h */; }; + B29A7E0E19EE1B7700872B35 /* Bone.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DAD19EE1B7700872B35 /* Bone.h */; }; + B29A7E0F19EE1B7700872B35 /* SkeletonJson.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DAE19EE1B7700872B35 /* SkeletonJson.h */; }; + B29A7E1019EE1B7700872B35 /* SkeletonJson.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DAE19EE1B7700872B35 /* SkeletonJson.h */; }; + B29A7E1119EE1B7700872B35 /* EventData.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DAF19EE1B7700872B35 /* EventData.h */; }; + B29A7E1219EE1B7700872B35 /* EventData.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DAF19EE1B7700872B35 /* EventData.h */; }; + B29A7E1319EE1B7700872B35 /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DB019EE1B7700872B35 /* Bone.c */; }; + B29A7E1419EE1B7700872B35 /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DB019EE1B7700872B35 /* Bone.c */; }; + B29A7E1519EE1B7700872B35 /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DB119EE1B7700872B35 /* BoundingBoxAttachment.c */; }; + B29A7E1619EE1B7700872B35 /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DB119EE1B7700872B35 /* BoundingBoxAttachment.c */; }; + B29A7E1719EE1B7700872B35 /* Atlas.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DB219EE1B7700872B35 /* Atlas.h */; }; + B29A7E1819EE1B7700872B35 /* Atlas.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DB219EE1B7700872B35 /* Atlas.h */; }; + B29A7E1919EE1B7700872B35 /* Event.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DB319EE1B7700872B35 /* Event.h */; }; + B29A7E1A19EE1B7700872B35 /* Event.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DB319EE1B7700872B35 /* Event.h */; }; + B29A7E1B19EE1B7700872B35 /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DB419EE1B7700872B35 /* SkeletonJson.c */; }; + B29A7E1C19EE1B7700872B35 /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DB419EE1B7700872B35 /* SkeletonJson.c */; }; + B29A7E1D19EE1B7700872B35 /* PolygonBatch.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DB519EE1B7700872B35 /* PolygonBatch.h */; }; + B29A7E1E19EE1B7700872B35 /* PolygonBatch.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DB519EE1B7700872B35 /* PolygonBatch.h */; }; + B29A7E1F19EE1B7700872B35 /* BoneData.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DB619EE1B7700872B35 /* BoneData.h */; }; + B29A7E2019EE1B7700872B35 /* BoneData.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DB619EE1B7700872B35 /* BoneData.h */; }; + B29A7E2119EE1B7700872B35 /* PolygonBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DB719EE1B7700872B35 /* PolygonBatch.cpp */; }; + B29A7E2219EE1B7700872B35 /* PolygonBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DB719EE1B7700872B35 /* PolygonBatch.cpp */; }; + B29A7E2319EE1B7700872B35 /* IkConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DB819EE1B7700872B35 /* IkConstraint.h */; }; + B29A7E2419EE1B7700872B35 /* IkConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DB819EE1B7700872B35 /* IkConstraint.h */; }; + B29A7E2519EE1B7700872B35 /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DB919EE1B7700872B35 /* Attachment.c */; }; + B29A7E2619EE1B7700872B35 /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DB919EE1B7700872B35 /* Attachment.c */; }; + B29A7E2719EE1B7700872B35 /* spine-cocos2dx.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DBA19EE1B7700872B35 /* spine-cocos2dx.h */; }; + B29A7E2819EE1B7700872B35 /* spine-cocos2dx.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DBA19EE1B7700872B35 /* spine-cocos2dx.h */; }; + B29A7E2919EE1B7700872B35 /* SkeletonData.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DBB19EE1B7700872B35 /* SkeletonData.h */; }; + B29A7E2A19EE1B7700872B35 /* SkeletonData.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DBB19EE1B7700872B35 /* SkeletonData.h */; }; + B29A7E2B19EE1B7700872B35 /* AtlasAttachmentLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DBC19EE1B7700872B35 /* AtlasAttachmentLoader.h */; }; + B29A7E2C19EE1B7700872B35 /* AtlasAttachmentLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DBC19EE1B7700872B35 /* AtlasAttachmentLoader.h */; }; + B29A7E2D19EE1B7700872B35 /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DBD19EE1B7700872B35 /* Slot.c */; }; + B29A7E2E19EE1B7700872B35 /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DBD19EE1B7700872B35 /* Slot.c */; }; + B29A7E2F19EE1B7700872B35 /* SkeletonAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DBE19EE1B7700872B35 /* SkeletonAnimation.cpp */; }; + B29A7E3019EE1B7700872B35 /* SkeletonAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DBE19EE1B7700872B35 /* SkeletonAnimation.cpp */; }; + B29A7E3119EE1B7700872B35 /* SkinnedMeshAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DBF19EE1B7700872B35 /* SkinnedMeshAttachment.h */; }; + B29A7E3219EE1B7700872B35 /* SkinnedMeshAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DBF19EE1B7700872B35 /* SkinnedMeshAttachment.h */; }; + B29A7E3319EE1B7700872B35 /* SlotData.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DC019EE1B7700872B35 /* SlotData.h */; }; + B29A7E3419EE1B7700872B35 /* SlotData.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DC019EE1B7700872B35 /* SlotData.h */; }; + B29A7E3519EE1B7700872B35 /* AnimationStateData.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DC119EE1B7700872B35 /* AnimationStateData.h */; }; + B29A7E3619EE1B7700872B35 /* AnimationStateData.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DC119EE1B7700872B35 /* AnimationStateData.h */; }; + B29A7E3719EE1B7700872B35 /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DC219EE1B7700872B35 /* AnimationStateData.c */; }; + B29A7E3819EE1B7700872B35 /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DC219EE1B7700872B35 /* AnimationStateData.c */; }; + B29A7E3919EE1B7700872B35 /* Animation.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DC319EE1B7700872B35 /* Animation.h */; }; + B29A7E3A19EE1B7700872B35 /* Animation.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DC319EE1B7700872B35 /* Animation.h */; }; + B29A7E3B19EE1B7700872B35 /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DC419EE1B7700872B35 /* Animation.c */; }; + B29A7E3C19EE1B7700872B35 /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DC419EE1B7700872B35 /* Animation.c */; }; + B29A7E3D19EE1B7700872B35 /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DC519EE1B7700872B35 /* AnimationState.c */; }; + B29A7E3E19EE1B7700872B35 /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = B29A7DC519EE1B7700872B35 /* AnimationState.c */; }; + B29A7E3F19EE1B7700872B35 /* AnimationState.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DC619EE1B7700872B35 /* AnimationState.h */; }; + B29A7E4019EE1B7700872B35 /* AnimationState.h in Headers */ = {isa = PBXBuildFile; fileRef = B29A7DC619EE1B7700872B35 /* AnimationState.h */; }; B2CC507C19776DD10041958E /* CCPhysicsJoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46A170721807CE7A005B8026 /* CCPhysicsJoint.cpp */; }; B37510711823AC9F00B3BA6A /* CCPhysicsBodyInfo_chipmunk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B37510451823AC7B00B3BA6A /* CCPhysicsBodyInfo_chipmunk.cpp */; }; B37510721823AC9F00B3BA6A /* CCPhysicsBodyInfo_chipmunk.h in Headers */ = {isa = PBXBuildFile; fileRef = B37510461823AC7B00B3BA6A /* CCPhysicsBodyInfo_chipmunk.h */; }; @@ -1813,6 +1949,14 @@ B60C5BD519AC68B10056FBDE /* CCBillBoard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B60C5BD219AC68B10056FBDE /* CCBillBoard.cpp */; }; B60C5BD619AC68B10056FBDE /* CCBillBoard.h in Headers */ = {isa = PBXBuildFile; fileRef = B60C5BD319AC68B10056FBDE /* CCBillBoard.h */; }; B60C5BD719AC68B10056FBDE /* CCBillBoard.h in Headers */ = {isa = PBXBuildFile; fileRef = B60C5BD319AC68B10056FBDE /* CCBillBoard.h */; }; + DA8C62A219E52C6400000516 /* ioapi_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA8C62A019E52C6400000516 /* ioapi_mem.cpp */; }; + DA8C62A319E52C6400000516 /* ioapi_mem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA8C62A019E52C6400000516 /* ioapi_mem.cpp */; }; + DA8C62A419E52C6400000516 /* ioapi_mem.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8C62A119E52C6400000516 /* ioapi_mem.h */; }; + DA8C62A519E52C6400000516 /* ioapi_mem.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8C62A119E52C6400000516 /* ioapi_mem.h */; }; + DABC9FA919E7DFA900FA252C /* CCClippingRectangleNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DABC9FA719E7DFA900FA252C /* CCClippingRectangleNode.cpp */; }; + DABC9FAA19E7DFA900FA252C /* CCClippingRectangleNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DABC9FA719E7DFA900FA252C /* CCClippingRectangleNode.cpp */; }; + DABC9FAB19E7DFA900FA252C /* CCClippingRectangleNode.h in Headers */ = {isa = PBXBuildFile; fileRef = DABC9FA819E7DFA900FA252C /* CCClippingRectangleNode.h */; }; + DABC9FAC19E7DFA900FA252C /* CCClippingRectangleNode.h in Headers */ = {isa = PBXBuildFile; fileRef = DABC9FA819E7DFA900FA252C /* CCClippingRectangleNode.h */; }; ED9C6A9418599AD8000A5232 /* CCNodeGrid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ED9C6A9218599AD8000A5232 /* CCNodeGrid.cpp */; }; ED9C6A9518599AD8000A5232 /* CCNodeGrid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ED9C6A9218599AD8000A5232 /* CCNodeGrid.cpp */; }; ED9C6A9618599AD8000A5232 /* CCNodeGrid.h in Headers */ = {isa = PBXBuildFile; fileRef = ED9C6A9318599AD8000A5232 /* CCNodeGrid.h */; }; @@ -1826,8 +1970,6 @@ 0634A4C8194B19E400E608AF /* CCActionTimelineCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCActionTimelineCache.h; sourceTree = ""; }; 0634A4C9194B19E400E608AF /* CCFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCFrame.cpp; sourceTree = ""; }; 0634A4CA194B19E400E608AF /* CCFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCFrame.h; sourceTree = ""; }; - 0634A4CB194B19E400E608AF /* CCNodeReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCNodeReader.cpp; sourceTree = ""; }; - 0634A4CC194B19E400E608AF /* CCNodeReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNodeReader.h; sourceTree = ""; }; 0634A4CD194B19E400E608AF /* CCTimeLine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCTimeLine.cpp; sourceTree = ""; }; 0634A4CE194B19E400E608AF /* CCTimeLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTimeLine.h; sourceTree = ""; }; 0634A4CF194B19E400E608AF /* CCTimelineMacro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCTimelineMacro.h; sourceTree = ""; }; @@ -1873,6 +2015,16 @@ 15AE180319AAD2F700C27E9E /* CCSprite3DMaterial.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCSprite3DMaterial.cpp; sourceTree = ""; }; 15AE180419AAD2F700C27E9E /* CCSprite3DMaterial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSprite3DMaterial.h; sourceTree = ""; }; 15AE180519AAD2F700C27E9E /* cocos3d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cocos3d.h; sourceTree = ""; }; + 15B3706E19EE414C00ABE682 /* AssetsManagerEx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AssetsManagerEx.cpp; sourceTree = ""; }; + 15B3706F19EE414C00ABE682 /* AssetsManagerEx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AssetsManagerEx.h; sourceTree = ""; }; + 15B3707019EE414C00ABE682 /* CCEventAssetsManagerEx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCEventAssetsManagerEx.cpp; sourceTree = ""; }; + 15B3707119EE414C00ABE682 /* CCEventAssetsManagerEx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEventAssetsManagerEx.h; sourceTree = ""; }; + 15B3707219EE414C00ABE682 /* CCEventListenerAssetsManagerEx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCEventListenerAssetsManagerEx.cpp; sourceTree = ""; }; + 15B3707319EE414C00ABE682 /* CCEventListenerAssetsManagerEx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCEventListenerAssetsManagerEx.h; sourceTree = ""; }; + 15B3707419EE414C00ABE682 /* Downloader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Downloader.cpp; sourceTree = ""; }; + 15B3707519EE414C00ABE682 /* Downloader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Downloader.h; sourceTree = ""; }; + 15B3707619EE414C00ABE682 /* Manifest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Manifest.cpp; sourceTree = ""; }; + 15B3707719EE414C00ABE682 /* Manifest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Manifest.h; sourceTree = ""; }; 15EFA20F198A2BB5000C57D3 /* CCProtectedNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCProtectedNode.cpp; sourceTree = ""; }; 15EFA210198A2BB5000C57D3 /* CCProtectedNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCProtectedNode.h; sourceTree = ""; }; 1A01C67618F57BE800EFE3A6 /* CCArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCArray.cpp; sourceTree = ""; }; @@ -2164,49 +2316,6 @@ 1AD71D2A180E26E600808F54 /* CCSpriteLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCSpriteLoader.cpp; sourceTree = ""; }; 1AD71D2B180E26E600808F54 /* CCSpriteLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSpriteLoader.h; sourceTree = ""; }; 1AD71D2C180E26E600808F54 /* CocosBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CocosBuilder.h; sourceTree = ""; }; - 1AD71D7E180E26E600808F54 /* Animation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Animation.cpp; sourceTree = ""; }; - 1AD71D7F180E26E600808F54 /* Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Animation.h; sourceTree = ""; }; - 1AD71D80180E26E600808F54 /* AnimationState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnimationState.cpp; sourceTree = ""; }; - 1AD71D81180E26E600808F54 /* AnimationState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationState.h; sourceTree = ""; }; - 1AD71D82180E26E600808F54 /* AnimationStateData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnimationStateData.cpp; sourceTree = ""; }; - 1AD71D83180E26E600808F54 /* AnimationStateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationStateData.h; sourceTree = ""; }; - 1AD71D84180E26E600808F54 /* Atlas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Atlas.cpp; sourceTree = ""; }; - 1AD71D85180E26E600808F54 /* Atlas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Atlas.h; sourceTree = ""; }; - 1AD71D86180E26E600808F54 /* AtlasAttachmentLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AtlasAttachmentLoader.cpp; sourceTree = ""; }; - 1AD71D87180E26E600808F54 /* AtlasAttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AtlasAttachmentLoader.h; sourceTree = ""; }; - 1AD71D88180E26E600808F54 /* Attachment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Attachment.cpp; sourceTree = ""; }; - 1AD71D89180E26E600808F54 /* Attachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Attachment.h; sourceTree = ""; }; - 1AD71D8A180E26E600808F54 /* AttachmentLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AttachmentLoader.cpp; sourceTree = ""; }; - 1AD71D8B180E26E600808F54 /* AttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AttachmentLoader.h; sourceTree = ""; }; - 1AD71D8C180E26E600808F54 /* Bone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Bone.cpp; sourceTree = ""; }; - 1AD71D8D180E26E600808F54 /* Bone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bone.h; sourceTree = ""; }; - 1AD71D8E180E26E600808F54 /* BoneData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BoneData.cpp; sourceTree = ""; }; - 1AD71D8F180E26E600808F54 /* BoneData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BoneData.h; sourceTree = ""; }; - 1AD71D90180E26E600808F54 /* CCSkeleton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = CCSkeleton.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; - 1AD71D91180E26E600808F54 /* CCSkeleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSkeleton.h; sourceTree = ""; }; - 1AD71D92180E26E600808F54 /* CCSkeletonAnimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCSkeletonAnimation.cpp; sourceTree = ""; }; - 1AD71D93180E26E600808F54 /* CCSkeletonAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCSkeletonAnimation.h; sourceTree = ""; }; - 1AD71D94180E26E600808F54 /* extension.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = extension.cpp; sourceTree = ""; }; - 1AD71D95180E26E600808F54 /* extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = extension.h; sourceTree = ""; }; - 1AD71D96180E26E600808F54 /* Json.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Json.cpp; sourceTree = ""; }; - 1AD71D97180E26E600808F54 /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Json.h; sourceTree = ""; }; - 1AD71D98180E26E600808F54 /* RegionAttachment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegionAttachment.cpp; sourceTree = ""; }; - 1AD71D99180E26E600808F54 /* RegionAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegionAttachment.h; sourceTree = ""; }; - 1AD71D9A180E26E600808F54 /* Skeleton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Skeleton.cpp; sourceTree = ""; }; - 1AD71D9B180E26E600808F54 /* Skeleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Skeleton.h; sourceTree = ""; }; - 1AD71D9C180E26E600808F54 /* SkeletonData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkeletonData.cpp; sourceTree = ""; }; - 1AD71D9D180E26E600808F54 /* SkeletonData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkeletonData.h; sourceTree = ""; }; - 1AD71D9E180E26E600808F54 /* SkeletonJson.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkeletonJson.cpp; sourceTree = ""; }; - 1AD71D9F180E26E600808F54 /* SkeletonJson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkeletonJson.h; sourceTree = ""; }; - 1AD71DA0180E26E600808F54 /* Skin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Skin.cpp; sourceTree = ""; }; - 1AD71DA1180E26E600808F54 /* Skin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Skin.h; sourceTree = ""; }; - 1AD71DA2180E26E600808F54 /* Slot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Slot.cpp; sourceTree = ""; }; - 1AD71DA3180E26E600808F54 /* Slot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Slot.h; sourceTree = ""; }; - 1AD71DA4180E26E600808F54 /* SlotData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SlotData.cpp; sourceTree = ""; }; - 1AD71DA5180E26E600808F54 /* SlotData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlotData.h; sourceTree = ""; }; - 1AD71DA6180E26E600808F54 /* spine-cocos2dx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "spine-cocos2dx.cpp"; sourceTree = ""; }; - 1AD71DA7180E26E600808F54 /* spine-cocos2dx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "spine-cocos2dx.h"; sourceTree = ""; }; - 1AD71DA8180E26E600808F54 /* spine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spine.h; sourceTree = ""; }; 1AD71EEC180E27CF00808F54 /* CCPhysicsDebugNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCPhysicsDebugNode.cpp; sourceTree = ""; }; 1AD71EED180E27CF00808F54 /* CCPhysicsDebugNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPhysicsDebugNode.h; sourceTree = ""; }; 1AD71EEE180E27CF00808F54 /* CCPhysicsSprite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCPhysicsSprite.cpp; sourceTree = ""; }; @@ -2280,14 +2389,6 @@ 29CB8F4B1929D1BB00C841D6 /* UILayoutManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILayoutManager.h; sourceTree = ""; }; 29E99D1C1957BA7000046604 /* CocoLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CocoLoader.cpp; sourceTree = ""; }; 29E99D1D1957BA7000046604 /* CocoLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CocoLoader.h; sourceTree = ""; }; - 2AC795D318628672005EC8E1 /* BoundingBoxAttachment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BoundingBoxAttachment.cpp; sourceTree = ""; }; - 2AC795D418628672005EC8E1 /* BoundingBoxAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BoundingBoxAttachment.h; sourceTree = ""; }; - 2AC795D51862867D005EC8E1 /* Event.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Event.cpp; sourceTree = ""; }; - 2AC795D61862867D005EC8E1 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Event.h; sourceTree = ""; }; - 2AC795D71862867D005EC8E1 /* EventData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventData.cpp; sourceTree = ""; }; - 2AC795D81862867D005EC8E1 /* EventData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventData.h; sourceTree = ""; }; - 2AC795D918628689005EC8E1 /* SkeletonBounds.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkeletonBounds.cpp; sourceTree = ""; }; - 2AC795DA18628689005EC8E1 /* SkeletonBounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkeletonBounds.h; sourceTree = ""; }; 373B910718787C0B00198F86 /* CCComBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCComBase.h; sourceTree = ""; }; 37936A341869B76800E974DD /* document.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = document.h; sourceTree = ""; }; 37936A351869B76800E974DD /* filestream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filestream.h; sourceTree = ""; }; @@ -2299,6 +2400,56 @@ 37936A3C1869B76800E974DD /* reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reader.h; sourceTree = ""; }; 37936A3D1869B76800E974DD /* stringbuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringbuffer.h; sourceTree = ""; }; 37936A3E1869B76800E974DD /* writer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = writer.h; sourceTree = ""; }; + 3828C06719EB8AC9002AB57B /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = config.h; path = src/google/protobuf/config.h; sourceTree = ""; }; + 3828C06819EB8AC9002AB57B /* extension_set.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = extension_set.cc; path = src/google/protobuf/extension_set.cc; sourceTree = ""; }; + 3828C06919EB8AC9002AB57B /* extension_set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = extension_set.h; path = src/google/protobuf/extension_set.h; sourceTree = ""; }; + 3828C06A19EB8AC9002AB57B /* generated_message_util.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = generated_message_util.cc; path = src/google/protobuf/generated_message_util.cc; sourceTree = ""; }; + 3828C06B19EB8AC9002AB57B /* generated_message_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = generated_message_util.h; path = src/google/protobuf/generated_message_util.h; sourceTree = ""; }; + 3828C06D19EB8AC9002AB57B /* coded_stream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = coded_stream.cc; sourceTree = ""; }; + 3828C06E19EB8AC9002AB57B /* coded_stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = coded_stream.h; sourceTree = ""; }; + 3828C06F19EB8AC9002AB57B /* coded_stream_inl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = coded_stream_inl.h; sourceTree = ""; }; + 3828C07019EB8AC9002AB57B /* zero_copy_stream.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zero_copy_stream.cc; sourceTree = ""; }; + 3828C07119EB8AC9002AB57B /* zero_copy_stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zero_copy_stream.h; sourceTree = ""; }; + 3828C07219EB8AC9002AB57B /* zero_copy_stream_impl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zero_copy_stream_impl.cc; sourceTree = ""; }; + 3828C07319EB8AC9002AB57B /* zero_copy_stream_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zero_copy_stream_impl.h; sourceTree = ""; }; + 3828C07419EB8AC9002AB57B /* zero_copy_stream_impl_lite.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = zero_copy_stream_impl_lite.cc; sourceTree = ""; }; + 3828C07519EB8AC9002AB57B /* zero_copy_stream_impl_lite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zero_copy_stream_impl_lite.h; sourceTree = ""; }; + 3828C07619EB8AC9002AB57B /* message_lite.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = message_lite.cc; path = src/google/protobuf/message_lite.cc; sourceTree = ""; }; + 3828C07719EB8AC9002AB57B /* message_lite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = message_lite.h; path = src/google/protobuf/message_lite.h; sourceTree = ""; }; + 3828C07819EB8AC9002AB57B /* repeated_field.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = repeated_field.cc; path = src/google/protobuf/repeated_field.cc; sourceTree = ""; }; + 3828C07919EB8AC9002AB57B /* repeated_field.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = repeated_field.h; path = src/google/protobuf/repeated_field.h; sourceTree = ""; }; + 3828C07B19EB8AC9002AB57B /* atomicops.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atomicops.h; sourceTree = ""; }; + 3828C07C19EB8ACA002AB57B /* atomicops_internals_arm_gcc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atomicops_internals_arm_gcc.h; sourceTree = ""; }; + 3828C07D19EB8ACA002AB57B /* atomicops_internals_arm_qnx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atomicops_internals_arm_qnx.h; sourceTree = ""; }; + 3828C07E19EB8ACA002AB57B /* atomicops_internals_atomicword_compat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atomicops_internals_atomicword_compat.h; sourceTree = ""; }; + 3828C07F19EB8ACA002AB57B /* atomicops_internals_macosx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atomicops_internals_macosx.h; sourceTree = ""; }; + 3828C08019EB8ACA002AB57B /* atomicops_internals_mips_gcc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atomicops_internals_mips_gcc.h; sourceTree = ""; }; + 3828C08119EB8ACA002AB57B /* atomicops_internals_pnacl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atomicops_internals_pnacl.h; sourceTree = ""; }; + 3828C08219EB8ACA002AB57B /* atomicops_internals_x86_gcc.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = atomicops_internals_x86_gcc.cc; sourceTree = ""; }; + 3828C08319EB8ACA002AB57B /* atomicops_internals_x86_gcc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atomicops_internals_x86_gcc.h; sourceTree = ""; }; + 3828C08419EB8ACA002AB57B /* atomicops_internals_x86_msvc.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = atomicops_internals_x86_msvc.cc; sourceTree = ""; }; + 3828C08519EB8ACA002AB57B /* atomicops_internals_x86_msvc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atomicops_internals_x86_msvc.h; sourceTree = ""; }; + 3828C08619EB8ACA002AB57B /* common.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = common.cc; sourceTree = ""; }; + 3828C08719EB8ACA002AB57B /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; + 3828C08819EB8ACA002AB57B /* hash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hash.h; sourceTree = ""; }; + 3828C08919EB8ACA002AB57B /* map-util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "map-util.h"; sourceTree = ""; }; + 3828C08A19EB8ACA002AB57B /* once.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = once.cc; sourceTree = ""; }; + 3828C08B19EB8ACA002AB57B /* once.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = once.h; sourceTree = ""; }; + 3828C08C19EB8ACA002AB57B /* platform_macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform_macros.h; sourceTree = ""; }; + 3828C08D19EB8ACA002AB57B /* stl_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stl_util.h; sourceTree = ""; }; + 3828C08E19EB8ACA002AB57B /* stringprintf.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stringprintf.cc; sourceTree = ""; }; + 3828C08F19EB8ACA002AB57B /* stringprintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stringprintf.h; sourceTree = ""; }; + 3828C09019EB8ACA002AB57B /* template_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = template_util.h; sourceTree = ""; }; + 3828C09119EB8ACA002AB57B /* type_traits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = type_traits.h; sourceTree = ""; }; + 3828C09219EB8ACA002AB57B /* wire_format_lite_inl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wire_format_lite_inl.h; path = src/google/protobuf/wire_format_lite_inl.h; sourceTree = ""; }; + 3828C09319EB8ACA002AB57B /* wire_format_lite.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = wire_format_lite.cc; path = src/google/protobuf/wire_format_lite.cc; sourceTree = ""; }; + 3828C09419EB8ACA002AB57B /* wire_format_lite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = wire_format_lite.h; path = src/google/protobuf/wire_format_lite.h; sourceTree = ""; }; + 38B8E2CD19E65F4C002D7CE7 /* CSParseBinary.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSParseBinary.pb.cc; sourceTree = ""; }; + 38B8E2CE19E65F4C002D7CE7 /* CSParseBinary.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSParseBinary.pb.h; sourceTree = ""; }; + 38B8E2D319E66581002D7CE7 /* CSLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSLoader.cpp; sourceTree = ""; }; + 38B8E2D419E66581002D7CE7 /* CSLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSLoader.h; sourceTree = ""; }; + 38B8E2DF19E671D2002D7CE7 /* UILayoutComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UILayoutComponent.cpp; sourceTree = ""; }; + 38B8E2E019E671D2002D7CE7 /* UILayoutComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILayoutComponent.h; sourceTree = ""; }; 3E2BDADD19C030ED0055CDCD /* AudioEngine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioEngine.h; sourceTree = ""; }; 3E2BDAEB19C0436F0055CDCD /* AudioEngine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioEngine.cpp; sourceTree = ""; }; 3E6176551960F89B00DE83F5 /* CCController-iOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "CCController-iOS.mm"; path = "../base/CCController-iOS.mm"; sourceTree = ""; }; @@ -2784,6 +2935,67 @@ B29594B11926D5D9003EEF37 /* ccShader_3D_PositionTex.vert */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ccShader_3D_PositionTex.vert; sourceTree = ""; }; B29594B21926D5EC003EEF37 /* CCMeshCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCMeshCommand.cpp; sourceTree = ""; }; B29594B31926D5EC003EEF37 /* CCMeshCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCMeshCommand.h; sourceTree = ""; }; + B29A7D8A19EE1B7700872B35 /* SkeletonRenderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkeletonRenderer.cpp; sourceTree = ""; }; + B29A7D8B19EE1B7700872B35 /* SlotData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SlotData.c; sourceTree = ""; }; + B29A7D8C19EE1B7700872B35 /* Skeleton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Skeleton.c; sourceTree = ""; }; + B29A7D8D19EE1B7700872B35 /* Slot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Slot.h; sourceTree = ""; }; + B29A7D8E19EE1B7700872B35 /* RegionAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegionAttachment.h; sourceTree = ""; }; + B29A7D8F19EE1B7700872B35 /* Skin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Skin.c; sourceTree = ""; }; + B29A7D9019EE1B7700872B35 /* Skin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Skin.h; sourceTree = ""; }; + B29A7D9119EE1B7700872B35 /* RegionAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = RegionAttachment.c; sourceTree = ""; }; + B29A7D9219EE1B7700872B35 /* SkeletonData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SkeletonData.c; sourceTree = ""; }; + B29A7D9319EE1B7700872B35 /* SkeletonRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkeletonRenderer.h; sourceTree = ""; }; + B29A7D9419EE1B7700872B35 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Event.c; sourceTree = ""; }; + B29A7D9519EE1B7700872B35 /* BoneData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = BoneData.c; sourceTree = ""; }; + B29A7D9619EE1B7700872B35 /* IkConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = IkConstraintData.c; sourceTree = ""; }; + B29A7D9719EE1B7700872B35 /* MeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MeshAttachment.c; sourceTree = ""; }; + B29A7D9819EE1B7700872B35 /* SkeletonBounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SkeletonBounds.c; sourceTree = ""; }; + B29A7D9919EE1B7700872B35 /* SkeletonAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkeletonAnimation.h; sourceTree = ""; }; + B29A7D9A19EE1B7700872B35 /* spine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spine.h; sourceTree = ""; }; + B29A7D9B19EE1B7700872B35 /* EventData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = EventData.c; sourceTree = ""; }; + B29A7D9C19EE1B7700872B35 /* MeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MeshAttachment.h; sourceTree = ""; }; + B29A7D9D19EE1B7700872B35 /* IkConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = IkConstraint.c; sourceTree = ""; }; + B29A7D9E19EE1B7700872B35 /* SkeletonBounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkeletonBounds.h; sourceTree = ""; }; + B29A7D9F19EE1B7700872B35 /* AtlasAttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = AtlasAttachmentLoader.c; sourceTree = ""; }; + B29A7DA019EE1B7700872B35 /* AttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = AttachmentLoader.c; sourceTree = ""; }; + B29A7DA119EE1B7700872B35 /* Skeleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Skeleton.h; sourceTree = ""; }; + B29A7DA219EE1B7700872B35 /* Attachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Attachment.h; sourceTree = ""; }; + B29A7DA319EE1B7700872B35 /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Json.h; sourceTree = ""; }; + B29A7DA419EE1B7700872B35 /* spine-cocos2dx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "spine-cocos2dx.cpp"; sourceTree = ""; }; + B29A7DA519EE1B7700872B35 /* IkConstraintData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IkConstraintData.h; sourceTree = ""; }; + B29A7DA619EE1B7700872B35 /* Json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Json.c; sourceTree = ""; }; + B29A7DA719EE1B7700872B35 /* extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = extension.h; sourceTree = ""; }; + B29A7DA819EE1B7700872B35 /* BoundingBoxAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BoundingBoxAttachment.h; sourceTree = ""; }; + B29A7DA919EE1B7700872B35 /* extension.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = extension.c; sourceTree = ""; }; + B29A7DAA19EE1B7700872B35 /* SkinnedMeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SkinnedMeshAttachment.c; sourceTree = ""; }; + B29A7DAB19EE1B7700872B35 /* AttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AttachmentLoader.h; sourceTree = ""; }; + B29A7DAC19EE1B7700872B35 /* Atlas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Atlas.c; sourceTree = ""; }; + B29A7DAD19EE1B7700872B35 /* Bone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bone.h; sourceTree = ""; }; + B29A7DAE19EE1B7700872B35 /* SkeletonJson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkeletonJson.h; sourceTree = ""; }; + B29A7DAF19EE1B7700872B35 /* EventData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventData.h; sourceTree = ""; }; + B29A7DB019EE1B7700872B35 /* Bone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Bone.c; sourceTree = ""; }; + B29A7DB119EE1B7700872B35 /* BoundingBoxAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = BoundingBoxAttachment.c; sourceTree = ""; }; + B29A7DB219EE1B7700872B35 /* Atlas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Atlas.h; sourceTree = ""; }; + B29A7DB319EE1B7700872B35 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Event.h; sourceTree = ""; }; + B29A7DB419EE1B7700872B35 /* SkeletonJson.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SkeletonJson.c; sourceTree = ""; }; + B29A7DB519EE1B7700872B35 /* PolygonBatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolygonBatch.h; sourceTree = ""; }; + B29A7DB619EE1B7700872B35 /* BoneData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BoneData.h; sourceTree = ""; }; + B29A7DB719EE1B7700872B35 /* PolygonBatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PolygonBatch.cpp; sourceTree = ""; }; + B29A7DB819EE1B7700872B35 /* IkConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IkConstraint.h; sourceTree = ""; }; + B29A7DB919EE1B7700872B35 /* Attachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Attachment.c; sourceTree = ""; }; + B29A7DBA19EE1B7700872B35 /* spine-cocos2dx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "spine-cocos2dx.h"; sourceTree = ""; }; + B29A7DBB19EE1B7700872B35 /* SkeletonData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkeletonData.h; sourceTree = ""; }; + B29A7DBC19EE1B7700872B35 /* AtlasAttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AtlasAttachmentLoader.h; sourceTree = ""; }; + B29A7DBD19EE1B7700872B35 /* Slot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Slot.c; sourceTree = ""; }; + B29A7DBE19EE1B7700872B35 /* SkeletonAnimation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkeletonAnimation.cpp; sourceTree = ""; }; + B29A7DBF19EE1B7700872B35 /* SkinnedMeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkinnedMeshAttachment.h; sourceTree = ""; }; + B29A7DC019EE1B7700872B35 /* SlotData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlotData.h; sourceTree = ""; }; + B29A7DC119EE1B7700872B35 /* AnimationStateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationStateData.h; sourceTree = ""; }; + B29A7DC219EE1B7700872B35 /* AnimationStateData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = AnimationStateData.c; sourceTree = ""; }; + B29A7DC319EE1B7700872B35 /* Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Animation.h; sourceTree = ""; }; + B29A7DC419EE1B7700872B35 /* Animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Animation.c; sourceTree = ""; }; + B29A7DC519EE1B7700872B35 /* AnimationState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = AnimationState.c; sourceTree = ""; }; + B29A7DC619EE1B7700872B35 /* AnimationState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationState.h; sourceTree = ""; }; B37510451823AC7B00B3BA6A /* CCPhysicsBodyInfo_chipmunk.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCPhysicsBodyInfo_chipmunk.cpp; sourceTree = ""; }; B37510461823AC7B00B3BA6A /* CCPhysicsBodyInfo_chipmunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCPhysicsBodyInfo_chipmunk.h; sourceTree = ""; }; B37510471823AC7B00B3BA6A /* CCPhysicsContactInfo_chipmunk.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCPhysicsContactInfo_chipmunk.cpp; sourceTree = ""; }; @@ -2802,6 +3014,10 @@ B67C624319D4186F00F11FC6 /* ccShader_3D_ColorNormal.frag */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ccShader_3D_ColorNormal.frag; sourceTree = ""; }; B67C624419D4186F00F11FC6 /* ccShader_3D_ColorNormalTex.frag */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ccShader_3D_ColorNormalTex.frag; sourceTree = ""; }; B67C624519D4186F00F11FC6 /* ccShader_3D_PositionNormalTex.vert */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ccShader_3D_PositionNormalTex.vert; sourceTree = ""; }; + DA8C62A019E52C6400000516 /* ioapi_mem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ioapi_mem.cpp; sourceTree = ""; }; + DA8C62A119E52C6400000516 /* ioapi_mem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioapi_mem.h; sourceTree = ""; }; + DABC9FA719E7DFA900FA252C /* CCClippingRectangleNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CCClippingRectangleNode.cpp; sourceTree = ""; }; + DABC9FA819E7DFA900FA252C /* CCClippingRectangleNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCClippingRectangleNode.h; sourceTree = ""; }; ED9C6A9218599AD8000A5232 /* CCNodeGrid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = CCNodeGrid.cpp; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.cpp; }; ED9C6A9318599AD8000A5232 /* CCNodeGrid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CCNodeGrid.h; sourceTree = ""; }; /* End PBXFileReference section */ @@ -2851,14 +3067,14 @@ 0634A4C4194B19E400E608AF /* ActionTimeline */ = { isa = PBXGroup; children = ( + 38B8E2D319E66581002D7CE7 /* CSLoader.cpp */, + 38B8E2D419E66581002D7CE7 /* CSLoader.h */, 0634A4C5194B19E400E608AF /* CCActionTimeline.cpp */, 0634A4C6194B19E400E608AF /* CCActionTimeline.h */, 0634A4C7194B19E400E608AF /* CCActionTimelineCache.cpp */, 0634A4C8194B19E400E608AF /* CCActionTimelineCache.h */, 0634A4C9194B19E400E608AF /* CCFrame.cpp */, 0634A4CA194B19E400E608AF /* CCFrame.h */, - 0634A4CB194B19E400E608AF /* CCNodeReader.cpp */, - 0634A4CC194B19E400E608AF /* CCNodeReader.h */, 0634A4CD194B19E400E608AF /* CCTimeLine.cpp */, 0634A4CE194B19E400E608AF /* CCTimeLine.h */, 0634A4CF194B19E400E608AF /* CCTimelineMacro.h */, @@ -3206,6 +3422,8 @@ 1A5701FF180BCBBD0088DEC7 /* misc-nodes */ = { isa = PBXGroup; children = ( + DABC9FA719E7DFA900FA252C /* CCClippingRectangleNode.cpp */, + DABC9FA819E7DFA900FA252C /* CCClippingRectangleNode.h */, ED9C6A9218599AD8000A5232 /* CCNodeGrid.cpp */, ED9C6A9318599AD8000A5232 /* CCNodeGrid.h */, 1A57020C180BCBF40088DEC7 /* CCProgressTimer.cpp */, @@ -3300,6 +3518,7 @@ 1A57033E180BD0490088DEC7 /* external */ = { isa = PBXGroup; children = ( + 3828BFD819EB8AAD002AB57B /* protobuf-lite */, 1AC026971914068200FA920D /* ConvertUTF */, 46C02E0418E91123004B7456 /* xxhash */, 46A168B21807AF9C005B8026 /* Box2D */, @@ -3350,6 +3569,8 @@ isa = PBXGroup; children = ( 1A570350180BD0B00088DEC7 /* ioapi.cpp */, + DA8C62A019E52C6400000516 /* ioapi_mem.cpp */, + DA8C62A119E52C6400000516 /* ioapi_mem.h */, 1A570351180BD0B00088DEC7 /* ioapi.h */, 1A570352180BD0B00088DEC7 /* unzip.cpp */, 1A570353180BD0B00088DEC7 /* unzip.h */, @@ -3536,6 +3757,8 @@ 1A8C5946180E930E00EF57C3 /* cocostudio */ = { isa = PBXGroup; children = ( + 38B8E2CD19E65F4C002D7CE7 /* CSParseBinary.pb.cc */, + 38B8E2CE19E65F4C002D7CE7 /* CSParseBinary.pb.h */, 29E99D1C1957BA7000046604 /* CocoLoader.cpp */, 29E99D1D1957BA7000046604 /* CocoLoader.h */, 0634A4C4194B19E400E608AF /* ActionTimeline */, @@ -3617,6 +3840,16 @@ 1AAF5350180E305F000584C8 /* assets-manager */ = { isa = PBXGroup; children = ( + 15B3706E19EE414C00ABE682 /* AssetsManagerEx.cpp */, + 15B3706F19EE414C00ABE682 /* AssetsManagerEx.h */, + 15B3707019EE414C00ABE682 /* CCEventAssetsManagerEx.cpp */, + 15B3707119EE414C00ABE682 /* CCEventAssetsManagerEx.h */, + 15B3707219EE414C00ABE682 /* CCEventListenerAssetsManagerEx.cpp */, + 15B3707319EE414C00ABE682 /* CCEventListenerAssetsManagerEx.h */, + 15B3707419EE414C00ABE682 /* Downloader.cpp */, + 15B3707519EE414C00ABE682 /* Downloader.h */, + 15B3707619EE414C00ABE682 /* Manifest.cpp */, + 15B3707719EE414C00ABE682 /* Manifest.h */, 1AAF5351180E3060000584C8 /* AssetsManager.cpp */, 1AAF5352180E3060000584C8 /* AssetsManager.h */, ); @@ -3800,57 +4033,67 @@ 1AD71D7C180E26E600808F54 /* spine */ = { isa = PBXGroup; children = ( - 2AC795D918628689005EC8E1 /* SkeletonBounds.cpp */, - 2AC795DA18628689005EC8E1 /* SkeletonBounds.h */, - 2AC795D51862867D005EC8E1 /* Event.cpp */, - 2AC795D61862867D005EC8E1 /* Event.h */, - 2AC795D71862867D005EC8E1 /* EventData.cpp */, - 2AC795D81862867D005EC8E1 /* EventData.h */, - 2AC795D318628672005EC8E1 /* BoundingBoxAttachment.cpp */, - 2AC795D418628672005EC8E1 /* BoundingBoxAttachment.h */, - 1AD71D7E180E26E600808F54 /* Animation.cpp */, - 1AD71D7F180E26E600808F54 /* Animation.h */, - 1AD71D80180E26E600808F54 /* AnimationState.cpp */, - 1AD71D81180E26E600808F54 /* AnimationState.h */, - 1AD71D82180E26E600808F54 /* AnimationStateData.cpp */, - 1AD71D83180E26E600808F54 /* AnimationStateData.h */, - 1AD71D84180E26E600808F54 /* Atlas.cpp */, - 1AD71D85180E26E600808F54 /* Atlas.h */, - 1AD71D86180E26E600808F54 /* AtlasAttachmentLoader.cpp */, - 1AD71D87180E26E600808F54 /* AtlasAttachmentLoader.h */, - 1AD71D88180E26E600808F54 /* Attachment.cpp */, - 1AD71D89180E26E600808F54 /* Attachment.h */, - 1AD71D8A180E26E600808F54 /* AttachmentLoader.cpp */, - 1AD71D8B180E26E600808F54 /* AttachmentLoader.h */, - 1AD71D8C180E26E600808F54 /* Bone.cpp */, - 1AD71D8D180E26E600808F54 /* Bone.h */, - 1AD71D8E180E26E600808F54 /* BoneData.cpp */, - 1AD71D8F180E26E600808F54 /* BoneData.h */, - 1AD71D90180E26E600808F54 /* CCSkeleton.cpp */, - 1AD71D91180E26E600808F54 /* CCSkeleton.h */, - 1AD71D92180E26E600808F54 /* CCSkeletonAnimation.cpp */, - 1AD71D93180E26E600808F54 /* CCSkeletonAnimation.h */, - 1AD71D94180E26E600808F54 /* extension.cpp */, - 1AD71D95180E26E600808F54 /* extension.h */, - 1AD71D96180E26E600808F54 /* Json.cpp */, - 1AD71D97180E26E600808F54 /* Json.h */, - 1AD71D98180E26E600808F54 /* RegionAttachment.cpp */, - 1AD71D99180E26E600808F54 /* RegionAttachment.h */, - 1AD71D9A180E26E600808F54 /* Skeleton.cpp */, - 1AD71D9B180E26E600808F54 /* Skeleton.h */, - 1AD71D9C180E26E600808F54 /* SkeletonData.cpp */, - 1AD71D9D180E26E600808F54 /* SkeletonData.h */, - 1AD71D9E180E26E600808F54 /* SkeletonJson.cpp */, - 1AD71D9F180E26E600808F54 /* SkeletonJson.h */, - 1AD71DA0180E26E600808F54 /* Skin.cpp */, - 1AD71DA1180E26E600808F54 /* Skin.h */, - 1AD71DA2180E26E600808F54 /* Slot.cpp */, - 1AD71DA3180E26E600808F54 /* Slot.h */, - 1AD71DA4180E26E600808F54 /* SlotData.cpp */, - 1AD71DA5180E26E600808F54 /* SlotData.h */, - 1AD71DA6180E26E600808F54 /* spine-cocos2dx.cpp */, - 1AD71DA7180E26E600808F54 /* spine-cocos2dx.h */, - 1AD71DA8180E26E600808F54 /* spine.h */, + B29A7D8A19EE1B7700872B35 /* SkeletonRenderer.cpp */, + B29A7D8B19EE1B7700872B35 /* SlotData.c */, + B29A7D8C19EE1B7700872B35 /* Skeleton.c */, + B29A7D8D19EE1B7700872B35 /* Slot.h */, + B29A7D8E19EE1B7700872B35 /* RegionAttachment.h */, + B29A7D8F19EE1B7700872B35 /* Skin.c */, + B29A7D9019EE1B7700872B35 /* Skin.h */, + B29A7D9119EE1B7700872B35 /* RegionAttachment.c */, + B29A7D9219EE1B7700872B35 /* SkeletonData.c */, + B29A7D9319EE1B7700872B35 /* SkeletonRenderer.h */, + B29A7D9419EE1B7700872B35 /* Event.c */, + B29A7D9519EE1B7700872B35 /* BoneData.c */, + B29A7D9619EE1B7700872B35 /* IkConstraintData.c */, + B29A7D9719EE1B7700872B35 /* MeshAttachment.c */, + B29A7D9819EE1B7700872B35 /* SkeletonBounds.c */, + B29A7D9919EE1B7700872B35 /* SkeletonAnimation.h */, + B29A7D9A19EE1B7700872B35 /* spine.h */, + B29A7D9B19EE1B7700872B35 /* EventData.c */, + B29A7D9C19EE1B7700872B35 /* MeshAttachment.h */, + B29A7D9D19EE1B7700872B35 /* IkConstraint.c */, + B29A7D9E19EE1B7700872B35 /* SkeletonBounds.h */, + B29A7D9F19EE1B7700872B35 /* AtlasAttachmentLoader.c */, + B29A7DA019EE1B7700872B35 /* AttachmentLoader.c */, + B29A7DA119EE1B7700872B35 /* Skeleton.h */, + B29A7DA219EE1B7700872B35 /* Attachment.h */, + B29A7DA319EE1B7700872B35 /* Json.h */, + B29A7DA419EE1B7700872B35 /* spine-cocos2dx.cpp */, + B29A7DA519EE1B7700872B35 /* IkConstraintData.h */, + B29A7DA619EE1B7700872B35 /* Json.c */, + B29A7DA719EE1B7700872B35 /* extension.h */, + B29A7DA819EE1B7700872B35 /* BoundingBoxAttachment.h */, + B29A7DA919EE1B7700872B35 /* extension.c */, + B29A7DAA19EE1B7700872B35 /* SkinnedMeshAttachment.c */, + B29A7DAB19EE1B7700872B35 /* AttachmentLoader.h */, + B29A7DAC19EE1B7700872B35 /* Atlas.c */, + B29A7DAD19EE1B7700872B35 /* Bone.h */, + B29A7DAE19EE1B7700872B35 /* SkeletonJson.h */, + B29A7DAF19EE1B7700872B35 /* EventData.h */, + B29A7DB019EE1B7700872B35 /* Bone.c */, + B29A7DB119EE1B7700872B35 /* BoundingBoxAttachment.c */, + B29A7DB219EE1B7700872B35 /* Atlas.h */, + B29A7DB319EE1B7700872B35 /* Event.h */, + B29A7DB419EE1B7700872B35 /* SkeletonJson.c */, + B29A7DB519EE1B7700872B35 /* PolygonBatch.h */, + B29A7DB619EE1B7700872B35 /* BoneData.h */, + B29A7DB719EE1B7700872B35 /* PolygonBatch.cpp */, + B29A7DB819EE1B7700872B35 /* IkConstraint.h */, + B29A7DB919EE1B7700872B35 /* Attachment.c */, + B29A7DBA19EE1B7700872B35 /* spine-cocos2dx.h */, + B29A7DBB19EE1B7700872B35 /* SkeletonData.h */, + B29A7DBC19EE1B7700872B35 /* AtlasAttachmentLoader.h */, + B29A7DBD19EE1B7700872B35 /* Slot.c */, + B29A7DBE19EE1B7700872B35 /* SkeletonAnimation.cpp */, + B29A7DBF19EE1B7700872B35 /* SkinnedMeshAttachment.h */, + B29A7DC019EE1B7700872B35 /* SlotData.h */, + B29A7DC119EE1B7700872B35 /* AnimationStateData.h */, + B29A7DC219EE1B7700872B35 /* AnimationStateData.c */, + B29A7DC319EE1B7700872B35 /* Animation.h */, + B29A7DC419EE1B7700872B35 /* Animation.c */, + B29A7DC519EE1B7700872B35 /* AnimationState.c */, + B29A7DC619EE1B7700872B35 /* AnimationState.h */, ); path = spine; sourceTree = ""; @@ -3955,6 +4198,8 @@ 29CB8F511929D64500C841D6 /* base */ = { isa = PBXGroup; children = ( + 38B8E2DF19E671D2002D7CE7 /* UILayoutComponent.cpp */, + 38B8E2E019E671D2002D7CE7 /* UILayoutComponent.h */, 2958244919873D8E00F9746D /* UIScale9Sprite.cpp */, 2958244A19873D8E00F9746D /* UIScale9Sprite.h */, 29080DEB191B82CE0066F8DF /* UIDeprecated.h */, @@ -4025,6 +4270,76 @@ path = internal; sourceTree = ""; }; + 3828BFD819EB8AAD002AB57B /* protobuf-lite */ = { + isa = PBXGroup; + children = ( + 3828C06719EB8AC9002AB57B /* config.h */, + 3828C06819EB8AC9002AB57B /* extension_set.cc */, + 3828C06919EB8AC9002AB57B /* extension_set.h */, + 3828C06A19EB8AC9002AB57B /* generated_message_util.cc */, + 3828C06B19EB8AC9002AB57B /* generated_message_util.h */, + 3828C06C19EB8AC9002AB57B /* io */, + 3828C07619EB8AC9002AB57B /* message_lite.cc */, + 3828C07719EB8AC9002AB57B /* message_lite.h */, + 3828C07819EB8AC9002AB57B /* repeated_field.cc */, + 3828C07919EB8AC9002AB57B /* repeated_field.h */, + 3828C07A19EB8AC9002AB57B /* stubs */, + 3828C09219EB8ACA002AB57B /* wire_format_lite_inl.h */, + 3828C09319EB8ACA002AB57B /* wire_format_lite.cc */, + 3828C09419EB8ACA002AB57B /* wire_format_lite.h */, + ); + name = "protobuf-lite"; + path = "../external/protobuf-lite"; + sourceTree = ""; + }; + 3828C06C19EB8AC9002AB57B /* io */ = { + isa = PBXGroup; + children = ( + 3828C06D19EB8AC9002AB57B /* coded_stream.cc */, + 3828C06E19EB8AC9002AB57B /* coded_stream.h */, + 3828C06F19EB8AC9002AB57B /* coded_stream_inl.h */, + 3828C07019EB8AC9002AB57B /* zero_copy_stream.cc */, + 3828C07119EB8AC9002AB57B /* zero_copy_stream.h */, + 3828C07219EB8AC9002AB57B /* zero_copy_stream_impl.cc */, + 3828C07319EB8AC9002AB57B /* zero_copy_stream_impl.h */, + 3828C07419EB8AC9002AB57B /* zero_copy_stream_impl_lite.cc */, + 3828C07519EB8AC9002AB57B /* zero_copy_stream_impl_lite.h */, + ); + name = io; + path = src/google/protobuf/io; + sourceTree = ""; + }; + 3828C07A19EB8AC9002AB57B /* stubs */ = { + isa = PBXGroup; + children = ( + 3828C07B19EB8AC9002AB57B /* atomicops.h */, + 3828C07C19EB8ACA002AB57B /* atomicops_internals_arm_gcc.h */, + 3828C07D19EB8ACA002AB57B /* atomicops_internals_arm_qnx.h */, + 3828C07E19EB8ACA002AB57B /* atomicops_internals_atomicword_compat.h */, + 3828C07F19EB8ACA002AB57B /* atomicops_internals_macosx.h */, + 3828C08019EB8ACA002AB57B /* atomicops_internals_mips_gcc.h */, + 3828C08119EB8ACA002AB57B /* atomicops_internals_pnacl.h */, + 3828C08219EB8ACA002AB57B /* atomicops_internals_x86_gcc.cc */, + 3828C08319EB8ACA002AB57B /* atomicops_internals_x86_gcc.h */, + 3828C08419EB8ACA002AB57B /* atomicops_internals_x86_msvc.cc */, + 3828C08519EB8ACA002AB57B /* atomicops_internals_x86_msvc.h */, + 3828C08619EB8ACA002AB57B /* common.cc */, + 3828C08719EB8ACA002AB57B /* common.h */, + 3828C08819EB8ACA002AB57B /* hash.h */, + 3828C08919EB8ACA002AB57B /* map-util.h */, + 3828C08A19EB8ACA002AB57B /* once.cc */, + 3828C08B19EB8ACA002AB57B /* once.h */, + 3828C08C19EB8ACA002AB57B /* platform_macros.h */, + 3828C08D19EB8ACA002AB57B /* stl_util.h */, + 3828C08E19EB8ACA002AB57B /* stringprintf.cc */, + 3828C08F19EB8ACA002AB57B /* stringprintf.h */, + 3828C09019EB8ACA002AB57B /* template_util.h */, + 3828C09119EB8ACA002AB57B /* type_traits.h */, + ); + name = stubs; + path = src/google/protobuf/stubs; + sourceTree = ""; + }; 46A15FD01807A56F005B8026 /* audio */ = { isa = PBXGroup; children = ( @@ -4811,11 +5126,14 @@ 50ABBE9B1925AB6F00A911A9 /* CCRef.h in Headers */, 50ABBE851925AB6F00A911A9 /* ccFPSImages.h in Headers */, 15AE1A5319AAD40300C27E9E /* b2Draw.h in Headers */, + 38B8E2E319E671D2002D7CE7 /* UILayoutComponent.h in Headers */, 5034CA39191D591100CE6051 /* ccShader_PositionColorLengthTexture.frag in Headers */, 292DB14B19B4574100A80320 /* UIEditBoxImpl-mac.h in Headers */, 3EA1073119D7F37700CAB794 /* CCLight.h in Headers */, + B29A7E3F19EE1B7700872B35 /* AnimationState.h in Headers */, 50ABBE891925AB6F00A911A9 /* CCMap.h in Headers */, 50ABBE8D1925AB6F00A911A9 /* CCNS.h in Headers */, + B29A7DFD19EE1B7700872B35 /* IkConstraintData.h in Headers */, 50ABBEA51925AB6F00A911A9 /* CCScriptSupport.h in Headers */, 292DB14519B4574100A80320 /* UIEditBoxImpl-android.h in Headers */, 15AE1B9A19AADFDF00C27E9E /* UIHBox.h in Headers */, @@ -4824,20 +5142,23 @@ 15AE18FC19AAD35000C27E9E /* CCComBase.h in Headers */, 1ABA68B01888D700007D1BB4 /* CCFontCharMap.h in Headers */, 15AE1B5219AADA9900C27E9E /* UIPageView.h in Headers */, + 3828C0A719EB8ACA002AB57B /* zero_copy_stream.h in Headers */, 5091A7A319BFABA800AC8789 /* CCPlatformDefine.h in Headers */, 5034CA3F191D591100CE6051 /* ccShader_Position_uColor.vert in Headers */, + B29A7DD319EE1B7700872B35 /* Skin.h in Headers */, 50ABBD461925AB0000A911A9 /* CCVertex.h in Headers */, 15AE180A19AAD2F700C27E9E /* CCAABB.h in Headers */, 46A170E71807CECA005B8026 /* CCPhysicsBody.h in Headers */, 15AE1A5A19AAD40300C27E9E /* b2StackAllocator.h in Headers */, + B29A7E3119EE1B7700872B35 /* SkinnedMeshAttachment.h in Headers */, 15AE1B6F19AADA9900C27E9E /* GUIDefine.h in Headers */, + 3828C0E519EB8ACA002AB57B /* type_traits.h in Headers */, 15AE1A8119AAD40300C27E9E /* b2FrictionJoint.h in Headers */, 15AE18DD19AAD35000C27E9E /* CocoLoader.h in Headers */, 46A170EB1807CECA005B8026 /* CCPhysicsJoint.h in Headers */, 15AE191E19AAD35000C27E9E /* CCTween.h in Headers */, 15AE184619AAD2F700C27E9E /* CCSprite3DMaterial.h in Headers */, 50ABBD3E1925AB0000A911A9 /* CCGeometry.h in Headers */, - 15AE19CF19AAD3A700C27E9E /* Attachment.h in Headers */, 15AE1A7719AAD40300C27E9E /* b2EdgeAndPolygonContact.h in Headers */, 15AE18F719AAD35000C27E9E /* CCBatchNode.h in Headers */, 15AE181419AAD2F700C27E9E /* CCAnimationCurve.h in Headers */, @@ -4850,19 +5171,21 @@ 46A170E91807CECA005B8026 /* CCPhysicsContact.h in Headers */, 15AE1A2219AAD3D500C27E9E /* Box2D.h in Headers */, 15AE191419AAD35000C27E9E /* CCSGUIReader.h in Headers */, + B29A7E0119EE1B7700872B35 /* extension.h in Headers */, 15AE196D19AAD35700C27E9E /* CCActionTimeline.h in Headers */, 15AE1A6D19AAD40300C27E9E /* b2ChainAndPolygonContact.h in Headers */, 3E2F27A719CFBFE400E7C490 /* AudioEngine.h in Headers */, 15AE183A19AAD2F700C27E9E /* CCRay.h in Headers */, - 15AE19E919AAD3A700C27E9E /* Slot.h in Headers */, B375107B1823AC9F00B3BA6A /* CCPhysicsWorldInfo_chipmunk.h in Headers */, 15AE18A319AAD33D00C27E9E /* CCParticleSystemQuadLoader.h in Headers */, 46A170F01807CECA005B8026 /* CCPhysicsWorld.h in Headers */, 15AE199D19AAD39600C27E9E /* ScrollViewReader.h in Headers */, + DABC9FAB19E7DFA900FA252C /* CCClippingRectangleNode.h in Headers */, 50ABBEC11925AB6F00A911A9 /* CCValue.h in Headers */, - 15AE19EB19AAD3A700C27E9E /* SlotData.h in Headers */, B276EF631988D1D500CD400F /* CCVertexIndexBuffer.h in Headers */, + B29A7DE519EE1B7700872B35 /* SkeletonAnimation.h in Headers */, 50ABBE871925AB6F00A911A9 /* ccMacros.h in Headers */, + 15B3708A19EE414C00ABE682 /* Manifest.h in Headers */, 50ABBE731925AB6F00A911A9 /* CCEventListenerMouse.h in Headers */, 1A570063180BC5A10088DEC7 /* CCAction.h in Headers */, 1A570067180BC5A10088DEC7 /* CCActionCamera.h in Headers */, @@ -4884,6 +5207,7 @@ 15AE182A19AAD2F700C27E9E /* CCMeshSkin.h in Headers */, B276EF5F1988D1D500CD400F /* CCVertexIndexData.h in Headers */, 1A57007F180BC5A10088DEC7 /* CCActionInterval.h in Headers */, + 3828C0DB19EB8ACA002AB57B /* platform_macros.h in Headers */, 15AE1A7F19AAD40300C27E9E /* b2DistanceJoint.h in Headers */, 15AE188719AAD33D00C27E9E /* CCBSequenceProperty.h in Headers */, 1A01C69A18F57BE800EFE3A6 /* CCSet.h in Headers */, @@ -4891,6 +5215,7 @@ 1A570087180BC5A10088DEC7 /* CCActionPageTurn3D.h in Headers */, 50ABBD911925AB4100A911A9 /* CCGLProgramCache.h in Headers */, 50ED2BDA19BE76D300A0AB90 /* UIVideoPlayer.h in Headers */, + 3828C0CD19EB8ACA002AB57B /* atomicops_internals_x86_msvc.h in Headers */, 15AE199919AAD39600C27E9E /* LoadingBarReader.h in Headers */, 15AE1A8F19AAD40300C27E9E /* b2RopeJoint.h in Headers */, 15AE18ED19AAD35000C27E9E /* CCActionObject.h in Headers */, @@ -4899,6 +5224,7 @@ 15AE184819AAD2F700C27E9E /* cocos3d.h in Headers */, 50ABBEC31925AB6F00A911A9 /* CCVector.h in Headers */, 1A57008B180BC5A10088DEC7 /* CCActionProgressTimer.h in Headers */, + 3828C0EB19EB8ACA002AB57B /* wire_format_lite.h in Headers */, 50ABBD8D1925AB4100A911A9 /* CCGLProgram.h in Headers */, 50ABBEA11925AB6F00A911A9 /* CCScheduler.h in Headers */, 15AE1B6219AADA9900C27E9E /* UIButton.h in Headers */, @@ -4912,10 +5238,13 @@ 50ABBD4A1925AB0000A911A9 /* Mat4.h in Headers */, 15AE1A6919AAD40300C27E9E /* b2WorldCallbacks.h in Headers */, 29394CF419B01DBA00D2DE1A /* UIWebViewImpl-ios.h in Headers */, + B29A7E1719EE1B7700872B35 /* Atlas.h in Headers */, 1A57009A180BC5C10088DEC7 /* CCAtlasNode.h in Headers */, 15AE190819AAD35000C27E9E /* CCDatas.h in Headers */, + B29A7E1119EE1B7700872B35 /* EventData.h in Headers */, 1A5700A0180BC5D20088DEC7 /* CCNode.h in Headers */, 50ABC0671926664800A911A9 /* CCPlatformDefine-mac.h in Headers */, + 3828C0C319EB8ACA002AB57B /* atomicops_internals_mips_gcc.h in Headers */, 15AE189A19AAD33D00C27E9E /* CCMenuLoader.h in Headers */, 46C02E0918E91123004B7456 /* xxhash.h in Headers */, 15AE1A6B19AAD40300C27E9E /* b2ChainAndCircleContact.h in Headers */, @@ -4924,18 +5253,24 @@ B37510791823AC9F00B3BA6A /* CCPhysicsShapeInfo_chipmunk.h in Headers */, 1A570114180BC8EE0088DEC7 /* CCDrawNode.h in Headers */, 15AE1A6019AAD40300C27E9E /* b2ContactManager.h in Headers */, + 15B3707A19EE414C00ABE682 /* AssetsManagerEx.h in Headers */, 15AE188319AAD33D00C27E9E /* CCBSelectorResolver.h in Headers */, + B29A7E2719EE1B7700872B35 /* spine-cocos2dx.h in Headers */, 15AE1B5819AADA9900C27E9E /* UISlider.h in Headers */, 1A57011D180BC90D0088DEC7 /* CCGrabber.h in Headers */, + B29A7E2B19EE1B7700872B35 /* AtlasAttachmentLoader.h in Headers */, 50ED2BE219BEAF7900A0AB90 /* UIEditBoxImpl-wp8.h in Headers */, 15AE1B6819AADA9900C27E9E /* UIScale9Sprite.h in Headers */, 1A570121180BC90D0088DEC7 /* CCGrid.h in Headers */, 5034CA2D191D591100CE6051 /* ccShader_PositionTextureA8Color.frag in Headers */, + 3828C0A319EB8ACA002AB57B /* coded_stream_inl.h in Headers */, + B29A7E0F19EE1B7700872B35 /* SkeletonJson.h in Headers */, + B29A7E2919EE1B7700872B35 /* SkeletonData.h in Headers */, 1AC0269C1914068200FA920D /* ConvertUTF.h in Headers */, 15AE1A7119AAD40300C27E9E /* b2Contact.h in Headers */, 50ABBED11925AB6F00A911A9 /* TGAlib.h in Headers */, - 15AE19D319AAD3A700C27E9E /* Bone.h in Headers */, 1A57019F180BCB590088DEC7 /* CCFont.h in Headers */, + DA8C62A419E52C6400000516 /* ioapi_mem.h in Headers */, 1A5701A3180BCB590088DEC7 /* CCFontAtlas.h in Headers */, 15AE18E919AAD35000C27E9E /* CCActionManagerEx.h in Headers */, 1A01C68618F57BE800EFE3A6 /* CCArray.h in Headers */, @@ -4949,6 +5284,7 @@ 15AE18A119AAD33D00C27E9E /* CCNodeLoaderListener.h in Headers */, 5034CA47191D591100CE6051 /* ccShader_Label_normal.frag in Headers */, 15AE182219AAD2F700C27E9E /* CCBundleReader.h in Headers */, + 3828C0E319EB8ACA002AB57B /* template_util.h in Headers */, 15AE18A519AAD33D00C27E9E /* CCScale9SpriteLoader.h in Headers */, 50ED2BE019BEAF7900A0AB90 /* UIEditBoxImpl-win32.h in Headers */, 15AE197119AAD35700C27E9E /* CCFrame.h in Headers */, @@ -4961,7 +5297,6 @@ 15AE182619AAD2F700C27E9E /* CCMesh.h in Headers */, 15AE192019AAD35000C27E9E /* CCUtilMath.h in Headers */, 15AE1BC119AADFFB00C27E9E /* cocos-ext.h in Headers */, - 15AE19D519AAD3A700C27E9E /* BoneData.h in Headers */, 1A5701BF180BCB5A0088DEC7 /* CCLabelAtlas.h in Headers */, 50ABBED91925AB6F00A911A9 /* ZipUtils.h in Headers */, 50643BDB19BFAF4400EF68ED /* CCStdC.h in Headers */, @@ -4971,33 +5306,38 @@ 1A5701C9180BCB5A0088DEC7 /* CCLabelTextFormatter.h in Headers */, 5034CA37191D591100CE6051 /* ccShader_PositionColorLengthTexture.vert in Headers */, 15AE1B6419AADA9900C27E9E /* UICheckBox.h in Headers */, + 3828C0AB19EB8ACA002AB57B /* zero_copy_stream_impl.h in Headers */, 1A5701CD180BCB5A0088DEC7 /* CCLabelTTF.h in Headers */, 15AE1A3319AAD3D500C27E9E /* b2CircleShape.h in Headers */, 1A5701E0180BCB8C0088DEC7 /* CCLayer.h in Headers */, 1A5701E4180BCB8C0088DEC7 /* CCScene.h in Headers */, 15AE1BDD19AAE01E00C27E9E /* CCControlUtils.h in Headers */, 15AE198D19AAD36E00C27E9E /* CheckBoxReader.h in Headers */, + B29A7E0919EE1B7700872B35 /* AttachmentLoader.h in Headers */, 1A01C68818F57BE800EFE3A6 /* CCBool.h in Headers */, + B29A7E3319EE1B7700872B35 /* SlotData.h in Headers */, 15AE18E519AAD35000C27E9E /* CCActionFrame.h in Headers */, 50ABBEAD1925AB6F00A911A9 /* ccTypes.h in Headers */, 1A087AEA1860400400196EF5 /* edtaa3func.h in Headers */, 15AE181C19AAD2F700C27E9E /* CCBundle3D.h in Headers */, + 3828C0E119EB8ACA002AB57B /* stringprintf.h in Headers */, 15AE189919AAD33D00C27E9E /* CCMenuItemLoader.h in Headers */, 15AE1B5E19AADA9900C27E9E /* UITextBMFont.h in Headers */, 15AE18E719AAD35000C27E9E /* CCActionFrameEasing.h in Headers */, 1A5701E8180BCB8C0088DEC7 /* CCTransition.h in Headers */, 1A5701EC180BCB8C0088DEC7 /* CCTransitionPageTurn.h in Headers */, 15AE196F19AAD35700C27E9E /* CCActionTimelineCache.h in Headers */, - 15AE19DB19AAD3A700C27E9E /* extension.h in Headers */, 1A5701F0180BCB8C0088DEC7 /* CCTransitionProgress.h in Headers */, 1A5701F9180BCBAD0088DEC7 /* CCMenu.h in Headers */, 50ABBD401925AB0000A911A9 /* CCMath.h in Headers */, + B29A7E1F19EE1B7700872B35 /* BoneData.h in Headers */, 15AE1A9319AAD40300C27E9E /* b2WheelJoint.h in Headers */, 15AE1A3119AAD3D500C27E9E /* b2ChainShape.h in Headers */, 1A5701FD180BCBAD0088DEC7 /* CCMenuItem.h in Headers */, 1A570204180BCBD40088DEC7 /* CCClippingNode.h in Headers */, 15AE1A7B19AAD40300C27E9E /* b2PolygonContact.h in Headers */, 15AE1A2919AAD3D500C27E9E /* b2Collision.h in Headers */, + 38B8E2D719E66581002D7CE7 /* CSLoader.h in Headers */, 50643BE419BFCF1800EF68ED /* CCPlatformMacros.h in Headers */, 15AE184219AAD2F700C27E9E /* CCSprite3D.h in Headers */, 15AE18A019AAD33D00C27E9E /* CCNodeLoaderLibrary.h in Headers */, @@ -5005,25 +5345,28 @@ 1A57020A180BCBDF0088DEC7 /* CCMotionStreak.h in Headers */, 1A570212180BCBF40088DEC7 /* CCProgressTimer.h in Headers */, 1A570216180BCBF40088DEC7 /* CCRenderTexture.h in Headers */, - 15AE19D719AAD3A700C27E9E /* CCSkeleton.h in Headers */, 1A01C69618F57BE800EFE3A6 /* CCInteger.h in Headers */, 15AE1B6919AADA9900C27E9E /* UIDeprecated.h in Headers */, 1A570223180BCC1A0088DEC7 /* CCParticleBatchNode.h in Headers */, 15AE1A8319AAD40300C27E9E /* b2GearJoint.h in Headers */, 15AE1BD519AAE01E00C27E9E /* CCControlSaturationBrightnessPicker.h in Headers */, 15AE186919AAD31D00C27E9E /* CocosDenshion.h in Headers */, + B29A7DE719EE1B7700872B35 /* spine.h in Headers */, + 3828C0D319EB8ACA002AB57B /* hash.h in Headers */, 50ABBD891925AB4100A911A9 /* CCCustomCommand.h in Headers */, 15AE1A8719AAD40300C27E9E /* b2MouseJoint.h in Headers */, 5034CA43191D591100CE6051 /* ccShader_Label.vert in Headers */, + 3828C0A119EB8ACA002AB57B /* coded_stream.h in Headers */, 15AE189719AAD33D00C27E9E /* CCMenuItemImageLoader.h in Headers */, 15AE189319AAD33D00C27E9E /* CCLayerGradientLoader.h in Headers */, + B29A7DF919EE1B7700872B35 /* Json.h in Headers */, 15AE18EF19AAD35000C27E9E /* CCArmature.h in Headers */, 15AE19A719AAD39600C27E9E /* TextReader.h in Headers */, 1A570227180BCC1A0088DEC7 /* CCParticleExamples.h in Headers */, 1A57022B180BCC1A0088DEC7 /* CCParticleSystem.h in Headers */, 15AE190E19AAD35000C27E9E /* CCDisplayManager.h in Headers */, 15AE1A6719AAD40300C27E9E /* b2World.h in Headers */, - 15AE19D119AAD3A700C27E9E /* AttachmentLoader.h in Headers */, + 3828C0B919EB8ACA002AB57B /* atomicops.h in Headers */, 15AE199B19AAD39600C27E9E /* PageViewReader.h in Headers */, 15AE1A6219AAD40300C27E9E /* b2Fixture.h in Headers */, 15AE191C19AAD35000C27E9E /* CCTransformHelp.h in Headers */, @@ -5037,9 +5380,14 @@ 15AE18F119AAD35000C27E9E /* CCArmatureAnimation.h in Headers */, 1A57022F180BCC1A0088DEC7 /* CCParticleSystemQuad.h in Headers */, 15AE188519AAD33D00C27E9E /* CCBSequence.h in Headers */, + 3828C0C519EB8ACA002AB57B /* atomicops_internals_pnacl.h in Headers */, + 3828C0D519EB8ACA002AB57B /* map-util.h in Headers */, 50643BE219BFCF1800EF68ED /* CCPlatformConfig.h in Headers */, + B29A7DF519EE1B7700872B35 /* Skeleton.h in Headers */, + 3828C0D119EB8ACA002AB57B /* common.h in Headers */, 5034CA49191D591100CE6051 /* ccShader_Label_df.frag in Headers */, 292DB14119B4574100A80320 /* UIEditBoxImpl.h in Headers */, + B29A7DD919EE1B7700872B35 /* SkeletonRenderer.h in Headers */, 50CB247919D9C5A100687767 /* AudioEngine-inl.h in Headers */, 1A01C68C18F57BE800EFE3A6 /* CCDeprecated.h in Headers */, 50ABBD561925AB0000A911A9 /* TransformUtils.h in Headers */, @@ -5047,7 +5395,6 @@ 50ABBD991925AB4100A911A9 /* CCGLProgramStateCache.h in Headers */, 5034CA3D191D591100CE6051 /* ccShader_PositionColor.frag in Headers */, 15AE18FB19AAD35000C27E9E /* CCColliderDetector.h in Headers */, - 15AE19E119AAD3A700C27E9E /* Skeleton.h in Headers */, 1A570280180BCC900088DEC7 /* CCSprite.h in Headers */, 292DB14719B4574100A80320 /* UIEditBoxImpl-ios.h in Headers */, 15AE1A9119AAD40300C27E9E /* b2WeldJoint.h in Headers */, @@ -5062,18 +5409,21 @@ 5027253A190BF1B900AAF4ED /* cocos2d.h in Headers */, 15AE1B5A19AADA9900C27E9E /* UIText.h in Headers */, 15AE184A19AAD30500C27E9E /* Export.h in Headers */, - 15AE19E719AAD3A700C27E9E /* Skin.h in Headers */, 15AE1BA019AADFDF00C27E9E /* UILayout.h in Headers */, 1A570294180BCCAB0088DEC7 /* CCAnimation.h in Headers */, 50ABBD421925AB0000A911A9 /* CCMathBase.h in Headers */, + 3828C0BB19EB8ACA002AB57B /* atomicops_internals_arm_gcc.h in Headers */, 1A570298180BCCAB0088DEC7 /* CCAnimationCache.h in Headers */, 50ABC05D1926664800A911A9 /* CCApplication-mac.h in Headers */, 15AE190019AAD35000C27E9E /* CCComAudio.h in Headers */, 15AE190419AAD35000C27E9E /* CCComRender.h in Headers */, + 3828C09519EB8ACA002AB57B /* config.h in Headers */, + B29A7E1919EE1B7700872B35 /* Event.h in Headers */, 15AE18AA19AAD33D00C27E9E /* CocosBuilder.h in Headers */, 50ABC0071926664800A911A9 /* CCApplicationProtocol.h in Headers */, 15AE1A7919AAD40300C27E9E /* b2PolygonAndCircleContact.h in Headers */, 15AE199719AAD39600C27E9E /* ListViewReader.h in Headers */, + B29A7E1D19EE1B7700872B35 /* PolygonBatch.h in Headers */, 50ABBD4E1925AB0000A911A9 /* MathUtil.h in Headers */, 15AE1A7319AAD40300C27E9E /* b2ContactSolver.h in Headers */, 15AE1BC219AADFFB00C27E9E /* ExtensionMacros.h in Headers */, @@ -5083,11 +5433,10 @@ 15AE181819AAD2F700C27E9E /* CCAttachNode.h in Headers */, 1A12775B18DFCC540005F345 /* CCTweenFunction.h in Headers */, 1A5702CA180BCE370088DEC7 /* CCTextFieldTTF.h in Headers */, - 15AE19E519AAD3A700C27E9E /* SkeletonJson.h in Headers */, + 3828C0B319EB8ACA002AB57B /* message_lite.h in Headers */, 15EFA213198A2BB5000C57D3 /* CCProtectedNode.h in Headers */, 1A5702EC180BCE750088DEC7 /* CCTileMapAtlas.h in Headers */, 15AE18E019AAD35000C27E9E /* TriggerBase.h in Headers */, - 15AE19D919AAD3A700C27E9E /* CCSkeletonAnimation.h in Headers */, 15AE187D19AAD33D00C27E9E /* CCBFileLoader.h in Headers */, 15AE181219AAD2F700C27E9E /* CCAnimation3D.h in Headers */, 1A5702F0180BCE750088DEC7 /* CCTMXLayer.h in Headers */, @@ -5099,6 +5448,7 @@ 1A5702F8180BCE750088DEC7 /* CCTMXTiledMap.h in Headers */, 5034CA21191D591100CE6051 /* ccShader_PositionTextureColorAlphaTest.frag in Headers */, 15AE1A2419AAD3D500C27E9E /* b2BroadPhase.h in Headers */, + B29A7E3919EE1B7700872B35 /* Animation.h in Headers */, 15AE191019AAD35000C27E9E /* CCInputDelegate.h in Headers */, 15AE184C19AAD30800C27E9E /* SimpleAudioEngine.h in Headers */, 50ABBDA11925AB4100A911A9 /* CCGroupCommand.h in Headers */, @@ -5115,9 +5465,9 @@ 50ABBE4B1925AB6F00A911A9 /* CCEventAcceleration.h in Headers */, 1A57030E180BCF190088DEC7 /* CCComponent.h in Headers */, 1A570312180BCF190088DEC7 /* CCComponentContainer.h in Headers */, - 15AE19BD19AAD3A700C27E9E /* SkeletonBounds.h in Headers */, 15AE1B7119AADA9900C27E9E /* CocosGUI.h in Headers */, 15AE1A2D19AAD3D500C27E9E /* b2DynamicTree.h in Headers */, + 3828C09D19EB8ACA002AB57B /* generated_message_util.h in Headers */, 50ABBD851925AB4100A911A9 /* CCBatchCommand.h in Headers */, 15AE1A6F19AAD40300C27E9E /* b2CircleContact.h in Headers */, 15AE191619AAD35000C27E9E /* CCSkin.h in Headers */, @@ -5126,8 +5476,8 @@ 15AE190C19AAD35000C27E9E /* CCDisplayFactory.h in Headers */, B37510751823AC9F00B3BA6A /* CCPhysicsHelper_chipmunk.h in Headers */, 15AE1A8B19AAD40300C27E9E /* b2PulleyJoint.h in Headers */, + 38B8E2D119E65F4C002D7CE7 /* CSParseBinary.pb.h in Headers */, 15AE1A5119AAD40300C27E9E /* b2BlockAllocator.h in Headers */, - 15AE19C719AAD3A700C27E9E /* AnimationState.h in Headers */, 15AE199119AAD37200C27E9E /* ImageViewReader.h in Headers */, 15AE18FE19AAD35000C27E9E /* CCComAttribute.h in Headers */, 50ABBD621925AB0000A911A9 /* Vec4.h in Headers */, @@ -5138,8 +5488,6 @@ 15AE18F519AAD35000C27E9E /* CCArmatureDefine.h in Headers */, 15AE188219AAD33D00C27E9E /* CCBReader.h in Headers */, 1A570356180BD0B00088DEC7 /* ioapi.h in Headers */, - 15AE19C319AAD3A700C27E9E /* BoundingBoxAttachment.h in Headers */, - 15AE19C919AAD3A700C27E9E /* AnimationStateData.h in Headers */, 15AE191819AAD35000C27E9E /* CCSpriteFrameCacheHelper.h in Headers */, 15AE1BA219AADFDF00C27E9E /* UILayoutParameter.h in Headers */, 50ABBE331925AB6F00A911A9 /* CCConfiguration.h in Headers */, @@ -5150,9 +5498,13 @@ 50ABC01F1926664800A911A9 /* CCThread.h in Headers */, 1A57035A180BD0B00088DEC7 /* unzip.h in Headers */, 15AE188B19AAD33D00C27E9E /* CCControlLoader.h in Headers */, + B29A7DF719EE1B7700872B35 /* Attachment.h in Headers */, 15AE1BCA19AAE01E00C27E9E /* CCControl.h in Headers */, 50ABBDBF1925AB4100A911A9 /* CCTextureCache.h in Headers */, + B29A7E0D19EE1B7700872B35 /* Bone.h in Headers */, 15AE186719AAD31D00C27E9E /* CDXMacOSXSupport.h in Headers */, + B29A7DCD19EE1B7700872B35 /* Slot.h in Headers */, + 3828C0BF19EB8ACA002AB57B /* atomicops_internals_atomicword_compat.h in Headers */, B37510741823AC9F00B3BA6A /* CCPhysicsContactInfo_chipmunk.h in Headers */, 5034CA35191D591100CE6051 /* ccShader_PositionTexture.frag in Headers */, 15AE1BB219AADFEF00C27E9E /* HttpClient.h in Headers */, @@ -5179,9 +5531,10 @@ 15AE1B9E19AADFDF00C27E9E /* UIVBox.h in Headers */, 15AE192319AAD35000C27E9E /* DictionaryHelper.h in Headers */, B257B4501989D5E800D9A687 /* CCPrimitive.h in Headers */, + B29A7DCF19EE1B7700872B35 /* RegionAttachment.h in Headers */, + 15B3707E19EE414C00ABE682 /* CCEventAssetsManagerEx.h in Headers */, 50ABBE6B1925AB6F00A911A9 /* CCEventListenerFocus.h in Headers */, 50ABBDA51925AB4100A911A9 /* CCQuadCommand.h in Headers */, - 15AE197319AAD35700C27E9E /* CCNodeReader.h in Headers */, 15AE1BCF19AAE01E00C27E9E /* CCControlExtensions.h in Headers */, 15AE1A3519AAD3D500C27E9E /* b2EdgeShape.h in Headers */, 50643BD919BFAF4400EF68ED /* CCApplication.h in Headers */, @@ -5190,7 +5543,9 @@ 15AE1A8919AAD40300C27E9E /* b2PrismaticJoint.h in Headers */, 50ABBD3A1925AB0000A911A9 /* CCAffineTransform.h in Headers */, 15AE186C19AAD31D00C27E9E /* SimpleAudioEngine_objc.h in Headers */, + B29A7E2319EE1B7700872B35 /* IkConstraint.h in Headers */, 15AE1BB319AADFEF00C27E9E /* HttpRequest.h in Headers */, + 3828C0C119EB8ACA002AB57B /* atomicops_internals_macosx.h in Headers */, 50ABBE571925AB6F00A911A9 /* CCEventFocus.h in Headers */, 1A01C69218F57BE800EFE3A6 /* CCDouble.h in Headers */, 15AE18F919AAD35000C27E9E /* CCBone.h in Headers */, @@ -5210,58 +5565,61 @@ 15AE19A119AAD39600C27E9E /* TextAtlasReader.h in Headers */, 50ABC0231926664800A911A9 /* CCGLViewImpl-desktop.h in Headers */, 15AE188D19AAD33D00C27E9E /* CCLabelBMFontLoader.h in Headers */, + 3828C0DD19EB8ACA002AB57B /* stl_util.h in Headers */, 15AE1B5019AADA9900C27E9E /* UILoadingBar.h in Headers */, 50ABBFFD1926664800A911A9 /* CCFileUtils-apple.h in Headers */, + 15B3708219EE414C00ABE682 /* CCEventListenerAssetsManagerEx.h in Headers */, + 15B3708619EE414C00ABE682 /* Downloader.h in Headers */, 5034CA41191D591100CE6051 /* ccShader_Position_uColor.frag in Headers */, 50ABBE7F1925AB6F00A911A9 /* CCEventTouch.h in Headers */, 50ABBE5B1925AB6F00A911A9 /* CCEventKeyboard.h in Headers */, 1A01C69E18F57BE800EFE3A6 /* CCString.h in Headers */, 50ABC00F1926664800A911A9 /* CCFileUtils.h in Headers */, + 3828C0B719EB8ACA002AB57B /* repeated_field.h in Headers */, 15AE1A3719AAD3D500C27E9E /* b2PolygonShape.h in Headers */, 15AE1B5419AADA9900C27E9E /* UIRichText.h in Headers */, 50ABBE3B1925AB6F00A911A9 /* CCData.h in Headers */, - 15AE19DF19AAD3A700C27E9E /* RegionAttachment.h in Headers */, 50ABBE3F1925AB6F00A911A9 /* CCDataVisitor.h in Headers */, 15AE199F19AAD39600C27E9E /* SliderReader.h in Headers */, 50ABBD9D1925AB4100A911A9 /* ccGLStateCache.h in Headers */, + B29A7E0319EE1B7700872B35 /* BoundingBoxAttachment.h in Headers */, 50ABBEB91925AB6F00A911A9 /* ccUTF8.h in Headers */, - 15AE19DD19AAD3A700C27E9E /* Json.h in Headers */, 15AE191A19AAD35000C27E9E /* CCSSceneReader.h in Headers */, 292DB13F19B4574100A80320 /* UIEditBox.h in Headers */, 50ABBE671925AB6F00A911A9 /* CCEventListenerCustom.h in Headers */, + 3828C0D919EB8ACA002AB57B /* once.h in Headers */, 15AE18E219AAD35000C27E9E /* TriggerMng.h in Headers */, - 15AE19ED19AAD3A700C27E9E /* spine-cocos2dx.h in Headers */, 50ABBE2F1925AB6F00A911A9 /* ccConfig.h in Headers */, 15AE188019AAD33D00C27E9E /* CCBMemberVariableAssigner.h in Headers */, + 3828C09919EB8ACA002AB57B /* extension_set.h in Headers */, 1AAF5851180E40B9000584C8 /* LocalStorage.h in Headers */, - 15AE19CB19AAD3A700C27E9E /* Atlas.h in Headers */, + 3828C0BD19EB8ACA002AB57B /* atomicops_internals_arm_qnx.h in Headers */, 1A01C69018F57BE800EFE3A6 /* CCDictionary.h in Headers */, 1A9DCA29180E6955007A3AD4 /* CCGLBufferedNode.h in Headers */, - 15AE19C519AAD3A700C27E9E /* Animation.h in Headers */, 50ABC0031926664800A911A9 /* CCLock-apple.h in Headers */, B37510721823AC9F00B3BA6A /* CCPhysicsBodyInfo_chipmunk.h in Headers */, 50ABBE2D1925AB6F00A911A9 /* ccCArray.h in Headers */, 50ABBD5E1925AB0000A911A9 /* Vec3.h in Headers */, 15AE188919AAD33D00C27E9E /* CCControlButtonLoader.h in Headers */, - 15AE19EE19AAD3A700C27E9E /* spine.h in Headers */, 15AE189119AAD33D00C27E9E /* CCLayerColorLoader.h in Headers */, - 15AE19C119AAD3A700C27E9E /* EventData.h in Headers */, 50ABBE211925AB6F00A911A9 /* atitc.h in Headers */, 15AE19A519AAD39600C27E9E /* TextFieldReader.h in Headers */, B24AA98B195A675C007B4522 /* CCFastTMXTiledMap.h in Headers */, B29594B61926D5EC003EEF37 /* CCMeshCommand.h in Headers */, - 15AE19E319AAD3A700C27E9E /* SkeletonData.h in Headers */, 50ABBE371925AB6F00A911A9 /* CCConsole.h in Headers */, + 3828C0E719EB8ACA002AB57B /* wire_format_lite_inl.h in Headers */, 50ABC00B1926664800A911A9 /* CCDevice.h in Headers */, 50ABC0131926664800A911A9 /* CCGLView.h in Headers */, 15AE189C19AAD33D00C27E9E /* CCNode+CCBRelativePositioning.h in Headers */, + 3828C0C919EB8ACA002AB57B /* atomicops_internals_x86_gcc.h in Headers */, 15AE190A19AAD35000C27E9E /* CCDecorativeDisplay.h in Headers */, 50ABBDB31925AB4100A911A9 /* ccShaders.h in Headers */, 50ABBDAB1925AB4100A911A9 /* CCRenderCommandPool.h in Headers */, 5034CA45191D591100CE6051 /* ccShader_Label_outline.frag in Headers */, 50ABBEB11925AB6F00A911A9 /* CCUserDefault.h in Headers */, - 15AE19CD19AAD3A700C27E9E /* AtlasAttachmentLoader.h in Headers */, + B29A7DEF19EE1B7700872B35 /* SkeletonBounds.h in Headers */, 50ABBEC71925AB6F00A911A9 /* etc1.h in Headers */, + B29A7E3519EE1B7700872B35 /* AnimationStateData.h in Headers */, 15AE1BC619AAE00000C27E9E /* AssetsManager.h in Headers */, 50ABBEA91925AB6F00A911A9 /* CCTouch.h in Headers */, 15AE1A5E19AAD40300C27E9E /* b2Body.h in Headers */, @@ -5280,9 +5638,10 @@ 50ABBDA91925AB4100A911A9 /* CCRenderCommand.h in Headers */, 50ABBD951925AB4100A911A9 /* CCGLProgramState.h in Headers */, 50ABC0091926664800A911A9 /* CCCommon.h in Headers */, - 15AE19BF19AAD3A700C27E9E /* Event.h in Headers */, 50ABBE531925AB6F00A911A9 /* CCEventDispatcher.h in Headers */, + B29A7DEB19EE1B7700872B35 /* MeshAttachment.h in Headers */, 464AD6E7197EBB1400E502D8 /* pvr.h in Headers */, + 3828C0AF19EB8ACA002AB57B /* zero_copy_stream_impl_lite.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5290,44 +5649,51 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 15AE197E19AAD35700C27E9E /* CCNodeReader.h in Headers */, 503DD8F01926736A00CD74DD /* CCStdC-ios.h in Headers */, 15AE1A9A19AAD40300C27E9E /* b2Math.h in Headers */, 46A170FF1807CECB005B8026 /* CCPhysicsContact.h in Headers */, + B29A7E1A19EE1B7700872B35 /* Event.h in Headers */, 15AE1AC719AAD40300C27E9E /* b2GearJoint.h in Headers */, 50ABBDA21925AB4100A911A9 /* CCGroupCommand.h in Headers */, - 15AE1A1C19AAD3A700C27E9E /* Slot.h in Headers */, 15AE18C219AAD33D00C27E9E /* CCLayerColorLoader.h in Headers */, 50643BDA19BFAF4400EF68ED /* CCApplication.h in Headers */, 15AE181519AAD2F700C27E9E /* CCAnimationCurve.h in Headers */, 503DD8EF1926736A00CD74DD /* CCPlatformDefine-ios.h in Headers */, - 15AE19F219AAD3A700C27E9E /* Event.h in Headers */, + 3828C0C019EB8ACA002AB57B /* atomicops_internals_atomicword_compat.h in Headers */, 15AE196919AAD35100C27E9E /* CocoStudio.h in Headers */, 46A171041807CECB005B8026 /* CCPhysicsShape.h in Headers */, 15AE183319AAD2F700C27E9E /* CCOBB.h in Headers */, 15AE18B119AAD33D00C27E9E /* CCBMemberVariableAssigner.h in Headers */, 292DB14019B4574100A80320 /* UIEditBox.h in Headers */, 50ABBD3B1925AB0000A911A9 /* CCAffineTransform.h in Headers */, - 15AE1A0A19AAD3A700C27E9E /* CCSkeleton.h in Headers */, 5034CA38191D591100CE6051 /* ccShader_PositionColorLengthTexture.vert in Headers */, 15AE1B8119AADA9A00C27E9E /* UITextAtlas.h in Headers */, + B29A7E3A19EE1B7700872B35 /* Animation.h in Headers */, + 15B3708319EE414C00ABE682 /* CCEventListenerAssetsManagerEx.h in Headers */, 50ABBE7C1925AB6F00A911A9 /* CCEventMouse.h in Headers */, + B29A7E2C19EE1B7700872B35 /* AtlasAttachmentLoader.h in Headers */, 46A171011807CECB005B8026 /* CCPhysicsJoint.h in Headers */, + B29A7E3219EE1B7700872B35 /* SkinnedMeshAttachment.h in Headers */, 46A170FD1807CECB005B8026 /* CCPhysicsBody.h in Headers */, 50ABBE9C1925AB6F00A911A9 /* CCRef.h in Headers */, + B29A7E2819EE1B7700872B35 /* spine-cocos2dx.h in Headers */, 292DB16219B461CA00A80320 /* ExtensionDeprecated.h in Headers */, 50ABBD961925AB4100A911A9 /* CCGLProgramState.h in Headers */, 46A171061807CECB005B8026 /* CCPhysicsWorld.h in Headers */, + 3828C0CA19EB8ACA002AB57B /* atomicops_internals_x86_gcc.h in Headers */, 50ABBDB41925AB4100A911A9 /* ccShaders.h in Headers */, 15AE19B319AAD39700C27E9E /* SliderReader.h in Headers */, 15AE1B7919AADA9A00C27E9E /* UIRichText.h in Headers */, 15AE1A4A19AAD3D500C27E9E /* b2CircleShape.h in Headers */, 50ABBE861925AB6F00A911A9 /* ccFPSImages.h in Headers */, + 15B3708719EE414C00ABE682 /* Downloader.h in Headers */, 15AE192619AAD35100C27E9E /* TriggerObj.h in Headers */, 50ABBE2E1925AB6F00A911A9 /* ccCArray.h in Headers */, 15AE1A0C19AAD3A700C27E9E /* CCSkeletonAnimation.h in Headers */, + 15B3707B19EE414C00ABE682 /* AssetsManagerEx.h in Headers */, 15AE1B9119AADA9A00C27E9E /* UIWidget.h in Headers */, 50ABC0041926664800A911A9 /* CCLock-apple.h in Headers */, + B29A7DFE19EE1B7700872B35 /* IkConstraintData.h in Headers */, 15AE1A4019AAD3D500C27E9E /* b2Collision.h in Headers */, 5034CA40191D591100CE6051 /* ccShader_Position_uColor.vert in Headers */, 15AE184719AAD2F700C27E9E /* CCSprite3DMaterial.h in Headers */, @@ -5343,7 +5709,6 @@ 50643BE319BFCF1800EF68ED /* CCPlatformConfig.h in Headers */, 15AE181F19AAD2F700C27E9E /* CCBundle3DData.h in Headers */, 15AE193119AAD35100C27E9E /* CCActionManagerEx.h in Headers */, - 15AE1A0E19AAD3A700C27E9E /* extension.h in Headers */, 15AE185B19AAD31200C27E9E /* CDOpenALSupport.h in Headers */, 50ABBE401925AB6F00A911A9 /* CCDataVisitor.h in Headers */, 15AE19B719AAD39700C27E9E /* TextBMFontReader.h in Headers */, @@ -5355,50 +5720,61 @@ 15AE1ACD19AAD40300C27E9E /* b2PrismaticJoint.h in Headers */, 50ABBEBA1925AB6F00A911A9 /* ccUTF8.h in Headers */, 50643BD619BFAEDA00EF68ED /* CCPlatformDefine.h in Headers */, - 15AE1A1219AAD3A700C27E9E /* RegionAttachment.h in Headers */, + 3828C0B419EB8ACA002AB57B /* message_lite.h in Headers */, 1A570068180BC5A10088DEC7 /* CCActionCamera.h in Headers */, + B29A7E1E19EE1B7700872B35 /* PolygonBatch.h in Headers */, + 3828C0BA19EB8ACA002AB57B /* atomicops.h in Headers */, 15AE18BC19AAD33D00C27E9E /* CCControlLoader.h in Headers */, 15AE18C019AAD33D00C27E9E /* CCLabelTTFLoader.h in Headers */, 1A57006C180BC5A10088DEC7 /* CCActionCatmullRom.h in Headers */, 15AE195C19AAD35100C27E9E /* CCSGUIReader.h in Headers */, 5034CA3A191D591100CE6051 /* ccShader_PositionColorLengthTexture.frag in Headers */, + DABC9FAC19E7DFA900FA252C /* CCClippingRectangleNode.h in Headers */, 50ABBEC41925AB6F00A911A9 /* CCVector.h in Headers */, 50ABBE501925AB6F00A911A9 /* CCEventCustom.h in Headers */, 15AE1AD719AAD40300C27E9E /* b2WheelJoint.h in Headers */, 1A570070180BC5A10088DEC7 /* CCActionEase.h in Headers */, + 3828C09A19EB8ACA002AB57B /* extension_set.h in Headers */, 1A570074180BC5A10088DEC7 /* CCActionGrid.h in Headers */, 15AE194A19AAD35100C27E9E /* CCComController.h in Headers */, + 3828C0A219EB8ACA002AB57B /* coded_stream.h in Headers */, B37510841823ACA100B3BA6A /* CCPhysicsShapeInfo_chipmunk.h in Headers */, 5034CA46191D591100CE6051 /* ccShader_Label_outline.frag in Headers */, 1A570078180BC5A10088DEC7 /* CCActionGrid3D.h in Headers */, 50ABBD631925AB0000A911A9 /* Vec4.h in Headers */, 15AE19AF19AAD39700C27E9E /* PageViewReader.h in Headers */, + B29A7DD419EE1B7700872B35 /* Skin.h in Headers */, + B29A7E2419EE1B7700872B35 /* IkConstraint.h in Headers */, 1A01C68918F57BE800EFE3A6 /* CCBool.h in Headers */, 15AE184319AAD2F700C27E9E /* CCSprite3D.h in Headers */, 50CB247E19D9C5A100687767 /* AudioPlayer.h in Headers */, + 3828C0DA19EB8ACA002AB57B /* once.h in Headers */, 1A57007C180BC5A10088DEC7 /* CCActionInstant.h in Headers */, 3E6176751960F89B00DE83F5 /* CCEventController.h in Headers */, 15AE18CD19AAD33D00C27E9E /* CCNode+CCBRelativePositioning.h in Headers */, - 15AE1A0219AAD3A700C27E9E /* Attachment.h in Headers */, + 3828C0D619EB8ACA002AB57B /* map-util.h in Headers */, 50ABBE781925AB6F00A911A9 /* CCEventListenerTouch.h in Headers */, B37510861823ACA100B3BA6A /* CCPhysicsWorldInfo_chipmunk.h in Headers */, 15AE1BC019AADFF000C27E9E /* WebSocket.h in Headers */, + 3828C0DE19EB8ACA002AB57B /* stl_util.h in Headers */, 1A570080180BC5A10088DEC7 /* CCActionInterval.h in Headers */, 15AE192D19AAD35100C27E9E /* CCActionFrame.h in Headers */, 15AE192F19AAD35100C27E9E /* CCActionFrameEasing.h in Headers */, + 3828C0A819EB8ACA002AB57B /* zero_copy_stream.h in Headers */, 1A570084180BC5A10088DEC7 /* CCActionManager.h in Headers */, 15AE18C619AAD33D00C27E9E /* CCLayerLoader.h in Headers */, 50ABC0141926664800A911A9 /* CCGLView.h in Headers */, 1A570088180BC5A10088DEC7 /* CCActionPageTurn3D.h in Headers */, + 3828C0DC19EB8ACA002AB57B /* platform_macros.h in Headers */, 15AE1B9319AADA9A00C27E9E /* UIHelper.h in Headers */, 50ABBD9E1925AB4100A911A9 /* ccGLStateCache.h in Headers */, 15AE1B9619AADA9A00C27E9E /* CocosGUI.h in Headers */, 1A57008C180BC5A10088DEC7 /* CCActionProgressTimer.h in Headers */, 1A570090180BC5A10088DEC7 /* CCActionTiledGrid.h in Headers */, + DA8C62A519E52C6400000516 /* ioapi_mem.h in Headers */, 1A570094180BC5A10088DEC7 /* CCActionTween.h in Headers */, 1A57009B180BC5C10088DEC7 /* CCAtlasNode.h in Headers */, 15AE184919AAD2F700C27E9E /* cocos3d.h in Headers */, - 15AE19F819AAD3A700C27E9E /* Animation.h in Headers */, 1A5700A1180BC5D20088DEC7 /* CCNode.h in Headers */, 15AE181919AAD2F700C27E9E /* CCAttachNode.h in Headers */, 292DB14C19B4574100A80320 /* UIEditBoxImpl-mac.h in Headers */, @@ -5406,10 +5782,12 @@ 15AE18B819AAD33D00C27E9E /* CCBSequenceProperty.h in Headers */, 503DD8E41926736A00CD74DD /* CCDirectorCaller-ios.h in Headers */, 15AE198119AAD35700C27E9E /* CCTimelineMacro.h in Headers */, + B29A7E0219EE1B7700872B35 /* extension.h in Headers */, 15AE1B7719AADA9A00C27E9E /* UIPageView.h in Headers */, 50ABBD8A1925AB4100A911A9 /* CCCustomCommand.h in Headers */, 299754F7193EC95400A54AC3 /* ObjectFactory.h in Headers */, 50ABBE881925AB6F00A911A9 /* ccMacros.h in Headers */, + B29A7E4019EE1B7700872B35 /* AnimationState.h in Headers */, 50ABC0101926664800A911A9 /* CCFileUtils.h in Headers */, 15AE19A919AAD39700C27E9E /* LayoutReader.h in Headers */, 15AE1B7B19AADA9A00C27E9E /* UIScrollView.h in Headers */, @@ -5431,19 +5809,19 @@ 50ABBD411925AB0000A911A9 /* CCMath.h in Headers */, 1A5701A0180BCB590088DEC7 /* CCFont.h in Headers */, 292DB14819B4574100A80320 /* UIEditBoxImpl-ios.h in Headers */, - 15AE1A0819AAD3A700C27E9E /* BoneData.h in Headers */, 3E2BDADE19C030ED0055CDCD /* AudioEngine.h in Headers */, 50ABBD9A1925AB4100A911A9 /* CCGLProgramStateCache.h in Headers */, 15AE181D19AAD2F700C27E9E /* CCBundle3D.h in Headers */, 15AE192519AAD35100C27E9E /* CocoLoader.h in Headers */, 15AE1BBB19AADFF000C27E9E /* HttpRequest.h in Headers */, + B29A7E0E19EE1B7700872B35 /* Bone.h in Headers */, B60C5BD719AC68B10056FBDE /* CCBillBoard.h in Headers */, B230ED7419B417AE00364AA8 /* CCTrianglesCommand.h in Headers */, - 15AE1A0019AAD3A700C27E9E /* AtlasAttachmentLoader.h in Headers */, 50ED2BE119BEAF7900A0AB90 /* UIEditBoxImpl-win32.h in Headers */, 15AE1ACB19AAD40300C27E9E /* b2MouseJoint.h in Headers */, 50ABBD3F1925AB0000A911A9 /* CCGeometry.h in Headers */, 3EA3EDBF1991CDFA00645534 /* CCCamera.h in Headers */, + B29A7DD019EE1B7700872B35 /* RegionAttachment.h in Headers */, 15AE1AD319AAD40300C27E9E /* b2RopeJoint.h in Headers */, 50ABBFFE1926664800A911A9 /* CCFileUtils-apple.h in Headers */, 15AE1AAD19AAD40300C27E9E /* b2WorldCallbacks.h in Headers */, @@ -5453,14 +5831,15 @@ 15AE1A4C19AAD3D500C27E9E /* b2EdgeShape.h in Headers */, 1A5701B4180BCB590088DEC7 /* CCFontFNT.h in Headers */, 15AE18D419AAD33D00C27E9E /* CCParticleSystemQuadLoader.h in Headers */, + B29A7DFA19EE1B7700872B35 /* Json.h in Headers */, 1A5701B8180BCB5A0088DEC7 /* CCFontFreeType.h in Headers */, - 15AE19F019AAD3A700C27E9E /* SkeletonBounds.h in Headers */, 15AE182719AAD2F700C27E9E /* CCMesh.h in Headers */, 15AE199319AAD37300C27E9E /* ImageViewReader.h in Headers */, 15AE1A4819AAD3D500C27E9E /* b2ChainShape.h in Headers */, 15AE18CB19AAD33D00C27E9E /* CCMenuLoader.h in Headers */, 1A5701BC180BCB5A0088DEC7 /* CCLabel.h in Headers */, 1A5701C0180BCB5A0088DEC7 /* CCLabelAtlas.h in Headers */, + B29A7E1819EE1B7700872B35 /* Atlas.h in Headers */, 50ABBE681925AB6F00A911A9 /* CCEventListenerCustom.h in Headers */, 15AE196B19AAD35100C27E9E /* DictionaryHelper.h in Headers */, 15AE1AA619AAD40300C27E9E /* b2Fixture.h in Headers */, @@ -5472,7 +5851,9 @@ 1A5701C4180BCB5A0088DEC7 /* CCLabelBMFont.h in Headers */, 15AE193F19AAD35100C27E9E /* CCBatchNode.h in Headers */, 15AE1C1819AAE2C700C27E9E /* CCPhysicsSprite.h in Headers */, + 3828C0B019EB8ACA002AB57B /* zero_copy_stream_impl_lite.h in Headers */, 15AE1BC819AAE00000C27E9E /* AssetsManager.h in Headers */, + B29A7E0419EE1B7700872B35 /* BoundingBoxAttachment.h in Headers */, 15AE1BBC19AADFF000C27E9E /* HttpResponse.h in Headers */, 15AE186019AAD31200C27E9E /* SimpleAudioEngine_objc.h in Headers */, 50ABBDA61925AB4100A911A9 /* CCQuadCommand.h in Headers */, @@ -5490,21 +5871,25 @@ 50643BE519BFCF1800EF68ED /* CCPlatformMacros.h in Headers */, 15AE1BFA19AAE01E00C27E9E /* CCControlSwitch.h in Headers */, 15AE182F19AAD2F700C27E9E /* CCMeshVertexIndexData.h in Headers */, - 15AE19F419AAD3A700C27E9E /* EventData.h in Headers */, 15AE1BAA19AADFDF00C27E9E /* UIVBox.h in Headers */, 15AE194E19AAD35100C27E9E /* CCDataReaderHelper.h in Headers */, + 3828C0A419EB8ACA002AB57B /* coded_stream_inl.h in Headers */, 15AE1ADB19AAD41000C27E9E /* b2Rope.h in Headers */, 1A5701CE180BCB5A0088DEC7 /* CCLabelTTF.h in Headers */, 15AE1AB119AAD40300C27E9E /* b2ChainAndPolygonContact.h in Headers */, - 15AE1A1E19AAD3A700C27E9E /* SlotData.h in Headers */, 1A5701E1180BCB8C0088DEC7 /* CCLayer.h in Headers */, 15AE1BEE19AAE01E00C27E9E /* CCControlExtensions.h in Headers */, + 3828C09619EB8ACA002AB57B /* config.h in Headers */, 1A5701E5180BCB8C0088DEC7 /* CCScene.h in Headers */, 1A5701E9180BCB8C0088DEC7 /* CCTransition.h in Headers */, 15AE198F19AAD36E00C27E9E /* CheckBoxReader.h in Headers */, + 3828C0E419EB8ACA002AB57B /* template_util.h in Headers */, 50ABBED41925AB6F00A911A9 /* uthash.h in Headers */, + B29A7E0A19EE1B7700872B35 /* AttachmentLoader.h in Headers */, 1A5701ED180BCB8C0088DEC7 /* CCTransitionPageTurn.h in Headers */, 1A5701F1180BCB8C0088DEC7 /* CCTransitionProgress.h in Headers */, + 3828C0E819EB8ACA002AB57B /* wire_format_lite_inl.h in Headers */, + B29A7DCE19EE1B7700872B35 /* Slot.h in Headers */, 15AE1A9C19AAD40300C27E9E /* b2Settings.h in Headers */, 1A5701FA180BCBAD0088DEC7 /* CCMenu.h in Headers */, 15AE18BA19AAD33D00C27E9E /* CCControlButtonLoader.h in Headers */, @@ -5513,17 +5898,18 @@ 1A570205180BCBD40088DEC7 /* CCClippingNode.h in Headers */, 15AE1B8919AADA9A00C27E9E /* UICheckBox.h in Headers */, 5034CA34191D591100CE6051 /* ccShader_PositionTexture_uColor.frag in Headers */, + B29A7DF819EE1B7700872B35 /* Attachment.h in Headers */, 15AE197C19AAD35700C27E9E /* CCFrame.h in Headers */, 15AE1AA219AAD40300C27E9E /* b2Body.h in Headers */, 15AE1C0419AAE01E00C27E9E /* CCTableView.h in Headers */, 50ABBEA21925AB6F00A911A9 /* CCScheduler.h in Headers */, 1A57020B180BCBDF0088DEC7 /* CCMotionStreak.h in Headers */, 15AE195219AAD35100C27E9E /* CCDecorativeDisplay.h in Headers */, - 15AE1A0419AAD3A700C27E9E /* AttachmentLoader.h in Headers */, 15AE196619AAD35100C27E9E /* CCTween.h in Headers */, 15AE194619AAD35100C27E9E /* CCComAttribute.h in Headers */, 15AE1ABD19AAD40300C27E9E /* b2PolygonAndCircleContact.h in Headers */, 15AE1AA819AAD40300C27E9E /* b2Island.h in Headers */, + 15B3708B19EE414C00ABE682 /* Manifest.h in Headers */, 1A570213180BCBF40088DEC7 /* CCProgressTimer.h in Headers */, B37510821823ACA100B3BA6A /* CCPhysicsJointInfo_chipmunk.h in Headers */, 1A570217180BCBF40088DEC7 /* CCRenderTexture.h in Headers */, @@ -5533,11 +5919,13 @@ 1A570224180BCC1A0088DEC7 /* CCParticleBatchNode.h in Headers */, 15AE1AC919AAD40300C27E9E /* b2Joint.h in Headers */, 15AE196819AAD35100C27E9E /* CCUtilMath.h in Headers */, + B29A7E2019EE1B7700872B35 /* BoneData.h in Headers */, 503DD8F61926B0DB00CD74DD /* CCIMEDelegate.h in Headers */, 1A570228180BCC1A0088DEC7 /* CCParticleExamples.h in Headers */, 1A57022C180BCC1A0088DEC7 /* CCParticleSystem.h in Headers */, 15AE1BAC19AADFDF00C27E9E /* UILayout.h in Headers */, 1A570230180BCC1A0088DEC7 /* CCParticleSystemQuad.h in Headers */, + 3828C09E19EB8ACA002AB57B /* generated_message_util.h in Headers */, 29394CF119B01DBA00D2DE1A /* UIWebView.h in Headers */, 15AE18B419AAD33D00C27E9E /* CCBSelectorResolver.h in Headers */, B24AA988195A675C007B4522 /* CCFastTMXLayer.h in Headers */, @@ -5550,6 +5938,8 @@ 50ABBD431925AB0000A911A9 /* CCMathBase.h in Headers */, 15EFA214198A2BB5000C57D3 /* CCProtectedNode.h in Headers */, 15AE194419AAD35100C27E9E /* CCComBase.h in Headers */, + 3828C0D219EB8ACA002AB57B /* common.h in Headers */, + 3828C0C219EB8ACA002AB57B /* atomicops_internals_macosx.h in Headers */, 15AE1A3B19AAD3D500C27E9E /* b2BroadPhase.h in Headers */, 15AE195619AAD35100C27E9E /* CCDisplayManager.h in Headers */, 15AE1B8719AADA9A00C27E9E /* UIButton.h in Headers */, @@ -5563,15 +5953,14 @@ 15AE193B19AAD35100C27E9E /* CCArmatureDataManager.h in Headers */, 1A570289180BCC900088DEC7 /* CCSpriteFrame.h in Headers */, 15AE1B7F19AADA9A00C27E9E /* UIText.h in Headers */, + B29A7E3419EE1B7700872B35 /* SlotData.h in Headers */, 50ABBE701925AB6F00A911A9 /* CCEventListenerKeyboard.h in Headers */, 15AE18B619AAD33D00C27E9E /* CCBSequence.h in Headers */, 15AE1A9819AAD40300C27E9E /* b2GrowableStack.h in Headers */, 1A57028D180BCC900088DEC7 /* CCSpriteFrameCache.h in Headers */, 1A570295180BCCAB0088DEC7 /* CCAnimation.h in Headers */, 50ABBDB81925AB4100A911A9 /* CCTexture2D.h in Headers */, - 15AE19F619AAD3A700C27E9E /* BoundingBoxAttachment.h in Headers */, 15AE1AAB19AAD40300C27E9E /* b2World.h in Headers */, - 15AE19FC19AAD3A700C27E9E /* AnimationStateData.h in Headers */, 15AE180F19AAD2F700C27E9E /* CCAnimate3D.h in Headers */, 50ABBE341925AB6F00A911A9 /* CCConfiguration.h in Headers */, 1A570299180BCCAB0088DEC7 /* CCAnimationCache.h in Headers */, @@ -5582,25 +5971,25 @@ 15AE18D119AAD33D00C27E9E /* CCNodeLoaderLibrary.h in Headers */, 15AE1AC319AAD40300C27E9E /* b2DistanceJoint.h in Headers */, 50ABBE741925AB6F00A911A9 /* CCEventListenerMouse.h in Headers */, + B29A7E1219EE1B7700872B35 /* EventData.h in Headers */, 1A5702CB180BCE370088DEC7 /* CCTextFieldTTF.h in Headers */, 1A5702ED180BCE750088DEC7 /* CCTileMapAtlas.h in Headers */, 15AE195E19AAD35100C27E9E /* CCSkin.h in Headers */, 1A5702F1180BCE750088DEC7 /* CCTMXLayer.h in Headers */, 15AE18AE19AAD33D00C27E9E /* CCBFileLoader.h in Headers */, - 15AE19FE19AAD3A700C27E9E /* Atlas.h in Headers */, 15AE197819AAD35700C27E9E /* CCActionTimeline.h in Headers */, 15AE1AA019AAD40300C27E9E /* b2Timer.h in Headers */, 5034CA44191D591100CE6051 /* ccShader_Label.vert in Headers */, - 15AE1A1419AAD3A700C27E9E /* Skeleton.h in Headers */, 1A5702F5180BCE750088DEC7 /* CCTMXObjectGroup.h in Headers */, + 3828C0B819EB8ACA002AB57B /* repeated_field.h in Headers */, 1A5702F9180BCE750088DEC7 /* CCTMXTiledMap.h in Headers */, + 15B3707F19EE414C00ABE682 /* CCEventAssetsManagerEx.h in Headers */, 1AC0269D1914068200FA920D /* ConvertUTF.h in Headers */, 15AE1A4419AAD3D500C27E9E /* b2DynamicTree.h in Headers */, 1A5702FD180BCE750088DEC7 /* CCTMXXMLParser.h in Headers */, 15AE1AC519AAD40300C27E9E /* b2FrictionJoint.h in Headers */, 15AE1B8D19AADA9A00C27E9E /* UIScale9Sprite.h in Headers */, 15AE18AC19AAD33D00C27E9E /* CCBAnimationManager.h in Headers */, - 15AE1A1A19AAD3A700C27E9E /* Skin.h in Headers */, 292DB14219B4574100A80320 /* UIEditBoxImpl.h in Headers */, 1A570303180BCE890088DEC7 /* CCParallaxNode.h in Headers */, 50ABBE2A1925AB6F00A911A9 /* CCAutoreleasePool.h in Headers */, @@ -5611,16 +6000,18 @@ 1A570313180BCF190088DEC7 /* CCComponentContainer.h in Headers */, 1A087AEB1860400400196EF5 /* edtaa3func.h in Headers */, B375107F1823ACA100B3BA6A /* CCPhysicsContactInfo_chipmunk.h in Headers */, - 15AE1A2019AAD3A700C27E9E /* spine-cocos2dx.h in Headers */, + 3828C0D419EB8ACA002AB57B /* hash.h in Headers */, 15AE185D19AAD31200C27E9E /* CocosDenshion.h in Headers */, 15AE194319AAD35100C27E9E /* CCColliderDetector.h in Headers */, 15AE1BC419AADFFB00C27E9E /* ExtensionMacros.h in Headers */, 15AE185A19AAD31200C27E9E /* CDConfig.h in Headers */, + B29A7DE819EE1B7700872B35 /* spine.h in Headers */, 1A57034E180BD09B0088DEC7 /* tinyxml2.h in Headers */, + 3828C0E619EB8ACA002AB57B /* type_traits.h in Headers */, 15AE1BFE19AAE01E00C27E9E /* CCInvocation.h in Headers */, 15AE1A9E19AAD40300C27E9E /* b2StackAllocator.h in Headers */, 1A570357180BD0B00088DEC7 /* ioapi.h in Headers */, - 15AE1A1619AAD3A700C27E9E /* SkeletonData.h in Headers */, + 3828C0C419EB8ACA002AB57B /* atomicops_internals_mips_gcc.h in Headers */, 50ABBD4B1925AB0000A911A9 /* Mat4.h in Headers */, 15AE1BBE19AADFF000C27E9E /* SocketIO.h in Headers */, 1A01C69B18F57BE800EFE3A6 /* CCSet.h in Headers */, @@ -5637,7 +6028,10 @@ 50ABBE6C1925AB6F00A911A9 /* CCEventListenerFocus.h in Headers */, 5034CA3E191D591100CE6051 /* ccShader_PositionColor.frag in Headers */, 50ABBE301925AB6F00A911A9 /* ccConfig.h in Headers */, + 3828C0EC19EB8ACA002AB57B /* wire_format_lite.h in Headers */, 15AE195819AAD35100C27E9E /* CCInputDelegate.h in Headers */, + 3828C0CE19EB8ACA002AB57B /* atomicops_internals_x86_msvc.h in Headers */, + 3828C0BE19EB8ACA002AB57B /* atomicops_internals_arm_qnx.h in Headers */, 50ABBDAC1925AB4100A911A9 /* CCRenderCommandPool.h in Headers */, 5034CA3C191D591100CE6051 /* ccShader_PositionColor.vert in Headers */, 50ABC0181926664800A911A9 /* CCImage.h in Headers */, @@ -5650,6 +6044,7 @@ 503DD8EB1926736A00CD74DD /* CCGL-ios.h in Headers */, 50ABBE3C1925AB6F00A911A9 /* CCData.h in Headers */, 503DD8FA1926B0DB00CD74DD /* CCIMEDispatcher.h in Headers */, + B29A7DE619EE1B7700872B35 /* SkeletonAnimation.h in Headers */, 50ABBEC81925AB6F00A911A9 /* etc1.h in Headers */, 50ABBDB01925AB4100A911A9 /* CCRenderer.h in Headers */, B29594B71926D5EC003EEF37 /* CCMeshCommand.h in Headers */, @@ -5672,11 +6067,16 @@ 15AE1B7D19AADA9A00C27E9E /* UISlider.h in Headers */, 503DD8E01926736A00CD74DD /* CCApplication-ios.h in Headers */, 15AE1B8319AADA9A00C27E9E /* UITextBMFont.h in Headers */, + B29A7E2A19EE1B7700872B35 /* SkeletonData.h in Headers */, 50ABBD8E1925AB4100A911A9 /* CCGLProgram.h in Headers */, + 38B8E2D819E66581002D7CE7 /* CSLoader.h in Headers */, 50ABC0081926664800A911A9 /* CCApplicationProtocol.h in Headers */, 1ABA68B11888D700007D1BB4 /* CCFontCharMap.h in Headers */, + 3828C0BC19EB8ACA002AB57B /* atomicops_internals_arm_gcc.h in Headers */, 15AE1ACF19AAD40300C27E9E /* b2PulleyJoint.h in Headers */, 15AE198019AAD35700C27E9E /* CCTimeLine.h in Headers */, + 38B8E2D219E65F4C002D7CE7 /* CSParseBinary.pb.h in Headers */, + 38B8E2E419E671D2002D7CE7 /* UILayoutComponent.h in Headers */, 50ABBD4F1925AB0000A911A9 /* MathUtil.h in Headers */, 1A01C69718F57BE800EFE3A6 /* CCInteger.h in Headers */, 15AE1C0619AAE01E00C27E9E /* CCTableViewCell.h in Headers */, @@ -5688,14 +6088,12 @@ 299CF1FE19A434BC00C378C1 /* ccRandom.h in Headers */, 50ABBDBC1925AB4100A911A9 /* CCTextureAtlas.h in Headers */, 15AE182319AAD2F700C27E9E /* CCBundleReader.h in Headers */, - 15AE1A1819AAD3A700C27E9E /* SkeletonJson.h in Headers */, 50ABBE541925AB6F00A911A9 /* CCEventDispatcher.h in Headers */, 1A12775A18DFCC4F0005F345 /* CCTweenFunction.h in Headers */, 15AE192819AAD35100C27E9E /* TriggerBase.h in Headers */, 15AE1BF419AAE01E00C27E9E /* CCControlSaturationBrightnessPicker.h in Headers */, 15AE1AD119AAD40300C27E9E /* b2RevoluteJoint.h in Headers */, 50643BD519BFAECF00EF68ED /* CCGL.h in Headers */, - 15AE1A2119AAD3A700C27E9E /* spine.h in Headers */, 15AE193919AAD35100C27E9E /* CCArmatureAnimation.h in Headers */, 15AE1AA419AAD40300C27E9E /* b2ContactManager.h in Headers */, B276EF601988D1D500CD400F /* CCVertexIndexData.h in Headers */, @@ -5704,9 +6102,8 @@ 15AE194C19AAD35100C27E9E /* CCComRender.h in Headers */, 1AAF5852180E40B9000584C8 /* LocalStorage.h in Headers */, 50CB247619D9C5A100687767 /* AudioCache.h in Headers */, + B29A7DDA19EE1B7700872B35 /* SkeletonRenderer.h in Headers */, 15AE194119AAD35100C27E9E /* CCBone.h in Headers */, - 15AE19FA19AAD3A700C27E9E /* AnimationState.h in Headers */, - 15AE1A1019AAD3A700C27E9E /* Json.h in Headers */, 50ABBD471925AB0000A911A9 /* CCVertex.h in Headers */, 15AE195A19AAD35100C27E9E /* CCProcessBase.h in Headers */, 15AE193D19AAD35100C27E9E /* CCArmatureDefine.h in Headers */, @@ -5720,6 +6117,7 @@ 1A01C69118F57BE800EFE3A6 /* CCDictionary.h in Headers */, 5034CA36191D591100CE6051 /* ccShader_PositionTexture.frag in Headers */, B24AA98C195A675C007B4522 /* CCFastTMXTiledMap.h in Headers */, + B29A7DEC19EE1B7700872B35 /* MeshAttachment.h in Headers */, 50ABBEAE1925AB6F00A911A9 /* ccTypes.h in Headers */, 15AE185819AAD31200C27E9E /* CDAudioManager.h in Headers */, 15AE1BF819AAE01E00C27E9E /* CCControlStepper.h in Headers */, @@ -5728,16 +6126,18 @@ 15AE1BF619AAE01E00C27E9E /* CCControlSlider.h in Headers */, 1A01C68718F57BE800EFE3A6 /* CCArray.h in Headers */, 1A01C6A718F58F7500EFE3A6 /* CCNotificationCenter.h in Headers */, + 3828C0E219EB8ACA002AB57B /* stringprintf.h in Headers */, 50ABBEDA1925AB6F00A911A9 /* ZipUtils.h in Headers */, 50ABBDC01925AB4100A911A9 /* CCTextureCache.h in Headers */, 3EA1073219D7F37700CAB794 /* CCLight.h in Headers */, B276EF641988D1D500CD400F /* CCVertexIndexBuffer.h in Headers */, - 15AE1A0619AAD3A700C27E9E /* Bone.h in Headers */, ED9C6A9718599AD8000A5232 /* CCNodeGrid.h in Headers */, 50ABC0201926664800A911A9 /* CCThread.h in Headers */, 15AE1B8519AADA9A00C27E9E /* UITextField.h in Headers */, 1A01C69318F57BE800EFE3A6 /* CCDouble.h in Headers */, + B29A7E1019EE1B7700872B35 /* SkeletonJson.h in Headers */, 15AE184B19AAD30500C27E9E /* Export.h in Headers */, + 3828C0AC19EB8ACA002AB57B /* zero_copy_stream_impl.h in Headers */, 15AE196019AAD35100C27E9E /* CCSpriteFrameCacheHelper.h in Headers */, 50ABBE221925AB6F00A911A9 /* atitc.h in Headers */, 15AE1AB719AAD40300C27E9E /* b2ContactSolver.h in Headers */, @@ -5749,6 +6149,7 @@ 15AE18D219AAD33D00C27E9E /* CCNodeLoaderListener.h in Headers */, 15AE184D19AAD30800C27E9E /* SimpleAudioEngine.h in Headers */, 1A01C68D18F57BE800EFE3A6 /* CCDeprecated.h in Headers */, + B29A7E3619EE1B7700872B35 /* AnimationStateData.h in Headers */, 503DD8EA1926736A00CD74DD /* CCESRenderer-ios.h in Headers */, 50ABBE581925AB6F00A911A9 /* CCEventFocus.h in Headers */, 15AE196419AAD35100C27E9E /* CCTransformHelp.h in Headers */, @@ -5762,7 +6163,9 @@ 50ABC01C1926664800A911A9 /* CCSAXParser.h in Headers */, 503DD8F11926736A00CD74DD /* OpenGL_Internal-ios.h in Headers */, B37510801823ACA100B3BA6A /* CCPhysicsHelper_chipmunk.h in Headers */, + B29A7DF619EE1B7700872B35 /* Skeleton.h in Headers */, 50ABBDAA1925AB4100A911A9 /* CCRenderCommand.h in Headers */, + B29A7DF019EE1B7700872B35 /* SkeletonBounds.h in Headers */, 15AE1BE919AAE01E00C27E9E /* CCControl.h in Headers */, 15AE193719AAD35100C27E9E /* CCArmature.h in Headers */, 15AE1BC319AADFFB00C27E9E /* cocos-ext.h in Headers */, @@ -5770,6 +6173,7 @@ 15AE1A4619AAD3D500C27E9E /* b2TimeOfImpact.h in Headers */, 50ABBE601925AB6F00A911A9 /* CCEventListener.h in Headers */, 50ABBEB21925AB6F00A911A9 /* CCUserDefault.h in Headers */, + 3828C0C619EB8ACA002AB57B /* atomicops_internals_pnacl.h in Headers */, 15AE198B19AAD36A00C27E9E /* ButtonReader.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -5845,11 +6249,14 @@ files = ( 15AE1A9019AAD40300C27E9E /* b2WeldJoint.cpp in Sources */, 50ABBE2B1925AB6F00A911A9 /* ccCArray.cpp in Sources */, + B29A7E3B19EE1B7700872B35 /* Animation.c in Sources */, 15AE1BDE19AAE01E00C27E9E /* CCInvocation.cpp in Sources */, 3EA3EDBC1991CDFA00645534 /* CCCamera.cpp in Sources */, 292DB14F19B4574100A80320 /* UIEditBoxImpl-stub.cpp in Sources */, + B29A7E0B19EE1B7700872B35 /* Atlas.c in Sources */, 15AE199419AAD39600C27E9E /* LayoutReader.cpp in Sources */, 1A01C68A18F57BE800EFE3A6 /* CCDeprecated.cpp in Sources */, + 3828C0B519EB8ACA002AB57B /* repeated_field.cc in Sources */, 1A1645B0191B726C008C7C7F /* ConvertUTF.c in Sources */, 15AE1BE219AAE01E00C27E9E /* CCScrollView.cpp in Sources */, 50ABBD581925AB0000A911A9 /* Vec2.cpp in Sources */, @@ -5858,7 +6265,6 @@ 1A01C6A418F58F7500EFE3A6 /* CCNotificationCenter.cpp in Sources */, 15AE1A5D19AAD40300C27E9E /* b2Body.cpp in Sources */, 15AE1BDA19AAE01E00C27E9E /* CCControlSwitch.cpp in Sources */, - 15AE19D619AAD3A700C27E9E /* CCSkeleton.cpp in Sources */, 46A170EA1807CECA005B8026 /* CCPhysicsJoint.cpp in Sources */, 15AE18DC19AAD35000C27E9E /* CocoLoader.cpp in Sources */, 15AE1B4D19AADA9900C27E9E /* UIListView.cpp in Sources */, @@ -5899,6 +6305,7 @@ 46A170E81807CECA005B8026 /* CCPhysicsContact.cpp in Sources */, 1A570061180BC5A10088DEC7 /* CCAction.cpp in Sources */, 15AE1BDC19AAE01E00C27E9E /* CCControlUtils.cpp in Sources */, + B29A7DE919EE1B7700872B35 /* EventData.c in Sources */, 50ABBEC51925AB6F00A911A9 /* etc1.cpp in Sources */, 50643BDE19BFCCA400EF68ED /* LocalStorage-android.cpp in Sources */, 15AE1B5B19AADA9900C27E9E /* UITextAtlas.cpp in Sources */, @@ -5906,11 +6313,13 @@ 50ABBEAB1925AB6F00A911A9 /* ccTypes.cpp in Sources */, 15AE18A219AAD33D00C27E9E /* CCParticleSystemQuadLoader.cpp in Sources */, 15AE188C19AAD33D00C27E9E /* CCLabelBMFontLoader.cpp in Sources */, - 15AE19E619AAD3A700C27E9E /* Skin.cpp in Sources */, + 3828C0C719EB8ACA002AB57B /* atomicops_internals_x86_gcc.cc in Sources */, + DA8C62A219E52C6400000516 /* ioapi_mem.cpp in Sources */, 1A570069180BC5A10088DEC7 /* CCActionCatmullRom.cpp in Sources */, B257B44E1989D5E800D9A687 /* CCPrimitive.cpp in Sources */, 299CF1FB19A434BC00C378C1 /* ccRandom.cpp in Sources */, 15AE18E819AAD35000C27E9E /* CCActionManagerEx.cpp in Sources */, + B29A7DDB19EE1B7700872B35 /* Event.c in Sources */, 15AE191B19AAD35000C27E9E /* CCTransformHelp.cpp in Sources */, 15AE190319AAD35000C27E9E /* CCComRender.cpp in Sources */, 1A57006D180BC5A10088DEC7 /* CCActionEase.cpp in Sources */, @@ -5927,12 +6336,11 @@ 15AE1B9D19AADFDF00C27E9E /* UIVBox.cpp in Sources */, 1A570079180BC5A10088DEC7 /* CCActionInstant.cpp in Sources */, 15AE1A7019AAD40300C27E9E /* b2Contact.cpp in Sources */, - 15AE19CA19AAD3A700C27E9E /* Atlas.cpp in Sources */, 15AE18A619AAD33D00C27E9E /* CCScrollViewLoader.cpp in Sources */, 15AE18F619AAD35000C27E9E /* CCBatchNode.cpp in Sources */, - 15AE19C019AAD3A700C27E9E /* EventData.cpp in Sources */, 15AE184419AAD2F700C27E9E /* CCSprite3DMaterial.cpp in Sources */, 50ABBE591925AB6F00A911A9 /* CCEventKeyboard.cpp in Sources */, + B29A7DDF19EE1B7700872B35 /* IkConstraintData.c in Sources */, 1A57007D180BC5A10088DEC7 /* CCActionInterval.cpp in Sources */, 15AE189F19AAD33D00C27E9E /* CCNodeLoaderLibrary.cpp in Sources */, 1A570081180BC5A10088DEC7 /* CCActionManager.cpp in Sources */, @@ -5958,46 +6366,54 @@ 50ABBE391925AB6F00A911A9 /* CCData.cpp in Sources */, 1A57010E180BC8EE0088DEC7 /* CCDrawingPrimitives.cpp in Sources */, 50ABBED71925AB6F00A911A9 /* ZipUtils.cpp in Sources */, + 3828C0CB19EB8ACA002AB57B /* atomicops_internals_x86_msvc.cc in Sources */, + 38B8E2CF19E65F4C002D7CE7 /* CSParseBinary.pb.cc in Sources */, + B29A7E1319EE1B7700872B35 /* Bone.c in Sources */, 292DB14919B4574100A80320 /* UIEditBoxImpl-ios.mm in Sources */, 15AE181019AAD2F700C27E9E /* CCAnimation3D.cpp in Sources */, 1A01C68418F57BE800EFE3A6 /* CCArray.cpp in Sources */, 1A570112180BC8EE0088DEC7 /* CCDrawNode.cpp in Sources */, 15AE186D19AAD31D00C27E9E /* SimpleAudioEngine_objc.m in Sources */, + 3828C0DF19EB8ACA002AB57B /* stringprintf.cc in Sources */, 1A57011B180BC90D0088DEC7 /* CCGrabber.cpp in Sources */, + B29A7E3719EE1B7700872B35 /* AnimationStateData.c in Sources */, 15AE182419AAD2F700C27E9E /* CCMesh.cpp in Sources */, 15AE190D19AAD35000C27E9E /* CCDisplayManager.cpp in Sources */, + 3828C0B119EB8ACA002AB57B /* message_lite.cc in Sources */, 1A57011F180BC90D0088DEC7 /* CCGrid.cpp in Sources */, - 15AE19CE19AAD3A700C27E9E /* Attachment.cpp in Sources */, 15AE187A19AAD33D00C27E9E /* CCBAnimationManager.cpp in Sources */, 15AE1B6D19AADA9900C27E9E /* UIHelper.cpp in Sources */, 15AE1A8A19AAD40300C27E9E /* b2PulleyJoint.cpp in Sources */, 29394CF219B01DBA00D2DE1A /* UIWebView.mm in Sources */, 15AE1BD419AAE01E00C27E9E /* CCControlSaturationBrightnessPicker.cpp in Sources */, + 38B8E2E119E671D2002D7CE7 /* UILayoutComponent.cpp in Sources */, 1A57019D180BCB590088DEC7 /* CCFont.cpp in Sources */, 50CB247B19D9C5A100687767 /* AudioEngine-inl.mm in Sources */, 1A5701A1180BCB590088DEC7 /* CCFontAtlas.cpp in Sources */, + B29A7DFF19EE1B7700872B35 /* Json.c in Sources */, 15AE1A8619AAD40300C27E9E /* b2MouseJoint.cpp in Sources */, 1A5701A5180BCB590088DEC7 /* CCFontAtlasCache.cpp in Sources */, + 3828C0A919EB8ACA002AB57B /* zero_copy_stream_impl.cc in Sources */, 15AE1A7A19AAD40300C27E9E /* b2PolygonContact.cpp in Sources */, 15AE191119AAD35000C27E9E /* CCProcessBase.cpp in Sources */, 15AE18EE19AAD35000C27E9E /* CCArmature.cpp in Sources */, 15AE1BCD19AAE01E00C27E9E /* CCControlColourPicker.cpp in Sources */, 1A5701B1180BCB590088DEC7 /* CCFontFNT.cpp in Sources */, 15AE181619AAD2F700C27E9E /* CCAttachNode.cpp in Sources */, + B29A7DED19EE1B7700872B35 /* IkConstraint.c in Sources */, 1A5701B5180BCB590088DEC7 /* CCFontFreeType.cpp in Sources */, 1A5701B9180BCB5A0088DEC7 /* CCLabel.cpp in Sources */, 1A5701BD180BCB5A0088DEC7 /* CCLabelAtlas.cpp in Sources */, 15AE1B5319AADA9900C27E9E /* UIRichText.cpp in Sources */, - 15AE19DC19AAD3A700C27E9E /* Json.cpp in Sources */, 292DB13D19B4574100A80320 /* UIEditBox.cpp in Sources */, 50ABBE551925AB6F00A911A9 /* CCEventFocus.cpp in Sources */, 15AE1A8819AAD40300C27E9E /* b2PrismaticJoint.cpp in Sources */, + 3828C0A519EB8ACA002AB57B /* zero_copy_stream.cc in Sources */, 50ABBE491925AB6F00A911A9 /* CCEventAcceleration.cpp in Sources */, 1A5701C1180BCB5A0088DEC7 /* CCLabelBMFont.cpp in Sources */, 15AE182C19AAD2F700C27E9E /* CCMeshVertexIndexData.cpp in Sources */, 15AE1A8C19AAD40300C27E9E /* b2RevoluteJoint.cpp in Sources */, 50ABBD4C1925AB0000A911A9 /* MathUtil.cpp in Sources */, - 15AE19D419AAD3A700C27E9E /* BoneData.cpp in Sources */, 15AE191719AAD35000C27E9E /* CCSpriteFrameCacheHelper.cpp in Sources */, 1A087AE81860400400196EF5 /* edtaa3func.cpp in Sources */, B37510731823AC9F00B3BA6A /* CCPhysicsContactInfo_chipmunk.cpp in Sources */, @@ -6009,29 +6425,31 @@ 50ABBE711925AB6F00A911A9 /* CCEventListenerMouse.cpp in Sources */, 1A5701DE180BCB8C0088DEC7 /* CCLayer.cpp in Sources */, 15AE1B5919AADA9900C27E9E /* UIText.cpp in Sources */, + 15B3707C19EE414C00ABE682 /* CCEventAssetsManagerEx.cpp in Sources */, 1A5701E2180BCB8C0088DEC7 /* CCScene.cpp in Sources */, 15AE1B9919AADFDF00C27E9E /* UIHBox.cpp in Sources */, 15AE199C19AAD39600C27E9E /* ScrollViewReader.cpp in Sources */, - 15AE19DA19AAD3A700C27E9E /* extension.cpp in Sources */, - 15AE19C219AAD3A700C27E9E /* BoundingBoxAttachment.cpp in Sources */, + B29A7E0519EE1B7700872B35 /* extension.c in Sources */, 15AE187E19AAD33D00C27E9E /* CCBKeyframe.cpp in Sources */, 1A12775C18DFCC590005F345 /* CCTweenFunction.cpp in Sources */, 1A5701E6180BCB8C0088DEC7 /* CCTransition.cpp in Sources */, - 15AE19D819AAD3A700C27E9E /* CCSkeletonAnimation.cpp in Sources */, - 15AE19E819AAD3A700C27E9E /* Slot.cpp in Sources */, B24AA985195A675C007B4522 /* CCFastTMXLayer.cpp in Sources */, 15AE1A6A19AAD40300C27E9E /* b2ChainAndCircleContact.cpp in Sources */, 15AE19BE19AAD3A700C27E9E /* Event.cpp in Sources */, + 15B3708819EE414C00ABE682 /* Manifest.cpp in Sources */, 1A5701EA180BCB8C0088DEC7 /* CCTransitionPageTurn.cpp in Sources */, + 3828C0D719EB8ACA002AB57B /* once.cc in Sources */, 15AE186B19AAD31D00C27E9E /* SimpleAudioEngine.mm in Sources */, 50ABBDAD1925AB4100A911A9 /* CCRenderer.cpp in Sources */, 15AE199019AAD37200C27E9E /* ImageViewReader.cpp in Sources */, 1A5701EE180BCB8C0088DEC7 /* CCTransitionProgress.cpp in Sources */, + B29A7DE119EE1B7700872B35 /* MeshAttachment.c in Sources */, 15AE18F419AAD35000C27E9E /* CCArmatureDefine.cpp in Sources */, 15AE186619AAD31D00C27E9E /* CDOpenALSupport.m in Sources */, 1A5701F7180BCBAD0088DEC7 /* CCMenu.cpp in Sources */, 1A1645B2191B726C008C7C7F /* ConvertUTFWrapper.cpp in Sources */, 15AE1BC919AAE01E00C27E9E /* CCControl.cpp in Sources */, + B29A7DD119EE1B7700872B35 /* Skin.c in Sources */, 1A5701FB180BCBAD0088DEC7 /* CCMenuItem.cpp in Sources */, 1A570202180BCBD40088DEC7 /* CCClippingNode.cpp in Sources */, 1A570208180BCBDF0088DEC7 /* CCMotionStreak.cpp in Sources */, @@ -6039,6 +6457,7 @@ 292DB15F19B461CA00A80320 /* ExtensionDeprecated.cpp in Sources */, 292DB14D19B4574100A80320 /* UIEditBoxImpl-mac.mm in Sources */, 50ABBDB51925AB4100A911A9 /* CCTexture2D.cpp in Sources */, + B29A7DD719EE1B7700872B35 /* SkeletonData.c in Sources */, 1A570214180BCBF40088DEC7 /* CCRenderTexture.cpp in Sources */, 15AE1BD019AAE01E00C27E9E /* CCControlHuePicker.cpp in Sources */, 15AE18F219AAD35000C27E9E /* CCArmatureDataManager.cpp in Sources */, @@ -6049,12 +6468,14 @@ 1A570221180BCC1A0088DEC7 /* CCParticleBatchNode.cpp in Sources */, 1A570225180BCC1A0088DEC7 /* CCParticleExamples.cpp in Sources */, 1A570229180BCC1A0088DEC7 /* CCParticleSystem.cpp in Sources */, + 3828C09B19EB8ACA002AB57B /* generated_message_util.cc in Sources */, 1A57022D180BCC1A0088DEC7 /* CCParticleSystemQuad.cpp in Sources */, 1A57027E180BCC900088DEC7 /* CCSprite.cpp in Sources */, 15AE1A7419AAD40300C27E9E /* b2EdgeAndCircleContact.cpp in Sources */, 1A570282180BCC900088DEC7 /* CCSpriteBatchNode.cpp in Sources */, 1A570286180BCC900088DEC7 /* CCSpriteFrame.cpp in Sources */, B24AA989195A675C007B4522 /* CCFastTMXTiledMap.cpp in Sources */, + B29A7E2F19EE1B7700872B35 /* SkeletonAnimation.cpp in Sources */, B60C5BD419AC68B10056FBDE /* CCBillBoard.cpp in Sources */, 15AE199619AAD39600C27E9E /* ListViewReader.cpp in Sources */, 50ABC0191926664800A911A9 /* CCSAXParser.cpp in Sources */, @@ -6062,12 +6483,16 @@ 15AE1B6A19AADA9900C27E9E /* UIDeprecated.cpp in Sources */, 15AE183C19AAD2F700C27E9E /* CCSkeleton3D.cpp in Sources */, 15AE1A2319AAD3D500C27E9E /* b2BroadPhase.cpp in Sources */, + B29A7DF319EE1B7700872B35 /* AttachmentLoader.c in Sources */, 1A57028A180BCC900088DEC7 /* CCSpriteFrameCache.cpp in Sources */, 15AE18E619AAD35000C27E9E /* CCActionFrameEasing.cpp in Sources */, + B29A7DC919EE1B7700872B35 /* SlotData.c in Sources */, 15AE190F19AAD35000C27E9E /* CCInputDelegate.cpp in Sources */, 15AE181A19AAD2F700C27E9E /* CCBundle3D.cpp in Sources */, + 15B3708019EE414C00ABE682 /* CCEventListenerAssetsManagerEx.cpp in Sources */, 1A570292180BCCAB0088DEC7 /* CCAnimation.cpp in Sources */, 1A570296180BCCAB0088DEC7 /* CCAnimationCache.cpp in Sources */, + B29A7E1B19EE1B7700872B35 /* SkeletonJson.c in Sources */, 50ABBE351925AB6F00A911A9 /* CCConsole.cpp in Sources */, 15AE1BB119AADFEF00C27E9E /* HttpClient.cpp in Sources */, 50ABBEAF1925AB6F00A911A9 /* CCUserDefault.cpp in Sources */, @@ -6076,17 +6501,18 @@ 15AE1A2E19AAD3D500C27E9E /* b2TimeOfImpact.cpp in Sources */, 50ABC0111926664800A911A9 /* CCGLView.cpp in Sources */, 50ABBE3D1925AB6F00A911A9 /* CCDataVisitor.cpp in Sources */, + B29A7DD519EE1B7700872B35 /* RegionAttachment.c in Sources */, + 3828C09719EB8ACA002AB57B /* extension_set.cc in Sources */, + B29A7E2519EE1B7700872B35 /* Attachment.c in Sources */, 1A5702C8180BCE370088DEC7 /* CCTextFieldTTF.cpp in Sources */, - 15AE19C619AAD3A700C27E9E /* AnimationState.cpp in Sources */, 15AE1B5519AADA9900C27E9E /* UIScrollView.cpp in Sources */, 15AE191919AAD35000C27E9E /* CCSSceneReader.cpp in Sources */, - 15AE19EC19AAD3A700C27E9E /* spine-cocos2dx.cpp in Sources */, 50ABBE7D1925AB6F00A911A9 /* CCEventTouch.cpp in Sources */, 1A5702EA180BCE750088DEC7 /* CCTileMapAtlas.cpp in Sources */, 50ABBD971925AB4100A911A9 /* CCGLProgramStateCache.cpp in Sources */, 15AE182019AAD2F700C27E9E /* CCBundleReader.cpp in Sources */, 15AE1AD819AAD41000C27E9E /* b2Rope.cpp in Sources */, - 15AE19C419AAD3A700C27E9E /* Animation.cpp in Sources */, + B29A7DC719EE1B7700872B35 /* SkeletonRenderer.cpp in Sources */, 15AE1A7C19AAD40300C27E9E /* b2MotorJoint.cpp in Sources */, 15AE1A2619AAD3D500C27E9E /* b2CollideEdge.cpp in Sources */, 1A5702EE180BCE750088DEC7 /* CCTMXLayer.cpp in Sources */, @@ -6100,11 +6526,9 @@ 1A5702F2180BCE750088DEC7 /* CCTMXObjectGroup.cpp in Sources */, 15AE1A5B19AAD40300C27E9E /* b2Timer.cpp in Sources */, 15AE189419AAD33D00C27E9E /* CCLayerLoader.cpp in Sources */, - 15AE197219AAD35700C27E9E /* CCNodeReader.cpp in Sources */, 1A5702F6180BCE750088DEC7 /* CCTMXTiledMap.cpp in Sources */, 1A5702FA180BCE750088DEC7 /* CCTMXXMLParser.cpp in Sources */, 15AE18DF19AAD35000C27E9E /* TriggerBase.cpp in Sources */, - 15AE19E219AAD3A700C27E9E /* SkeletonData.cpp in Sources */, 15AE1A7219AAD40300C27E9E /* b2ContactSolver.cpp in Sources */, 15AE1BC519AAE00000C27E9E /* AssetsManager.cpp in Sources */, 50ABBD5C1925AB0000A911A9 /* Vec3.cpp in Sources */, @@ -6114,36 +6538,39 @@ 15AE1A2719AAD3D500C27E9E /* b2CollidePolygon.cpp in Sources */, 15AE199A19AAD39600C27E9E /* PageViewReader.cpp in Sources */, 1A57030C180BCF190088DEC7 /* CCComponent.cpp in Sources */, - 15AE19CC19AAD3A700C27E9E /* AtlasAttachmentLoader.cpp in Sources */, 15AE1A5919AAD40300C27E9E /* b2StackAllocator.cpp in Sources */, + B29A7E3D19EE1B7700872B35 /* AnimationState.c in Sources */, 15AE192219AAD35000C27E9E /* DictionaryHelper.cpp in Sources */, 15AE196C19AAD35700C27E9E /* CCActionTimeline.cpp in Sources */, + B29A7E0719EE1B7700872B35 /* SkinnedMeshAttachment.c in Sources */, 1A570310180BCF190088DEC7 /* CCComponentContainer.cpp in Sources */, 15AE190719AAD35000C27E9E /* CCDatas.cpp in Sources */, B37510711823AC9F00B3BA6A /* CCPhysicsBodyInfo_chipmunk.cpp in Sources */, 1A01C69C18F57BE800EFE3A6 /* CCString.cpp in Sources */, 50ABBD3C1925AB0000A911A9 /* CCGeometry.cpp in Sources */, + B29A7DDD19EE1B7700872B35 /* BoneData.c in Sources */, 15AE188A19AAD33D00C27E9E /* CCControlLoader.cpp in Sources */, + B29A7DFB19EE1B7700872B35 /* spine-cocos2dx.cpp in Sources */, 50ABC0011926664800A911A9 /* CCLock-apple.cpp in Sources */, 15AE1A8019AAD40300C27E9E /* b2FrictionJoint.cpp in Sources */, 50ABBD931925AB4100A911A9 /* CCGLProgramState.cpp in Sources */, 15AE183419AAD2F700C27E9E /* CCObjLoader.cpp in Sources */, 1A57034B180BD09B0088DEC7 /* tinyxml2.cpp in Sources */, 1A570354180BD0B00088DEC7 /* ioapi.cpp in Sources */, + 15B3707819EE414C00ABE682 /* AssetsManagerEx.cpp in Sources */, 15AE19E419AAD3A700C27E9E /* SkeletonJson.cpp in Sources */, 1A570358180BD0B00088DEC7 /* unzip.cpp in Sources */, - 15AE19D219AAD3A700C27E9E /* Bone.cpp in Sources */, + 3828C0CF19EB8ACA002AB57B /* common.cc in Sources */, + B29A7DCB19EE1B7700872B35 /* Skeleton.c in Sources */, 15AE196E19AAD35700C27E9E /* CCActionTimelineCache.cpp in Sources */, 50ABBEB31925AB6F00A911A9 /* CCUserDefault-apple.mm in Sources */, 50ABBEB51925AB6F00A911A9 /* CCUserDefault-android.cpp in Sources */, 29394CF619B01DBA00D2DE1A /* UIWebViewImpl-ios.mm in Sources */, 50ABBE831925AB6F00A911A9 /* ccFPSImages.c in Sources */, 15AE1B7019AADA9900C27E9E /* CocosGUI.cpp in Sources */, - 15AE19D019AAD3A700C27E9E /* AttachmentLoader.cpp in Sources */, - 15AE19DE19AAD3A700C27E9E /* RegionAttachment.cpp in Sources */, 50CB247719D9C5A100687767 /* AudioCache.mm in Sources */, - 15AE19C819AAD3A700C27E9E /* AnimationStateData.cpp in Sources */, 15AE18FA19AAD35000C27E9E /* CCColliderDetector.cpp in Sources */, + 3828C0E919EB8ACA002AB57B /* wire_format_lite.cc in Sources */, 50ABBEA71925AB6F00A911A9 /* CCTouch.cpp in Sources */, 15AE191319AAD35000C27E9E /* CCSGUIReader.cpp in Sources */, 15AE186819AAD31D00C27E9E /* CDXMacOSXSupport.mm in Sources */, @@ -6173,29 +6600,35 @@ 15AE18F019AAD35000C27E9E /* CCArmatureAnimation.cpp in Sources */, 50ABBE511925AB6F00A911A9 /* CCEventDispatcher.cpp in Sources */, 50ABC0051926664800A911A9 /* CCThread-apple.mm in Sources */, + 15B3708419EE414C00ABE682 /* Downloader.cpp in Sources */, 50ABC0631926664800A911A9 /* CCDevice-mac.mm in Sources */, 15AE1A2819AAD3D500C27E9E /* b2Collision.cpp in Sources */, 15AE1B6719AADA9900C27E9E /* UIScale9Sprite.cpp in Sources */, 292DB14319B4574100A80320 /* UIEditBoxImpl-android.cpp in Sources */, 15AE1A5219AAD40300C27E9E /* b2Draw.cpp in Sources */, + 3828C09F19EB8ACA002AB57B /* coded_stream.cc in Sources */, 50ED2BE419BEAF7900A0AB90 /* UIEditBoxImpl-win32.cpp in Sources */, 50ABBE1F1925AB6F00A911A9 /* atitc.cpp in Sources */, 1A01C69818F57BE800EFE3A6 /* CCSet.cpp in Sources */, + B29A7DF119EE1B7700872B35 /* AtlasAttachmentLoader.c in Sources */, 1AAF584F180E40B9000584C8 /* LocalStorage.cpp in Sources */, 15AE1BD219AAE01E00C27E9E /* CCControlPotentiometer.cpp in Sources */, 50ABBEA31925AB6F00A911A9 /* CCScriptSupport.cpp in Sources */, + 3828C0AD19EB8ACA002AB57B /* zero_copy_stream_impl_lite.cc in Sources */, + 38B8E2D519E66581002D7CE7 /* CSLoader.cpp in Sources */, 15AE190519AAD35000C27E9E /* CCDataReaderHelper.cpp in Sources */, 15AE19A019AAD39600C27E9E /* TextAtlasReader.cpp in Sources */, 15AE1A2A19AAD3D500C27E9E /* b2Distance.cpp in Sources */, 50ABBE6D1925AB6F00A911A9 /* CCEventListenerKeyboard.cpp in Sources */, 15AE190B19AAD35000C27E9E /* CCDisplayFactory.cpp in Sources */, + B29A7DE319EE1B7700872B35 /* SkeletonBounds.c in Sources */, 1A9DCA27180E6955007A3AD4 /* CCGLBufferedNode.cpp in Sources */, 50ABBD541925AB0000A911A9 /* TransformUtils.cpp in Sources */, + DABC9FA919E7DFA900FA252C /* CCClippingRectangleNode.cpp in Sources */, 3E2F27A619CFBFE100E7C490 /* AudioEngine.cpp in Sources */, 15AE1A3619AAD3D500C27E9E /* b2PolygonShape.cpp in Sources */, 50ABBD9B1925AB4100A911A9 /* ccGLStateCache.cpp in Sources */, 15AE188119AAD33D00C27E9E /* CCBReader.cpp in Sources */, - 15AE19E019AAD3A700C27E9E /* Skeleton.cpp in Sources */, 50ABBDB91925AB4100A911A9 /* CCTextureAtlas.cpp in Sources */, 15AE1BE419AAE01E00C27E9E /* CCTableView.cpp in Sources */, 15AE1A3219AAD3D500C27E9E /* b2CircleShape.cpp in Sources */, @@ -6208,7 +6641,6 @@ 50ABBE611925AB6F00A911A9 /* CCEventListenerAcceleration.cpp in Sources */, 50ABBD9F1925AB4100A911A9 /* CCGroupCommand.cpp in Sources */, 15AE1A8E19AAD40300C27E9E /* b2RopeJoint.cpp in Sources */, - 15AE19BC19AAD3A700C27E9E /* SkeletonBounds.cpp in Sources */, 50ABBD871925AB4100A911A9 /* CCCustomCommand.cpp in Sources */, 50ABBDBD1925AB4100A911A9 /* CCTextureCache.cpp in Sources */, 15AE188619AAD33D00C27E9E /* CCBSequenceProperty.cpp in Sources */, @@ -6229,8 +6661,10 @@ 15AE1B5D19AADA9900C27E9E /* UITextBMFont.cpp in Sources */, 15AE1BB519AADFEF00C27E9E /* SocketIO.cpp in Sources */, 15AE1B6519AADA9900C27E9E /* UIImageView.cpp in Sources */, + B29A7E1519EE1B7700872B35 /* BoundingBoxAttachment.c in Sources */, 15AE1A2519AAD3D500C27E9E /* b2CollideCircle.cpp in Sources */, 50ABBE5D1925AB6F00A911A9 /* CCEventListener.cpp in Sources */, + B29A7E2D19EE1B7700872B35 /* Slot.c in Sources */, 15AE182819AAD2F700C27E9E /* CCMeshSkin.cpp in Sources */, 15AE19A619AAD39600C27E9E /* TextReader.cpp in Sources */, 15AE198819AAD36A00C27E9E /* ButtonReader.cpp in Sources */, @@ -6238,12 +6672,12 @@ 15AE1A8419AAD40300C27E9E /* b2Joint.cpp in Sources */, 50ABBD601925AB0000A911A9 /* Vec4.cpp in Sources */, 50ABC05F1926664800A911A9 /* CCApplication-mac.mm in Sources */, + B29A7E2119EE1B7700872B35 /* PolygonBatch.cpp in Sources */, 15AE1A9219AAD40300C27E9E /* b2WheelJoint.cpp in Sources */, B29594B41926D5EC003EEF37 /* CCMeshCommand.cpp in Sources */, 15AE189619AAD33D00C27E9E /* CCMenuItemImageLoader.cpp in Sources */, 15AE1BB719AADFEF00C27E9E /* WebSocket.cpp in Sources */, 15AE1B5119AADA9900C27E9E /* UIPageView.cpp in Sources */, - 15AE19EA19AAD3A700C27E9E /* SlotData.cpp in Sources */, 50ED2BE619BEAF7900A0AB90 /* UIEditBoxImpl-wp8.cpp in Sources */, 15AE18EC19AAD35000C27E9E /* CCActionObject.cpp in Sources */, 1A01C68E18F57BE800EFE3A6 /* CCDictionary.cpp in Sources */, @@ -6270,7 +6704,6 @@ 1A01C69918F57BE800EFE3A6 /* CCSet.cpp in Sources */, 1A01C69D18F57BE800EFE3A6 /* CCString.cpp in Sources */, 15AE199219AAD37300C27E9E /* ImageViewReader.cpp in Sources */, - 15AE197D19AAD35700C27E9E /* CCNodeReader.cpp in Sources */, 2986667F18B1B246000E39CA /* CCTweenFunction.cpp in Sources */, 46A171051807CECB005B8026 /* CCPhysicsWorld.cpp in Sources */, 50ABBDA01925AB4100A911A9 /* CCGroupCommand.cpp in Sources */, @@ -6288,10 +6721,11 @@ 15AE183D19AAD2F700C27E9E /* CCSkeleton3D.cpp in Sources */, 503DD8E11926736A00CD74DD /* CCApplication-ios.mm in Sources */, 15AE1AAC19AAD40300C27E9E /* b2WorldCallbacks.cpp in Sources */, - 15AE1A0319AAD3A700C27E9E /* AttachmentLoader.cpp in Sources */, 15AE18C719AAD33D00C27E9E /* CCMenuItemImageLoader.cpp in Sources */, 50ABC01A1926664800A911A9 /* CCSAXParser.cpp in Sources */, + B29A7E1C19EE1B7700872B35 /* SkeletonJson.c in Sources */, B2CC507C19776DD10041958E /* CCPhysicsJoint.cpp in Sources */, + 38B8E2E219E671D2002D7CE7 /* UILayoutComponent.cpp in Sources */, B2165EEA19921124000BE3E6 /* CCPrimitiveCommand.cpp in Sources */, 15AE185C19AAD31200C27E9E /* CDOpenALSupport.m in Sources */, 15AE186119AAD31200C27E9E /* SimpleAudioEngine_objc.m in Sources */, @@ -6299,23 +6733,29 @@ 503DD8EE1926736A00CD74DD /* CCImage-ios.mm in Sources */, B37510811823ACA100B3BA6A /* CCPhysicsJointInfo_chipmunk.cpp in Sources */, 46A170FC1807CECB005B8026 /* CCPhysicsBody.cpp in Sources */, + 3828C0C819EB8ACA002AB57B /* atomicops_internals_x86_gcc.cc in Sources */, 15AE1BEA19AAE01E00C27E9E /* CCControlButton.cpp in Sources */, 50ABBD941925AB4100A911A9 /* CCGLProgramState.cpp in Sources */, B257B44F1989D5E800D9A687 /* CCPrimitive.cpp in Sources */, 50ABBE281925AB6F00A911A9 /* CCAutoreleasePool.cpp in Sources */, 15AE18D519AAD33D00C27E9E /* CCScale9SpriteLoader.cpp in Sources */, 15AE192919AAD35100C27E9E /* TriggerMng.cpp in Sources */, + B29A7E0C19EE1B7700872B35 /* Atlas.c in Sources */, + 3828C0A619EB8ACA002AB57B /* zero_copy_stream.cc in Sources */, 15AE185E19AAD31200C27E9E /* CocosDenshion.m in Sources */, 46A170FE1807CECB005B8026 /* CCPhysicsContact.cpp in Sources */, - 15AE1A0719AAD3A700C27E9E /* BoneData.cpp in Sources */, 1A570062180BC5A10088DEC7 /* CCAction.cpp in Sources */, 1A570066180BC5A10088DEC7 /* CCActionCamera.cpp in Sources */, B276EF661988D1D500CD400F /* CCVertexIndexBuffer.cpp in Sources */, 15AE1C0119AAE01E00C27E9E /* CCScrollView.cpp in Sources */, + 15B3708919EE414C00ABE682 /* Manifest.cpp in Sources */, 15AE1A9B19AAD40300C27E9E /* b2Settings.cpp in Sources */, 1A57006A180BC5A10088DEC7 /* CCActionCatmullRom.cpp in Sources */, + 3828C0D019EB8ACA002AB57B /* common.cc in Sources */, 15AE1BEF19AAE01E00C27E9E /* CCControlHuePicker.cpp in Sources */, + 3828C0A019EB8ACA002AB57B /* coded_stream.cc in Sources */, 15AE197B19AAD35700C27E9E /* CCFrame.cpp in Sources */, + B29A7E3E19EE1B7700872B35 /* AnimationState.c in Sources */, 15AE1ABE19AAD40300C27E9E /* b2PolygonContact.cpp in Sources */, 1A57006E180BC5A10088DEC7 /* CCActionEase.cpp in Sources */, 50ABBD8C1925AB4100A911A9 /* CCGLProgram.cpp in Sources */, @@ -6323,14 +6763,16 @@ 1A570072180BC5A10088DEC7 /* CCActionGrid.cpp in Sources */, 15AE1ABC19AAD40300C27E9E /* b2PolygonAndCircleContact.cpp in Sources */, 15AE1ADA19AAD41000C27E9E /* b2Rope.cpp in Sources */, + B29A7E1619EE1B7700872B35 /* BoundingBoxAttachment.c in Sources */, + DABC9FAA19E7DFA900FA252C /* CCClippingRectangleNode.cpp in Sources */, 15AE1BF119AAE01E00C27E9E /* CCControlPotentiometer.cpp in Sources */, 15AE1B8419AADA9A00C27E9E /* UITextField.cpp in Sources */, 15AE198E19AAD36E00C27E9E /* CheckBoxReader.cpp in Sources */, 50ABBE621925AB6F00A911A9 /* CCEventListenerAcceleration.cpp in Sources */, 15AE1AB619AAD40300C27E9E /* b2ContactSolver.cpp in Sources */, 292DB13E19B4574100A80320 /* UIEditBox.cpp in Sources */, + B29A7E0619EE1B7700872B35 /* extension.c in Sources */, 3E6176681960F89B00DE83F5 /* CCController-iOS.mm in Sources */, - 15AE19EF19AAD3A700C27E9E /* SkeletonBounds.cpp in Sources */, 15AE18B219AAD33D00C27E9E /* CCBReader.cpp in Sources */, 15AE193C19AAD35100C27E9E /* CCArmatureDefine.cpp in Sources */, B29594B51926D5EC003EEF37 /* CCMeshCommand.cpp in Sources */, @@ -6338,7 +6780,9 @@ 15AE1ACA19AAD40300C27E9E /* b2MouseJoint.cpp in Sources */, 15AE19AC19AAD39700C27E9E /* LoadingBarReader.cpp in Sources */, 50ABBE7E1925AB6F00A911A9 /* CCEventTouch.cpp in Sources */, + 3828C0AE19EB8ACA002AB57B /* zero_copy_stream_impl_lite.cc in Sources */, 15AE183119AAD2F700C27E9E /* CCOBB.cpp in Sources */, + B29A7DCA19EE1B7700872B35 /* SlotData.c in Sources */, 15AE18C519AAD33D00C27E9E /* CCLayerLoader.cpp in Sources */, 15AE1BF719AAE01E00C27E9E /* CCControlStepper.cpp in Sources */, 15AE1A3C19AAD3D500C27E9E /* b2CollideCircle.cpp in Sources */, @@ -6353,10 +6797,13 @@ 15AE1BF519AAE01E00C27E9E /* CCControlSlider.cpp in Sources */, 15AE181719AAD2F700C27E9E /* CCAttachNode.cpp in Sources */, 15AE18B719AAD33D00C27E9E /* CCBSequenceProperty.cpp in Sources */, - 15AE1A1119AAD3A700C27E9E /* RegionAttachment.cpp in Sources */, + B29A7E3819EE1B7700872B35 /* AnimationStateData.c in Sources */, + 3828C0E019EB8ACA002AB57B /* stringprintf.cc in Sources */, 15AE18B919AAD33D00C27E9E /* CCControlButtonLoader.cpp in Sources */, 50ABBE761925AB6F00A911A9 /* CCEventListenerTouch.cpp in Sources */, + 3828C0AA19EB8ACA002AB57B /* zero_copy_stream_impl.cc in Sources */, 15AE1AD219AAD40300C27E9E /* b2RopeJoint.cpp in Sources */, + B29A7DCC19EE1B7700872B35 /* Skeleton.c in Sources */, 15AE1A4919AAD3D500C27E9E /* b2CircleShape.cpp in Sources */, 15AE184119AAD2F700C27E9E /* CCSprite3D.cpp in Sources */, 50ABBE5A1925AB6F00A911A9 /* CCEventKeyboard.cpp in Sources */, @@ -6367,11 +6814,10 @@ 15AE1B7E19AADA9A00C27E9E /* UIText.cpp in Sources */, 15AE1A3E19AAD3D500C27E9E /* b2CollidePolygon.cpp in Sources */, 15AE1AB219AAD40300C27E9E /* b2CircleContact.cpp in Sources */, - 15AE1A1919AAD3A700C27E9E /* Skin.cpp in Sources */, + B29A7E2619EE1B7700872B35 /* Attachment.c in Sources */, 15AE18C119AAD33D00C27E9E /* CCLayerColorLoader.cpp in Sources */, B37510851823ACA100B3BA6A /* CCPhysicsWorldInfo_chipmunk.cpp in Sources */, 15AE1BB919AADFF000C27E9E /* HttpClient.cpp in Sources */, - 15AE1A1D19AAD3A700C27E9E /* SlotData.cpp in Sources */, 50ABBD551925AB0000A911A9 /* TransformUtils.cpp in Sources */, 292DB14419B4574100A80320 /* UIEditBoxImpl-android.cpp in Sources */, 15AE193619AAD35100C27E9E /* CCArmature.cpp in Sources */, @@ -6384,18 +6830,15 @@ 15AE192419AAD35100C27E9E /* CocoLoader.cpp in Sources */, 50ABBE421925AB6F00A911A9 /* CCDirector.cpp in Sources */, 15AE1C0319AAE01E00C27E9E /* CCTableView.cpp in Sources */, - 15AE1A1B19AAD3A700C27E9E /* Slot.cpp in Sources */, + 38B8E2D019E65F4C002D7CE7 /* CSParseBinary.pb.cc in Sources */, 1A57007E180BC5A10088DEC7 /* CCActionInterval.cpp in Sources */, - 15AE19F319AAD3A700C27E9E /* EventData.cpp in Sources */, 15AE1BF319AAE01E00C27E9E /* CCControlSaturationBrightnessPicker.cpp in Sources */, 1A570082180BC5A10088DEC7 /* CCActionManager.cpp in Sources */, 1A570086180BC5A10088DEC7 /* CCActionPageTurn3D.cpp in Sources */, 15AE1AB819AAD40300C27E9E /* b2EdgeAndCircleContact.cpp in Sources */, - 15AE19FF19AAD3A700C27E9E /* AtlasAttachmentLoader.cpp in Sources */, 1A57008A180BC5A10088DEC7 /* CCActionProgressTimer.cpp in Sources */, 15AE18AF19AAD33D00C27E9E /* CCBKeyframe.cpp in Sources */, - 15AE19FB19AAD3A700C27E9E /* AnimationStateData.cpp in Sources */, - 15AE1A0119AAD3A700C27E9E /* Attachment.cpp in Sources */, + B29A7DE419EE1B7700872B35 /* SkeletonBounds.c in Sources */, 50643BDF19BFCCA400EF68ED /* LocalStorage-android.cpp in Sources */, 50ABBED81925AB6F00A911A9 /* ZipUtils.cpp in Sources */, 15AE1B9219AADA9A00C27E9E /* UIHelper.cpp in Sources */, @@ -6412,20 +6855,24 @@ 1A57010F180BC8EE0088DEC7 /* CCDrawingPrimitives.cpp in Sources */, 1A570113180BC8EE0088DEC7 /* CCDrawNode.cpp in Sources */, 1A57011C180BC90D0088DEC7 /* CCGrabber.cpp in Sources */, + B29A7E0019EE1B7700872B35 /* Json.c in Sources */, 1A570120180BC90D0088DEC7 /* CCGrid.cpp in Sources */, 15AE181119AAD2F700C27E9E /* CCAnimation3D.cpp in Sources */, 1A57019E180BCB590088DEC7 /* CCFont.cpp in Sources */, 15AE1ACC19AAD40300C27E9E /* b2PrismaticJoint.cpp in Sources */, 15AE195F19AAD35100C27E9E /* CCSpriteFrameCacheHelper.cpp in Sources */, 15AE193019AAD35100C27E9E /* CCActionManagerEx.cpp in Sources */, + 15B3708119EE414C00ABE682 /* CCEventListenerAssetsManagerEx.cpp in Sources */, 503DD8E21926736A00CD74DD /* CCCommon-ios.mm in Sources */, 292DB14A19B4574100A80320 /* UIEditBoxImpl-ios.mm in Sources */, 15AE1A9419AAD40300C27E9E /* b2BlockAllocator.cpp in Sources */, + B29A7E3C19EE1B7700872B35 /* Animation.c in Sources */, 15AE1A4D19AAD3D500C27E9E /* b2PolygonShape.cpp in Sources */, 1A5701A2180BCB590088DEC7 /* CCFontAtlas.cpp in Sources */, 3E61781D1966A5A300DE83F5 /* CCController.cpp in Sources */, 50ABC00E1926664800A911A9 /* CCFileUtils.cpp in Sources */, 299CF1FC19A434BC00C378C1 /* ccRandom.cpp in Sources */, + DA8C62A319E52C6400000516 /* ioapi_mem.cpp in Sources */, 15AE18C919AAD33D00C27E9E /* CCMenuItemLoader.cpp in Sources */, 50ABBE241925AB6F00A911A9 /* base64.cpp in Sources */, 1A5701A6180BCB590088DEC7 /* CCFontAtlasCache.cpp in Sources */, @@ -6447,13 +6894,16 @@ 15AE1A3D19AAD3D500C27E9E /* b2CollideEdge.cpp in Sources */, 1A5701C2180BCB5A0088DEC7 /* CCLabelBMFont.cpp in Sources */, 1A087AE91860400400196EF5 /* edtaa3func.cpp in Sources */, + 3828C0EA19EB8ACA002AB57B /* wire_format_lite.cc in Sources */, 15AE194219AAD35100C27E9E /* CCColliderDetector.cpp in Sources */, 15AE1A9919AAD40300C27E9E /* b2Math.cpp in Sources */, - 15AE1A0B19AAD3A700C27E9E /* CCSkeletonAnimation.cpp in Sources */, + 3828C0B619EB8ACA002AB57B /* repeated_field.cc in Sources */, 15AE1B7C19AADA9A00C27E9E /* UISlider.cpp in Sources */, 15AE1AA519AAD40300C27E9E /* b2Fixture.cpp in Sources */, + B29A7DE219EE1B7700872B35 /* MeshAttachment.c in Sources */, 50ED2BE719BEAF7900A0AB90 /* UIEditBoxImpl-wp8.cpp in Sources */, 15AE1BAD19AADFDF00C27E9E /* UILayoutParameter.cpp in Sources */, + B29A7DDE19EE1B7700872B35 /* BoneData.c in Sources */, B375107E1823ACA100B3BA6A /* CCPhysicsContactInfo_chipmunk.cpp in Sources */, 15AE19AA19AAD39700C27E9E /* ListViewReader.cpp in Sources */, 1A5701C8180BCB5A0088DEC7 /* CCLabelTextFormatter.cpp in Sources */, @@ -6462,6 +6912,7 @@ 15AE1AD619AAD40300C27E9E /* b2WheelJoint.cpp in Sources */, 299754F5193EC95400A54AC3 /* ObjectFactory.cpp in Sources */, 1A5701DF180BCB8C0088DEC7 /* CCLayer.cpp in Sources */, + B29A7DEA19EE1B7700872B35 /* EventData.c in Sources */, 50ABBDBE1925AB4100A911A9 /* CCTextureCache.cpp in Sources */, 1A5701E3180BCB8C0088DEC7 /* CCScene.cpp in Sources */, 50ABBD611925AB0000A911A9 /* Vec4.cpp in Sources */, @@ -6470,13 +6921,17 @@ 50ABBD9C1925AB4100A911A9 /* ccGLStateCache.cpp in Sources */, 1A5701E7180BCB8C0088DEC7 /* CCTransition.cpp in Sources */, 15AE1AC019AAD40300C27E9E /* b2MotorJoint.cpp in Sources */, + 15B3707D19EE414C00ABE682 /* CCEventAssetsManagerEx.cpp in Sources */, 29394CF319B01DBA00D2DE1A /* UIWebView.mm in Sources */, 15AE18BD19AAD33D00C27E9E /* CCLabelBMFontLoader.cpp in Sources */, + B29A7E2E19EE1B7700872B35 /* Slot.c in Sources */, 50ABC01E1926664800A911A9 /* CCThread.cpp in Sources */, + B29A7DF419EE1B7700872B35 /* AttachmentLoader.c in Sources */, 1A5701EB180BCB8C0088DEC7 /* CCTransitionPageTurn.cpp in Sources */, 15AE1A9D19AAD40300C27E9E /* b2StackAllocator.cpp in Sources */, 1A5701EF180BCB8C0088DEC7 /* CCTransitionProgress.cpp in Sources */, 1A5701F8180BCBAD0088DEC7 /* CCMenu.cpp in Sources */, + 3828C0CC19EB8ACA002AB57B /* atomicops_internals_x86_msvc.cc in Sources */, 50ABBD511925AB0000A911A9 /* Quaternion.cpp in Sources */, 1A5701FC180BCBAD0088DEC7 /* CCMenuItem.cpp in Sources */, 15AE195119AAD35100C27E9E /* CCDecorativeDisplay.cpp in Sources */, @@ -6489,14 +6944,13 @@ 15AE193819AAD35100C27E9E /* CCArmatureAnimation.cpp in Sources */, 503DD8ED1926736A00CD74DD /* CCGLViewImpl-ios.mm in Sources */, 15AE197719AAD35700C27E9E /* CCActionTimeline.cpp in Sources */, - 15AE1A0F19AAD3A700C27E9E /* Json.cpp in Sources */, 15AE19B419AAD39700C27E9E /* TextAtlasReader.cpp in Sources */, 15AE194019AAD35100C27E9E /* CCBone.cpp in Sources */, 1A570215180BCBF40088DEC7 /* CCRenderTexture.cpp in Sources */, 1A570222180BCC1A0088DEC7 /* CCParticleBatchNode.cpp in Sources */, 292DB15019B4574100A80320 /* UIEditBoxImpl-stub.cpp in Sources */, - 15AE19F119AAD3A700C27E9E /* Event.cpp in Sources */, 15AE185F19AAD31200C27E9E /* SimpleAudioEngine.mm in Sources */, + B29A7DC819EE1B7700872B35 /* SkeletonRenderer.cpp in Sources */, 15AE1BE819AAE01E00C27E9E /* CCControl.cpp in Sources */, 1A570226180BCC1A0088DEC7 /* CCParticleExamples.cpp in Sources */, 15AE194919AAD35100C27E9E /* CCComController.cpp in Sources */, @@ -6510,22 +6964,22 @@ B24AA98A195A675C007B4522 /* CCFastTMXTiledMap.cpp in Sources */, 15AE18CE19AAD33D00C27E9E /* CCNodeLoader.cpp in Sources */, 29394CF719B01DBA00D2DE1A /* UIWebViewImpl-ios.mm in Sources */, + B29A7DF219EE1B7700872B35 /* AtlasAttachmentLoader.c in Sources */, 15AE1AC619AAD40300C27E9E /* b2GearJoint.cpp in Sources */, B24AA986195A675C007B4522 /* CCFastTMXLayer.cpp in Sources */, 1A57022E180BCC1A0088DEC7 /* CCParticleSystemQuad.cpp in Sources */, - 15AE1A1319AAD3A700C27E9E /* Skeleton.cpp in Sources */, 50ABBD901925AB4100A911A9 /* CCGLProgramCache.cpp in Sources */, 15AE197F19AAD35700C27E9E /* CCTimeLine.cpp in Sources */, + B29A7DD819EE1B7700872B35 /* SkeletonData.c in Sources */, 1A57027F180BCC900088DEC7 /* CCSprite.cpp in Sources */, 15AE194719AAD35100C27E9E /* CCComAudio.cpp in Sources */, - 15AE19F919AAD3A700C27E9E /* AnimationState.cpp in Sources */, 15AE192719AAD35100C27E9E /* TriggerBase.cpp in Sources */, 15AE1B8819AADA9A00C27E9E /* UICheckBox.cpp in Sources */, 15AE1A4B19AAD3D500C27E9E /* b2EdgeShape.cpp in Sources */, 15AE18B519AAD33D00C27E9E /* CCBSequence.cpp in Sources */, + B29A7DD619EE1B7700872B35 /* RegionAttachment.c in Sources */, 1A570283180BCC900088DEC7 /* CCSpriteBatchNode.cpp in Sources */, 1A570287180BCC900088DEC7 /* CCSpriteFrame.cpp in Sources */, - 15AE1A0919AAD3A700C27E9E /* CCSkeleton.cpp in Sources */, 15AE193E19AAD35100C27E9E /* CCBatchNode.cpp in Sources */, 15AE185919AAD31200C27E9E /* CDAudioManager.m in Sources */, 1A57028B180BCC900088DEC7 /* CCSpriteFrameCache.cpp in Sources */, @@ -6540,12 +6994,10 @@ 15AE1A9F19AAD40300C27E9E /* b2Timer.cpp in Sources */, 15AE1AD419AAD40300C27E9E /* b2WeldJoint.cpp in Sources */, 1A5702C9180BCE370088DEC7 /* CCTextFieldTTF.cpp in Sources */, - 15AE1A0519AAD3A700C27E9E /* Bone.cpp in Sources */, 15AE1C1719AAE2C700C27E9E /* CCPhysicsSprite.cpp in Sources */, 1A5702EB180BCE750088DEC7 /* CCTileMapAtlas.cpp in Sources */, 1A5702EF180BCE750088DEC7 /* CCTMXLayer.cpp in Sources */, 15AE1BA519AADFDF00C27E9E /* UIHBox.cpp in Sources */, - 15AE19F519AAD3A700C27E9E /* BoundingBoxAttachment.cpp in Sources */, 1A5702F3180BCE750088DEC7 /* CCTMXObjectGroup.cpp in Sources */, 15AE1BAF19AADFDF00C27E9E /* UILayoutManager.cpp in Sources */, 15AE182119AAD2F700C27E9E /* CCBundleReader.cpp in Sources */, @@ -6553,17 +7005,19 @@ 15AE18D919AAD33D00C27E9E /* CCSpriteLoader.cpp in Sources */, 50ABBECC1925AB6F00A911A9 /* s3tc.cpp in Sources */, 15AE1B7819AADA9A00C27E9E /* UIRichText.cpp in Sources */, + B29A7E3019EE1B7700872B35 /* SkeletonAnimation.cpp in Sources */, 15AE195D19AAD35100C27E9E /* CCSkin.cpp in Sources */, 1A5702F7180BCE750088DEC7 /* CCTMXTiledMap.cpp in Sources */, 50ABBEC61925AB6F00A911A9 /* etc1.cpp in Sources */, 50ABBE8C1925AB6F00A911A9 /* CCNS.cpp in Sources */, + B29A7DE019EE1B7700872B35 /* IkConstraintData.c in Sources */, + B29A7DFC19EE1B7700872B35 /* spine-cocos2dx.cpp in Sources */, 15AE1BA919AADFDF00C27E9E /* UIVBox.cpp in Sources */, 50ABBDAE1925AB4100A911A9 /* CCRenderer.cpp in Sources */, 50ABBDBA1925AB4100A911A9 /* CCTextureAtlas.cpp in Sources */, 1A5702FB180BCE750088DEC7 /* CCTMXXMLParser.cpp in Sources */, 1A570301180BCE890088DEC7 /* CCParallaxNode.cpp in Sources */, 15AE1A4519AAD3D500C27E9E /* b2TimeOfImpact.cpp in Sources */, - 15AE1A1F19AAD3A700C27E9E /* spine-cocos2dx.cpp in Sources */, 1A57030D180BCF190088DEC7 /* CCComponent.cpp in Sources */, 15AE1B8F19AADA9A00C27E9E /* UIDeprecated.cpp in Sources */, 464AD6E6197EBB1400E502D8 /* pvr.cpp in Sources */, @@ -6576,31 +7030,31 @@ B375107C1823ACA100B3BA6A /* CCPhysicsBodyInfo_chipmunk.cpp in Sources */, 50ABBEB61925AB6F00A911A9 /* CCUserDefault-android.cpp in Sources */, 1A57034C180BD09B0088DEC7 /* tinyxml2.cpp in Sources */, + 3828C0D819EB8ACA002AB57B /* once.cc in Sources */, 50ABBDB61925AB4100A911A9 /* CCTexture2D.cpp in Sources */, 15AE1BAB19AADFDF00C27E9E /* UILayout.cpp in Sources */, 1A570355180BD0B00088DEC7 /* ioapi.cpp in Sources */, 1A570359180BD0B00088DEC7 /* unzip.cpp in Sources */, 15AE18BB19AAD33D00C27E9E /* CCControlLoader.cpp in Sources */, 15AE19B819AAD39700C27E9E /* TextFieldReader.cpp in Sources */, - 15AE1A1519AAD3A700C27E9E /* SkeletonData.cpp in Sources */, 15AE195B19AAD35100C27E9E /* CCSGUIReader.cpp in Sources */, 50ABBD881925AB4100A911A9 /* CCCustomCommand.cpp in Sources */, 15AE19B019AAD39700C27E9E /* ScrollViewReader.cpp in Sources */, 50ABBE941925AB6F00A911A9 /* CCProfiling.cpp in Sources */, - 15AE1A1719AAD3A700C27E9E /* SkeletonJson.cpp in Sources */, 15AE182D19AAD2F700C27E9E /* CCMeshVertexIndexData.cpp in Sources */, 50ABBE5E1925AB6F00A911A9 /* CCEventListener.cpp in Sources */, 15AE1BC719AAE00000C27E9E /* AssetsManager.cpp in Sources */, 50ABBEA81925AB6F00A911A9 /* CCTouch.cpp in Sources */, + B29A7DEE19EE1B7700872B35 /* IkConstraint.c in Sources */, 15AE1A9619AAD40300C27E9E /* b2Draw.cpp in Sources */, 503DD8E91926736A00CD74DD /* CCES2Renderer-ios.m in Sources */, 5027253D190BF1B900AAF4ED /* cocos2d.cpp in Sources */, + B29A7E0819EE1B7700872B35 /* SkinnedMeshAttachment.c in Sources */, 15AE183919AAD2F700C27E9E /* CCRay.cpp in Sources */, 15AE1B8219AADA9A00C27E9E /* UITextBMFont.cpp in Sources */, 50ABBE6A1925AB6F00A911A9 /* CCEventListenerFocus.cpp in Sources */, 50ABBE661925AB6F00A911A9 /* CCEventListenerCustom.cpp in Sources */, 503DD8F81926B0DB00CD74DD /* CCIMEDispatcher.cpp in Sources */, - 15AE19FD19AAD3A700C27E9E /* Atlas.cpp in Sources */, 50ABBDB21925AB4100A911A9 /* ccShaders.cpp in Sources */, 50ABBD451925AB0000A911A9 /* CCVertex.cpp in Sources */, 50ABBEB01925AB6F00A911A9 /* CCUserDefault.cpp in Sources */, @@ -6619,10 +7073,13 @@ 50ABBDA81925AB4100A911A9 /* CCRenderCommand.cpp in Sources */, 15AE1B7419AADA9A00C27E9E /* UILoadingBar.cpp in Sources */, 50ABBEA41925AB6F00A911A9 /* CCScriptSupport.cpp in Sources */, + B29A7DD219EE1B7700872B35 /* Skin.c in Sources */, 3E6176761960F89B00DE83F5 /* CCEventListenerController.cpp in Sources */, 15AE1AC219AAD40300C27E9E /* b2DistanceJoint.cpp in Sources */, + 3828C0B219EB8ACA002AB57B /* message_lite.cc in Sources */, 503DD8E71926736A00CD74DD /* CCEAGLView-ios.mm in Sources */, 3E2BDAEC19C0436F0055CDCD /* AudioEngine.cpp in Sources */, + 15B3707919EE414C00ABE682 /* AssetsManagerEx.cpp in Sources */, 50ABBDA41925AB4100A911A9 /* CCQuadCommand.cpp in Sources */, 15AE18C319AAD33D00C27E9E /* CCLayerGradientLoader.cpp in Sources */, 15AE197919AAD35700C27E9E /* CCActionTimelineCache.cpp in Sources */, @@ -6641,18 +7098,20 @@ 3EA1073019D7F37700CAB794 /* CCLight.cpp in Sources */, 15AE18BF19AAD33D00C27E9E /* CCLabelTTFLoader.cpp in Sources */, 15AE1B9519AADA9A00C27E9E /* CocosGUI.cpp in Sources */, - 15AE1A0D19AAD3A700C27E9E /* extension.cpp in Sources */, 15AE180919AAD2F700C27E9E /* CCAABB.cpp in Sources */, 15AE1AA719AAD40300C27E9E /* b2Island.cpp in Sources */, 3E6176741960F89B00DE83F5 /* CCEventController.cpp in Sources */, 50ABBE361925AB6F00A911A9 /* CCConsole.cpp in Sources */, + B29A7E1419EE1B7700872B35 /* Bone.c in Sources */, 503DD8E51926736A00CD74DD /* CCDirectorCaller-ios.mm in Sources */, 15AE194519AAD35100C27E9E /* CCComAttribute.cpp in Sources */, 15AE18CC19AAD33D00C27E9E /* CCNode+CCBRelativePositioning.cpp in Sources */, 50CB247819D9C5A100687767 /* AudioCache.mm in Sources */, 50ABBD5D1925AB0000A911A9 /* Vec3.cpp in Sources */, + 38B8E2D619E66581002D7CE7 /* CSLoader.cpp in Sources */, 50ABC0121926664800A911A9 /* CCGLView.cpp in Sources */, 50ABC0021926664800A911A9 /* CCLock-apple.cpp in Sources */, + 3828C09819EB8ACA002AB57B /* extension_set.cc in Sources */, 50ABBEBC1925AB6F00A911A9 /* ccUtils.cpp in Sources */, 15AE1A4719AAD3D500C27E9E /* b2ChainShape.cpp in Sources */, 50ABBE721925AB6F00A911A9 /* CCEventListenerMouse.cpp in Sources */, @@ -6667,13 +7126,16 @@ 15AE183519AAD2F700C27E9E /* CCObjLoader.cpp in Sources */, 50ABBED01925AB6F00A911A9 /* TGAlib.cpp in Sources */, 1A01C68518F57BE800EFE3A6 /* CCArray.cpp in Sources */, + B29A7E2219EE1B7700872B35 /* PolygonBatch.cpp in Sources */, 503DD8E31926736A00CD74DD /* CCDevice-ios.mm in Sources */, 15AE1AB419AAD40300C27E9E /* b2Contact.cpp in Sources */, - 15AE19F719AAD3A700C27E9E /* Animation.cpp in Sources */, + B29A7DDC19EE1B7700872B35 /* Event.c in Sources */, 50ABBEB41925AB6F00A911A9 /* CCUserDefault-apple.mm in Sources */, 1A1645B1191B726C008C7C7F /* ConvertUTF.c in Sources */, 50ABBE3A1925AB6F00A911A9 /* CCData.cpp in Sources */, 1A1645B3191B726C008C7C7F /* ConvertUTFWrapper.cpp in Sources */, + 15B3708519EE414C00ABE682 /* Downloader.cpp in Sources */, + 3828C09C19EB8ACA002AB57B /* generated_message_util.cc in Sources */, 1ABA68AF1888D700007D1BB4 /* CCFontCharMap.cpp in Sources */, 15AE180D19AAD2F700C27E9E /* CCAnimate3D.cpp in Sources */, 50ABBE7A1925AB6F00A911A9 /* CCEventMouse.cpp in Sources */, @@ -6719,7 +7181,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; SKIP_INSTALL = YES; - USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/.. $(SRCROOT)/../cocos $(SRCROOT)/../cocos/editor-support $(SRCROOT)/../external/chipmunk/include/chipmunk $(SRCROOT)/../external"; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/.. $(SRCROOT)/../cocos $(SRCROOT)/../cocos/editor-support $(SRCROOT)/../external/chipmunk/include/chipmunk $(SRCROOT)/../external $(SRCROOT)/../external/protobuf-lite/src"; }; name = Debug; }; @@ -6752,7 +7214,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; SKIP_INSTALL = YES; - USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/.. $(SRCROOT)/../cocos $(SRCROOT)/../cocos/editor-support $(SRCROOT)/../external/chipmunk/include/chipmunk $(SRCROOT)/../external"; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/.. $(SRCROOT)/../cocos $(SRCROOT)/../cocos/editor-support $(SRCROOT)/../external/chipmunk/include/chipmunk $(SRCROOT)/../external $(SRCROOT)/../external/protobuf-lite/src"; VALIDATE_PRODUCT = YES; }; name = Release; diff --git a/build/cocos2d_tests.xcodeproj/project.pbxproj b/build/cocos2d_tests.xcodeproj/project.pbxproj index 9c7f793e97..1dc2263953 100644 --- a/build/cocos2d_tests.xcodeproj/project.pbxproj +++ b/build/cocos2d_tests.xcodeproj/project.pbxproj @@ -38,26 +38,8 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 1503FAB318DA8B6C00F6518C /* ftp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAA918DA8B6C00F6518C /* ftp.lua */; }; - 1503FAB418DA8B6C00F6518C /* ftp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAA918DA8B6C00F6518C /* ftp.lua */; }; - 1503FAB518DA8B6C00F6518C /* headers.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAA18DA8B6C00F6518C /* headers.lua */; }; - 1503FAB618DA8B6C00F6518C /* headers.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAA18DA8B6C00F6518C /* headers.lua */; }; - 1503FAB718DA8B6C00F6518C /* http.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAB18DA8B6C00F6518C /* http.lua */; }; - 1503FAB818DA8B6C00F6518C /* http.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAB18DA8B6C00F6518C /* http.lua */; }; - 1503FAB918DA8B6C00F6518C /* ltn12.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAC18DA8B6C00F6518C /* ltn12.lua */; }; - 1503FABA18DA8B6C00F6518C /* ltn12.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAC18DA8B6C00F6518C /* ltn12.lua */; }; - 1503FABB18DA8B6C00F6518C /* mbox.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAD18DA8B6C00F6518C /* mbox.lua */; }; - 1503FABC18DA8B6C00F6518C /* mbox.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAD18DA8B6C00F6518C /* mbox.lua */; }; - 1503FABD18DA8B6C00F6518C /* mime.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAE18DA8B6C00F6518C /* mime.lua */; }; - 1503FABE18DA8B6C00F6518C /* mime.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAE18DA8B6C00F6518C /* mime.lua */; }; - 1503FABF18DA8B6C00F6518C /* smtp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAF18DA8B6C00F6518C /* smtp.lua */; }; - 1503FAC018DA8B6C00F6518C /* smtp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAF18DA8B6C00F6518C /* smtp.lua */; }; - 1503FAC118DA8B6C00F6518C /* socket.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB018DA8B6C00F6518C /* socket.lua */; }; - 1503FAC218DA8B6C00F6518C /* socket.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB018DA8B6C00F6518C /* socket.lua */; }; - 1503FAC318DA8B6C00F6518C /* tp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB118DA8B6C00F6518C /* tp.lua */; }; - 1503FAC418DA8B6C00F6518C /* tp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB118DA8B6C00F6518C /* tp.lua */; }; - 1503FAC518DA8B6C00F6518C /* url.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB218DA8B6C00F6518C /* url.lua */; }; - 1503FAC618DA8B6C00F6518C /* url.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB218DA8B6C00F6518C /* url.lua */; }; + 150F918819DA409E00B89F57 /* lua_test_bindings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 150F918619DA409E00B89F57 /* lua_test_bindings.cpp */; }; + 150F918919DA409F00B89F57 /* lua_test_bindings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 150F918619DA409E00B89F57 /* lua_test_bindings.cpp */; }; 15427B79198B879900DC375D /* libluacocos2d iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15EFA665198B33EE000C57D3 /* libluacocos2d iOS.a */; }; 15427B7A198B87AA00DC375D /* libcocos2d iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 46A15FBE1807A4F9005B8026 /* libcocos2d iOS.a */; }; 15427B7D198B880100DC375D /* lua_cocos2dx_controller_manual.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15427B7B198B880100DC375D /* lua_cocos2dx_controller_manual.cpp */; }; @@ -68,6 +50,11 @@ 15AECE0F195C1FDD00907DB0 /* cocosvideo.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 3EA0FB5D191B92F100B170C8 /* cocosvideo.mp4 */; }; 15AECE25195D467D00907DB0 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EA0FB65191B933000B170C8 /* MediaPlayer.framework */; }; 15B0870D195AD52000D6F62B /* ActionTimeline in Resources */ = {isa = PBXBuildFile; fileRef = 38FA2E75194AECF800FF2BE4 /* ActionTimeline */; }; + 15B3709319EE5D1000ABE682 /* Manifests in Resources */ = {isa = PBXBuildFile; fileRef = 15B3709219EE5D1000ABE682 /* Manifests */; }; + 15B3709419EE5D1000ABE682 /* Manifests in Resources */ = {isa = PBXBuildFile; fileRef = 15B3709219EE5D1000ABE682 /* Manifests */; }; + 15B3709819EE5DBA00ABE682 /* AssetsManagerExTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15B3709619EE5DBA00ABE682 /* AssetsManagerExTest.cpp */; }; + 15B3709919EE5DBA00ABE682 /* AssetsManagerExTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15B3709619EE5DBA00ABE682 /* AssetsManagerExTest.cpp */; }; + 15B3709A19EE5EED00ABE682 /* Manifests in Resources */ = {isa = PBXBuildFile; fileRef = 15B3709219EE5D1000ABE682 /* Manifests */; }; 15C64825165F3934007D4F18 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15C64824165F3934007D4F18 /* OpenGL.framework */; }; 15C64827165F394E007D4F18 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15C64826165F394E007D4F18 /* QuartzCore.framework */; }; 15C64829165F396B007D4F18 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15C64828165F396B007D4F18 /* OpenAL.framework */; }; @@ -75,26 +62,6 @@ 15C6482D165F3988007D4F18 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15C6482C165F3988007D4F18 /* AudioToolbox.framework */; }; 15C6482F165F399D007D4F18 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 15C6482E165F399D007D4F18 /* libz.dylib */; }; 15C64833165F3AFD007D4F18 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15C64832165F3AFD007D4F18 /* Foundation.framework */; }; - 15C90B3718E66BE000D69802 /* ftp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAA918DA8B6C00F6518C /* ftp.lua */; }; - 15C90B3A18E66BE200D69802 /* ftp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAA918DA8B6C00F6518C /* ftp.lua */; }; - 15C90B3B18E66BEB00D69802 /* headers.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAA18DA8B6C00F6518C /* headers.lua */; }; - 15C90B3C18E66BEC00D69802 /* headers.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAA18DA8B6C00F6518C /* headers.lua */; }; - 15C90B3D18E66BF100D69802 /* http.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAB18DA8B6C00F6518C /* http.lua */; }; - 15C90B3E18E66BF200D69802 /* http.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAB18DA8B6C00F6518C /* http.lua */; }; - 15C90B3F18E66C0C00D69802 /* ltn12.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAC18DA8B6C00F6518C /* ltn12.lua */; }; - 15C90B4018E66C0D00D69802 /* ltn12.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAC18DA8B6C00F6518C /* ltn12.lua */; }; - 15C90B4118E66C1100D69802 /* mbox.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAD18DA8B6C00F6518C /* mbox.lua */; }; - 15C90B4218E66C1200D69802 /* mbox.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAD18DA8B6C00F6518C /* mbox.lua */; }; - 15C90B4318E66C1700D69802 /* mime.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAE18DA8B6C00F6518C /* mime.lua */; }; - 15C90B4418E66C1800D69802 /* mime.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAE18DA8B6C00F6518C /* mime.lua */; }; - 15C90B4518E66C1E00D69802 /* smtp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAF18DA8B6C00F6518C /* smtp.lua */; }; - 15C90B4618E66C1F00D69802 /* smtp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAAF18DA8B6C00F6518C /* smtp.lua */; }; - 15C90B4718E66C2400D69802 /* socket.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB018DA8B6C00F6518C /* socket.lua */; }; - 15C90B4818E66C2500D69802 /* socket.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB018DA8B6C00F6518C /* socket.lua */; }; - 15C90B4918E66C2A00D69802 /* tp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB118DA8B6C00F6518C /* tp.lua */; }; - 15C90B4A18E66C2B00D69802 /* tp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB118DA8B6C00F6518C /* tp.lua */; }; - 15C90B4B18E66C2F00D69802 /* url.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB218DA8B6C00F6518C /* url.lua */; }; - 15C90B4C18E66C3100D69802 /* url.lua in Resources */ = {isa = PBXBuildFile; fileRef = 1503FAB218DA8B6C00F6518C /* url.lua */; }; 15CBA9AF196EE80B005877BB /* fonts in Resources */ = {isa = PBXBuildFile; fileRef = 3E6177F01960FEFE00DE83F5 /* fonts */; }; 15CBA9B0196EE80B005877BB /* ipad in Resources */ = {isa = PBXBuildFile; fileRef = 3E6177F11960FEFE00DE83F5 /* ipad */; }; 15CBA9B1196EE80B005877BB /* ipadhd in Resources */ = {isa = PBXBuildFile; fileRef = 3E6177F21960FEFE00DE83F5 /* ipadhd */; }; @@ -117,126 +84,6 @@ 15CBA9DE196EEAF8005877BB /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E61773C1960FBD100DE83F5 /* GameController.framework */; }; 15CBA9E0196EEBD4005877BB /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EA0FB65191B933000B170C8 /* MediaPlayer.framework */; }; 15CBA9ED196F7BD8005877BB /* lua_cocos2dx_controller_auto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 15CBA9EB196F7BD8005877BB /* lua_cocos2dx_controller_auto.cpp */; }; - 15D1FCEC1998637C00302043 /* bitExtend.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCDE1998637C00302043 /* bitExtend.lua */; }; - 15D1FCED1998637C00302043 /* bitExtend.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCDE1998637C00302043 /* bitExtend.lua */; }; - 15D1FCEE1998637C00302043 /* bitExtend.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCDE1998637C00302043 /* bitExtend.lua */; }; - 15D1FCEF1998637C00302043 /* bitExtend.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCDE1998637C00302043 /* bitExtend.lua */; }; - 15D1FCF01998637C00302043 /* bitExtend.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCDE1998637C00302043 /* bitExtend.lua */; }; - 15D1FCF11998637C00302043 /* Cocos2d.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCDF1998637C00302043 /* Cocos2d.lua */; }; - 15D1FCF21998637C00302043 /* Cocos2d.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCDF1998637C00302043 /* Cocos2d.lua */; }; - 15D1FCF31998637C00302043 /* Cocos2d.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCDF1998637C00302043 /* Cocos2d.lua */; }; - 15D1FCF41998637C00302043 /* Cocos2d.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCDF1998637C00302043 /* Cocos2d.lua */; }; - 15D1FCF51998637C00302043 /* Cocos2d.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCDF1998637C00302043 /* Cocos2d.lua */; }; - 15D1FCF61998637C00302043 /* Cocos2dConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE01998637C00302043 /* Cocos2dConstants.lua */; }; - 15D1FCF71998637C00302043 /* Cocos2dConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE01998637C00302043 /* Cocos2dConstants.lua */; }; - 15D1FCF81998637C00302043 /* Cocos2dConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE01998637C00302043 /* Cocos2dConstants.lua */; }; - 15D1FCF91998637C00302043 /* Cocos2dConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE01998637C00302043 /* Cocos2dConstants.lua */; }; - 15D1FCFA1998637C00302043 /* Cocos2dConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE01998637C00302043 /* Cocos2dConstants.lua */; }; - 15D1FCFB1998637C00302043 /* DeprecatedCocos2dClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE11998637C00302043 /* DeprecatedCocos2dClass.lua */; }; - 15D1FCFC1998637C00302043 /* DeprecatedCocos2dClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE11998637C00302043 /* DeprecatedCocos2dClass.lua */; }; - 15D1FCFD1998637C00302043 /* DeprecatedCocos2dClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE11998637C00302043 /* DeprecatedCocos2dClass.lua */; }; - 15D1FCFE1998637C00302043 /* DeprecatedCocos2dClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE11998637C00302043 /* DeprecatedCocos2dClass.lua */; }; - 15D1FCFF1998637C00302043 /* DeprecatedCocos2dClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE11998637C00302043 /* DeprecatedCocos2dClass.lua */; }; - 15D1FD001998637C00302043 /* DeprecatedCocos2dEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE21998637C00302043 /* DeprecatedCocos2dEnum.lua */; }; - 15D1FD011998637C00302043 /* DeprecatedCocos2dEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE21998637C00302043 /* DeprecatedCocos2dEnum.lua */; }; - 15D1FD021998637C00302043 /* DeprecatedCocos2dEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE21998637C00302043 /* DeprecatedCocos2dEnum.lua */; }; - 15D1FD031998637C00302043 /* DeprecatedCocos2dEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE21998637C00302043 /* DeprecatedCocos2dEnum.lua */; }; - 15D1FD041998637C00302043 /* DeprecatedCocos2dEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE21998637C00302043 /* DeprecatedCocos2dEnum.lua */; }; - 15D1FD051998637C00302043 /* DeprecatedCocos2dFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE31998637C00302043 /* DeprecatedCocos2dFunc.lua */; }; - 15D1FD061998637C00302043 /* DeprecatedCocos2dFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE31998637C00302043 /* DeprecatedCocos2dFunc.lua */; }; - 15D1FD071998637C00302043 /* DeprecatedCocos2dFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE31998637C00302043 /* DeprecatedCocos2dFunc.lua */; }; - 15D1FD081998637C00302043 /* DeprecatedCocos2dFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE31998637C00302043 /* DeprecatedCocos2dFunc.lua */; }; - 15D1FD091998637C00302043 /* DeprecatedCocos2dFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE31998637C00302043 /* DeprecatedCocos2dFunc.lua */; }; - 15D1FD0A1998637C00302043 /* DeprecatedOpenglEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE41998637C00302043 /* DeprecatedOpenglEnum.lua */; }; - 15D1FD0B1998637C00302043 /* DeprecatedOpenglEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE41998637C00302043 /* DeprecatedOpenglEnum.lua */; }; - 15D1FD0C1998637C00302043 /* DeprecatedOpenglEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE41998637C00302043 /* DeprecatedOpenglEnum.lua */; }; - 15D1FD0D1998637C00302043 /* DeprecatedOpenglEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE41998637C00302043 /* DeprecatedOpenglEnum.lua */; }; - 15D1FD0E1998637C00302043 /* DeprecatedOpenglEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE41998637C00302043 /* DeprecatedOpenglEnum.lua */; }; - 15D1FD0F1998637C00302043 /* DrawPrimitives.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE51998637C00302043 /* DrawPrimitives.lua */; }; - 15D1FD101998637C00302043 /* DrawPrimitives.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE51998637C00302043 /* DrawPrimitives.lua */; }; - 15D1FD111998637C00302043 /* DrawPrimitives.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE51998637C00302043 /* DrawPrimitives.lua */; }; - 15D1FD121998637C00302043 /* DrawPrimitives.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE51998637C00302043 /* DrawPrimitives.lua */; }; - 15D1FD131998637C00302043 /* DrawPrimitives.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE51998637C00302043 /* DrawPrimitives.lua */; }; - 15D1FD141998637C00302043 /* extern.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE61998637C00302043 /* extern.lua */; }; - 15D1FD151998637C00302043 /* extern.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE61998637C00302043 /* extern.lua */; }; - 15D1FD161998637C00302043 /* extern.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE61998637C00302043 /* extern.lua */; }; - 15D1FD171998637C00302043 /* extern.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE61998637C00302043 /* extern.lua */; }; - 15D1FD181998637C00302043 /* extern.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE61998637C00302043 /* extern.lua */; }; - 15D1FD191998637C00302043 /* json.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE71998637C00302043 /* json.lua */; }; - 15D1FD1A1998637C00302043 /* json.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE71998637C00302043 /* json.lua */; }; - 15D1FD1B1998637C00302043 /* json.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE71998637C00302043 /* json.lua */; }; - 15D1FD1C1998637C00302043 /* json.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE71998637C00302043 /* json.lua */; }; - 15D1FD1D1998637C00302043 /* json.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE71998637C00302043 /* json.lua */; }; - 15D1FD1E1998637C00302043 /* luaj.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE81998637C00302043 /* luaj.lua */; }; - 15D1FD1F1998637C00302043 /* luaj.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE81998637C00302043 /* luaj.lua */; }; - 15D1FD201998637C00302043 /* luaj.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE81998637C00302043 /* luaj.lua */; }; - 15D1FD211998637C00302043 /* luaj.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE81998637C00302043 /* luaj.lua */; }; - 15D1FD221998637C00302043 /* luaj.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE81998637C00302043 /* luaj.lua */; }; - 15D1FD231998637C00302043 /* luaoc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE91998637C00302043 /* luaoc.lua */; }; - 15D1FD241998637C00302043 /* luaoc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE91998637C00302043 /* luaoc.lua */; }; - 15D1FD251998637C00302043 /* luaoc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE91998637C00302043 /* luaoc.lua */; }; - 15D1FD261998637C00302043 /* luaoc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE91998637C00302043 /* luaoc.lua */; }; - 15D1FD271998637C00302043 /* luaoc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCE91998637C00302043 /* luaoc.lua */; }; - 15D1FD281998637C00302043 /* Opengl.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCEA1998637C00302043 /* Opengl.lua */; }; - 15D1FD291998637C00302043 /* Opengl.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCEA1998637C00302043 /* Opengl.lua */; }; - 15D1FD2A1998637C00302043 /* Opengl.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCEA1998637C00302043 /* Opengl.lua */; }; - 15D1FD2B1998637C00302043 /* Opengl.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCEA1998637C00302043 /* Opengl.lua */; }; - 15D1FD2C1998637C00302043 /* Opengl.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCEA1998637C00302043 /* Opengl.lua */; }; - 15D1FD2D1998637C00302043 /* OpenglConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCEB1998637C00302043 /* OpenglConstants.lua */; }; - 15D1FD2E1998637C00302043 /* OpenglConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCEB1998637C00302043 /* OpenglConstants.lua */; }; - 15D1FD2F1998637C00302043 /* OpenglConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCEB1998637C00302043 /* OpenglConstants.lua */; }; - 15D1FD301998637C00302043 /* OpenglConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCEB1998637C00302043 /* OpenglConstants.lua */; }; - 15D1FD311998637C00302043 /* OpenglConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FCEB1998637C00302043 /* OpenglConstants.lua */; }; - 15D1FD34199863BA00302043 /* CCBReaderLoad.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD32199863BA00302043 /* CCBReaderLoad.lua */; }; - 15D1FD35199863BA00302043 /* CCBReaderLoad.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD32199863BA00302043 /* CCBReaderLoad.lua */; }; - 15D1FD36199863BA00302043 /* DeprecatedCocosBuilderClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD33199863BA00302043 /* DeprecatedCocosBuilderClass.lua */; }; - 15D1FD37199863BA00302043 /* DeprecatedCocosBuilderClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD33199863BA00302043 /* DeprecatedCocosBuilderClass.lua */; }; - 15D1FD3B199863CA00302043 /* AudioEngine.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD38199863CA00302043 /* AudioEngine.lua */; }; - 15D1FD3C199863CA00302043 /* AudioEngine.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD38199863CA00302043 /* AudioEngine.lua */; }; - 15D1FD3D199863CA00302043 /* DeprecatedCocosDenshionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD39199863CA00302043 /* DeprecatedCocosDenshionClass.lua */; }; - 15D1FD3E199863CA00302043 /* DeprecatedCocosDenshionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD39199863CA00302043 /* DeprecatedCocosDenshionClass.lua */; }; - 15D1FD3F199863CA00302043 /* DeprecatedCocosDenshionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD3A199863CA00302043 /* DeprecatedCocosDenshionFunc.lua */; }; - 15D1FD40199863CA00302043 /* DeprecatedCocosDenshionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD3A199863CA00302043 /* DeprecatedCocosDenshionFunc.lua */; }; - 15D1FD45199863E800302043 /* CocoStudio.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD41199863E800302043 /* CocoStudio.lua */; }; - 15D1FD46199863E800302043 /* CocoStudio.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD41199863E800302043 /* CocoStudio.lua */; }; - 15D1FD47199863E800302043 /* DeprecatedCocoStudioClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD42199863E800302043 /* DeprecatedCocoStudioClass.lua */; }; - 15D1FD48199863E800302043 /* DeprecatedCocoStudioClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD42199863E800302043 /* DeprecatedCocoStudioClass.lua */; }; - 15D1FD49199863E800302043 /* DeprecatedCocoStudioFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD43199863E800302043 /* DeprecatedCocoStudioFunc.lua */; }; - 15D1FD4A199863E800302043 /* DeprecatedCocoStudioFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD43199863E800302043 /* DeprecatedCocoStudioFunc.lua */; }; - 15D1FD4B199863E800302043 /* StudioConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD44199863E800302043 /* StudioConstants.lua */; }; - 15D1FD4C199863E800302043 /* StudioConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD44199863E800302043 /* StudioConstants.lua */; }; - 15D1FD51199863F900302043 /* DeprecatedExtensionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD4D199863F900302043 /* DeprecatedExtensionClass.lua */; }; - 15D1FD52199863F900302043 /* DeprecatedExtensionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD4D199863F900302043 /* DeprecatedExtensionClass.lua */; }; - 15D1FD53199863F900302043 /* DeprecatedExtensionEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD4E199863F900302043 /* DeprecatedExtensionEnum.lua */; }; - 15D1FD54199863F900302043 /* DeprecatedExtensionEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD4E199863F900302043 /* DeprecatedExtensionEnum.lua */; }; - 15D1FD55199863F900302043 /* DeprecatedExtensionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD4F199863F900302043 /* DeprecatedExtensionFunc.lua */; }; - 15D1FD56199863F900302043 /* DeprecatedExtensionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD4F199863F900302043 /* DeprecatedExtensionFunc.lua */; }; - 15D1FD57199863F900302043 /* ExtensionConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD50199863F900302043 /* ExtensionConstants.lua */; }; - 15D1FD58199863F900302043 /* ExtensionConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD50199863F900302043 /* ExtensionConstants.lua */; }; - 15D1FD5D1998641200302043 /* DeprecatedNetworkClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD591998641200302043 /* DeprecatedNetworkClass.lua */; }; - 15D1FD5E1998641200302043 /* DeprecatedNetworkClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD591998641200302043 /* DeprecatedNetworkClass.lua */; }; - 15D1FD5F1998641200302043 /* DeprecatedNetworkClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD591998641200302043 /* DeprecatedNetworkClass.lua */; }; - 15D1FD601998641200302043 /* DeprecatedNetworkClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD591998641200302043 /* DeprecatedNetworkClass.lua */; }; - 15D1FD611998641200302043 /* DeprecatedNetworkEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD5A1998641200302043 /* DeprecatedNetworkEnum.lua */; }; - 15D1FD621998641200302043 /* DeprecatedNetworkEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD5A1998641200302043 /* DeprecatedNetworkEnum.lua */; }; - 15D1FD631998641200302043 /* DeprecatedNetworkEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD5A1998641200302043 /* DeprecatedNetworkEnum.lua */; }; - 15D1FD641998641200302043 /* DeprecatedNetworkEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD5A1998641200302043 /* DeprecatedNetworkEnum.lua */; }; - 15D1FD651998641200302043 /* DeprecatedNetworkFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD5B1998641200302043 /* DeprecatedNetworkFunc.lua */; }; - 15D1FD661998641200302043 /* DeprecatedNetworkFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD5B1998641200302043 /* DeprecatedNetworkFunc.lua */; }; - 15D1FD671998641200302043 /* DeprecatedNetworkFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD5B1998641200302043 /* DeprecatedNetworkFunc.lua */; }; - 15D1FD681998641200302043 /* DeprecatedNetworkFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD5B1998641200302043 /* DeprecatedNetworkFunc.lua */; }; - 15D1FD691998641200302043 /* NetworkConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD5C1998641200302043 /* NetworkConstants.lua */; }; - 15D1FD6A1998641200302043 /* NetworkConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD5C1998641200302043 /* NetworkConstants.lua */; }; - 15D1FD6B1998641200302043 /* NetworkConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD5C1998641200302043 /* NetworkConstants.lua */; }; - 15D1FD6C1998641200302043 /* NetworkConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD5C1998641200302043 /* NetworkConstants.lua */; }; - 15D1FD711998642800302043 /* DeprecatedUIEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD6D1998642800302043 /* DeprecatedUIEnum.lua */; }; - 15D1FD721998642800302043 /* DeprecatedUIEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD6D1998642800302043 /* DeprecatedUIEnum.lua */; }; - 15D1FD731998642800302043 /* DeprecatedUIFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD6E1998642800302043 /* DeprecatedUIFunc.lua */; }; - 15D1FD741998642800302043 /* DeprecatedUIFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD6E1998642800302043 /* DeprecatedUIFunc.lua */; }; - 15D1FD751998642800302043 /* experimentalUIConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD6F1998642800302043 /* experimentalUIConstants.lua */; }; - 15D1FD761998642800302043 /* experimentalUIConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD6F1998642800302043 /* experimentalUIConstants.lua */; }; - 15D1FD771998642800302043 /* GuiConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD701998642800302043 /* GuiConstants.lua */; }; - 15D1FD781998642800302043 /* GuiConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FD701998642800302043 /* GuiConstants.lua */; }; 15E66FC8192D957100C20A52 /* Sprite3DTest in Resources */ = {isa = PBXBuildFile; fileRef = 3E92EA841921A7720094CD21 /* Sprite3DTest */; }; 15E66FD6192DC8C700C20A52 /* Sprite3DTest in Resources */ = {isa = PBXBuildFile; fileRef = 3E92EA841921A7720094CD21 /* Sprite3DTest */; }; 15EE465B19A7200300AF29F1 /* libcurl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15EE465A19A7200300AF29F1 /* libcurl.a */; }; @@ -925,6 +772,18 @@ 3EA0FB5E191B92F100B170C8 /* cocosvideo.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 3EA0FB5D191B92F100B170C8 /* cocosvideo.mp4 */; }; 3EA0FB66191B933000B170C8 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EA0FB65191B933000B170C8 /* MediaPlayer.framework */; }; 3EA0FB72191C844400B170C8 /* UIVideoPlayerTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3EA0FB70191C844400B170C8 /* UIVideoPlayerTest.cpp */; }; + 527B1F3019EF9819000A1F82 /* Default-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 527B1F2E19EF9819000A1F82 /* Default-667h@2x.png */; }; + 527B1F3119EF9819000A1F82 /* Default-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 527B1F2F19EF9819000A1F82 /* Default-736h@3x.png */; }; + 527B1F3419EF9CF8000A1F82 /* Default-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 527B1F3219EF9CF8000A1F82 /* Default-667h@2x.png */; }; + 527B1F3519EF9CF8000A1F82 /* Default-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 527B1F3319EF9CF8000A1F82 /* Default-736h@3x.png */; }; + 527B1F3819EFABC9000A1F82 /* Default-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 527B1F3619EFABC9000A1F82 /* Default-667h@2x.png */; }; + 527B1F3919EFABC9000A1F82 /* Default-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 527B1F3719EFABC9000A1F82 /* Default-736h@3x.png */; }; + 527B1F3C19EFACBB000A1F82 /* Default-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 527B1F3A19EFACBB000A1F82 /* Default-667h@2x.png */; }; + 527B1F3D19EFACBB000A1F82 /* Default-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 527B1F3B19EFACBB000A1F82 /* Default-736h@3x.png */; }; + 527B1F4019EFAD44000A1F82 /* Default-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 527B1F3E19EFAD44000A1F82 /* Default-667h@2x.png */; }; + 527B1F4119EFAD44000A1F82 /* Default-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 527B1F3F19EFAD44000A1F82 /* Default-736h@3x.png */; }; + 527B1F4419EFAE13000A1F82 /* Default-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 527B1F4219EFAE13000A1F82 /* Default-667h@2x.png */; }; + 527B1F4519EFAE13000A1F82 /* Default-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 527B1F4319EFAE13000A1F82 /* Default-736h@3x.png */; }; 59620E8F1921E5CF002021B6 /* Bug-Child.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59620E8D1921E5CF002021B6 /* Bug-Child.cpp */; }; 59620E901921E5CF002021B6 /* Bug-Child.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59620E8D1921E5CF002021B6 /* Bug-Child.cpp */; }; 5EBEECB01995247000429821 /* DrawNode3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5EBEECAE1995247000429821 /* DrawNode3D.cpp */; }; @@ -1150,20 +1009,15 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 1503FAA918DA8B6C00F6518C /* ftp.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ftp.lua; path = ../external/lua/luasocket/ftp.lua; sourceTree = ""; }; - 1503FAAA18DA8B6C00F6518C /* headers.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = headers.lua; path = ../external/lua/luasocket/headers.lua; sourceTree = ""; }; - 1503FAAB18DA8B6C00F6518C /* http.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = http.lua; path = ../external/lua/luasocket/http.lua; sourceTree = ""; }; - 1503FAAC18DA8B6C00F6518C /* ltn12.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ltn12.lua; path = ../external/lua/luasocket/ltn12.lua; sourceTree = ""; }; - 1503FAAD18DA8B6C00F6518C /* mbox.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = mbox.lua; path = ../external/lua/luasocket/mbox.lua; sourceTree = ""; }; - 1503FAAE18DA8B6C00F6518C /* mime.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = mime.lua; path = ../external/lua/luasocket/mime.lua; sourceTree = ""; }; - 1503FAAF18DA8B6C00F6518C /* smtp.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = smtp.lua; path = ../external/lua/luasocket/smtp.lua; sourceTree = ""; }; - 1503FAB018DA8B6C00F6518C /* socket.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = socket.lua; path = ../external/lua/luasocket/socket.lua; sourceTree = ""; }; - 1503FAB118DA8B6C00F6518C /* tp.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = tp.lua; path = ../external/lua/luasocket/tp.lua; sourceTree = ""; }; - 1503FAB218DA8B6C00F6518C /* url.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = url.lua; path = ../external/lua/luasocket/url.lua; sourceTree = ""; }; + 150F918619DA409E00B89F57 /* lua_test_bindings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_test_bindings.cpp; sourceTree = ""; }; + 150F918719DA409E00B89F57 /* lua_test_bindings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_test_bindings.h; sourceTree = ""; }; 15427B76198B750300DC375D /* lua_module_register.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_module_register.h; sourceTree = ""; }; 15427B77198B843300DC375D /* lua_module_register.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_module_register.h; sourceTree = ""; }; 15427B7B198B880100DC375D /* lua_cocos2dx_controller_manual.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = lua_cocos2dx_controller_manual.cpp; path = "../../../../cocos/scripting/lua-bindings/manual/controller/lua_cocos2dx_controller_manual.cpp"; sourceTree = ""; }; 15427B7C198B880100DC375D /* lua_cocos2dx_controller_manual.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = lua_cocos2dx_controller_manual.hpp; path = "../../../../cocos/scripting/lua-bindings/manual/controller/lua_cocos2dx_controller_manual.hpp"; sourceTree = ""; }; + 15B3709219EE5D1000ABE682 /* Manifests */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Manifests; path = "../tests/cpp-tests/Resources/Manifests"; sourceTree = ""; }; + 15B3709619EE5DBA00ABE682 /* AssetsManagerExTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AssetsManagerExTest.cpp; sourceTree = ""; }; + 15B3709719EE5DBA00ABE682 /* AssetsManagerExTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AssetsManagerExTest.h; sourceTree = ""; }; 15C64822165F391E007D4F18 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; }; 15C64824165F3934007D4F18 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; }; 15C64826165F394E007D4F18 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; @@ -2287,41 +2141,6 @@ 15CBA9DC196EEAA6005877BB /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/usr/lib/libz.dylib; sourceTree = DEVELOPER_DIR; }; 15CBA9EB196F7BD8005877BB /* lua_cocos2dx_controller_auto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = lua_cocos2dx_controller_auto.cpp; path = "../../../../cocos/scripting/lua-bindings/auto/lua_cocos2dx_controller_auto.cpp"; sourceTree = ""; }; 15CBA9EC196F7BD8005877BB /* lua_cocos2dx_controller_auto.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = lua_cocos2dx_controller_auto.hpp; path = "../../../../cocos/scripting/lua-bindings/auto/lua_cocos2dx_controller_auto.hpp"; sourceTree = ""; }; - 15D1FCDE1998637C00302043 /* bitExtend.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = bitExtend.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/bitExtend.lua"; sourceTree = ""; }; - 15D1FCDF1998637C00302043 /* Cocos2d.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Cocos2d.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/Cocos2d.lua"; sourceTree = ""; }; - 15D1FCE01998637C00302043 /* Cocos2dConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Cocos2dConstants.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/Cocos2dConstants.lua"; sourceTree = ""; }; - 15D1FCE11998637C00302043 /* DeprecatedCocos2dClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocos2dClass.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dClass.lua"; sourceTree = ""; }; - 15D1FCE21998637C00302043 /* DeprecatedCocos2dEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocos2dEnum.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dEnum.lua"; sourceTree = ""; }; - 15D1FCE31998637C00302043 /* DeprecatedCocos2dFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocos2dFunc.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dFunc.lua"; sourceTree = ""; }; - 15D1FCE41998637C00302043 /* DeprecatedOpenglEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedOpenglEnum.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/DeprecatedOpenglEnum.lua"; sourceTree = ""; }; - 15D1FCE51998637C00302043 /* DrawPrimitives.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DrawPrimitives.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/DrawPrimitives.lua"; sourceTree = ""; }; - 15D1FCE61998637C00302043 /* extern.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = extern.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/extern.lua"; sourceTree = ""; }; - 15D1FCE71998637C00302043 /* json.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = json.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/json.lua"; sourceTree = ""; }; - 15D1FCE81998637C00302043 /* luaj.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = luaj.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/luaj.lua"; sourceTree = ""; }; - 15D1FCE91998637C00302043 /* luaoc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = luaoc.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/luaoc.lua"; sourceTree = ""; }; - 15D1FCEA1998637C00302043 /* Opengl.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Opengl.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/Opengl.lua"; sourceTree = ""; }; - 15D1FCEB1998637C00302043 /* OpenglConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = OpenglConstants.lua; path = "../cocos/scripting/lua-bindings/script/cocos2d/OpenglConstants.lua"; sourceTree = ""; }; - 15D1FD32199863BA00302043 /* CCBReaderLoad.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CCBReaderLoad.lua; path = "../cocos/scripting/lua-bindings/script/cocosbuilder/CCBReaderLoad.lua"; sourceTree = ""; }; - 15D1FD33199863BA00302043 /* DeprecatedCocosBuilderClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocosBuilderClass.lua; path = "../cocos/scripting/lua-bindings/script/cocosbuilder/DeprecatedCocosBuilderClass.lua"; sourceTree = ""; }; - 15D1FD38199863CA00302043 /* AudioEngine.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = AudioEngine.lua; path = "../cocos/scripting/lua-bindings/script/cocosdenshion/AudioEngine.lua"; sourceTree = ""; }; - 15D1FD39199863CA00302043 /* DeprecatedCocosDenshionClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocosDenshionClass.lua; path = "../cocos/scripting/lua-bindings/script/cocosdenshion/DeprecatedCocosDenshionClass.lua"; sourceTree = ""; }; - 15D1FD3A199863CA00302043 /* DeprecatedCocosDenshionFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocosDenshionFunc.lua; path = "../cocos/scripting/lua-bindings/script/cocosdenshion/DeprecatedCocosDenshionFunc.lua"; sourceTree = ""; }; - 15D1FD41199863E800302043 /* CocoStudio.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CocoStudio.lua; path = "../cocos/scripting/lua-bindings/script/cocostudio/CocoStudio.lua"; sourceTree = ""; }; - 15D1FD42199863E800302043 /* DeprecatedCocoStudioClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocoStudioClass.lua; path = "../cocos/scripting/lua-bindings/script/cocostudio/DeprecatedCocoStudioClass.lua"; sourceTree = ""; }; - 15D1FD43199863E800302043 /* DeprecatedCocoStudioFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocoStudioFunc.lua; path = "../cocos/scripting/lua-bindings/script/cocostudio/DeprecatedCocoStudioFunc.lua"; sourceTree = ""; }; - 15D1FD44199863E800302043 /* StudioConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = StudioConstants.lua; path = "../cocos/scripting/lua-bindings/script/cocostudio/StudioConstants.lua"; sourceTree = ""; }; - 15D1FD4D199863F900302043 /* DeprecatedExtensionClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedExtensionClass.lua; path = "../cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionClass.lua"; sourceTree = ""; }; - 15D1FD4E199863F900302043 /* DeprecatedExtensionEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedExtensionEnum.lua; path = "../cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionEnum.lua"; sourceTree = ""; }; - 15D1FD4F199863F900302043 /* DeprecatedExtensionFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedExtensionFunc.lua; path = "../cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionFunc.lua"; sourceTree = ""; }; - 15D1FD50199863F900302043 /* ExtensionConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ExtensionConstants.lua; path = "../cocos/scripting/lua-bindings/script/extension/ExtensionConstants.lua"; sourceTree = ""; }; - 15D1FD591998641200302043 /* DeprecatedNetworkClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedNetworkClass.lua; path = "../cocos/scripting/lua-bindings/script/network/DeprecatedNetworkClass.lua"; sourceTree = ""; }; - 15D1FD5A1998641200302043 /* DeprecatedNetworkEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedNetworkEnum.lua; path = "../cocos/scripting/lua-bindings/script/network/DeprecatedNetworkEnum.lua"; sourceTree = ""; }; - 15D1FD5B1998641200302043 /* DeprecatedNetworkFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedNetworkFunc.lua; path = "../cocos/scripting/lua-bindings/script/network/DeprecatedNetworkFunc.lua"; sourceTree = ""; }; - 15D1FD5C1998641200302043 /* NetworkConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NetworkConstants.lua; path = "../cocos/scripting/lua-bindings/script/network/NetworkConstants.lua"; sourceTree = ""; }; - 15D1FD6D1998642800302043 /* DeprecatedUIEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedUIEnum.lua; path = "../cocos/scripting/lua-bindings/script/ui/DeprecatedUIEnum.lua"; sourceTree = ""; }; - 15D1FD6E1998642800302043 /* DeprecatedUIFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedUIFunc.lua; path = "../cocos/scripting/lua-bindings/script/ui/DeprecatedUIFunc.lua"; sourceTree = ""; }; - 15D1FD6F1998642800302043 /* experimentalUIConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = experimentalUIConstants.lua; path = "../cocos/scripting/lua-bindings/script/ui/experimentalUIConstants.lua"; sourceTree = ""; }; - 15D1FD701998642800302043 /* GuiConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = GuiConstants.lua; path = "../cocos/scripting/lua-bindings/script/ui/GuiConstants.lua"; sourceTree = ""; }; 15EE465A19A7200300AF29F1 /* libcurl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcurl.a; path = ../external/curl/prebuilt/ios/libcurl.a; sourceTree = ""; }; 1A0EE2B218CDF6DA004CD58F /* cpp-empty-test Mac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "cpp-empty-test Mac.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 1A0EE31418CDF733004CD58F /* lua-empty-test Mac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "lua-empty-test Mac.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -2802,12 +2621,12 @@ 1D6058910D05DD3D006BFB54 /* cpp-tests Mac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "cpp-tests Mac.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 1F33634D18E37E840074764D /* RefPtrTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RefPtrTest.cpp; sourceTree = ""; }; 1F33634E18E37E840074764D /* RefPtrTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RefPtrTest.h; sourceTree = ""; }; - 29080D1A191B574B0066F8DF /* UITest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UITest.cpp; path = ../UITest.cpp; sourceTree = ""; }; - 29080D1B191B574B0066F8DF /* UITest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UITest.h; path = ../UITest.h; sourceTree = ""; }; + 29080D1A191B574B0066F8DF /* UITest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UITest.cpp; path = UITest/UITest.cpp; sourceTree = ""; }; + 29080D1B191B574B0066F8DF /* UITest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UITest.h; path = UITest/UITest.h; sourceTree = ""; }; 29080D1F191B595E0066F8DF /* CocosGUIScene.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CocosGUIScene.cpp; sourceTree = ""; }; 29080D20191B595E0066F8DF /* CocosGUIScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CocosGUIScene.h; sourceTree = ""; }; - 29080D21191B595E0066F8DF /* CocoStudioGUITest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CocoStudioGUITest.cpp; sourceTree = ""; }; - 29080D22191B595E0066F8DF /* CocoStudioGUITest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CocoStudioGUITest.h; sourceTree = ""; }; + 29080D21191B595E0066F8DF /* CocoStudioGUITest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CocoStudioGUITest.cpp; path = UITest/CocoStudioGUITest/CocoStudioGUITest.cpp; sourceTree = ""; }; + 29080D22191B595E0066F8DF /* CocoStudioGUITest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CocoStudioGUITest.h; path = UITest/CocoStudioGUITest/CocoStudioGUITest.h; sourceTree = ""; }; 29080D23191B595E0066F8DF /* CustomGUIScene.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomGUIScene.cpp; path = ../CustomGUIScene.cpp; sourceTree = ""; }; 29080D24191B595E0066F8DF /* CustomGUIScene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CustomGUIScene.h; path = ../CustomGUIScene.h; sourceTree = ""; }; 29080D27191B595E0066F8DF /* CustomImageTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CustomImageTest.cpp; sourceTree = ""; }; @@ -2955,6 +2774,18 @@ 3EA0FB70191C844400B170C8 /* UIVideoPlayerTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UIVideoPlayerTest.cpp; sourceTree = ""; }; 3EA0FB71191C844400B170C8 /* UIVideoPlayerTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIVideoPlayerTest.h; sourceTree = ""; }; 46A15F9C1807A4F8005B8026 /* cocos2d_libs.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = cocos2d_libs.xcodeproj; sourceTree = ""; }; + 527B1F2E19EF9819000A1F82 /* Default-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h@2x.png"; sourceTree = ""; }; + 527B1F2F19EF9819000A1F82 /* Default-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h@3x.png"; sourceTree = ""; }; + 527B1F3219EF9CF8000A1F82 /* Default-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h@2x.png"; sourceTree = ""; }; + 527B1F3319EF9CF8000A1F82 /* Default-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h@3x.png"; sourceTree = ""; }; + 527B1F3619EFABC9000A1F82 /* Default-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h@2x.png"; sourceTree = ""; }; + 527B1F3719EFABC9000A1F82 /* Default-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h@3x.png"; sourceTree = ""; }; + 527B1F3A19EFACBB000A1F82 /* Default-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h@2x.png"; sourceTree = ""; }; + 527B1F3B19EFACBB000A1F82 /* Default-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h@3x.png"; sourceTree = ""; }; + 527B1F3E19EFAD44000A1F82 /* Default-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h@2x.png"; sourceTree = ""; }; + 527B1F3F19EFAD44000A1F82 /* Default-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h@3x.png"; sourceTree = ""; }; + 527B1F4219EFAE13000A1F82 /* Default-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h@2x.png"; sourceTree = ""; }; + 527B1F4319EFAE13000A1F82 /* Default-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h@3x.png"; sourceTree = ""; }; 59620E8D1921E5CF002021B6 /* Bug-Child.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "Bug-Child.cpp"; sourceTree = ""; }; 59620E8E1921E5CF002021B6 /* Bug-Child.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Bug-Child.h"; sourceTree = ""; }; 5EBEECAE1995247000429821 /* DrawNode3D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DrawNode3D.cpp; path = Sprite3DTest/DrawNode3D.cpp; sourceTree = ""; }; @@ -3179,6 +3010,15 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 15B3709519EE5DBA00ABE682 /* AssetsManagerExTest */ = { + isa = PBXGroup; + children = ( + 15B3709619EE5DBA00ABE682 /* AssetsManagerExTest.cpp */, + 15B3709719EE5DBA00ABE682 /* AssetsManagerExTest.h */, + ); + path = AssetsManagerExTest; + sourceTree = ""; + }; 15CBA087196EE66D005877BB /* lua-game-controller-test */ = { isa = PBXGroup; children = ( @@ -5240,6 +5080,8 @@ 15CBA53D196EE671005877BB /* proj.ios */ = { isa = PBXGroup; children = ( + 527B1F3619EFABC9000A1F82 /* Default-667h@2x.png */, + 527B1F3719EFABC9000A1F82 /* Default-736h@3x.png */, 15CBA53E196EE671005877BB /* AppController.h */, 15CBA53F196EE671005877BB /* AppController.mm */, 15CBA540196EE671005877BB /* Default-568h@2x.png */, @@ -5305,58 +5147,6 @@ name = "Other Frameworks"; sourceTree = ""; }; - 1ABCA36418CD9E060087CE3A /* Lua Common */ = { - isa = PBXGroup; - children = ( - 15D1FD6D1998642800302043 /* DeprecatedUIEnum.lua */, - 15D1FD6E1998642800302043 /* DeprecatedUIFunc.lua */, - 15D1FD6F1998642800302043 /* experimentalUIConstants.lua */, - 15D1FD701998642800302043 /* GuiConstants.lua */, - 15D1FD591998641200302043 /* DeprecatedNetworkClass.lua */, - 15D1FD5A1998641200302043 /* DeprecatedNetworkEnum.lua */, - 15D1FD5B1998641200302043 /* DeprecatedNetworkFunc.lua */, - 15D1FD5C1998641200302043 /* NetworkConstants.lua */, - 15D1FD4D199863F900302043 /* DeprecatedExtensionClass.lua */, - 15D1FD4E199863F900302043 /* DeprecatedExtensionEnum.lua */, - 15D1FD4F199863F900302043 /* DeprecatedExtensionFunc.lua */, - 15D1FD50199863F900302043 /* ExtensionConstants.lua */, - 15D1FD41199863E800302043 /* CocoStudio.lua */, - 15D1FD42199863E800302043 /* DeprecatedCocoStudioClass.lua */, - 15D1FD43199863E800302043 /* DeprecatedCocoStudioFunc.lua */, - 15D1FD44199863E800302043 /* StudioConstants.lua */, - 15D1FD38199863CA00302043 /* AudioEngine.lua */, - 15D1FD39199863CA00302043 /* DeprecatedCocosDenshionClass.lua */, - 15D1FD3A199863CA00302043 /* DeprecatedCocosDenshionFunc.lua */, - 15D1FD32199863BA00302043 /* CCBReaderLoad.lua */, - 15D1FD33199863BA00302043 /* DeprecatedCocosBuilderClass.lua */, - 15D1FCDE1998637C00302043 /* bitExtend.lua */, - 15D1FCDF1998637C00302043 /* Cocos2d.lua */, - 15D1FCE01998637C00302043 /* Cocos2dConstants.lua */, - 15D1FCE11998637C00302043 /* DeprecatedCocos2dClass.lua */, - 15D1FCE21998637C00302043 /* DeprecatedCocos2dEnum.lua */, - 15D1FCE31998637C00302043 /* DeprecatedCocos2dFunc.lua */, - 15D1FCE41998637C00302043 /* DeprecatedOpenglEnum.lua */, - 15D1FCE51998637C00302043 /* DrawPrimitives.lua */, - 15D1FCE61998637C00302043 /* extern.lua */, - 15D1FCE71998637C00302043 /* json.lua */, - 15D1FCE81998637C00302043 /* luaj.lua */, - 15D1FCE91998637C00302043 /* luaoc.lua */, - 15D1FCEA1998637C00302043 /* Opengl.lua */, - 15D1FCEB1998637C00302043 /* OpenglConstants.lua */, - 1503FAA918DA8B6C00F6518C /* ftp.lua */, - 1503FAAA18DA8B6C00F6518C /* headers.lua */, - 1503FAAB18DA8B6C00F6518C /* http.lua */, - 1503FAAC18DA8B6C00F6518C /* ltn12.lua */, - 1503FAAD18DA8B6C00F6518C /* mbox.lua */, - 1503FAAE18DA8B6C00F6518C /* mime.lua */, - 1503FAAF18DA8B6C00F6518C /* smtp.lua */, - 1503FAB018DA8B6C00F6518C /* socket.lua */, - 1503FAB118DA8B6C00F6518C /* tp.lua */, - 1503FAB218DA8B6C00F6518C /* url.lua */, - ); - name = "Lua Common"; - sourceTree = ""; - }; 1AC358B618CEC19F00F37B72 /* cpp-empty-test */ = { isa = PBXGroup; children = ( @@ -5384,6 +5174,8 @@ 1AC358C418CEC1CA00F37B72 /* proj.ios */ = { isa = PBXGroup; children = ( + 527B1F2E19EF9819000A1F82 /* Default-667h@2x.png */, + 527B1F2F19EF9819000A1F82 /* Default-736h@3x.png */, 1AC358C518CEC1CA00F37B72 /* AppController.h */, 1AC358C618CEC1CA00F37B72 /* AppController.mm */, 1AC358C718CEC1CA00F37B72 /* Default-568h@2x.png */, @@ -5793,6 +5585,7 @@ 1AC359B418CECF0B00F37B72 /* ExtensionsTest */ = { isa = PBXGroup; children = ( + 15B3709519EE5DBA00ABE682 /* AssetsManagerExTest */, 38FA2E70194AEBE100FF2BE4 /* CocoStudioActionTimelineTest */, 1AC359B518CECF0B00F37B72 /* CocosBuilderTest */, 1AC359DC18CECF0B00F37B72 /* CocoStudioArmatureTest */, @@ -6424,6 +6217,8 @@ 1AC35C6D18CECF1400F37B72 /* proj.ios */ = { isa = PBXGroup; children = ( + 527B1F3219EF9CF8000A1F82 /* Default-667h@2x.png */, + 527B1F3319EF9CF8000A1F82 /* Default-736h@3x.png */, 1AC35C6E18CECF1400F37B72 /* Classes */, 1AC35C7318CECF1400F37B72 /* Default-568h@2x.png */, 1AC35C7418CECF1400F37B72 /* Default.png */, @@ -6475,6 +6270,7 @@ 1AC35CA818CED83500F37B72 /* Resources */ = { isa = PBXGroup; children = ( + 15B3709219EE5D1000ABE682 /* Manifests */, 3E2BDB0019C5E5D40055CDCD /* background.wav */, 3E2BDAD119BEA3E20055CDCD /* audio */, 38FA2E75194AECF800FF2BE4 /* ActionTimeline */, @@ -6547,6 +6343,8 @@ 1AC35D3318CEDE9400F37B72 /* proj.ios */ = { isa = PBXGroup; children = ( + 527B1F3E19EFAD44000A1F82 /* Default-667h@2x.png */, + 527B1F3F19EFAD44000A1F82 /* Default-736h@3x.png */, 1AC35D3418CEDE9400F37B72 /* AppController.h */, 1AC35D3518CEDE9400F37B72 /* AppController.mm */, 1AC35D3618CEDE9400F37B72 /* Default-568h@2x.png */, @@ -6614,6 +6412,8 @@ 1AC35D7C18CEE5B100F37B72 /* Classes */ = { isa = PBXGroup; children = ( + 150F918619DA409E00B89F57 /* lua_test_bindings.cpp */, + 150F918719DA409E00B89F57 /* lua_test_bindings.h */, 15427B76198B750300DC375D /* lua_module_register.h */, 1AC35D7D18CEE5B100F37B72 /* AppDelegate.cpp */, 1AC35D7E18CEE5B100F37B72 /* AppDelegate.h */, @@ -6627,6 +6427,8 @@ 1AC35D8518CEE5D100F37B72 /* ios */ = { isa = PBXGroup; children = ( + 527B1F4219EFAE13000A1F82 /* Default-667h@2x.png */, + 527B1F4319EFAE13000A1F82 /* Default-736h@3x.png */, 1AC35D8618CEE5D100F37B72 /* AppController.h */, 1AC35D8718CEE5D100F37B72 /* AppController.mm */, 1AC35D8818CEE5D100F37B72 /* Default-568h@2x.png */, @@ -6679,14 +6481,6 @@ sourceTree = ""; }; 29080D17191B571F0066F8DF /* UITest */ = { - isa = PBXGroup; - children = ( - 29080D1E191B595E0066F8DF /* CocoStudioGUITest */, - ); - name = UITest; - sourceTree = ""; - }; - 29080D1E191B595E0066F8DF /* CocoStudioGUITest */ = { isa = PBXGroup; children = ( 29080D1A191B574B0066F8DF /* UITest.cpp */, @@ -6697,8 +6491,7 @@ 29FBBBFB196A9ECD00E65826 /* CocostudioParserTest */, 29080D25191B595E0066F8DF /* CustomTest */, ); - name = CocoStudioGUITest; - path = UITest/CocoStudioGUITest; + name = UITest; sourceTree = ""; }; 29080D25191B595E0066F8DF /* CustomTest */ = { @@ -6710,7 +6503,8 @@ 29080D26191B595E0066F8DF /* CustomImageTest */, 29080D29191B595E0066F8DF /* CustomParticleWidgetTest */, ); - path = CustomTest; + name = CustomTest; + path = UITest/CocoStudioGUITest/CustomTest; sourceTree = ""; }; 29080D26191B595E0066F8DF /* CustomImageTest */ = { @@ -6930,13 +6724,30 @@ name = UIWebViewTest; sourceTree = ""; }; + 29AAE28519F0BD02004F5A18 /* UIScale9SpriteTest */ = { + isa = PBXGroup; + children = ( + 295824571987415900F9746D /* UIScale9SpriteTest.cpp */, + 295824581987415900F9746D /* UIScale9SpriteTest.h */, + ); + name = UIScale9SpriteTest; + sourceTree = ""; + }; + 29AAE28619F0BD12004F5A18 /* UIEditBoxTest */ = { + isa = PBXGroup; + children = ( + 292CF01219A1965E00E8E6A0 /* UIEditBoxTest.cpp */, + 292CF01319A1965E00E8E6A0 /* UIEditBoxTest.h */, + ); + name = UIEditBoxTest; + sourceTree = ""; + }; 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( 46A15F9C1807A4F8005B8026 /* cocos2d_libs.xcodeproj */, 1ABCA27618CD90A40087CE3A /* cocos2d_lua_bindings.xcodeproj */, 29B97323FDCFA39411CA2CEA /* Frameworks */, - 1ABCA36418CD9E060087CE3A /* Lua Common */, 19C28FACFE9D520D11CA2CBB /* Products */, 1AC35E0318CEE78300F37B72 /* tests */, ); @@ -7005,17 +6816,13 @@ 29FBBBFC196A9ECD00E65826 /* CocostudioParserJsonTest.cpp */, 29FBBBFD196A9ECD00E65826 /* CocostudioParserJsonTest.h */, ); - path = CocostudioParserTest; + name = CocostudioParserTest; + path = UITest/CocoStudioGUITest/CocostudioParserTest; sourceTree = ""; }; 29FBBC00196A9F0D00E65826 /* UIAndEditorTests */ = { isa = PBXGroup; children = ( - 298D7F6C19AC31C000FF096D /* UIWebViewTest */, - 295824571987415900F9746D /* UIScale9SpriteTest.cpp */, - 295824581987415900F9746D /* UIScale9SpriteTest.h */, - 292CF01219A1965E00E8E6A0 /* UIEditBoxTest.cpp */, - 292CF01319A1965E00E8E6A0 /* UIEditBoxTest.h */, 29080D1F191B595E0066F8DF /* CocosGUIScene.cpp */, 29080D20191B595E0066F8DF /* CocosGUIScene.h */, 29080D37191B595E0066F8DF /* GUIEditorTest.cpp */, @@ -7028,6 +6835,9 @@ 29080D67191B595E0066F8DF /* UISceneManager.h */, 29080D68191B595E0066F8DF /* UISceneManager_Editor.cpp */, 29080D69191B595E0066F8DF /* UISceneManager_Editor.h */, + 29AAE28619F0BD12004F5A18 /* UIEditBoxTest */, + 29AAE28519F0BD02004F5A18 /* UIScale9SpriteTest */, + 298D7F6C19AC31C000FF096D /* UIWebViewTest */, 29080D6A191B595E0066F8DF /* UIScrollViewTest */, 29080D6F191B595E0066F8DF /* UISliderTest */, 29080D74191B595E0066F8DF /* UITextAtlasTest */, @@ -7047,6 +6857,7 @@ 3EA0FB6F191C844400B170C8 /* UIVideoPlayerTest */, ); name = UIAndEditorTests; + path = UITest/CocoStudioGUITest; sourceTree = ""; }; 38FA2E70194AEBE100FF2BE4 /* CocoStudioActionTimelineTest */ = { @@ -7093,6 +6904,8 @@ 3E6176DC1960FA6300DE83F5 /* proj.ios */ = { isa = PBXGroup; children = ( + 527B1F3A19EFACBB000A1F82 /* Default-667h@2x.png */, + 527B1F3B19EFACBB000A1F82 /* Default-736h@3x.png */, 3E6176DD1960FA6300DE83F5 /* AppController.h */, 3E6176DE1960FA6300DE83F5 /* AppController.mm */, 3E6176DF1960FA6300DE83F5 /* Default-568h@2x.png */, @@ -7203,6 +7016,7 @@ 15CBA020196EE56C005877BB /* Sources */, 15CBA025196EE56C005877BB /* Frameworks */, 15CBA036196EE56C005877BB /* Resources */, + 1529F07B19EDA35E0064B9B1 /* ShellScript */, ); buildRules = ( ); @@ -7240,6 +7054,7 @@ 1A0EE2C318CDF733004CD58F /* Sources */, 1A0EE2C818CDF733004CD58F /* Frameworks */, 1A0EE2D818CDF733004CD58F /* Resources */, + 1529F07D19EDA3B90064B9B1 /* ShellScript */, ); buildRules = ( ); @@ -7277,6 +7092,7 @@ 1A0EE42418CDF799004CD58F /* Sources */, 1A0EE42B18CDF799004CD58F /* Frameworks */, 1A0EE43B18CDF799004CD58F /* Resources */, + 1529F07C19EDA3860064B9B1 /* ShellScript */, ); buildRules = ( ); @@ -7293,9 +7109,11 @@ isa = PBXNativeTarget; buildConfigurationList = 1ABCA2B218CD91520087CE3A /* Build configuration list for PBXNativeTarget "lua-tests Mac" */; buildPhases = ( + 1529F07F19EDA4260064B9B1 /* ShellScript */, 1ABCA28218CD91510087CE3A /* Sources */, 1ABCA28318CD91510087CE3A /* Frameworks */, 1ABCA28418CD91510087CE3A /* Resources */, + 1529F07E19EDA3F20064B9B1 /* ShellScript */, ); buildRules = ( ); @@ -7316,6 +7134,7 @@ 1ABCA2C918CD93580087CE3A /* Sources */, 1ABCA2CA18CD93580087CE3A /* Frameworks */, 1ABCA2CB18CD93580087CE3A /* Resources */, + 1529F07A19EDA0650064B9B1 /* ShellScript */, ); buildRules = ( ); @@ -7469,24 +7288,12 @@ buildActionMask = 2147483647; files = ( 15CBA9B3196EE824005877BB /* src in Resources */, - 15D1FD311998637C00302043 /* OpenglConstants.lua in Resources */, - 15D1FD131998637C00302043 /* DrawPrimitives.lua in Resources */, + 527B1F3819EFABC9000A1F82 /* Default-667h@2x.png in Resources */, 15CBA9AF196EE80B005877BB /* fonts in Resources */, - 15D1FD2C1998637C00302043 /* Opengl.lua in Resources */, 15CBA9B0196EE80B005877BB /* ipad in Resources */, - 15D1FD221998637C00302043 /* luaj.lua in Resources */, - 15D1FD0E1998637C00302043 /* DeprecatedOpenglEnum.lua in Resources */, 15CBA9B1196EE80B005877BB /* ipadhd in Resources */, - 15D1FD091998637C00302043 /* DeprecatedCocos2dFunc.lua in Resources */, - 15D1FCFF1998637C00302043 /* DeprecatedCocos2dClass.lua in Resources */, - 15D1FCF01998637C00302043 /* bitExtend.lua in Resources */, - 15D1FD041998637C00302043 /* DeprecatedCocos2dEnum.lua in Resources */, - 15D1FD1D1998637C00302043 /* json.lua in Resources */, - 15D1FD181998637C00302043 /* extern.lua in Resources */, 15CBA9B2196EE80B005877BB /* iphone in Resources */, - 15D1FD271998637C00302043 /* luaoc.lua in Resources */, - 15D1FCFA1998637C00302043 /* Cocos2dConstants.lua in Resources */, - 15D1FCF51998637C00302043 /* Cocos2d.lua in Resources */, + 527B1F3919EFABC9000A1F82 /* Default-736h@3x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7511,36 +7318,8 @@ files = ( 1AC35D5C18CEDE9E00F37B72 /* InfoPlist.strings in Resources */, 1AC35D5D18CEDE9E00F37B72 /* MainMenu.xib in Resources */, - 15D1FD621998641200302043 /* DeprecatedNetworkEnum.lua in Resources */, - 1503FABD18DA8B6C00F6518C /* mime.lua in Resources */, - 15D1FD2E1998637C00302043 /* OpenglConstants.lua in Resources */, - 1503FAC518DA8B6C00F6518C /* url.lua in Resources */, - 15D1FD1F1998637C00302043 /* luaj.lua in Resources */, - 15D1FCED1998637C00302043 /* bitExtend.lua in Resources */, - 1503FABF18DA8B6C00F6518C /* smtp.lua in Resources */, - 15D1FD291998637C00302043 /* Opengl.lua in Resources */, - 1503FAB318DA8B6C00F6518C /* ftp.lua in Resources */, - 1503FAB718DA8B6C00F6518C /* http.lua in Resources */, - 15D1FCF71998637C00302043 /* Cocos2dConstants.lua in Resources */, - 1503FAC118DA8B6C00F6518C /* socket.lua in Resources */, - 1503FAB918DA8B6C00F6518C /* ltn12.lua in Resources */, - 15D1FD0B1998637C00302043 /* DeprecatedOpenglEnum.lua in Resources */, - 15D1FD661998641200302043 /* DeprecatedNetworkFunc.lua in Resources */, - 15D1FD241998637C00302043 /* luaoc.lua in Resources */, 1AC35D5E18CEDE9E00F37B72 /* Icon.icns in Resources */, - 15D1FCF21998637C00302043 /* Cocos2d.lua in Resources */, - 15D1FD061998637C00302043 /* DeprecatedCocos2dFunc.lua in Resources */, - 1503FABB18DA8B6C00F6518C /* mbox.lua in Resources */, - 15D1FD151998637C00302043 /* extern.lua in Resources */, - 1503FAB518DA8B6C00F6518C /* headers.lua in Resources */, - 1503FAC318DA8B6C00F6518C /* tp.lua in Resources */, - 15D1FD5E1998641200302043 /* DeprecatedNetworkClass.lua in Resources */, - 15D1FD6A1998641200302043 /* NetworkConstants.lua in Resources */, - 15D1FD011998637C00302043 /* DeprecatedCocos2dEnum.lua in Resources */, - 15D1FD1A1998637C00302043 /* json.lua in Resources */, - 15D1FD101998637C00302043 /* DrawPrimitives.lua in Resources */, 1AC35D2918CEDE7200F37B72 /* res in Resources */, - 15D1FCFC1998637C00302043 /* DeprecatedCocos2dClass.lua in Resources */, 1AC35D2B18CEDE7200F37B72 /* src in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -7558,6 +7337,7 @@ 1AC358E818CEC1CB00F37B72 /* Icon-76.png in Resources */, 1AC358E418CEC1CB00F37B72 /* Icon-40.png in Resources */, 1AC358E618CEC1CB00F37B72 /* Icon-58.png in Resources */, + 527B1F3019EF9819000A1F82 /* Default-667h@2x.png in Resources */, 1AC358DB18CEC1CB00F37B72 /* Default-568h@2x.png in Resources */, 1AC358DF18CEC1CB00F37B72 /* Icon-100.png in Resources */, 1AC358E218CEC1CB00F37B72 /* Icon-144.png in Resources */, @@ -7568,6 +7348,7 @@ 1AC358E318CEC1CB00F37B72 /* Icon-152.png in Resources */, 1AC358E518CEC1CB00F37B72 /* Icon-57.png in Resources */, 1AC358DC18CEC1CB00F37B72 /* Default.png in Resources */, + 527B1F3119EF9819000A1F82 /* Default-736h@3x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7575,46 +7356,20 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 15D1FD171998637C00302043 /* extern.lua in Resources */, - 15D1FD641998641200302043 /* DeprecatedNetworkEnum.lua in Resources */, - 15D1FCF41998637C00302043 /* Cocos2d.lua in Resources */, 1AC35D4A18CEDE9400F37B72 /* Icon-120.png in Resources */, - 1503FAC018DA8B6C00F6518C /* smtp.lua in Resources */, - 15D1FD681998641200302043 /* DeprecatedNetworkFunc.lua in Resources */, 1AC35D4D18CEDE9400F37B72 /* Icon-57.png in Resources */, - 15D1FD121998637C00302043 /* DrawPrimitives.lua in Resources */, - 1503FAB818DA8B6C00F6518C /* http.lua in Resources */, + 527B1F4019EFAD44000A1F82 /* Default-667h@2x.png in Resources */, 1AC35D4B18CEDE9400F37B72 /* Icon-144.png in Resources */, - 1503FAC618DA8B6C00F6518C /* url.lua in Resources */, 1AC35D4618CEDE9400F37B72 /* Default-568h@2x.png in Resources */, 1AC35D4818CEDE9400F37B72 /* Default@2x.png in Resources */, - 1503FAC418DA8B6C00F6518C /* tp.lua in Resources */, - 1503FABA18DA8B6C00F6518C /* ltn12.lua in Resources */, - 1503FABE18DA8B6C00F6518C /* mime.lua in Resources */, - 15D1FD601998641200302043 /* DeprecatedNetworkClass.lua in Resources */, - 15D1FD2B1998637C00302043 /* Opengl.lua in Resources */, 1AC35D4E18CEDE9400F37B72 /* Icon-72.png in Resources */, 1AC35D4F18CEDE9400F37B72 /* Icon-76.png in Resources */, - 1503FAC218DA8B6C00F6518C /* socket.lua in Resources */, - 1503FABC18DA8B6C00F6518C /* mbox.lua in Resources */, - 15D1FD1C1998637C00302043 /* json.lua in Resources */, - 15D1FCF91998637C00302043 /* Cocos2dConstants.lua in Resources */, - 15D1FD301998637C00302043 /* OpenglConstants.lua in Resources */, - 1503FAB618DA8B6C00F6518C /* headers.lua in Resources */, 1AC35D4918CEDE9400F37B72 /* Icon-114.png in Resources */, - 1503FAB418DA8B6C00F6518C /* ftp.lua in Resources */, - 15D1FCEF1998637C00302043 /* bitExtend.lua in Resources */, 1AC35D2A18CEDE7200F37B72 /* res in Resources */, 1AC35D2C18CEDE7200F37B72 /* src in Resources */, 1AC35D4C18CEDE9400F37B72 /* Icon-152.png in Resources */, - 15D1FD031998637C00302043 /* DeprecatedCocos2dEnum.lua in Resources */, - 15D1FD211998637C00302043 /* luaj.lua in Resources */, - 15D1FCFE1998637C00302043 /* DeprecatedCocos2dClass.lua in Resources */, - 15D1FD6C1998641200302043 /* NetworkConstants.lua in Resources */, 1AC35D4718CEDE9400F37B72 /* Default.png in Resources */, - 15D1FD261998637C00302043 /* luaoc.lua in Resources */, - 15D1FD081998637C00302043 /* DeprecatedCocos2dFunc.lua in Resources */, - 15D1FD0D1998637C00302043 /* DeprecatedOpenglEnum.lua in Resources */, + 527B1F4119EFAD44000A1F82 /* Default-736h@3x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -7622,86 +7377,41 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 15D1FD751998642800302043 /* experimentalUIConstants.lua in Resources */, 156EAE071977D0BD00F53709 /* ActionTimeline in Resources */, 15E66FD6192DC8C700C20A52 /* Sprite3DTest in Resources */, - 15D1FD001998637C00302043 /* DeprecatedCocos2dEnum.lua in Resources */, - 15D1FD2D1998637C00302043 /* OpenglConstants.lua in Resources */, - 15D1FCF11998637C00302043 /* Cocos2d.lua in Resources */, - 15D1FD47199863E800302043 /* DeprecatedCocoStudioClass.lua in Resources */, 3E2F27BC19D00D7200E7C490 /* audio in Resources */, 1AC35DC318CEE65100F37B72 /* Misc in Resources */, 1AC35DC618CEE65100F37B72 /* Shaders in Resources */, - 15D1FD141998637C00302043 /* extern.lua in Resources */, 1AC35DBB18CEE65100F37B72 /* components in Resources */, 1AC35DE218CEE65900F37B72 /* effect2.ogg in Resources */, - 15C90B4318E66C1700D69802 /* mime.lua in Resources */, - 15D1FD651998641200302043 /* DeprecatedNetworkFunc.lua in Resources */, 1AC35DB118CEE5DA00F37B72 /* InfoPlist.strings in Resources */, 1AC35DDD18CEE65900F37B72 /* CocosBuilderExample.ccbproj in Resources */, 1AC35DB218CEE5DA00F37B72 /* MainMenu.xib in Resources */, - 15D1FD53199863F900302043 /* DeprecatedExtensionEnum.lua in Resources */, 1AC35DBF18CEE65100F37B72 /* hd in Resources */, 1AC35DC818CEE65100F37B72 /* TileMaps in Resources */, 1AC35DBE18CEE65100F37B72 /* fonts in Resources */, - 15D1FD691998641200302043 /* NetworkConstants.lua in Resources */, 1AC35DDE18CEE65900F37B72 /* CocosBuilderExample.ccbresourcelog in Resources */, - 15D1FD34199863BA00302043 /* CCBReaderLoad.lua in Resources */, 1AC35DBC18CEE65100F37B72 /* configs in Resources */, - 15D1FD611998641200302043 /* DeprecatedNetworkEnum.lua in Resources */, 1AC35DE118CEE65900F37B72 /* background.ogg in Resources */, - 15C90B4B18E66C2F00D69802 /* url.lua in Resources */, 1AC35DDF18CEE65900F37B72 /* music.mid in Resources */, 1AC35D7518CEE58500F37B72 /* src in Resources */, 1AC35DE018CEE65900F37B72 /* background.mp3 in Resources */, 1A1645A6191B6281008C7C7F /* ccs-res in Resources */, C08689C218D370C90093E810 /* background.caf in Resources */, - 15D1FD0A1998637C00302043 /* DeprecatedOpenglEnum.lua in Resources */, - 15C90B4918E66C2A00D69802 /* tp.lua in Resources */, - 15D1FD281998637C00302043 /* Opengl.lua in Resources */, 1AC35DE918CEE65900F37B72 /* effect1.wav in Resources */, 3E2F27BD19D00D7D00E7C490 /* background.wav in Resources */, - 15C90B3F18E66C0C00D69802 /* ltn12.lua in Resources */, - 15C90B4718E66C2400D69802 /* socket.lua in Resources */, - 15C90B3A18E66BE200D69802 /* ftp.lua in Resources */, - 15D1FD57199863F900302043 /* ExtensionConstants.lua in Resources */, 1AC35DE518CEE65900F37B72 /* Hello.png in Resources */, 1AC35DEA18CEE65900F37B72 /* pew-pew-lei.wav in Resources */, 1AC35DC418CEE65100F37B72 /* Particles in Resources */, - 15D1FD3F199863CA00302043 /* DeprecatedCocosDenshionFunc.lua in Resources */, - 15D1FD191998637C00302043 /* json.lua in Resources */, - 15D1FD4B199863E800302043 /* StudioConstants.lua in Resources */, 1AC35DB918CEE65100F37B72 /* ccb in Resources */, - 15D1FD49199863E800302043 /* DeprecatedCocoStudioFunc.lua in Resources */, - 15C90B4118E66C1100D69802 /* mbox.lua in Resources */, - 15D1FD55199863F900302043 /* DeprecatedExtensionFunc.lua in Resources */, - 15D1FD3B199863CA00302043 /* AudioEngine.lua in Resources */, - 15D1FD231998637C00302043 /* luaoc.lua in Resources */, 1AC35DB318CEE5DA00F37B72 /* Icon.icns in Resources */, - 15D1FD051998637C00302043 /* DeprecatedCocos2dFunc.lua in Resources */, - 15D1FD3D199863CA00302043 /* DeprecatedCocosDenshionClass.lua in Resources */, - 15D1FD731998642800302043 /* DeprecatedUIFunc.lua in Resources */, 1AC35DE318CEE65900F37B72 /* fileLookup.plist in Resources */, - 15D1FD36199863BA00302043 /* DeprecatedCocosBuilderClass.lua in Resources */, - 15C90B3D18E66BF100D69802 /* http.lua in Resources */, - 15D1FCF61998637C00302043 /* Cocos2dConstants.lua in Resources */, - 15D1FD0F1998637C00302043 /* DrawPrimitives.lua in Resources */, - 15D1FD711998642800302043 /* DeprecatedUIEnum.lua in Resources */, 1AC35DE618CEE65900F37B72 /* effect1.raw in Resources */, 1AC35DC018CEE65100F37B72 /* Images in Resources */, - 15D1FD5D1998641200302043 /* DeprecatedNetworkClass.lua in Resources */, 1AC35D7918CEE59900F37B72 /* cocosbuilderRes in Resources */, - 15C90B3B18E66BEB00D69802 /* headers.lua in Resources */, 1AC35DC918CEE65100F37B72 /* zwoptex in Resources */, - 15D1FCEC1998637C00302043 /* bitExtend.lua in Resources */, - 15D1FD51199863F900302043 /* DeprecatedExtensionClass.lua in Resources */, 1AC35DBD18CEE65100F37B72 /* extensions in Resources */, - 15D1FD771998642800302043 /* GuiConstants.lua in Resources */, - 15D1FD45199863E800302043 /* CocoStudio.lua in Resources */, - 15D1FD1E1998637C00302043 /* luaj.lua in Resources */, 1AC35DC718CEE65100F37B72 /* spine in Resources */, - 15C90B4518E66C1E00D69802 /* smtp.lua in Resources */, - 15D1FCFB1998637C00302043 /* DeprecatedCocos2dClass.lua in Resources */, 1AC35DB718CEE65100F37B72 /* animations in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -7710,92 +7420,50 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 15B3709A19EE5EED00ABE682 /* Manifests in Resources */, 15AECE0F195C1FDD00907DB0 /* cocosvideo.mp4 in Resources */, 15B0870D195AD52000D6F62B /* ActionTimeline in Resources */, 15E66FC8192D957100C20A52 /* Sprite3DTest in Resources */, - 15D1FD58199863F900302043 /* ExtensionConstants.lua in Resources */, - 15C90B4418E66C1800D69802 /* mime.lua in Resources */, - 15D1FD111998637C00302043 /* DrawPrimitives.lua in Resources */, - 15C90B4C18E66C3100D69802 /* url.lua in Resources */, - 15D1FD1B1998637C00302043 /* json.lua in Resources */, 1AC35DD618CEE65200F37B72 /* Misc in Resources */, - 15D1FD3E199863CA00302043 /* DeprecatedCocosDenshionClass.lua in Resources */, 1AC35DF718CEE65B00F37B72 /* effect1.wav in Resources */, C08689C418D370C90093E810 /* background.caf in Resources */, 1AC35DD118CEE65200F37B72 /* fonts in Resources */, - 15D1FD4C199863E800302043 /* StudioConstants.lua in Resources */, 1AC35DCC18CEE65200F37B72 /* ccb in Resources */, 1AC35DD218CEE65200F37B72 /* hd in Resources */, - 15D1FD251998637C00302043 /* luaoc.lua in Resources */, 1AC35DD718CEE65200F37B72 /* Particles in Resources */, - 15D1FD761998642800302043 /* experimentalUIConstants.lua in Resources */, 3E2BDB0219C5E5D40055CDCD /* background.wav in Resources */, 1AC35D9D18CEE5D100F37B72 /* Icon-120.png in Resources */, - 15D1FD781998642800302043 /* GuiConstants.lua in Resources */, - 15C90B3E18E66BF200D69802 /* http.lua in Resources */, 1AC35DA018CEE5D100F37B72 /* Icon-57.png in Resources */, 1AC35DF118CEE65B00F37B72 /* fileLookup.plist in Resources */, 1AC35DEF18CEE65B00F37B72 /* background.ogg in Resources */, 1AC35D9E18CEE5D100F37B72 /* Icon-144.png in Resources */, - 15D1FD021998637C00302043 /* DeprecatedCocos2dEnum.lua in Resources */, 1AC35DF818CEE65B00F37B72 /* pew-pew-lei.wav in Resources */, 1AC35D9918CEE5D100F37B72 /* Default-568h@2x.png in Resources */, - 15D1FD4A199863E800302043 /* DeprecatedCocoStudioFunc.lua in Resources */, - 15D1FD071998637C00302043 /* DeprecatedCocos2dFunc.lua in Resources */, - 15C90B4218E66C1200D69802 /* mbox.lua in Resources */, - 15D1FD201998637C00302043 /* luaj.lua in Resources */, + 527B1F4419EFAE13000A1F82 /* Default-667h@2x.png in Resources */, 1AC35D9B18CEE5D100F37B72 /* Default@2x.png in Resources */, - 15C90B3718E66BE000D69802 /* ftp.lua in Resources */, 1AC35DCE18CEE65200F37B72 /* components in Resources */, - 15D1FD631998641200302043 /* DeprecatedNetworkEnum.lua in Resources */, 1AC35D7618CEE58500F37B72 /* src in Resources */, - 15C90B4A18E66C2B00D69802 /* tp.lua in Resources */, 1AC35DDC18CEE65200F37B72 /* zwoptex in Resources */, 1AC35DEC18CEE65B00F37B72 /* CocosBuilderExample.ccbresourcelog in Resources */, - 15C90B4618E66C1F00D69802 /* smtp.lua in Resources */, - 15D1FD3C199863CA00302043 /* AudioEngine.lua in Resources */, - 15D1FD35199863BA00302043 /* CCBReaderLoad.lua in Resources */, 1AC35DED18CEE65B00F37B72 /* music.mid in Resources */, - 15D1FCFD1998637C00302043 /* DeprecatedCocos2dClass.lua in Resources */, - 15D1FD721998642800302043 /* DeprecatedUIEnum.lua in Resources */, - 15D1FD5F1998641200302043 /* DeprecatedNetworkClass.lua in Resources */, - 15D1FD0C1998637C00302043 /* DeprecatedOpenglEnum.lua in Resources */, - 15D1FD6B1998641200302043 /* NetworkConstants.lua in Resources */, + 527B1F4519EFAE13000A1F82 /* Default-736h@3x.png in Resources */, 1AC35DD018CEE65200F37B72 /* extensions in Resources */, - 15D1FD2A1998637C00302043 /* Opengl.lua in Resources */, - 15D1FCF81998637C00302043 /* Cocos2dConstants.lua in Resources */, 1AC35DD318CEE65200F37B72 /* Images in Resources */, 1AC35DF018CEE65B00F37B72 /* effect2.ogg in Resources */, 3E2BDAFF19C5E5B40055CDCD /* audio in Resources */, 1AC35DEB18CEE65B00F37B72 /* CocosBuilderExample.ccbproj in Resources */, - 15D1FD56199863F900302043 /* DeprecatedExtensionFunc.lua in Resources */, 1AC35DCA18CEE65200F37B72 /* animations in Resources */, - 15D1FD54199863F900302043 /* DeprecatedExtensionEnum.lua in Resources */, - 15D1FD2F1998637C00302043 /* OpenglConstants.lua in Resources */, - 15D1FD671998641200302043 /* DeprecatedNetworkFunc.lua in Resources */, 1A1645A9191B6283008C7C7F /* ccs-res in Resources */, - 15D1FD46199863E800302043 /* CocoStudio.lua in Resources */, - 15D1FD37199863BA00302043 /* DeprecatedCocosBuilderClass.lua in Resources */, 1AC35DA118CEE5D100F37B72 /* Icon-72.png in Resources */, - 15C90B4018E66C0D00D69802 /* ltn12.lua in Resources */, - 15D1FD48199863E800302043 /* DeprecatedCocoStudioClass.lua in Resources */, - 15D1FD161998637C00302043 /* extern.lua in Resources */, 1AC35DA218CEE5D100F37B72 /* Icon-76.png in Resources */, - 15C90B4818E66C2500D69802 /* socket.lua in Resources */, - 15D1FD40199863CA00302043 /* DeprecatedCocosDenshionFunc.lua in Resources */, - 15C90B3C18E66BEC00D69802 /* headers.lua in Resources */, 1AC35DF418CEE65B00F37B72 /* effect1.raw in Resources */, 1AC35DD918CEE65200F37B72 /* Shaders in Resources */, 1AC35DCF18CEE65200F37B72 /* configs in Resources */, 1AC35DDA18CEE65200F37B72 /* spine in Resources */, - 15D1FD741998642800302043 /* DeprecatedUIFunc.lua in Resources */, 1AC35DDB18CEE65200F37B72 /* TileMaps in Resources */, - 15D1FCEE1998637C00302043 /* bitExtend.lua in Resources */, 1AC35DF318CEE65B00F37B72 /* Hello.png in Resources */, - 15D1FCF31998637C00302043 /* Cocos2d.lua in Resources */, 1AC35D7A18CEE59900F37B72 /* cocosbuilderRes in Resources */, 1AC35D9C18CEE5D100F37B72 /* Icon-114.png in Resources */, - 15D1FD52199863F900302043 /* DeprecatedExtensionClass.lua in Resources */, 1AC35D9F18CEE5D100F37B72 /* Icon-152.png in Resources */, 1AC35DEE18CEE65B00F37B72 /* background.mp3 in Resources */, 1AC35D9A18CEE5D100F37B72 /* Default.png in Resources */, @@ -7813,6 +7481,7 @@ 1AC35CFA18CED84500F37B72 /* Misc in Resources */, 38FA2E76194AECF800FF2BE4 /* ActionTimeline in Resources */, 1AC35D0418CED84500F37B72 /* Shaders in Resources */, + 15B3709319EE5D1000ABE682 /* Manifests in Resources */, 3E2F27BA19CFF52300E7C490 /* audio in Resources */, 1AC35CD818CED84500F37B72 /* CocosBuilderExample.ccbresourcelog in Resources */, B2507B6B192589AF00FA4972 /* Shaders3D in Resources */, @@ -7855,6 +7524,8 @@ 3E6177F71960FEFE00DE83F5 /* iphone in Resources */, 3E6178011960FF1800DE83F5 /* Icon-57.png in Resources */, 3E6177F51960FEFE00DE83F5 /* ipad in Resources */, + 527B1F3D19EFACBB000A1F82 /* Default-736h@3x.png in Resources */, + 527B1F3C19EFACBB000A1F82 /* Default-667h@2x.png in Resources */, 3E6177F81960FF1800DE83F5 /* Default-568h@2x.png in Resources */, 3E6177FA1960FF1800DE83F5 /* Default@2x.png in Resources */, 3E6177FB1960FF1800DE83F5 /* Icon-100.png in Resources */, @@ -7892,6 +7563,7 @@ 3E2BDAD219BEA3E20055CDCD /* audio in Resources */, C08689C318D370C90093E810 /* background.caf in Resources */, 1AC35C9518CECF1400F37B72 /* Icon-72.png in Resources */, + 15B3709419EE5D1000ABE682 /* Manifests in Resources */, 1AC35D0B18CED84500F37B72 /* zwoptex in Resources */, 1AC35CF518CED84500F37B72 /* Images in Resources */, 1AC35C9118CECF1400F37B72 /* Icon-40.png in Resources */, @@ -7913,6 +7585,8 @@ 38FA2E77194AECF800FF2BE4 /* ActionTimeline in Resources */, 1AC35C9718CECF1400F37B72 /* Icon-80.png in Resources */, 1AC35CEB18CED84500F37B72 /* fileLookup.plist in Resources */, + 527B1F3519EF9CF8000A1F82 /* Default-736h@3x.png in Resources */, + 527B1F3419EF9CF8000A1F82 /* Default-667h@2x.png in Resources */, 1AC35CFD18CED84500F37B72 /* music.mid in Resources */, 1AC35D0718CED84500F37B72 /* spine in Resources */, 1AC35C8D18CECF1400F37B72 /* Icon-120.png in Resources */, @@ -7942,6 +7616,84 @@ shellPath = /bin/sh; shellScript = "find ${SRCROOT}/../tests/lua-tests/src/ -name \"*\" -exec touch -cm {} \\;"; }; + 1529F07A19EDA0650064B9B1 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/bin/bash\ncocos_dir=${SRCROOT}/../tests/lua-tests/src/cocos\nif [ -d \"${cocos_dir}\" ]; then\nrm -rv \"${cocos_dir}\"\nmkdir \"${cocos_dir}\"\nelse\nmkdir \"${cocos_dir}\"\nfi\n\ncp -r \"${SRCROOT}/../cocos/scripting/lua-bindings/script/\" \"${cocos_dir}\""; + }; + 1529F07B19EDA35E0064B9B1 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/bin/bash\ncocos_dir=${SRCROOT}/../tests/lua-game-controller-test/src/cocos\nif [ -d \"${cocos_dir}\" ]; then\nrm -rv \"${cocos_dir}\"\nmkdir \"${cocos_dir}\"\nelse\nmkdir \"${cocos_dir}\"\nfi\n\ncp -r \"${SRCROOT}/../cocos/scripting/lua-bindings/script/\" \"${cocos_dir}\""; + }; + 1529F07C19EDA3860064B9B1 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/bin/bash\ncocos_dir=${SRCROOT}/../tests/lua-empty-test/src/cocos\nif [ -d \"${cocos_dir}\" ]; then\nrm -rv \"${cocos_dir}\"\nmkdir \"${cocos_dir}\"\nelse\nmkdir \"${cocos_dir}\"\nfi\n\ncp -r \"${SRCROOT}/../cocos/scripting/lua-bindings/script/\" \"${cocos_dir}\""; + }; + 1529F07D19EDA3B90064B9B1 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/bin/bash\ncocos_dir=${SRCROOT}/../tests/lua-empty-test/src/cocos\nif [ -d \"${cocos_dir}\" ]; then\nrm -rv \"${cocos_dir}\"\nmkdir \"${cocos_dir}\"\nelse\nmkdir \"${cocos_dir}\"\nfi\n\ncp -r \"${SRCROOT}/../cocos/scripting/lua-bindings/script/\" \"${cocos_dir}\""; + }; + 1529F07E19EDA3F20064B9B1 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/bin/bash\ncocos_dir=${SRCROOT}/../tests/lua-tests/src/cocos\nif [ -d \"${cocos_dir}\" ]; then\nrm -rv \"${cocos_dir}\"\nmkdir \"${cocos_dir}\"\nelse\nmkdir \"${cocos_dir}\"\nfi\n\ncp -r \"${SRCROOT}/../cocos/scripting/lua-bindings/script/\" \"${cocos_dir}\""; + }; + 1529F07F19EDA4260064B9B1 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "find ${SRCROOT}/../tests/lua-tests/src/ -name \"*\" -exec touch -cm {} \\;"; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -8006,6 +7758,7 @@ files = ( 1AC35D8118CEE5B100F37B72 /* AppDelegate.cpp in Sources */, 1AC35DB518CEE5DA00F37B72 /* LuaObjectCBridgeTest.mm in Sources */, + 150F918819DA409E00B89F57 /* lua_test_bindings.cpp in Sources */, 1AC35DB618CEE5DA00F37B72 /* main.cpp in Sources */, 1AC35D8318CEE5B100F37B72 /* lua_assetsmanager_test_sample.cpp in Sources */, ); @@ -8015,6 +7768,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 150F918919DA409F00B89F57 /* lua_test_bindings.cpp in Sources */, 1AC35DA518CEE5D100F37B72 /* main.m in Sources */, 1AC35DA418CEE5D100F37B72 /* LuaObjectCBridgeTest.mm in Sources */, 1AC35D9818CEE5D100F37B72 /* AppController.mm in Sources */, @@ -8185,6 +7939,7 @@ 1AC35C4B18CECF0C00F37B72 /* ShaderTest2.cpp in Sources */, 38FA2E73194AEBE100FF2BE4 /* ActionTimelineTestScene.cpp in Sources */, 1AC35C6518CECF0C00F37B72 /* UnitTest.cpp in Sources */, + 15B3709819EE5DBA00ABE682 /* AssetsManagerExTest.cpp in Sources */, 29080DC9191B595E0066F8DF /* UISceneManager_Editor.cpp in Sources */, 1AC35B3F18CECF0C00F37B72 /* Bug-458.cpp in Sources */, 3E2F27B919CFF4AF00E7C490 /* NewAudioEngineTest.cpp in Sources */, @@ -8329,6 +8084,7 @@ 1AC35B7C18CECF0C00F37B72 /* GameOverScene.cpp in Sources */, 1AC35BF418CECF0C00F37B72 /* ExtensionsTest.cpp in Sources */, 1AC35B3618CECF0C00F37B72 /* TestEntries.cpp in Sources */, + 15B3709919EE5DBA00ABE682 /* AssetsManagerExTest.cpp in Sources */, 1AC35B2E18CECF0C00F37B72 /* Box2dTest.cpp in Sources */, 29080DCA191B595E0066F8DF /* UISceneManager_Editor.cpp in Sources */, 1AC35C1218CECF0C00F37B72 /* LabelTestNew.cpp in Sources */, diff --git a/build/winrt/Cocos2dShaderCompiler/Assets/Logo.png b/build/winrt/Cocos2dShaderCompiler/Assets/Logo.png deleted file mode 100644 index e26771cb33..0000000000 Binary files a/build/winrt/Cocos2dShaderCompiler/Assets/Logo.png and /dev/null differ diff --git a/build/winrt/Cocos2dShaderCompiler/Assets/SmallLogo.png b/build/winrt/Cocos2dShaderCompiler/Assets/SmallLogo.png deleted file mode 100644 index 1eb0d9d528..0000000000 Binary files a/build/winrt/Cocos2dShaderCompiler/Assets/SmallLogo.png and /dev/null differ diff --git a/build/winrt/Cocos2dShaderCompiler/Assets/SplashScreen.png b/build/winrt/Cocos2dShaderCompiler/Assets/SplashScreen.png deleted file mode 100644 index c951e031bd..0000000000 Binary files a/build/winrt/Cocos2dShaderCompiler/Assets/SplashScreen.png and /dev/null differ diff --git a/build/winrt/Cocos2dShaderCompiler/Assets/StoreLogo.png b/build/winrt/Cocos2dShaderCompiler/Assets/StoreLogo.png deleted file mode 100644 index dcb672712c..0000000000 Binary files a/build/winrt/Cocos2dShaderCompiler/Assets/StoreLogo.png and /dev/null differ diff --git a/build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler.sln b/build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler.sln deleted file mode 100644 index 19e9068b62..0000000000 --- a/build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler.sln +++ /dev/null @@ -1,54 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Cocos2dShaderCompiler", "Cocos2dShaderCompiler.vcxproj", "{4F6DEF20-AC4C-487F-85B8-5993519E3911}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "..\..\..\cocos\2d\cocos2d_winrt.vcxproj", "{2330EDF4-5596-4B53-8BA5-158DDDE713D9}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|ARM = Debug|ARM - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|ARM = Release|ARM - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|ARM.ActiveCfg = Debug|ARM - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|ARM.Build.0 = Debug|ARM - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|ARM.Deploy.0 = Debug|ARM - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|Win32.ActiveCfg = Debug|Win32 - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|Win32.Build.0 = Debug|Win32 - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|Win32.Deploy.0 = Debug|Win32 - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|x64.ActiveCfg = Debug|x64 - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|x64.Build.0 = Debug|x64 - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|x64.Deploy.0 = Debug|x64 - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|ARM.ActiveCfg = Release|ARM - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|ARM.Build.0 = Release|ARM - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|ARM.Deploy.0 = Release|ARM - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|Win32.ActiveCfg = Release|Win32 - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|Win32.Build.0 = Release|Win32 - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|Win32.Deploy.0 = Release|Win32 - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|x64.ActiveCfg = Release|x64 - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|x64.Build.0 = Release|x64 - {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|x64.Deploy.0 = Release|x64 - {2330EDF4-5596-4B53-8BA5-158DDDE713D9}.Debug|ARM.ActiveCfg = Debug|ARM - {2330EDF4-5596-4B53-8BA5-158DDDE713D9}.Debug|ARM.Build.0 = Debug|ARM - {2330EDF4-5596-4B53-8BA5-158DDDE713D9}.Debug|Win32.ActiveCfg = Debug|Win32 - {2330EDF4-5596-4B53-8BA5-158DDDE713D9}.Debug|Win32.Build.0 = Debug|Win32 - {2330EDF4-5596-4B53-8BA5-158DDDE713D9}.Debug|x64.ActiveCfg = Debug|x64 - {2330EDF4-5596-4B53-8BA5-158DDDE713D9}.Debug|x64.Build.0 = Debug|x64 - {2330EDF4-5596-4B53-8BA5-158DDDE713D9}.Release|ARM.ActiveCfg = Release|ARM - {2330EDF4-5596-4B53-8BA5-158DDDE713D9}.Release|ARM.Build.0 = Release|ARM - {2330EDF4-5596-4B53-8BA5-158DDDE713D9}.Release|Win32.ActiveCfg = Release|Win32 - {2330EDF4-5596-4B53-8BA5-158DDDE713D9}.Release|Win32.Build.0 = Release|Win32 - {2330EDF4-5596-4B53-8BA5-158DDDE713D9}.Release|x64.ActiveCfg = Release|x64 - {2330EDF4-5596-4B53-8BA5-158DDDE713D9}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj b/build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj deleted file mode 100644 index 241f6f7220..0000000000 --- a/build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj +++ /dev/null @@ -1,259 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - Debug - ARM - - - Release - ARM - - - - {4f6def20-ac4c-487f-85b8-5993519e3911} - Cocos2dShaderCompiler - en-US - 12.0 - true - Windows Store - 8.1 - - - - Application - true - v120 - - - Application - true - v120 - - - Application - true - v120 - - - Application - false - true - v120 - - - Application - false - true - v120 - - - Application - false - true - v120 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cocos2dShaderCompiler_TemporaryKey.pfx - - - - d2d1.lib;d3d11.lib;dwrite.lib;dxguid.lib;dxgi.lib;ole32.lib;windowscodecs.lib;libGLESv2.lib;libEGL.lib;zlib.lib;%(AdditionalDependencies) - $(ProjectDir)..\..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\..\external\winrt-specific\angle\prebuilt\$(Platform);%(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\arm; $(VCInstallDir)\lib\arm - - - pch.h - $(IntDir)pch.pch - $(ProjectDir);$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(IntermediateOutputPath);%(AdditionalIncludeDirectories) - /bigobj %(AdditionalOptions) - 4453;28204;4996; - WINRT;CC_USE_PHYSICS=0;_DEBUG;%(PreprocessorDefinitions) - NotUsing - - - - - d2d1.lib;d3d11.lib;dwrite.lib;dxguid.lib;dxgi.lib;ole32.lib;windowscodecs.lib;libGLESv2.lib;libEGL.lib;zlib.lib;%(AdditionalDependencies) - $(ProjectDir)..\..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\..\external\winrt-specific\angle\prebuilt\$(Platform);%(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\arm; $(VCInstallDir)\lib\arm - - - pch.h - $(IntDir)pch.pch - $(ProjectDir);$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(IntermediateOutputPath);%(AdditionalIncludeDirectories) - /bigobj %(AdditionalOptions) - 4453;28204;4996; - WINRT;CC_USE_PHYSICS=0;NDEBUG;%(PreprocessorDefinitions) - NotUsing - - - - - d2d1.lib;d3d11.lib;dwrite.lib;dxguid.lib;dxgi.lib;ole32.lib;windowscodecs.lib;libGLESv2.lib;libEGL.lib;zlib.lib;%(AdditionalDependencies) - $(ProjectDir)..\..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\..\external\winrt-specific\angle\prebuilt\$(Platform);%(AdditionalLibraryDirectories);$(VCInstallDir)\lib\store;$(VCInstallDir)\lib - - - pch.h - $(IntDir)pch.pch - $(ProjectDir);$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(IntermediateOutputPath);%(AdditionalIncludeDirectories) - /bigobj %(AdditionalOptions) - 4453;28204;4996; - WINRT;CC_USE_PHYSICS=0;_DEBUG;%(PreprocessorDefinitions) - NotUsing - - - - - d2d1.lib;d3d11.lib;dwrite.lib;dxguid.lib;dxgi.lib;ole32.lib;windowscodecs.lib;libGLESv2.lib;libEGL.lib;zlib.lib;%(AdditionalDependencies) - $(ProjectDir)..\..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\..\external\winrt-specific\angle\prebuilt\$(Platform);%(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store; $(VCInstallDir)\lib - - - pch.h - $(IntDir)pch.pch - $(ProjectDir);$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(IntermediateOutputPath);%(AdditionalIncludeDirectories) - /bigobj %(AdditionalOptions) - 4453;28204;4996; - WINRT;CC_USE_PHYSICS=0;NDEBUG;%(PreprocessorDefinitions) - NotUsing - - - - - d2d1.lib;d3d11.lib;dwrite.lib;dxguid.lib;dxgi.lib;ole32.lib;windowscodecs.lib;libGLESv2.lib;libEGL.lib;zlib.lib;%(AdditionalDependencies) - $(ProjectDir)..\..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\..\external\winrt-specific\angle\prebuilt\$(Platform);%(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\amd64; $(VCInstallDir)\lib\amd64 - - - pch.h - $(IntDir)pch.pch - $(ProjectDir);$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(IntermediateOutputPath);%(AdditionalIncludeDirectories) - /bigobj %(AdditionalOptions) - 4453;28204;4996; - WINRT;CC_USE_PHYSICS=0;_DEBUG;%(PreprocessorDefinitions) - NotUsing - - - - - d2d1.lib;d3d11.lib;dwrite.lib;dxguid.lib;dxgi.lib;ole32.lib;windowscodecs.lib;libGLESv2.lib;libEGL.lib;zlib.lib;%(AdditionalDependencies) - $(ProjectDir)..\..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\..\external\winrt-specific\angle\prebuilt\$(Platform);%(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\amd64; $(VCInstallDir)\lib\amd64 - - - pch.h - $(IntDir)pch.pch - $(ProjectDir);$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(IntermediateOutputPath);%(AdditionalIncludeDirectories) - /bigobj %(AdditionalOptions) - 4453;28204;4996; - WINRT;CC_USE_PHYSICS=0;NDEBUG;%(PreprocessorDefinitions) - NotUsing - - - - - - - - - - - App.xaml - - - DirectXPage.xaml - - - - - - App.xaml - - - DirectXPage.xaml - - - - - - Designer - - - true - true - - - true - true - - - - - - Designer - - - Designer - - - - - {2330edf4-5596-4b53-8ba5-158ddde713d9} - - - - - - - - - \ No newline at end of file diff --git a/build/winrt/Cocos2dShaderCompiler/App.xaml b/build/wp8/Cocos2dShaderCompiler/App.xaml similarity index 100% rename from build/winrt/Cocos2dShaderCompiler/App.xaml rename to build/wp8/Cocos2dShaderCompiler/App.xaml diff --git a/build/winrt/Cocos2dShaderCompiler/App.xaml.cpp b/build/wp8/Cocos2dShaderCompiler/App.xaml.cpp similarity index 100% rename from build/winrt/Cocos2dShaderCompiler/App.xaml.cpp rename to build/wp8/Cocos2dShaderCompiler/App.xaml.cpp diff --git a/build/winrt/Cocos2dShaderCompiler/App.xaml.h b/build/wp8/Cocos2dShaderCompiler/App.xaml.h similarity index 100% rename from build/winrt/Cocos2dShaderCompiler/App.xaml.h rename to build/wp8/Cocos2dShaderCompiler/App.xaml.h diff --git a/build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler.sln b/build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler.sln new file mode 100644 index 0000000000..481fbd3963 --- /dev/null +++ b/build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler.sln @@ -0,0 +1,98 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.30723.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Cocos2dShaderCompiler", "Cocos2dShaderCompiler.vcxproj", "{4F6DEF20-AC4C-487F-85B8-5993519E3911}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "libcocos2d", "libcocos2d", "{29321038-F308-421E-B8CA-140BB23D3C6D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d_8_1.Shared", "..\..\..\cocos\2d\libcocos2d_8_1\libcocos2d_8_1\libcocos2d_8_1.Shared\libcocos2d_8_1.Shared.vcxitems", "{5D6F020F-7E72-4494-90A0-2DF11D235DF9}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "External", "External", "{ECA7A2AA-8501-4177-8360-322A569B6C3E}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Box2D", "Box2D", "{7CA66464-6A5E-493B-82EF-DBD84F91766F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "libSpine", "libSpine", "{8F8A69D6-BD64-4BAD-AE20-2D07E7BD57BA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbox2d.Shared", "..\..\..\external\Box2D\proj.win8.1-universal\libbox2d.Shared\libbox2d.Shared.vcxitems", "{4A3C6BA8-C227-498B-AA21-40BDA27B461F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbox2d.Windows", "..\..\..\external\Box2D\proj.win8.1-universal\libbox2d.Windows\libbox2d.Windows.vcxproj", "{3B26A12D-3A44-47EA-82D2-282660FC844D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libSpine.Shared", "..\..\..\cocos\editor-support\spine\proj.win8.1-universal\libSpine.Shared\libSpine.Shared.vcxitems", "{ADAFD00D-A0D6-46EF-9F0B-EA2880BFE1DE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libSpine.Windows", "..\..\..\cocos\editor-support\spine\proj.win8.1-universal\libSpine.Windows\libSpine.Windows.vcxproj", "{F3550FE0-C795-44F6-8FEB-093EB68143AE}" +EndProject +Global + GlobalSection(SharedMSBuildProjectFiles) = preSolution + ..\..\..\external\Box2D\proj.win8.1-universal\libbox2d.Shared\libbox2d.Shared.vcxitems*{4a3c6ba8-c227-498b-aa21-40bda27b461f}*SharedItemsImports = 9 + ..\..\..\cocos\editor-support\spine\proj.win8.1-universal\libSpine.Shared\libSpine.Shared.vcxitems*{adafd00d-a0d6-46ef-9f0b-ea2880bfe1de}*SharedItemsImports = 9 + ..\..\..\cocos\2d\libcocos2d_8_1\libcocos2d_8_1\libcocos2d_8_1.Shared\libcocos2d_8_1.Shared.vcxitems*{5d6f020f-7e72-4494-90a0-2df11d235df9}*SharedItemsImports = 9 + ..\..\..\external\Box2D\proj.win8.1-universal\libbox2d.Shared\libbox2d.Shared.vcxitems*{3b26a12d-3a44-47ea-82d2-282660fc844d}*SharedItemsImports = 4 + ..\..\..\cocos\editor-support\spine\proj.win8.1-universal\libSpine.Shared\libSpine.Shared.vcxitems*{f3550fe0-c795-44f6-8feb-093eb68143ae}*SharedItemsImports = 4 + EndGlobalSection + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|ARM = Release|ARM + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|ARM.ActiveCfg = Debug|ARM + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|ARM.Build.0 = Debug|ARM + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|ARM.Deploy.0 = Debug|ARM + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|Win32.ActiveCfg = Debug|Win32 + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|Win32.Build.0 = Debug|Win32 + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|Win32.Deploy.0 = Debug|Win32 + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|x64.ActiveCfg = Debug|x64 + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|x64.Build.0 = Debug|x64 + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Debug|x64.Deploy.0 = Debug|x64 + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|ARM.ActiveCfg = Release|ARM + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|ARM.Build.0 = Release|ARM + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|ARM.Deploy.0 = Release|ARM + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|Win32.ActiveCfg = Release|Win32 + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|Win32.Build.0 = Release|Win32 + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|Win32.Deploy.0 = Release|Win32 + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|x64.ActiveCfg = Release|x64 + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|x64.Build.0 = Release|x64 + {4F6DEF20-AC4C-487F-85B8-5993519E3911}.Release|x64.Deploy.0 = Release|x64 + {3B26A12D-3A44-47EA-82D2-282660FC844D}.Debug|ARM.ActiveCfg = Debug|ARM + {3B26A12D-3A44-47EA-82D2-282660FC844D}.Debug|ARM.Build.0 = Debug|ARM + {3B26A12D-3A44-47EA-82D2-282660FC844D}.Debug|Win32.ActiveCfg = Debug|Win32 + {3B26A12D-3A44-47EA-82D2-282660FC844D}.Debug|Win32.Build.0 = Debug|Win32 + {3B26A12D-3A44-47EA-82D2-282660FC844D}.Debug|x64.ActiveCfg = Debug|x64 + {3B26A12D-3A44-47EA-82D2-282660FC844D}.Debug|x64.Build.0 = Debug|x64 + {3B26A12D-3A44-47EA-82D2-282660FC844D}.Release|ARM.ActiveCfg = Release|ARM + {3B26A12D-3A44-47EA-82D2-282660FC844D}.Release|ARM.Build.0 = Release|ARM + {3B26A12D-3A44-47EA-82D2-282660FC844D}.Release|Win32.ActiveCfg = Release|Win32 + {3B26A12D-3A44-47EA-82D2-282660FC844D}.Release|Win32.Build.0 = Release|Win32 + {3B26A12D-3A44-47EA-82D2-282660FC844D}.Release|x64.ActiveCfg = Release|x64 + {3B26A12D-3A44-47EA-82D2-282660FC844D}.Release|x64.Build.0 = Release|x64 + {F3550FE0-C795-44F6-8FEB-093EB68143AE}.Debug|ARM.ActiveCfg = Debug|ARM + {F3550FE0-C795-44F6-8FEB-093EB68143AE}.Debug|ARM.Build.0 = Debug|ARM + {F3550FE0-C795-44F6-8FEB-093EB68143AE}.Debug|Win32.ActiveCfg = Debug|Win32 + {F3550FE0-C795-44F6-8FEB-093EB68143AE}.Debug|Win32.Build.0 = Debug|Win32 + {F3550FE0-C795-44F6-8FEB-093EB68143AE}.Debug|x64.ActiveCfg = Debug|x64 + {F3550FE0-C795-44F6-8FEB-093EB68143AE}.Debug|x64.Build.0 = Debug|x64 + {F3550FE0-C795-44F6-8FEB-093EB68143AE}.Release|ARM.ActiveCfg = Release|ARM + {F3550FE0-C795-44F6-8FEB-093EB68143AE}.Release|ARM.Build.0 = Release|ARM + {F3550FE0-C795-44F6-8FEB-093EB68143AE}.Release|Win32.ActiveCfg = Release|Win32 + {F3550FE0-C795-44F6-8FEB-093EB68143AE}.Release|Win32.Build.0 = Release|Win32 + {F3550FE0-C795-44F6-8FEB-093EB68143AE}.Release|x64.ActiveCfg = Release|x64 + {F3550FE0-C795-44F6-8FEB-093EB68143AE}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {5D6F020F-7E72-4494-90A0-2DF11D235DF9} = {29321038-F308-421E-B8CA-140BB23D3C6D} + {7CA66464-6A5E-493B-82EF-DBD84F91766F} = {ECA7A2AA-8501-4177-8360-322A569B6C3E} + {8F8A69D6-BD64-4BAD-AE20-2D07E7BD57BA} = {ECA7A2AA-8501-4177-8360-322A569B6C3E} + {4A3C6BA8-C227-498B-AA21-40BDA27B461F} = {7CA66464-6A5E-493B-82EF-DBD84F91766F} + {3B26A12D-3A44-47EA-82D2-282660FC844D} = {7CA66464-6A5E-493B-82EF-DBD84F91766F} + {ADAFD00D-A0D6-46EF-9F0B-EA2880BFE1DE} = {8F8A69D6-BD64-4BAD-AE20-2D07E7BD57BA} + {F3550FE0-C795-44F6-8FEB-093EB68143AE} = {8F8A69D6-BD64-4BAD-AE20-2D07E7BD57BA} + EndGlobalSection +EndGlobal diff --git a/build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj b/build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj new file mode 100644 index 0000000000..8d18b52516 --- /dev/null +++ b/build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj @@ -0,0 +1,641 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + Debug + ARM + + + Release + ARM + + + + {4f6def20-ac4c-487f-85b8-5993519e3911} + Cocos2dShaderCompiler + en-US + 12.0 + true + Windows Store + 8.1 + + + + Application + true + v120 + + + Application + true + v120 + + + Application + true + v120 + + + Application + false + true + v120 + + + Application + false + true + v120 + + + Application + false + true + v120 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cocos2dShaderCompiler_TemporaryKey.pfx + + + + d2d1.lib;d3d11.lib;dwrite.lib;dxguid.lib;dxgi.lib;ole32.lib;windowscodecs.lib;libGLESv2.lib;libEGL.lib;zlib.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\..\external\winrt-specific\angle\prebuilt\$(Platform);%(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\arm; $(VCInstallDir)\lib\arm + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(IntermediateOutputPath);%(AdditionalIncludeDirectories) + /bigobj %(AdditionalOptions) + WP8_SHADER_COMPILER;CC_USE_PHYSICS=0;CC_STATIC;_DEBUG;%(PreprocessorDefinitions) + NotUsing + + + + + + + d2d1.lib;d3d11.lib;dwrite.lib;dxguid.lib;dxgi.lib;ole32.lib;windowscodecs.lib;libGLESv2.lib;libEGL.lib;zlib.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\..\external\winrt-specific\angle\prebuilt\$(Platform);%(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\arm; $(VCInstallDir)\lib\arm + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(IntermediateOutputPath);%(AdditionalIncludeDirectories) + /bigobj %(AdditionalOptions) + WP8_SHADER_COMPILER;CC_USE_PHYSICS=0;CC_STATIC;NDEBUG;%(PreprocessorDefinitions) + NotUsing + + + + + + + d2d1.lib;d3d11.lib;dwrite.lib;dxguid.lib;dxgi.lib;ole32.lib;windowscodecs.lib;libGLESv2.lib;libEGL.lib;zlib.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\..\external\winrt-specific\angle\prebuilt\$(Platform);%(AdditionalLibraryDirectories);$(VCInstallDir)\lib\store;$(VCInstallDir)\lib + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(IntermediateOutputPath);%(AdditionalIncludeDirectories) + /bigobj %(AdditionalOptions) + WP8_SHADER_COMPILER;CC_USE_PHYSICS=0;CC_STATIC;_DEBUG;%(PreprocessorDefinitions) + NotUsing + + + + + + + d2d1.lib;d3d11.lib;dwrite.lib;dxguid.lib;dxgi.lib;ole32.lib;windowscodecs.lib;libGLESv2.lib;libEGL.lib;zlib.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\..\external\winrt-specific\angle\prebuilt\$(Platform);%(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store; $(VCInstallDir)\lib + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(IntermediateOutputPath);%(AdditionalIncludeDirectories) + /bigobj %(AdditionalOptions) + WP8_SHADER_COMPILER;CC_USE_PHYSICS=0;CC_STATIC;NDEBUG;%(PreprocessorDefinitions) + NotUsing + + + + + + + d2d1.lib;d3d11.lib;dwrite.lib;dxguid.lib;dxgi.lib;ole32.lib;windowscodecs.lib;libGLESv2.lib;libEGL.lib;zlib.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\..\external\winrt-specific\angle\prebuilt\$(Platform);%(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\amd64; $(VCInstallDir)\lib\amd64 + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(IntermediateOutputPath);%(AdditionalIncludeDirectories) + /bigobj %(AdditionalOptions) + WP8_SHADER_COMPILER;CC_USE_PHYSICS=0;CC_STATIC;_DEBUG;%(PreprocessorDefinitions) + NotUsing + + + + + + + d2d1.lib;d3d11.lib;dwrite.lib;dxguid.lib;dxgi.lib;ole32.lib;windowscodecs.lib;libGLESv2.lib;libEGL.lib;zlib.lib;%(AdditionalDependencies) + $(ProjectDir)..\..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\..\external\winrt-specific\angle\prebuilt\$(Platform);%(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\amd64; $(VCInstallDir)\lib\amd64 + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(IntermediateOutputPath);%(AdditionalIncludeDirectories) + /bigobj %(AdditionalOptions) + WP8_SHADER_COMPILER;CC_USE_PHYSICS=0;CC_STATIC;NDEBUG;%(PreprocessorDefinitions) + NotUsing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + App.xaml + + + DirectXPage.xaml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + false + false + false + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + false + false + false + false + + + + + + + + + false + false + false + false + false + false + + + App.xaml + + + DirectXPage.xaml + + + + + + Designer + + + + + + + Designer + + + Designer + + + + + + + + + \ No newline at end of file diff --git a/build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj.filters b/build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj.filters new file mode 100644 index 0000000000..e428ea0402 --- /dev/null +++ b/build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj.filters @@ -0,0 +1,1173 @@ + + + + + 5a7dfab3-eb13-41b4-a863-3136f23cdca2 + bmp;fbx;gif;jpg;jpeg;tga;tiff;tif;png + + + Assets + + + Assets + + + Assets + + + Assets + + + {fa658c36-371d-4ebc-9363-0fc5634a68b0} + + + {baf5d4e6-b9ed-4dd6-82f9-eeb0f9f27c6d} + + + {1a9522f4-2248-4d5e-9f27-aa8f434b02c6} + + + {1f833f8d-6c08-4b5f-aeae-87b0fd414f3c} + + + {28e237bc-5de4-4afc-b8bf-0543ce767a5e} + + + {cf7e2c01-1ee8-4740-9dbc-f4623dc85a23} + + + {4dc6e8b1-25b2-4e5d-b83a-ea0b47fe88bd} + + + {ab492f52-b0fc-4055-8eb3-e5aff7734ced} + + + {115c74d1-3108-476d-a3e5-5089c8027d73} + + + {664900af-2f27-4622-886e-05cee5cbd0bc} + + + {6190d648-787d-49a2-89da-abaa820c0ef0} + + + {78d5964f-0893-428d-b4bb-93636e6d8744} + + + {bc3d9640-e48b-4e53-8725-38d900c9a019} + + + {e33e50a3-b742-4f4f-ae01-b233f27764c2} + + + + + + + + + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\platform\winrt + + + libcoco2d\platform\winrt + + + libcoco2d\platform\winrt + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\platform + + + libcoco2d + + + libcoco2d\external\unzip + + + libcoco2d\external\unzip + + + libcoco2d\external\ConvertUTF + + + libcoco2d\external\ConvertUTF + + + libcoco2d\external\edtaa + + + libcoco2d\external\tinyxml2 + + + libcoco2d\external\xxhash + + + libcoco2d\platform + + + libcoco2d\platform + + + libcoco2d\platform\winrt + + + libcoco2d\platform\winrt + + + libcoco2d\platform\winrt + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\platform\winrt + + + libcoco2d\platform\winrt + + + libcoco2d\external\unzip + + + + + + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\platform\winrt + + + libcoco2d\platform\winrt + + + libcoco2d\platform\winrt + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\base + + + libcoco2d\platform\winrt + + + libcoco2d\platform\winrt + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\2d + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\math + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\renderer + + + libcoco2d\platform + + + libcoco2d\external\unzip + + + libcoco2d\external\unzip + + + libcoco2d\external\ConvertUTF + + + libcoco2d\external\edtaa + + + libcoco2d\external\tinyxml2 + + + libcoco2d\external\xxhash + + + libcoco2d\platform + + + libcoco2d\platform + + + libcoco2d\platform\winrt + + + libcoco2d\platform\winrt + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\deprecated + + + libcoco2d\platform\winrt + + + libcoco2d\external\unzip + + + + + + + + + + + libcoco2d\math + + + + + + \ No newline at end of file diff --git a/build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler_TemporaryKey.pfx b/build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler_TemporaryKey.pfx similarity index 100% rename from build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler_TemporaryKey.pfx rename to build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler_TemporaryKey.pfx diff --git a/build/winrt/Cocos2dShaderCompiler/DirectXPage.xaml b/build/wp8/Cocos2dShaderCompiler/DirectXPage.xaml similarity index 100% rename from build/winrt/Cocos2dShaderCompiler/DirectXPage.xaml rename to build/wp8/Cocos2dShaderCompiler/DirectXPage.xaml diff --git a/build/winrt/Cocos2dShaderCompiler/DirectXPage.xaml.cpp b/build/wp8/Cocos2dShaderCompiler/DirectXPage.xaml.cpp similarity index 100% rename from build/winrt/Cocos2dShaderCompiler/DirectXPage.xaml.cpp rename to build/wp8/Cocos2dShaderCompiler/DirectXPage.xaml.cpp diff --git a/build/winrt/Cocos2dShaderCompiler/DirectXPage.xaml.h b/build/wp8/Cocos2dShaderCompiler/DirectXPage.xaml.h similarity index 100% rename from build/winrt/Cocos2dShaderCompiler/DirectXPage.xaml.h rename to build/wp8/Cocos2dShaderCompiler/DirectXPage.xaml.h diff --git a/build/winrt/Cocos2dShaderCompiler/Package.appxmanifest b/build/wp8/Cocos2dShaderCompiler/Package.appxmanifest similarity index 100% rename from build/winrt/Cocos2dShaderCompiler/Package.appxmanifest rename to build/wp8/Cocos2dShaderCompiler/Package.appxmanifest diff --git a/build/winrt/Cocos2dShaderCompiler/ShaderCompiler.cpp b/build/wp8/Cocos2dShaderCompiler/ShaderCompiler.cpp similarity index 94% rename from build/winrt/Cocos2dShaderCompiler/ShaderCompiler.cpp rename to build/wp8/Cocos2dShaderCompiler/ShaderCompiler.cpp index cb0a8359ab..d8c1d9a538 100644 --- a/build/winrt/Cocos2dShaderCompiler/ShaderCompiler.cpp +++ b/build/wp8/Cocos2dShaderCompiler/ShaderCompiler.cpp @@ -51,21 +51,6 @@ ShaderCompiler::~ShaderCompiler() } -bool ShaderCompiler::applicationDidFinishLaunching() -{ - return true; -} - -void ShaderCompiler::applicationDidEnterBackground() -{ - -} - -void ShaderCompiler::applicationWillEnterForeground() -{ - - -} bool ShaderCompiler::Compile(Windows::UI::Xaml::Controls::TextBlock^ resultText) @@ -79,7 +64,9 @@ bool ShaderCompiler::Compile(Windows::UI::Xaml::Controls::TextBlock^ resultText) return false; } - Director::getInstance()->setAnimationInterval(1.0 / 60.0); + auto director = cocos2d::Director::getInstance(); + + //Director::getInstance()->setAnimationInterval(1.0 / 60.0); CCShaderCache::getInstance()->loadDefaultShaders(); CCPrecompiledShaders::getInstance()->savePrecompiledShaders(); resultText->Text = "Complete"; diff --git a/build/winrt/Cocos2dShaderCompiler/ShaderCompiler.h b/build/wp8/Cocos2dShaderCompiler/ShaderCompiler.h similarity index 88% rename from build/winrt/Cocos2dShaderCompiler/ShaderCompiler.h rename to build/wp8/Cocos2dShaderCompiler/ShaderCompiler.h index 46fd036fa5..c26cc5ee7a 100644 --- a/build/winrt/Cocos2dShaderCompiler/ShaderCompiler.h +++ b/build/wp8/Cocos2dShaderCompiler/ShaderCompiler.h @@ -24,11 +24,10 @@ THE SOFTWARE. ****************************************************************************/ #pragma once -#include "cocos2d.h" #include "CCGL.h" -class ShaderCompiler : private cocos2d::Application +class ShaderCompiler { public: @@ -40,9 +39,6 @@ private: Windows::UI::Xaml::Controls::TextBlock^ m_resultText; - virtual bool applicationDidFinishLaunching(); - virtual void applicationDidEnterBackground(); - virtual void applicationWillEnterForeground(); void InitializeCocos2d(); diff --git a/build/winrt/Cocos2dShaderCompiler/pch.cpp b/build/wp8/Cocos2dShaderCompiler/pch.cpp similarity index 100% rename from build/winrt/Cocos2dShaderCompiler/pch.cpp rename to build/wp8/Cocos2dShaderCompiler/pch.cpp diff --git a/build/winrt/Cocos2dShaderCompiler/pch.h b/build/wp8/Cocos2dShaderCompiler/pch.h similarity index 100% rename from build/winrt/Cocos2dShaderCompiler/pch.h rename to build/wp8/Cocos2dShaderCompiler/pch.h diff --git a/build/wp8/wp8_precompiled_shaders.txt b/build/wp8/wp8_precompiled_shaders.txt new file mode 100644 index 0000000000..ca3deaf2c0 --- /dev/null +++ b/build/wp8/wp8_precompiled_shaders.txt @@ -0,0 +1,7 @@ +How to compile precompiled shaders for Windows Phone 8.0 (WP8) + +1. Open the VS project Cocos2dShaderCompiler\Cocos2dShaderCompiler.sln +2. Build and run the project +3. Click the Compile button +4. Select the file cocos\platform\wp8\shaders\precompiledshaders.h in the file dialog box +5. Program will precompile all of the cached cocos2d-x shaders. \ No newline at end of file diff --git a/cmake/BuildHelpers.CMakeLists.txt b/cmake/BuildHelpers.CMakeLists.txt index 1ebcb2fc6e..1ad543c6d5 100644 --- a/cmake/BuildHelpers.CMakeLists.txt +++ b/cmake/BuildHelpers.CMakeLists.txt @@ -44,6 +44,7 @@ elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(SYSTEM_STRING "IOS") else() set(MACOSX TRUE) + set(APPLE TRUE) set(SYSTEM_STRING "Mac OSX") endif() endif() diff --git a/cocos/2d/CCAtlasNode.cpp b/cocos/2d/CCAtlasNode.cpp index e885655384..77d2aadb8a 100644 --- a/cocos/2d/CCAtlasNode.cpp +++ b/cocos/2d/CCAtlasNode.cpp @@ -216,7 +216,15 @@ void AtlasNode::setBlendFunc(const BlendFunc &blendFunc) void AtlasNode::updateBlendFunc() { if( ! _textureAtlas->getTexture()->hasPremultipliedAlpha() ) + { _blendFunc = BlendFunc::ALPHA_NON_PREMULTIPLIED; + setOpacityModifyRGB(false); + } + else + { + _blendFunc = BlendFunc::ALPHA_PREMULTIPLIED; + setOpacityModifyRGB(true); + } } void AtlasNode::setTexture(Texture2D *texture) diff --git a/cocos/2d/CCClippingRectangleNode.cpp b/cocos/2d/CCClippingRectangleNode.cpp new file mode 100644 index 0000000000..fa0cb5549d --- /dev/null +++ b/cocos/2d/CCClippingRectangleNode.cpp @@ -0,0 +1,84 @@ + +#include "CCClippingRectangleNode.h" +#include "base/CCDirector.h" +#include "renderer/CCRenderer.h" +#include "math/Vec2.h" +#include "CCGLView.h" + +NS_CC_BEGIN + +ClippingRectangleNode* ClippingRectangleNode::create(const Rect& clippingRegion) +{ + ClippingRectangleNode* node = new ClippingRectangleNode(); + if (node && node->init()) { + node->setClippingRegion(clippingRegion); + node->autorelease(); + } else { + CC_SAFE_DELETE(node); + } + + return node; +} + +ClippingRectangleNode* ClippingRectangleNode::create() +{ + ClippingRectangleNode* node = new ClippingRectangleNode(); + if (node && node->init()) { + node->autorelease(); + } else { + CC_SAFE_DELETE(node); + } + + return node; +} + +void ClippingRectangleNode::setClippingRegion(const Rect &clippingRegion) +{ + _clippingRegion = clippingRegion; +} + +void ClippingRectangleNode::onBeforeVisitScissor() +{ + if (_clippingEnabled) { + glEnable(GL_SCISSOR_TEST); + + float scaleX = _scaleX; + float scaleY = _scaleY; + Node *parent = this->getParent(); + while (parent) { + scaleX *= parent->getScaleX(); + scaleY *= parent->getScaleY(); + parent = parent->getParent(); + } + + const Point pos = convertToWorldSpace(Point(_clippingRegion.origin.x, _clippingRegion.origin.y)); + GLView* glView = Director::getInstance()->getOpenGLView(); + glView->setScissorInPoints(pos.x * scaleX, + pos.y * scaleY, + _clippingRegion.size.width * scaleX, + _clippingRegion.size.height * scaleY); + } +} + +void ClippingRectangleNode::onAfterVisitScissor() +{ + if (_clippingEnabled) + { + glDisable(GL_SCISSOR_TEST); + } +} + +void ClippingRectangleNode::visit(Renderer *renderer, const Mat4 &parentTransform, uint32_t parentFlags) +{ + _beforeVisitCmdScissor.init(_globalZOrder); + _beforeVisitCmdScissor.func = CC_CALLBACK_0(ClippingRectangleNode::onBeforeVisitScissor, this); + renderer->addCommand(&_beforeVisitCmdScissor); + + Node::visit(renderer, parentTransform, parentFlags); + + _afterVisitCmdScissor.init(_globalZOrder); + _afterVisitCmdScissor.func = CC_CALLBACK_0(ClippingRectangleNode::onAfterVisitScissor, this); + renderer->addCommand(&_afterVisitCmdScissor); +} + +NS_CC_END diff --git a/cocos/2d/CCClippingRectangleNode.h b/cocos/2d/CCClippingRectangleNode.h new file mode 100644 index 0000000000..08e2673730 --- /dev/null +++ b/cocos/2d/CCClippingRectangleNode.h @@ -0,0 +1,77 @@ +/* + * cocos2d for iPhone: http://www.cocos2d-iphone.org + * cocos2d-x: http://www.cocos2d-x.org + * + * Copyright (c) 2012 Pierre-David Bélanger + * Copyright (c) 2012 cocos2d-x.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + +#ifndef __MISCNODE_CCCLIPPING_RECTANGLE_NODE_H__ +#define __MISCNODE_CCCLIPPING_RECTANGLE_NODE_H__ + +#include "2d/CCNode.h" +#include "renderer/CCCustomCommand.h" +#include "platform/CCGL.h" + +NS_CC_BEGIN + +class CC_DLL ClippingRectangleNode : public Node +{ +public: + static ClippingRectangleNode* create(const Rect& clippingRegion); + static ClippingRectangleNode* create(); + + const Rect& getClippingRegion() const { + return _clippingRegion; + } + void setClippingRegion(const Rect& clippingRegion); + + const bool isClippingEnabled() const { + return _clippingEnabled; + } + void setClippingEnabled(bool enabled) { + _clippingEnabled = enabled; + } + + //virtual void draw(Renderer* renderer, const Mat4 &transform, uint32_t flags) override; + virtual void visit(Renderer *renderer, const Mat4 &parentTransform, uint32_t parentFlags) override; + +protected: + ClippingRectangleNode() + : _clippingEnabled(true) + { + } + + void onBeforeVisitScissor(); + void onAfterVisitScissor(); + + Rect _clippingRegion; + bool _clippingEnabled; + + CustomCommand _beforeVisitCmdScissor; + CustomCommand _afterVisitCmdScissor; +}; + +NS_CC_END + +#endif + diff --git a/cocos/2d/CCDrawNode.cpp b/cocos/2d/CCDrawNode.cpp index 411afd3bb2..eae022bea6 100644 --- a/cocos/2d/CCDrawNode.cpp +++ b/cocos/2d/CCDrawNode.cpp @@ -147,6 +147,8 @@ DrawNode::~DrawNode() if (Configuration::getInstance()->supportsShareableVAO()) { glDeleteVertexArrays(1, &_vao); + glDeleteVertexArrays(1, &_vaoGLLine); + glDeleteVertexArrays(1, &_vaoGLPoint); GL::bindVAO(0); _vao = 0; } @@ -429,7 +431,7 @@ void DrawNode::drawPoints(const Vec2 *position, unsigned int numberOfPoints, con V2F_C4B_T2F *point = (V2F_C4B_T2F*)(_bufferGLPoint + _bufferCountGLPoint); - for(int i=0; i= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#elif _MSC_VER >= 1400 //vs 2005 or higher +#pragma warning (push) +#pragma warning (disable: 4996) +#endif + #ifndef M_PI #define M_PI 3.14159265358979323846 #endif @@ -582,4 +590,10 @@ void setDrawColor4B( GLubyte r, GLubyte g, GLubyte b, GLubyte a ) } // DrawPrimitives namespace +#if defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) +#pragma GCC diagnostic warning "-Wdeprecated-declarations" +#elif _MSC_VER >= 1400 //vs 2005 or higher +#pragma warning (pop) +#endif + NS_CC_END diff --git a/cocos/2d/CCLabel.h b/cocos/2d/CCLabel.h index 59e9288ab6..2b3efbb34a 100644 --- a/cocos/2d/CCLabel.h +++ b/cocos/2d/CCLabel.h @@ -131,6 +131,7 @@ public: virtual void setSystemFontSize(float fontSize); virtual float getSystemFontSize() const { return _systemFontSize;} + virtual void requestSystemFontRefresh() { _systemFontDirty = true;} /** changes the string to render * @warning It is as expensive as changing the string if you haven't set up TTF/BMFont/CharMap for the label. */ diff --git a/cocos/2d/CCLabelAtlas.cpp b/cocos/2d/CCLabelAtlas.cpp index aa0750e906..2134af1925 100644 --- a/cocos/2d/CCLabelAtlas.cpp +++ b/cocos/2d/CCLabelAtlas.cpp @@ -233,6 +233,12 @@ void LabelAtlas::updateColor() if (_textureAtlas) { Color4B color4( _displayedColor.r, _displayedColor.g, _displayedColor.b, _displayedOpacity ); + if (_isOpacityModifyRGB) + { + color4.r *= _displayedOpacity/255.0f; + color4.g *= _displayedOpacity/255.0f; + color4.b *= _displayedOpacity/255.0f; + } auto quads = _textureAtlas->getQuads(); ssize_t length = _string.length(); for (int index = 0; index < length; index++) diff --git a/cocos/2d/CCLabelBMFont.h b/cocos/2d/CCLabelBMFont.h index 65fc7f0d7c..7e4380df8e 100644 --- a/cocos/2d/CCLabelBMFont.h +++ b/cocos/2d/CCLabelBMFont.h @@ -41,6 +41,12 @@ Use any of these editors to generate BMFonts: NS_CC_BEGIN +#if defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#elif _MSC_VER >= 1400 //vs 2005 or higher +#pragma warning (push) +#pragma warning (disable: 4996) +#endif /** @brief LabelBMFont is a subclass of SpriteBatchNode. Features: @@ -142,7 +148,11 @@ private: // end of GUI group /// @} /// @} - +#if defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) +#pragma GCC diagnostic warning "-Wdeprecated-declarations" +#elif _MSC_VER >= 1400 //vs 2005 or higher +#pragma warning (pop) +#endif NS_CC_END #endif //__CCBITMAP_FONT_ATLAS_H__ diff --git a/cocos/2d/CCLabelTTF.h b/cocos/2d/CCLabelTTF.h index 8c0dea3f19..f83b77a1cc 100644 --- a/cocos/2d/CCLabelTTF.h +++ b/cocos/2d/CCLabelTTF.h @@ -30,6 +30,13 @@ THE SOFTWARE. NS_CC_BEGIN +#if defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#elif _MSC_VER >= 1400 //vs 2005 or higher +#pragma warning (push) +#pragma warning (disable: 4996) +#endif + class Label; /** @@ -161,7 +168,11 @@ protected: // end of GUI group /// @} /// @} - +#if defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) +#pragma GCC diagnostic warning "-Wdeprecated-declarations" +#elif _MSC_VER >= 1400 //vs 2005 or higher +#pragma warning (pop) +#endif NS_CC_END #endif //__CCLABEL_H__ diff --git a/cocos/2d/CCMenu.cpp b/cocos/2d/CCMenu.cpp index 7d9141edc6..b484e34b16 100644 --- a/cocos/2d/CCMenu.cpp +++ b/cocos/2d/CCMenu.cpp @@ -32,7 +32,6 @@ THE SOFTWARE. #include "deprecated/CCString.h" #include -#include using namespace std; diff --git a/cocos/2d/CCNode.cpp b/cocos/2d/CCNode.cpp index e758fe0d70..b451526062 100644 --- a/cocos/2d/CCNode.cpp +++ b/cocos/2d/CCNode.cpp @@ -1100,6 +1100,7 @@ void Node::removeAllChildren() this->removeAllChildrenWithCleanup(true); } +#if CC_USE_PHYSICS void Node::removeFromPhysicsWorld() { if (_physicsBody != nullptr) @@ -1112,6 +1113,7 @@ void Node::removeFromPhysicsWorld() child->removeFromPhysicsWorld(); } } +#endif void Node::removeAllChildrenWithCleanup(bool cleanup) { diff --git a/cocos/2d/CCProtectedNode.cpp b/cocos/2d/CCProtectedNode.cpp index 3a8259b48d..b5f078a394 100644 --- a/cocos/2d/CCProtectedNode.cpp +++ b/cocos/2d/CCProtectedNode.cpp @@ -271,7 +271,7 @@ void ProtectedNode::reorderProtectedChild(cocos2d::Node *child, int localZOrder) void ProtectedNode::visit(Renderer* renderer, const Mat4 &parentTransform, uint32_t parentFlags) { // quick return if not visible. children won't be drawn. - if (!_visible) + if (!_visible || !isVisitableByVisitingCamera()) { return; } diff --git a/cocos/2d/CCTMXLayer.cpp b/cocos/2d/CCTMXLayer.cpp index acc5325e50..74c157b82e 100644 --- a/cocos/2d/CCTMXLayer.cpp +++ b/cocos/2d/CCTMXLayer.cpp @@ -618,6 +618,17 @@ Vec2 TMXLayer::calculateLayerOffset(const Vec2& pos) case TMXOrientationHex: CCASSERT(pos.equals(Vec2::ZERO), "offset for hexagonal map not implemented yet"); break; + case TMXOrientationStaggered: + { + float diffX = 0; + if ((int)abs(pos.y) % 2 == 1) + { + diffX = _mapTileSize.width/2; + } + ret = Vec2(pos.x * _mapTileSize.width + diffX, + (-pos.y) * _mapTileSize.height/2); + } + break; } return ret; } @@ -636,6 +647,9 @@ Vec2 TMXLayer::getPositionAt(const Vec2& pos) case TMXOrientationHex: ret = getPositionForHexAt(pos); break; + case TMXOrientationStaggered: + ret = getPositionForStaggeredAt(pos); + break; } ret = CC_POINT_PIXELS_TO_POINTS( ret ); return ret; @@ -666,6 +680,17 @@ Vec2 TMXLayer::getPositionForHexAt(const Vec2& pos) return xy; } +Vec2 TMXLayer::getPositionForStaggeredAt(const Vec2 &pos) +{ + float diffX = 0; + if ((int)pos.y % 2 == 1) + { + diffX = _mapTileSize.width/2; + } + return Vec2(pos.x * _mapTileSize.width + diffX, + (_layerSize.height - pos.y - 1) * _mapTileSize.height/2); +} + int TMXLayer::getVertexZForPos(const Vec2& pos) { int ret = 0; @@ -681,6 +706,9 @@ int TMXLayer::getVertexZForPos(const Vec2& pos) case TMXOrientationOrtho: ret = static_cast(-(_layerSize.height-pos.y)); break; + case TMXOrientationStaggered: + ret = static_cast(-(_layerSize.height-pos.y)); + break; case TMXOrientationHex: CCASSERT(0, "TMX Hexa zOrder not supported"); break; diff --git a/cocos/2d/CCTMXLayer.h b/cocos/2d/CCTMXLayer.h index 470abc0f10..f1b9c9330e 100644 --- a/cocos/2d/CCTMXLayer.h +++ b/cocos/2d/CCTMXLayer.h @@ -194,7 +194,7 @@ private: Vec2 getPositionForIsoAt(const Vec2& pos); Vec2 getPositionForOrthoAt(const Vec2& pos); Vec2 getPositionForHexAt(const Vec2& pos); - + Vec2 getPositionForStaggeredAt(const Vec2& pos); Vec2 calculateLayerOffset(const Vec2& offset); /* optimization methods */ diff --git a/cocos/2d/CCTMXTiledMap.h b/cocos/2d/CCTMXTiledMap.h index 1951002324..4415ddd073 100644 --- a/cocos/2d/CCTMXTiledMap.h +++ b/cocos/2d/CCTMXTiledMap.h @@ -54,6 +54,9 @@ enum /** Isometric orientation */ TMXOrientationIso, + + /** Isometric staggered orientation*/ + TMXOrientationStaggered, }; /** @brief TMXTiledMap knows how to parse and render a TMX map. diff --git a/cocos/2d/CCTMXXMLParser.cpp b/cocos/2d/CCTMXXMLParser.cpp index 8d15046181..e818c0107f 100644 --- a/cocos/2d/CCTMXXMLParser.cpp +++ b/cocos/2d/CCTMXXMLParser.cpp @@ -233,6 +233,8 @@ void TMXMapInfo::startElement(void *ctx, const char *name, const char **atts) tmxMapInfo->setOrientation(TMXOrientationIso); else if(orientationStr == "hexagonal") tmxMapInfo->setOrientation(TMXOrientationHex); + else if(orientationStr == "staggered") + tmxMapInfo->setOrientation(TMXOrientationStaggered); else CCLOG("cocos2d: TMXFomat: Unsupported orientation: %d", tmxMapInfo->getOrientation()); diff --git a/cocos/2d/CMakeLists.txt b/cocos/2d/CMakeLists.txt index 356c94dbad..b9fdb4de4b 100644 --- a/cocos/2d/CMakeLists.txt +++ b/cocos/2d/CMakeLists.txt @@ -1,5 +1,5 @@ include_directories( - ../external/ConvertUTF + ../external/ConvertUTF, . ) set(COCOS_2D_SRC @@ -21,6 +21,7 @@ set(COCOS_2D_SRC 2d/CCAnimation.cpp 2d/CCAtlasNode.cpp 2d/CCClippingNode.cpp + 2d/CCClippingRectangleNode.cpp 2d/CCComponentContainer.cpp 2d/CCComponent.cpp 2d/CCDrawingPrimitives.cpp diff --git a/cocos/2d/cocos2d_headers.props b/cocos/2d/cocos2d_headers.props index 06da521592..a6d48bbaa3 100644 --- a/cocos/2d/cocos2d_headers.props +++ b/cocos/2d/cocos2d_headers.props @@ -7,7 +7,7 @@ - $(EngineRoot)cocos;$(EngineRoot)cocos\platform;$(EngineRoot)cocos\platform\desktop;$(EngineRoot)external\glfw3\include\win32;$(EngineRoot)external\win32-specific\gles\include\OGLES + $(EngineRoot)cocos\editor-support;$(EngineRoot)cocos;$(EngineRoot)cocos\platform;$(EngineRoot)cocos\platform\desktop;$(EngineRoot)external\glfw3\include\win32;$(EngineRoot)external\win32-specific\gles\include\OGLES _VARIADIC_MAX=10;%(PreprocessorDefinitions) diff --git a/cocos/2d/cocos2d_winrt.props b/cocos/2d/cocos2d_winrt.props deleted file mode 100644 index edd7aab524..0000000000 --- a/cocos/2d/cocos2d_winrt.props +++ /dev/null @@ -1,27 +0,0 @@ - - - - - $(MSBuildThisFileDirectory)..\..\ - - - - - _VARIADIC_MAX=10;NOMINMAX;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions) - true - true - false - OldStyle - 4056;4996;4244; - - - /IGNORE:4264 %(AdditionalOptions) - - - - - $(EngineRoot) - true - - - \ No newline at end of file diff --git a/cocos/2d/cocos2d_winrt.vcxproj b/cocos/2d/cocos2d_winrt.vcxproj deleted file mode 100644 index e8cc8dfe68..0000000000 --- a/cocos/2d/cocos2d_winrt.vcxproj +++ /dev/null @@ -1,757 +0,0 @@ - - - - - Debug - ARM - - - Debug - Win32 - - - Debug - x64 - - - Release - ARM - - - Release - Win32 - - - Release - x64 - - - - {2330EDF4-5596-4B53-8BA5-158DDDE713D9} - Win32Proj - libcocos2d - cocos2d-x.win32 - en-US - 12.0 - true - Windows Store - 8.1 - - - - StaticLibrary - true - v120 - - - StaticLibrary - true - v120 - - - StaticLibrary - true - v120 - - - StaticLibrary - false - true - v120 - - - StaticLibrary - false - true - v120 - - - StaticLibrary - false - true - v120 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - $(SolutionDir)\winrt$(Configuration)\$(MSBuildProjectName)\ - winrt\$(Configuration)\ - - - false - $(SolutionDir)\winrt$(Configuration)\$(MSBuildProjectName)\ - winrt\$(Configuration)\ - - - false - $(SolutionDir)\winrt$(Configuration)\$(MSBuildProjectName)\ - winrt\$(Configuration)\ - - - false - $(SolutionDir)\winrt$(Configuration)\$(MSBuildProjectName)\ - winrt\$(Configuration)\ - - - false - $(SolutionDir)\winrt$(Configuration)\$(MSBuildProjectName)\ - winrt\$(Configuration)\ - - - false - $(SolutionDir)\winrt$(Configuration)\$(MSBuildProjectName)\ - winrt\$(Configuration)\ - - - - Use - true - true - $(EngineRoot)external;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\winrt;$(EngineRoot)external\jpeg\include\winrt;$(EngineRoot)external\tiff\include\winrt;$(EngineRoot)external\webp\include\win32;$(EngineRoot)external\freetype2\include\winrt;$(EngineRoot)external\winrt-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;%(AdditionalIncludeDirectories) - WINRT;_DEBUG;_LIB;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - 4267;4251;4244;4996;%(DisableSpecificWarnings) - pch.h - -Zm110 %(AdditionalOptions) - - - Console - false - false - - - /IGNORE:4264 %(AdditionalOptions) - zlib.lib;libpng.lib;libjpeg.lib;libtiff.lib;freetype.lib;libchipmunk.lib;%(AdditionalDependencies) - $(ProjectDir)..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\external\png\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\jpeg\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\tiff\prebuilt\winrt\$(Platform);$(EngineRoot)external\chipmunk\prebuilt\wp8\$(Platform);$(ProjectDir)..\..\external\freetype2\prebuilt\winrt\$(Platform);%(AdditionalLibraryDirectories) - - - - - Use - true - true - $(EngineRoot)external;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\winrt;$(EngineRoot)external\jpeg\include\winrt;$(EngineRoot)external\tiff\include\winrt;$(EngineRoot)external\webp\include\win32;$(EngineRoot)external\freetype2\include\winrt;$(EngineRoot)external\winrt-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;%(AdditionalIncludeDirectories) - WINRT;NDEBUG;_LIB;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - 4267;4251;4244;4996;%(DisableSpecificWarnings) - pch.h - - - Console - false - false - - - /IGNORE:4264 %(AdditionalOptions) - $(ProjectDir)..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\external\png\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\jpeg\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\tiff\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\chipmunk\prebuilt\wp8\$(Platform);$(ProjectDir)..\..\external\freetype2\prebuilt\winrt\$(Platform);%(AdditionalLibraryDirectories) - zlib.lib;libpng.lib;libjpeg.lib;libtiff.lib;freetype.lib;libchipmunk.lib;%(AdditionalDependencies) - - - - - Use - true - true - $(EngineRoot)external;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\winrt;$(EngineRoot)external\jpeg\include\winrt;$(EngineRoot)external\tiff\include\winrt;$(EngineRoot)external\webp\include\win32;$(EngineRoot)external\freetype2\include\winrt;$(EngineRoot)external\winrt-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;%(AdditionalIncludeDirectories) - WINRT;_DEBUG;_LIB;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - 4267;4251;4244;4996;%(DisableSpecificWarnings) - pch.h - - - Console - false - false - - - /IGNORE:4264 %(AdditionalOptions) - $(ProjectDir)..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\external\png\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\jpeg\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\tiff\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\freetype2\prebuilt\winrt\$(Platform);%(AdditionalLibraryDirectories) - zlib.lib;libpng.lib;libjpeg.lib;libtiff.lib;freetype.lib;%(AdditionalDependencies) - - - - - Use - true - true - $(EngineRoot)external;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\winrt;$(EngineRoot)external\jpeg\include\winrt;$(EngineRoot)external\tiff\include\winrt;$(EngineRoot)external\webp\include\win32;$(EngineRoot)external\freetype2\include\winrt;$(EngineRoot)external\winrt-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;%(AdditionalIncludeDirectories) - WINRT;NDEBUG;_LIB;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - 4267;4251;4244;4996;%(DisableSpecificWarnings) - pch.h - - - Console - false - false - - - /IGNORE:4264 %(AdditionalOptions) - $(ProjectDir)..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\external\png\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\jpeg\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\tiff\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\freetype2\prebuilt\winrt\$(Platform);%(AdditionalLibraryDirectories) - zlib.lib;libpng.lib;libjpeg.lib;libtiff.lib;freetype.lib;%(AdditionalDependencies) - - - - - Use - true - true - $(EngineRoot)external;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\winrt;$(EngineRoot)external\jpeg\include\winrt;$(EngineRoot)external\tiff\include\winrt;$(EngineRoot)external\webp\include\win32;$(EngineRoot)external\freetype2\include\winrt;$(EngineRoot)external\winrt-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;%(AdditionalIncludeDirectories) - WINRT;_DEBUG;_LIB;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - 4267;4251;4244;4996;%(DisableSpecificWarnings) - pch.h - - - Console - false - false - - - /IGNORE:4264 %(AdditionalOptions) - $(ProjectDir)..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\external\png\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\jpeg\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\tiff\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\freetype2\prebuilt\winrt\$(Platform);%(AdditionalLibraryDirectories) - zlib.lib;libpng.lib;libjpeg.lib;libtiff.lib;freetype.lib;%(AdditionalDependencies) - - - - - Use - true - true - $(EngineRoot)external;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\winrt;$(EngineRoot)external\jpeg\include\winrt;$(EngineRoot)external\tiff\include\winrt;$(EngineRoot)external\webp\include\win32;$(EngineRoot)external\freetype2\include\winrt;$(EngineRoot)external\winrt-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;%(AdditionalIncludeDirectories) - WINRT;NDEBUG;_LIB;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - 4267;4251;4244;4996;%(DisableSpecificWarnings) - pch.h - - - Console - false - false - - - /IGNORE:4264 %(AdditionalOptions) - $(ProjectDir)..\..\external\winrt-specific\zlib\prebuilt\$(Platform);$(ProjectDir)..\..\external\png\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\jpeg\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\tiff\prebuilt\winrt\$(Platform);$(ProjectDir)..\..\external\freetype2\prebuilt\winrt\$(Platform);%(AdditionalLibraryDirectories) - zlib.lib;libpng.lib;libjpeg.lib;libtiff.lib;freetype.lib;%(AdditionalDependencies) - - - - - - - - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - true - true - true - true - true - true - CompileAsCpp - CompileAsCpp - CompileAsCpp - CompileAsCpp - CompileAsCpp - CompileAsCpp - - - - - - - - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - NotUsing - true - true - true - true - true - true - CompileAsCpp - CompileAsCpp - CompileAsCpp - CompileAsCpp - CompileAsCpp - CompileAsCpp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CompileAsCpp - CompileAsCpp - CompileAsCpp - CompileAsCpp - CompileAsCpp - CompileAsCpp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cocos/2d/cocos2d_winrt.vcxproj.filters b/cocos/2d/cocos2d_winrt.vcxproj.filters deleted file mode 100644 index a395535147..0000000000 --- a/cocos/2d/cocos2d_winrt.vcxproj.filters +++ /dev/null @@ -1,1350 +0,0 @@ - - - - - {926fc31c-8742-4984-9940-c972dd02fc8a} - - - {66fe0560-cca4-4b0c-a192-44aca8ad82af} - - - {d3c53fc9-8678-4801-9a24-a619be0e761e} - - - {929b5dfc-73f5-4094-9036-051078571248} - - - {c883205c-736d-46a1-8626-8307d7c1967b} - - - {ff74d35d-9d65-44b8-8569-36197c006c41} - - - {8e9c8baf-8264-4016-bc90-ed547dfb524d} - - - {6063a842-a931-44fe-aea7-605af02302a4} - - - {ebd488cd-3f7b-4d28-adfc-e70980a65199} - - - {b31e69bf-1430-4938-81a4-b88019ba6f70} - - - {364e5ee6-3dee-4d24-baee-a59dd3519e8b} - - - {7532fb96-9b65-44e6-a165-b78eb67e14e2} - - - {bb9fdcc1-d324-4e79-9d10-8698b0ea583d} - - - {7ca64aa2-f350-4bc9-a046-d24c4df4f0ad} - - - {261eb0ec-d921-49ec-8ccd-f528d5a91abd} - - - {bb14c2af-576d-4274-a21e-c518397fa0cf} - - - {4626742b-b8a8-4626-ac6c-17be46e1c3c1} - - - - - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform - - - platform - - - platform - - - platform - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 3d - - - 3d - - - 3d - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - external\ConvertUTF - - - external\ConvertUTF - - - external\edtaa - - - external\tinyxml2 - - - external\unzip - - - external\unzip - - - external\xxhash - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - physics - - - physics - - - physics - - - physics - - - physics - - - platform - - - platform\winrt - - - base - - - base - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - base - - - - - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform - - - platform - - - platform - - - platform - - - platform - - - platform - - - platform - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 3d - - - 3d - - - 3d - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - external\ConvertUTF - - - external\edtaa - - - external\tinyxml2 - - - external\unzip - - - external\unzip - - - external\xxhash - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - physics - - - physics - - - physics - - - physics - - - physics - - - platform - - - platform\winrt - - - base - - - base - - - renderer - - - renderer - - - renderer - - - renderer - - - platform - - - platform - - - platform - - - platform - - - platform - - - renderer - - - base - - - - - base - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - \ No newline at end of file diff --git a/cocos/2d/cocos2d_winrt_headers.props b/cocos/2d/cocos2d_winrt_headers.props deleted file mode 100644 index fd510616e4..0000000000 --- a/cocos/2d/cocos2d_winrt_headers.props +++ /dev/null @@ -1,19 +0,0 @@ - - - - - $(MSBuildThisFileDirectory)..\..\ - - - - - $(EngineRoot)cocos;$(EngineRoot)cocos\platform\winrt;$(EngineRoot)\external\winrt-specific\angle\include;$(EngineRoot)\external\xxhash;$(EngineRoot)\external\winrt-specific;$(GeneratedFilesDir);$(EngineRoot)external\ConvertUTF; - - - - - $(EngineRoot) - true - - - \ No newline at end of file diff --git a/cocos/2d/cocos2d_wp8.vcxproj.filters b/cocos/2d/cocos2d_wp8.vcxproj.filters deleted file mode 100644 index 5ea9ffcabc..0000000000 --- a/cocos/2d/cocos2d_wp8.vcxproj.filters +++ /dev/null @@ -1,1463 +0,0 @@ - - - - - {926fc31c-8742-4984-9940-c972dd02fc8a} - - - {08593631-5bf5-46aa-9436-62595c4f7bf6} - - - {aeadfa95-9c89-4212-98ae-89ad57db596a} - - - {cba0f362-878c-438b-ad0f-43d287516357} - - - {d7ac4e48-57dd-4b9e-95de-2a973b22b1ce} - - - {14e6de7a-f7ef-4249-9141-abf17033d9c2} - - - {5598fb0c-c012-45b6-8e43-447e7891b61d} - - - {f3673af7-9bbd-463b-a3a9-a081e67248d8} - - - {fbaf3e74-09dc-4f89-9d5a-0e7ccabbfbff} - - - {41c1aef6-86c9-42e3-b68c-6da3107ff587} - - - {a03a9ca0-013a-4082-bb45-43f024ff0f4e} - - - {0e7c99cb-0b41-4120-9773-49c31345d829} - - - {729473cd-a9e2-4133-b78e-37a6c3687550} - - - {54949861-d861-4eea-89bf-0498ef3c338c} - - - {64846670-6658-45f9-84cf-29e013870c37} - - - {026f880b-7918-49f8-8f0d-00f7593ce326} - - - {a36c6808-a8d6-43f4-bfb0-e08ee2747a21} - - - {fdee8fd3-05f9-46a1-aa15-6ceb16358145} - - - - - physics - - - physics - - - physics - - - physics - - - physics - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - external\xxhash - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - - external\ConvertUTF - - - external\ConvertUTF - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - external\tinyxml2 - - - external\unzip - - - external\unzip - - - external\edtaa - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - platform - - - platform - - - platform - - - platform - - - platform\wp8 - - - platform\wp8 - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - base - - - 3d - - - 3d - - - 3d - - - renderer - - - - base - - - 3d - - - 3d - - - 3d - - - 3d - - - 3d - - - 3d - - - 2d - - - 2d - - - platform - - - 2d - - - base - - - 3d - - - 3d - - - base - - - renderer - - - renderer - - - renderer - - - renderer - - - base - - - 3d - - - 3d - - - 3d - - - renderer - - - 3d - - - platform\wp8 - - - 3d - - - base - - - - - physics - - - physics - - - physics - - - physics - - - physics - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - physics\chipmunk - - - external\xxhash - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - deprecated - - - external\ConvertUTF - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - 2d - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - renderer - - - external\tinyxml2 - - - external\unzip - - - external\unzip - - - external\edtaa - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - base - - - platform - - - platform - - - platform - - - platform - - - platform - - - platform - - - platform - - - platform\wp8 - - - platform\wp8 - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - platform\winrt - - - base - - - base - - - 3d - - - 3d - - - 3d - - - renderer - - - - base - - - 3d - - - 3d - - - 3d - - - 3d - - - 3d - - - 3d - - - 3d - - - 3d - - - 2d - - - 2d - - - platform - - - 2d - - - base - - - 3d - - - 3d - - - base - - - renderer - - - renderer - - - renderer - - - renderer - - - base - - - 3d - - - 3d - - - 3d - - - renderer - - - 3d - - - platform - - - platform - - - platform - - - platform - - - platform - - - platform - - - platform\wp8 - - - 3d - - - base - - - - - math - - - math - - - math - - - math - - - math - - - math - - - math - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - renderer\shaders - - - \ No newline at end of file diff --git a/cocos/2d/cocos2d_wp8_headers.props b/cocos/2d/cocos2d_wp8_headers.props deleted file mode 100644 index b5f55539b7..0000000000 --- a/cocos/2d/cocos2d_wp8_headers.props +++ /dev/null @@ -1,28 +0,0 @@ - - - - - $(MSBuildThisFileDirectory)..\..\ - - - - - $(EngineRoot)cocos\platform;$(EngineRoot)cocos\platform\wp8;$(EngineRoot)cocos\platform\winrt;$(EngineRoot)\external\winrt-specific\angle\include;$(EngineRoot)\external\curl\include\wp8;$(EngineRoot)\external\winrt-specific;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external;$(EngineRoot)cocos\editor-support;$(EngineRoot);$(EngineRoot)external\ConvertUTF;$(EngineRoot)external\wp8-specific\zlib\include;$(GeneratedFilesDir) - _VARIADIC_MAX=10;NOMINMAX;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - true - true - false - OldStyle - 4056;4996; - - - /IGNORE:4264 %(AdditionalOptions) - - - - - $(EngineRoot) - true - - - \ No newline at end of file diff --git a/cocos/2d/libcocos2d.vcxproj b/cocos/2d/libcocos2d.vcxproj index d0453f314c..a3eba12da0 100644 --- a/cocos/2d/libcocos2d.vcxproj +++ b/cocos/2d/libcocos2d.vcxproj @@ -77,8 +77,8 @@ Disabled - $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\include;$(EngineRoot)external\box2d;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\win32;$(EngineRoot)external\jpeg\include\win32;$(EngineRoot)external\tiff\include\win32;$(EngineRoot)external\webp\include\win32;$(EngineRoot)external\freetype2\include\win32;$(EngineRoot)external\win32-specific\OpenalSoft\include;$(EngineRoot)external\win32-specific\MP3Decoder\include;$(EngineRoot)external\win32-specific\OggDecoder\include;$(EngineRoot)external\win32-specific\icon\include;$(EngineRoot)external\win32-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\xxhash;$(EngineRoot)external\ConvertUTF;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\websockets\include\win32;$(EngineRoot)external;$(EngineRoot)cocos;$(EngineRoot)cocos\editor-support;$(EngineRoot)cocos\audio\include;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) - WIN32;_USRDLL;_DEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;%(PreprocessorDefinitions) + $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\include;$(EngineRoot)external\box2d;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\win32;$(EngineRoot)external\jpeg\include\win32;$(EngineRoot)external\tiff\include\win32;$(EngineRoot)external\webp\include\win32;$(EngineRoot)external\freetype2\include\win32;$(EngineRoot)external\win32-specific\OpenalSoft\include;$(EngineRoot)external\win32-specific\MP3Decoder\include;$(EngineRoot)external\win32-specific\OggDecoder\include;$(EngineRoot)external\win32-specific\icon\include;$(EngineRoot)external\win32-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\xxhash;$(EngineRoot)external\ConvertUTF;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\websockets\include\win32;$(EngineRoot)external\protobuf-lite\win32;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external;$(EngineRoot)cocos;$(EngineRoot)cocos\editor-support;$(EngineRoot)cocos\audio\include;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) + WIN32;_USRDLL;_DEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;PROTOBUF_USE_DLLS;LIBPROTOBUF_EXPORTS;%(PreprocessorDefinitions) false EnableFastChecks MultiThreadedDebugDLL @@ -132,8 +132,8 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\debug-lib\*.*" - $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\include;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\win32;$(EngineRoot)external\jpeg\include\win32;$(EngineRoot)external\tiff\include\win32;$(EngineRoot)external\webp\include\win32;$(EngineRoot)external\freetype2\include\win32;$(EngineRoot)external\win32-specific\MP3Decoder\include;$(EngineRoot)external\win32-specific\OggDecoder\include;$(EngineRoot)external\win32-specific\OpenalSoft\include;$(EngineRoot)external\win32-specific\icon\include;$(EngineRoot)external\win32-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\xxhash;$(EngineRoot)external\ConvertUTF;$(EngineRoot)external\Box2d;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\websockets\include\win32\;$(EngineRoot)external;$(EngineRoot)cocos;$(EngineRoot)cocos\editor-support;$(EngineRoot)cocos\audio\include;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) - WIN32;_USRDLL;NDEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;%(PreprocessorDefinitions) + $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\include;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\win32;$(EngineRoot)external\jpeg\include\win32;$(EngineRoot)external\tiff\include\win32;$(EngineRoot)external\webp\include\win32;$(EngineRoot)external\freetype2\include\win32;$(EngineRoot)external\win32-specific\MP3Decoder\include;$(EngineRoot)external\win32-specific\OggDecoder\include;$(EngineRoot)external\win32-specific\OpenalSoft\include;$(EngineRoot)external\win32-specific\icon\include;$(EngineRoot)external\win32-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\xxhash;$(EngineRoot)external\ConvertUTF;$(EngineRoot)external\Box2d;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\websockets\include\win32\;$(EngineRoot)external\protobuf-lite\win32;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external;$(EngineRoot)cocos;$(EngineRoot)cocos\editor-support;$(EngineRoot)cocos\audio\include;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) + WIN32;_USRDLL;NDEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;PROTOBUF_USE_DLLS;LIBPROTOBUF_EXPORTS;%(PreprocessorDefinitions) MultiThreadedDLL @@ -161,6 +161,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\win32-specific\gles\prebuilt\*.*" "$(Ou xcopy /Y /Q "$(ProjectDir)..\..\external\win32-specific\OpenalSoft\prebuilt\*.*" "$(OutDir)" xcopy /Y /Q "$(ProjectDir)..\..\external\win32-specific\MP3Decoder\prebuilt\*.*" "$(OutDir)" xcopy /Y /Q "$(ProjectDir)..\..\external\win32-specific\OggDecoder\prebuilt\*.*" "$(OutDir)" +xcopy /Y /Q "$(ProjectDir)..\..\external\sqlite3\libraries\win32\*.*" "$(OutDir)" xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.*" "$(OutDir)" @@ -184,6 +185,11 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + + + + + @@ -203,7 +209,22 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + + + + + + + + + + + + + + + @@ -309,6 +330,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + @@ -340,6 +362,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + @@ -424,6 +447,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + @@ -440,7 +464,6 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* - @@ -459,6 +482,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + @@ -511,6 +535,11 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + + + + + @@ -543,7 +572,38 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -677,6 +737,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + @@ -711,6 +772,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + @@ -808,6 +870,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + @@ -825,7 +888,6 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* - @@ -844,6 +906,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\external\chipmunk\prebuilt\win32\release-lib\*.* + diff --git a/cocos/2d/libcocos2d.vcxproj.filters b/cocos/2d/libcocos2d.vcxproj.filters index 1e55d334ca..0d904b439f 100644 --- a/cocos/2d/libcocos2d.vcxproj.filters +++ b/cocos/2d/libcocos2d.vcxproj.filters @@ -112,9 +112,6 @@ {6ac0e3c8-d5b1-44d9-8c41-21662a767cc6} - - {0554a5b1-03a1-4d38-87a5-976dbe9a39d9} - {c75d4c37-d555-4a5b-a0ba-4bc9a3d846e1} @@ -214,6 +211,18 @@ {e916e2b4-0a6e-4d25-8b36-66fa03719f48} + + {cca5b284-43d5-4f19-8a3f-41011ca8fb78} + + + {95d0a465-a443-4974-ac90-ca1a46cd3066} + + + {65b452e4-00df-4ab1-803a-af3fb369edc4} + + + {0554a5b1-03a1-4d38-87a5-976dbe9a39d9} + @@ -325,6 +334,9 @@ 2d + + 2d + 2d @@ -679,6 +691,9 @@ external\tinyxml2 + + external\unzip + external\unzip @@ -878,13 +893,13 @@ ui\UIWidgets\ScrollWidget - cocostudio\trigger + cocostudio\TimelineAction\trigger - cocostudio\trigger + cocostudio\TimelineAction\trigger - cocostudio\trigger + cocostudio\TimelineAction\trigger cocostudio\TimelineAction @@ -892,9 +907,6 @@ cocostudio\TimelineAction - - cocostudio\TimelineAction - cocostudio\TimelineAction @@ -1168,8 +1180,20 @@ ui\UIWidgets\EditBox - - ui\UIWidgets + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager ui\UIWidgets @@ -1189,6 +1213,58 @@ audioengine + + + cocostudio\json + + + cocostudio\TimelineAction + + + ui\Layouts + + + cocostudio\json\protobuf-lite + + + cocostudio\json\protobuf-lite + + + cocostudio\json\protobuf-lite + + + cocostudio\json\protobuf-lite + + + cocostudio\json\protobuf-lite + + + cocostudio\json\protobuf-lite\io + + + cocostudio\json\protobuf-lite\io + + + cocostudio\json\protobuf-lite\io + + + cocostudio\json\protobuf-lite\io + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + @@ -1312,6 +1388,9 @@ 2d + + 2d + 2d @@ -1729,6 +1808,9 @@ external\unzip + + external\unzip + external\edtaa @@ -1961,13 +2043,13 @@ cocostudio - cocostudio\trigger + cocostudio\TimelineAction\trigger - cocostudio\trigger + cocostudio\TimelineAction\trigger - cocostudio\trigger + cocostudio\TimelineAction\trigger cocostudio\TimelineAction @@ -1975,9 +2057,6 @@ cocostudio\TimelineAction - - cocostudio\TimelineAction - cocostudio\TimelineAction @@ -2314,8 +2393,20 @@ ui\UIWidgets\EditBox - - ui\UIWidgets + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager ui\UIWidgets @@ -2338,6 +2429,106 @@ audioengine + + + cocostudio\json + + + cocostudio\TimelineAction + + + ui\Layouts + + + cocostudio\json\protobuf-lite + + + cocostudio\json\protobuf-lite + + + cocostudio\json\protobuf-lite + + + cocostudio\json\protobuf-lite + + + cocostudio\json\protobuf-lite + + + cocostudio\json\protobuf-lite + + + cocostudio\json\protobuf-lite + + + cocostudio\json\protobuf-lite\io + + + cocostudio\json\protobuf-lite\io + + + cocostudio\json\protobuf-lite\io + + + cocostudio\json\protobuf-lite\io + + + cocostudio\json\protobuf-lite\io + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + + + cocostudio\json\protobuf-lite\stubs + diff --git a/cocos/2d/libcocos2d_8_1/libcocos2d_8_1.sln b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1.sln new file mode 100644 index 0000000000..643e0e020e --- /dev/null +++ b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1.sln @@ -0,0 +1,60 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.30723.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "libcocos2d_8_1", "libcocos2d_8_1", "{CA9DBD4B-603D-494E-802A-1C36E3EA3F07}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d_8_1.Shared", "libcocos2d_8_1\libcocos2d_8_1.Shared\libcocos2d_8_1.Shared.vcxitems", "{5D6F020F-7E72-4494-90A0-2DF11D235DF9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d_8_1.Windows", "libcocos2d_8_1\libcocos2d_8_1.Windows\libcocos2d_8_1.Windows.vcxproj", "{9335005F-678E-4E8E-9B84-50037216AEC8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d_8_1.WindowsPhone", "libcocos2d_8_1\libcocos2d_8_1.WindowsPhone\libcocos2d_8_1.WindowsPhone.vcxproj", "{22F3B9DF-1209-4574-8331-003966F562BF}" +EndProject +Global + GlobalSection(SharedMSBuildProjectFiles) = preSolution + libcocos2d_8_1\libcocos2d_8_1.Shared\libcocos2d_8_1.Shared.vcxitems*{9335005f-678e-4e8e-9b84-50037216aec8}*SharedItemsImports = 4 + libcocos2d_8_1\libcocos2d_8_1.Shared\libcocos2d_8_1.Shared.vcxitems*{5d6f020f-7e72-4494-90a0-2df11d235df9}*SharedItemsImports = 9 + libcocos2d_8_1\libcocos2d_8_1.Shared\libcocos2d_8_1.Shared.vcxitems*{22f3b9df-1209-4574-8331-003966f562bf}*SharedItemsImports = 4 + EndGlobalSection + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|ARM = Release|ARM + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9335005F-678E-4E8E-9B84-50037216AEC8}.Debug|ARM.ActiveCfg = Debug|ARM + {9335005F-678E-4E8E-9B84-50037216AEC8}.Debug|ARM.Build.0 = Debug|ARM + {9335005F-678E-4E8E-9B84-50037216AEC8}.Debug|Win32.ActiveCfg = Debug|Win32 + {9335005F-678E-4E8E-9B84-50037216AEC8}.Debug|Win32.Build.0 = Debug|Win32 + {9335005F-678E-4E8E-9B84-50037216AEC8}.Debug|x64.ActiveCfg = Debug|x64 + {9335005F-678E-4E8E-9B84-50037216AEC8}.Debug|x64.Build.0 = Debug|x64 + {9335005F-678E-4E8E-9B84-50037216AEC8}.Release|ARM.ActiveCfg = Release|ARM + {9335005F-678E-4E8E-9B84-50037216AEC8}.Release|ARM.Build.0 = Release|ARM + {9335005F-678E-4E8E-9B84-50037216AEC8}.Release|Win32.ActiveCfg = Release|Win32 + {9335005F-678E-4E8E-9B84-50037216AEC8}.Release|Win32.Build.0 = Release|Win32 + {9335005F-678E-4E8E-9B84-50037216AEC8}.Release|x64.ActiveCfg = Release|x64 + {9335005F-678E-4E8E-9B84-50037216AEC8}.Release|x64.Build.0 = Release|x64 + {22F3B9DF-1209-4574-8331-003966F562BF}.Debug|ARM.ActiveCfg = Debug|ARM + {22F3B9DF-1209-4574-8331-003966F562BF}.Debug|ARM.Build.0 = Debug|ARM + {22F3B9DF-1209-4574-8331-003966F562BF}.Debug|Win32.ActiveCfg = Debug|Win32 + {22F3B9DF-1209-4574-8331-003966F562BF}.Debug|Win32.Build.0 = Debug|Win32 + {22F3B9DF-1209-4574-8331-003966F562BF}.Debug|x64.ActiveCfg = Debug|Win32 + {22F3B9DF-1209-4574-8331-003966F562BF}.Release|ARM.ActiveCfg = Release|ARM + {22F3B9DF-1209-4574-8331-003966F562BF}.Release|ARM.Build.0 = Release|ARM + {22F3B9DF-1209-4574-8331-003966F562BF}.Release|Win32.ActiveCfg = Release|Win32 + {22F3B9DF-1209-4574-8331-003966F562BF}.Release|Win32.Build.0 = Release|Win32 + {22F3B9DF-1209-4574-8331-003966F562BF}.Release|x64.ActiveCfg = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {5D6F020F-7E72-4494-90A0-2DF11D235DF9} = {CA9DBD4B-603D-494E-802A-1C36E3EA3F07} + {9335005F-678E-4E8E-9B84-50037216AEC8} = {CA9DBD4B-603D-494E-802A-1C36E3EA3F07} + {22F3B9DF-1209-4574-8331-003966F562BF} = {CA9DBD4B-603D-494E-802A-1C36E3EA3F07} + EndGlobalSection +EndGlobal diff --git a/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Shared/libcocos2d_8_1.Shared.vcxitems b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Shared/libcocos2d_8_1.Shared.vcxitems new file mode 100644 index 0000000000..4be2a11b3a --- /dev/null +++ b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Shared/libcocos2d_8_1.Shared.vcxitems @@ -0,0 +1,874 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + {5d6f020f-7e72-4494-90a0-2df11d235df9} + libcocos2d_8_1 + libcocos2d_8_1.Shared + 248F659F-DAC5-46E8-AC09-60EC9FC95053 + + + + %(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CompileAsCpp + + + + + + + + + + + + + + + + + + + + + + CompileAsCpp + + + + + + + + + + + + + + + + + + + NotUsing + + + + + NotUsing + + + + + NotUsing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + CompileAsCpp + + + NotUsing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Shared/libcocos2d_8_1.Shared.vcxitems.filters b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Shared/libcocos2d_8_1.Shared.vcxitems.filters new file mode 100644 index 0000000000..b0806073d1 --- /dev/null +++ b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Shared/libcocos2d_8_1.Shared.vcxitems.filters @@ -0,0 +1,2690 @@ + + + + + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + external\ConvertUTF + + + external\edtaa + + + external\xxhash + + + external\unzip + + + external\unzip + + + external\tinyxml2 + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + physics + + + physics + + + physics + + + physics + + + physics + + + cocostudio + + + cocostudio\action + + + cocostudio\action + + + cocostudio\action + + + cocostudio\action + + + cocostudio\action + + + cocostudio\armature + + + cocostudio\armature + + + cocostudio\armature\animation + + + cocostudio\armature\animation + + + cocostudio\armature\animation + + + cocostudio\armature\datas + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\physics + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\json\rapidjson\internal + + + cocostudio\json\rapidjson\internal + + + cocostudio\json\rapidjson\internal + + + cocostudio\json\rapidjson + + + cocostudio\json\rapidjson + + + cocostudio\json\rapidjson + + + cocostudio\json\rapidjson + + + cocostudio\json\rapidjson + + + cocostudio\json\rapidjson + + + cocostudio\json\rapidjson + + + cocostudio\reader\WidgetReader\ButtonReader + + + cocostudio\reader\WidgetReader\CheckBoxReader + + + cocostudio\reader\WidgetReader\ImageViewReader + + + cocostudio\reader\WidgetReader\LayoutReader + + + cocostudio\reader\WidgetReader\ListViewReader + + + cocostudio\reader\WidgetReader\LoadingBarReader + + + cocostudio\reader\WidgetReader\PageViewReader + + + cocostudio\reader\WidgetReader\ScrollViewReader + + + cocostudio\reader\WidgetReader\SliderReader + + + cocostudio\reader\WidgetReader\TextAtlasReader + + + cocostudio\reader\WidgetReader\TextBMFontReader + + + cocostudio\reader\WidgetReader\TextFieldReader + + + cocostudio\reader\WidgetReader\TextReader + + + cocostudio\reader\WidgetReader + + + cocostudio\reader\WidgetReader + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + storage + + + ui\BaseClasses + + + ui\BaseClasses + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\System + + + ui\System + + + ui\System + + + ui\System + + + ui\UIWidgets\EditBox + + + ui\UIWidgets\EditBox + + + ui\UIWidgets\ScrollWidget + + + ui\UIWidgets\ScrollWidget + + + ui\UIWidgets\ScrollWidget + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + extension\AssetsManager + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCScrollView + + + extension\GUI\CCScrollView + + + extension\GUI\CCScrollView + + + extension\physics_nodes + + + extension\physics_nodes + + + extension + + + extension + + + extension + + + network\Header Files + + + network\Header Files + + + network\Header Files + + + network\Header Files + + + network\Header Files + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + + cocostudio\json + + + cocostudio\json + + + cocostudio\json + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\trigger + + + cocostudio\trigger + + + cocostudio\trigger + + + cocosdenshion\Header Files + + + cocosdenshion\Header Files + + + cocosdenshion\Header Files + + + cocosdenshion\Source Files + + + cocosdenshion\Source Files + + + cocostudio\reader + + + cocostudio\reader + + + ui\UIWidgets + + + base + + + platform\winrt + + + platform\winrt + + + platform + + + platform\winrt + + + external\unzip + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\TimelineAction + + + cocostudio + + + ui\Layouts + + + 2d + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + external\ConvertUTF + + + external\ConvertUTF + + + external\edtaa + + + external\xxhash + + + external\unzip + + + external\unzip + + + external\tinyxml2 + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + physics + + + physics + + + physics + + + physics + + + physics + + + cocostudio\action + + + cocostudio\action + + + cocostudio\action + + + cocostudio\action + + + cocostudio\action + + + cocostudio\armature + + + cocostudio\armature + + + cocostudio\armature\animation + + + cocostudio\armature\animation + + + cocostudio\armature\animation + + + cocostudio\armature\datas + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\physics + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\reader\WidgetReader\ButtonReader + + + cocostudio\reader\WidgetReader\CheckBoxReader + + + cocostudio\reader\WidgetReader\ImageViewReader + + + cocostudio\reader\WidgetReader\LayoutReader + + + cocostudio\reader\WidgetReader\ListViewReader + + + cocostudio\reader\WidgetReader\LoadingBarReader + + + cocostudio\reader\WidgetReader\PageViewReader + + + cocostudio\reader\WidgetReader\ScrollViewReader + + + cocostudio\reader\WidgetReader\SliderReader + + + cocostudio\reader\WidgetReader\TextAtlasReader + + + cocostudio\reader\WidgetReader\TextBMFontReader + + + cocostudio\reader\WidgetReader\TextFieldReader + + + cocostudio\reader\WidgetReader\TextReader + + + cocostudio\reader\WidgetReader + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + storage + + + ui\BaseClasses + + + ui\BaseClasses + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\System + + + ui\System + + + ui\System + + + ui\UIWidgets\EditBox + + + ui\UIWidgets\EditBox + + + ui\UIWidgets\ScrollWidget + + + ui\UIWidgets\ScrollWidget + + + ui\UIWidgets\ScrollWidget + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + extension\AssetsManager + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCControlExtensions + + + extension\GUI\CCScrollView + + + extension\GUI\CCScrollView + + + extension\GUI\CCScrollView + + + extension\physics_nodes + + + extension\physics_nodes + + + network\Source Files + + + network\Source Files + + + network\Source Files + + + platform + + + platform + + + platform + + + platform + + + platform + + + + cocostudio\json + + + cocostudio\json + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\trigger + + + cocostudio\trigger + + + cocostudio\trigger + + + cocosdenshion\Source Files + + + cocosdenshion\Source Files + + + cocosdenshion\Source Files + + + cocostudio\reader + + + cocostudio\reader + + + ui\UIWidgets + + + base + + + platform\winrt + + + platform + + + platform\winrt + + + external\unzip + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\TimelineAction + + + cocostudio + + + ui\Layouts + + + 2d + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + + + {5dce13cf-2a33-4a9d-bea1-1cf6228f6323} + + + {d1405feb-dfdf-4ddf-9513-6b22179dcd07} + + + {47ffb3d6-a40e-475a-8018-eb9b04ece90a} + + + {6b35b27f-9d44-4f64-a602-28da1d6eb831} + + + {faf0ec2a-d245-4aa1-aade-91c36141ae81} + + + {042742fb-0fcf-4bef-aa7e-ede8b84febae} + + + {cd078356-9cc6-46c2-8d39-dc702c994139} + + + {99e5454f-55e7-4a86-bf56-823dc80f02cd} + + + {650a2fa5-095e-4d93-86d6-5b38663c2dcf} + + + {862c9f7f-fb24-4ab3-9713-76eed9341c50} + + + {6341b1da-4cfa-4ce5-a824-9f4ae73fb26c} + + + {7cf18e6c-00a8-4938-8f37-f899df2d4a78} + + + {9355ad31-9678-4680-8d7d-21864e11663a} + + + {93a234af-ace5-4391-ba94-906f9d8b1ac8} + + + {90707a94-17e0-4a22-9871-ea02fa83b1d3} + + + {1aa91433-3e54-4b8d-adff-7f7ecae29867} + + + {d0b36fd3-ca94-4b7d-828b-0cbf964bd9e9} + + + {5367d407-978c-4535-aa47-65a659dcc490} + + + {3ab7ab3b-98c2-428e-8715-df40a5f8deca} + + + {becaa915-a665-4657-8aae-722c99ae368b} + + + {0b41a5be-2392-4079-b980-14c701c7e349} + + + {c2fddcbf-b255-4fb6-8f55-9ca85bd3809b} + + + {9a5d5bc4-80f9-42aa-8865-c79711dfa7d6} + + + {97dd34cb-0d69-4ecd-bbf6-976cdf236d60} + + + {7345e280-b8a5-4d89-a27c-60cf351952d2} + + + {e31070b5-5b5f-47d4-b5c5-72220fe506de} + + + {26df0f77-db9e-4895-b648-118e42b24728} + + + {506718ba-bcdf-4078-9c11-781089c8d9f5} + + + {45d1e3fe-f2de-457b-bc91-0d60cbc50d8f} + + + {c7545a66-40fe-43af-ac7b-cce94a5bde56} + + + {90a35e19-a318-4dd8-96e0-42112c4de943} + + + {d2f2d731-a0fc-4fca-916a-ce87b5fb5cab} + + + {7d85e693-c5fb-4408-abe0-f9ff7df0e384} + + + {a9af9e6f-0fd3-4461-9b3a-2de2417624eb} + + + {43ca9fc2-569b-4753-9150-ac5bfc6f543e} + + + {7dfddab5-351a-48e7-9cd4-1df5268badfd} + + + {7225fe7b-80b7-40a8-a674-435183a8c45a} + + + {cc361288-af78-4806-939c-538c560996f0} + + + {c88afb13-dccb-4ff6-be05-fd91f19d9202} + + + {49a50e7b-bf26-480e-a4e6-25b19fc4a312} + + + {6559bb9c-34ce-4702-a0c7-cb3e93a22caf} + + + {37576c88-e687-4089-a758-6ef970087d3d} + + + {dd2338c9-660d-4131-aaf6-3c3cc30dfbe8} + + + {16ad21b8-70cc-4ab6-8ec6-e84417a685e7} + + + {1647ffda-45c0-401d-a050-0217bc5c3b91} + + + {99d20297-341e-4d4f-ac32-bf0f957bb08e} + + + {0f1c084d-aee7-4f97-a65f-a40a0b28ff16} + + + {5c9190b3-70ea-4189-b42a-442399baf629} + + + {c81f1e50-d504-432b-9e38-92d015c88f8f} + + + {f2018778-20b3-439e-9127-4080d18448db} + + + {ffc571d4-dca4-4cf0-b62c-f35b5f26f204} + + + {c03ed815-ce08-4801-bdd6-1869ff3c014e} + + + {48ae1ce9-b81f-479f-b59c-b10e344699d8} + + + {1a7fb736-f3df-4683-b892-b181bc26fb0d} + + + {ef54a6b1-dfbe-4808-86a2-8ba0664b15ad} + + + {4f239b1b-f1ca-472c-acb9-d84fbb0aeb9d} + + + {39f7141f-d8ce-4780-b9ee-c0c8e5410dc8} + + + {b8bf48f3-8e10-4010-ae69-367715f2755a} + + + {03cfe246-9a82-45ed-8a0f-f5e7baa91e0d} + + + {9a84f2c8-f6bb-4c38-9669-b1c6e45ef658} + + + {b24283d8-3e1c-4fbe-b632-fef2cef51d87} + + + {161033d2-1f07-477f-a694-c664c942f102} + + + {840515bd-a764-47a1-b1d1-ad4d9fdbde91} + + + {1d8b1ab3-9e58-4b9d-a5d4-91ac54f29a44} + + + {09977165-cfcf-4101-9b00-6a3dc5397aaf} + + + {f8d3d5c4-e469-4980-bf28-aa7f6dac53a1} + + + {354b91cc-c6f7-4a7e-bd72-737916af7e23} + + + {5f37f118-5902-4683-9243-fcc77bdbf3e1} + + + {f51f496d-43b3-4c80-b01d-8db1ff82ba87} + + + {897038a8-2cd2-4c8b-adac-5d716757ebb8} + + + {768b728a-70a8-4dd0-b04d-c8d7f70e7677} + + + {6d403f90-95d9-4ebf-9f53-5e79db30f68c} + + + {5f6acaf0-cbff-42f8-bdf2-21b43efa5680} + + + {b16255cc-6a35-4ee4-b77b-46a781b40d9b} + + + + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + renderer + + + \ No newline at end of file diff --git a/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Shared/targetver.h b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Shared/targetver.h new file mode 100644 index 0000000000..a66ecb00f1 --- /dev/null +++ b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Shared/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include diff --git a/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Windows/libcocos2d_8_1.Windows.vcxproj b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Windows/libcocos2d_8_1.Windows.vcxproj new file mode 100644 index 0000000000..0e7305cae5 --- /dev/null +++ b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Windows/libcocos2d_8_1.Windows.vcxproj @@ -0,0 +1,254 @@ + + + + + Debug + ARM + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + Win32 + + + Release + x64 + + + + + {3b26a12d-3a44-47ea-82d2-282660fc844d} + + + {f3550fe0-c795-44f6-8feb-093eb68143ae} + + + + {9335005f-678e-4e8e-9b84-50037216aec8} + en-US + 12.0 + true + Windows Store + 8.1 + CodeSharingDll + + + + DynamicLibrary + true + v120 + + + DynamicLibrary + true + v120 + + + DynamicLibrary + true + v120 + + + DynamicLibrary + false + true + v120 + + + DynamicLibrary + false + true + v120 + + + DynamicLibrary + false + true + v120 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + libcocos2d_v3.3_Windows_8.1 + + + false + false + libcocos2d_v3.3_Windows_8.1 + + + false + false + libcocos2d_v3.3_Windows_8.1 + + + false + false + libcocos2d_v3.3_Windows_8.1 + + + false + false + libcocos2d_v3.3_Windows_8.1 + + + false + false + libcocos2d_v3.3_Windows_8.1 + + + + Use + true + /Zm200 %(AdditionalOptions) + pch.h + $(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_DEBUG;COCOS2D_DEBUG=1;%(PreprocessorDefinitions) + + + Console + false + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + ..\..\..\cocos2d.def + + + + + Use + true + /Zm200 %(AdditionalOptions) + pch.h + $(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) + + + Console + false + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + ..\..\..\cocos2d.def + + + + + Use + true + /Zm200 %(AdditionalOptions) + pch.h + $(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_DEBUG;COCOS2D_DEBUG=1;%(PreprocessorDefinitions) + + + Console + false + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + ..\..\..\cocos2d.def + + + + + Use + true + /Zm200 %(AdditionalOptions) + pch.h + $(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) + + + Console + false + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + ..\..\..\cocos2d.def + + + + + Use + true + /Zm200 %(AdditionalOptions) + pch.h + $(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_DEBUG;COCOS2D_DEBUG=1;%(PreprocessorDefinitions) + + + Console + false + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + ..\..\..\cocos2d.def + + + + + Use + true + /Zm200 %(AdditionalOptions) + pch.h + $(EngineRoot)external\winrt_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\winrt_8.1;$(EngineRoot)external\websockets\include\winrt_8.1;$(EngineRoot)external\curl\include\winrt_8.1;$(EngineRoot)external\tiff\include\winrt_8.1;$(EngineRoot)external\jpeg\include\winrt_8.1;$(EngineRoot)external\png\include\winrt_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) + + + Console + false + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + ..\..\..\cocos2d.def + + + + + + \ No newline at end of file diff --git a/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Windows/libcocos2d_8_1.Windows.vcxproj.filters b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Windows/libcocos2d_8_1.Windows.vcxproj.filters new file mode 100644 index 0000000000..a7761ab018 --- /dev/null +++ b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Windows/libcocos2d_8_1.Windows.vcxproj.filters @@ -0,0 +1,5 @@ + + + + + diff --git a/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.WindowsPhone/libcocos2d_8_1.WindowsPhone.vcxproj b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.WindowsPhone/libcocos2d_8_1.WindowsPhone.vcxproj new file mode 100644 index 0000000000..a082a15791 --- /dev/null +++ b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.WindowsPhone/libcocos2d_8_1.WindowsPhone.vcxproj @@ -0,0 +1,180 @@ + + + + + Debug + ARM + + + Debug + Win32 + + + Release + ARM + + + Release + Win32 + + + + + {22f798d8-bfff-4754-996f-a5395343d5ec} + + + {cc1da216-a80d-4be4-b309-acb6af313aff} + + + + {22f3b9df-1209-4574-8331-003966f562bf} + libcocos2d_8_1 + en-US + 12.0 + true + Windows Phone + 8.1 + CodeSharingDll + + + + DynamicLibrary + true + v120_wp81 + + + DynamicLibrary + true + v120_wp81 + + + DynamicLibrary + false + true + v120_wp81 + + + DynamicLibrary + false + true + v120_wp81 + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + libcocos2d_v3.3_WindowsPhone_8.1 + + + false + false + libcocos2d_v3.3_WindowsPhone_8.1 + + + false + false + libcocos2d_v3.3_WindowsPhone_8.1 + + + false + false + libcocos2d_v3.3_WindowsPhone_8.1 + + + + Use + true + /Zm200 %(AdditionalOptions) + pch.h + $(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_DEBUG;COCOS2D_DEBUG=1;%(PreprocessorDefinitions) + + + Console + false + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + ..\..\..\cocos2d.def + + + + + Use + true + /Zm200 %(AdditionalOptions) + pch.h + $(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) + + + Console + false + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + ..\..\..\cocos2d.def + + + + + Use + true + /Zm200 %(AdditionalOptions) + pch.h + $(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_DEBUG;COCOS2D_DEBUG=1;%(PreprocessorDefinitions) + + + Console + false + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + ..\..\..\cocos2d.def + + + + + Use + true + /Zm200 %(AdditionalOptions) + pch.h + $(EngineRoot)external\wp_8.1-specific\zlib\include;$(EngineRoot)external\freetype2\include\wp_8.1;$(EngineRoot)external\websockets\include\wp_8.1;$(EngineRoot)external\curl\include\wp_8.1;$(EngineRoot)external\tiff\include\wp_8.1;$(EngineRoot)external\jpeg\include\wp_8.1;$(EngineRoot)external\png\include\wp_8.1;$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) + + + Console + false + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + ..\..\..\cocos2d.def + + + + + + \ No newline at end of file diff --git a/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.WindowsPhone/libcocos2d_8_1.WindowsPhone.vcxproj.filters b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.WindowsPhone/libcocos2d_8_1.WindowsPhone.vcxproj.filters new file mode 100644 index 0000000000..a7761ab018 --- /dev/null +++ b/cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.WindowsPhone/libcocos2d_8_1.WindowsPhone.vcxproj.filters @@ -0,0 +1,5 @@ + + + + + diff --git a/cocos/2d/cocos2d_wp8.vcxproj b/cocos/2d/libcocos2d_wp8.vcxproj similarity index 50% rename from cocos/2d/cocos2d_wp8.vcxproj rename to cocos/2d/libcocos2d_wp8.vcxproj index 1c4f3b5efb..e3bdf159a3 100644 --- a/cocos/2d/cocos2d_wp8.vcxproj +++ b/cocos/2d/libcocos2d_wp8.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -19,432 +19,226 @@ - {B5AF91B3-64EA-44E1-84B0-D759E93758FB} - cocos2d-x.win32 + {7c5dbc42-27f6-4978-aabc-02ba77e2a7f0} + libcocos2d_wp8 en-US 11.0 - libcocos2d - StaticLibrary + DynamicLibrary true v110_wp80 + false - StaticLibrary + DynamicLibrary true v110_wp80 + false - StaticLibrary + DynamicLibrary false true v110_wp80 + false - StaticLibrary + DynamicLibrary false true v110_wp80 + false - - + - - + - - + - - + false + + libcocos2d_v3.3_WindowsPhone_8.0 + false + + + libcocos2d_v3.3_WindowsPhone_8.0 + false + + + libcocos2d_v3.3_WindowsPhone_8.0 + + + libcocos2d_v3.3_WindowsPhone_8.0 + - %(PreprocessorDefinitions) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;%(PreprocessorDefinitions) Use pch.h + true $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\curl\include\wp8;$(EngineRoot)external\curl\include\wp8\curl;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\xxhash;%(AdditionalIncludeDirectories) - WP8;_LIB;_DEBUG;COCOS2D_DEBUG=1;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) + $(EngineRoot)external\jpeg\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\tiff\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\png\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + /Zm256 %(AdditionalOptions) pch.h - /Zm200 %(AdditionalOptions) Console false - ole32.lib; - d3d11.lib;xaudio2.lib;libEGL_phone.lib;libGLESv2_phone.lib;freetype.lib;libpng.lib;libjpeg.lib;libtiff.lib;zlib.lib;%(AdditionalDependencies) - ..\..\external\wp8-specific\angle\prebuilt\$(Platform);..\..\external\wp8-specific\zlib\prebuilt\$(Platform);..\..\external\png\prebuilt\wp8\$(Platform);..\..\external\jpeg\prebuilt\wp8\$(Platform);..\..\external\tiff\prebuilt\wp8\$(Platform);..\..\external\freetype2\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) - - - /IGNORE:4264 %(AdditionalOptions) - zlib.lib;libpng.lib;libjpeg.lib;libtiff.lib;freetype.lib;ws2_32.lib;libchipmunk.lib;%(AdditionalDependencies) + false + true + ole32.lib $(EngineRoot)external\wp8-specific\zlib\prebuilt\$(Platform);$(EngineRoot)external\png\prebuilt\wp8\$(Platform);$(EngineRoot)external\jpeg\prebuilt\wp8\$(Platform);$(EngineRoot)external\tiff\prebuilt\wp8\$(Platform);$(EngineRoot)external\chipmunk\prebuilt\wp8\$(Platform);$(EngineRoot)external\freetype2\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) - + cocos2d.def + - _LIB;NDEBUG;%(PreprocessorDefinitions) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) Use pch.h + true $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\curl\include\wp8;$(EngineRoot)external\curl\include\wp8\curl;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\xxhash;%(AdditionalIncludeDirectories) - WP8;_LIB;NDEBUG;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) + $(EngineRoot)external\jpeg\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\tiff\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\png\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + /Zm256 %(AdditionalOptions) pch.h - /Zm200 %(AdditionalOptions) Console false - ole32.lib; - d3d11.lib;xaudio2.lib;libEGL_phone.lib;libGLESv2_phone.lib;freetype.lib;libpng.lib;libjpeg.lib;libtiff.lib;zlib.lib;%(AdditionalDependencies) - ..\..\external\wp8-specific\angle\prebuilt\$(Platform);..\..\external\wp8-specific\zlib\prebuilt\$(Platform);..\..\external\png\prebuilt\wp8\$(Platform);..\..\external\jpeg\prebuilt\wp8\$(Platform);..\..\external\tiff\prebuilt\wp8\$(Platform);..\..\external\freetype2\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) - - - /IGNORE:4264 %(AdditionalOptions) - zlib.lib;libpng.lib;libjpeg.lib;libtiff.lib;freetype.lib;ws2_32.lib;libchipmunk.lib;%(AdditionalDependencies) + false + true + ole32.lib $(EngineRoot)external\wp8-specific\zlib\prebuilt\$(Platform);$(EngineRoot)external\png\prebuilt\wp8\$(Platform);$(EngineRoot)external\jpeg\prebuilt\wp8\$(Platform);$(EngineRoot)external\tiff\prebuilt\wp8\$(Platform);$(EngineRoot)external\chipmunk\prebuilt\wp8\$(Platform);$(EngineRoot)external\freetype2\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) - + cocos2d.def + - _LIB;%(PreprocessorDefinitions) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;%(PreprocessorDefinitions) Use pch.h + true $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\curl\include\wp8;$(EngineRoot)external\curl\include\wp8\curl;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\xxhash;%(AdditionalIncludeDirectories) - WP8;_LIB;_DEBUG;COCOS2D_DEBUG=1;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) + $(EngineRoot)external\jpeg\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\tiff\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\png\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + /Zm256 %(AdditionalOptions) pch.h - /Zm200 %(AdditionalOptions) - CompileAsCpp Console false - ole32.lib; - d3d11.lib;xaudio2.lib;libEGL_phone.lib;libGLESv2_phone.lib;freetype.lib;libpng.lib;libjpeg.lib;libtiff.lib;zlib.lib;%(AdditionalDependencies) - ..\..\external\wp8-specific\angle\prebuilt\$(Platform);..\..\external\wp8-specific\zlib\prebuilt\$(Platform);..\..\external\png\prebuilt\wp8\$(Platform);..\..\external\jpeg\prebuilt\wp8\$(Platform);..\..\external\tiff\prebuilt\wp8\$(Platform);..\..\external\freetype2\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) - - - /IGNORE:4264 %(AdditionalOptions) - zlib.lib;libpng.lib;libjpeg.lib;libtiff.lib;freetype.lib;ws2_32.lib;libchipmunk.lib;%(AdditionalDependencies) + false + true + ole32.lib $(EngineRoot)external\wp8-specific\zlib\prebuilt\$(Platform);$(EngineRoot)external\png\prebuilt\wp8\$(Platform);$(EngineRoot)external\jpeg\prebuilt\wp8\$(Platform);$(EngineRoot)external\tiff\prebuilt\wp8\$(Platform);$(EngineRoot)external\chipmunk\prebuilt\wp8\$(Platform);$(EngineRoot)external\freetype2\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) - + cocos2d.def + - _LIB;NDEBUG;%(PreprocessorDefinitions) + _USRDLL;_LIB;COCOS2DXWIN32_EXPORTS;_USE3DDLL;_EXPORT_DLL_;_USRSTUDIODLL;_USREXDLL;_USEGUIDLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) Use pch.h + true $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot)external\sqlite3\include;$(EngineRoot)external\unzip;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\png\include\wp8;$(EngineRoot)external\jpeg\include\wp8;$(EngineRoot)external\curl\include\wp8;$(EngineRoot)external\curl\include\wp8\curl;$(EngineRoot)external\tiff\include\wp8;$(EngineRoot)external\freetype2\include\wp8;$(EngineRoot)external\wp8-specific\zlib\include;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\xxhash;%(AdditionalIncludeDirectories) - WP8;_LIB;NDEBUG;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) + $(EngineRoot)external\jpeg\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\tiff\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\png\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\protobuf-lite\src;$(EngineRoot)external\protobuf-lite\win32;%(AdditionalIncludeDirectories) + /Zm256 %(AdditionalOptions) pch.h - /Zm200 %(AdditionalOptions) - CompileAsCpp Console false - ole32.lib; - d3d11.lib;xaudio2.lib;libEGL_phone.lib;libGLESv2_phone.lib;freetype.lib;libpng.lib;libjpeg.lib;libtiff.lib;zlib.lib;%(AdditionalDependencies) - ..\..\external\wp8-specific\angle\prebuilt\$(Platform);..\..\external\wp8-specific\zlib\prebuilt\$(Platform);..\..\external\png\prebuilt\wp8\$(Platform);..\..\external\jpeg\prebuilt\wp8\$(Platform);..\..\external\tiff\prebuilt\wp8\$(Platform);..\..\external\freetype2\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) - - - /IGNORE:4264 %(AdditionalOptions) - zlib.lib;libpng.lib;libjpeg.lib;libtiff.lib;freetype.lib;ws2_32.lib;libchipmunk.lib;%(AdditionalDependencies) + false + true + ole32.lib $(EngineRoot)external\wp8-specific\zlib\prebuilt\$(Platform);$(EngineRoot)external\png\prebuilt\wp8\$(Platform);$(EngineRoot)external\jpeg\prebuilt\wp8\$(Platform);$(EngineRoot)external\tiff\prebuilt\wp8\$(Platform);$(EngineRoot)external\chipmunk\prebuilt\wp8\$(Platform);$(EngineRoot)external\freetype2\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) - + cocos2d.def + - - true - - - true - false - - - - - - - - - true - true - true - true - NotUsing - NotUsing - NotUsing - NotUsing - CompileAsCpp - CompileAsCpp - - - - - - - - false - - - NotUsing - CompileAsCpp - - - false - false - NotUsing - CompileAsCpp - - - NotUsing - NotUsing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - false - - - - - - - - - NotUsing - NotUsing - NotUsing - NotUsing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -465,6 +259,10 @@ + + + + @@ -532,6 +330,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -544,6 +427,11 @@ + + + + + @@ -574,7 +462,7 @@ - + @@ -583,11 +471,11 @@ + - @@ -610,6 +498,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -627,6 +543,7 @@ + @@ -677,6 +594,473 @@ + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + NotUsing + NotUsing + NotUsing + NotUsing + CompileAsCpp + CompileAsCpp + CompileAsCpp + CompileAsCpp + + + + + + + + + + + + + + + + + + + + + + NotUsing + NotUsing + NotUsing + NotUsing + CompileAsCpp + CompileAsCpp + CompileAsCpp + CompileAsCpp + + + + + + + + + false + false + false + false + + + + + + + + + + + + + + + + + + + + + + + + + + + NotUsing + NotUsing + NotUsing + NotUsing + + + + + + + + + + + NotUsing + NotUsing + NotUsing + NotUsing + + + + + + + + + + + NotUsing + NotUsing + NotUsing + NotUsing + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + false + false + + + + + + + + + + + + + + + + + NotUsing + NotUsing + NotUsing + NotUsing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + false + + @@ -708,4 +1092,16 @@ + + + {c55734a3-702c-4fa1-b950-32c8e169302f} + + + {7d4fc6eb-9497-4804-98f3-3eaedc896154} + + + + + + \ No newline at end of file diff --git a/cocos/2d/libcocos2d_wp8.vcxproj.filters b/cocos/2d/libcocos2d_wp8.vcxproj.filters new file mode 100644 index 0000000000..9cf444227e --- /dev/null +++ b/cocos/2d/libcocos2d_wp8.vcxproj.filters @@ -0,0 +1,2655 @@ + + + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {7781bbd0-663f-497c-9d8b-8cbc7ea93999} + + + {72b2d0ea-8d6f-43a4-bc2f-5c11cdb95c5b} + + + {3a28d334-186f-401c-aadd-70b4e023db1e} + + + {03cc06c3-283f-46fb-9680-b5a84dfa57df} + + + {e8aa6119-28b7-4df6-ba01-9db968b1f002} + + + {d9999c21-df9a-4885-bda7-d267cdfbde01} + + + {ef4bc857-41ca-412e-89a0-b02cb401fdc7} + + + {35781717-7235-4f1f-9ae7-716e64ccc6b9} + + + {c7536592-2bd8-4a92-bcd0-8f8e21551eaa} + + + {9f40f0d1-83d9-42ce-a185-5f5756c90597} + + + {6c1981b2-d955-4fe6-b81d-3bc84eed0590} + + + {a7501f5e-4fef-4f37-a646-ffe633008d9b} + + + {12ce37e2-709d-416e-a592-1c60b33fd6ce} + + + {1850cae0-9e70-47af-87d5-c90f8343c06a} + + + {81ef00d8-d5b6-4aac-9670-fe4af22ecbe7} + + + {a2fd6c36-9078-45e7-bc11-c235357f565e} + + + {c52c9563-bc10-4b77-8bcc-0e061628fae7} + + + {1be811ab-a9b0-44f7-9a37-b7ef7f1ef24a} + + + {794d19d1-2992-497a-a770-081932fa9242} + + + {287bc50b-c080-40b5-b885-88ac1f1a617b} + + + {d6936bb0-d231-4ede-a33e-1de5c388fca0} + + + {e657ad42-e62c-4bb5-98bd-42deeb214458} + + + {e78ebf14-f840-478a-985a-26f33c8a7a7f} + + + {d6ade174-8a80-4a3b-805d-31b33f3bb12e} + + + {2da83f5a-eb55-4d14-831a-8a321ae76905} + + + {412bbcff-4dc5-4c37-a6d9-0216d6b87418} + + + {67dc1c20-1409-453b-8b1a-a22bd5af6176} + + + {4b45f82d-a5e2-4cfc-9b56-3dad70693c4a} + + + {954e3ba3-1bc6-4a7a-abe6-ca4a1e177099} + + + {f3fb753f-e47b-4af3-a59d-4e65fddd73fc} + + + {b5456a67-16de-41ea-844f-46ef481ecad9} + + + {15cef3b1-e1b4-40ad-b4bb-4f918396ccce} + + + {ab9c0e6c-fe51-42c6-89df-7962bf2cfeec} + + + {c26e58bf-de47-4895-bd07-4aa32ef93867} + + + {67812e0f-147f-4015-af72-6c878a9c4a06} + + + {b04a6ae6-7d66-4b83-88ed-1eea239c31d6} + + + {911eab6e-b192-4a3e-a80a-e7254477ac4b} + + + {45ec1342-efb4-480a-96e6-56d9167ddf2e} + + + {7c1387e5-341a-476c-a2af-f4629e7445b4} + + + {8610c729-6bfa-43f2-b954-1c8ad06b0b4f} + + + {1c203621-0357-429a-aae0-766c816b1bfd} + + + {60c2b17d-ed4d-44d9-b369-3421563e4369} + + + {89da718e-f2fa-4437-83e8-40755f6fc3a2} + + + {20e787a6-57c3-4122-88ad-d803c892e7f4} + + + {472edbc0-fbb6-41a4-8759-40c11a78b47c} + + + {77da5935-5a02-4f2b-82fa-d76be5533241} + + + {38b491dc-2676-4d85-a50c-da867dc22ba8} + + + {ae1c235a-fe3f-49b1-98d5-907391591301} + + + {b443b5e0-2fd5-439b-a9e6-ca4ad2520553} + + + {39217b15-d4cb-44b5-8636-47f6c8026a13} + + + {e48826ef-5e90-4d47-8829-06cf2f32d759} + + + {e8a7d029-142d-4e6e-a606-9b86b1539627} + + + {ead17956-8c02-427d-8558-0d4abcae53c7} + + + {a63a9a3e-bfe9-4ebd-82eb-d08ee689c2af} + + + {0a92e110-3c5e-4714-9616-a6f4c611d054} + + + {d8be569c-cf20-477a-8d2c-f177ecbb3098} + + + {3ef51a10-298c-43ff-99b0-04a7d9a16ad9} + + + {5c1d3bda-e73f-4267-b97d-9431edf0cb9b} + + + {e1d04fd8-3aaf-4744-b63c-ef284cea01e8} + + + {a9c25e42-8568-4b34-95c6-842d1c84cff1} + + + {b8343db5-7783-4ebe-934a-13d079f35c04} + + + {2cdbd301-d589-4a7b-bee5-f1e61359285b} + + + {9917270a-302d-4203-875b-abacc7d8313d} + + + {0e7cd115-2c97-4059-8ee0-6e0915eab1d2} + + + {14f51ffa-f405-4785-9eed-e6d059ab6886} + + + {02cd79b1-fdf9-459a-884d-cd584784f20c} + + + {ae5cf6f4-8676-4f48-a4c6-74fefd9f502a} + + + {a9981839-03f2-4d16-8170-db722dc0777f} + + + {f3a0416f-0c3a-44c2-a9f3-e59fab18e37f} + + + {398440fd-bc31-41ce-8ac1-03e943d0c761} + + + {e3dc7161-12e0-4d3b-b364-00de56fe3755} + + + {f68c00d5-e79f-4b3b-b352-20808e2b4f39} + + + {0037c6b3-aa22-4e63-9048-42ca6c88c9fb} + + + {4efe3422-d5e4-4dd9-8c5e-51a2333f554b} + + + {38e945e9-f3d8-44e5-8ef9-54ff95ab6f1e} + + + {2002113e-f002-4ce3-ad7e-3e8609c691d0} + + + {b7fdf4e2-b3be-4b7a-b586-ddab39fb05b7} + + + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + external\tinyxml2 + + + external\unzip + + + external\unzip + + + external\edtaa + + + external\ConvertUTF + + + external\ConvertUTF + + + external\xxhash + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + physics + + + physics + + + physics + + + physics + + + physics + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform\wp8 + + + platform\wp8 + + + platform\wp8 + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosbuilder\Source Files + + + cocosdenshion\Source Files + + + cocosdenshion\Source Files + + + cocosdenshion\Source Files + + + cocostudio\action + + + cocostudio\action + + + cocostudio\action + + + cocostudio\action + + + cocostudio\action + + + cocostudio\trigger + + + cocostudio\trigger + + + cocostudio\trigger + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\reader + + + cocostudio\reader + + + cocostudio\reader\WidgetReader + + + cocostudio\reader\WidgetReader\ButtonReader + + + cocostudio\reader\WidgetReader\CheckBoxReader + + + cocostudio\reader\WidgetReader\ImageViewReader + + + cocostudio\reader\WidgetReader\LayoutReader + + + cocostudio\reader\WidgetReader\ListViewReader + + + cocostudio\reader\WidgetReader\LoadingBarReader + + + cocostudio\reader\WidgetReader\PageViewReader + + + cocostudio\reader\WidgetReader\ScrollViewReader + + + cocostudio\reader\WidgetReader\SliderReader + + + cocostudio\reader\WidgetReader\TextAtlasReader + + + cocostudio\reader\WidgetReader\TextBMFontReader + + + cocostudio\reader\WidgetReader\TextFieldReader + + + cocostudio\reader\WidgetReader\TextReader + + + cocostudio\json + + + cocostudio\json + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\armature + + + cocostudio\armature + + + cocostudio\armature\animation + + + cocostudio\armature\animation + + + cocostudio\armature\animation + + + cocostudio\armature\datas + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\physics + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCScrollView + + + extension\GUI\CCScrollView + + + extension\GUI\CCScrollView + + + extension\physics_nodes + + + extension\physics_nodes + + + storage\Source Files + + + ui\BaseClasses + + + ui\BaseClasses + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\System + + + ui\System + + + ui\System + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets\ScrollWidget + + + ui\UIWidgets\ScrollWidget + + + ui\UIWidgets\ScrollWidget + + + network\Source Files + + + network\Source Files + + + network\Source Files + + + + extension\AssetsManager + + + external\unzip + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\TimelineAction + + + cocostudio + + + ui\Layouts + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + 2d + + + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 2d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + 3d + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + base + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + deprecated + + + external\tinyxml2 + + + external\unzip + + + external\unzip + + + external\edtaa + + + external\ConvertUTF + + + external\xxhash + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + physics + + + physics + + + physics + + + physics + + + physics + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + physics\chipmunk + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform + + + platform\wp8 + + + platform\wp8 + + + platform\wp8 + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\winrt + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + platform\renderer + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosbuilder\Header Files + + + cocosdenshion\Source Files + + + cocosdenshion\Source Files + + + cocosdenshion\Header Files + + + cocosdenshion\Header Files + + + cocostudio\action + + + cocostudio\action + + + cocostudio\action + + + cocostudio\action + + + cocostudio\action + + + cocostudio\trigger + + + cocostudio\trigger + + + cocostudio\trigger + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\TimelineAction + + + cocostudio\reader + + + cocostudio\reader + + + cocostudio\reader\WidgetReader + + + cocostudio\reader\WidgetReader + + + cocostudio\reader\WidgetReader\ButtonReader + + + cocostudio\reader\WidgetReader\CheckBoxReader + + + cocostudio\reader\WidgetReader\ImageViewReader + + + cocostudio\reader\WidgetReader\LayoutReader + + + cocostudio\reader\WidgetReader\ListViewReader + + + cocostudio\reader\WidgetReader\LoadingBarReader + + + cocostudio\reader\WidgetReader\PageViewReader + + + cocostudio\reader\WidgetReader\ScrollViewReader + + + cocostudio\reader\WidgetReader\SliderReader + + + cocostudio\reader\WidgetReader\TextAtlasReader + + + cocostudio\reader\WidgetReader\TextBMFontReader + + + cocostudio\reader\WidgetReader\TextFieldReader + + + cocostudio\reader\WidgetReader\TextReader + + + cocostudio\json + + + cocostudio\json + + + cocostudio\json\rapidjson + + + cocostudio\json\rapidjson + + + cocostudio\json\rapidjson + + + cocostudio\json\rapidjson + + + cocostudio\json\rapidjson + + + cocostudio\json\rapidjson + + + cocostudio\json\rapidjson + + + cocostudio\json\rapidjson\internal + + + cocostudio\json\rapidjson\internal + + + cocostudio\json\rapidjson\internal + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\components + + + cocostudio\armature + + + cocostudio\armature + + + cocostudio\armature\animation + + + cocostudio\armature\animation + + + cocostudio\armature\animation + + + cocostudio\armature\datas + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\display + + + cocostudio\armature\physics + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + cocostudio\armature\utils + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCControlExtension + + + extension\GUI\CCScrollView + + + extension\GUI\CCScrollView + + + extension\GUI\CCScrollView + + + extension\physics_nodes + + + extension\physics_nodes + + + extension + + + extension + + + storage\Header Files + + + ui\BaseClasses + + + ui\BaseClasses + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\Layouts + + + ui\System + + + ui\System + + + ui\System + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets + + + ui\UIWidgets\ScrollWidget + + + ui\UIWidgets\ScrollWidget + + + ui\UIWidgets\ScrollWidget + + + network\Header Files + + + network\Header Files + + + network\Header Files + + + network\Header Files + + + network\Header Files + + + + extension\AssetsManager + + + external\unzip + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\io + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\json\protobuf-lite\src\google\protobuf\stubs + + + cocostudio\TimelineAction + + + ui\Layouts + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + extension\AssetsManager + + + 2d + + + + + math + + + math + + + math + + + math + + + math + + + math + + + math + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + platform\renderer\shaders + + + \ No newline at end of file diff --git a/cocos/2d/winrt_8.1_props/cocos2d_winrt_8.1.props b/cocos/2d/winrt_8.1_props/cocos2d_winrt_8.1.props new file mode 100644 index 0000000000..cd169e5074 --- /dev/null +++ b/cocos/2d/winrt_8.1_props/cocos2d_winrt_8.1.props @@ -0,0 +1,32 @@ + + + + + $(MSBuildThisFileDirectory)..\..\..\ + + + + + $(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\angle\include;$(EngineRoot)external\freetype2\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\curl\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\websockets\include\$(COCOS2D_PLATFORM);$(EngineRoot)cocos\platform\winrt;$(EngineRoot)cocos\platform;$(EngineRoot)cocos\editor-support;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\sqlite3\include;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos;$(EngineRoot)extensions;$(EngineRoot)external;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\unzip;$(EngineRoot)external\tinyxml2;$(EngineRoot);$(EngineRoot)external\ConvertUTF;$(EngineRoot)external\xxhash;%(AdditionalIncludeDirectories); + + + WINRT;_VARIADIC_MAX=10;NOMINMAX;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions) + true + true + false + OldStyle + 4056;4996;4244;4251; + + + libGLESv2.lib;libEGL.lib;ws2_32.lib;libwebsockets.lib;libcurl.lib;libchipmunk.lib;zlib.lib;libpng.lib;libjpeg.lib;libtiff.lib;freetype250.lib;sqlite3.lib;d2d1.lib;d3d11.lib;dxgi.lib;windowscodecs.lib;dwrite.lib;dxguid.lib;xaudio2.lib;mfcore.lib;mfplat.lib;mfreadwrite.lib;mfuuid.lib;%(AdditionalDependencies) + $(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\angle\prebuilt\$(Platform);$(EngineRoot)external\curl\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\websockets\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\chipmunk\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\zlib\prebuilt\$(Platform);$(EngineRoot)external\png\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\tiff\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\jpeg\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\sqlite3\libraries\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\freetype2\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);%(AdditionalLibraryDirectories); + /IGNORE:4264 %(AdditionalOptions) + + + + + $(EngineRoot) + true + + + \ No newline at end of file diff --git a/cocos/2d/winrt_8.1_props/cocos2d_winrt_8.1_app.props b/cocos/2d/winrt_8.1_props/cocos2d_winrt_8.1_app.props new file mode 100644 index 0000000000..56a1e35697 --- /dev/null +++ b/cocos/2d/winrt_8.1_props/cocos2d_winrt_8.1_app.props @@ -0,0 +1,33 @@ + + + + + $(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\angle\prebuilt\$(Platform)\ + $(EngineRoot)external\curl\prebuilt\$(COCOS2D_PLATFORM)\$(Platform)\ + $(EngineRoot)external\websockets\prebuilt\$(COCOS2D_PLATFORM)\$(Platform)\ + $(EngineRoot)external\sqlite3\libraries\$(COCOS2D_PLATFORM)\$(Platform)\ + + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + \ No newline at end of file diff --git a/cocos/2d/winrt_8.1_props/cocos2d_winrt_8.1_platform.props b/cocos/2d/winrt_8.1_props/cocos2d_winrt_8.1_platform.props new file mode 100644 index 0000000000..761976bf4e --- /dev/null +++ b/cocos/2d/winrt_8.1_props/cocos2d_winrt_8.1_platform.props @@ -0,0 +1,7 @@ + + + + + winrt_8.1 + + \ No newline at end of file diff --git a/cocos/2d/winrt_props/cocos2d_winrt.props b/cocos/2d/winrt_props/cocos2d_winrt.props new file mode 100644 index 0000000000..eb5ffb6d54 --- /dev/null +++ b/cocos/2d/winrt_props/cocos2d_winrt.props @@ -0,0 +1,32 @@ + + + + + $(MSBuildThisFileDirectory)..\..\..\ + + + + + $(EngineRoot)external\winrt-specific\angle\include;$(EngineRoot)external\freetype2\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\curl\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\websockets\include\$(COCOS2D_PLATFORM);$(EngineRoot)cocos\platform\winrt;$(EngineRoot)cocos\platform;$(EngineRoot)cocos\editor-support;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\sqlite3\include;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos;$(EngineRoot)extensions;$(EngineRoot)external;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\unzip;$(EngineRoot)external\tinyxml2;$(EngineRoot);$(EngineRoot)external\ConvertUTF;$(EngineRoot)external\xxhash;%(AdditionalIncludeDirectories); + + + WINRT;_VARIADIC_MAX=10;NOMINMAX;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions) + true + true + false + OldStyle + 4056;4996;4244;4251; + + + libGLESv2.lib;libEGL.lib;ws2_32.lib;libwebsockets.lib;libcurl.lib;libchipmunk.lib;zlib.lib;libpng.lib;libjpeg.lib;libtiff.lib;freetype250.lib;sqlite3.lib;d2d1.lib;d3d11.lib;dxgi.lib;windowscodecs.lib;dwrite.lib;dxguid.lib;xaudio2.lib;mfcore.lib;mfplat.lib;mfreadwrite.lib;mfuuid.lib;%(AdditionalDependencies) + $(EngineRoot)external\winrt-specific\angle\prebuilt\$(Platform);$(EngineRoot)external\curl\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\websockets\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\chipmunk\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\zlib\prebuilt\$(Platform);$(EngineRoot)external\png\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\tiff\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\jpeg\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\sqlite3\libraries\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\freetype2\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);%(AdditionalLibraryDirectories); + /IGNORE:4264 %(AdditionalOptions) + + + + + $(EngineRoot) + true + + + \ No newline at end of file diff --git a/cocos/2d/winrt_props/cocos2d_winrt_app.props b/cocos/2d/winrt_props/cocos2d_winrt_app.props new file mode 100644 index 0000000000..d0685779c1 --- /dev/null +++ b/cocos/2d/winrt_props/cocos2d_winrt_app.props @@ -0,0 +1,15 @@ + + + + + $(EngineRoot)external\winrt-specific\angle\prebuilt\$(Platform)\ + + + + true + + + true + + + \ No newline at end of file diff --git a/cocos/2d/winrt_props/cocos2d_winrt_platform.props b/cocos/2d/winrt_props/cocos2d_winrt_platform.props new file mode 100644 index 0000000000..761976bf4e --- /dev/null +++ b/cocos/2d/winrt_props/cocos2d_winrt_platform.props @@ -0,0 +1,7 @@ + + + + + winrt_8.1 + + \ No newline at end of file diff --git a/cocos/2d/wp8_props/cocos2d_wp8.props b/cocos/2d/wp8_props/cocos2d_wp8.props new file mode 100644 index 0000000000..50cf1f6912 --- /dev/null +++ b/cocos/2d/wp8_props/cocos2d_wp8.props @@ -0,0 +1,35 @@ + + + + + wp8 + + + $(MSBuildThisFileDirectory)..\..\..\ + + + + + $(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\angle\include;$(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\zlib\include;$(EngineRoot)external\freetype2\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\curl\include\$(COCOS2D_PLATFORM);$(EngineRoot)external\websockets\include\$(COCOS2D_PLATFORM);$(EngineRoot)cocos\platform\wp8;$(EngineRoot)cocos\platform\winrt;$(EngineRoot)cocos\platform;$(EngineRoot)cocos\editor-support;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\sqlite3\include;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos;$(EngineRoot)extensions;$(EngineRoot)external;$(EngineRoot)external\edtaa3func;$(EngineRoot)external\unzip;$(EngineRoot)external\tinyxml2;$(EngineRoot);$(EngineRoot)external\ConvertUTF;$(EngineRoot)external\xxhash;%(AdditionalIncludeDirectories); + + + WP8;_VARIADIC_MAX=10;NOMINMAX;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_UNICODE;UNICODE;%(PreprocessorDefinitions) + true + true + false + OldStyle + 4056;4996;4244;4251; + + + libGLESv2_phone.lib;libEGL_phone.lib;ws2_32.lib;libwebsockets.lib;libcurl.lib;libchipmunk.lib;zlib.lib;libpng.lib;libjpeg.lib;libtiff.lib;freetype.lib;sqlite3.lib;d3d11.lib;dxgi.lib;dxguid.lib;xaudio2.lib;mfplat.lib;%(AdditionalDependencies) + $(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\angle\prebuilt\$(Platform);$(EngineRoot)cocos\platform\wp8;$(EngineRoot)external\curl\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\websockets\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\chipmunk\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\zlib\prebuilt\$(Platform);$(EngineRoot)external\png\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\tiff\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\jpeg\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\sqlite3\libraries\$(COCOS2D_PLATFORM)\$(Platform);$(EngineRoot)external\freetype2\prebuilt\$(COCOS2D_PLATFORM)\$(Platform);%(AdditionalLibraryDirectories); + /IGNORE:4264 %(AdditionalOptions) + + + + + $(EngineRoot) + true + + + \ No newline at end of file diff --git a/cocos/2d/wp8_props/cocos2d_wp8_app.props b/cocos/2d/wp8_props/cocos2d_wp8_app.props new file mode 100644 index 0000000000..c15d2cff90 --- /dev/null +++ b/cocos/2d/wp8_props/cocos2d_wp8_app.props @@ -0,0 +1,34 @@ + + + + + $(EngineRoot)external\$(COCOS2D_PLATFORM)-specific\angle\prebuilt\$(Platform)\ + $(EngineRoot)external\curl\prebuilt\$(COCOS2D_PLATFORM)\$(Platform)\ + $(EngineRoot)external\websockets\prebuilt\$(COCOS2D_PLATFORM)\$(Platform)\ + $(EngineRoot)external\sqlite3\libraries\$(COCOS2D_PLATFORM)\$(Platform)\ + $(EngineRoot)external\curl\prebuilt\$(COCOS2D_PLATFORM)\$(Platform)\ + + + + true + + + true + + + true + + + true + + + true + + + true + + + true + + + \ No newline at end of file diff --git a/cocos/2d/wp8_props/cocos2d_wp8_component.props b/cocos/2d/wp8_props/cocos2d_wp8_component.props new file mode 100644 index 0000000000..b492f78d87 --- /dev/null +++ b/cocos/2d/wp8_props/cocos2d_wp8_component.props @@ -0,0 +1,9 @@ + + + + + + _WINRT_DLL;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/cocos/2d/wp_8.1_props/cocos2d_wp_8.1_platform.props b/cocos/2d/wp_8.1_props/cocos2d_wp_8.1_platform.props new file mode 100644 index 0000000000..6200885a8b --- /dev/null +++ b/cocos/2d/wp_8.1_props/cocos2d_wp_8.1_platform.props @@ -0,0 +1,7 @@ + + + + + wp_8.1 + + \ No newline at end of file diff --git a/cocos/3d/Android.mk b/cocos/3d/Android.mk index c0ce7c55f3..9710c56be0 100644 --- a/cocos/3d/Android.mk +++ b/cocos/3d/Android.mk @@ -25,9 +25,7 @@ CCSprite3D.cpp LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/.. -LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. \ - $(LOCAL_PATH)/../../external \ - $(LOCAL_PATH)/../platform/android +LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. LOCAL_STATIC_LIBRARIES := cocos2dx_internal_static diff --git a/cocos/3d/CCAnimate3D.cpp b/cocos/3d/CCAnimate3D.cpp index 7327822d20..b89805c4dd 100644 --- a/cocos/3d/CCAnimate3D.cpp +++ b/cocos/3d/CCAnimate3D.cpp @@ -62,6 +62,16 @@ Animate3D* Animate3D::create(Animation3D* animation, float fromTime, float durat return animate; } +Animate3D* Animate3D::createWithFrames(Animation3D* animation, int startFrame, int endFrame, float frameRate) +{ + float perFrameTime = 1.f / frameRate; + float fromTime = startFrame * perFrameTime; + float duration = (endFrame - startFrame) * perFrameTime; + + auto animate = create(animation, fromTime, duration); + return animate; +} + /** returns a clone of action */ Animate3D* Animate3D::clone() const { diff --git a/cocos/3d/CCAnimate3D.h b/cocos/3d/CCAnimate3D.h index cf46227697..d43fe5ffb1 100644 --- a/cocos/3d/CCAnimate3D.h +++ b/cocos/3d/CCAnimate3D.h @@ -55,6 +55,17 @@ public: * @return Animate3D created using animate */ static Animate3D* create(Animation3D* animation, float fromTime, float duration); + + /** + * create Animate3D by frame section, [startFrame, endFrame) + * @param animation used to generate animate3D + * @param startFrame + * @param endFrame + * @param frameRate default is 30 per second + * @return Animate3D created using animate + */ + static Animate3D* createWithFrames(Animation3D* animation, int startFrame, int endFrame, float frameRate = 30.f); + // // Overrides // diff --git a/cocos/3d/CCBillBoard.cpp b/cocos/3d/CCBillBoard.cpp index c39bff5364..f3aaa846b8 100644 --- a/cocos/3d/CCBillBoard.cpp +++ b/cocos/3d/CCBillBoard.cpp @@ -101,13 +101,17 @@ void BillBoard::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) auto camera = Camera::getVisitingCamera(); const Mat4& camWorldMat = camera->getNodeToWorldTransform(); - if (memcmp(_camWorldMat.m, camWorldMat.m, sizeof(float) * 16) != 0 || memcmp(_transform.m, transform.m, sizeof(float) * 16) != 0 || _modeDirty) + if (memcmp(_camWorldMat.m, camWorldMat.m, sizeof(float) * 16) != 0 || memcmp(_mvTransform.m, transform.m, sizeof(float) * 16) != 0 || _modeDirty) { + Vec3 anchorPoint(_anchorPointInPoints.x , _anchorPointInPoints.y , 0.0f); + Mat4 localToWorld = transform; + localToWorld.translate(anchorPoint); + Vec3 camDir; switch (_mode) { case Mode::VIEW_POINT_ORIENTED: - camDir = Vec3(transform.m[12] - camWorldMat.m[12], transform.m[13] - camWorldMat.m[13], transform.m[14] - camWorldMat.m[14]); + camDir = Vec3(localToWorld.m[12] - camWorldMat.m[12], localToWorld.m[13] - camWorldMat.m[13], localToWorld.m[14] - camWorldMat.m[14]); break; case Mode::VIEW_PLANE_ORIENTED: camWorldMat.transformVector(Vec3(0.0f, 0.0f, -1.0f), &camDir); @@ -130,18 +134,22 @@ void BillBoard::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) Vec3::cross(camDir, y, &x); x.normalize(); Vec3::cross(x, camDir, &y); - float xlen = sqrtf(transform.m[0] * transform.m[0] + transform.m[1] * transform.m[1] + transform.m[2] * transform.m[2]); - float ylen = sqrtf(transform.m[4] * transform.m[4] + transform.m[5] * transform.m[5] + transform.m[6] * transform.m[6]); - float zlen = sqrtf(transform.m[8] * transform.m[8] + transform.m[9] * transform.m[9] + transform.m[10] * transform.m[10]); + y.normalize(); + + float xlen = sqrtf(localToWorld.m[0] * localToWorld.m[0] + localToWorld.m[1] * localToWorld.m[1] + localToWorld.m[2] * localToWorld.m[2]); + float ylen = sqrtf(localToWorld.m[4] * localToWorld.m[4] + localToWorld.m[5] * localToWorld.m[5] + localToWorld.m[6] * localToWorld.m[6]); + float zlen = sqrtf(localToWorld.m[8] * localToWorld.m[8] + localToWorld.m[9] * localToWorld.m[9] + localToWorld.m[10] * localToWorld.m[10]); _billboardTransform.m[0] = x.x * xlen; _billboardTransform.m[1] = x.y * xlen; _billboardTransform.m[2] = x.z * xlen; _billboardTransform.m[4] = y.x * ylen; _billboardTransform.m[5] = y.y * ylen; _billboardTransform.m[6] = y.z * ylen; _billboardTransform.m[8] = -camDir.x * zlen; _billboardTransform.m[9] = -camDir.y * zlen; _billboardTransform.m[10] = -camDir.z * zlen; - _billboardTransform.m[12] = transform.m[12]; _billboardTransform.m[13] = transform.m[13]; _billboardTransform.m[14] = transform.m[14]; + _billboardTransform.m[12] = localToWorld.m[12]; _billboardTransform.m[13] = localToWorld.m[13]; _billboardTransform.m[14] = localToWorld.m[14]; + + _billboardTransform.translate(-anchorPoint); const Mat4 &viewMat = camWorldMat.getInversed(); - _zDepthInView = -(viewMat.m[2] * transform.m[12] + viewMat.m[6] * transform.m[13] + viewMat.m[10] * transform.m[14] + viewMat.m[14]); - _transform = transform; + _zDepthInView = -(viewMat.m[2] * _billboardTransform.m[12] + viewMat.m[6] * _billboardTransform.m[13] + viewMat.m[10] * _billboardTransform.m[14] + viewMat.m[14]); + _mvTransform = transform; _camWorldMat = camWorldMat; } diff --git a/cocos/3d/CCBillBoard.h b/cocos/3d/CCBillBoard.h index bd3e1cba7f..ffdff41ec8 100644 --- a/cocos/3d/CCBillBoard.h +++ b/cocos/3d/CCBillBoard.h @@ -99,7 +99,7 @@ CC_CONSTRUCTOR_ACCESS: protected: Mat4 _camWorldMat; - Mat4 _transform; + Mat4 _mvTransform; Mat4 _billboardTransform; float _zDepthInView; diff --git a/cocos/3d/CCBundle3D.cpp b/cocos/3d/CCBundle3D.cpp index 70246384a9..427802b40d 100644 --- a/cocos/3d/CCBundle3D.cpp +++ b/cocos/3d/CCBundle3D.cpp @@ -2084,22 +2084,23 @@ unsigned int Bundle3D::parseGLProgramAttribute(const std::string& str) { return GLProgram::VERTEX_ATTRIB_TEX_COORD3; } - else if (str == "VERTEX_ATTRIB_TEX_COORD4") - { - return GLProgram::VERTEX_ATTRIB_TEX_COORD4; - } - else if (str == "VERTEX_ATTRIB_TEX_COORD5") - { - return GLProgram::VERTEX_ATTRIB_TEX_COORD5; - } - else if (str == "VERTEX_ATTRIB_TEX_COORD6") - { - return GLProgram::VERTEX_ATTRIB_TEX_COORD6; - } - else if (str == "VERTEX_ATTRIB_TEX_COORD7") - { - return GLProgram::VERTEX_ATTRIB_TEX_COORD7; - } + //comment out them +// else if (str == "VERTEX_ATTRIB_TEX_COORD4") +// { +// return GLProgram::VERTEX_ATTRIB_TEX_COORD4; +// } +// else if (str == "VERTEX_ATTRIB_TEX_COORD5") +// { +// return GLProgram::VERTEX_ATTRIB_TEX_COORD5; +// } +// else if (str == "VERTEX_ATTRIB_TEX_COORD6") +// { +// return GLProgram::VERTEX_ATTRIB_TEX_COORD6; +// } +// else if (str == "VERTEX_ATTRIB_TEX_COORD7") +// { +// return GLProgram::VERTEX_ATTRIB_TEX_COORD7; +// } else if (str == "VERTEX_ATTRIB_NORMAL") { return GLProgram::VERTEX_ATTRIB_NORMAL; diff --git a/cocos/3d/CCMeshVertexIndexData.cpp b/cocos/3d/CCMeshVertexIndexData.cpp index 3bb77ddefb..513805ccb2 100644 --- a/cocos/3d/CCMeshVertexIndexData.cpp +++ b/cocos/3d/CCMeshVertexIndexData.cpp @@ -121,9 +121,9 @@ MeshVertexData* MeshVertexData::create(const MeshData& meshdata) return vertexdata; } -const AABB& MeshVertexData::calculateAABB(const std::vector& vertex, int stride, const std::vector& index) +AABB MeshVertexData::calculateAABB(const std::vector& vertex, int stride, const std::vector& index) { - static AABB aabb; + AABB aabb; stride /= 4; for(const auto& it : index) { diff --git a/cocos/3d/CCMeshVertexIndexData.h b/cocos/3d/CCMeshVertexIndexData.h index 400ceaa5b2..f66f1d95aa 100644 --- a/cocos/3d/CCMeshVertexIndexData.h +++ b/cocos/3d/CCMeshVertexIndexData.h @@ -115,7 +115,7 @@ CC_CONSTRUCTOR_ACCESS: MeshVertexData(); virtual ~MeshVertexData(); - static const AABB& calculateAABB(const std::vector& vertex, int stride, const std::vector& index); + static AABB calculateAABB(const std::vector& vertex, int stride, const std::vector& index); protected: VertexData* _vertexData; //mesh vertex data VertexBuffer* _vertexBuffer; // vertex buffer diff --git a/cocos/3d/CCSprite3D.cpp b/cocos/3d/CCSprite3D.cpp index d805235490..825dd1c1a2 100644 --- a/cocos/3d/CCSprite3D.cpp +++ b/cocos/3d/CCSprite3D.cpp @@ -32,6 +32,7 @@ #include "base/CCDirector.h" #include "base/CCLight.h" +#include "base/CCCamera.h" #include "base/ccMacros.h" #include "platform/CCPlatformMacros.h" #include "platform/CCFileUtils.h" @@ -44,7 +45,7 @@ NS_CC_BEGIN -std::string s_attributeNames[] = {GLProgram::ATTRIBUTE_NAME_POSITION, GLProgram::ATTRIBUTE_NAME_COLOR, GLProgram::ATTRIBUTE_NAME_TEX_COORD, GLProgram::ATTRIBUTE_NAME_TEX_COORD1, GLProgram::ATTRIBUTE_NAME_TEX_COORD2,GLProgram::ATTRIBUTE_NAME_TEX_COORD3,GLProgram::ATTRIBUTE_NAME_TEX_COORD4,GLProgram::ATTRIBUTE_NAME_TEX_COORD5,GLProgram::ATTRIBUTE_NAME_TEX_COORD6,GLProgram::ATTRIBUTE_NAME_TEX_COORD7,GLProgram::ATTRIBUTE_NAME_NORMAL, GLProgram::ATTRIBUTE_NAME_BLEND_WEIGHT, GLProgram::ATTRIBUTE_NAME_BLEND_INDEX}; +std::string s_attributeNames[] = {GLProgram::ATTRIBUTE_NAME_POSITION, GLProgram::ATTRIBUTE_NAME_COLOR, GLProgram::ATTRIBUTE_NAME_TEX_COORD, GLProgram::ATTRIBUTE_NAME_TEX_COORD1, GLProgram::ATTRIBUTE_NAME_TEX_COORD2,GLProgram::ATTRIBUTE_NAME_TEX_COORD3,GLProgram::ATTRIBUTE_NAME_NORMAL, GLProgram::ATTRIBUTE_NAME_BLEND_WEIGHT, GLProgram::ATTRIBUTE_NAME_BLEND_INDEX}; Sprite3D* Sprite3D::create(const std::string &modelPath) { @@ -510,6 +511,23 @@ void Sprite3D::removeAllAttachNode() _attachments.clear(); } +#ifndef NDEBUG +//Generate a dummy texture when the texture file is missing +static Texture2D * getDummyTexture() +{ + auto texture = Director::getInstance()->getTextureCache()->getTextureForKey("/dummyTexture"); + if(!texture) + { + unsigned char data[] ={255,0,0,255};//1*1 pure red picture + Image * image =new (std::nothrow) Image(); + image->initWithRawData(data,sizeof(data),1,1,sizeof(unsigned char)); + texture=Director::getInstance()->getTextureCache()->addImage(image,"/dummyTexture"); + image->release(); + } + return texture; +} +#endif + void Sprite3D::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) { if (_skeleton) @@ -538,10 +556,28 @@ void Sprite3D::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) } auto programstate = mesh->getGLProgramState(); auto& meshCommand = mesh->getMeshCommand(); - +#ifdef NDEBUG GLuint textureID = mesh->getTexture() ? mesh->getTexture()->getName() : 0; - - meshCommand.init(_globalZOrder, textureID, programstate, _blend, mesh->getVertexBuffer(), mesh->getIndexBuffer(), mesh->getPrimitiveType(), mesh->getIndexFormat(), mesh->getIndexCount(), transform); +#else + GLuint textureID = 0; + if(mesh->getTexture()) + { + textureID = mesh->getTexture()->getName(); + }else + { //let the mesh use a dummy texture instead of the missing or crashing texture file + auto texture = getDummyTexture(); + mesh->setTexture(texture); + textureID = texture->getName(); + } +#endif + float globalZ = _globalZOrder; + bool isTransparent = (mesh->_isTransparent || color.a < 1.f); + if (isTransparent && Camera::getVisitingCamera()) + { // use the view matrix for Applying to recalculating transparent mesh's Z-Order + const auto& viewMat = Camera::getVisitingCamera()->getViewMatrix(); + globalZ = -(viewMat.m[2] * transform.m[12] + viewMat.m[6] * transform.m[13] + viewMat.m[10] * transform.m[14] + viewMat.m[14]);//fetch the Z from the result matrix + } + meshCommand.init(globalZ, textureID, programstate, _blend, mesh->getVertexBuffer(), mesh->getIndexBuffer(), mesh->getPrimitiveType(), mesh->getIndexFormat(), mesh->getIndexCount(), transform); meshCommand.setLightMask(_lightMask); @@ -553,7 +589,7 @@ void Sprite3D::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) } //support tint and fade meshCommand.setDisplayColor(Vec4(color.r, color.g, color.b, color.a)); - meshCommand.setTransparent(mesh->_isTransparent); + meshCommand.setTransparent(isTransparent); renderer->addCommand(&meshCommand); } } diff --git a/cocos/Android.mk b/cocos/Android.mk index ac8b308458..79950b1e77 100644 --- a/cocos/Android.mk +++ b/cocos/Android.mk @@ -25,6 +25,7 @@ cocos2d.cpp \ 2d/CCAnimationCache.cpp \ 2d/CCAtlasNode.cpp \ 2d/CCClippingNode.cpp \ +2d/CCClippingRectangleNode.cpp \ 2d/CCComponent.cpp \ 2d/CCComponentContainer.cpp \ 2d/CCDrawNode.cpp \ @@ -180,6 +181,7 @@ physics/chipmunk/CCPhysicsWorldInfo_chipmunk.cpp \ ../external/ConvertUTF/ConvertUTFWrapper.cpp \ ../external/ConvertUTF/ConvertUTF.c \ ../external/tinyxml2/tinyxml2.cpp \ +../external/unzip/ioapi_mem.cpp \ ../external/unzip/ioapi.cpp \ ../external/unzip/unzip.cpp \ ../external/edtaa3func/edtaa3func.cpp \ @@ -188,13 +190,15 @@ physics/chipmunk/CCPhysicsWorldInfo_chipmunk.cpp \ LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) \ $(LOCAL_PATH)/. \ + $(LOCAL_PATH)/.. \ $(LOCAL_PATH)/platform \ $(LOCAL_PATH)/base \ + $(LOCAL_PATH)/../external \ $(LOCAL_PATH)/../external/tinyxml2 \ $(LOCAL_PATH)/../external/unzip \ $(LOCAL_PATH)/../external/chipmunk/include/chipmunk \ $(LOCAL_PATH)/../external/xxhash \ - $(LOCAL_PATH)/../external/nslog + $(LOCAL_PATH)/../external/nslog LOCAL_C_INCLUDES := $(LOCAL_PATH) \ $(LOCAL_PATH)/. \ @@ -242,12 +246,11 @@ LOCAL_MODULE := cocos2dx_static LOCAL_MODULE_FILENAME := libcocos2d LOCAL_STATIC_LIBRARIES := cocostudio_static -LOCAL_STATIC_LIBRARIES += audioengine_static -LOCAL_STATIC_LIBRARIES += cocos3d_static LOCAL_STATIC_LIBRARIES += cocosbuilder_static +LOCAL_STATIC_LIBRARIES += cocos3d_static LOCAL_STATIC_LIBRARIES += spine_static LOCAL_STATIC_LIBRARIES += cocos_network_static -LOCAL_STATIC_LIBRARIES += box2d_static +LOCAL_STATIC_LIBRARIES += audioengine_static include $(BUILD_STATIC_LIBRARY) #============================================================== @@ -269,4 +272,4 @@ $(call import-module,extensions) $(call import-module,Box2D) $(call import-module,curl/prebuilt/android) $(call import-module,websockets/prebuilt/android) - +$(call import-module,protobuf-lite) diff --git a/cocos/CMakeLists.txt b/cocos/CMakeLists.txt index 1c095d044f..e792575153 100644 --- a/cocos/CMakeLists.txt +++ b/cocos/CMakeLists.txt @@ -25,6 +25,8 @@ # this CMakeLists is to generate libcocos2d.a +cmake_minimum_required(VERSION 2.8) + if(WINDOWS) ADD_DEFINITIONS(-DUNICODE -D_UNICODE) endif() @@ -53,7 +55,7 @@ include(editor-support/spine/CMakeLists.txt) include(../extensions/CMakeLists.txt) set(COCOS_EDITOR_SUPPORT_SRC - ${COCOS_CCB_SRC} + ${COCOS_CCB_SRC} ${COCOS_CS_SRC} ${COCOS_SPINE_SRC} ) @@ -74,6 +76,25 @@ set(COCOS_SRC cocos2d.cpp ${COCOS_EXTENSIONS_SRC} ) +if(MACOSX OR APPLE) + include(FindFreetype REQUIRED) + + if(NOT FREETYPE_FOUND) + if(IOS) + FIND_LIBRARY(FREETYPE_LIBRARIES NAMES libfreetype PATHS "../external/freetype2/prebuilt/ios" DOC "Freetype includes") + find_path(FREETYPE_INCLUDE_DIRS ft2build.h "../external/freetype2/include/ios" "../external/freetype2/include/ios/freetype" DOC "Freetype includes") + + elseif() + FIND_LIBRARY(FREETYPE_LIBRARIES NAMES libfreetype PATHS "../external/freetype2/prebuilt/mac" DOC "Freetype includes") + find_path(FREETYPE_INCLUDE_DIRS ft2build.h "../external/freetype2/include/mac" "../external/freetype2/include/mac/freetype" DOC "Freetype includes") + endif(IOS) + endif(NOT FREETYPE_FOUND) + + find_package(Freetype REQUIRED) + include_directories(${FREETYPE_INCLUDE_DIRS}) + +endif() + if(MINGW) find_package(Freetype REQUIRED) find_package(WebP REQUIRED) @@ -125,9 +146,8 @@ elseif(WINDOWS) set(PLATFORM_SPECIFIC_LIBS libjpeg libpng libwebp libtiff libcurl_imp libwebsockets freetype250 glfw3 glew32 opengl32 libiconv libzlib) elseif(LINUX) set(PLATFORM_SPECIFIC_LIBS jpeg webp tiff freetype curl websockets - fontconfig png pthread glfw GLEW GL X11 rt z ${FMOD_LIB}) -elseif(MACOSX) - + fontconfig png pthread glfw GLEW GL X11 rt z protobuf ${FMOD_LIB}) +elseif(MACOSX OR APPLE) INCLUDE_DIRECTORIES ( /System/Library/Frameworks ) FIND_LIBRARY(COCOA_LIBRARY Cocoa) @@ -141,7 +161,7 @@ elseif(MACOSX) set(PLATFORM_SPECIFIC_LIBS z jpeg png webp tiff curl glfw3 - websockets + websockets freetype ${COCOA_LIBRARY} ${OPENGL_LIBRARY} ${OPENAL_LIBRARY} diff --git a/cocos/audio/proj.wp8/CocosDenshion.vcxproj.filters b/cocos/audio/proj.wp8/CocosDenshion.vcxproj.filters deleted file mode 100644 index cbc9b5dc4e..0000000000 --- a/cocos/audio/proj.wp8/CocosDenshion.vcxproj.filters +++ /dev/null @@ -1,42 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Header Files - - - Header Files - - - Source Files - - - Source Files - - - - - Source Files - - - Source Files - - - Source Files - - - \ No newline at end of file diff --git a/cocos/audio/proj.wp8/CocosDenshion.vcxproj.user b/cocos/audio/proj.wp8/CocosDenshion.vcxproj.user deleted file mode 100644 index 17f726ed50..0000000000 --- a/cocos/audio/proj.wp8/CocosDenshion.vcxproj.user +++ /dev/null @@ -1,6 +0,0 @@ - - - - true - - \ No newline at end of file diff --git a/cocos/audio/winrt/Audio.cpp b/cocos/audio/winrt/Audio.cpp index 76b3e10bcf..feaf711a18 100644 --- a/cocos/audio/winrt/Audio.cpp +++ b/cocos/audio/winrt/Audio.cpp @@ -1,47 +1,30 @@ -//// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF -//// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO -//// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A -//// PARTICULAR PURPOSE. -//// -//// Copyright (c) Microsoft Corporation. All rights reserved +/* +* cocos2d-x http://www.cocos2d-x.org +* +* Copyright (c) 2010-2011 - cocos2d-x community +* +* Portions Copyright (c) Microsoft Open Technologies, Inc. +* All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and limitations under the License. +*/ -#include "pch.h" #include "Audio.h" #include "MediaStreamer.h" +//#include "CCCommon.h" -static std::wstring CCUtf8ToUnicode(const char * pszUtf8Str, unsigned len/* = -1*/) -{ - std::wstring ret; - do - { - if (! pszUtf8Str) break; - // get UTF8 string length - if (-1 == len) - { - len = strlen(pszUtf8Str); - } - if (len <= 0) break; - - // get UTF16 string length - int wLen = MultiByteToWideChar(CP_UTF8, 0, pszUtf8Str, len, 0, 0); - if (0 == wLen || 0xFFFD == wLen) break; - - // convert string - wchar_t * pwszStr = new wchar_t[wLen + 1]; - if (! pwszStr) break; - pwszStr[wLen] = 0; - MultiByteToWideChar(CP_UTF8, 0, pszUtf8Str, len, pwszStr, wLen + 1); - ret = pwszStr; - if(pwszStr) { delete[] (pwszStr);}; - } while (0); - return ret; -} - -static inline void ThrowIfFailed(HRESULT hr) +inline void ThrowIfFailed(HRESULT hr) { if (FAILED(hr)) { - // Set a breakpoint on this line to catch DirectX API errors + // Set a breakpoint on this line to catch DX API errors. throw Platform::Exception::CreateException(hr); } } @@ -55,14 +38,14 @@ void AudioEngineCallbacks::Initialize(Audio *audio) // to be closed down and restarted. The error code is given in error. void _stdcall AudioEngineCallbacks::OnCriticalError(HRESULT Error) { + UNUSED_PARAM(Error); m_audio->SetEngineExperiencedCriticalError(); }; Audio::Audio() : m_backgroundID(0), - m_soundEffctVolume(1.0), + m_soundEffctVolume(1.0f), m_backgroundMusicVolume(1.0f) - { } @@ -220,8 +203,10 @@ void Audio::StopBackgroundMusic(bool bReleaseData) StopSoundEffect(m_backgroundID); - if (bReleaseData) + if (bReleaseData){ UnloadSoundEffect(m_backgroundID); + RemoveFromList(m_backgroundID); + } } void Audio::PauseBackgroundMusic() @@ -328,9 +313,6 @@ void Audio::PlaySoundEffect(unsigned int sound) m_soundEffects[sound].m_soundEffectSourceVoice->SubmitSourceBuffer(&m_soundEffects[sound].m_audioBuffer) ); - XAUDIO2_BUFFER buf = {0}; - XAUDIO2_VOICE_STATE state = {0}; - if (m_engineExperiencedCriticalError) { // If there's an error, then we'll recreate the engine on the next render pass return; @@ -426,7 +408,8 @@ void Audio::PauseAllSoundEffects() EffectList::iterator iter; for (iter = m_soundEffects.begin(); iter != m_soundEffects.end(); iter++) { - PauseSoundEffect(iter->first); + if (iter->first != m_backgroundID) + PauseSoundEffect(iter->first); } } @@ -439,11 +422,12 @@ void Audio::ResumeAllSoundEffects() EffectList::iterator iter; for (iter = m_soundEffects.begin(); iter != m_soundEffects.end(); iter++) { - ResumeSoundEffect(iter->first); + if (iter->first != m_backgroundID) + ResumeSoundEffect(iter->first); } } -void Audio::StopAllSoundEffects() +void Audio::StopAllSoundEffects(bool bReleaseData) { if (m_engineExperiencedCriticalError) { return; @@ -452,8 +436,27 @@ void Audio::StopAllSoundEffects() EffectList::iterator iter; for (iter = m_soundEffects.begin(); iter != m_soundEffects.end(); iter++) { - StopSoundEffect(iter->first); + if (iter->first != m_backgroundID){ + StopSoundEffect(iter->first); + if (bReleaseData) + { + UnloadSoundEffect(iter->first); + } + } } + if (bReleaseData) + { + for (iter = m_soundEffects.begin(); iter != m_soundEffects.end();) + { + if (iter->first != m_backgroundID){ + m_soundEffects.erase(iter++); + } + else + { + iter++; + } + } + } } bool Audio::IsSoundEffectStarted(unsigned int sound) @@ -464,39 +467,66 @@ bool Audio::IsSoundEffectStarted(unsigned int sound) return m_soundEffects[sound].m_soundEffectStarted; } +std::wstring CCUtf8ToUnicode(const char * pszUtf8Str) +{ + std::wstring ret; + do + { + if (! pszUtf8Str) break; + size_t len = strlen(pszUtf8Str); + if (len <= 0) break; + ++len; + wchar_t * pwszStr = new wchar_t[len]; + if (! pwszStr) break; + pwszStr[len - 1] = 0; + MultiByteToWideChar(CP_UTF8, 0, pszUtf8Str, len, pwszStr, len); + ret = pwszStr; + + if(pwszStr) { + delete[] (pwszStr); + (pwszStr) = 0; + } + + + } while (0); + return ret; +} + +std::string CCUnicodeToUtf8(const wchar_t* pwszStr) +{ + std::string ret; + do + { + if(! pwszStr) break; + size_t len = wcslen(pwszStr); + if (len <= 0) break; + + char * pszUtf8Str = new char[len*3 + 1]; + WideCharToMultiByte(CP_UTF8, 0, pwszStr, len+1, pszUtf8Str, len*3 + 1, 0, 0); + ret = pszUtf8Str; + + if(pszUtf8Str) { + delete[] (pszUtf8Str); + (pszUtf8Str) = 0; + } + }while(0); + + return ret; +} + void Audio::PreloadSoundEffect(const char* pszFilePath, bool isMusic) { - if (m_engineExperiencedCriticalError) { return; } int sound = Hash(pszFilePath); - if (m_soundEffects.end() != m_soundEffects.find(sound)) - { - return; - } - MediaStreamer mediaStreamer; - mediaStreamer.Initialize(CCUtf8ToUnicode(pszFilePath, -1).c_str()); + mediaStreamer.Initialize(CCUtf8ToUnicode(pszFilePath).c_str()); m_soundEffects[sound].m_soundID = sound; uint32 bufferLength = mediaStreamer.GetMaxStreamLengthInBytes(); - - if (m_soundEffects.find(sound) != m_soundEffects.end()) - { - if (m_soundEffects[sound].m_soundEffectBufferData) - { - delete[] m_soundEffects[sound].m_soundEffectBufferData; - m_soundEffects[sound].m_soundEffectBufferData = NULL; - } - } - else - { - m_soundEffects[sound].m_soundEffectBufferData = NULL; - } - m_soundEffects[sound].m_soundEffectBufferData = new byte[bufferLength]; mediaStreamer.ReadAll(m_soundEffects[sound].m_soundEffectBufferData, bufferLength, &m_soundEffects[sound].m_soundEffectBufferLength); @@ -549,6 +579,8 @@ void Audio::UnloadSoundEffect(const char* pszFilePath) int sound = Hash(pszFilePath); UnloadSoundEffect(sound); + + RemoveFromList(sound); } void Audio::UnloadSoundEffect(unsigned int sound) @@ -562,15 +594,18 @@ void Audio::UnloadSoundEffect(unsigned int sound) m_soundEffects[sound].m_soundEffectSourceVoice->DestroyVoice(); - if (m_soundEffects[sound].m_soundEffectBufferData) - { - delete[] m_soundEffects[sound].m_soundEffectBufferData; - m_soundEffects[sound].m_soundEffectBufferData = NULL; - } + if(m_soundEffects[sound].m_soundEffectBufferData) + delete [] m_soundEffects[sound].m_soundEffectBufferData; + m_soundEffects[sound].m_soundEffectBufferData = nullptr; m_soundEffects[sound].m_soundEffectSourceVoice = nullptr; - m_soundEffects[sound].m_soundEffectStarted = false;// - ZeroMemory(&m_soundEffects[sound].m_audioBuffer, sizeof(m_soundEffects[sound].m_audioBuffer)); + m_soundEffects[sound].m_soundEffectStarted = false; + ZeroMemory(&m_soundEffects[sound].m_audioBuffer, sizeof(m_soundEffects[sound].m_audioBuffer)); +} +void Audio::RemoveFromList( unsigned int sound ) +{ m_soundEffects.erase(sound); } + + diff --git a/cocos/audio/winrt/Audio.h b/cocos/audio/winrt/Audio.h index ae58dc7402..a00b9a2ef7 100644 --- a/cocos/audio/winrt/Audio.h +++ b/cocos/audio/winrt/Audio.h @@ -5,14 +5,25 @@ //// //// Copyright (c) Microsoft Corporation. All rights reserved +// For licensing information relating to this distribution please see Third Party Notices file. + #pragma once -#include "pch.h" +#include +#include +#include +#include +#include + +#define XAUDIO2_HELPER_FUNCTIONS 1 +#include #include static const int STREAMING_BUFFER_SIZE = 65536; static const int MAX_BUFFER_COUNT = 3; +#define UNUSED_PARAM(unusedparam) (void)unusedparam + struct SoundEffectData { unsigned int m_soundID; @@ -85,10 +96,11 @@ private: StreamingVoiceContext m_voiceContext; typedef std::map EffectList; - EffectList m_soundEffects; + typedef std::pair Effect; + EffectList m_soundEffects; - unsigned int m_backgroundID; - std::string m_backgroundFile; + unsigned int m_backgroundID; + std::string m_backgroundFile; bool m_backgroundLoop; float m_soundEffctVolume; @@ -144,9 +156,12 @@ public: void PauseAllSoundEffects(); void ResumeAllSoundEffects(); - void StopAllSoundEffects(); + void StopAllSoundEffects(bool bReleaseData); void PreloadSoundEffect(const char* pszFilePath, bool isMusic = false); void UnloadSoundEffect(const char* pszFilePath); void UnloadSoundEffect(unsigned int sound); + +private: + void RemoveFromList(unsigned int sound); }; diff --git a/cocos/audio/winrt/MediaStreamer.cpp b/cocos/audio/winrt/MediaStreamer.cpp index f6f985bf5b..fc6287cd04 100644 --- a/cocos/audio/winrt/MediaStreamer.cpp +++ b/cocos/audio/winrt/MediaStreamer.cpp @@ -1,49 +1,126 @@ -//// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF -//// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO -//// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A -//// PARTICULAR PURPOSE. -//// -//// Copyright (c) Microsoft Corporation. All rights reserved +/* +* cocos2d-x http://www.cocos2d-x.org +* +* Copyright (c) 2010-2011 - cocos2d-x community +* +* Portions Copyright (c) Microsoft Open Technologies, Inc. +* All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and limitations under the License. +*/ -#include "pch.h" #include "MediaStreamer.h" -using namespace Windows::ApplicationModel; +#include +#include +#include -static inline void ThrowIfFailed(HRESULT hr) +#include +#include + +using namespace Microsoft::WRL; +using namespace Windows::Storage; +using namespace Windows::Storage::FileProperties; +using namespace Windows::Storage::Streams; +using namespace Windows::Foundation; +using namespace Windows::ApplicationModel; +using namespace Concurrency; + +#ifndef MAKEFOURCC + #define MAKEFOURCC(ch0, ch1, ch2, ch3) \ + ((uint32)(byte)(ch0) | ((uint32)(byte)(ch1) << 8) | \ + ((uint32)(byte)(ch2) << 16) | ((uint32)(byte)(ch3) << 24 )) +#endif /* defined(MAKEFOURCC) */ + +inline void ThrowIfFailed(HRESULT hr) { if (FAILED(hr)) { - // Set a breakpoint on this line to catch DirectX API errors + // Set a breakpoint on this line to catch DX API errors. throw Platform::Exception::CreateException(hr); } } - -MediaStreamer::MediaStreamer() +MediaStreamer::MediaStreamer() : + m_offset(0) { - m_reader = nullptr; - m_audioType = nullptr; ZeroMemory(&m_waveFormat, sizeof(m_waveFormat)); - - m_installedLocation = Package::Current->InstalledLocation; - m_installedLocationPath = Platform::String::Concat(m_installedLocation->Path, "\\Assets\\Resources\\"); + m_location = Package::Current->InstalledLocation; + m_locationPath = Platform::String::Concat(m_location->Path, "\\Assets\\Resources\\"); } MediaStreamer::~MediaStreamer() { } +Platform::Array^ MediaStreamer::ReadData( + _In_ Platform::String^ filename + ) +{ + CREATEFILE2_EXTENDED_PARAMETERS extendedParams = {0}; + extendedParams.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS); + extendedParams.dwFileAttributes = FILE_ATTRIBUTE_NORMAL; + extendedParams.dwFileFlags = FILE_FLAG_SEQUENTIAL_SCAN; + extendedParams.dwSecurityQosFlags = SECURITY_ANONYMOUS; + extendedParams.lpSecurityAttributes = nullptr; + extendedParams.hTemplateFile = nullptr; + + Wrappers::FileHandle file( + CreateFile2( + filename->Data(), + GENERIC_READ, + FILE_SHARE_READ, + OPEN_EXISTING, + &extendedParams + ) + ); + if (file.Get()==INVALID_HANDLE_VALUE) + { + throw ref new Platform::FailureException(); + } + + FILE_STANDARD_INFO fileInfo = {0}; + if (!GetFileInformationByHandleEx( + file.Get(), + FileStandardInfo, + &fileInfo, + sizeof(fileInfo) + )) + { + throw ref new Platform::FailureException(); + } + + if (fileInfo.EndOfFile.HighPart != 0) + { + throw ref new Platform::OutOfMemoryException(); + } + + Platform::Array^ fileData = ref new Platform::Array(fileInfo.EndOfFile.LowPart); + + if (!ReadFile( + file.Get(), + fileData->Data, + fileData->Length, + nullptr, + nullptr + ) ) + { + throw ref new Platform::FailureException(); + } + + return fileData; +} void MediaStreamer::Initialize(__in const WCHAR* url) { - Microsoft::WRL::ComPtr outputMediaType; - Microsoft::WRL::ComPtr mediaType; - - ThrowIfFailed( - MFStartup(MF_VERSION) - ); - WCHAR filePath[MAX_PATH] = {0}; + WCHAR filePath[MAX_PATH] = {0}; if ((wcslen(url) > 1 && url[1] == ':')) { // path start with "x:", is absolute path @@ -53,163 +130,92 @@ void MediaStreamer::Initialize(__in const WCHAR* url) && (L'/' == url[0] || L'\\' == url[0])) { // path start with '/' or '\', is absolute path without driver name - wcscat_s(filePath, m_installedLocationPath->Data()); + wcscat_s(filePath, m_locationPath->Data()); // remove '/' or '\\' wcscat_s(filePath, (const WCHAR*)url[1]); }else { - wcscat_s(filePath, m_installedLocationPath->Data()); + wcscat_s(filePath, m_locationPath->Data()); wcscat_s(filePath, url); } - ThrowIfFailed( - MFCreateSourceReaderFromURL(filePath, nullptr, &m_reader) - ); - // Set the decoded output format as PCM - // XAudio2 on Windows can process PCM and ADPCM-encoded buffers. - // When using MF, this sample always decodes into PCM. + Platform::Array^ data = ReadData(ref new Platform::String(filePath)); + UINT32 length = data->Length; + const byte * dataPtr = data->Data; + UINT32 offset = 0; - ThrowIfFailed( - MFCreateMediaType(&mediaType) - ); + DWORD riffDataSize = 0; - ThrowIfFailed( - mediaType->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Audio) - ); + auto ReadChunk = [&length, &offset, &dataPtr, &riffDataSize](DWORD fourcc, DWORD& outChunkSize, DWORD& outChunkPos) -> HRESULT + { + while (true) + { + if (offset + sizeof(DWORD) * 2 >= length) + { + return E_FAIL; + } - ThrowIfFailed( - mediaType->SetGUID(MF_MT_SUBTYPE, MFAudioFormat_PCM) - ); + // Read two DWORDs. + DWORD chunkType = *reinterpret_cast(&dataPtr[offset]); + DWORD chunkSize = *reinterpret_cast(&dataPtr[offset + sizeof(DWORD)]); + offset += sizeof(DWORD) * 2; - ThrowIfFailed( - m_reader->SetCurrentMediaType(MF_SOURCE_READER_FIRST_AUDIO_STREAM, 0, mediaType.Get()) - ); + if (chunkType == MAKEFOURCC('R', 'I', 'F', 'F')) + { + riffDataSize = chunkSize; + chunkSize = sizeof(DWORD); + outChunkSize = sizeof(DWORD); + outChunkPos = offset; + } + else + { + outChunkSize = chunkSize; + outChunkPos = offset; + } - // Get the complete WAVEFORMAT from the Media Type - ThrowIfFailed( - m_reader->GetCurrentMediaType(MF_SOURCE_READER_FIRST_AUDIO_STREAM, &outputMediaType) - ); + offset += chunkSize; - uint32 formatSize = 0; - WAVEFORMATEX* waveFormat; - ThrowIfFailed( - MFCreateWaveFormatExFromMFMediaType(outputMediaType.Get(), &waveFormat, &formatSize) - ); - CopyMemory(&m_waveFormat, waveFormat, sizeof(m_waveFormat)); - CoTaskMemFree(waveFormat); + if (chunkType == fourcc) + { + return S_OK; + } + } + }; - // Get the total length of the stream in bytes - PROPVARIANT var; - ThrowIfFailed( - m_reader->GetPresentationAttribute(MF_SOURCE_READER_MEDIASOURCE, MF_PD_DURATION, &var) - ); - LONGLONG duration = var.uhVal.QuadPart; - double durationInSeconds = (duration / static_cast(10000000)); // duration is in 100ns units, convert to seconds - m_maxStreamLengthInBytes = static_cast(durationInSeconds * m_waveFormat.nAvgBytesPerSec); + // Locate riff chunk, check the file type. + DWORD chunkSize = 0; + DWORD chunkPos = 0; - // Round up the buffer size to the nearest four bytes - m_maxStreamLengthInBytes = (m_maxStreamLengthInBytes + 3) / 4 * 4; -} + ThrowIfFailed(ReadChunk(MAKEFOURCC('R', 'I', 'F', 'F'), chunkSize, chunkPos)); + if (*reinterpret_cast(&dataPtr[chunkPos]) != MAKEFOURCC('W', 'A', 'V', 'E')) ThrowIfFailed(E_FAIL); -bool MediaStreamer::GetNextBuffer(uint8* buffer, uint32 maxBufferSize, uint32* bufferLength) -{ - Microsoft::WRL::ComPtr sample; - Microsoft::WRL::ComPtr mediaBuffer; - BYTE *audioData = nullptr; - DWORD sampleBufferLength = 0; - DWORD flags = 0; + // Locate 'fmt ' chunk, copy to WAVEFORMATEXTENSIBLE. + ThrowIfFailed(ReadChunk(MAKEFOURCC('f', 'm', 't', ' '), chunkSize, chunkPos)); + ThrowIfFailed((chunkSize <= sizeof(m_waveFormat)) ? S_OK : E_FAIL); + CopyMemory(&m_waveFormat, &dataPtr[chunkPos], chunkSize); - *bufferLength = 0; + // Locate the 'data' chunk and copy its contents to a buffer. + ThrowIfFailed(ReadChunk(MAKEFOURCC('d', 'a', 't', 'a'), chunkSize, chunkPos)); + m_data.resize(chunkSize); + CopyMemory(m_data.data(), &dataPtr[chunkPos], chunkSize); - if (m_reader == nullptr) - { - return false; - } - - ThrowIfFailed( - m_reader->ReadSample(MF_SOURCE_READER_FIRST_AUDIO_STREAM, 0, nullptr, &flags, nullptr, &sample) - ); - - if (sample == nullptr) - { - if (flags & MF_SOURCE_READERF_ENDOFSTREAM) - { - return true; - } - else - { - return false; - } - } - - ThrowIfFailed( - sample->ConvertToContiguousBuffer(&mediaBuffer) - ); - - ThrowIfFailed( - mediaBuffer->Lock(&audioData, nullptr, &sampleBufferLength) - ); - - // If buffer isn't large enough, dump sample - if (sampleBufferLength <= maxBufferSize) - { - CopyMemory(buffer, audioData, sampleBufferLength); - *bufferLength = sampleBufferLength; - } - else - { -#if defined(COCOS2D_DEBUG) - OutputDebugString(L"Sample buffer dumped"); -#endif - } - - if (flags & MF_SOURCE_READERF_ENDOFSTREAM) - { - return true; - } - else - { - return false; - } + m_offset = 0; } void MediaStreamer::ReadAll(uint8* buffer, uint32 maxBufferSize, uint32* bufferLength) { - uint32 valuesWritten = 0; - uint32 sampleBufferLength = 0; + UINT32 toCopy = m_data.size() - m_offset; + if (toCopy > maxBufferSize) toCopy = maxBufferSize; - if (m_reader == nullptr) - { - return; - } + CopyMemory(buffer, m_data.data(), toCopy); + *bufferLength = toCopy; - *bufferLength = 0; - // If buffer isn't large enough, return - if (maxBufferSize < m_maxStreamLengthInBytes) - { - return; - } - - while (!GetNextBuffer(buffer + valuesWritten, maxBufferSize - valuesWritten, &sampleBufferLength)) - { - valuesWritten += sampleBufferLength; - } - - *bufferLength = valuesWritten + sampleBufferLength; + m_offset += toCopy; + if (m_offset > m_data.size()) m_offset = m_data.size(); } void MediaStreamer::Restart() { - if (m_reader == nullptr) - { - return; - } - - PROPVARIANT var = {0}; - var.vt = VT_I8; - - ThrowIfFailed( - m_reader->SetCurrentPosition(GUID_NULL, var) - ); + m_offset = 0; } diff --git a/cocos/audio/winrt/MediaStreamer.h b/cocos/audio/winrt/MediaStreamer.h index cafbfe0993..e72ac5974a 100644 --- a/cocos/audio/winrt/MediaStreamer.h +++ b/cocos/audio/winrt/MediaStreamer.h @@ -1,28 +1,46 @@ -//// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF -//// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO -//// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A -//// PARTICULAR PURPOSE. -//// -//// Copyright (c) Microsoft Corporation. All rights reserved +/* +* cocos2d-x http://www.cocos2d-x.org +* +* Copyright (c) 2010-2011 - cocos2d-x community +* +* Portions Copyright (c) Microsoft Open Technologies, Inc. +* All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and limitations under the License. +*/ #pragma once -#include "pch.h" -class MediaStreamer +#include +#include +#include + +ref class MediaStreamer { private: - WAVEFORMATEX m_waveFormat; - uint32 m_maxStreamLengthInBytes; - Windows::Storage::StorageFolder^ m_installedLocation; - Platform::String^ m_installedLocationPath; + WAVEFORMATEX m_waveFormat; + uint32 m_maxStreamLengthInBytes; + std::vector m_data; + UINT32 m_offset; + Platform::Array^ ReadData( + _In_ Platform::String^ filename + ); +internal: + Windows::Storage::StorageFolder^ m_location; + Platform::String^ m_locationPath; public: - Microsoft::WRL::ComPtr m_reader; - Microsoft::WRL::ComPtr m_audioType; + virtual ~MediaStreamer(); -public: +internal: MediaStreamer(); - ~MediaStreamer(); WAVEFORMATEX& GetOutputWaveFormatEx() { @@ -31,11 +49,10 @@ public: UINT32 GetMaxStreamLengthInBytes() { - return m_maxStreamLengthInBytes; + return m_data.size(); } void Initialize(_In_ const WCHAR* url); - bool GetNextBuffer(uint8* buffer, uint32 maxBufferSize, uint32* bufferLength); void ReadAll(uint8* buffer, uint32 maxBufferSize, uint32* bufferLength); void Restart(); }; diff --git a/cocos/audio/winrt/SimpleAudioEngine.cpp b/cocos/audio/winrt/SimpleAudioEngine.cpp index 510cd6434c..6a9b17354b 100644 --- a/cocos/audio/winrt/SimpleAudioEngine.cpp +++ b/cocos/audio/winrt/SimpleAudioEngine.cpp @@ -1,52 +1,51 @@ -/**************************************************************************** -Copyright (c) 2010-2013 cocos2d-x.org -Copyright (c) Microsoft Open Technologies, Inc. +/* +* cocos2d-x http://www.cocos2d-x.org +* +* Copyright (c) 2010-2011 - cocos2d-x community +* +* Portions Copyright (c) Microsoft Open Technologies, Inc. +* All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and limitations under the License. +*/ -http://www.cocos2d-x.org - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -****************************************************************************/ #include "SimpleAudioEngine.h" #include "Audio.h" #include - //#include "CCCommon.h" using namespace std; namespace CocosDenshion { - - Audio* s_audioController = NULL; -// a flag that if the s_audioController should be re-initialiezed -// see also in SimpleAudioEngine::end() in this file -bool s_bAudioControllerNeedReInitialize = true; +bool s_initialized = false; + +SimpleAudioEngine* SimpleAudioEngine::getInstance() +{ + static SimpleAudioEngine s_SharedEngine; + return &s_SharedEngine; +} + static Audio* sharedAudioController() { - if ((! s_audioController) || s_bAudioControllerNeedReInitialize) + if (! s_audioController || !s_initialized) { - s_audioController = new Audio; + if(s_audioController == NULL) + { + s_audioController = new Audio; + } s_audioController->Initialize(); s_audioController->CreateResources(); - s_bAudioControllerNeedReInitialize = false; + s_initialized = true; } return s_audioController; @@ -60,29 +59,16 @@ SimpleAudioEngine::~SimpleAudioEngine() { } -SimpleAudioEngine* SimpleAudioEngine::sharedEngine() -{ - static SimpleAudioEngine s_SharedEngine; - return &s_SharedEngine; -} void SimpleAudioEngine::end() { sharedAudioController()->StopBackgroundMusic(true); - sharedAudioController()->StopAllSoundEffects(); + sharedAudioController()->StopAllSoundEffects(true); sharedAudioController()->ReleaseResources(); - //set here to tell the s_bAudioControllerNeedReInitialize should be re-initialized - s_bAudioControllerNeedReInitialize = true; + s_initialized = false; } -#if 0 -void SimpleAudioEngine::render() -{ - sharedAudioController()->Render(); -} -#endif - ////////////////////////////////////////////////////////////////////////// // BackgroundMusic @@ -132,11 +118,11 @@ bool SimpleAudioEngine::isBackgroundMusicPlaying() // effect function ////////////////////////////////////////////////////////////////////////// -unsigned int SimpleAudioEngine::playEffect(const char* pszFilePath, bool bLoop) +unsigned int SimpleAudioEngine::playEffect(const char* pszFilePath, bool bLoop,float pitch, float pan, float gain) { unsigned int sound; sharedAudioController()->PlaySoundEffect(pszFilePath, bLoop, sound); - + // TODO: need to support playEffect parameters return sound; } @@ -172,12 +158,12 @@ void SimpleAudioEngine::resumeAllEffects() void SimpleAudioEngine::stopAllEffects() { - sharedAudioController()->StopAllSoundEffects(); + sharedAudioController()->StopAllSoundEffects(false); } void SimpleAudioEngine::preloadBackgroundMusic(const char* pszFilePath) { - + UNUSED_PARAM(pszFilePath); } void SimpleAudioEngine::unloadEffect(const char* pszFilePath) diff --git a/cocos/base/CCConsole.cpp b/cocos/base/CCConsole.cpp index 827217ed0f..782446ad8f 100644 --- a/cocos/base/CCConsole.cpp +++ b/cocos/base/CCConsole.cpp @@ -40,7 +40,7 @@ #include #include #define bzero(a, b) memset(a, 0, b); -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) #include "inet_ntop_winrt.h" #include "CCWinRTUtils.h" #endif @@ -111,8 +111,6 @@ static bool isFloat( std::string myString ) { return iss.eof() && !iss.fail(); } -#if CC_TARGET_PLATFORM != CC_PLATFORM_WINRT - // helper free functions // dprintf() is not defined in Android @@ -183,7 +181,6 @@ static void printFileUtils(int fd) } sendPrompt(fd); } -#endif #if defined(__MINGW32__) @@ -231,9 +228,7 @@ static void _log(const char *format, va_list args) fflush(stdout); #endif -#if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) Director::getInstance()->getConsole()->log(buf); -#endif } @@ -254,8 +249,6 @@ void log(const char * format, ...) va_end(args); } -#if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) - // // Console code // @@ -328,7 +321,7 @@ bool Console::listenOnTCP(int port) hints.ai_family = AF_INET; // AF_UNSPEC: Do we need IPv6 ? hints.ai_socktype = SOCK_STREAM; -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) WSADATA wsaData; n = WSAStartup(MAKEWORD(2, 2),&wsaData); @@ -354,7 +347,7 @@ bool Console::listenOnTCP(int port) break; /* success */ /* bind error, close and try next one */ -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) closesocket(listenfd); #else close(listenfd); @@ -441,7 +434,7 @@ void Console::commandExit(int fd, const std::string &args) { FD_CLR(fd, &_read_set); _fds.erase(std::remove(_fds.begin(), _fds.end(), fd), _fds.end()); -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) closesocket(fd); #else close(fd); @@ -1074,7 +1067,7 @@ void Console::loop() //receive a SIGPIPE, which will cause linux system shutdown the sending process. //Add this ioctl code to check if the socket has been closed by peer. -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) u_long n = 0; ioctlsocket(fd, FIONREAD, &n); #else @@ -1119,14 +1112,14 @@ void Console::loop() // clean up: ignore stdin, stdout and stderr for(const auto &fd: _fds ) { -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) closesocket(fd); #else close(fd); #endif } -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) closesocket(_listenfd); WSACleanup(); #else @@ -1135,7 +1128,6 @@ void Console::loop() _running = false; } -#endif /* #if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) */ NS_CC_END diff --git a/cocos/base/CCConsole.h b/cocos/base/CCConsole.h index 7e05a4bf29..f8fa0b2b03 100644 --- a/cocos/base/CCConsole.h +++ b/cocos/base/CCConsole.h @@ -72,7 +72,6 @@ void CC_DLL log(const char * format, ...) CC_FORMAT_PRINTF(1, 2); ``` */ -#if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) class CC_DLL Console : public Ref { @@ -148,7 +147,6 @@ private: CC_DISALLOW_COPY_AND_ASSIGN(Console); }; -#endif /* #if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) */ NS_CC_END #endif /* defined(__CCCONSOLE_H__) */ diff --git a/cocos/base/CCDirector.cpp b/cocos/base/CCDirector.cpp index d4a90c6080..a531f632c9 100644 --- a/cocos/base/CCDirector.cpp +++ b/cocos/base/CCDirector.cpp @@ -1276,8 +1276,10 @@ void DisplayLinkDirector::startAnimation() _invalid = false; +#ifndef WP8_SHADER_COMPILER Application::getInstance()->setAnimationInterval(_animationInterval); - +#endif + // fix issue #3509, skip one fps to avoid incorrect time calculation. setNextDeltaTimeZero(true); } diff --git a/cocos/base/CCDirector.h b/cocos/base/CCDirector.h index d786885574..d84464a994 100644 --- a/cocos/base/CCDirector.h +++ b/cocos/base/CCDirector.h @@ -59,9 +59,7 @@ class TextureCache; class Renderer; class Camera; -#if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) class Console; -#endif /** @brief Class that creates and handles the main Window and manages how @@ -391,9 +389,7 @@ public: /** Returns the Console @since v3.0 */ -#if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) Console* getConsole() const { return _console; } -#endif /* Gets delta time since last tick to main loop */ float getDeltaTime() const; @@ -503,10 +499,8 @@ protected: /* Renderer for the Director */ Renderer *_renderer; -#if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) /* Console for the director */ Console *_console; -#endif // GLView will recreate stats labels to fit visible rect friend class GLView; diff --git a/cocos/base/CMakeLists.txt b/cocos/base/CMakeLists.txt index e6031747d4..680c9a2cc0 100644 --- a/cocos/base/CMakeLists.txt +++ b/cocos/base/CMakeLists.txt @@ -1,5 +1,5 @@ -if(MACOSX) +if(MACOSX OR APPLE) set(COCOS_BASE_SPECIFIC_SRC base/CCUserDefault-apple.mm) endif() diff --git a/cocos/base/ZipUtils.cpp b/cocos/base/ZipUtils.cpp index c5f7e26011..eb2938dc22 100644 --- a/cocos/base/ZipUtils.cpp +++ b/cocos/base/ZipUtils.cpp @@ -22,17 +22,26 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ + +// FIXME: hack, must be included before ziputils +#include "unzip.h" +#include "base/ZipUtils.h" + #include #include #include -#include "base/ZipUtils.h" #include "base/CCData.h" #include "base/ccMacros.h" #include "platform/CCFileUtils.h" -#include "unzip.h" #include +// FIXME: Other platforms should use upstream minizip like mingw-w64 +#ifdef __MINGW32__ +#define unzGoToFirstFile64(A,B,C,D) unzGoToFirstFile2(A,B,C,D, NULL, 0, NULL, 0) +#define unzGoToNextFile64(A,B,C,D) unzGoToNextFile2(A,B,C,D, NULL, 0, NULL, 0) +#endif + NS_CC_BEGIN unsigned int ZipUtils::s_uEncryptedPvrKeyParts[4] = {0,0,0,0}; @@ -484,6 +493,8 @@ void ZipUtils::setPvrEncryptionKey(unsigned int keyPart1, unsigned int keyPart2, // from unzip.cpp #define UNZ_MAXFILENAMEINZIP 256 +static const std::string emptyFilename(""); + struct ZipEntryInfo { unz_file_pos pos; @@ -500,6 +511,23 @@ public: FileListContainer fileList; }; +ZipFile *ZipFile::createWithBuffer(const void* buffer, uLong size) +{ + ZipFile *zip = new ZipFile(); + if (zip && zip->initWithBuffer(buffer, size)) { + return zip; + } else { + if (zip) delete zip; + return nullptr; + } +} + +ZipFile::ZipFile() +: _data(new ZipFilePrivate) +{ + _data->zipFile = nullptr; +} + ZipFile::ZipFile(const std::string &zipFile, const std::string &filter) : _data(new ZipFilePrivate) { @@ -612,4 +640,45 @@ unsigned char *ZipFile::getFileData(const std::string &fileName, ssize_t *size) return buffer; } +std::string ZipFile::getFirstFilename() +{ + if (unzGoToFirstFile(_data->zipFile) != UNZ_OK) return emptyFilename; + std::string path; + unz_file_info info; + getCurrentFileInfo(&path, &info); + return path; +} + +std::string ZipFile::getNextFilename() +{ + if (unzGoToNextFile(_data->zipFile) != UNZ_OK) return emptyFilename; + std::string path; + unz_file_info info; + getCurrentFileInfo(&path, &info); + return path; +} + +int ZipFile::getCurrentFileInfo(std::string *filename, unz_file_info *info) +{ + char path[FILENAME_MAX + 1]; + int ret = unzGetCurrentFileInfo(_data->zipFile, info, path, sizeof(path), nullptr, 0, nullptr, 0); + if (ret != UNZ_OK) { + *filename = emptyFilename; + } else { + filename->assign(path); + } + return ret; +} + +bool ZipFile::initWithBuffer(const void *buffer, uLong size) +{ + if (!buffer || size == 0) return false; + + _data->zipFile = unzOpenBuffer(buffer, size); + if (!_data->zipFile) return false; + + setFilter(emptyFilename); + return true; +} + NS_CC_END diff --git a/cocos/base/ZipUtils.h b/cocos/base/ZipUtils.h index 0ab769383e..6a785ece32 100644 --- a/cocos/base/ZipUtils.h +++ b/cocos/base/ZipUtils.h @@ -39,6 +39,9 @@ THE SOFTWARE. namespace cocos2d { +#ifndef _unz64_H +typedef struct unz_file_info_s unz_file_info; +#endif /* XXX: pragma pack ??? */ /** @struct CCZHeader */ @@ -214,6 +217,7 @@ namespace cocos2d // forward declaration class ZipFilePrivate; + struct unz_file_info_s; /** * Zip file - reader helper class. @@ -270,7 +274,18 @@ namespace cocos2d */ unsigned char *getFileData(const std::string &fileName, ssize_t *size); + std::string getFirstFilename(); + std::string getNextFilename(); + + static ZipFile *createWithBuffer(const void* buffer, unsigned long size); + private: + /* Only used internal for createWithBuffer() */ + ZipFile(); + + bool initWithBuffer(const void *buffer, unsigned long size); + int getCurrentFileInfo(std::string *filename, unz_file_info *info); + /** Internal data like zip file pointer / file list array and so on */ ZipFilePrivate *_data; }; diff --git a/cocos/cocos2d.cpp b/cocos/cocos2d.cpp index fb3b3f4077..111bb4bde6 100644 --- a/cocos/cocos2d.cpp +++ b/cocos/cocos2d.cpp @@ -31,7 +31,7 @@ NS_CC_BEGIN CC_DLL const char* cocos2dVersion() { - return "cocos2d-x 3.3beta0"; + return "cocos2d-x 3.3rc0"; } NS_CC_END diff --git a/cocos/cocos2d.h b/cocos/cocos2d.h index 3a740520da..acf8bdcc3c 100644 --- a/cocos/cocos2d.h +++ b/cocos/cocos2d.h @@ -126,6 +126,7 @@ THE SOFTWARE. #include "2d/CCMenu.h" #include "2d/CCMenuItem.h" #include "2d/CCClippingNode.h" +#include "2d/CCClippingRectangleNode.h" #include "2d/CCMotionStreak.h" #include "2d/CCProgressTimer.h" #include "2d/CCRenderTexture.h" @@ -223,10 +224,9 @@ THE SOFTWARE. #if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) #include "platform/winrt/CCApplication.h" - #include "platform/winrt/CCGLViewImpl.h" + #include "platform/winrt/CCGLViewImpl-winrt.h" #include "platform/winrt/CCGL.h" #include "platform/winrt/CCStdC.h" - #include "platform/winrt/CCPrecompiledShaders.h" #endif // CC_TARGET_PLATFORM == CC_PLATFORM_WINRT #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) diff --git a/cocos/editor-support/cocosbuilder/Android.mk b/cocos/editor-support/cocosbuilder/Android.mk index eaafab037f..a93f8cf5aa 100644 --- a/cocos/editor-support/cocosbuilder/Android.mk +++ b/cocos/editor-support/cocosbuilder/Android.mk @@ -28,17 +28,12 @@ CCScale9SpriteLoader.cpp \ CCScrollViewLoader.cpp \ CCSpriteLoader.cpp -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/.. \ -$(LOCAL_PATH)/../../.. +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/.. -LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../2d \ -$(LOCAL_PATH) \ -$(LOCAL_PATH)/../../.. \ -$(LOCAL_PATH)/../../ \ -$(LOCAL_PATH)/../../platform/android \ -$(LOCAL_PATH)/../../editor-support +LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. \ + $(LOCAL_PATH)/../../2d \ + LOCAL_STATIC_LIBRARIES := cocos_extension_static include $(BUILD_STATIC_LIBRARY) - diff --git a/cocos/editor-support/cocosbuilder/proj.wp8/libCocosBuilder.vcxproj b/cocos/editor-support/cocosbuilder/proj.wp8/libCocosBuilder.vcxproj deleted file mode 100644 index aa05847ade..0000000000 --- a/cocos/editor-support/cocosbuilder/proj.wp8/libCocosBuilder.vcxproj +++ /dev/null @@ -1,225 +0,0 @@ - - - - - Debug - Win32 - - - Debug - ARM - - - Release - Win32 - - - Release - ARM - - - - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2} - libCocosBuilder - en-US - 11.0 - - - - StaticLibrary - true - v110_wp80 - - - StaticLibrary - true - v110_wp80 - - - StaticLibrary - false - true - v110_wp80 - - - StaticLibrary - false - true - v110_wp80 - - - - - - - - - - - - - - - - - - - - - - - - false - - - - _LIB;%(PreprocessorDefinitions) - Use - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)extensions;$(EngineRoot)cocos\audio\include;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) - /Zm200 %(AdditionalOptions) - pch.h - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;NDEBUG;%(PreprocessorDefinitions) - Use - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)extensions;$(EngineRoot)cocos\audio\include;%(AdditionalIncludeDirectories) - WP8;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - /Zm200 %(AdditionalOptions) - pch.h - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;%(PreprocessorDefinitions) - Use - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)extensions;$(EngineRoot)cocos\audio\include;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) - /Zm200 %(AdditionalOptions) - pch.h - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;NDEBUG;%(PreprocessorDefinitions) - Use - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)extensions;$(EngineRoot)cocos\audio\include;%(AdditionalIncludeDirectories) - WP8;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - /Zm200 %(AdditionalOptions) - pch.h - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - true - - - true - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cocos/editor-support/cocosbuilder/proj.wp8/libCocosBuilder.vcxproj.filters b/cocos/editor-support/cocosbuilder/proj.wp8/libCocosBuilder.vcxproj.filters deleted file mode 100644 index 04df7aa8c6..0000000000 --- a/cocos/editor-support/cocosbuilder/proj.wp8/libCocosBuilder.vcxproj.filters +++ /dev/null @@ -1,170 +0,0 @@ - - - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - \ No newline at end of file diff --git a/cocos/editor-support/cocosbuilder/proj.wp8/libCocosBuilder.vcxproj.user b/cocos/editor-support/cocosbuilder/proj.wp8/libCocosBuilder.vcxproj.user deleted file mode 100644 index 17f726ed50..0000000000 --- a/cocos/editor-support/cocosbuilder/proj.wp8/libCocosBuilder.vcxproj.user +++ /dev/null @@ -1,6 +0,0 @@ - - - - true - - \ No newline at end of file diff --git a/cocos/editor-support/cocosbuilder/proj.wp8/pch.h b/cocos/editor-support/cocosbuilder/proj.wp8/pch.h deleted file mode 100644 index 4c3b8cde28..0000000000 --- a/cocos/editor-support/cocosbuilder/proj.wp8/pch.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include "cocos2d.h" -#include "cocos-ext.h" -#include "ExtensionMacros.h" diff --git a/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimeline.cpp b/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimeline.cpp index 79d6759484..feb015a36a 100644 --- a/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimeline.cpp +++ b/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimeline.cpp @@ -210,6 +210,7 @@ void foreachNodeDescendant(Node* parent, tCallBack callback) void ActionTimeline::startWithTarget(Node *target) { Action::startWithTarget(target); + this->setTag(target->getTag()); foreachNodeDescendant(target, [this, target](Node* child) diff --git a/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimelineCache.cpp b/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimelineCache.cpp index 312aee2b6d..d83ddce808 100644 --- a/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimelineCache.cpp +++ b/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimelineCache.cpp @@ -23,7 +23,7 @@ THE SOFTWARE. ****************************************************************************/ #include "CCActionTimelineCache.h" -#include "CCNodeReader.h" +#include "CSLoader.h" #include "CCFrame.h" #include "CCTimeLine.h" #include "CCActionTimeline.h" @@ -31,6 +31,11 @@ THE SOFTWARE. #include "2d/CCSpriteFrameCache.h" #include "2d/CCSpriteFrame.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" + +#include + using namespace cocos2d; namespace cocostudio { @@ -120,7 +125,28 @@ void ActionTimelineCache::removeAction(const std::string& fileName) } } -ActionTimeline* ActionTimelineCache::createAction(const std::string& fileName) +ActionTimeline* ActionTimelineCache::createAction(const std::string& filename) +{ + std::string path = filename; + size_t pos = path.find_last_of('.'); + std::string suffix = path.substr(pos + 1, path.length()); + CCLOG("suffix = %s", suffix.c_str()); + + ActionTimelineCache* cache = ActionTimelineCache::getInstance(); + + if (suffix == "csb") + { + return cache->createActionFromProtocolBuffers(filename); + } + else if (suffix == "json" || suffix == "ExportJson") + { + return cache->createActionFromJson(filename); + } + + return nullptr; +} + +ActionTimeline* ActionTimelineCache::createActionFromJson(const std::string& fileName) { ActionTimeline* action = _animationActions.at(fileName); if (action == nullptr) @@ -174,6 +200,56 @@ ActionTimeline* ActionTimelineCache::loadAnimationActionWithContent(const std::s return action; } + +ActionTimeline* ActionTimelineCache::createActionFromProtocolBuffers(const std::string &fileName) +{ + ActionTimeline* action = _animationActions.at(fileName); + if (action == NULL) + { + action = loadAnimationActionWithFileFromProtocolBuffers(fileName); + } + return action->clone(); +} + +ActionTimeline* ActionTimelineCache::loadAnimationActionWithFileFromProtocolBuffers(const std::string &fileName) +{ + // if already exists an action with filename, then return this action + ActionTimeline* action = _animationActions.at(fileName); + if (action) + return action; + + std::string path = fileName; + + std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName.c_str()); + Data content = FileUtils::getInstance()->getDataFromFile(fullPath); + protocolbuffers::CSParseBinary gpbwp; + if (!gpbwp.ParseFromArray(content.getBytes(), (int)content.getSize())) + { + return NULL; + } + + + const protocolbuffers::NodeAction& actionProtobuf = gpbwp.action(); + + action = ActionTimeline::create(); + + action->setDuration(actionProtobuf.duration()); + action->setTimeSpeed((actionProtobuf.has_speed()) ? actionProtobuf.speed() : 1.0f); + + int timelineLength = actionProtobuf.timelines_size(); + for (int i = 0; i < timelineLength; i++) + { + const protocolbuffers::TimeLine& timelineProtobuf = actionProtobuf.timelines(i); + Timeline* timeline = loadTimelineFromProtocolBuffers(timelineProtobuf); + + if (timeline) + action->addTimeline(timeline); + } + + _animationActions.insert(fileName, action); + + return action; +} Timeline* ActionTimelineCache::loadTimeline(const rapidjson::Value& json) @@ -342,7 +418,7 @@ Frame* ActionTimelineCache::loadTextureFrame(const rapidjson::Value& json) SpriteFrame* spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName(path); if(spriteFrame == nullptr) { - std::string jsonPath = NodeReader::getInstance()->getJsonPath(); + std::string jsonPath = CSLoader::getInstance()->getJsonPath(); path = jsonPath + texture; } @@ -372,6 +448,816 @@ Frame* ActionTimelineCache::loadZOrderFrame(const rapidjson::Value& json) return frame; } + +Timeline* ActionTimelineCache::loadTimelineFromProtocolBuffers(const protocolbuffers::TimeLine &timelineProtobuf) +{ + Timeline* timeline = NULL; + + // get frame type + const char* frameType = timelineProtobuf.frametype().c_str(); + if(frameType == NULL) + return NULL; + + CCLOG("frameType = %s", frameType); + + if(frameType) + { + timeline = Timeline::create(); + + int actionTag = timelineProtobuf.actiontag(); + timeline->setActionTag(actionTag); + + + int length = timelineProtobuf.frames_size(); + for (int i = 0; i < length; i++) + { + const protocolbuffers::Frame& frameProtobuf = timelineProtobuf.frames(i); + + Frame* frame = NULL; + + if (strcmp(FrameType_VisibleFrame, frameType) == 0) + { + const protocolbuffers::TimeLineBoolFrame& visibleFrame = frameProtobuf.visibleframe(); + frame = loadVisibleFrameFromProtocolBuffers(visibleFrame); + } + else if (strcmp(FrameType_PositionFrame, frameType) == 0) + { + const protocolbuffers::TimeLinePointFrame& positionFrame = frameProtobuf.positionframe(); + frame = loadPositionFrameFromProtocolBuffers(positionFrame); + } + else if (strcmp(FrameType_ScaleFrame, frameType) == 0) + { + const protocolbuffers::TimeLinePointFrame& scaleFrame = frameProtobuf.scaleframe(); + frame = loadScaleFrameFromProtocolBuffers(scaleFrame); + } + else if (strcmp(FrameType_RotationSkewFrame, frameType) == 0) + { + const protocolbuffers::TimeLinePointFrame& rotationSkewFrame = frameProtobuf.rotationskewframe(); + frame = loadRotationSkewFrameFromProtocolBuffers(rotationSkewFrame); + } + else if (strcmp(FrameType_AnchorFrame, frameType) == 0) + { + const protocolbuffers::TimeLinePointFrame& anchorFrame = frameProtobuf.anchorpointframe(); + frame = loadAnchorPointFrameFromProtocolBuffers(anchorFrame); + } + else if (strcmp(FrameType_ColorFrame, frameType) == 0) + { + const protocolbuffers::TimeLineColorFrame& colorFrame = frameProtobuf.colorframe(); + frame = loadColorFrameFromProtocolBuffers(colorFrame); + } + else if (strcmp(FrameType_TextureFrame, frameType) == 0) + { + const protocolbuffers::TimeLineTextureFrame& textureFrame = frameProtobuf.textureframe(); + frame = loadTextureFrameFromProtocolBuffers(textureFrame); + } + else if (strcmp(FrameType_EventFrame, frameType) == 0) + { + const protocolbuffers::TimeLineStringFrame& eventFrame = frameProtobuf.eventframe(); + frame = loadEventFrameFromProtocolBuffers(eventFrame); + } + else if (strcmp(FrameType_ZOrderFrame, frameType) == 0) + { + const protocolbuffers::TimeLineIntFrame& zOrderFrame = frameProtobuf.zorderframe(); + frame = loadZOrderFrameFromProtocolBuffers(zOrderFrame); + } + + timeline->addFrame(frame); + } + } + + return timeline; +} + +Frame* ActionTimelineCache::loadVisibleFrameFromProtocolBuffers(const protocolbuffers::TimeLineBoolFrame &frameProtobuf) +{ + VisibleFrame* frame = VisibleFrame::create(); + + bool visible = frameProtobuf.value(); + frame->setVisible(visible); + + CCLOG("visible = %d", visible); + + int frameIndex = frameProtobuf.has_frameindex() ? frameProtobuf.frameindex() : 0; + frame->setFrameIndex(frameIndex); + + bool tween = (frameProtobuf.has_tween() ? frameProtobuf.tween() : false); + frame->setTween(tween); + + return frame; +} + +Frame* ActionTimelineCache::loadPositionFrameFromProtocolBuffers(const protocolbuffers::TimeLinePointFrame &frameProtobuf) +{ + PositionFrame* frame = PositionFrame::create(); + + float x = frameProtobuf.x(); + float y = frameProtobuf.y(); + frame->setPosition(Vec2(x,y)); + + CCLOG("x = %f", x); + CCLOG("y = %f", y); + + int frameIndex = frameProtobuf.has_frameindex() ? frameProtobuf.frameindex() : 0; + frame->setFrameIndex(frameIndex); + + bool tween = (frameProtobuf.has_tween() ? frameProtobuf.tween() : false); + frame->setTween(tween); + + return frame; +} + +Frame* ActionTimelineCache::loadScaleFrameFromProtocolBuffers(const protocolbuffers::TimeLinePointFrame &frameProtobuf) +{ + ScaleFrame* frame = ScaleFrame::create(); + + float scalex = frameProtobuf.x(); + float scaley = frameProtobuf.y(); + + frame->setScaleX(scalex); + frame->setScaleY(scaley); + + CCLOG("scalex = %f", scalex); + CCLOG("scaley = %f", scaley); + + int frameIndex = frameProtobuf.has_frameindex() ? frameProtobuf.frameindex() : 0; + frame->setFrameIndex(frameIndex); + + bool tween = (frameProtobuf.has_tween() ? frameProtobuf.tween() : false); + frame->setTween(tween); + + return frame; +} + +Frame* ActionTimelineCache::loadRotationSkewFrameFromProtocolBuffers(const protocolbuffers::TimeLinePointFrame &frameProtobuf) +{ + RotationSkewFrame* frame = RotationSkewFrame::create(); + + float skewx = frameProtobuf.x(); + float skewy = frameProtobuf.y(); + + frame->setSkewX(skewx); + frame->setSkewY(skewy); + + int frameIndex = frameProtobuf.has_frameindex() ? frameProtobuf.frameindex() : 0; + frame->setFrameIndex(frameIndex); + + bool tween = (frameProtobuf.has_tween() ? frameProtobuf.tween() : false); + frame->setTween(tween); + + return frame; +} + +Frame* ActionTimelineCache::loadAnchorPointFrameFromProtocolBuffers(const protocolbuffers::TimeLinePointFrame &frameProtobuf) +{ + AnchorPointFrame* frame = AnchorPointFrame::create(); + + float anchorx = frameProtobuf.x(); + float anchory = frameProtobuf.y(); + + frame->setAnchorPoint(Vec2(anchorx, anchory)); + + CCLOG("anchorx = %f", anchorx); + CCLOG("anchory = %f", anchory); + + int frameIndex = frameProtobuf.has_frameindex() ? frameProtobuf.frameindex() : 0; + frame->setFrameIndex(frameIndex); + + bool tween = (frameProtobuf.has_tween() ? frameProtobuf.tween() : false); + frame->setTween(tween); + + return frame; +} + +Frame* ActionTimelineCache::loadColorFrameFromProtocolBuffers(const protocolbuffers::TimeLineColorFrame &frameProtobuf) +{ + ColorFrame* frame = ColorFrame::create(); + + GLubyte alpha = (GLubyte)frameProtobuf.alpha(); + GLubyte red = (GLubyte)frameProtobuf.red(); + GLubyte green = (GLubyte)frameProtobuf.green(); + GLubyte blue = (GLubyte)frameProtobuf.blue(); + + frame->setAlpha(alpha); + frame->setColor(Color3B(red, green, blue)); + + CCLOG("alpha = %d", alpha); + CCLOG("red = %d", red); + CCLOG("green = %d", green); + CCLOG("blue = %d", blue); + + int frameIndex = frameProtobuf.has_frameindex() ? frameProtobuf.frameindex() : 0; + frame->setFrameIndex(frameIndex); + + bool tween = (frameProtobuf.has_tween() ? frameProtobuf.tween() : false); + frame->setTween(tween); + + return frame; +} + +Frame* ActionTimelineCache::loadTextureFrameFromProtocolBuffers(const protocolbuffers::TimeLineTextureFrame &frameProtobuf) +{ + TextureFrame* frame = TextureFrame::create(); + + const char* texture = frameProtobuf.filepath().c_str(); + + if (texture != NULL) + frame->setTextureName(texture); + + CCLOG("texture = %s", texture); + + int frameIndex = frameProtobuf.has_frameindex() ? frameProtobuf.frameindex() : 0; + frame->setFrameIndex(frameIndex); + + bool tween = (frameProtobuf.has_tween() ? frameProtobuf.tween() : false); + frame->setTween(tween); + + return frame; +} + +Frame* ActionTimelineCache::loadEventFrameFromProtocolBuffers(const protocolbuffers::TimeLineStringFrame &frameProtobuf) +{ + EventFrame* frame = EventFrame::create(); + + const char* evnt = frameProtobuf.value().c_str(); + + if (evnt != NULL) + frame->setEvent(evnt); + + CCLOG("evnt = %s", evnt); + + int frameIndex = frameProtobuf.has_frameindex() ? frameProtobuf.frameindex() : 0; + frame->setFrameIndex(frameIndex); + + bool tween = (frameProtobuf.has_tween() ? frameProtobuf.tween() : false); + frame->setTween(tween); + + return frame; +} + +Frame* ActionTimelineCache::loadZOrderFrameFromProtocolBuffers(const protocolbuffers::TimeLineIntFrame &frameProtobuf) +{ + ZOrderFrame* frame = ZOrderFrame::create(); + + int zorder = frameProtobuf.value(); + frame->setZOrder(zorder); + + CCLOG("zorder = %d", zorder); + + int frameIndex = frameProtobuf.has_frameindex() ? frameProtobuf.frameindex() : 0; + frame->setFrameIndex(frameIndex); + + bool tween = (frameProtobuf.has_tween() ? frameProtobuf.tween() : false); + frame->setTween(tween); + + return frame; +} + +ActionTimeline* ActionTimelineCache::createActionFromXML(const std::string &fileName) +{ + ActionTimeline* action = _animationActions.at(fileName); + if (action == nullptr) + { + action = loadAnimationActionWithFileFromXML(fileName); + } + return action->clone(); +} + +ActionTimeline* ActionTimelineCache::loadAnimationActionWithFileFromXML(const std::string &fileName) +{ + // if already exists an action with filename, then return this action + ActionTimeline* action = _animationActions.at(fileName); + if (action) + return action; + + // Read content from file + // xml read + std::string fullpath = FileUtils::getInstance()->fullPathForFilename(fileName).c_str(); + ssize_t size; + std::string content =(char*)FileUtils::getInstance()->getFileData(fullpath, "r", &size); + + // xml parse + tinyxml2::XMLDocument* document = new tinyxml2::XMLDocument(); + document->Parse(content.c_str()); + + const tinyxml2::XMLElement* rootElement = document->RootElement();// Root + CCLOG("rootElement name = %s", rootElement->Name()); + + const tinyxml2::XMLElement* element = rootElement->FirstChildElement(); + + bool createEnabled = false; + std::string rootType = ""; + + while (element) + { + CCLOG("entity name = %s", element->Name()); + + if (strcmp("Content", element->Name()) == 0) + { + const tinyxml2::XMLAttribute* attribute = element->FirstAttribute(); + + if (!attribute) + { + createEnabled = true; + } + } + + if (createEnabled) + { + break; + } + + const tinyxml2::XMLElement* child = element->FirstChildElement(); + if (child) + { + element = child; + } + else + { + element = element->NextSiblingElement(); + } + } + + + // serialize + if (createEnabled) + { + const tinyxml2::XMLElement* child = element->FirstChildElement(); + + while (child) + { + std::string name = child->Name(); + + if (name == "Animation") // action + { + const tinyxml2::XMLElement* animation = child; + action = loadActionTimelineFromXML(animation); + } + + child = child->NextSiblingElement(); + } + } + + return action; +} + +ActionTimeline* ActionTimelineCache::loadActionTimelineFromXML(const tinyxml2::XMLElement *animationElement) +{ + ActionTimeline* action = ActionTimeline::create(); + CCLOG("animationElement name = %s", animationElement->Name()); + + // ActionTimeline + const tinyxml2::XMLAttribute* attribute = animationElement->FirstAttribute(); + + // attibutes + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Duration") + { + action->setDuration(atoi(value.c_str())); + } + else if (name == "Speed") + { + action->setTimeSpeed(atof(value.c_str())); + } + + attribute = attribute->Next(); + } + + // all Timeline + const tinyxml2::XMLElement* timelineElement = animationElement->FirstChildElement(); + while (timelineElement) + { + Timeline* timeline = loadTimelineFromXML(timelineElement); + if (timeline) + { + action->addTimeline(timeline); + } + + timelineElement = timelineElement->NextSiblingElement(); + } + + return action; +} + +Timeline* ActionTimelineCache::loadTimelineFromXML(const tinyxml2::XMLElement *timelineElement) +{ + Timeline* timeline = nullptr; + + // TimelineData attrsibutes + int actionTag = 0; + std::string frameType = ""; + const tinyxml2::XMLAttribute* attribute = timelineElement->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ActionTag") + { + actionTag = atoi(value.c_str()); + } + else if (name == "FrameType") + { + frameType = value; + } + + attribute = attribute->Next(); + } + + if (frameType != "") + { + timeline = Timeline::create(); + timeline->setActionTag(actionTag); + } + + // all Frame + const tinyxml2::XMLElement* frameElement = timelineElement->FirstChildElement(); + while (frameElement) + { + Frame* frame = nullptr; + + if (frameType == FrameType_VisibleFrame) + { + frame = loadVisibleFrameFromXML(frameElement); + } + else if (frameType == FrameType_PositionFrame) + { + frame = loadPositionFrameFromXML(frameElement); + } + else if (frameType == FrameType_ScaleFrame) + { + frame = loadScaleFrameFromXML(frameElement); + } + else if (frameType == FrameType_RotationSkewFrame) + { + frame = loadRotationSkewFrameFromXML(frameElement); + } + else if (frameType == FrameType_AnchorFrame) + { + frame = loadAnchorPointFrameFromXML(frameElement); + } + else if (frameType == FrameType_ColorFrame) + { + frame = loadColorFrameFromXML(frameElement); + } + else if (frameType == FrameType_TextureFrame) + { + frame = loadTextureFrameFromXML(frameElement); + } + else if (frameType == FrameType_EventFrame) + { + frame = loadEventFrameFromXML(frameElement); + } + else if (frameType == FrameType_ZOrderFrame) + { + frame = loadZOrderFrameFromXML(frameElement); + } + + if (frame) + { + timeline->addFrame(frame); + } + + frameElement = frameElement->NextSiblingElement(); + } + + return timeline; +} + +Frame* ActionTimelineCache::loadVisibleFrameFromXML(const tinyxml2::XMLElement *frameElement) +{ + VisibleFrame* frame = VisibleFrame::create(); + + frame->setTween(true); + + const tinyxml2::XMLAttribute* attribute = frameElement->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Value") + { + frame->setVisible((value == "True") ? true : false); + } + else if (name == "FrameIndex") + { + frame->setFrameIndex(atoi(value.c_str())); + } + else if (name == "Tween") + { + frame->setTween((value == "True") ? true : false); + } + + attribute = attribute->Next(); + } + + return frame; +} + +Frame* ActionTimelineCache::loadPositionFrameFromXML(const tinyxml2::XMLElement *frameElement) +{ + PositionFrame* frame = PositionFrame::create(); + + frame->setTween(true); + + const tinyxml2::XMLAttribute* attribute = frameElement->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + frame->setX(atof(value.c_str())); + } + else if (name == "Y") + { + frame->setY(atof(value.c_str())); + } + else if (name == "FrameIndex") + { + frame->setFrameIndex(atoi(value.c_str())); + } + else if (name == "Tween") + { + frame->setTween((value == "True") ? true : false); + } + + attribute = attribute->Next(); + } + + return frame; +} + +Frame* ActionTimelineCache::loadScaleFrameFromXML(const tinyxml2::XMLElement *frameElement) +{ + ScaleFrame* frame = ScaleFrame::create(); + + frame->setTween(true); + + const tinyxml2::XMLAttribute* attribute = frameElement->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + frame->setScaleX(atof(value.c_str())); + } + else if (name == "Y") + { + frame->setScaleY(atof(value.c_str())); + } + else if (name == "FrameIndex") + { + frame->setFrameIndex(atoi(value.c_str())); + } + else if (name == "Tween") + { + frame->setTween((value == "True") ? true : false); + } + + attribute = attribute->Next(); + } + + return frame; +} + +Frame* ActionTimelineCache::loadRotationSkewFrameFromXML(const tinyxml2::XMLElement *frameElement) +{ + RotationSkewFrame* frame = RotationSkewFrame::create(); + + frame->setTween(true); + + const tinyxml2::XMLAttribute* attribute = frameElement->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + frame->setSkewX(atof(value.c_str())); + } + else if (name == "Y") + { + frame->setSkewY(atof(value.c_str())); + } + else if (name == "FrameIndex") + { + frame->setFrameIndex(atoi(value.c_str())); + } + else if (name == "Tween") + { + frame->setTween((value == "True") ? true : false); + } + + attribute = attribute->Next(); + } + + return frame; +} + +Frame* ActionTimelineCache::loadAnchorPointFrameFromXML(const tinyxml2::XMLElement *frameElement) +{ + AnchorPointFrame* frame = AnchorPointFrame::create(); + + float anchor_x = 0.5f, anchor_y = 0.5f; + + frame->setTween(true); + + const tinyxml2::XMLAttribute* attribute = frameElement->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + anchor_x = atof(value.c_str()); + } + else if (name == "Y") + { + anchor_y = atof(value.c_str()); + } + else if (name == "FrameIndex") + { + frame->setFrameIndex(atoi(value.c_str())); + } + else if (name == "Tween") + { + frame->setTween((value == "True") ? true : false); + } + + attribute = attribute->Next(); + } + + frame->setAnchorPoint(Vec2(anchor_x, anchor_y)); + + return frame; +} + +Frame* ActionTimelineCache::loadColorFrameFromXML(const tinyxml2::XMLElement *frameElement) +{ + ColorFrame* frame = ColorFrame::create(); + + int red = 255, green = 255, blue = 255; + + frame->setTween(true); + + const tinyxml2::XMLAttribute* attribute = frameElement->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "FrameIndex") + { + frame->setFrameIndex(atoi(value.c_str())); + } + else if (name == "Alpha") + { + frame->setAlpha(atoi(value.c_str())); + } + else if (name == "Tween") + { + frame->setTween((value == "True") ? true : false); + } + + attribute = attribute->Next(); + } + + // color + const tinyxml2::XMLElement* child = frameElement->FirstChildElement(); + while (child) + { + attribute = child->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + red = atoi(value.c_str()); + } + else if (name == "G") + { + green = atoi(value.c_str()); + } + else if (name == "B") + { + blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + + child = child->NextSiblingElement(); + } + + frame->setColor(Color3B(red, green, blue)); + + return frame; +} + +Frame* ActionTimelineCache::loadTextureFrameFromXML(const tinyxml2::XMLElement *frameElement) +{ + TextureFrame* frame = TextureFrame::create(); + + frame->setTween(true); + + const tinyxml2::XMLAttribute* attribute = frameElement->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") // to be gonna modify + { + frame->setTextureName(value); + } + else if (name == "FrameIndex") + { + frame->setFrameIndex(atoi(value.c_str())); + } + else if (name == "Tween") + { + frame->setTween((value == "True") ? true : false); + } + + attribute = attribute->Next(); + } + + return frame; +} + +Frame* ActionTimelineCache::loadEventFrameFromXML(const tinyxml2::XMLElement *frameElement) +{ + EventFrame* frame = EventFrame::create(); + + frame->setTween(true); + + const tinyxml2::XMLAttribute* attribute = frameElement->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "EventStr") // to be gonna modify + { + frame->setEvent(value); + } + else if (name == "FrameIndex") + { + frame->setFrameIndex(atoi(value.c_str())); + } + else if (name == "Tween") + { + frame->setTween((value == "True") ? true : false); + } + + attribute = attribute->Next(); + } + + return frame; +} + +Frame* ActionTimelineCache::loadZOrderFrameFromXML(const tinyxml2::XMLElement *frameElement) +{ + ZOrderFrame* frame = ZOrderFrame::create(); + + frame->setTween(true); + + const tinyxml2::XMLAttribute* attribute = frameElement->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "zorder") // to be gonna modify + { + frame->setZOrder(atoi(value.c_str())); + } + else if (name == "FrameIndex") + { + frame->setFrameIndex(atoi(value.c_str())); + } + else if (name == "Tween") + { + frame->setTween((value == "True") ? true : false); + } + + attribute = attribute->Next(); + } + + return frame; +} } } diff --git a/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimelineCache.h b/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimelineCache.h index 43953e7d75..ddb0e1691b 100644 --- a/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimelineCache.h +++ b/cocos/editor-support/cocostudio/ActionTimeline/CCActionTimelineCache.h @@ -32,6 +32,24 @@ THE SOFTWARE. #include "CCTimelineMacro.h" #include "cocostudio/CocosStudioExport.h" +namespace protocolbuffers +{ + class NodeAction; + class TimeLine; + class Frame; + class TimeLineBoolFrame; + class TimeLinePointFrame; + class TimeLineIntFrame; + class TimeLineColorFrame; + class TimeLineTextureFrame; + class TimeLineStringFrame; +} + +namespace tinyxml2 +{ + class XMLElement; +} + NS_TIMELINE_BEGIN class ActionTimeline; @@ -53,12 +71,22 @@ public: /** Remove action with filename, and also remove other resource relate with this file */ void removeAction(const std::string& fileName); + + static ActionTimeline* createAction(const std::string& fileName); /** Clone a action with the specified name from the container. */ - ActionTimeline* createAction(const std::string& fileName); + ActionTimeline* createActionFromJson(const std::string& fileName); ActionTimeline* loadAnimationActionWithFile(const std::string& fileName); ActionTimeline* loadAnimationActionWithContent(const std::string&fileName, const std::string& content); + + ActionTimeline* createActionFromProtocolBuffers(const std::string& fileName); + ActionTimeline* loadAnimationActionWithFileFromProtocolBuffers(const std::string& fileName); + + ActionTimeline* createActionFromXML(const std::string& fileName); + ActionTimeline* loadAnimationActionWithFileFromXML(const std::string& fileName); + ActionTimeline* loadActionTimelineFromXML(const tinyxml2::XMLElement* animationElement); + protected: Timeline* loadTimeline(const rapidjson::Value& json); @@ -75,6 +103,30 @@ protected: Frame* loadTextureFrame (const rapidjson::Value& json); Frame* loadEventFrame (const rapidjson::Value& json); Frame* loadZOrderFrame (const rapidjson::Value& json); + + Timeline* loadTimelineFromProtocolBuffers(const protocolbuffers::TimeLine& timelineProtobuf); + + Frame* loadVisibleFrameFromProtocolBuffers (const protocolbuffers::TimeLineBoolFrame& frameProtobuf); + Frame* loadPositionFrameFromProtocolBuffers (const protocolbuffers::TimeLinePointFrame& frameProtobuf); + Frame* loadScaleFrameFromProtocolBuffers (const protocolbuffers::TimeLinePointFrame& frameProtobuf); + Frame* loadRotationSkewFrameFromProtocolBuffers(const protocolbuffers::TimeLinePointFrame& frameProtobuf); + Frame* loadAnchorPointFrameFromProtocolBuffers (const protocolbuffers::TimeLinePointFrame& frameProtobuf); + Frame* loadColorFrameFromProtocolBuffers (const protocolbuffers::TimeLineColorFrame& frameProtobuf); + Frame* loadTextureFrameFromProtocolBuffers (const protocolbuffers::TimeLineTextureFrame& frameProtobuf); + Frame* loadEventFrameFromProtocolBuffers (const protocolbuffers::TimeLineStringFrame& frameProtobuf); + Frame* loadZOrderFrameFromProtocolBuffers (const protocolbuffers::TimeLineIntFrame& frameProtobuf); + + Timeline* loadTimelineFromXML(const tinyxml2::XMLElement* timelineElement); + + Frame* loadVisibleFrameFromXML (const tinyxml2::XMLElement* frameElement); + Frame* loadPositionFrameFromXML (const tinyxml2::XMLElement* frameElement); + Frame* loadScaleFrameFromXML (const tinyxml2::XMLElement* frameElement); + Frame* loadRotationSkewFrameFromXML(const tinyxml2::XMLElement* frameElement); + Frame* loadAnchorPointFrameFromXML (const tinyxml2::XMLElement* frameElement); + Frame* loadColorFrameFromXML (const tinyxml2::XMLElement* frameElement); + Frame* loadTextureFrameFromXML (const tinyxml2::XMLElement* frameElement); + Frame* loadEventFrameFromXML (const tinyxml2::XMLElement* frameElement); + Frame* loadZOrderFrameFromXML (const tinyxml2::XMLElement* frameElement); protected: diff --git a/cocos/editor-support/cocostudio/ActionTimeline/CSLoader.cpp b/cocos/editor-support/cocostudio/ActionTimeline/CSLoader.cpp new file mode 100644 index 0000000000..a505eb3f4b --- /dev/null +++ b/cocos/editor-support/cocostudio/ActionTimeline/CSLoader.cpp @@ -0,0 +1,2180 @@ +/**************************************************************************** + Copyright (c) 2013 cocos2d-x.org + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "CSLoader.h" +#include "CCActionTimelineCache.h" +#include "CCActionTimeline.h" +#include "../CCSGUIReader.h" +#include "../../cocos/ui/CocosGUI.h" +#include "cocostudio/CocoStudio.h" + +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" + +#include + +using namespace cocos2d::ui; +using namespace cocostudio; +using namespace cocostudio::timeline; + +NS_CC_BEGIN + +static const char* ClassName_Node = "Node"; +static const char* ClassName_SubGraph = "SubGraph"; +static const char* ClassName_Sprite = "Sprite"; +static const char* ClassName_Particle = "Particle"; +static const char* ClassName_TMXTiledMap = "TMXTiledMap"; + +static const char* ClassName_Panel = "Panel"; +static const char* ClassName_Button = "Button"; +static const char* ClassName_CheckBox = "CheckBox"; +static const char* ClassName_ImageView = "ImageView"; +static const char* ClassName_TextAtlas = "TextAtlas"; +static const char* ClassName_LabelAtlas = "LabelAtlas"; +static const char* ClassName_LabelBMFont= "LabelBMFont"; +static const char* ClassName_TextBMFont = "TextBMFont"; +static const char* ClassName_Text = "Text"; +static const char* ClassName_LoadingBar = "LoadingBar"; +static const char* ClassName_TextField = "TextField"; +static const char* ClassName_Slider = "Slider"; +static const char* ClassName_Layout = "Layout"; +static const char* ClassName_ScrollView = "ScrollView"; +static const char* ClassName_ListView = "ListView"; +static const char* ClassName_PageView = "PageView"; +static const char* ClassName_Widget = "Widget"; +static const char* ClassName_Label = "Label"; + +static const char* ClassName_ComAudio = "ComAudio"; + + +static const char* NODE = "nodeTree"; +static const char* CHILDREN = "children"; +static const char* CLASSNAME = "classname"; +static const char* FILE_PATH = "fileName"; +static const char* PLIST_FILE = "plistFile"; +static const char* TMX_FILE = "tmxFile"; +static const char* TMX_STRING = "tmxString"; +static const char* RESOURCE_PATH = "resourcePath"; + +static const char* COMPONENTS = "components"; +static const char* COMPONENT_TYPE = "componentType"; +static const char* COMPONENT_NAME = "componentName"; +static const char* COMPONENT_ENABLED = "componentEnabled"; +static const char* COMPONENT_AUDIO_FILE_PATH = "comAudioFilePath"; +static const char* COMPONENT_LOOP = "comAudioloop"; + +static const char* TAG = "tag"; +static const char* ACTION_TAG = "actionTag"; + +static const char* OPTIONS = "options"; + +static const char* WIDTH = "width"; +static const char* HEIGHT = "height"; +static const char* X = "x"; +static const char* Y = "y"; +static const char* SCALE_X = "scaleX"; +static const char* SCALE_Y = "scaleY"; +static const char* SKEW_X = "skewX"; +static const char* SKEW_Y = "skewY"; +static const char* ROTATION = "rotation"; +static const char* ROTATION_SKEW_X = "rotationSkewX"; +static const char* ROTATION_SKEW_Y = "rotationSkewY"; +static const char* ANCHOR_X = "anchorPointX"; +static const char* ANCHOR_Y = "anchorPointY"; +static const char* ALPHA = "opacity"; +static const char* RED = "colorR"; +static const char* GREEN = "colorG"; +static const char* BLUE = "colorB"; +static const char* ZORDER = "ZOrder"; +static const char* PARTICLE_NUM = "particleNum"; +static const char* FLIPX = "flipX"; +static const char* FLIPY = "flipY"; +static const char* VISIBLE = "visible"; + +static const char* TEXTURES = "textures"; +static const char* TEXTURES_PNG = "texturesPng"; + +static const char* MONO_COCOS2D_VERSION = "cocos2dVersion"; + + +// CSLoader +static CSLoader* _sharedCSLoader = nullptr; + +CSLoader* CSLoader::getInstance() +{ + if (! _sharedCSLoader) + { + _sharedCSLoader = new CSLoader(); + _sharedCSLoader->init(); + } + + return _sharedCSLoader; +} + +void CSLoader::destroyInstance() +{ + CC_SAFE_DELETE(_sharedCSLoader); + ActionTimelineCache::destroyInstance(); +} + +CSLoader::CSLoader() +: _recordJsonPath(true) +, _jsonPath("") +, _recordProtocolBuffersPath(true) +, _protocolBuffersPath("") +, _monoCocos2dxVersion("") +{ +} + +void CSLoader::purge() +{ +} + +void CSLoader::init() +{ + using namespace std::placeholders; + + _funcs.insert(Pair(ClassName_Node, std::bind(&CSLoader::loadSimpleNode, this, _1))); + _funcs.insert(Pair(ClassName_SubGraph, std::bind(&CSLoader::loadSubGraph, this, _1))); + _funcs.insert(Pair(ClassName_Sprite, std::bind(&CSLoader::loadSprite, this, _1))); + _funcs.insert(Pair(ClassName_Particle, std::bind(&CSLoader::loadParticle, this, _1))); + _funcs.insert(Pair(ClassName_TMXTiledMap, std::bind(&CSLoader::loadTMXTiledMap, this, _1))); + _funcs.insert(Pair(ClassName_LabelAtlas,std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_LabelBMFont,std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_Panel, std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_Button, std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_CheckBox, std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_ImageView, std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_TextAtlas, std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_TextBMFont,std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_Text, std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_LoadingBar,std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_TextField, std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_Slider, std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_Layout, std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_ScrollView,std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_ListView, std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_PageView, std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_Widget, std::bind(&CSLoader::loadWidget, this, _1))); + _funcs.insert(Pair(ClassName_Label, std::bind(&CSLoader::loadWidget, this, _1))); + + _componentFuncs.insert(ComponentPair(ClassName_ComAudio, std::bind(&CSLoader::loadComAudio, this, _1))); + +} + +Node* CSLoader::createNode(const std::string& filename) +{ + std::string path = filename; + size_t pos = path.find_last_of('.'); + std::string suffix = path.substr(pos + 1, path.length()); + CCLOG("suffix = %s", suffix.c_str()); + + CSLoader* load = CSLoader::getInstance(); + + if (suffix == "csb") + { + return load->createNodeFromProtocolBuffers(filename); + } + else if (suffix == "json" || suffix == "ExportJson") + { + return load->createNodeFromJson(filename); + } + + return nullptr; +} + +ActionTimeline* CSLoader::createTimeline(const std::string &filename) +{ + std::string path = filename; + size_t pos = path.find_last_of('.'); + std::string suffix = path.substr(pos + 1, path.length()); + CCLOG("suffix = %s", suffix.c_str()); + + ActionTimelineCache* cache = ActionTimelineCache::getInstance(); + + if (suffix == "csb") + { + return cache->createActionFromProtocolBuffers(filename); + } + else if (suffix == "json" || suffix == "ExportJson") + { + return cache->createActionFromJson(filename); + } + + return nullptr; +} + +Node* CSLoader::createNodeFromJson(const std::string& filename) +{ + if (_recordJsonPath) + { + std::string jsonPath = filename.substr(0, filename.find_last_of('/') + 1); + GUIReader::getInstance()->setFilePath(jsonPath); + + _jsonPath = jsonPath; + } + else + { + GUIReader::getInstance()->setFilePath(""); + _jsonPath = ""; + } + + Node* node = loadNodeWithFile(filename); + + return node; +} + +Node* CSLoader::loadNodeWithFile(const std::string& fileName) +{ + // Read content from file + std::string contentStr = FileUtils::getInstance()->getStringFromFile(fileName); + + Node* node = loadNodeWithContent(contentStr); + + // Load animation data from file + ActionTimelineCache::getInstance()->loadAnimationActionWithContent(fileName, contentStr); + + return node; +} + +Node* CSLoader::loadNodeWithContent(const std::string& content) +{ + rapidjson::Document doc; + doc.Parse<0>(content.c_str()); + if (doc.HasParseError()) + { + CCLOG("GetParseError %s\n", doc.GetParseError()); + } + + // cocos2dx version mono editor is based on + _monoCocos2dxVersion = DICTOOL->getStringValue_json(doc, MONO_COCOS2D_VERSION, ""); + + // decode plist + int length = DICTOOL->getArrayCount_json(doc, TEXTURES); + + for(int i=0; igetStringValueFromArray_json(doc, TEXTURES, i); + std::string png = DICTOOL->getStringValueFromArray_json(doc, TEXTURES_PNG, i); + plist = _jsonPath + plist; + png = _jsonPath + png; + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(plist, png); + } + + // decode node tree + const rapidjson::Value& subJson = DICTOOL->getSubDictionary_json(doc, NODE); + Node* root = loadNode(subJson); + root->release(); + + return root; +} + +Node* CSLoader::loadNode(const rapidjson::Value& json) +{ + Node* node = nullptr; + std::string nodeType = DICTOOL->getStringValue_json(json, CLASSNAME); + + NodeCreateFunc func = _funcs[nodeType]; + if (func != nullptr) + { + const rapidjson::Value& options = DICTOOL->getSubDictionary_json(json, OPTIONS); + node = func(options); + + // component + if (node) + { + const rapidjson::Value& components = DICTOOL->getSubDictionary_json(options, COMPONENTS); + int componentSize = DICTOOL->getArrayCount_json(options, COMPONENTS, 0); + for (int i = 0; i < componentSize; ++i) + { + const rapidjson::Value &dic = DICTOOL->getSubDictionary_json(components, COMPONENTS, i); + Component* component = loadComponent(dic); + if (component) + { + node->addComponent(component); + } + } + } + } + + if(node) + { + int length = DICTOOL->getArrayCount_json(json, CHILDREN, 0); + for (int i = 0; igetSubDictionary_json(json, CHILDREN, i); + Node* child = loadNode(dic); + if (child) + { + PageView* pageView = dynamic_cast(node); + ListView* listView = dynamic_cast(node); + if (pageView) + { + Layout* layout = dynamic_cast(child); + if (layout) + { + pageView->addPage(layout); + } + } + else if (listView) + { + Widget* widget = dynamic_cast(child); + if (widget) + { + listView->pushBackCustomItem(widget); + } + } + else + { + if (_monoCocos2dxVersion != "3.x") + { + Widget* widget = dynamic_cast(child); + Widget* parent = dynamic_cast(node); + if (widget + && parent + && !dynamic_cast(parent)) + { + if (widget->getPositionType() == ui::Widget::PositionType::PERCENT) + { + widget->setPositionPercent(Vec2(widget->getPositionPercent().x + parent->getAnchorPoint().x, widget->getPositionPercent().y + parent->getAnchorPoint().y)); + widget->setPosition(Vec2(widget->getPositionX() + parent->getAnchorPointInPoints().x, widget->getPositionY() + parent->getAnchorPointInPoints().y)); + } + else + { + Size parentSize = parent->getContentSize(); + widget->setPosition(Vec2(widget->getPositionX() + parentSize.width * parent->getAnchorPoint().x, + widget->getPositionY() + parentSize.height * parent->getAnchorPoint().y)); + } + } + } + + node->addChild(child); + } + child->release(); + } + } + } + else + { + CCLOG("Not supported NodeType: %s", nodeType.c_str()); + } + + return node; +} + +void CSLoader::initNode(Node* node, const rapidjson::Value& json) +{ + float width = DICTOOL->getFloatValue_json(json, WIDTH); + float height = DICTOOL->getFloatValue_json(json, HEIGHT); + float x = DICTOOL->getFloatValue_json(json, X); + float y = DICTOOL->getFloatValue_json(json, Y); + float scalex = DICTOOL->getFloatValue_json(json, SCALE_X, 1); + float scaley = DICTOOL->getFloatValue_json(json, SCALE_Y, 1); + float rotation = DICTOOL->getFloatValue_json(json, ROTATION); + float rotationSkewX = DICTOOL->getFloatValue_json(json, ROTATION_SKEW_X); + float rotationSkewY = DICTOOL->getFloatValue_json(json, ROTATION_SKEW_Y); + float skewx = DICTOOL->getFloatValue_json(json, SKEW_X); + float skewy = DICTOOL->getFloatValue_json(json, SKEW_Y); + float anchorx = DICTOOL->getFloatValue_json(json, ANCHOR_X, 0.5f); + float anchory = DICTOOL->getFloatValue_json(json, ANCHOR_Y, 0.5f); + GLubyte alpha = (GLubyte)DICTOOL->getIntValue_json(json, ALPHA, 255); + GLubyte red = (GLubyte)DICTOOL->getIntValue_json(json, RED, 255); + GLubyte green = (GLubyte)DICTOOL->getIntValue_json(json, GREEN, 255); + GLubyte blue = (GLubyte)DICTOOL->getIntValue_json(json, BLUE, 255); + int zorder = DICTOOL->getIntValue_json(json, ZORDER); + int tag = DICTOOL->getIntValue_json(json, TAG); + int actionTag = DICTOOL->getIntValue_json(json, ACTION_TAG); + bool visible = DICTOOL->getBooleanValue_json(json, VISIBLE); + + if(x != 0 || y != 0) + node->setPosition(Point(x, y)); + if(scalex != 1) + node->setScaleX(scalex); + if(scaley != 1) + node->setScaleY(scaley); + if (rotation != 0) + node->setRotation(rotation); + if(rotationSkewX != 0) + node->setRotationSkewX(rotationSkewX); + if(rotationSkewY != 0) + node->setRotationSkewY(rotationSkewY); + if(skewx != 0) + node->setSkewX(skewx); + if(skewy != 0) + node->setSkewY(skewy); + if(anchorx != 0.5f || anchory != 0.5f) + node->setAnchorPoint(Point(anchorx, anchory)); + if(width != 0 || height != 0) + node->setContentSize(Size(width, height)); + if(zorder != 0) + node->setLocalZOrder(zorder); + if(visible != true) + node->setVisible(visible); + + if(alpha != 255) + { + node->setOpacity(alpha); + } + if(red != 255 || green != 255 || blue != 255) + { + node->setColor(Color3B(red, green, blue)); + } + + + node->setTag(tag); + node->setUserObject(ActionTimelineData::create(actionTag)); +} + +Node* CSLoader::loadSimpleNode(const rapidjson::Value& json) +{ + Node* node = Node::create(); + node->retain(); + initNode(node, json); + + return node; +} + +Node* CSLoader::loadSubGraph(const rapidjson::Value& json) +{ + const char* filePath = DICTOOL->getStringValue_json(json, FILE_PATH); + + Node* node = nullptr; + if (filePath && strcmp("", filePath) != 0) + { + node = createNode(filePath); + } + else + { + node = Node::create(); + } + + node->retain(); + + initNode(node, json); + + return node; +} + +Node* CSLoader::loadSprite(const rapidjson::Value& json) +{ + const char* filePath = DICTOOL->getStringValue_json(json, FILE_PATH); + Sprite *sprite = nullptr; + + if(filePath != nullptr) + { + std::string path = filePath; + + SpriteFrame* spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName(path); + if(!spriteFrame) + { + path = _jsonPath + path; + sprite = Sprite::create(path); + } + else + { + sprite = Sprite::createWithSpriteFrame(spriteFrame); + } + + if(!sprite) + { + sprite = CCSprite::create(); + CCLOG("filePath is empty. Create a sprite with no texture"); + } + } + else + { + sprite = Sprite::create(); + } + + sprite->retain(); + + initNode(sprite, json); + + bool flipX = DICTOOL->getBooleanValue_json(json, FLIPX); + bool flipY = DICTOOL->getBooleanValue_json(json, FLIPY); + + if(flipX != false) + sprite->setFlippedX(flipX); + if(flipY != false) + sprite->setFlippedY(flipY); + + return sprite; +} + +Node* CSLoader::loadParticle(const rapidjson::Value& json) +{ + const char* filePath = DICTOOL->getStringValue_json(json, PLIST_FILE); + int num = DICTOOL->getIntValue_json(json, PARTICLE_NUM); + + ParticleSystemQuad* particle = ParticleSystemQuad::create(filePath); + particle->setTotalParticles(num); + particle->retain(); + + initNode(particle, json); + + return particle; +} + +Node* CSLoader::loadTMXTiledMap(const rapidjson::Value &json) +{ + const char* tmxFile = DICTOOL->getStringValue_json(json, TMX_FILE); + const char* tmxString = DICTOOL->getStringValue_json(json, TMX_STRING); + const char* resourcePath = DICTOOL->getStringValue_json(json, RESOURCE_PATH); + + TMXTiledMap* tmx = nullptr; + + if (tmxFile && strcmp("", tmxFile) != 0) + { + tmx = TMXTiledMap::create(tmxFile); + } + else if ((tmxString && strcmp("", tmxString) != 0) + && (resourcePath && strcmp("", resourcePath) != 0)) + { + tmx = TMXTiledMap::createWithXML(tmxString, resourcePath); + } + + return tmx; + +} + +Node* CSLoader::loadWidget(const rapidjson::Value& json) +{ + const char* str = DICTOOL->getStringValue_json(json, CLASSNAME); + if(str == nullptr) + return nullptr; + + std::string classname = str; + + + + WidgetPropertiesReader0300* widgetPropertiesReader = new WidgetPropertiesReader0300(); + Widget* widget = nullptr; + + if (isWidget(classname)) + { + std::string readerName = getGUIClassName(classname); + readerName.append("Reader"); + + std::string guiClassName = getGUIClassName(classname); + widget = dynamic_cast(ObjectFactory::getInstance()->createObject(guiClassName)); + widget->retain(); + + WidgetReaderProtocol* reader = dynamic_cast(ObjectFactory::getInstance()->createObject(readerName)); + + widgetPropertiesReader->setPropsForAllWidgetFromJsonDictionary(reader, widget, json); + } + else if (isCustomWidget(classname)) + { + widget = dynamic_cast(ObjectFactory::getInstance()->createObject(classname)); + widget->retain(); + + // + // 1st., custom widget parse properties of parent widget with parent widget reader + std::string readerName = getWidgetReaderClassName(widget); + WidgetReaderProtocol* reader = dynamic_cast(ObjectFactory::getInstance()->createObject(readerName)); + if (reader && widget) + { + widgetPropertiesReader->setPropsForAllWidgetFromJsonDictionary(reader, widget, json); + + // 2nd., custom widget parse with custom reader + const char* customProperty = DICTOOL->getStringValue_json(json, "customProperty"); + rapidjson::Document customJsonDict; + customJsonDict.Parse<0>(customProperty); + if (customJsonDict.HasParseError()) + { + CCLOG("GetParseError %s\n", customJsonDict.GetParseError()); + } + + widgetPropertiesReader->setPropsForAllCustomWidgetFromJsonDictionary(classname, widget, customJsonDict); + } + else + { + CCLOG("Widget or WidgetReader doesn't exists!!! Please check your protocol buffers file."); + } + } + CC_SAFE_DELETE(widgetPropertiesReader); + + if (widget) + { + float rotationSkewX = DICTOOL->getFloatValue_json(json, ROTATION_SKEW_X); + float rotationSkewY = DICTOOL->getFloatValue_json(json, ROTATION_SKEW_Y); + float skewx = DICTOOL->getFloatValue_json(json, SKEW_X); + float skewy = DICTOOL->getFloatValue_json(json, SKEW_Y); + if(rotationSkewX != 0) + widget->setRotationSkewX(rotationSkewX); + if(rotationSkewY != 0) + widget->setRotationSkewY(rotationSkewY); + if(skewx != 0) + widget->setSkewX(skewx); + if(skewy != 0) + widget->setSkewY(skewy); + + int actionTag = DICTOOL->getIntValue_json(json, ACTION_TAG); + widget->setUserObject(ActionTimelineData::create(actionTag)); + } + + return widget; +} + +Component* CSLoader::loadComponent(const rapidjson::Value &json) +{ + Component* component = nullptr; + + std::string componentType = DICTOOL->getStringValue_json(json, COMPONENT_TYPE); + + ComponentCreateFunc func = _componentFuncs[componentType]; + + if (func != nullptr) + { + component = func(json); + } + + return component; +} + +Component* CSLoader::loadComAudio(const rapidjson::Value &json) +{ + ComAudio* audio = ComAudio::create(); + + const char* name = DICTOOL->getStringValue_json(json, COMPONENT_NAME); + bool enabled = DICTOOL->getBooleanValue_json(json, COMPONENT_ENABLED); + + audio->setName(name); + audio->setEnabled(enabled); + + const char* filePath = DICTOOL->getStringValue_json(json, COMPONENT_AUDIO_FILE_PATH); + bool loop = DICTOOL->getBooleanValue_json(json, COMPONENT_LOOP); + + audio->setFile(filePath); + audio->setLoop(loop); + + + return audio; +} + +Node* CSLoader::createNodeFromProtocolBuffers(const std::string &filename) +{ + if(_recordProtocolBuffersPath) + { + std::string protocolBuffersPath = filename.substr(0, filename.find_last_of('/') + 1); + CCLOG("protocolBuffersPath = %s", protocolBuffersPath.c_str()); + GUIReader::getInstance()->setFilePath(protocolBuffersPath); + + _protocolBuffersPath = protocolBuffersPath; + } + else + { + GUIReader::getInstance()->setFilePath(""); + _protocolBuffersPath = ""; + } + + cocos2d::Node* node = nodeFromProtocolBuffersFile(filename); + + return node; +} + +Node* CSLoader::nodeFromProtocolBuffersFile(const std::string &fileName) +{ + std::string path = fileName; + + std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName.c_str()); + Data content = FileUtils::getInstance()->getDataFromFile(fullPath); + protocolbuffers::CSParseBinary gpbwp; + if (!gpbwp.ParseFromArray(content.getBytes(), (int)content.getSize())) + { + return NULL; + } + + // decode plist + int textureSize = gpbwp.textures_size(); + CCLOG("textureSize = %d", textureSize); + for (int i = 0; i < textureSize; ++i) + { + std::string plist = gpbwp.textures(i); + CCLOG("plist = %s", plist.c_str()); + std::string png = gpbwp.texturespng(i); + CCLOG("png = %s", png.c_str()); + plist = _protocolBuffersPath + plist; + png = _protocolBuffersPath + png; + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(plist.c_str(), png.c_str()); + } + int fileDesignWidth = gpbwp.designwidth(); + int fileDesignHeight = gpbwp.designheight(); + if (fileDesignWidth <= 0 || fileDesignHeight <= 0) + { + CCLOG("Read design size error!\n"); + Size winSize = Director::getInstance()->getWinSize(); + GUIReader::getInstance()->storeFileDesignSize(fileName.c_str(), winSize); + } + else + { + GUIReader::getInstance()->storeFileDesignSize(fileName.c_str(), + Size(fileDesignWidth, fileDesignHeight)); + } + + protocolbuffers::NodeTree rootNodeTree = gpbwp.nodetree(); + Node* node = nodeFromProtocolBuffers(rootNodeTree); + + return node; +} + +Node* CSLoader::nodeFromProtocolBuffers(const protocolbuffers::NodeTree &nodetree) +{ + Node* node = nullptr; + + std::string classname = nodetree.classname(); + CCLOG("classname = %s", classname.c_str()); + + protocolbuffers::WidgetOptions curOptions; + + if (classname == "Node") + { + node = Node::create(); + const protocolbuffers::WidgetOptions& options = nodetree.widgetoptions(); + setPropsForNodeFromProtocolBuffers(node, options); + + curOptions = options; + } + else if (classname == "SingleNode") + { + node = Node::create(); + const protocolbuffers::WidgetOptions& options = nodetree.widgetoptions(); + setPropsForSingleNodeFromProtocolBuffers(node, options); + + curOptions = options; + } + else if (classname == "Sprite") + { + node = CCSprite::create(); + const protocolbuffers::WidgetOptions& nodeOptions = nodetree.widgetoptions(); + const protocolbuffers::SpriteOptions& options = nodetree.spriteoptions(); + setPropsForSpriteFromProtocolBuffers(node, options, nodeOptions); + + curOptions = nodeOptions; + } + else if (classname == "ProjectNode") + { + const protocolbuffers::WidgetOptions& nodeOptions = nodetree.widgetoptions(); + const protocolbuffers::ProjectNodeOptions& options = nodetree.projectnodeoptions(); + + std::string filePath = options.filename(); + CCLOG("filePath = %s", filePath.c_str()); + if(filePath != "") + { + node = createNodeFromProtocolBuffers(_protocolBuffersPath + filePath); + setPropsForProjectNodeFromProtocolBuffers(node, options, nodeOptions); + + cocostudio::timeline::ActionTimeline* action = cocostudio::timeline::ActionTimelineCache::getInstance()->createActionFromProtocolBuffers(_protocolBuffersPath + filePath); + if(action) + { + node->runAction(action); + action->gotoFrameAndPlay(0); + } + } + + curOptions = nodeOptions; + } + else if (classname == "Particle") + { + const protocolbuffers::WidgetOptions& nodeOptions = nodetree.widgetoptions(); + const protocolbuffers::ParticleSystemOptions& options = nodetree.particlesystemoptions(); + node = createParticleFromProtocolBuffers(options, nodeOptions); + + curOptions = nodeOptions; + } + else if (classname == "GameMap") + { + const protocolbuffers::WidgetOptions& nodeOptions = nodetree.widgetoptions(); + const protocolbuffers::TMXTiledMapOptions& options = nodetree.tmxtiledmapoptions(); + node = createTMXTiledMapFromProtocolBuffers(options, nodeOptions); + + curOptions = nodeOptions; + } + else if (classname == "SimpleAudio") + { + node = Node::create(); + const protocolbuffers::WidgetOptions& options = nodetree.widgetoptions(); + setPropsForSimpleAudioFromProtocolBuffers(node, options); + + curOptions = options; + } + else if (isWidget(classname)) + { + std::string guiClassName = getGUIClassName(classname); + std::string readerName = guiClassName; + readerName.append("Reader"); + + Widget* widget = dynamic_cast(ObjectFactory::getInstance()->createObject(guiClassName)); + widget->retain(); + + WidgetReaderProtocol* reader = dynamic_cast(ObjectFactory::getInstance()->createObject(readerName)); + reader->setPropsFromProtocolBuffers(widget, nodetree); + + const protocolbuffers::WidgetOptions& widgetOptions = nodetree.widgetoptions(); + int actionTag = widgetOptions.actiontag(); + widget->setUserObject(ActionTimelineData::create(actionTag)); + + node = widget; + } + else if (isCustomWidget(classname)) + { + Widget* widget = dynamic_cast(ObjectFactory::getInstance()->createObject(classname)); + widget->retain(); + + // + // 1st., custom widget parse properties of parent widget with parent widget reader + std::string readerName = getWidgetReaderClassName(widget); + WidgetReaderProtocol* reader = dynamic_cast(ObjectFactory::getInstance()->createObject(readerName)); + if (reader && widget) + { + WidgetPropertiesReader0300* widgetPropertiesReader = new WidgetPropertiesReader0300(); + widgetPropertiesReader->setPropsForAllWidgetFromProtocolBuffers(reader, widget, nodetree); + + // 2nd., custom widget parse with custom reader + const protocolbuffers::WidgetOptions& widgetOptions = nodetree.widgetoptions(); + const char* customProperty = widgetOptions.customproperty().c_str(); + rapidjson::Document customJsonDict; + customJsonDict.Parse<0>(customProperty); + if (customJsonDict.HasParseError()) + { + CCLOG("GetParseError %s\n", customJsonDict.GetParseError()); + } + + widgetPropertiesReader->setPropsForAllCustomWidgetFromJsonDictionary(classname, widget, customJsonDict); + } + else + { + CCLOG("Widget or WidgetReader doesn't exists!!! Please check your protocol buffers file."); + } + // + + const protocolbuffers::WidgetOptions& widgetOptions = nodetree.widgetoptions(); + int actionTag = widgetOptions.actiontag(); + widget->setUserObject(ActionTimelineData::create(actionTag)); + + node = widget; + } + + // component + int componentSize = curOptions.componentoptions_size(); + for (int i = 0; i < componentSize; ++i) + { + + const protocolbuffers::ComponentOptions& componentOptions = curOptions.componentoptions(i); + Component* component = createComponentFromProtocolBuffers(componentOptions); + + if (component) + { + node->addComponent(component); + } + } + + int size = nodetree.children_size(); + CCLOG("size = %d", size); + for (int i = 0; i < size; ++i) + { + protocolbuffers::NodeTree subNodeTree = nodetree.children(i); + Node* child = nodeFromProtocolBuffers(subNodeTree); + CCLOG("child = %p", child); + if (child) + { + PageView* pageView = dynamic_cast(node); + ListView* listView = dynamic_cast(node); + if (pageView) + { + Layout* layout = dynamic_cast(child); + if (layout) + { + pageView->addPage(layout); + } + } + else if (listView) + { + Widget* widget = dynamic_cast(child); + if (widget) + { + listView->pushBackCustomItem(widget); + } + } + else + { + node->addChild(child); + } + } + } + + return node; +} + +void CSLoader::setPropsForNodeFromProtocolBuffers(cocos2d::Node *node, + const protocolbuffers::WidgetOptions &nodeOptions) +{ + const protocolbuffers::WidgetOptions& options = nodeOptions; + + std::string name = options.name(); + float x = options.x(); + float y = options.y(); + float scalex = options.scalex(); + float scaley = options.scaley(); + float rotation = options.rotation(); + float rotationSkewX = options.has_rotationskewx() ? options.rotationskewx() : 0.0f; + float rotationSkewY = options.has_rotationskewy() ? options.rotationskewy() : 0.0f; + float anchorx = options.has_anchorpointx() ? options.anchorpointx() : 0.0f; + float anchory = options.has_anchorpointy() ? options.anchorpointy() : 0.0f; + int zorder = options.zorder(); + int tag = options.tag(); + int actionTag = options.actiontag(); + bool visible = options.visible(); + + node->setName(name); + + if(x != 0 || y != 0) + node->setPosition(Point(x, y)); + if(scalex != 1) + node->setScaleX(scalex); + if(scaley != 1) + node->setScaleY(scaley); + if (rotation != 0) + node->setRotation(rotation); + if (rotationSkewX != 0) + node->setRotationSkewX(rotationSkewX); + if (rotationSkewY != 0) + node->setRotationSkewY(rotationSkewY); + if(anchorx != 0.5f || anchory != 0.5f) + node->setAnchorPoint(Point(anchorx, anchory)); + if(zorder != 0) + node->setLocalZOrder(zorder); + if(visible != true) + node->setVisible(visible); + + node->setTag(tag); + node->setUserObject(ActionTimelineData::create(actionTag)); + + node->setCascadeColorEnabled(true); + node->setCascadeOpacityEnabled(true); + +} + +void CSLoader::setPropsForSingleNodeFromProtocolBuffers(cocos2d::Node *node, + const protocolbuffers::WidgetOptions &nodeOptions) +{ + setPropsForNodeFromProtocolBuffers(node, nodeOptions); +} + +void CSLoader::setPropsForSpriteFromProtocolBuffers(cocos2d::Node *node, + const protocolbuffers::SpriteOptions &spriteOptions, + const protocolbuffers::WidgetOptions &nodeOptions) +{ + Sprite *sprite = static_cast(node); + const protocolbuffers::SpriteOptions& options = spriteOptions; + + const protocolbuffers::ResourceData& fileNameData = options.filenamedata(); + int resourceType = fileNameData.resourcetype(); + switch (resourceType) + { + case 0: + { + std::string path = _protocolBuffersPath + fileNameData.path(); + if (path != "") + { + sprite->setTexture(path); + } + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(_protocolBuffersPath + fileNameData.plistfile()); + std::string path = fileNameData.path(); + if (path != "") + { + sprite->setSpriteFrame(path); + } + break; + } + + default: + break; + } + + /* + const char* filePath = options.filename().c_str(); + CCLOG("filePath = %s", filePath); + Sprite *sprite = static_cast(node); + + if(filePath != nullptr && strcmp(filePath, "") != 0) + { + std::string path = filePath; + + SpriteFrame* spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName(path); + if(!spriteFrame) + { + path = _protocolBuffersPath + path; + sprite->setTexture(path); + } + else + { + sprite->setSpriteFrame(spriteFrame); + } + } + else + { + CCLOG("filePath is empty. Create a sprite with no texture"); + } + */ + + sprite->retain(); + + setPropsForNodeFromProtocolBuffers(sprite, nodeOptions); + + GLubyte alpha = (GLubyte)nodeOptions.has_alpha() ? nodeOptions.alpha() : 255; + GLubyte red = (GLubyte)nodeOptions.has_colorr() ? nodeOptions.colorr() : 255; + GLubyte green = (GLubyte)nodeOptions.has_colorg() ? nodeOptions.colorg() : 255; + GLubyte blue = (GLubyte)nodeOptions.has_colorb() ? nodeOptions.colorb() : 255; + + if (alpha != 255) + { + sprite->setOpacity(alpha); + } + if (red != 255 || green != 255 || blue != 255) + { + sprite->setColor(Color3B(red, green, blue)); + } + + bool flipX = spriteOptions.flippedx(); + bool flipY = spriteOptions.flippedy(); + + if(flipX != false) + sprite->setFlippedX(flipX); + if(flipY != false) + sprite->setFlippedY(flipY); +} + +cocos2d::Node* CSLoader::createParticleFromProtocolBuffers(const protocolbuffers::ParticleSystemOptions& particleSystemOptions, + const protocolbuffers::WidgetOptions& nodeOptions) +{ + Node* node = nullptr; + + const protocolbuffers::ParticleSystemOptions& options = particleSystemOptions; + + /* + const std::string& filePath = options.plistfile(); + int num = options.totalparticles(); + */ + + const protocolbuffers::ResourceData& fileNameData = options.filenamedata(); + int resourceType = fileNameData.resourcetype(); + switch (resourceType) + { + case 0: + { + + std::string path = _protocolBuffersPath + fileNameData.path(); + if (path != "") + { + node = ParticleSystemQuad::create(path); + } + break; + } + + default: + break; + } + + if (node) + { + setPropsForNodeFromProtocolBuffers(node, nodeOptions); + } + + return node; +} + +cocos2d::Node* CSLoader::createTMXTiledMapFromProtocolBuffers(const protocolbuffers::TMXTiledMapOptions& tmxTiledMapOptions, + const protocolbuffers::WidgetOptions& nodeOptions) +{ + Node* node = nullptr; + const protocolbuffers::TMXTiledMapOptions& options = tmxTiledMapOptions; + + const protocolbuffers::ResourceData& fileNameData = options.filenamedata(); + int resourceType = fileNameData.resourcetype(); + switch (resourceType) + { + case 0: + { + std::string path = _protocolBuffersPath + fileNameData.path(); + const char* tmxFile = path.c_str(); + + if (tmxFile && strcmp("", tmxFile) != 0) + { + node = TMXTiledMap::create(tmxFile); + } + break; + } + + default: + break; + } + + if (node) + { + setPropsForNodeFromProtocolBuffers(node, nodeOptions); + } + + return node; +} + +void CSLoader::setPropsForProjectNodeFromProtocolBuffers(cocos2d::Node *node, + const protocolbuffers::ProjectNodeOptions &projectNodeOptions, + const protocolbuffers::WidgetOptions &nodeOptions) +{ + setPropsForNodeFromProtocolBuffers(node, nodeOptions); +} + +void CSLoader::setPropsForSimpleAudioFromProtocolBuffers(cocos2d::Node *node, + const protocolbuffers::WidgetOptions &nodeOptions) +{ + setPropsForNodeFromProtocolBuffers(node, nodeOptions); +} + +Component* CSLoader::createComponentFromProtocolBuffers(const protocolbuffers::ComponentOptions &componentOptions) +{ + Component* component = nullptr; + + std::string componentType = componentOptions.type(); + + if (componentType == "ComAudio") + { + component = ComAudio::create(); + const protocolbuffers::ComAudioOptions& options = componentOptions.comaudiooptions(); + setPropsForComAudioFromProtocolBuffers(component, options); + } + + return component; +} + +void CSLoader::setPropsForComponentFromProtocolBuffers(cocos2d::Component *component, + const protocolbuffers::ComponentOptions &componentOptions) +{ + std::string componentType = componentOptions.type(); + + if (componentType == "ComAudio") + { + component = ComAudio::create(); + const protocolbuffers::ComAudioOptions& options = componentOptions.comaudiooptions(); + setPropsForComAudioFromProtocolBuffers(component, options); + } +} + +void CSLoader::setPropsForComAudioFromProtocolBuffers(cocos2d::Component *component, + const protocolbuffers::ComAudioOptions &comAudioOptions) +{ + const protocolbuffers::ComAudioOptions& options = comAudioOptions; + ComAudio* audio = static_cast(component); + + const protocolbuffers::ResourceData& fileNameData = options.filenamedata(); + int resourceType = fileNameData.resourcetype(); + switch (resourceType) + { + case 0: + { + std::string path = _protocolBuffersPath + fileNameData.path(); + audio->setFile(path.c_str()); + break; + } + + default: + break; + } + + bool loop = options.loop(); + audio->setLoop(loop); + + audio->setName(options.name()); + audio->setLoop(options.loop()); +} + +Node* CSLoader::createNodeFromXML(const std::string &filename) +{ + if(_recordXMLPath) + { + std::string xmlPath = filename.substr(0, filename.find_last_of('/') + 1); + CCLOG("xmlPath = %s", xmlPath.c_str()); + GUIReader::getInstance()->setFilePath(xmlPath); + + _xmlPath = xmlPath; + } + else + { + GUIReader::getInstance()->setFilePath(""); + _xmlPath = ""; + } + + cocos2d::Node* node = nodeFromXMLFile(filename); + + return node; +} + +Node* CSLoader::nodeFromXMLFile(const std::string &fileName) +{ + Node* node = nullptr; + + // xml read + std::string fullpath = FileUtils::getInstance()->fullPathForFilename(fileName).c_str(); + ssize_t size; + std::string content =(char*)FileUtils::getInstance()->getFileData(fullpath, "r", &size); + + // xml parse + tinyxml2::XMLDocument* document = new tinyxml2::XMLDocument(); + document->Parse(content.c_str()); + + const tinyxml2::XMLElement* rootElement = document->RootElement();// Root + CCLOG("rootElement name = %s", rootElement->Name()); + + + const tinyxml2::XMLElement* element = rootElement->FirstChildElement(); + + bool createEnabled = false; + std::string rootType = ""; + + while (element) + { + CCLOG("entity name = %s", element->Name()); + + if (strcmp("Content", element->Name()) == 0) + { + const tinyxml2::XMLAttribute* attribute = element->FirstAttribute(); + + if (!attribute) + { + createEnabled = true; + rootType = "NodeObjectData"; + } + // + } + + if (createEnabled) + { + break; + } + + const tinyxml2::XMLElement* child = element->FirstChildElement(); + if (child) + { + element = child; + } + else + { + element = element->NextSiblingElement(); + } + } + + + // create + if (createEnabled) + { + protocolbuffers::CSParseBinary protobuf; + + const tinyxml2::XMLElement* child = element->FirstChildElement(); + + while (child) + { + std::string name = child->Name(); + + if (name == "ObjectData") // nodeTree + { + const tinyxml2::XMLElement* objectData = child; + node = nodeFromXML(objectData, rootType); + } + + child = child->NextSiblingElement(); + } + } + + return node; +} + +Node* CSLoader::nodeFromXML(const tinyxml2::XMLElement *objectData, const std::string &classType) +{ + Node* node = nullptr; + + std::string classname = classType.substr(0, classType.find("ObjectData")); + CCLOG("classname = %s", classname.c_str()); + + if (classname == "Node") + { + node = Node::create(); + setPropsForNodeFromXML(node, objectData); + } + else if (classname == "SingleNode") + { + node = Node::create(); + setPropsForSingleNodeFromXML(node, objectData); + } + else if (classname == "Sprite") + { + node = Sprite::create(); + setPropsForSpriteFromXML(node, objectData); + } + else if (classname == "GameMap") + { + node = createTMXTiledMapFromXML(objectData); + } + else if (classname == "Particle") + { + node = createParticleFromXML(objectData); + } + else if (classname == "ProjectNode") + { + // FileData + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "FileData") + { + const tinyxml2::XMLAttribute* attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + node = createNodeFromXML(_xmlPath + value); + setPropsForProjectNodeFromXML(node, objectData); + + cocostudio::timeline::ActionTimeline* action = cocostudio::timeline::ActionTimelineCache::getInstance()->createActionFromXML(_xmlPath + value); + if(action) + { + node->runAction(action); + action->gotoFrameAndPlay(0); + } + + break; + } + + attribute = attribute->Next(); + } + + break; + } + + child = child->NextSiblingElement(); + } + } + else if (classname == "SimpleAudio") + { + // process as component options + node = Node::create(); + setPropsForSimpleAudioFromXML(node, objectData); + + Component* component = createComponentFromXML(objectData, "ComAudio"); + + if (component) + { + node->addComponent(component); + } + } + else if (isWidget(classname)) + { + std::string guiClassName = getGUIClassName(classname); + std::string readerName = guiClassName; + readerName.append("Reader"); + + Widget* widget = dynamic_cast(ObjectFactory::getInstance()->createObject(guiClassName)); + widget->retain(); + + WidgetReaderProtocol* reader = dynamic_cast(ObjectFactory::getInstance()->createObject(readerName)); + reader->setPropsFromXML(widget, objectData); + + node = widget; + } + + + // children + bool containChildrenElement = false; + objectData = objectData->FirstChildElement(); + + while (objectData) + { + CCLOG("objectData name = %s", objectData->Name()); + + if (strcmp("Children", objectData->Name()) == 0) + { + containChildrenElement = true; + break; + } + + objectData = objectData->NextSiblingElement(); + } + + if (containChildrenElement) + { + objectData = objectData->FirstChildElement(); + CCLOG("element name = %s", objectData->Name()); + + while (objectData) + { + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + bool bHasType = false; + + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ctype") + { + bHasType = true; + Node* child = nodeFromXML(objectData, value); + CCLOG("child = %p", child); + if (child) + { + PageView* pageView = dynamic_cast(node); + ListView* listView = dynamic_cast(node); + if (pageView) + { + Layout* layout = dynamic_cast(child); + if (layout) + { + pageView->addPage(layout); + } + } + else if (listView) + { + Widget* widget = dynamic_cast(child); + if (widget) + { + listView->pushBackCustomItem(widget); + } + } + else + { + node->addChild(child); + } + } + + break; + } + + attribute = attribute->Next(); + } + + if (!bHasType) + { + Node* child = nodeFromXML(objectData, "NodeObjectData"); + CCLOG("child = %p", child); + if (child) + { + PageView* pageView = dynamic_cast(node); + ListView* listView = dynamic_cast(node); + if (pageView) + { + Layout* layout = dynamic_cast(child); + if (layout) + { + pageView->addPage(layout); + } + } + else if (listView) + { + Widget* widget = dynamic_cast(child); + if (widget) + { + listView->pushBackCustomItem(widget); + } + } + else + { + node->addChild(child); + } + } + } + + objectData = objectData->NextSiblingElement(); + } + } + // + + return node; +} + +void CSLoader::setPropsForNodeFromXML(cocos2d::Node *node, const tinyxml2::XMLElement *nodeObjectData) +{ + node->setCascadeColorEnabled(true); + node->setCascadeOpacityEnabled(true); + + node->setScale(0.0f, 0.0f); + + std::string name = nodeObjectData->Name(); + CCLOG("entity name = %s", name.c_str()); + + // attributes + const tinyxml2::XMLAttribute* attribute = nodeObjectData->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Name") + { + node->setName(value); + } + else if (name == "ActionTag") + { + node->setUserObject(ActionTimelineData::create(atoi(value.c_str()))); + } + else if (name == "RotationSkewX") + { + node->setRotationSkewX(atof(value.c_str())); + } + else if (name == "RotationSkewY") + { + node->setRotationSkewY(atof(value.c_str())); + } + else if (name == "ZOrder") + { + node->setZOrder(atoi(value.c_str())); + } + else if (name == "VisibleForFrame") + { + node->setVisible((value == "True") ? true : false); + } + else if (name == "Alpha") + { + node->setOpacity(atoi(value.c_str())); + } + else if (name == "Tag") + { + node->setTag(atoi(value.c_str())); + } + + attribute = attribute->Next(); + } + + const tinyxml2::XMLElement* child = nodeObjectData->FirstChildElement(); + while (child) + { + name = child->Name(); + if (name == "Children") + { + break; + } + else if (name == "Position") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + node->setPositionX(atof(value.c_str())); + } + else if (name == "Y") + { + node->setPositionY(atof(value.c_str())); + } + + attribute = attribute->Next(); + } + } + else if (name == "Scale") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ScaleX") + { + node->setScaleX(atof(value.c_str())); + } + else if (name == "ScaleY") + { + node->setScaleY(atof(value.c_str())); + } + + attribute = attribute->Next(); + } + } + else if (name == "AnchorPoint") + { + attribute = child->FirstAttribute(); + + float anchorX = 0.0f; + float anchorY = 0.0f; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ScaleX") + { + anchorX = atof(value.c_str()); + } + else if (name == "ScaleY") + { + anchorY = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + + node->setAnchorPoint(Vec2(anchorX, anchorY)); + } + else if (name == "CColor") + { + attribute = child->FirstAttribute(); + int opacity = 255, red = 255, green = 255, blue = 255; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "A") + { + opacity = atoi(value.c_str()); + } + else if (name == "R") + { + red = atoi(value.c_str()); + } + else if (name == "G") + { + green = atoi(value.c_str()); + } + else if (name == "B") + { + blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + + node->setOpacity(opacity); + node->setColor(Color3B(red, green, blue)); + } + else if (name == "Size") + { + attribute = child->FirstAttribute(); + float width = 0.0f, height = 0.0f; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + width = atof(value.c_str()); + } + else if (name == "Y") + { + height = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + + node->setContentSize(Size(width, height)); + } + + child = child->NextSiblingElement(); + } +} + +void CSLoader::setPropsForSingleNodeFromXML(cocos2d::Node *node, const tinyxml2::XMLElement *nodeObjectData) +{ + setPropsForNodeFromXML(node, nodeObjectData); +} + +void CSLoader::setPropsForSpriteFromXML(cocos2d::Node *node, const tinyxml2::XMLElement *spriteObjectData) +{ + setPropsForNodeFromXML(node, spriteObjectData); + + Sprite* sprite = static_cast(node); + int opacity = 255; + + // attributes + const tinyxml2::XMLAttribute* attribute = spriteObjectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Alpha") + { + opacity = atoi(value.c_str()); + } + else if (name == "FlipX") + { + sprite->setFlippedX((value == "True") ? true : false); + } + else if (name == "FlipY") + { + sprite->setFlippedY((value == "True") ? true : false); + } + + attribute = attribute->Next(); + } + + + // FileData + const tinyxml2::XMLElement* child = spriteObjectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "FileData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + if (path != "") + { + sprite->setTexture(_xmlPath + path); + } + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(_xmlPath + plistFile); + if (path != "") + { + sprite->setSpriteFrame(path); + } + break; + } + + default: + break; + } + } + + child = child->NextSiblingElement(); + } + + sprite->setOpacity(opacity); +} + +Node* CSLoader::createParticleFromXML(const tinyxml2::XMLElement *particleObjectData) +{ + Node* node = nullptr; + + // child elements + const tinyxml2::XMLElement* child = particleObjectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "FileData") + { + const tinyxml2::XMLAttribute* attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + if (path != "") + { + node = ParticleSystemQuad::create(_xmlPath + path); + } + break; + } + + default: + break; + } + } + + child = child->NextSiblingElement(); + } + + if (node) + { + setPropsForNodeFromXML(node, particleObjectData); + } + + return node; +} + +Node* CSLoader::createTMXTiledMapFromXML(const tinyxml2::XMLElement *tmxTiledMapObjectData) +{ + Node* node = nullptr; + + // child elements + const tinyxml2::XMLElement* child = tmxTiledMapObjectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "FileData") + { + const tinyxml2::XMLAttribute* attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + std::string tmxFile_str = _xmlPath + path; + const char* tmxFile = tmxFile_str.c_str(); + + if (tmxFile && strcmp("", tmxFile) != 0) + { + node = TMXTiledMap::create(tmxFile); + } + break; + } + + default: + break; + } + } + + child = child->NextSiblingElement(); + } + + + if (node) + { + setPropsForNodeFromXML(node, tmxTiledMapObjectData); + } + + return node; +} + +void CSLoader::setPropsForProjectNodeFromXML(cocos2d::Node *node, const tinyxml2::XMLElement *projectNodeObjectData) +{ + setPropsForNodeFromXML(node, projectNodeObjectData); +} + +void CSLoader::setPropsForSimpleAudioFromXML(cocos2d::Node *node, const tinyxml2::XMLElement *simpleAudioObjectData) +{ + setPropsForNodeFromXML(node, simpleAudioObjectData); +} + +Component* CSLoader::createComponentFromXML(const tinyxml2::XMLElement *componentObjectData, + const std::string &componentType) +{ + Component* component = nullptr; + + if (componentType == "ComAudio") + { + component = ComAudio::create(); + setPropsForComAudioFromXML(component, componentObjectData); + } + + return component; +} + +void CSLoader::setPropsForComAudioFromXML(cocos2d::Component *component, const tinyxml2::XMLElement *comAudioObjectData) +{ + ComAudio* audio = static_cast(component); + + audio->setEnabled(true); + + const tinyxml2::XMLAttribute* attribute = comAudioObjectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Loop") + { + audio->setLoop((value == "True") ? true : false); + } + else if (name == "Name") + { + audio->setName(value); + } + + attribute = attribute->Next(); + } + + // FileData + const tinyxml2::XMLElement* child = comAudioObjectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "FileData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + audio->setFile((_xmlPath + path).c_str()); + break; + } + + default: + break; + } + } + + child = child->NextSiblingElement(); + } +} + +bool CSLoader::isWidget(const std::string &type) +{ + return (type == ClassName_Panel + || type == ClassName_Button + || type == ClassName_CheckBox + || type == ClassName_ImageView + || type == ClassName_TextAtlas + || type == ClassName_LabelAtlas + || type == ClassName_LabelBMFont + || type == ClassName_TextBMFont + || type == ClassName_Text + || type == ClassName_LoadingBar + || type == ClassName_TextField + || type == ClassName_Slider + || type == ClassName_Layout + || type == ClassName_ScrollView + || type == ClassName_ListView + || type == ClassName_PageView + || type == ClassName_Widget + || type == ClassName_Label); + +} + +bool CSLoader::isCustomWidget(const std::string &type) +{ + Widget* widget = dynamic_cast(ObjectFactory::getInstance()->createObject(type)); + if (widget) + { + CC_SAFE_DELETE(widget); + return true; + } + + return false; +} + +std::string CSLoader::getGUIClassName(const std::string &name) +{ + std::string convertedClassName = name; + if (name == "Panel") + { + convertedClassName = "Layout"; + } + else if (name == "TextArea") + { + convertedClassName = "Text"; + } + else if (name == "TextButton") + { + convertedClassName = "Button"; + } + else if (name == "Label") + { + convertedClassName = "Text"; + } + else if (name == "LabelAtlas") + { + convertedClassName = "TextAtlas"; + } + else if (name == "LabelBMFont") + { + convertedClassName = "TextBMFont"; + } + + + return convertedClassName; +} + +std::string CSLoader::getWidgetReaderClassName(Widget* widget) +{ + std::string readerName; + + // 1st., custom widget parse properties of parent widget with parent widget reader + if (dynamic_cast(widget)) + { + readerName = "ButtonReader"; + } + else if (dynamic_cast(widget)) + { + readerName = "CheckBoxReader"; + } + else if (dynamic_cast(widget)) + { + readerName = "ImageViewReader"; + } + else if (dynamic_cast(widget)) + { + readerName = "TextAtlasReader"; + } + else if (dynamic_cast(widget)) + { + readerName = "TextBMFontReader"; + } + else if (dynamic_cast(widget)) + { + readerName = "TextReader"; + } + else if (dynamic_cast(widget)) + { + readerName = "LoadingBarReader"; + } + else if (dynamic_cast(widget)) + { + readerName = "SliderReader"; + } + else if (dynamic_cast(widget)) + { + readerName = "TextFieldReader"; + } + else if (dynamic_cast(widget)) + { + readerName = "ListViewReader"; + } + else if (dynamic_cast(widget)) + { + readerName = "PageViewReader"; + } + else if (dynamic_cast(widget)) + { + readerName = "ScrollViewReader"; + } + + else if (dynamic_cast(widget)) + { + readerName = "LayoutReader"; + } + else if (dynamic_cast(widget)) + { + readerName = "WidgetReader"; + } + + return readerName; +} + +NS_CC_END diff --git a/cocos/editor-support/cocostudio/ActionTimeline/CSLoader.h b/cocos/editor-support/cocostudio/ActionTimeline/CSLoader.h new file mode 100644 index 0000000000..299f49c6b8 --- /dev/null +++ b/cocos/editor-support/cocostudio/ActionTimeline/CSLoader.h @@ -0,0 +1,203 @@ +/**************************************************************************** + Copyright (c) 2013 cocos2d-x.org + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __cocos2d_libs__CSLoader__ +#define __cocos2d_libs__CSLoader__ + +#include "cocostudio/DictionaryHelper.h" +#include "cocostudio/CocosStudioExport.h" +#include "cocos2d.h" + +namespace protocolbuffers +{ + class NodeTree; + class WidgetOptions; + class SpriteOptions; + class ProjectNodeOptions; + class ParticleSystemOptions; + class TMXTiledMapOptions; + class ComponentOptions; + class ComAudioOptions; +} + +namespace tinyxml2 +{ + class XMLElement; +} + +namespace cocostudio +{ + class ComAudio; +} + +namespace cocostudio +{ + namespace timeline + { + class ActionTimeline; + } +} + +NS_CC_BEGIN + +class CC_STUDIO_DLL CSLoader +{ +public: + static CSLoader* getInstance(); + static void destroyInstance(); + + CSLoader(); + void purge(); + + void init(); + + static cocos2d::Node* createNode(const std::string& filename); + static cocostudio::timeline::ActionTimeline* createTimeline(const std::string& filename); + + cocos2d::Node* createNodeFromJson(const std::string& filename); + cocos2d::Node* loadNodeWithFile(const std::string& fileName); + cocos2d::Node* loadNodeWithContent(const std::string& content); + + void setRecordJsonPath(bool record) { _recordJsonPath = record; } + bool isRecordJsonPath() const { return _recordJsonPath; } + + void setJsonPath(std::string jsonPath) { _jsonPath = jsonPath; } + std::string getJsonPath() const { return _jsonPath; } + + cocos2d::Node* createNodeFromProtocolBuffers(const std::string& filename); + cocos2d::Node* nodeFromProtocolBuffersFile(const std::string& fileName); + cocos2d::Node* nodeFromProtocolBuffers(const protocolbuffers::NodeTree& nodetree); + + void setRecordProtocolBuffersPath(bool record) { _recordProtocolBuffersPath = record; } + bool isRecordProtocolBuffersPath() const { return _recordProtocolBuffersPath; } + + void setProtocolBuffersPath(std::string protocolBuffersPath) { _protocolBuffersPath = protocolBuffersPath; } + std::string getProtocolBuffersPath() const { return _protocolBuffersPath; } + + cocos2d::Node* createNodeFromXML(const std::string& filename); + cocos2d::Node* nodeFromXMLFile(const std::string& fileName); + cocos2d::Node* nodeFromXML(const tinyxml2::XMLElement* objectData, + const std::string& classType); + + void setRecordXMLPath(bool record) { _recordXMLPath = record; } + bool isRecordXMLPath() const { return _recordXMLPath; } + + void setXMLPath(std::string xmlPath) { _xmlPath = xmlPath; } + std::string getXMLPath() const { return _xmlPath; } + +protected: + + cocos2d::Node* loadNode(const rapidjson::Value& json); + + void locateNodeWithMulresPosition(cocos2d::Node* node, const rapidjson::Value& json); + + void initNode(cocos2d::Node* node, const rapidjson::Value& json); + + // load nodes + cocos2d::Node* loadSimpleNode(const rapidjson::Value& json); + cocos2d::Node* loadSubGraph (const rapidjson::Value& json); + cocos2d::Node* loadSprite (const rapidjson::Value& json); + cocos2d::Node* loadParticle (const rapidjson::Value& json); + cocos2d::Node* loadTMXTiledMap(const rapidjson::Value& json); + + // load gui + cocos2d::Node* loadWidget(const rapidjson::Value& json); + + // load component + cocos2d::Component* loadComponent(const rapidjson::Value& json); + cocos2d::Component* loadComAudio(const rapidjson::Value& json); + + void setPropsForNodeFromProtocolBuffers(cocos2d::Node* node, const protocolbuffers::WidgetOptions& nodeOptions); + void setPropsForSingleNodeFromProtocolBuffers(cocos2d::Node* node, const protocolbuffers::WidgetOptions& nodeOptions); + void setPropsForSpriteFromProtocolBuffers(cocos2d::Node* node, + const protocolbuffers::SpriteOptions& spriteOptions, + const protocolbuffers::WidgetOptions& nodeOptions); + cocos2d::Node* createParticleFromProtocolBuffers(const protocolbuffers::ParticleSystemOptions& particleSystemOptions, + const protocolbuffers::WidgetOptions& nodeOptions); + cocos2d::Node* createTMXTiledMapFromProtocolBuffers(const protocolbuffers::TMXTiledMapOptions& tmxTiledMapOptions, + const protocolbuffers::WidgetOptions& nodeOptions); + void setPropsForProjectNodeFromProtocolBuffers(cocos2d::Node* node, + const protocolbuffers::ProjectNodeOptions& projectNodeOptions, + const protocolbuffers::WidgetOptions& nodeOptions); + void setPropsForSimpleAudioFromProtocolBuffers(cocos2d::Node* node, const protocolbuffers::WidgetOptions& nodeOptions); + + cocos2d::Component* createComponentFromProtocolBuffers(const protocolbuffers::ComponentOptions& componentOptions); + void setPropsForComponentFromProtocolBuffers(cocos2d::Component* component, const protocolbuffers::ComponentOptions& componentOptions); + + void setPropsForComAudioFromProtocolBuffers(cocos2d::Component* component, + const protocolbuffers::ComAudioOptions& comAudioOptions); + + void setPropsForNodeFromXML(cocos2d::Node* node, + const tinyxml2::XMLElement* nodeObjectData); + void setPropsForSingleNodeFromXML(cocos2d::Node* node, + const tinyxml2::XMLElement* nodeObjectData); + void setPropsForSpriteFromXML(cocos2d::Node* node, + const tinyxml2::XMLElement* spriteObjectData); + cocos2d::Node* createParticleFromXML(const tinyxml2::XMLElement* particleObjectData); + cocos2d::Node* createTMXTiledMapFromXML(const tinyxml2::XMLElement* tmxTiledMapObjectData); + void setPropsForProjectNodeFromXML(cocos2d::Node* node, + const tinyxml2::XMLElement* projectNodeObjectData); + void setPropsForSimpleAudioFromXML(cocos2d::Node* node, + const tinyxml2::XMLElement* simpleAudioObjectData); + + cocos2d::Component* createComponentFromXML(const tinyxml2::XMLElement* componentObjectData, + const std::string& componentType); + void setPropsForComponentFromXML(cocos2d::Component* component, + const tinyxml2::XMLElement* componentObjectData); + + void setPropsForComAudioFromXML(cocos2d::Component* component, + const tinyxml2::XMLElement* comAudioObjectData); + + bool isWidget(const std::string& type); + bool isCustomWidget(const std::string& type); + + std::string getGUIClassName(const std::string &name); + std::string getWidgetReaderClassName(cocos2d::ui::Widget *widget); + + typedef std::function NodeCreateFunc; + typedef std::pair Pair; + + std::unordered_map _funcs; + + typedef std::function ComponentCreateFunc; + typedef std::pair ComponentPair; + + std::unordered_map _componentFuncs; + + bool _recordJsonPath; + + std::string _jsonPath; + + bool _recordProtocolBuffersPath; + std::string _protocolBuffersPath; + + bool _recordXMLPath; + std::string _xmlPath; + + std::string _monoCocos2dxVersion; +}; + +NS_CC_END + +#endif /* defined(__cocos2d_libs__CSLoader__) */ diff --git a/cocos/editor-support/cocostudio/Android.mk b/cocos/editor-support/cocostudio/Android.mk index a9b5b55439..d31578183a 100644 --- a/cocos/editor-support/cocostudio/Android.mk +++ b/cocos/editor-support/cocostudio/Android.mk @@ -58,25 +58,20 @@ ActionTimeline/CCNodeReader.cpp \ ActionTimeline/CCActionTimelineCache.cpp \ ActionTimeline/CCFrame.cpp \ ActionTimeline/CCTimeLine.cpp \ -ActionTimeline/CCActionTimeline.cpp +ActionTimeline/CCActionTimeline.cpp \ +ActionTimeline/CSLoader.cpp \ +CSParseBinary.pb.cc -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/.. \ -$(LOCAL_PATH)/../../../external -LOCAL_C_INCLUDES := $(LOCAL_PATH)/../.. \ -$(LOCAL_PATH)/../../../external \ -$(LOCAL_PATH)/.. \ -$(LOCAL_PATH)/../.. \ -$(LOCAL_PATH)/WidgetReader \ -$(LOCAL_PATH)/../../platform/android \ -$(LOCAL_PATH)/../../../external/tinyxml2 \ +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/.. + +LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. \ + $(LOCAL_PATH)/WidgetReader LOCAL_CFLAGS += -fexceptions LOCAL_STATIC_LIBRARIES := cocos_ui_static LOCAL_STATIC_LIBRARIES += cocosdenshion_static -LOCAL_STATIC_LIBRARIES += cocos_extension_static -LOCAL_STATIC_LIBRARIES += cocos2dx_internal_static +LOCAL_STATIC_LIBRARIES += cocos_protobuf-lite_static include $(BUILD_STATIC_LIBRARY) - diff --git a/cocos/editor-support/cocostudio/CCActionManagerEx.cpp b/cocos/editor-support/cocostudio/CCActionManagerEx.cpp index d805005bea..5369ddbc0e 100644 --- a/cocos/editor-support/cocostudio/CCActionManagerEx.cpp +++ b/cocos/editor-support/cocostudio/CCActionManagerEx.cpp @@ -103,7 +103,7 @@ void ActionManagerEx::initWithDictionary(const char* jsonName,const rapidjson::V ActionObject* action = new (std::nothrow) ActionObject(); action->autorelease(); - action->initWithBinary(cocoLoader, actionNode->GetChildArray(cocoLoader), root); + action->initWithBinary(cocoLoader, &actionNode->GetChildArray(cocoLoader)[i], root); actionList.pushBack(action); } diff --git a/cocos/editor-support/cocostudio/CCActionObject.cpp b/cocos/editor-support/cocostudio/CCActionObject.cpp index 44e5842587..3269a937e9 100644 --- a/cocos/editor-support/cocostudio/CCActionObject.cpp +++ b/cocos/editor-support/cocostudio/CCActionObject.cpp @@ -237,6 +237,7 @@ void ActionObject::play(CallFunc* func) void ActionObject::pause() { _bPause = true; + _bPlaying = false; } void ActionObject::stop() @@ -245,6 +246,7 @@ void ActionObject::stop() { e->stopAction(); } + _bPlaying = false; _pScheduler->unschedule(CC_SCHEDULE_SELECTOR(ActionObject::simulationActionUpdate), this); _bPause = false; } @@ -283,6 +285,7 @@ void ActionObject::simulationActionUpdate(float dt) } else { + _bPlaying = false; _pScheduler->unschedule(CC_SCHEDULE_SELECTOR(ActionObject::simulationActionUpdate), this); } } diff --git a/cocos/editor-support/cocostudio/CCComRender.cpp b/cocos/editor-support/cocostudio/CCComRender.cpp index fe06b84dd7..4243e3aafb 100644 --- a/cocos/editor-support/cocostudio/CCComRender.cpp +++ b/cocos/editor-support/cocostudio/CCComRender.cpp @@ -210,14 +210,13 @@ bool ComRender::serialize(void* r) } else if (file_extension == ".CSB") { - ssize_t size = 0; - unsigned char *pBytes = nullptr; - std::string binaryFilePath = FileUtils::getInstance()->fullPathForFilename(filePath.c_str()); - pBytes = cocos2d::FileUtils::getInstance()->getFileData(binaryFilePath.c_str(), "rb", &size); - CC_BREAK_IF(pBytes == nullptr || strcmp((char*)pBytes, "") == 0); - CocoLoader tCocoLoader; - if (tCocoLoader.ReadCocoBinBuff((char*)pBytes)) - { + std::string binaryFilePath = FileUtils::getInstance()->fullPathForFilename(filePath.c_str()); + auto fileData = FileUtils::getInstance()->getDataFromFile(binaryFilePath); + auto fileDataBytes = fileData.getBytes(); + CC_BREAK_IF(fileData.isNull()); + CocoLoader tCocoLoader; + if (tCocoLoader.ReadCocoBinBuff((char*)fileDataBytes)) + { stExpCocoNode *tpRootCocoNode = tCocoLoader.GetRootCocoNode(); rapidjson::Type tType = tpRootCocoNode->GetType(&tCocoLoader); if (rapidjson::kObjectType == tType) diff --git a/cocos/editor-support/cocostudio/CCSGUIReader.cpp b/cocos/editor-support/cocostudio/CCSGUIReader.cpp index 1cd0b48746..44fb5bd676 100644 --- a/cocos/editor-support/cocostudio/CCSGUIReader.cpp +++ b/cocos/editor-support/cocostudio/CCSGUIReader.cpp @@ -40,6 +40,9 @@ THE SOFTWARE. #include "WidgetReader/ScrollViewReader/ScrollViewReader.h" #include "WidgetReader/ListViewReader/ListViewReader.h" #include "cocostudio/CocoLoader.h" +#include "ui/CocosGUI.h" +#include "CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" using namespace cocos2d; using namespace cocos2d::ui; @@ -353,28 +356,27 @@ WidgetReaderProtocol* WidgetPropertiesReader::createWidgetReaderProtocol(const s return dynamic_cast(object); } - - - Widget* GUIReader::widgetFromBinaryFile(const char *fileName) { std::string jsonpath; rapidjson::Document jsonDict; - jsonpath = CCFileUtils::getInstance()->fullPathForFilename(fileName); + jsonpath = fileName; +// jsonpath = CCFileUtils::getInstance()->fullPathForFilename(fileName); size_t pos = jsonpath.find_last_of('/'); m_strFilePath = jsonpath.substr(0,pos+1); - ssize_t nSize = 0; std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName); - unsigned char* pBuffer = FileUtils::getInstance()->getFileData(fullPath, "rb", &nSize); + auto fileData = FileUtils::getInstance()->getDataFromFile(fullPath); + auto fileDataBytes = fileData.getBytes(); + auto fileDataSize = fileData.getSize(); const char* fileVersion = ""; ui::Widget* widget = nullptr; - if (pBuffer != nullptr && nSize > 0) + if (fileDataBytes != nullptr && fileDataSize > 0) { CocoLoader tCocoLoader; - if(true == tCocoLoader.ReadCocoBinBuff((char*)pBuffer)) + if(true == tCocoLoader.ReadCocoBinBuff((char*)fileDataBytes)) { stExpCocoNode* tpRootCocoNode = tCocoLoader.GetRootCocoNode(); @@ -420,8 +422,6 @@ Widget* GUIReader::widgetFromBinaryFile(const char *fileName) } } - CC_SAFE_DELETE_ARRAY(pBuffer); - return widget; } @@ -1544,4 +1544,243 @@ void WidgetPropertiesReader0300::setPropsForAllCustomWidgetFromJsonDictionary(co } } +Widget* WidgetPropertiesReader0300::widgetFromProtocolBuffers(const protocolbuffers::NodeTree &nodetree) +{ + std::string classname = nodetree.classname(); + CCLOG("classname = %s", classname.c_str()); + + Widget* widget = this->createGUI(classname); + std::string readerName = this->getWidgetReaderClassName(classname); + + WidgetReaderProtocol* reader = this->createWidgetReaderProtocol(readerName); + + if (reader) + { + // widget parse with widget reader + setPropsForAllWidgetFromProtocolBuffers(reader, widget, nodetree); + } + else + { + // + // 1st., custom widget parse properties of parent widget with parent widget reader + readerName = this->getWidgetReaderClassName(widget); + reader = this->createWidgetReaderProtocol(readerName); + if (reader && widget) + { + setPropsForAllWidgetFromProtocolBuffers(reader, widget, nodetree); + + // 2nd., custom widget parse with custom reader + const protocolbuffers::WidgetOptions& widgetOptions = nodetree.widgetoptions(); + const char* customProperty = widgetOptions.customproperty().c_str(); + rapidjson::Document customJsonDict; + customJsonDict.Parse<0>(customProperty); + if (customJsonDict.HasParseError()) + { + CCLOG("GetParseError %s\n", customJsonDict.GetParseError()); + } + setPropsForAllCustomWidgetFromJsonDictionary(classname, widget, customJsonDict); + } + else + { + CCLOG("Widget or WidgetReader doesn't exists!!! Please check your json file."); + } + // + } + + int size = nodetree.children_size(); + CCLOG("widget children size = %d", size); + for (int i = 0; i < size; ++i) + { + protocolbuffers::NodeTree subNodeTree = nodetree.children(i); + Widget* child = widgetFromProtocolBuffers(subNodeTree); + CCLOG("widget child = %p", child); + if (child) + { + PageView* pageView = dynamic_cast(widget); + if (pageView) + { + pageView->addPage(static_cast(child)); + } + else + { + ListView* listView = dynamic_cast(widget); + if (listView) + { + listView->pushBackCustomItem(child); + } + else + { + widget->addChild(child); + } + } + } + } + + CCLOG("widget = %p", widget); + + return widget; +} + +void WidgetPropertiesReader0300::setPropsForAllWidgetFromProtocolBuffers(cocostudio::WidgetReaderProtocol *reader, cocos2d::ui::Widget *widget, const protocolbuffers::NodeTree &nodetree) +{ + reader->setPropsFromProtocolBuffers(widget, nodetree); +} + +Widget* WidgetPropertiesReader0300::widgetFromXML(const tinyxml2::XMLElement *objectData, const std::string &classType) +{ + std::string classname = classType.substr(0, classType.find("ObjectData")); + CCLOG("classname = %s", classname.c_str()); + + Widget* widget = this->createGUI(classname); + std::string readerName = this->getWidgetReaderClassName(classname); + + WidgetReaderProtocol* reader = this->createWidgetReaderProtocol(readerName); + + if (reader) + { + // widget parse with widget reader + setPropsForAllWidgetFromXML(reader, widget, objectData); + } + else + { + // + // 1st., custom widget parse properties of parent widget with parent widget reader + readerName = this->getWidgetReaderClassName(widget); + reader = this->createWidgetReaderProtocol(readerName); + if (reader && widget) + { + setPropsForAllWidgetFromXML(reader, widget, objectData); + + // 2nd., custom widget parse with custom reader + // const protocolbuffers::WidgetOptions& widgetOptions = nodetree.widgetoptions(); + // const char* customProperty = widgetOptions.customproperty().c_str(); + const char* customProperty = ""; + rapidjson::Document customJsonDict; + customJsonDict.Parse<0>(customProperty); + if (customJsonDict.HasParseError()) + { + CCLOG("GetParseError %s\n", customJsonDict.GetParseError()); + } + setPropsForAllCustomWidgetFromJsonDictionary(classname, widget, customJsonDict); + } + else + { + CCLOG("Widget or WidgetReader doesn't exists!!! Please check your json file."); + } + // + } + + + + + + // children + bool containChildrenElement = false; + objectData = objectData->FirstChildElement(); + + while (objectData) + { + CCLOG("objectData name = %s", objectData->Name()); + + if (strcmp("Children", objectData->Name()) == 0) + { + containChildrenElement = true; + break; + } + + objectData = objectData->NextSiblingElement(); + } + + if (containChildrenElement) + { + objectData = objectData->FirstChildElement(); + CCLOG("objectData name = %s", objectData->Name()); + + while (objectData) + { + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ctype") + { + Widget* child = widgetFromXML(objectData, value); + CCLOG("child = %p", child); + if (child) + { + PageView* pageView = dynamic_cast(widget); + ListView* listView = dynamic_cast(widget); + if (pageView) + { + Layout* layout = dynamic_cast(child); + if (layout) + { + pageView->addPage(layout); + } + } + else if (listView) + { + Widget* widgetChild = dynamic_cast(child); + if (widgetChild) + { + listView->pushBackCustomItem(widgetChild); + } + } + else + { + widget->addChild(child); + } + } + + break; + } + + attribute = attribute->Next(); + } + + // Node* child = nodeFromXML(objectData, value); + // CCLOG("child = %p", child); + // if (child) + // { + // PageView* pageView = dynamic_cast(node); + // ListView* listView = dynamic_cast(node); + // if (pageView) + // { + // Layout* layout = dynamic_cast(child); + // if (layout) + // { + // pageView->addPage(layout); + // } + // } + // else if (listView) + // { + // Widget* widget = dynamic_cast(child); + // if (widget) + // { + // listView->pushBackCustomItem(widget); + // } + // } + // else + // { + // node->addChild(child); + // } + // } + + objectData = objectData->NextSiblingElement(); + } + } + // + + CCLOG("widget = %p", widget); + + return widget; +} + +void WidgetPropertiesReader0300::setPropsForAllWidgetFromXML(cocostudio::WidgetReaderProtocol *reader, cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) +{ + reader->setPropsFromXML(widget, objectData); +} + } diff --git a/cocos/editor-support/cocostudio/CCSGUIReader.h b/cocos/editor-support/cocostudio/CCSGUIReader.h index 12239ead66..f9527a5b18 100644 --- a/cocos/editor-support/cocostudio/CCSGUIReader.h +++ b/cocos/editor-support/cocostudio/CCSGUIReader.h @@ -31,6 +31,16 @@ THE SOFTWARE. #include "base/ObjectFactory.h" #include "cocostudio/CocosStudioExport.h" +namespace protocolbuffers +{ + class NodeTree; +} + +namespace tinyxml2 +{ + class XMLElement; +} + namespace cocostudio { class CocoLoader; @@ -116,6 +126,16 @@ public: CocoLoader* cocoLoader, stExpCocoNode* pCocoNode) = 0; + virtual cocos2d::ui::Widget* widgetFromProtocolBuffers(const protocolbuffers::NodeTree& nodetree) = 0; + virtual void setPropsForAllWidgetFromProtocolBuffers(WidgetReaderProtocol* reader, + cocos2d::ui::Widget* widget, + const protocolbuffers::NodeTree& nodetree) = 0; + + virtual cocos2d::ui::Widget* widgetFromXML(const tinyxml2::XMLElement* objectData, const std::string& classType) = 0; + virtual void setPropsForAllWidgetFromXML(WidgetReaderProtocol* reader, + cocos2d::ui::Widget* widget, + const tinyxml2::XMLElement* objectData) = 0; + protected: void setAnchorPointForWidget(cocos2d::ui::Widget* widget, const rapidjson::Value&options); std::string getWidgetReaderClassName(const std::string& classname); @@ -175,6 +195,16 @@ public: virtual void setPropsForAllCustomWidgetFromJsonDictionary(const std::string& classType, cocos2d::ui::Widget* widget, const rapidjson::Value& customOptions); + + virtual cocos2d::ui::Widget* widgetFromProtocolBuffers(const protocolbuffers::NodeTree& nodetree) { return NULL; }; + virtual void setPropsForAllWidgetFromProtocolBuffers(WidgetReaderProtocol* reader, + cocos2d::ui::Widget* widget, + const protocolbuffers::NodeTree& nodetree) {}; + + virtual cocos2d::ui::Widget* widgetFromXML(const tinyxml2::XMLElement* objectData, const std::string& classType) { return nullptr; }; + virtual void setPropsForAllWidgetFromXML(WidgetReaderProtocol* reader, + cocos2d::ui::Widget* widget, + const tinyxml2::XMLElement* objectData) {}; }; class CC_STUDIO_DLL WidgetPropertiesReader0300 : public WidgetPropertiesReader @@ -219,6 +249,16 @@ public: virtual void setPropsForAllCustomWidgetFromJsonDictionary(const std::string& classType, cocos2d::ui::Widget* widget, const rapidjson::Value& customOptions); + + virtual cocos2d::ui::Widget* widgetFromProtocolBuffers(const protocolbuffers::NodeTree& nodetree); + virtual void setPropsForAllWidgetFromProtocolBuffers(WidgetReaderProtocol* reader, + cocos2d::ui::Widget* widget, + const protocolbuffers::NodeTree& nodetree); + + virtual cocos2d::ui::Widget* widgetFromXML(const tinyxml2::XMLElement* objectData, const std::string& classType); + virtual void setPropsForAllWidgetFromXML(WidgetReaderProtocol* reader, + cocos2d::ui::Widget* widget, + const tinyxml2::XMLElement* objectData); }; diff --git a/cocos/editor-support/cocostudio/CCSSceneReader.cpp b/cocos/editor-support/cocostudio/CCSSceneReader.cpp index c61ba81f2a..52a9e50e5e 100644 --- a/cocos/editor-support/cocostudio/CCSSceneReader.cpp +++ b/cocos/editor-support/cocostudio/CCSSceneReader.cpp @@ -78,15 +78,14 @@ cocos2d::Node* SceneReader::createNodeWithSceneFile(const std::string &fileName, } else if(file_extension == ".CSB") { - ssize_t size = 0; - unsigned char *pBytes = nullptr; do { - std::string binaryFilePath = CCFileUtils::getInstance()->fullPathForFilename(fileName); - pBytes = cocos2d::FileUtils::getInstance()->getFileData(binaryFilePath.c_str(), "rb", &size); - CC_BREAK_IF(pBytes == nullptr || strcmp((char*)pBytes, "") == 0); - CocoLoader tCocoLoader; - if (tCocoLoader.ReadCocoBinBuff((char*)pBytes)) - { + std::string binaryFilePath = CCFileUtils::getInstance()->fullPathForFilename(fileName); + auto fileData = FileUtils::getInstance()->getDataFromFile(binaryFilePath); + auto fileDataBytes = fileData.getBytes(); + CC_BREAK_IF(fileData.isNull()); + CocoLoader tCocoLoader; + if (tCocoLoader.ReadCocoBinBuff((char*)fileDataBytes)) + { stExpCocoNode *tpRootCocoNode = tCocoLoader.GetRootCocoNode(); rapidjson::Type tType = tpRootCocoNode->GetType(&tCocoLoader); if (rapidjson::kObjectType == tType) @@ -341,6 +340,14 @@ Node* SceneReader::createObject(const rapidjson::Value &dict, cocos2d::Node* par createObject(subDict, gb, attachComponent); } + const rapidjson::Value &canvasSizeDict = DICTOOL->getSubDictionary_json(dict, "CanvasSize"); + if (DICTOOL->checkObjectExist_json(canvasSizeDict)) + { + int width = DICTOOL->getIntValue_json(canvasSizeDict, "_width"); + int height = DICTOOL->getIntValue_json(canvasSizeDict, "_height"); + gb->setContentSize(Size(width, height)); + } + return gb; } diff --git a/cocos/editor-support/cocostudio/CMakeLists.txt b/cocos/editor-support/cocostudio/CMakeLists.txt index 6e5907199a..6dd775e1fd 100644 --- a/cocos/editor-support/cocostudio/CMakeLists.txt +++ b/cocos/editor-support/cocostudio/CMakeLists.txt @@ -58,9 +58,9 @@ set(COCOS_CS_SRC editor-support/cocostudio/ActionTimeline/CCActionTimelineCache.cpp editor-support/cocostudio/ActionTimeline/CCActionTimeline.cpp editor-support/cocostudio/ActionTimeline/CCFrame.cpp - editor-support/cocostudio/ActionTimeline/CCNodeReader.cpp editor-support/cocostudio/ActionTimeline/CCTimeLine.cpp - + editor-support/cocostudio/ActionTimeline/CSLoader.cpp + editor-support/cocostudio/CSParseBinary.pb.cc ) include_directories( editor-support ) diff --git a/cocos/editor-support/cocostudio/CSParseBinary.pb.cc b/cocos/editor-support/cocostudio/CSParseBinary.pb.cc new file mode 100644 index 0000000000..64a5e0e1dd --- /dev/null +++ b/cocos/editor-support/cocostudio/CSParseBinary.pb.cc @@ -0,0 +1,20204 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: CSParseBinary.proto + +#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION +#include "CSParseBinary.pb.h" + +#include + +#include +#include +#include +#include +// @@protoc_insertion_point(includes) + +namespace protocolbuffers { + +void protobuf_ShutdownFile_CSParseBinary_2eproto() { + delete CSParseBinary::default_instance_; + delete NodeTree::default_instance_; + delete WidgetOptions::default_instance_; + delete LayoutParameter::default_instance_; + delete ButtonOptions::default_instance_; + delete ResourceData::default_instance_; + delete CheckBoxOptions::default_instance_; + delete ImageViewOptions::default_instance_; + delete TextAtlasOptions::default_instance_; + delete TextBMFontOptions::default_instance_; + delete TextOptions::default_instance_; + delete LoadingBarOptions::default_instance_; + delete ListViewOptions::default_instance_; + delete PageViewOptions::default_instance_; + delete PanelOptions::default_instance_; + delete ScrollViewOptions::default_instance_; + delete SliderOptions::default_instance_; + delete SpriteOptions::default_instance_; + delete TextFieldOptions::default_instance_; + delete TMXTiledMapOptions::default_instance_; + delete ParticleSystemOptions::default_instance_; + delete ProjectNodeOptions::default_instance_; + delete ComponentOptions::default_instance_; + delete ComAudioOptions::default_instance_; + delete NodeAction::default_instance_; + delete TimeLine::default_instance_; + delete Frame::default_instance_; + delete TimeLineBoolFrame::default_instance_; + delete TimeLineIntFrame::default_instance_; + delete TimeLineStringFrame::default_instance_; + delete TimeLinePointFrame::default_instance_; + delete TimeLineColorFrame::default_instance_; + delete TimeLineTextureFrame::default_instance_; +} + +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER +void protobuf_AddDesc_CSParseBinary_2eproto_impl() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + +#else +void protobuf_AddDesc_CSParseBinary_2eproto() { + static bool already_here = false; + if (already_here) return; + already_here = true; + GOOGLE_PROTOBUF_VERIFY_VERSION; + +#endif + CSParseBinary::default_instance_ = new CSParseBinary(); + NodeTree::default_instance_ = new NodeTree(); + WidgetOptions::default_instance_ = new WidgetOptions(); + LayoutParameter::default_instance_ = new LayoutParameter(); + ButtonOptions::default_instance_ = new ButtonOptions(); + ResourceData::default_instance_ = new ResourceData(); + CheckBoxOptions::default_instance_ = new CheckBoxOptions(); + ImageViewOptions::default_instance_ = new ImageViewOptions(); + TextAtlasOptions::default_instance_ = new TextAtlasOptions(); + TextBMFontOptions::default_instance_ = new TextBMFontOptions(); + TextOptions::default_instance_ = new TextOptions(); + LoadingBarOptions::default_instance_ = new LoadingBarOptions(); + ListViewOptions::default_instance_ = new ListViewOptions(); + PageViewOptions::default_instance_ = new PageViewOptions(); + PanelOptions::default_instance_ = new PanelOptions(); + ScrollViewOptions::default_instance_ = new ScrollViewOptions(); + SliderOptions::default_instance_ = new SliderOptions(); + SpriteOptions::default_instance_ = new SpriteOptions(); + TextFieldOptions::default_instance_ = new TextFieldOptions(); + TMXTiledMapOptions::default_instance_ = new TMXTiledMapOptions(); + ParticleSystemOptions::default_instance_ = new ParticleSystemOptions(); + ProjectNodeOptions::default_instance_ = new ProjectNodeOptions(); + ComponentOptions::default_instance_ = new ComponentOptions(); + ComAudioOptions::default_instance_ = new ComAudioOptions(); + NodeAction::default_instance_ = new NodeAction(); + TimeLine::default_instance_ = new TimeLine(); + Frame::default_instance_ = new Frame(); + TimeLineBoolFrame::default_instance_ = new TimeLineBoolFrame(); + TimeLineIntFrame::default_instance_ = new TimeLineIntFrame(); + TimeLineStringFrame::default_instance_ = new TimeLineStringFrame(); + TimeLinePointFrame::default_instance_ = new TimeLinePointFrame(); + TimeLineColorFrame::default_instance_ = new TimeLineColorFrame(); + TimeLineTextureFrame::default_instance_ = new TimeLineTextureFrame(); + CSParseBinary::default_instance_->InitAsDefaultInstance(); + NodeTree::default_instance_->InitAsDefaultInstance(); + WidgetOptions::default_instance_->InitAsDefaultInstance(); + LayoutParameter::default_instance_->InitAsDefaultInstance(); + ButtonOptions::default_instance_->InitAsDefaultInstance(); + ResourceData::default_instance_->InitAsDefaultInstance(); + CheckBoxOptions::default_instance_->InitAsDefaultInstance(); + ImageViewOptions::default_instance_->InitAsDefaultInstance(); + TextAtlasOptions::default_instance_->InitAsDefaultInstance(); + TextBMFontOptions::default_instance_->InitAsDefaultInstance(); + TextOptions::default_instance_->InitAsDefaultInstance(); + LoadingBarOptions::default_instance_->InitAsDefaultInstance(); + ListViewOptions::default_instance_->InitAsDefaultInstance(); + PageViewOptions::default_instance_->InitAsDefaultInstance(); + PanelOptions::default_instance_->InitAsDefaultInstance(); + ScrollViewOptions::default_instance_->InitAsDefaultInstance(); + SliderOptions::default_instance_->InitAsDefaultInstance(); + SpriteOptions::default_instance_->InitAsDefaultInstance(); + TextFieldOptions::default_instance_->InitAsDefaultInstance(); + TMXTiledMapOptions::default_instance_->InitAsDefaultInstance(); + ParticleSystemOptions::default_instance_->InitAsDefaultInstance(); + ProjectNodeOptions::default_instance_->InitAsDefaultInstance(); + ComponentOptions::default_instance_->InitAsDefaultInstance(); + ComAudioOptions::default_instance_->InitAsDefaultInstance(); + NodeAction::default_instance_->InitAsDefaultInstance(); + TimeLine::default_instance_->InitAsDefaultInstance(); + Frame::default_instance_->InitAsDefaultInstance(); + TimeLineBoolFrame::default_instance_->InitAsDefaultInstance(); + TimeLineIntFrame::default_instance_->InitAsDefaultInstance(); + TimeLineStringFrame::default_instance_->InitAsDefaultInstance(); + TimeLinePointFrame::default_instance_->InitAsDefaultInstance(); + TimeLineColorFrame::default_instance_->InitAsDefaultInstance(); + TimeLineTextureFrame::default_instance_->InitAsDefaultInstance(); + ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_CSParseBinary_2eproto); +} + +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER +GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AddDesc_CSParseBinary_2eproto_once_); +void protobuf_AddDesc_CSParseBinary_2eproto() { + ::google::protobuf::::google::protobuf::GoogleOnceInit(&protobuf_AddDesc_CSParseBinary_2eproto_once_, + &protobuf_AddDesc_CSParseBinary_2eproto_impl); +} +#else +// Force AddDescriptors() to be called at static initialization time. +struct StaticDescriptorInitializer_CSParseBinary_2eproto { + StaticDescriptorInitializer_CSParseBinary_2eproto() { + protobuf_AddDesc_CSParseBinary_2eproto(); + } +} static_descriptor_initializer_CSParseBinary_2eproto_; +#endif + +// =================================================================== + +#ifndef _MSC_VER +const int CSParseBinary::kVersionFieldNumber; +const int CSParseBinary::kCocos2DVersionFieldNumber; +const int CSParseBinary::kEditorTypeFieldNumber; +const int CSParseBinary::kDataScaleFieldNumber; +const int CSParseBinary::kDesignHeightFieldNumber; +const int CSParseBinary::kDesignWidthFieldNumber; +const int CSParseBinary::kTexturesFieldNumber; +const int CSParseBinary::kTexturesPngFieldNumber; +const int CSParseBinary::kNodeTreeFieldNumber; +const int CSParseBinary::kActionFieldNumber; +#endif // !_MSC_VER + +CSParseBinary::CSParseBinary() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void CSParseBinary::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + nodetree_ = const_cast< ::protocolbuffers::NodeTree*>( + ::protocolbuffers::NodeTree::internal_default_instance()); +#else + nodetree_ = const_cast< ::protocolbuffers::NodeTree*>(&::protocolbuffers::NodeTree::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + action_ = const_cast< ::protocolbuffers::NodeAction*>( + ::protocolbuffers::NodeAction::internal_default_instance()); +#else + action_ = const_cast< ::protocolbuffers::NodeAction*>(&::protocolbuffers::NodeAction::default_instance()); +#endif +} + +CSParseBinary::CSParseBinary(const CSParseBinary& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void CSParseBinary::SharedCtor() { + _cached_size_ = 0; + version_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + cocos2dversion_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + editortype_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + datascale_ = 0; + designheight_ = 0; + designwidth_ = 0; + nodetree_ = NULL; + action_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +CSParseBinary::~CSParseBinary() { + SharedDtor(); +} + +void CSParseBinary::SharedDtor() { + if (version_ != &::google::protobuf::internal::kEmptyString) { + delete version_; + } + if (cocos2dversion_ != &::google::protobuf::internal::kEmptyString) { + delete cocos2dversion_; + } + if (editortype_ != &::google::protobuf::internal::kEmptyString) { + delete editortype_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete nodetree_; + delete action_; + } +} + +void CSParseBinary::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const CSParseBinary& CSParseBinary::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +CSParseBinary* CSParseBinary::default_instance_ = NULL; + +CSParseBinary* CSParseBinary::New() const { + return new CSParseBinary; +} + +void CSParseBinary::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_version()) { + if (version_ != &::google::protobuf::internal::kEmptyString) { + version_->clear(); + } + } + if (has_cocos2dversion()) { + if (cocos2dversion_ != &::google::protobuf::internal::kEmptyString) { + cocos2dversion_->clear(); + } + } + if (has_editortype()) { + if (editortype_ != &::google::protobuf::internal::kEmptyString) { + editortype_->clear(); + } + } + datascale_ = 0; + designheight_ = 0; + designwidth_ = 0; + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (has_nodetree()) { + if (nodetree_ != NULL) nodetree_->::protocolbuffers::NodeTree::Clear(); + } + if (has_action()) { + if (action_ != NULL) action_->::protocolbuffers::NodeAction::Clear(); + } + } + textures_.Clear(); + texturespng_.Clear(); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool CSParseBinary::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string version = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_version())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_cocos2dVersion; + break; + } + + // optional string cocos2dVersion = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_cocos2dVersion: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_cocos2dversion())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_editorType; + break; + } + + // optional string editorType = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_editorType: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_editortype())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(37)) goto parse_dataScale; + break; + } + + // optional float dataScale = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_dataScale: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &datascale_))); + set_has_datascale(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_designHeight; + break; + } + + // optional int32 designHeight = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_designHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &designheight_))); + set_has_designheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(48)) goto parse_designWidth; + break; + } + + // optional int32 designWidth = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_designWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &designwidth_))); + set_has_designwidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(58)) goto parse_textures; + break; + } + + // repeated string textures = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_textures: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->add_textures())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(58)) goto parse_textures; + if (input->ExpectTag(66)) goto parse_texturesPng; + break; + } + + // repeated string texturesPng = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_texturesPng: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->add_texturespng())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(66)) goto parse_texturesPng; + if (input->ExpectTag(74)) goto parse_nodeTree; + break; + } + + // optional .protocolbuffers.NodeTree nodeTree = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_nodeTree: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_nodetree())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(82)) goto parse_action; + break; + } + + // optional .protocolbuffers.NodeAction action = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_action: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_action())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void CSParseBinary::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string version = 1; + if (has_version()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->version(), output); + } + + // optional string cocos2dVersion = 2; + if (has_cocos2dversion()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->cocos2dversion(), output); + } + + // optional string editorType = 3; + if (has_editortype()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->editortype(), output); + } + + // optional float dataScale = 4; + if (has_datascale()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(4, this->datascale(), output); + } + + // optional int32 designHeight = 5; + if (has_designheight()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->designheight(), output); + } + + // optional int32 designWidth = 6; + if (has_designwidth()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->designwidth(), output); + } + + // repeated string textures = 7; + for (int i = 0; i < this->textures_size(); i++) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 7, this->textures(i), output); + } + + // repeated string texturesPng = 8; + for (int i = 0; i < this->texturespng_size(); i++) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 8, this->texturespng(i), output); + } + + // optional .protocolbuffers.NodeTree nodeTree = 9; + if (has_nodetree()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 9, this->nodetree(), output); + } + + // optional .protocolbuffers.NodeAction action = 10; + if (has_action()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 10, this->action(), output); + } + +} + +int CSParseBinary::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string version = 1; + if (has_version()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->version()); + } + + // optional string cocos2dVersion = 2; + if (has_cocos2dversion()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->cocos2dversion()); + } + + // optional string editorType = 3; + if (has_editortype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->editortype()); + } + + // optional float dataScale = 4; + if (has_datascale()) { + total_size += 1 + 4; + } + + // optional int32 designHeight = 5; + if (has_designheight()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->designheight()); + } + + // optional int32 designWidth = 6; + if (has_designwidth()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->designwidth()); + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional .protocolbuffers.NodeTree nodeTree = 9; + if (has_nodetree()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->nodetree()); + } + + // optional .protocolbuffers.NodeAction action = 10; + if (has_action()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->action()); + } + + } + // repeated string textures = 7; + total_size += 1 * this->textures_size(); + for (int i = 0; i < this->textures_size(); i++) { + total_size += ::google::protobuf::internal::WireFormatLite::StringSize( + this->textures(i)); + } + + // repeated string texturesPng = 8; + total_size += 1 * this->texturespng_size(); + for (int i = 0; i < this->texturespng_size(); i++) { + total_size += ::google::protobuf::internal::WireFormatLite::StringSize( + this->texturespng(i)); + } + + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void CSParseBinary::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void CSParseBinary::MergeFrom(const CSParseBinary& from) { + GOOGLE_CHECK_NE(&from, this); + textures_.MergeFrom(from.textures_); + texturespng_.MergeFrom(from.texturespng_); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_version()) { + set_version(from.version()); + } + if (from.has_cocos2dversion()) { + set_cocos2dversion(from.cocos2dversion()); + } + if (from.has_editortype()) { + set_editortype(from.editortype()); + } + if (from.has_datascale()) { + set_datascale(from.datascale()); + } + if (from.has_designheight()) { + set_designheight(from.designheight()); + } + if (from.has_designwidth()) { + set_designwidth(from.designwidth()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_nodetree()) { + mutable_nodetree()->::protocolbuffers::NodeTree::MergeFrom(from.nodetree()); + } + if (from.has_action()) { + mutable_action()->::protocolbuffers::NodeAction::MergeFrom(from.action()); + } + } +} + +void CSParseBinary::CopyFrom(const CSParseBinary& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool CSParseBinary::IsInitialized() const { + + return true; +} + +void CSParseBinary::Swap(CSParseBinary* other) { + if (other != this) { + std::swap(version_, other->version_); + std::swap(cocos2dversion_, other->cocos2dversion_); + std::swap(editortype_, other->editortype_); + std::swap(datascale_, other->datascale_); + std::swap(designheight_, other->designheight_); + std::swap(designwidth_, other->designwidth_); + textures_.Swap(&other->textures_); + texturespng_.Swap(&other->texturespng_); + std::swap(nodetree_, other->nodetree_); + std::swap(action_, other->action_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string CSParseBinary::GetTypeName() const { + return "protocolbuffers.CSParseBinary"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int NodeTree::kClassnameFieldNumber; +const int NodeTree::kNameFieldNumber; +const int NodeTree::kChildrenFieldNumber; +const int NodeTree::kWidgetOptionsFieldNumber; +const int NodeTree::kButtonOptionsFieldNumber; +const int NodeTree::kCheckBoxOptionsFieldNumber; +const int NodeTree::kImageViewOptionsFieldNumber; +const int NodeTree::kTextAtlasOptionsFieldNumber; +const int NodeTree::kTextBMFontOptionsFieldNumber; +const int NodeTree::kTextOptionsFieldNumber; +const int NodeTree::kLoadingBarOptionsFieldNumber; +const int NodeTree::kSliderOptionsFieldNumber; +const int NodeTree::kTextFieldOptionsFieldNumber; +const int NodeTree::kScrollViewOptionsFieldNumber; +const int NodeTree::kPageViewOptionsFieldNumber; +const int NodeTree::kListViewOptionsFieldNumber; +const int NodeTree::kPanelOptionsFieldNumber; +const int NodeTree::kSpriteOptionsFieldNumber; +const int NodeTree::kTmxTiledMapOptionsFieldNumber; +const int NodeTree::kParticleSystemOptionsFieldNumber; +const int NodeTree::kProjectNodeOptionsFieldNumber; +#endif // !_MSC_VER + +NodeTree::NodeTree() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void NodeTree::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + widgetoptions_ = const_cast< ::protocolbuffers::WidgetOptions*>( + ::protocolbuffers::WidgetOptions::internal_default_instance()); +#else + widgetoptions_ = const_cast< ::protocolbuffers::WidgetOptions*>(&::protocolbuffers::WidgetOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + buttonoptions_ = const_cast< ::protocolbuffers::ButtonOptions*>( + ::protocolbuffers::ButtonOptions::internal_default_instance()); +#else + buttonoptions_ = const_cast< ::protocolbuffers::ButtonOptions*>(&::protocolbuffers::ButtonOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + checkboxoptions_ = const_cast< ::protocolbuffers::CheckBoxOptions*>( + ::protocolbuffers::CheckBoxOptions::internal_default_instance()); +#else + checkboxoptions_ = const_cast< ::protocolbuffers::CheckBoxOptions*>(&::protocolbuffers::CheckBoxOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + imageviewoptions_ = const_cast< ::protocolbuffers::ImageViewOptions*>( + ::protocolbuffers::ImageViewOptions::internal_default_instance()); +#else + imageviewoptions_ = const_cast< ::protocolbuffers::ImageViewOptions*>(&::protocolbuffers::ImageViewOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + textatlasoptions_ = const_cast< ::protocolbuffers::TextAtlasOptions*>( + ::protocolbuffers::TextAtlasOptions::internal_default_instance()); +#else + textatlasoptions_ = const_cast< ::protocolbuffers::TextAtlasOptions*>(&::protocolbuffers::TextAtlasOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + textbmfontoptions_ = const_cast< ::protocolbuffers::TextBMFontOptions*>( + ::protocolbuffers::TextBMFontOptions::internal_default_instance()); +#else + textbmfontoptions_ = const_cast< ::protocolbuffers::TextBMFontOptions*>(&::protocolbuffers::TextBMFontOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + textoptions_ = const_cast< ::protocolbuffers::TextOptions*>( + ::protocolbuffers::TextOptions::internal_default_instance()); +#else + textoptions_ = const_cast< ::protocolbuffers::TextOptions*>(&::protocolbuffers::TextOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + loadingbaroptions_ = const_cast< ::protocolbuffers::LoadingBarOptions*>( + ::protocolbuffers::LoadingBarOptions::internal_default_instance()); +#else + loadingbaroptions_ = const_cast< ::protocolbuffers::LoadingBarOptions*>(&::protocolbuffers::LoadingBarOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + slideroptions_ = const_cast< ::protocolbuffers::SliderOptions*>( + ::protocolbuffers::SliderOptions::internal_default_instance()); +#else + slideroptions_ = const_cast< ::protocolbuffers::SliderOptions*>(&::protocolbuffers::SliderOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + textfieldoptions_ = const_cast< ::protocolbuffers::TextFieldOptions*>( + ::protocolbuffers::TextFieldOptions::internal_default_instance()); +#else + textfieldoptions_ = const_cast< ::protocolbuffers::TextFieldOptions*>(&::protocolbuffers::TextFieldOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + scrollviewoptions_ = const_cast< ::protocolbuffers::ScrollViewOptions*>( + ::protocolbuffers::ScrollViewOptions::internal_default_instance()); +#else + scrollviewoptions_ = const_cast< ::protocolbuffers::ScrollViewOptions*>(&::protocolbuffers::ScrollViewOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + pageviewoptions_ = const_cast< ::protocolbuffers::PageViewOptions*>( + ::protocolbuffers::PageViewOptions::internal_default_instance()); +#else + pageviewoptions_ = const_cast< ::protocolbuffers::PageViewOptions*>(&::protocolbuffers::PageViewOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + listviewoptions_ = const_cast< ::protocolbuffers::ListViewOptions*>( + ::protocolbuffers::ListViewOptions::internal_default_instance()); +#else + listviewoptions_ = const_cast< ::protocolbuffers::ListViewOptions*>(&::protocolbuffers::ListViewOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + paneloptions_ = const_cast< ::protocolbuffers::PanelOptions*>( + ::protocolbuffers::PanelOptions::internal_default_instance()); +#else + paneloptions_ = const_cast< ::protocolbuffers::PanelOptions*>(&::protocolbuffers::PanelOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + spriteoptions_ = const_cast< ::protocolbuffers::SpriteOptions*>( + ::protocolbuffers::SpriteOptions::internal_default_instance()); +#else + spriteoptions_ = const_cast< ::protocolbuffers::SpriteOptions*>(&::protocolbuffers::SpriteOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + tmxtiledmapoptions_ = const_cast< ::protocolbuffers::TMXTiledMapOptions*>( + ::protocolbuffers::TMXTiledMapOptions::internal_default_instance()); +#else + tmxtiledmapoptions_ = const_cast< ::protocolbuffers::TMXTiledMapOptions*>(&::protocolbuffers::TMXTiledMapOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + particlesystemoptions_ = const_cast< ::protocolbuffers::ParticleSystemOptions*>( + ::protocolbuffers::ParticleSystemOptions::internal_default_instance()); +#else + particlesystemoptions_ = const_cast< ::protocolbuffers::ParticleSystemOptions*>(&::protocolbuffers::ParticleSystemOptions::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + projectnodeoptions_ = const_cast< ::protocolbuffers::ProjectNodeOptions*>( + ::protocolbuffers::ProjectNodeOptions::internal_default_instance()); +#else + projectnodeoptions_ = const_cast< ::protocolbuffers::ProjectNodeOptions*>(&::protocolbuffers::ProjectNodeOptions::default_instance()); +#endif +} + +NodeTree::NodeTree(const NodeTree& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void NodeTree::SharedCtor() { + _cached_size_ = 0; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + widgetoptions_ = NULL; + buttonoptions_ = NULL; + checkboxoptions_ = NULL; + imageviewoptions_ = NULL; + textatlasoptions_ = NULL; + textbmfontoptions_ = NULL; + textoptions_ = NULL; + loadingbaroptions_ = NULL; + slideroptions_ = NULL; + textfieldoptions_ = NULL; + scrollviewoptions_ = NULL; + pageviewoptions_ = NULL; + listviewoptions_ = NULL; + paneloptions_ = NULL; + spriteoptions_ = NULL; + tmxtiledmapoptions_ = NULL; + particlesystemoptions_ = NULL; + projectnodeoptions_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +NodeTree::~NodeTree() { + SharedDtor(); +} + +void NodeTree::SharedDtor() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete widgetoptions_; + delete buttonoptions_; + delete checkboxoptions_; + delete imageviewoptions_; + delete textatlasoptions_; + delete textbmfontoptions_; + delete textoptions_; + delete loadingbaroptions_; + delete slideroptions_; + delete textfieldoptions_; + delete scrollviewoptions_; + delete pageviewoptions_; + delete listviewoptions_; + delete paneloptions_; + delete spriteoptions_; + delete tmxtiledmapoptions_; + delete particlesystemoptions_; + delete projectnodeoptions_; + } +} + +void NodeTree::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const NodeTree& NodeTree::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +NodeTree* NodeTree::default_instance_ = NULL; + +NodeTree* NodeTree::New() const { + return new NodeTree; +} + +void NodeTree::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_widgetoptions()) { + if (widgetoptions_ != NULL) widgetoptions_->::protocolbuffers::WidgetOptions::Clear(); + } + if (has_buttonoptions()) { + if (buttonoptions_ != NULL) buttonoptions_->::protocolbuffers::ButtonOptions::Clear(); + } + if (has_checkboxoptions()) { + if (checkboxoptions_ != NULL) checkboxoptions_->::protocolbuffers::CheckBoxOptions::Clear(); + } + if (has_imageviewoptions()) { + if (imageviewoptions_ != NULL) imageviewoptions_->::protocolbuffers::ImageViewOptions::Clear(); + } + if (has_textatlasoptions()) { + if (textatlasoptions_ != NULL) textatlasoptions_->::protocolbuffers::TextAtlasOptions::Clear(); + } + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (has_textbmfontoptions()) { + if (textbmfontoptions_ != NULL) textbmfontoptions_->::protocolbuffers::TextBMFontOptions::Clear(); + } + if (has_textoptions()) { + if (textoptions_ != NULL) textoptions_->::protocolbuffers::TextOptions::Clear(); + } + if (has_loadingbaroptions()) { + if (loadingbaroptions_ != NULL) loadingbaroptions_->::protocolbuffers::LoadingBarOptions::Clear(); + } + if (has_slideroptions()) { + if (slideroptions_ != NULL) slideroptions_->::protocolbuffers::SliderOptions::Clear(); + } + if (has_textfieldoptions()) { + if (textfieldoptions_ != NULL) textfieldoptions_->::protocolbuffers::TextFieldOptions::Clear(); + } + if (has_scrollviewoptions()) { + if (scrollviewoptions_ != NULL) scrollviewoptions_->::protocolbuffers::ScrollViewOptions::Clear(); + } + if (has_pageviewoptions()) { + if (pageviewoptions_ != NULL) pageviewoptions_->::protocolbuffers::PageViewOptions::Clear(); + } + if (has_listviewoptions()) { + if (listviewoptions_ != NULL) listviewoptions_->::protocolbuffers::ListViewOptions::Clear(); + } + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + if (has_paneloptions()) { + if (paneloptions_ != NULL) paneloptions_->::protocolbuffers::PanelOptions::Clear(); + } + if (has_spriteoptions()) { + if (spriteoptions_ != NULL) spriteoptions_->::protocolbuffers::SpriteOptions::Clear(); + } + if (has_tmxtiledmapoptions()) { + if (tmxtiledmapoptions_ != NULL) tmxtiledmapoptions_->::protocolbuffers::TMXTiledMapOptions::Clear(); + } + if (has_particlesystemoptions()) { + if (particlesystemoptions_ != NULL) particlesystemoptions_->::protocolbuffers::ParticleSystemOptions::Clear(); + } + if (has_projectnodeoptions()) { + if (projectnodeoptions_ != NULL) projectnodeoptions_->::protocolbuffers::ProjectNodeOptions::Clear(); + } + } + children_.Clear(); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool NodeTree::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string classname = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_name; + break; + } + + // optional string name = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_name: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_children; + break; + } + + // repeated .protocolbuffers.NodeTree children = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_children: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, add_children())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_children; + if (input->ExpectTag(34)) goto parse_widgetOptions; + break; + } + + // optional .protocolbuffers.WidgetOptions widgetOptions = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_widgetOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_widgetoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_buttonOptions; + break; + } + + // optional .protocolbuffers.ButtonOptions buttonOptions = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_buttonOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_buttonoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(50)) goto parse_checkBoxOptions; + break; + } + + // optional .protocolbuffers.CheckBoxOptions checkBoxOptions = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_checkBoxOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_checkboxoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(58)) goto parse_imageViewOptions; + break; + } + + // optional .protocolbuffers.ImageViewOptions imageViewOptions = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_imageViewOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_imageviewoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(66)) goto parse_textAtlasOptions; + break; + } + + // optional .protocolbuffers.TextAtlasOptions textAtlasOptions = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_textAtlasOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_textatlasoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(74)) goto parse_textBMFontOptions; + break; + } + + // optional .protocolbuffers.TextBMFontOptions textBMFontOptions = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_textBMFontOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_textbmfontoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(82)) goto parse_textOptions; + break; + } + + // optional .protocolbuffers.TextOptions textOptions = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_textOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_textoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(90)) goto parse_loadingBarOptions; + break; + } + + // optional .protocolbuffers.LoadingBarOptions loadingBarOptions = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_loadingBarOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_loadingbaroptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(98)) goto parse_sliderOptions; + break; + } + + // optional .protocolbuffers.SliderOptions sliderOptions = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_sliderOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_slideroptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(106)) goto parse_textFieldOptions; + break; + } + + // optional .protocolbuffers.TextFieldOptions textFieldOptions = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_textFieldOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_textfieldoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(114)) goto parse_scrollViewOptions; + break; + } + + // optional .protocolbuffers.ScrollViewOptions scrollViewOptions = 14; + case 14: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_scrollViewOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_scrollviewoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(122)) goto parse_pageViewOptions; + break; + } + + // optional .protocolbuffers.PageViewOptions pageViewOptions = 15; + case 15: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_pageViewOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_pageviewoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(130)) goto parse_listViewOptions; + break; + } + + // optional .protocolbuffers.ListViewOptions listViewOptions = 16; + case 16: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_listViewOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_listviewoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(138)) goto parse_PanelOptions; + break; + } + + // optional .protocolbuffers.PanelOptions PanelOptions = 17; + case 17: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_PanelOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_paneloptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(146)) goto parse_spriteOptions; + break; + } + + // optional .protocolbuffers.SpriteOptions spriteOptions = 18; + case 18: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_spriteOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_spriteoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(154)) goto parse_tmxTiledMapOptions; + break; + } + + // optional .protocolbuffers.TMXTiledMapOptions tmxTiledMapOptions = 19; + case 19: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_tmxTiledMapOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_tmxtiledmapoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(162)) goto parse_particleSystemOptions; + break; + } + + // optional .protocolbuffers.ParticleSystemOptions particleSystemOptions = 20; + case 20: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_particleSystemOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_particlesystemoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(170)) goto parse_projectNodeOptions; + break; + } + + // optional .protocolbuffers.ProjectNodeOptions projectNodeOptions = 21; + case 21: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_projectNodeOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_projectnodeoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void NodeTree::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string classname = 1; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->classname(), output); + } + + // optional string name = 2; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->name(), output); + } + + // repeated .protocolbuffers.NodeTree children = 3; + for (int i = 0; i < this->children_size(); i++) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 3, this->children(i), output); + } + + // optional .protocolbuffers.WidgetOptions widgetOptions = 4; + if (has_widgetoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 4, this->widgetoptions(), output); + } + + // optional .protocolbuffers.ButtonOptions buttonOptions = 5; + if (has_buttonoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 5, this->buttonoptions(), output); + } + + // optional .protocolbuffers.CheckBoxOptions checkBoxOptions = 6; + if (has_checkboxoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 6, this->checkboxoptions(), output); + } + + // optional .protocolbuffers.ImageViewOptions imageViewOptions = 7; + if (has_imageviewoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 7, this->imageviewoptions(), output); + } + + // optional .protocolbuffers.TextAtlasOptions textAtlasOptions = 8; + if (has_textatlasoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 8, this->textatlasoptions(), output); + } + + // optional .protocolbuffers.TextBMFontOptions textBMFontOptions = 9; + if (has_textbmfontoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 9, this->textbmfontoptions(), output); + } + + // optional .protocolbuffers.TextOptions textOptions = 10; + if (has_textoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 10, this->textoptions(), output); + } + + // optional .protocolbuffers.LoadingBarOptions loadingBarOptions = 11; + if (has_loadingbaroptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 11, this->loadingbaroptions(), output); + } + + // optional .protocolbuffers.SliderOptions sliderOptions = 12; + if (has_slideroptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 12, this->slideroptions(), output); + } + + // optional .protocolbuffers.TextFieldOptions textFieldOptions = 13; + if (has_textfieldoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 13, this->textfieldoptions(), output); + } + + // optional .protocolbuffers.ScrollViewOptions scrollViewOptions = 14; + if (has_scrollviewoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 14, this->scrollviewoptions(), output); + } + + // optional .protocolbuffers.PageViewOptions pageViewOptions = 15; + if (has_pageviewoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 15, this->pageviewoptions(), output); + } + + // optional .protocolbuffers.ListViewOptions listViewOptions = 16; + if (has_listviewoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 16, this->listviewoptions(), output); + } + + // optional .protocolbuffers.PanelOptions PanelOptions = 17; + if (has_paneloptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 17, this->paneloptions(), output); + } + + // optional .protocolbuffers.SpriteOptions spriteOptions = 18; + if (has_spriteoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 18, this->spriteoptions(), output); + } + + // optional .protocolbuffers.TMXTiledMapOptions tmxTiledMapOptions = 19; + if (has_tmxtiledmapoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 19, this->tmxtiledmapoptions(), output); + } + + // optional .protocolbuffers.ParticleSystemOptions particleSystemOptions = 20; + if (has_particlesystemoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 20, this->particlesystemoptions(), output); + } + + // optional .protocolbuffers.ProjectNodeOptions projectNodeOptions = 21; + if (has_projectnodeoptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 21, this->projectnodeoptions(), output); + } + +} + +int NodeTree::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string classname = 1; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string name = 2; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional .protocolbuffers.WidgetOptions widgetOptions = 4; + if (has_widgetoptions()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->widgetoptions()); + } + + // optional .protocolbuffers.ButtonOptions buttonOptions = 5; + if (has_buttonoptions()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->buttonoptions()); + } + + // optional .protocolbuffers.CheckBoxOptions checkBoxOptions = 6; + if (has_checkboxoptions()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->checkboxoptions()); + } + + // optional .protocolbuffers.ImageViewOptions imageViewOptions = 7; + if (has_imageviewoptions()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->imageviewoptions()); + } + + // optional .protocolbuffers.TextAtlasOptions textAtlasOptions = 8; + if (has_textatlasoptions()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->textatlasoptions()); + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional .protocolbuffers.TextBMFontOptions textBMFontOptions = 9; + if (has_textbmfontoptions()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->textbmfontoptions()); + } + + // optional .protocolbuffers.TextOptions textOptions = 10; + if (has_textoptions()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->textoptions()); + } + + // optional .protocolbuffers.LoadingBarOptions loadingBarOptions = 11; + if (has_loadingbaroptions()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->loadingbaroptions()); + } + + // optional .protocolbuffers.SliderOptions sliderOptions = 12; + if (has_slideroptions()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->slideroptions()); + } + + // optional .protocolbuffers.TextFieldOptions textFieldOptions = 13; + if (has_textfieldoptions()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->textfieldoptions()); + } + + // optional .protocolbuffers.ScrollViewOptions scrollViewOptions = 14; + if (has_scrollviewoptions()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->scrollviewoptions()); + } + + // optional .protocolbuffers.PageViewOptions pageViewOptions = 15; + if (has_pageviewoptions()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->pageviewoptions()); + } + + // optional .protocolbuffers.ListViewOptions listViewOptions = 16; + if (has_listviewoptions()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->listviewoptions()); + } + + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + // optional .protocolbuffers.PanelOptions PanelOptions = 17; + if (has_paneloptions()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->paneloptions()); + } + + // optional .protocolbuffers.SpriteOptions spriteOptions = 18; + if (has_spriteoptions()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->spriteoptions()); + } + + // optional .protocolbuffers.TMXTiledMapOptions tmxTiledMapOptions = 19; + if (has_tmxtiledmapoptions()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->tmxtiledmapoptions()); + } + + // optional .protocolbuffers.ParticleSystemOptions particleSystemOptions = 20; + if (has_particlesystemoptions()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->particlesystemoptions()); + } + + // optional .protocolbuffers.ProjectNodeOptions projectNodeOptions = 21; + if (has_projectnodeoptions()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->projectnodeoptions()); + } + + } + // repeated .protocolbuffers.NodeTree children = 3; + total_size += 1 * this->children_size(); + for (int i = 0; i < this->children_size(); i++) { + total_size += + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->children(i)); + } + + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void NodeTree::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void NodeTree::MergeFrom(const NodeTree& from) { + GOOGLE_CHECK_NE(&from, this); + children_.MergeFrom(from.children_); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_widgetoptions()) { + mutable_widgetoptions()->::protocolbuffers::WidgetOptions::MergeFrom(from.widgetoptions()); + } + if (from.has_buttonoptions()) { + mutable_buttonoptions()->::protocolbuffers::ButtonOptions::MergeFrom(from.buttonoptions()); + } + if (from.has_checkboxoptions()) { + mutable_checkboxoptions()->::protocolbuffers::CheckBoxOptions::MergeFrom(from.checkboxoptions()); + } + if (from.has_imageviewoptions()) { + mutable_imageviewoptions()->::protocolbuffers::ImageViewOptions::MergeFrom(from.imageviewoptions()); + } + if (from.has_textatlasoptions()) { + mutable_textatlasoptions()->::protocolbuffers::TextAtlasOptions::MergeFrom(from.textatlasoptions()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_textbmfontoptions()) { + mutable_textbmfontoptions()->::protocolbuffers::TextBMFontOptions::MergeFrom(from.textbmfontoptions()); + } + if (from.has_textoptions()) { + mutable_textoptions()->::protocolbuffers::TextOptions::MergeFrom(from.textoptions()); + } + if (from.has_loadingbaroptions()) { + mutable_loadingbaroptions()->::protocolbuffers::LoadingBarOptions::MergeFrom(from.loadingbaroptions()); + } + if (from.has_slideroptions()) { + mutable_slideroptions()->::protocolbuffers::SliderOptions::MergeFrom(from.slideroptions()); + } + if (from.has_textfieldoptions()) { + mutable_textfieldoptions()->::protocolbuffers::TextFieldOptions::MergeFrom(from.textfieldoptions()); + } + if (from.has_scrollviewoptions()) { + mutable_scrollviewoptions()->::protocolbuffers::ScrollViewOptions::MergeFrom(from.scrollviewoptions()); + } + if (from.has_pageviewoptions()) { + mutable_pageviewoptions()->::protocolbuffers::PageViewOptions::MergeFrom(from.pageviewoptions()); + } + if (from.has_listviewoptions()) { + mutable_listviewoptions()->::protocolbuffers::ListViewOptions::MergeFrom(from.listviewoptions()); + } + } + if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) { + if (from.has_paneloptions()) { + mutable_paneloptions()->::protocolbuffers::PanelOptions::MergeFrom(from.paneloptions()); + } + if (from.has_spriteoptions()) { + mutable_spriteoptions()->::protocolbuffers::SpriteOptions::MergeFrom(from.spriteoptions()); + } + if (from.has_tmxtiledmapoptions()) { + mutable_tmxtiledmapoptions()->::protocolbuffers::TMXTiledMapOptions::MergeFrom(from.tmxtiledmapoptions()); + } + if (from.has_particlesystemoptions()) { + mutable_particlesystemoptions()->::protocolbuffers::ParticleSystemOptions::MergeFrom(from.particlesystemoptions()); + } + if (from.has_projectnodeoptions()) { + mutable_projectnodeoptions()->::protocolbuffers::ProjectNodeOptions::MergeFrom(from.projectnodeoptions()); + } + } +} + +void NodeTree::CopyFrom(const NodeTree& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool NodeTree::IsInitialized() const { + + return true; +} + +void NodeTree::Swap(NodeTree* other) { + if (other != this) { + std::swap(classname_, other->classname_); + std::swap(name_, other->name_); + children_.Swap(&other->children_); + std::swap(widgetoptions_, other->widgetoptions_); + std::swap(buttonoptions_, other->buttonoptions_); + std::swap(checkboxoptions_, other->checkboxoptions_); + std::swap(imageviewoptions_, other->imageviewoptions_); + std::swap(textatlasoptions_, other->textatlasoptions_); + std::swap(textbmfontoptions_, other->textbmfontoptions_); + std::swap(textoptions_, other->textoptions_); + std::swap(loadingbaroptions_, other->loadingbaroptions_); + std::swap(slideroptions_, other->slideroptions_); + std::swap(textfieldoptions_, other->textfieldoptions_); + std::swap(scrollviewoptions_, other->scrollviewoptions_); + std::swap(pageviewoptions_, other->pageviewoptions_); + std::swap(listviewoptions_, other->listviewoptions_); + std::swap(paneloptions_, other->paneloptions_); + std::swap(spriteoptions_, other->spriteoptions_); + std::swap(tmxtiledmapoptions_, other->tmxtiledmapoptions_); + std::swap(particlesystemoptions_, other->particlesystemoptions_); + std::swap(projectnodeoptions_, other->projectnodeoptions_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string NodeTree::GetTypeName() const { + return "protocolbuffers.NodeTree"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int WidgetOptions::kXFieldNumber; +const int WidgetOptions::kYFieldNumber; +const int WidgetOptions::kScaleXFieldNumber; +const int WidgetOptions::kScaleYFieldNumber; +const int WidgetOptions::kRotationFieldNumber; +const int WidgetOptions::kFlipXFieldNumber; +const int WidgetOptions::kFlipYFieldNumber; +const int WidgetOptions::kColorBFieldNumber; +const int WidgetOptions::kColorGFieldNumber; +const int WidgetOptions::kColorRFieldNumber; +const int WidgetOptions::kOpacityFieldNumber; +const int WidgetOptions::kTouchAbleFieldNumber; +const int WidgetOptions::kVisibleFieldNumber; +const int WidgetOptions::kZorderFieldNumber; +const int WidgetOptions::kClassTypeFieldNumber; +const int WidgetOptions::kWidthFieldNumber; +const int WidgetOptions::kHeightFieldNumber; +const int WidgetOptions::kPositionTypeFieldNumber; +const int WidgetOptions::kPositionPercentXFieldNumber; +const int WidgetOptions::kPositionPercentYFieldNumber; +const int WidgetOptions::kSizeTypeFieldNumber; +const int WidgetOptions::kSizePercentXFieldNumber; +const int WidgetOptions::kSizePercentYFieldNumber; +const int WidgetOptions::kUseMergedTextureFieldNumber; +const int WidgetOptions::kActionTagFieldNumber; +const int WidgetOptions::kTagFieldNumber; +const int WidgetOptions::kAnchorPointXFieldNumber; +const int WidgetOptions::kAnchorPointYFieldNumber; +const int WidgetOptions::kIgnoreSizeFieldNumber; +const int WidgetOptions::kRotationSkewXFieldNumber; +const int WidgetOptions::kRotationSkewYFieldNumber; +const int WidgetOptions::kLayoutParameterFieldNumber; +const int WidgetOptions::kCustomPropertyFieldNumber; +const int WidgetOptions::kFrameEventFieldNumber; +const int WidgetOptions::kNameFieldNumber; +const int WidgetOptions::kAlphaFieldNumber; +const int WidgetOptions::kComponentOptionsFieldNumber; +#endif // !_MSC_VER + +WidgetOptions::WidgetOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void WidgetOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + layoutparameter_ = const_cast< ::protocolbuffers::LayoutParameter*>( + ::protocolbuffers::LayoutParameter::internal_default_instance()); +#else + layoutparameter_ = const_cast< ::protocolbuffers::LayoutParameter*>(&::protocolbuffers::LayoutParameter::default_instance()); +#endif +} + +WidgetOptions::WidgetOptions(const WidgetOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void WidgetOptions::SharedCtor() { + _cached_size_ = 0; + x_ = 0; + y_ = 0; + scalex_ = 0; + scaley_ = 0; + rotation_ = 0; + flipx_ = false; + flipy_ = false; + colorb_ = 0; + colorg_ = 0; + colorr_ = 0; + opacity_ = 0; + touchable_ = false; + visible_ = false; + zorder_ = 0; + classtype_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + width_ = 0; + height_ = 0; + positiontype_ = 0; + positionpercentx_ = 0; + positionpercenty_ = 0; + sizetype_ = 0; + sizepercentx_ = 0; + sizepercenty_ = 0; + usemergedtexture_ = false; + actiontag_ = 0; + tag_ = 0; + anchorpointx_ = 0; + anchorpointy_ = 0; + ignoresize_ = false; + rotationskewx_ = 0; + rotationskewy_ = 0; + layoutparameter_ = NULL; + customproperty_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + frameevent_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + alpha_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +WidgetOptions::~WidgetOptions() { + SharedDtor(); +} + +void WidgetOptions::SharedDtor() { + if (classtype_ != &::google::protobuf::internal::kEmptyString) { + delete classtype_; + } + if (customproperty_ != &::google::protobuf::internal::kEmptyString) { + delete customproperty_; + } + if (frameevent_ != &::google::protobuf::internal::kEmptyString) { + delete frameevent_; + } + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete layoutparameter_; + } +} + +void WidgetOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const WidgetOptions& WidgetOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +WidgetOptions* WidgetOptions::default_instance_ = NULL; + +WidgetOptions* WidgetOptions::New() const { + return new WidgetOptions; +} + +void WidgetOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + x_ = 0; + y_ = 0; + scalex_ = 0; + scaley_ = 0; + rotation_ = 0; + flipx_ = false; + flipy_ = false; + colorb_ = 0; + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + colorg_ = 0; + colorr_ = 0; + opacity_ = 0; + touchable_ = false; + visible_ = false; + zorder_ = 0; + if (has_classtype()) { + if (classtype_ != &::google::protobuf::internal::kEmptyString) { + classtype_->clear(); + } + } + width_ = 0; + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + height_ = 0; + positiontype_ = 0; + positionpercentx_ = 0; + positionpercenty_ = 0; + sizetype_ = 0; + sizepercentx_ = 0; + sizepercenty_ = 0; + usemergedtexture_ = false; + } + if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) { + actiontag_ = 0; + tag_ = 0; + anchorpointx_ = 0; + anchorpointy_ = 0; + ignoresize_ = false; + rotationskewx_ = 0; + rotationskewy_ = 0; + if (has_layoutparameter()) { + if (layoutparameter_ != NULL) layoutparameter_->::protocolbuffers::LayoutParameter::Clear(); + } + } + if (_has_bits_[32 / 32] & (0xffu << (32 % 32))) { + if (has_customproperty()) { + if (customproperty_ != &::google::protobuf::internal::kEmptyString) { + customproperty_->clear(); + } + } + if (has_frameevent()) { + if (frameevent_ != &::google::protobuf::internal::kEmptyString) { + frameevent_->clear(); + } + } + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + alpha_ = 0; + } + componentoptions_.Clear(); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool WidgetOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional float x = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &x_))); + set_has_x(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(21)) goto parse_y; + break; + } + + // optional float y = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_y: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &y_))); + set_has_y(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(29)) goto parse_scaleX; + break; + } + + // optional float scaleX = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scaleX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scalex_))); + set_has_scalex(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(37)) goto parse_scaleY; + break; + } + + // optional float scaleY = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scaleY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scaley_))); + set_has_scaley(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(45)) goto parse_rotation; + break; + } + + // optional float rotation = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_rotation: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &rotation_))); + set_has_rotation(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(48)) goto parse_flipX; + break; + } + + // optional bool flipX = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_flipX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &flipx_))); + set_has_flipx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(56)) goto parse_flipY; + break; + } + + // optional bool flipY = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_flipY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &flipy_))); + set_has_flipy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(64)) goto parse_colorB; + break; + } + + // optional int32 colorB = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_colorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &colorb_))); + set_has_colorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(72)) goto parse_colorG; + break; + } + + // optional int32 colorG = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_colorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &colorg_))); + set_has_colorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(80)) goto parse_colorR; + break; + } + + // optional int32 colorR = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_colorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &colorr_))); + set_has_colorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(88)) goto parse_opacity; + break; + } + + // optional int32 opacity = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_opacity: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &opacity_))); + set_has_opacity(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(96)) goto parse_touchAble; + break; + } + + // optional bool touchAble = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_touchAble: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &touchable_))); + set_has_touchable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(104)) goto parse_visible; + break; + } + + // optional bool visible = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_visible: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &visible_))); + set_has_visible(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(112)) goto parse_zorder; + break; + } + + // optional int32 zorder = 14; + case 14: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_zorder: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &zorder_))); + set_has_zorder(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(122)) goto parse_classType; + break; + } + + // optional string classType = 15; + case 15: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classType: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classtype())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(133)) goto parse_width; + break; + } + + // optional float width = 16; + case 16: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_width: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &width_))); + set_has_width(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(141)) goto parse_height; + break; + } + + // optional float height = 17; + case 17: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_height: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &height_))); + set_has_height(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(144)) goto parse_positionType; + break; + } + + // optional int32 positionType = 18; + case 18: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_positionType: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &positiontype_))); + set_has_positiontype(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(157)) goto parse_positionPercentX; + break; + } + + // optional float positionPercentX = 19; + case 19: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_positionPercentX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &positionpercentx_))); + set_has_positionpercentx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(165)) goto parse_positionPercentY; + break; + } + + // optional float positionPercentY = 20; + case 20: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_positionPercentY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &positionpercenty_))); + set_has_positionpercenty(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(168)) goto parse_sizeType; + break; + } + + // optional int32 sizeType = 21; + case 21: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_sizeType: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &sizetype_))); + set_has_sizetype(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(181)) goto parse_sizePercentX; + break; + } + + // optional float sizePercentX = 22; + case 22: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_sizePercentX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &sizepercentx_))); + set_has_sizepercentx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(189)) goto parse_sizePercentY; + break; + } + + // optional float sizePercentY = 23; + case 23: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_sizePercentY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &sizepercenty_))); + set_has_sizepercenty(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(192)) goto parse_useMergedTexture; + break; + } + + // optional bool useMergedTexture = 24; + case 24: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_useMergedTexture: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &usemergedtexture_))); + set_has_usemergedtexture(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(200)) goto parse_actionTag; + break; + } + + // optional int32 actionTag = 25; + case 25: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_actionTag: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &actiontag_))); + set_has_actiontag(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(208)) goto parse_tag; + break; + } + + // optional int32 tag = 26; + case 26: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_tag: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &tag_))); + set_has_tag(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(221)) goto parse_anchorPointX; + break; + } + + // optional float anchorPointX = 27; + case 27: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_anchorPointX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &anchorpointx_))); + set_has_anchorpointx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(229)) goto parse_anchorPointY; + break; + } + + // optional float anchorPointY = 28; + case 28: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_anchorPointY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &anchorpointy_))); + set_has_anchorpointy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(232)) goto parse_ignoreSize; + break; + } + + // optional bool ignoreSize = 29; + case 29: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_ignoreSize: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &ignoresize_))); + set_has_ignoresize(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(245)) goto parse_rotationSkewX; + break; + } + + // optional float rotationSkewX = 30; + case 30: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_rotationSkewX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &rotationskewx_))); + set_has_rotationskewx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(253)) goto parse_rotationSkewY; + break; + } + + // optional float rotationSkewY = 31; + case 31: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_rotationSkewY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &rotationskewy_))); + set_has_rotationskewy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(258)) goto parse_layoutParameter; + break; + } + + // optional .protocolbuffers.LayoutParameter layoutParameter = 32; + case 32: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_layoutParameter: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_layoutparameter())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(266)) goto parse_customProperty; + break; + } + + // optional string customProperty = 33; + case 33: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_customProperty: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_customproperty())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(274)) goto parse_frameEvent; + break; + } + + // optional string frameEvent = 34; + case 34: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_frameEvent: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_frameevent())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(282)) goto parse_name; + break; + } + + // optional string name = 35; + case 35: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_name: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(290)) goto parse_componentOptions; + break; + } + + // repeated .protocolbuffers.ComponentOptions componentOptions = 36; + case 36: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_componentOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, add_componentoptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(290)) goto parse_componentOptions; + if (input->ExpectTag(296)) goto parse_Alpha; + break; + } + + // optional int32 Alpha = 37; + case 37: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_Alpha: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &alpha_))); + set_has_alpha(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void WidgetOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional float x = 1; + if (has_x()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(1, this->x(), output); + } + + // optional float y = 2; + if (has_y()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->y(), output); + } + + // optional float scaleX = 3; + if (has_scalex()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(3, this->scalex(), output); + } + + // optional float scaleY = 4; + if (has_scaley()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(4, this->scaley(), output); + } + + // optional float rotation = 5; + if (has_rotation()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(5, this->rotation(), output); + } + + // optional bool flipX = 6; + if (has_flipx()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(6, this->flipx(), output); + } + + // optional bool flipY = 7; + if (has_flipy()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(7, this->flipy(), output); + } + + // optional int32 colorB = 8; + if (has_colorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(8, this->colorb(), output); + } + + // optional int32 colorG = 9; + if (has_colorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(9, this->colorg(), output); + } + + // optional int32 colorR = 10; + if (has_colorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(10, this->colorr(), output); + } + + // optional int32 opacity = 11; + if (has_opacity()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(11, this->opacity(), output); + } + + // optional bool touchAble = 12; + if (has_touchable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(12, this->touchable(), output); + } + + // optional bool visible = 13; + if (has_visible()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(13, this->visible(), output); + } + + // optional int32 zorder = 14; + if (has_zorder()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(14, this->zorder(), output); + } + + // optional string classType = 15; + if (has_classtype()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 15, this->classtype(), output); + } + + // optional float width = 16; + if (has_width()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(16, this->width(), output); + } + + // optional float height = 17; + if (has_height()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(17, this->height(), output); + } + + // optional int32 positionType = 18; + if (has_positiontype()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(18, this->positiontype(), output); + } + + // optional float positionPercentX = 19; + if (has_positionpercentx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(19, this->positionpercentx(), output); + } + + // optional float positionPercentY = 20; + if (has_positionpercenty()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(20, this->positionpercenty(), output); + } + + // optional int32 sizeType = 21; + if (has_sizetype()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(21, this->sizetype(), output); + } + + // optional float sizePercentX = 22; + if (has_sizepercentx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(22, this->sizepercentx(), output); + } + + // optional float sizePercentY = 23; + if (has_sizepercenty()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(23, this->sizepercenty(), output); + } + + // optional bool useMergedTexture = 24; + if (has_usemergedtexture()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(24, this->usemergedtexture(), output); + } + + // optional int32 actionTag = 25; + if (has_actiontag()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(25, this->actiontag(), output); + } + + // optional int32 tag = 26; + if (has_tag()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(26, this->tag(), output); + } + + // optional float anchorPointX = 27; + if (has_anchorpointx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(27, this->anchorpointx(), output); + } + + // optional float anchorPointY = 28; + if (has_anchorpointy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(28, this->anchorpointy(), output); + } + + // optional bool ignoreSize = 29; + if (has_ignoresize()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(29, this->ignoresize(), output); + } + + // optional float rotationSkewX = 30; + if (has_rotationskewx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(30, this->rotationskewx(), output); + } + + // optional float rotationSkewY = 31; + if (has_rotationskewy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(31, this->rotationskewy(), output); + } + + // optional .protocolbuffers.LayoutParameter layoutParameter = 32; + if (has_layoutparameter()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 32, this->layoutparameter(), output); + } + + // optional string customProperty = 33; + if (has_customproperty()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 33, this->customproperty(), output); + } + + // optional string frameEvent = 34; + if (has_frameevent()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 34, this->frameevent(), output); + } + + // optional string name = 35; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 35, this->name(), output); + } + + // repeated .protocolbuffers.ComponentOptions componentOptions = 36; + for (int i = 0; i < this->componentoptions_size(); i++) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 36, this->componentoptions(i), output); + } + + // optional int32 Alpha = 37; + if (has_alpha()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(37, this->alpha(), output); + } + +} + +int WidgetOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional float x = 1; + if (has_x()) { + total_size += 1 + 4; + } + + // optional float y = 2; + if (has_y()) { + total_size += 1 + 4; + } + + // optional float scaleX = 3; + if (has_scalex()) { + total_size += 1 + 4; + } + + // optional float scaleY = 4; + if (has_scaley()) { + total_size += 1 + 4; + } + + // optional float rotation = 5; + if (has_rotation()) { + total_size += 1 + 4; + } + + // optional bool flipX = 6; + if (has_flipx()) { + total_size += 1 + 1; + } + + // optional bool flipY = 7; + if (has_flipy()) { + total_size += 1 + 1; + } + + // optional int32 colorB = 8; + if (has_colorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->colorb()); + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional int32 colorG = 9; + if (has_colorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->colorg()); + } + + // optional int32 colorR = 10; + if (has_colorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->colorr()); + } + + // optional int32 opacity = 11; + if (has_opacity()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->opacity()); + } + + // optional bool touchAble = 12; + if (has_touchable()) { + total_size += 1 + 1; + } + + // optional bool visible = 13; + if (has_visible()) { + total_size += 1 + 1; + } + + // optional int32 zorder = 14; + if (has_zorder()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->zorder()); + } + + // optional string classType = 15; + if (has_classtype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classtype()); + } + + // optional float width = 16; + if (has_width()) { + total_size += 2 + 4; + } + + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + // optional float height = 17; + if (has_height()) { + total_size += 2 + 4; + } + + // optional int32 positionType = 18; + if (has_positiontype()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->positiontype()); + } + + // optional float positionPercentX = 19; + if (has_positionpercentx()) { + total_size += 2 + 4; + } + + // optional float positionPercentY = 20; + if (has_positionpercenty()) { + total_size += 2 + 4; + } + + // optional int32 sizeType = 21; + if (has_sizetype()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->sizetype()); + } + + // optional float sizePercentX = 22; + if (has_sizepercentx()) { + total_size += 2 + 4; + } + + // optional float sizePercentY = 23; + if (has_sizepercenty()) { + total_size += 2 + 4; + } + + // optional bool useMergedTexture = 24; + if (has_usemergedtexture()) { + total_size += 2 + 1; + } + + } + if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) { + // optional int32 actionTag = 25; + if (has_actiontag()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->actiontag()); + } + + // optional int32 tag = 26; + if (has_tag()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->tag()); + } + + // optional float anchorPointX = 27; + if (has_anchorpointx()) { + total_size += 2 + 4; + } + + // optional float anchorPointY = 28; + if (has_anchorpointy()) { + total_size += 2 + 4; + } + + // optional bool ignoreSize = 29; + if (has_ignoresize()) { + total_size += 2 + 1; + } + + // optional float rotationSkewX = 30; + if (has_rotationskewx()) { + total_size += 2 + 4; + } + + // optional float rotationSkewY = 31; + if (has_rotationskewy()) { + total_size += 2 + 4; + } + + // optional .protocolbuffers.LayoutParameter layoutParameter = 32; + if (has_layoutparameter()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->layoutparameter()); + } + + } + if (_has_bits_[32 / 32] & (0xffu << (32 % 32))) { + // optional string customProperty = 33; + if (has_customproperty()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->customproperty()); + } + + // optional string frameEvent = 34; + if (has_frameevent()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->frameevent()); + } + + // optional string name = 35; + if (has_name()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional int32 Alpha = 37; + if (has_alpha()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->alpha()); + } + + } + // repeated .protocolbuffers.ComponentOptions componentOptions = 36; + total_size += 2 * this->componentoptions_size(); + for (int i = 0; i < this->componentoptions_size(); i++) { + total_size += + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->componentoptions(i)); + } + + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void WidgetOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void WidgetOptions::MergeFrom(const WidgetOptions& from) { + GOOGLE_CHECK_NE(&from, this); + componentoptions_.MergeFrom(from.componentoptions_); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_x()) { + set_x(from.x()); + } + if (from.has_y()) { + set_y(from.y()); + } + if (from.has_scalex()) { + set_scalex(from.scalex()); + } + if (from.has_scaley()) { + set_scaley(from.scaley()); + } + if (from.has_rotation()) { + set_rotation(from.rotation()); + } + if (from.has_flipx()) { + set_flipx(from.flipx()); + } + if (from.has_flipy()) { + set_flipy(from.flipy()); + } + if (from.has_colorb()) { + set_colorb(from.colorb()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_colorg()) { + set_colorg(from.colorg()); + } + if (from.has_colorr()) { + set_colorr(from.colorr()); + } + if (from.has_opacity()) { + set_opacity(from.opacity()); + } + if (from.has_touchable()) { + set_touchable(from.touchable()); + } + if (from.has_visible()) { + set_visible(from.visible()); + } + if (from.has_zorder()) { + set_zorder(from.zorder()); + } + if (from.has_classtype()) { + set_classtype(from.classtype()); + } + if (from.has_width()) { + set_width(from.width()); + } + } + if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) { + if (from.has_height()) { + set_height(from.height()); + } + if (from.has_positiontype()) { + set_positiontype(from.positiontype()); + } + if (from.has_positionpercentx()) { + set_positionpercentx(from.positionpercentx()); + } + if (from.has_positionpercenty()) { + set_positionpercenty(from.positionpercenty()); + } + if (from.has_sizetype()) { + set_sizetype(from.sizetype()); + } + if (from.has_sizepercentx()) { + set_sizepercentx(from.sizepercentx()); + } + if (from.has_sizepercenty()) { + set_sizepercenty(from.sizepercenty()); + } + if (from.has_usemergedtexture()) { + set_usemergedtexture(from.usemergedtexture()); + } + } + if (from._has_bits_[24 / 32] & (0xffu << (24 % 32))) { + if (from.has_actiontag()) { + set_actiontag(from.actiontag()); + } + if (from.has_tag()) { + set_tag(from.tag()); + } + if (from.has_anchorpointx()) { + set_anchorpointx(from.anchorpointx()); + } + if (from.has_anchorpointy()) { + set_anchorpointy(from.anchorpointy()); + } + if (from.has_ignoresize()) { + set_ignoresize(from.ignoresize()); + } + if (from.has_rotationskewx()) { + set_rotationskewx(from.rotationskewx()); + } + if (from.has_rotationskewy()) { + set_rotationskewy(from.rotationskewy()); + } + if (from.has_layoutparameter()) { + mutable_layoutparameter()->::protocolbuffers::LayoutParameter::MergeFrom(from.layoutparameter()); + } + } + if (from._has_bits_[32 / 32] & (0xffu << (32 % 32))) { + if (from.has_customproperty()) { + set_customproperty(from.customproperty()); + } + if (from.has_frameevent()) { + set_frameevent(from.frameevent()); + } + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_alpha()) { + set_alpha(from.alpha()); + } + } +} + +void WidgetOptions::CopyFrom(const WidgetOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool WidgetOptions::IsInitialized() const { + + return true; +} + +void WidgetOptions::Swap(WidgetOptions* other) { + if (other != this) { + std::swap(x_, other->x_); + std::swap(y_, other->y_); + std::swap(scalex_, other->scalex_); + std::swap(scaley_, other->scaley_); + std::swap(rotation_, other->rotation_); + std::swap(flipx_, other->flipx_); + std::swap(flipy_, other->flipy_); + std::swap(colorb_, other->colorb_); + std::swap(colorg_, other->colorg_); + std::swap(colorr_, other->colorr_); + std::swap(opacity_, other->opacity_); + std::swap(touchable_, other->touchable_); + std::swap(visible_, other->visible_); + std::swap(zorder_, other->zorder_); + std::swap(classtype_, other->classtype_); + std::swap(width_, other->width_); + std::swap(height_, other->height_); + std::swap(positiontype_, other->positiontype_); + std::swap(positionpercentx_, other->positionpercentx_); + std::swap(positionpercenty_, other->positionpercenty_); + std::swap(sizetype_, other->sizetype_); + std::swap(sizepercentx_, other->sizepercentx_); + std::swap(sizepercenty_, other->sizepercenty_); + std::swap(usemergedtexture_, other->usemergedtexture_); + std::swap(actiontag_, other->actiontag_); + std::swap(tag_, other->tag_); + std::swap(anchorpointx_, other->anchorpointx_); + std::swap(anchorpointy_, other->anchorpointy_); + std::swap(ignoresize_, other->ignoresize_); + std::swap(rotationskewx_, other->rotationskewx_); + std::swap(rotationskewy_, other->rotationskewy_); + std::swap(layoutparameter_, other->layoutparameter_); + std::swap(customproperty_, other->customproperty_); + std::swap(frameevent_, other->frameevent_); + std::swap(name_, other->name_); + std::swap(alpha_, other->alpha_); + componentoptions_.Swap(&other->componentoptions_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_has_bits_[1], other->_has_bits_[1]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string WidgetOptions::GetTypeName() const { + return "protocolbuffers.WidgetOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int LayoutParameter::kTypeFieldNumber; +const int LayoutParameter::kGravityFieldNumber; +const int LayoutParameter::kRelativeNameFieldNumber; +const int LayoutParameter::kRelativeToNameFieldNumber; +const int LayoutParameter::kAlignFieldNumber; +const int LayoutParameter::kMarginLeftFieldNumber; +const int LayoutParameter::kMarginTopFieldNumber; +const int LayoutParameter::kMarginRightFieldNumber; +const int LayoutParameter::kMarginDownFieldNumber; +const int LayoutParameter::kLayoutEageTypeFieldNumber; +const int LayoutParameter::kLayoutNormalHorizontalFieldNumber; +const int LayoutParameter::kLayoutNormalVerticalFieldNumber; +const int LayoutParameter::kLayoutParentHorizontalFieldNumber; +const int LayoutParameter::kLayoutParentVerticalFieldNumber; +#endif // !_MSC_VER + +LayoutParameter::LayoutParameter() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void LayoutParameter::InitAsDefaultInstance() { +} + +LayoutParameter::LayoutParameter(const LayoutParameter& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void LayoutParameter::SharedCtor() { + _cached_size_ = 0; + type_ = 0; + gravity_ = 0; + relativename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + relativetoname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + align_ = 0; + marginleft_ = 0; + margintop_ = 0; + marginright_ = 0; + margindown_ = 0; + layouteagetype_ = 0; + layoutnormalhorizontal_ = 0; + layoutnormalvertical_ = 0; + layoutparenthorizontal_ = 0; + layoutparentvertical_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +LayoutParameter::~LayoutParameter() { + SharedDtor(); +} + +void LayoutParameter::SharedDtor() { + if (relativename_ != &::google::protobuf::internal::kEmptyString) { + delete relativename_; + } + if (relativetoname_ != &::google::protobuf::internal::kEmptyString) { + delete relativetoname_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void LayoutParameter::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const LayoutParameter& LayoutParameter::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +LayoutParameter* LayoutParameter::default_instance_ = NULL; + +LayoutParameter* LayoutParameter::New() const { + return new LayoutParameter; +} + +void LayoutParameter::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + type_ = 0; + gravity_ = 0; + if (has_relativename()) { + if (relativename_ != &::google::protobuf::internal::kEmptyString) { + relativename_->clear(); + } + } + if (has_relativetoname()) { + if (relativetoname_ != &::google::protobuf::internal::kEmptyString) { + relativetoname_->clear(); + } + } + align_ = 0; + marginleft_ = 0; + margintop_ = 0; + marginright_ = 0; + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + margindown_ = 0; + layouteagetype_ = 0; + layoutnormalhorizontal_ = 0; + layoutnormalvertical_ = 0; + layoutparenthorizontal_ = 0; + layoutparentvertical_ = 0; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool LayoutParameter::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional int32 type = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &type_))); + set_has_type(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(16)) goto parse_gravity; + break; + } + + // optional int32 gravity = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_gravity: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &gravity_))); + set_has_gravity(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_relativeName; + break; + } + + // optional string relativeName = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_relativeName: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_relativename())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_relativeToName; + break; + } + + // optional string relativeToName = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_relativeToName: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_relativetoname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_align; + break; + } + + // optional int32 align = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_align: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &align_))); + set_has_align(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(48)) goto parse_marginLeft; + break; + } + + // optional int32 marginLeft = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_marginLeft: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &marginleft_))); + set_has_marginleft(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(56)) goto parse_marginTop; + break; + } + + // optional int32 marginTop = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_marginTop: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &margintop_))); + set_has_margintop(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(64)) goto parse_marginRight; + break; + } + + // optional int32 marginRight = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_marginRight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &marginright_))); + set_has_marginright(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(72)) goto parse_marginDown; + break; + } + + // optional int32 marginDown = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_marginDown: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &margindown_))); + set_has_margindown(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(80)) goto parse_layoutEageType; + break; + } + + // optional int32 layoutEageType = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_layoutEageType: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &layouteagetype_))); + set_has_layouteagetype(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(88)) goto parse_layoutNormalHorizontal; + break; + } + + // optional int32 layoutNormalHorizontal = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_layoutNormalHorizontal: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &layoutnormalhorizontal_))); + set_has_layoutnormalhorizontal(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(96)) goto parse_layoutNormalVertical; + break; + } + + // optional int32 layoutNormalVertical = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_layoutNormalVertical: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &layoutnormalvertical_))); + set_has_layoutnormalvertical(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(104)) goto parse_layoutParentHorizontal; + break; + } + + // optional int32 layoutParentHorizontal = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_layoutParentHorizontal: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &layoutparenthorizontal_))); + set_has_layoutparenthorizontal(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(112)) goto parse_layoutParentVertical; + break; + } + + // optional int32 layoutParentVertical = 14; + case 14: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_layoutParentVertical: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &layoutparentvertical_))); + set_has_layoutparentvertical(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void LayoutParameter::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional int32 type = 1; + if (has_type()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->type(), output); + } + + // optional int32 gravity = 2; + if (has_gravity()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->gravity(), output); + } + + // optional string relativeName = 3; + if (has_relativename()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->relativename(), output); + } + + // optional string relativeToName = 4; + if (has_relativetoname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 4, this->relativetoname(), output); + } + + // optional int32 align = 5; + if (has_align()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->align(), output); + } + + // optional int32 marginLeft = 6; + if (has_marginleft()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->marginleft(), output); + } + + // optional int32 marginTop = 7; + if (has_margintop()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->margintop(), output); + } + + // optional int32 marginRight = 8; + if (has_marginright()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(8, this->marginright(), output); + } + + // optional int32 marginDown = 9; + if (has_margindown()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(9, this->margindown(), output); + } + + // optional int32 layoutEageType = 10; + if (has_layouteagetype()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(10, this->layouteagetype(), output); + } + + // optional int32 layoutNormalHorizontal = 11; + if (has_layoutnormalhorizontal()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(11, this->layoutnormalhorizontal(), output); + } + + // optional int32 layoutNormalVertical = 12; + if (has_layoutnormalvertical()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(12, this->layoutnormalvertical(), output); + } + + // optional int32 layoutParentHorizontal = 13; + if (has_layoutparenthorizontal()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(13, this->layoutparenthorizontal(), output); + } + + // optional int32 layoutParentVertical = 14; + if (has_layoutparentvertical()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(14, this->layoutparentvertical(), output); + } + +} + +int LayoutParameter::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional int32 type = 1; + if (has_type()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->type()); + } + + // optional int32 gravity = 2; + if (has_gravity()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->gravity()); + } + + // optional string relativeName = 3; + if (has_relativename()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->relativename()); + } + + // optional string relativeToName = 4; + if (has_relativetoname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->relativetoname()); + } + + // optional int32 align = 5; + if (has_align()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->align()); + } + + // optional int32 marginLeft = 6; + if (has_marginleft()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->marginleft()); + } + + // optional int32 marginTop = 7; + if (has_margintop()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->margintop()); + } + + // optional int32 marginRight = 8; + if (has_marginright()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->marginright()); + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional int32 marginDown = 9; + if (has_margindown()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->margindown()); + } + + // optional int32 layoutEageType = 10; + if (has_layouteagetype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->layouteagetype()); + } + + // optional int32 layoutNormalHorizontal = 11; + if (has_layoutnormalhorizontal()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->layoutnormalhorizontal()); + } + + // optional int32 layoutNormalVertical = 12; + if (has_layoutnormalvertical()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->layoutnormalvertical()); + } + + // optional int32 layoutParentHorizontal = 13; + if (has_layoutparenthorizontal()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->layoutparenthorizontal()); + } + + // optional int32 layoutParentVertical = 14; + if (has_layoutparentvertical()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->layoutparentvertical()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void LayoutParameter::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void LayoutParameter::MergeFrom(const LayoutParameter& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_type()) { + set_type(from.type()); + } + if (from.has_gravity()) { + set_gravity(from.gravity()); + } + if (from.has_relativename()) { + set_relativename(from.relativename()); + } + if (from.has_relativetoname()) { + set_relativetoname(from.relativetoname()); + } + if (from.has_align()) { + set_align(from.align()); + } + if (from.has_marginleft()) { + set_marginleft(from.marginleft()); + } + if (from.has_margintop()) { + set_margintop(from.margintop()); + } + if (from.has_marginright()) { + set_marginright(from.marginright()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_margindown()) { + set_margindown(from.margindown()); + } + if (from.has_layouteagetype()) { + set_layouteagetype(from.layouteagetype()); + } + if (from.has_layoutnormalhorizontal()) { + set_layoutnormalhorizontal(from.layoutnormalhorizontal()); + } + if (from.has_layoutnormalvertical()) { + set_layoutnormalvertical(from.layoutnormalvertical()); + } + if (from.has_layoutparenthorizontal()) { + set_layoutparenthorizontal(from.layoutparenthorizontal()); + } + if (from.has_layoutparentvertical()) { + set_layoutparentvertical(from.layoutparentvertical()); + } + } +} + +void LayoutParameter::CopyFrom(const LayoutParameter& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool LayoutParameter::IsInitialized() const { + + return true; +} + +void LayoutParameter::Swap(LayoutParameter* other) { + if (other != this) { + std::swap(type_, other->type_); + std::swap(gravity_, other->gravity_); + std::swap(relativename_, other->relativename_); + std::swap(relativetoname_, other->relativetoname_); + std::swap(align_, other->align_); + std::swap(marginleft_, other->marginleft_); + std::swap(margintop_, other->margintop_); + std::swap(marginright_, other->marginright_); + std::swap(margindown_, other->margindown_); + std::swap(layouteagetype_, other->layouteagetype_); + std::swap(layoutnormalhorizontal_, other->layoutnormalhorizontal_); + std::swap(layoutnormalvertical_, other->layoutnormalvertical_); + std::swap(layoutparenthorizontal_, other->layoutparenthorizontal_); + std::swap(layoutparentvertical_, other->layoutparentvertical_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string LayoutParameter::GetTypeName() const { + return "protocolbuffers.LayoutParameter"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int ButtonOptions::kNameFieldNumber; +const int ButtonOptions::kClassnameFieldNumber; +const int ButtonOptions::kNormalFieldNumber; +const int ButtonOptions::kPressedFieldNumber; +const int ButtonOptions::kDisabledFieldNumber; +const int ButtonOptions::kNormalDataFieldNumber; +const int ButtonOptions::kPressedDataFieldNumber; +const int ButtonOptions::kDisabledDataFieldNumber; +const int ButtonOptions::kTextFieldNumber; +const int ButtonOptions::kFontNameFieldNumber; +const int ButtonOptions::kFontSizeFieldNumber; +const int ButtonOptions::kTextColorRFieldNumber; +const int ButtonOptions::kTextColorGFieldNumber; +const int ButtonOptions::kTextColorBFieldNumber; +const int ButtonOptions::kCapInsetsXFieldNumber; +const int ButtonOptions::kCapInsetsYFieldNumber; +const int ButtonOptions::kCapInsetsWidthFieldNumber; +const int ButtonOptions::kCapInsetsHeightFieldNumber; +const int ButtonOptions::kScale9WidthFieldNumber; +const int ButtonOptions::kScale9HeightFieldNumber; +const int ButtonOptions::kScale9EnableFieldNumber; +const int ButtonOptions::kDisplaystateFieldNumber; +const int ButtonOptions::kFontResourceFieldNumber; +#endif // !_MSC_VER + +ButtonOptions::ButtonOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void ButtonOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + normaldata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + normaldata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + presseddata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + presseddata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + disableddata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + disableddata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + fontresource_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + fontresource_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +ButtonOptions::ButtonOptions(const ButtonOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void ButtonOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + normal_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + pressed_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + disabled_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + normaldata_ = NULL; + presseddata_ = NULL; + disableddata_ = NULL; + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + fontname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + fontsize_ = 0; + textcolorr_ = 0; + textcolorg_ = 0; + textcolorb_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetswidth_ = 0; + capinsetsheight_ = 0; + scale9width_ = 0; + scale9height_ = 0; + scale9enable_ = false; + displaystate_ = false; + fontresource_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +ButtonOptions::~ButtonOptions() { + SharedDtor(); +} + +void ButtonOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (normal_ != &::google::protobuf::internal::kEmptyString) { + delete normal_; + } + if (pressed_ != &::google::protobuf::internal::kEmptyString) { + delete pressed_; + } + if (disabled_ != &::google::protobuf::internal::kEmptyString) { + delete disabled_; + } + if (text_ != &::google::protobuf::internal::kEmptyString) { + delete text_; + } + if (fontname_ != &::google::protobuf::internal::kEmptyString) { + delete fontname_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete normaldata_; + delete presseddata_; + delete disableddata_; + delete fontresource_; + } +} + +void ButtonOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ButtonOptions& ButtonOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +ButtonOptions* ButtonOptions::default_instance_ = NULL; + +ButtonOptions* ButtonOptions::New() const { + return new ButtonOptions; +} + +void ButtonOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_normal()) { + if (normal_ != &::google::protobuf::internal::kEmptyString) { + normal_->clear(); + } + } + if (has_pressed()) { + if (pressed_ != &::google::protobuf::internal::kEmptyString) { + pressed_->clear(); + } + } + if (has_disabled()) { + if (disabled_ != &::google::protobuf::internal::kEmptyString) { + disabled_->clear(); + } + } + if (has_normaldata()) { + if (normaldata_ != NULL) normaldata_->::protocolbuffers::ResourceData::Clear(); + } + if (has_presseddata()) { + if (presseddata_ != NULL) presseddata_->::protocolbuffers::ResourceData::Clear(); + } + if (has_disableddata()) { + if (disableddata_ != NULL) disableddata_->::protocolbuffers::ResourceData::Clear(); + } + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (has_text()) { + if (text_ != &::google::protobuf::internal::kEmptyString) { + text_->clear(); + } + } + if (has_fontname()) { + if (fontname_ != &::google::protobuf::internal::kEmptyString) { + fontname_->clear(); + } + } + fontsize_ = 0; + textcolorr_ = 0; + textcolorg_ = 0; + textcolorb_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + capinsetswidth_ = 0; + capinsetsheight_ = 0; + scale9width_ = 0; + scale9height_ = 0; + scale9enable_ = false; + displaystate_ = false; + if (has_fontresource()) { + if (fontresource_ != NULL) fontresource_->::protocolbuffers::ResourceData::Clear(); + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool ButtonOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_normal; + break; + } + + // optional string normal = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_normal: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_normal())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_pressed; + break; + } + + // optional string pressed = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_pressed: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_pressed())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_disabled; + break; + } + + // optional string disabled = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_disabled: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_disabled())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(50)) goto parse_normalData; + break; + } + + // optional .protocolbuffers.ResourceData normalData = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_normalData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_normaldata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(58)) goto parse_pressedData; + break; + } + + // optional .protocolbuffers.ResourceData pressedData = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_pressedData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_presseddata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(66)) goto parse_disabledData; + break; + } + + // optional .protocolbuffers.ResourceData disabledData = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_disabledData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_disableddata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(74)) goto parse_text; + break; + } + + // optional string text = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_text: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_text())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(82)) goto parse_fontName; + break; + } + + // optional string fontName = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fontName: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_fontname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(88)) goto parse_fontSize; + break; + } + + // optional int32 fontSize = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_fontSize: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &fontsize_))); + set_has_fontsize(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(96)) goto parse_textColorR; + break; + } + + // optional int32 textColorR = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_textColorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &textcolorr_))); + set_has_textcolorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(104)) goto parse_textColorG; + break; + } + + // optional int32 textColorG = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_textColorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &textcolorg_))); + set_has_textcolorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(112)) goto parse_textColorB; + break; + } + + // optional int32 textColorB = 14; + case 14: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_textColorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &textcolorb_))); + set_has_textcolorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(125)) goto parse_capInsetsX; + break; + } + + // optional float capInsetsX = 15; + case 15: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsx_))); + set_has_capinsetsx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(133)) goto parse_capInsetsY; + break; + } + + // optional float capInsetsY = 16; + case 16: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsy_))); + set_has_capinsetsy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(141)) goto parse_capInsetsWidth; + break; + } + + // optional float capInsetsWidth = 17; + case 17: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetswidth_))); + set_has_capinsetswidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(149)) goto parse_capInsetsHeight; + break; + } + + // optional float capInsetsHeight = 18; + case 18: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsheight_))); + set_has_capinsetsheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(157)) goto parse_scale9Width; + break; + } + + // optional float scale9Width = 19; + case 19: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Width: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9width_))); + set_has_scale9width(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(165)) goto parse_scale9Height; + break; + } + + // optional float scale9Height = 20; + case 20: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Height: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9height_))); + set_has_scale9height(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(168)) goto parse_scale9Enable; + break; + } + + // optional bool scale9Enable = 21; + case 21: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_scale9Enable: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &scale9enable_))); + set_has_scale9enable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(176)) goto parse_displaystate; + break; + } + + // optional bool displaystate = 22; + case 22: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_displaystate: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &displaystate_))); + set_has_displaystate(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(186)) goto parse_fontResource; + break; + } + + // optional .protocolbuffers.ResourceData fontResource = 23; + case 23: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fontResource: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_fontresource())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void ButtonOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string normal = 3; + if (has_normal()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->normal(), output); + } + + // optional string pressed = 4; + if (has_pressed()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 4, this->pressed(), output); + } + + // optional string disabled = 5; + if (has_disabled()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 5, this->disabled(), output); + } + + // optional .protocolbuffers.ResourceData normalData = 6; + if (has_normaldata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 6, this->normaldata(), output); + } + + // optional .protocolbuffers.ResourceData pressedData = 7; + if (has_presseddata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 7, this->presseddata(), output); + } + + // optional .protocolbuffers.ResourceData disabledData = 8; + if (has_disableddata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 8, this->disableddata(), output); + } + + // optional string text = 9; + if (has_text()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 9, this->text(), output); + } + + // optional string fontName = 10; + if (has_fontname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 10, this->fontname(), output); + } + + // optional int32 fontSize = 11; + if (has_fontsize()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(11, this->fontsize(), output); + } + + // optional int32 textColorR = 12; + if (has_textcolorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(12, this->textcolorr(), output); + } + + // optional int32 textColorG = 13; + if (has_textcolorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(13, this->textcolorg(), output); + } + + // optional int32 textColorB = 14; + if (has_textcolorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(14, this->textcolorb(), output); + } + + // optional float capInsetsX = 15; + if (has_capinsetsx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(15, this->capinsetsx(), output); + } + + // optional float capInsetsY = 16; + if (has_capinsetsy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(16, this->capinsetsy(), output); + } + + // optional float capInsetsWidth = 17; + if (has_capinsetswidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(17, this->capinsetswidth(), output); + } + + // optional float capInsetsHeight = 18; + if (has_capinsetsheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(18, this->capinsetsheight(), output); + } + + // optional float scale9Width = 19; + if (has_scale9width()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(19, this->scale9width(), output); + } + + // optional float scale9Height = 20; + if (has_scale9height()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(20, this->scale9height(), output); + } + + // optional bool scale9Enable = 21; + if (has_scale9enable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(21, this->scale9enable(), output); + } + + // optional bool displaystate = 22; + if (has_displaystate()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(22, this->displaystate(), output); + } + + // optional .protocolbuffers.ResourceData fontResource = 23; + if (has_fontresource()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 23, this->fontresource(), output); + } + +} + +int ButtonOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string normal = 3; + if (has_normal()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->normal()); + } + + // optional string pressed = 4; + if (has_pressed()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->pressed()); + } + + // optional string disabled = 5; + if (has_disabled()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->disabled()); + } + + // optional .protocolbuffers.ResourceData normalData = 6; + if (has_normaldata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->normaldata()); + } + + // optional .protocolbuffers.ResourceData pressedData = 7; + if (has_presseddata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->presseddata()); + } + + // optional .protocolbuffers.ResourceData disabledData = 8; + if (has_disableddata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->disableddata()); + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional string text = 9; + if (has_text()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->text()); + } + + // optional string fontName = 10; + if (has_fontname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->fontname()); + } + + // optional int32 fontSize = 11; + if (has_fontsize()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->fontsize()); + } + + // optional int32 textColorR = 12; + if (has_textcolorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->textcolorr()); + } + + // optional int32 textColorG = 13; + if (has_textcolorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->textcolorg()); + } + + // optional int32 textColorB = 14; + if (has_textcolorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->textcolorb()); + } + + // optional float capInsetsX = 15; + if (has_capinsetsx()) { + total_size += 1 + 4; + } + + // optional float capInsetsY = 16; + if (has_capinsetsy()) { + total_size += 2 + 4; + } + + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + // optional float capInsetsWidth = 17; + if (has_capinsetswidth()) { + total_size += 2 + 4; + } + + // optional float capInsetsHeight = 18; + if (has_capinsetsheight()) { + total_size += 2 + 4; + } + + // optional float scale9Width = 19; + if (has_scale9width()) { + total_size += 2 + 4; + } + + // optional float scale9Height = 20; + if (has_scale9height()) { + total_size += 2 + 4; + } + + // optional bool scale9Enable = 21; + if (has_scale9enable()) { + total_size += 2 + 1; + } + + // optional bool displaystate = 22; + if (has_displaystate()) { + total_size += 2 + 1; + } + + // optional .protocolbuffers.ResourceData fontResource = 23; + if (has_fontresource()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->fontresource()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void ButtonOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void ButtonOptions::MergeFrom(const ButtonOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_normal()) { + set_normal(from.normal()); + } + if (from.has_pressed()) { + set_pressed(from.pressed()); + } + if (from.has_disabled()) { + set_disabled(from.disabled()); + } + if (from.has_normaldata()) { + mutable_normaldata()->::protocolbuffers::ResourceData::MergeFrom(from.normaldata()); + } + if (from.has_presseddata()) { + mutable_presseddata()->::protocolbuffers::ResourceData::MergeFrom(from.presseddata()); + } + if (from.has_disableddata()) { + mutable_disableddata()->::protocolbuffers::ResourceData::MergeFrom(from.disableddata()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_text()) { + set_text(from.text()); + } + if (from.has_fontname()) { + set_fontname(from.fontname()); + } + if (from.has_fontsize()) { + set_fontsize(from.fontsize()); + } + if (from.has_textcolorr()) { + set_textcolorr(from.textcolorr()); + } + if (from.has_textcolorg()) { + set_textcolorg(from.textcolorg()); + } + if (from.has_textcolorb()) { + set_textcolorb(from.textcolorb()); + } + if (from.has_capinsetsx()) { + set_capinsetsx(from.capinsetsx()); + } + if (from.has_capinsetsy()) { + set_capinsetsy(from.capinsetsy()); + } + } + if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) { + if (from.has_capinsetswidth()) { + set_capinsetswidth(from.capinsetswidth()); + } + if (from.has_capinsetsheight()) { + set_capinsetsheight(from.capinsetsheight()); + } + if (from.has_scale9width()) { + set_scale9width(from.scale9width()); + } + if (from.has_scale9height()) { + set_scale9height(from.scale9height()); + } + if (from.has_scale9enable()) { + set_scale9enable(from.scale9enable()); + } + if (from.has_displaystate()) { + set_displaystate(from.displaystate()); + } + if (from.has_fontresource()) { + mutable_fontresource()->::protocolbuffers::ResourceData::MergeFrom(from.fontresource()); + } + } +} + +void ButtonOptions::CopyFrom(const ButtonOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ButtonOptions::IsInitialized() const { + + return true; +} + +void ButtonOptions::Swap(ButtonOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(normal_, other->normal_); + std::swap(pressed_, other->pressed_); + std::swap(disabled_, other->disabled_); + std::swap(normaldata_, other->normaldata_); + std::swap(presseddata_, other->presseddata_); + std::swap(disableddata_, other->disableddata_); + std::swap(text_, other->text_); + std::swap(fontname_, other->fontname_); + std::swap(fontsize_, other->fontsize_); + std::swap(textcolorr_, other->textcolorr_); + std::swap(textcolorg_, other->textcolorg_); + std::swap(textcolorb_, other->textcolorb_); + std::swap(capinsetsx_, other->capinsetsx_); + std::swap(capinsetsy_, other->capinsetsy_); + std::swap(capinsetswidth_, other->capinsetswidth_); + std::swap(capinsetsheight_, other->capinsetsheight_); + std::swap(scale9width_, other->scale9width_); + std::swap(scale9height_, other->scale9height_); + std::swap(scale9enable_, other->scale9enable_); + std::swap(displaystate_, other->displaystate_); + std::swap(fontresource_, other->fontresource_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string ButtonOptions::GetTypeName() const { + return "protocolbuffers.ButtonOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int ResourceData::kPathFieldNumber; +const int ResourceData::kPlistFileFieldNumber; +const int ResourceData::kResourceTypeFieldNumber; +#endif // !_MSC_VER + +ResourceData::ResourceData() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void ResourceData::InitAsDefaultInstance() { +} + +ResourceData::ResourceData(const ResourceData& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void ResourceData::SharedCtor() { + _cached_size_ = 0; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + plistfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + resourcetype_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +ResourceData::~ResourceData() { + SharedDtor(); +} + +void ResourceData::SharedDtor() { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (plistfile_ != &::google::protobuf::internal::kEmptyString) { + delete plistfile_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void ResourceData::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ResourceData& ResourceData::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +ResourceData* ResourceData::default_instance_ = NULL; + +ResourceData* ResourceData::New() const { + return new ResourceData; +} + +void ResourceData::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_path()) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + path_->clear(); + } + } + if (has_plistfile()) { + if (plistfile_ != &::google::protobuf::internal::kEmptyString) { + plistfile_->clear(); + } + } + resourcetype_ = 0; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool ResourceData::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string path = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_path())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_plistFile; + break; + } + + // optional string plistFile = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_plistFile: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_plistfile())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_resourceType; + break; + } + + // optional int32 resourceType = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_resourceType: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &resourcetype_))); + set_has_resourcetype(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void ResourceData::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string path = 1; + if (has_path()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->path(), output); + } + + // optional string plistFile = 2; + if (has_plistfile()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->plistfile(), output); + } + + // optional int32 resourceType = 3; + if (has_resourcetype()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->resourcetype(), output); + } + +} + +int ResourceData::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string path = 1; + if (has_path()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->path()); + } + + // optional string plistFile = 2; + if (has_plistfile()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->plistfile()); + } + + // optional int32 resourceType = 3; + if (has_resourcetype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->resourcetype()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void ResourceData::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void ResourceData::MergeFrom(const ResourceData& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_path()) { + set_path(from.path()); + } + if (from.has_plistfile()) { + set_plistfile(from.plistfile()); + } + if (from.has_resourcetype()) { + set_resourcetype(from.resourcetype()); + } + } +} + +void ResourceData::CopyFrom(const ResourceData& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ResourceData::IsInitialized() const { + + return true; +} + +void ResourceData::Swap(ResourceData* other) { + if (other != this) { + std::swap(path_, other->path_); + std::swap(plistfile_, other->plistfile_); + std::swap(resourcetype_, other->resourcetype_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string ResourceData::GetTypeName() const { + return "protocolbuffers.ResourceData"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int CheckBoxOptions::kNameFieldNumber; +const int CheckBoxOptions::kClassnameFieldNumber; +const int CheckBoxOptions::kBackGroundBoxFieldNumber; +const int CheckBoxOptions::kBackGroundBoxSelectedFieldNumber; +const int CheckBoxOptions::kBackGroundBoxDisabledFieldNumber; +const int CheckBoxOptions::kFrontCrossFieldNumber; +const int CheckBoxOptions::kFrontCrossDisabledFieldNumber; +const int CheckBoxOptions::kBackGroundBoxDataFieldNumber; +const int CheckBoxOptions::kBackGroundBoxSelectedDataFieldNumber; +const int CheckBoxOptions::kFrontCrossDataFieldNumber; +const int CheckBoxOptions::kBackGroundBoxDisabledDataFieldNumber; +const int CheckBoxOptions::kFrontCrossDisabledDataFieldNumber; +const int CheckBoxOptions::kSelectedStateFieldNumber; +const int CheckBoxOptions::kDisplaystateFieldNumber; +#endif // !_MSC_VER + +CheckBoxOptions::CheckBoxOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void CheckBoxOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + backgroundboxdata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + backgroundboxdata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + backgroundboxselecteddata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + backgroundboxselecteddata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + frontcrossdata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + frontcrossdata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + backgroundboxdisableddata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + backgroundboxdisableddata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + frontcrossdisableddata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + frontcrossdisableddata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +CheckBoxOptions::CheckBoxOptions(const CheckBoxOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void CheckBoxOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + backgroundbox_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + backgroundboxselected_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + backgroundboxdisabled_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + frontcross_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + frontcrossdisabled_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + backgroundboxdata_ = NULL; + backgroundboxselecteddata_ = NULL; + frontcrossdata_ = NULL; + backgroundboxdisableddata_ = NULL; + frontcrossdisableddata_ = NULL; + selectedstate_ = false; + displaystate_ = false; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +CheckBoxOptions::~CheckBoxOptions() { + SharedDtor(); +} + +void CheckBoxOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (backgroundbox_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundbox_; + } + if (backgroundboxselected_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundboxselected_; + } + if (backgroundboxdisabled_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundboxdisabled_; + } + if (frontcross_ != &::google::protobuf::internal::kEmptyString) { + delete frontcross_; + } + if (frontcrossdisabled_ != &::google::protobuf::internal::kEmptyString) { + delete frontcrossdisabled_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete backgroundboxdata_; + delete backgroundboxselecteddata_; + delete frontcrossdata_; + delete backgroundboxdisableddata_; + delete frontcrossdisableddata_; + } +} + +void CheckBoxOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const CheckBoxOptions& CheckBoxOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +CheckBoxOptions* CheckBoxOptions::default_instance_ = NULL; + +CheckBoxOptions* CheckBoxOptions::New() const { + return new CheckBoxOptions; +} + +void CheckBoxOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_backgroundbox()) { + if (backgroundbox_ != &::google::protobuf::internal::kEmptyString) { + backgroundbox_->clear(); + } + } + if (has_backgroundboxselected()) { + if (backgroundboxselected_ != &::google::protobuf::internal::kEmptyString) { + backgroundboxselected_->clear(); + } + } + if (has_backgroundboxdisabled()) { + if (backgroundboxdisabled_ != &::google::protobuf::internal::kEmptyString) { + backgroundboxdisabled_->clear(); + } + } + if (has_frontcross()) { + if (frontcross_ != &::google::protobuf::internal::kEmptyString) { + frontcross_->clear(); + } + } + if (has_frontcrossdisabled()) { + if (frontcrossdisabled_ != &::google::protobuf::internal::kEmptyString) { + frontcrossdisabled_->clear(); + } + } + if (has_backgroundboxdata()) { + if (backgroundboxdata_ != NULL) backgroundboxdata_->::protocolbuffers::ResourceData::Clear(); + } + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (has_backgroundboxselecteddata()) { + if (backgroundboxselecteddata_ != NULL) backgroundboxselecteddata_->::protocolbuffers::ResourceData::Clear(); + } + if (has_frontcrossdata()) { + if (frontcrossdata_ != NULL) frontcrossdata_->::protocolbuffers::ResourceData::Clear(); + } + if (has_backgroundboxdisableddata()) { + if (backgroundboxdisableddata_ != NULL) backgroundboxdisableddata_->::protocolbuffers::ResourceData::Clear(); + } + if (has_frontcrossdisableddata()) { + if (frontcrossdisableddata_ != NULL) frontcrossdisableddata_->::protocolbuffers::ResourceData::Clear(); + } + selectedstate_ = false; + displaystate_ = false; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool CheckBoxOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_backGroundBox; + break; + } + + // optional string backGroundBox = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundBox: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_backgroundbox())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_backGroundBoxSelected; + break; + } + + // optional string backGroundBoxSelected = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundBoxSelected: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_backgroundboxselected())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_backGroundBoxDisabled; + break; + } + + // optional string backGroundBoxDisabled = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundBoxDisabled: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_backgroundboxdisabled())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(50)) goto parse_frontCross; + break; + } + + // optional string frontCross = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_frontCross: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_frontcross())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(58)) goto parse_frontCrossDisabled; + break; + } + + // optional string frontCrossDisabled = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_frontCrossDisabled: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_frontcrossdisabled())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(66)) goto parse_backGroundBoxData; + break; + } + + // optional .protocolbuffers.ResourceData backGroundBoxData = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundBoxData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_backgroundboxdata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(74)) goto parse_backGroundBoxSelectedData; + break; + } + + // optional .protocolbuffers.ResourceData backGroundBoxSelectedData = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundBoxSelectedData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_backgroundboxselecteddata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(82)) goto parse_frontCrossData; + break; + } + + // optional .protocolbuffers.ResourceData frontCrossData = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_frontCrossData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_frontcrossdata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(90)) goto parse_backGroundBoxDisabledData; + break; + } + + // optional .protocolbuffers.ResourceData backGroundBoxDisabledData = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundBoxDisabledData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_backgroundboxdisableddata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(98)) goto parse_frontCrossDisabledData; + break; + } + + // optional .protocolbuffers.ResourceData frontCrossDisabledData = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_frontCrossDisabledData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_frontcrossdisableddata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(104)) goto parse_selectedState; + break; + } + + // optional bool selectedState = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_selectedState: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &selectedstate_))); + set_has_selectedstate(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(112)) goto parse_displaystate; + break; + } + + // optional bool displaystate = 14; + case 14: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_displaystate: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &displaystate_))); + set_has_displaystate(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void CheckBoxOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string backGroundBox = 3; + if (has_backgroundbox()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->backgroundbox(), output); + } + + // optional string backGroundBoxSelected = 4; + if (has_backgroundboxselected()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 4, this->backgroundboxselected(), output); + } + + // optional string backGroundBoxDisabled = 5; + if (has_backgroundboxdisabled()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 5, this->backgroundboxdisabled(), output); + } + + // optional string frontCross = 6; + if (has_frontcross()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 6, this->frontcross(), output); + } + + // optional string frontCrossDisabled = 7; + if (has_frontcrossdisabled()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 7, this->frontcrossdisabled(), output); + } + + // optional .protocolbuffers.ResourceData backGroundBoxData = 8; + if (has_backgroundboxdata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 8, this->backgroundboxdata(), output); + } + + // optional .protocolbuffers.ResourceData backGroundBoxSelectedData = 9; + if (has_backgroundboxselecteddata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 9, this->backgroundboxselecteddata(), output); + } + + // optional .protocolbuffers.ResourceData frontCrossData = 10; + if (has_frontcrossdata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 10, this->frontcrossdata(), output); + } + + // optional .protocolbuffers.ResourceData backGroundBoxDisabledData = 11; + if (has_backgroundboxdisableddata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 11, this->backgroundboxdisableddata(), output); + } + + // optional .protocolbuffers.ResourceData frontCrossDisabledData = 12; + if (has_frontcrossdisableddata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 12, this->frontcrossdisableddata(), output); + } + + // optional bool selectedState = 13; + if (has_selectedstate()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(13, this->selectedstate(), output); + } + + // optional bool displaystate = 14; + if (has_displaystate()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(14, this->displaystate(), output); + } + +} + +int CheckBoxOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string backGroundBox = 3; + if (has_backgroundbox()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->backgroundbox()); + } + + // optional string backGroundBoxSelected = 4; + if (has_backgroundboxselected()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->backgroundboxselected()); + } + + // optional string backGroundBoxDisabled = 5; + if (has_backgroundboxdisabled()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->backgroundboxdisabled()); + } + + // optional string frontCross = 6; + if (has_frontcross()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->frontcross()); + } + + // optional string frontCrossDisabled = 7; + if (has_frontcrossdisabled()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->frontcrossdisabled()); + } + + // optional .protocolbuffers.ResourceData backGroundBoxData = 8; + if (has_backgroundboxdata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->backgroundboxdata()); + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional .protocolbuffers.ResourceData backGroundBoxSelectedData = 9; + if (has_backgroundboxselecteddata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->backgroundboxselecteddata()); + } + + // optional .protocolbuffers.ResourceData frontCrossData = 10; + if (has_frontcrossdata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->frontcrossdata()); + } + + // optional .protocolbuffers.ResourceData backGroundBoxDisabledData = 11; + if (has_backgroundboxdisableddata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->backgroundboxdisableddata()); + } + + // optional .protocolbuffers.ResourceData frontCrossDisabledData = 12; + if (has_frontcrossdisableddata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->frontcrossdisableddata()); + } + + // optional bool selectedState = 13; + if (has_selectedstate()) { + total_size += 1 + 1; + } + + // optional bool displaystate = 14; + if (has_displaystate()) { + total_size += 1 + 1; + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void CheckBoxOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void CheckBoxOptions::MergeFrom(const CheckBoxOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_backgroundbox()) { + set_backgroundbox(from.backgroundbox()); + } + if (from.has_backgroundboxselected()) { + set_backgroundboxselected(from.backgroundboxselected()); + } + if (from.has_backgroundboxdisabled()) { + set_backgroundboxdisabled(from.backgroundboxdisabled()); + } + if (from.has_frontcross()) { + set_frontcross(from.frontcross()); + } + if (from.has_frontcrossdisabled()) { + set_frontcrossdisabled(from.frontcrossdisabled()); + } + if (from.has_backgroundboxdata()) { + mutable_backgroundboxdata()->::protocolbuffers::ResourceData::MergeFrom(from.backgroundboxdata()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_backgroundboxselecteddata()) { + mutable_backgroundboxselecteddata()->::protocolbuffers::ResourceData::MergeFrom(from.backgroundboxselecteddata()); + } + if (from.has_frontcrossdata()) { + mutable_frontcrossdata()->::protocolbuffers::ResourceData::MergeFrom(from.frontcrossdata()); + } + if (from.has_backgroundboxdisableddata()) { + mutable_backgroundboxdisableddata()->::protocolbuffers::ResourceData::MergeFrom(from.backgroundboxdisableddata()); + } + if (from.has_frontcrossdisableddata()) { + mutable_frontcrossdisableddata()->::protocolbuffers::ResourceData::MergeFrom(from.frontcrossdisableddata()); + } + if (from.has_selectedstate()) { + set_selectedstate(from.selectedstate()); + } + if (from.has_displaystate()) { + set_displaystate(from.displaystate()); + } + } +} + +void CheckBoxOptions::CopyFrom(const CheckBoxOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool CheckBoxOptions::IsInitialized() const { + + return true; +} + +void CheckBoxOptions::Swap(CheckBoxOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(backgroundbox_, other->backgroundbox_); + std::swap(backgroundboxselected_, other->backgroundboxselected_); + std::swap(backgroundboxdisabled_, other->backgroundboxdisabled_); + std::swap(frontcross_, other->frontcross_); + std::swap(frontcrossdisabled_, other->frontcrossdisabled_); + std::swap(backgroundboxdata_, other->backgroundboxdata_); + std::swap(backgroundboxselecteddata_, other->backgroundboxselecteddata_); + std::swap(frontcrossdata_, other->frontcrossdata_); + std::swap(backgroundboxdisableddata_, other->backgroundboxdisableddata_); + std::swap(frontcrossdisableddata_, other->frontcrossdisableddata_); + std::swap(selectedstate_, other->selectedstate_); + std::swap(displaystate_, other->displaystate_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string CheckBoxOptions::GetTypeName() const { + return "protocolbuffers.CheckBoxOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int ImageViewOptions::kNameFieldNumber; +const int ImageViewOptions::kClassnameFieldNumber; +const int ImageViewOptions::kFileNameFieldNumber; +const int ImageViewOptions::kFileNameDataFieldNumber; +const int ImageViewOptions::kCapInsetsXFieldNumber; +const int ImageViewOptions::kCapInsetsYFieldNumber; +const int ImageViewOptions::kCapInsetsHeightFieldNumber; +const int ImageViewOptions::kCapInsetsWidthFieldNumber; +const int ImageViewOptions::kScale9WidthFieldNumber; +const int ImageViewOptions::kScale9HeightFieldNumber; +const int ImageViewOptions::kScale9EnableFieldNumber; +const int ImageViewOptions::kFlippedXFieldNumber; +const int ImageViewOptions::kFlippedYFieldNumber; +#endif // !_MSC_VER + +ImageViewOptions::ImageViewOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void ImageViewOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + filenamedata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + filenamedata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +ImageViewOptions::ImageViewOptions(const ImageViewOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void ImageViewOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + filename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + filenamedata_ = NULL; + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetsheight_ = 0; + capinsetswidth_ = 0; + scale9width_ = 0; + scale9height_ = 0; + scale9enable_ = false; + flippedx_ = false; + flippedy_ = false; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +ImageViewOptions::~ImageViewOptions() { + SharedDtor(); +} + +void ImageViewOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (filename_ != &::google::protobuf::internal::kEmptyString) { + delete filename_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete filenamedata_; + } +} + +void ImageViewOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ImageViewOptions& ImageViewOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +ImageViewOptions* ImageViewOptions::default_instance_ = NULL; + +ImageViewOptions* ImageViewOptions::New() const { + return new ImageViewOptions; +} + +void ImageViewOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_filename()) { + if (filename_ != &::google::protobuf::internal::kEmptyString) { + filename_->clear(); + } + } + if (has_filenamedata()) { + if (filenamedata_ != NULL) filenamedata_->::protocolbuffers::ResourceData::Clear(); + } + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetsheight_ = 0; + capinsetswidth_ = 0; + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + scale9width_ = 0; + scale9height_ = 0; + scale9enable_ = false; + flippedx_ = false; + flippedy_ = false; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool ImageViewOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_fileName; + break; + } + + // optional string fileName = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fileName: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_filename())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_fileNameData; + break; + } + + // optional .protocolbuffers.ResourceData fileNameData = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fileNameData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_filenamedata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(45)) goto parse_capInsetsX; + break; + } + + // optional float capInsetsX = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsx_))); + set_has_capinsetsx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(53)) goto parse_capInsetsY; + break; + } + + // optional float capInsetsY = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsy_))); + set_has_capinsetsy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(61)) goto parse_capInsetsHeight; + break; + } + + // optional float capInsetsHeight = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsheight_))); + set_has_capinsetsheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(69)) goto parse_capInsetsWidth; + break; + } + + // optional float capInsetsWidth = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetswidth_))); + set_has_capinsetswidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(77)) goto parse_scale9Width; + break; + } + + // optional float scale9Width = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Width: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9width_))); + set_has_scale9width(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(85)) goto parse_scale9Height; + break; + } + + // optional float scale9Height = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Height: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9height_))); + set_has_scale9height(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(88)) goto parse_scale9Enable; + break; + } + + // optional bool scale9Enable = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_scale9Enable: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &scale9enable_))); + set_has_scale9enable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(96)) goto parse_flippedX; + break; + } + + // optional bool flippedX = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_flippedX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &flippedx_))); + set_has_flippedx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(104)) goto parse_flippedY; + break; + } + + // optional bool flippedY = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_flippedY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &flippedy_))); + set_has_flippedy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void ImageViewOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string fileName = 3; + if (has_filename()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->filename(), output); + } + + // optional .protocolbuffers.ResourceData fileNameData = 4; + if (has_filenamedata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 4, this->filenamedata(), output); + } + + // optional float capInsetsX = 5; + if (has_capinsetsx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(5, this->capinsetsx(), output); + } + + // optional float capInsetsY = 6; + if (has_capinsetsy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(6, this->capinsetsy(), output); + } + + // optional float capInsetsHeight = 7; + if (has_capinsetsheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(7, this->capinsetsheight(), output); + } + + // optional float capInsetsWidth = 8; + if (has_capinsetswidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(8, this->capinsetswidth(), output); + } + + // optional float scale9Width = 9; + if (has_scale9width()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(9, this->scale9width(), output); + } + + // optional float scale9Height = 10; + if (has_scale9height()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(10, this->scale9height(), output); + } + + // optional bool scale9Enable = 11; + if (has_scale9enable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(11, this->scale9enable(), output); + } + + // optional bool flippedX = 12; + if (has_flippedx()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(12, this->flippedx(), output); + } + + // optional bool flippedY = 13; + if (has_flippedy()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(13, this->flippedy(), output); + } + +} + +int ImageViewOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string fileName = 3; + if (has_filename()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->filename()); + } + + // optional .protocolbuffers.ResourceData fileNameData = 4; + if (has_filenamedata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->filenamedata()); + } + + // optional float capInsetsX = 5; + if (has_capinsetsx()) { + total_size += 1 + 4; + } + + // optional float capInsetsY = 6; + if (has_capinsetsy()) { + total_size += 1 + 4; + } + + // optional float capInsetsHeight = 7; + if (has_capinsetsheight()) { + total_size += 1 + 4; + } + + // optional float capInsetsWidth = 8; + if (has_capinsetswidth()) { + total_size += 1 + 4; + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional float scale9Width = 9; + if (has_scale9width()) { + total_size += 1 + 4; + } + + // optional float scale9Height = 10; + if (has_scale9height()) { + total_size += 1 + 4; + } + + // optional bool scale9Enable = 11; + if (has_scale9enable()) { + total_size += 1 + 1; + } + + // optional bool flippedX = 12; + if (has_flippedx()) { + total_size += 1 + 1; + } + + // optional bool flippedY = 13; + if (has_flippedy()) { + total_size += 1 + 1; + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void ImageViewOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void ImageViewOptions::MergeFrom(const ImageViewOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_filename()) { + set_filename(from.filename()); + } + if (from.has_filenamedata()) { + mutable_filenamedata()->::protocolbuffers::ResourceData::MergeFrom(from.filenamedata()); + } + if (from.has_capinsetsx()) { + set_capinsetsx(from.capinsetsx()); + } + if (from.has_capinsetsy()) { + set_capinsetsy(from.capinsetsy()); + } + if (from.has_capinsetsheight()) { + set_capinsetsheight(from.capinsetsheight()); + } + if (from.has_capinsetswidth()) { + set_capinsetswidth(from.capinsetswidth()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_scale9width()) { + set_scale9width(from.scale9width()); + } + if (from.has_scale9height()) { + set_scale9height(from.scale9height()); + } + if (from.has_scale9enable()) { + set_scale9enable(from.scale9enable()); + } + if (from.has_flippedx()) { + set_flippedx(from.flippedx()); + } + if (from.has_flippedy()) { + set_flippedy(from.flippedy()); + } + } +} + +void ImageViewOptions::CopyFrom(const ImageViewOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ImageViewOptions::IsInitialized() const { + + return true; +} + +void ImageViewOptions::Swap(ImageViewOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(filename_, other->filename_); + std::swap(filenamedata_, other->filenamedata_); + std::swap(capinsetsx_, other->capinsetsx_); + std::swap(capinsetsy_, other->capinsetsy_); + std::swap(capinsetsheight_, other->capinsetsheight_); + std::swap(capinsetswidth_, other->capinsetswidth_); + std::swap(scale9width_, other->scale9width_); + std::swap(scale9height_, other->scale9height_); + std::swap(scale9enable_, other->scale9enable_); + std::swap(flippedx_, other->flippedx_); + std::swap(flippedy_, other->flippedy_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string ImageViewOptions::GetTypeName() const { + return "protocolbuffers.ImageViewOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int TextAtlasOptions::kNameFieldNumber; +const int TextAtlasOptions::kClassnameFieldNumber; +const int TextAtlasOptions::kStringValueFieldNumber; +const int TextAtlasOptions::kCharMapFileFieldNumber; +const int TextAtlasOptions::kCharMapFileDataFieldNumber; +const int TextAtlasOptions::kStartCharMapFieldNumber; +const int TextAtlasOptions::kItemWidthFieldNumber; +const int TextAtlasOptions::kItemHeightFieldNumber; +#endif // !_MSC_VER + +TextAtlasOptions::TextAtlasOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void TextAtlasOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + charmapfiledata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + charmapfiledata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +TextAtlasOptions::TextAtlasOptions(const TextAtlasOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void TextAtlasOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + stringvalue_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + charmapfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + charmapfiledata_ = NULL; + startcharmap_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + itemwidth_ = 0; + itemheight_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +TextAtlasOptions::~TextAtlasOptions() { + SharedDtor(); +} + +void TextAtlasOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (stringvalue_ != &::google::protobuf::internal::kEmptyString) { + delete stringvalue_; + } + if (charmapfile_ != &::google::protobuf::internal::kEmptyString) { + delete charmapfile_; + } + if (startcharmap_ != &::google::protobuf::internal::kEmptyString) { + delete startcharmap_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete charmapfiledata_; + } +} + +void TextAtlasOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const TextAtlasOptions& TextAtlasOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +TextAtlasOptions* TextAtlasOptions::default_instance_ = NULL; + +TextAtlasOptions* TextAtlasOptions::New() const { + return new TextAtlasOptions; +} + +void TextAtlasOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_stringvalue()) { + if (stringvalue_ != &::google::protobuf::internal::kEmptyString) { + stringvalue_->clear(); + } + } + if (has_charmapfile()) { + if (charmapfile_ != &::google::protobuf::internal::kEmptyString) { + charmapfile_->clear(); + } + } + if (has_charmapfiledata()) { + if (charmapfiledata_ != NULL) charmapfiledata_->::protocolbuffers::ResourceData::Clear(); + } + if (has_startcharmap()) { + if (startcharmap_ != &::google::protobuf::internal::kEmptyString) { + startcharmap_->clear(); + } + } + itemwidth_ = 0; + itemheight_ = 0; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool TextAtlasOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_stringValue; + break; + } + + // optional string stringValue = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_stringValue: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_stringvalue())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_charMapFile; + break; + } + + // optional string charMapFile = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_charMapFile: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_charmapfile())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_charMapFileData; + break; + } + + // optional .protocolbuffers.ResourceData charMapFileData = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_charMapFileData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_charmapfiledata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(50)) goto parse_startCharMap; + break; + } + + // optional string startCharMap = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_startCharMap: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_startcharmap())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(56)) goto parse_itemWidth; + break; + } + + // optional int32 itemWidth = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_itemWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &itemwidth_))); + set_has_itemwidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(64)) goto parse_itemHeight; + break; + } + + // optional int32 itemHeight = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_itemHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &itemheight_))); + set_has_itemheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void TextAtlasOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string stringValue = 3; + if (has_stringvalue()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->stringvalue(), output); + } + + // optional string charMapFile = 4; + if (has_charmapfile()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 4, this->charmapfile(), output); + } + + // optional .protocolbuffers.ResourceData charMapFileData = 5; + if (has_charmapfiledata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 5, this->charmapfiledata(), output); + } + + // optional string startCharMap = 6; + if (has_startcharmap()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 6, this->startcharmap(), output); + } + + // optional int32 itemWidth = 7; + if (has_itemwidth()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->itemwidth(), output); + } + + // optional int32 itemHeight = 8; + if (has_itemheight()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(8, this->itemheight(), output); + } + +} + +int TextAtlasOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string stringValue = 3; + if (has_stringvalue()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->stringvalue()); + } + + // optional string charMapFile = 4; + if (has_charmapfile()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->charmapfile()); + } + + // optional .protocolbuffers.ResourceData charMapFileData = 5; + if (has_charmapfiledata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->charmapfiledata()); + } + + // optional string startCharMap = 6; + if (has_startcharmap()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->startcharmap()); + } + + // optional int32 itemWidth = 7; + if (has_itemwidth()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->itemwidth()); + } + + // optional int32 itemHeight = 8; + if (has_itemheight()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->itemheight()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void TextAtlasOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void TextAtlasOptions::MergeFrom(const TextAtlasOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_stringvalue()) { + set_stringvalue(from.stringvalue()); + } + if (from.has_charmapfile()) { + set_charmapfile(from.charmapfile()); + } + if (from.has_charmapfiledata()) { + mutable_charmapfiledata()->::protocolbuffers::ResourceData::MergeFrom(from.charmapfiledata()); + } + if (from.has_startcharmap()) { + set_startcharmap(from.startcharmap()); + } + if (from.has_itemwidth()) { + set_itemwidth(from.itemwidth()); + } + if (from.has_itemheight()) { + set_itemheight(from.itemheight()); + } + } +} + +void TextAtlasOptions::CopyFrom(const TextAtlasOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TextAtlasOptions::IsInitialized() const { + + return true; +} + +void TextAtlasOptions::Swap(TextAtlasOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(stringvalue_, other->stringvalue_); + std::swap(charmapfile_, other->charmapfile_); + std::swap(charmapfiledata_, other->charmapfiledata_); + std::swap(startcharmap_, other->startcharmap_); + std::swap(itemwidth_, other->itemwidth_); + std::swap(itemheight_, other->itemheight_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string TextAtlasOptions::GetTypeName() const { + return "protocolbuffers.TextAtlasOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int TextBMFontOptions::kNameFieldNumber; +const int TextBMFontOptions::kClassnameFieldNumber; +const int TextBMFontOptions::kTextFieldNumber; +const int TextBMFontOptions::kFileNameDataFieldNumber; +#endif // !_MSC_VER + +TextBMFontOptions::TextBMFontOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void TextBMFontOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + filenamedata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + filenamedata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +TextBMFontOptions::TextBMFontOptions(const TextBMFontOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void TextBMFontOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + filenamedata_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +TextBMFontOptions::~TextBMFontOptions() { + SharedDtor(); +} + +void TextBMFontOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (text_ != &::google::protobuf::internal::kEmptyString) { + delete text_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete filenamedata_; + } +} + +void TextBMFontOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const TextBMFontOptions& TextBMFontOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +TextBMFontOptions* TextBMFontOptions::default_instance_ = NULL; + +TextBMFontOptions* TextBMFontOptions::New() const { + return new TextBMFontOptions; +} + +void TextBMFontOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_text()) { + if (text_ != &::google::protobuf::internal::kEmptyString) { + text_->clear(); + } + } + if (has_filenamedata()) { + if (filenamedata_ != NULL) filenamedata_->::protocolbuffers::ResourceData::Clear(); + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool TextBMFontOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_text; + break; + } + + // optional string text = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_text: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_text())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_fileNameData; + break; + } + + // optional .protocolbuffers.ResourceData fileNameData = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fileNameData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_filenamedata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void TextBMFontOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string text = 3; + if (has_text()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->text(), output); + } + + // optional .protocolbuffers.ResourceData fileNameData = 4; + if (has_filenamedata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 4, this->filenamedata(), output); + } + +} + +int TextBMFontOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string text = 3; + if (has_text()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->text()); + } + + // optional .protocolbuffers.ResourceData fileNameData = 4; + if (has_filenamedata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->filenamedata()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void TextBMFontOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void TextBMFontOptions::MergeFrom(const TextBMFontOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_text()) { + set_text(from.text()); + } + if (from.has_filenamedata()) { + mutable_filenamedata()->::protocolbuffers::ResourceData::MergeFrom(from.filenamedata()); + } + } +} + +void TextBMFontOptions::CopyFrom(const TextBMFontOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TextBMFontOptions::IsInitialized() const { + + return true; +} + +void TextBMFontOptions::Swap(TextBMFontOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(text_, other->text_); + std::swap(filenamedata_, other->filenamedata_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string TextBMFontOptions::GetTypeName() const { + return "protocolbuffers.TextBMFontOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int TextOptions::kNameFieldNumber; +const int TextOptions::kClassnameFieldNumber; +const int TextOptions::kFontNameFieldNumber; +const int TextOptions::kFontFileFieldNumber; +const int TextOptions::kFontSizeFieldNumber; +const int TextOptions::kTextFieldNumber; +const int TextOptions::kAreaWidthFieldNumber; +const int TextOptions::kAreaHeightFieldNumber; +const int TextOptions::kHAlignmentFieldNumber; +const int TextOptions::kVAlignmentFieldNumber; +const int TextOptions::kTouchScaleEnableFieldNumber; +const int TextOptions::kFontResourceFieldNumber; +const int TextOptions::kIsCustomSizeFieldNumber; +#endif // !_MSC_VER + +TextOptions::TextOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void TextOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + fontfile_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + fontfile_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + fontresource_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + fontresource_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +TextOptions::TextOptions(const TextOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void TextOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + fontname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + fontfile_ = NULL; + fontsize_ = 0; + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + areawidth_ = 0; + areaheight_ = 0; + halignment_ = 0; + valignment_ = 0; + touchscaleenable_ = false; + fontresource_ = NULL; + iscustomsize_ = false; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +TextOptions::~TextOptions() { + SharedDtor(); +} + +void TextOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (fontname_ != &::google::protobuf::internal::kEmptyString) { + delete fontname_; + } + if (text_ != &::google::protobuf::internal::kEmptyString) { + delete text_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete fontfile_; + delete fontresource_; + } +} + +void TextOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const TextOptions& TextOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +TextOptions* TextOptions::default_instance_ = NULL; + +TextOptions* TextOptions::New() const { + return new TextOptions; +} + +void TextOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_fontname()) { + if (fontname_ != &::google::protobuf::internal::kEmptyString) { + fontname_->clear(); + } + } + if (has_fontfile()) { + if (fontfile_ != NULL) fontfile_->::protocolbuffers::ResourceData::Clear(); + } + fontsize_ = 0; + if (has_text()) { + if (text_ != &::google::protobuf::internal::kEmptyString) { + text_->clear(); + } + } + areawidth_ = 0; + areaheight_ = 0; + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + halignment_ = 0; + valignment_ = 0; + touchscaleenable_ = false; + if (has_fontresource()) { + if (fontresource_ != NULL) fontresource_->::protocolbuffers::ResourceData::Clear(); + } + iscustomsize_ = false; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool TextOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_fontName; + break; + } + + // optional string fontName = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fontName: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_fontname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_fontFile; + break; + } + + // optional .protocolbuffers.ResourceData fontFile = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fontFile: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_fontfile())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_fontSize; + break; + } + + // optional int32 fontSize = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_fontSize: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &fontsize_))); + set_has_fontsize(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(50)) goto parse_text; + break; + } + + // optional string text = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_text: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_text())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(61)) goto parse_areaWidth; + break; + } + + // optional float areaWidth = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_areaWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &areawidth_))); + set_has_areawidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(69)) goto parse_areaHeight; + break; + } + + // optional float areaHeight = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_areaHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &areaheight_))); + set_has_areaheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(72)) goto parse_hAlignment; + break; + } + + // optional int32 hAlignment = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_hAlignment: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &halignment_))); + set_has_halignment(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(80)) goto parse_vAlignment; + break; + } + + // optional int32 vAlignment = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_vAlignment: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &valignment_))); + set_has_valignment(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(88)) goto parse_touchScaleEnable; + break; + } + + // optional bool touchScaleEnable = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_touchScaleEnable: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &touchscaleenable_))); + set_has_touchscaleenable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(98)) goto parse_fontResource; + break; + } + + // optional .protocolbuffers.ResourceData fontResource = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fontResource: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_fontresource())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(104)) goto parse_IsCustomSize; + break; + } + + // optional bool IsCustomSize = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_IsCustomSize: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &iscustomsize_))); + set_has_iscustomsize(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void TextOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string fontName = 3; + if (has_fontname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->fontname(), output); + } + + // optional .protocolbuffers.ResourceData fontFile = 4; + if (has_fontfile()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 4, this->fontfile(), output); + } + + // optional int32 fontSize = 5; + if (has_fontsize()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->fontsize(), output); + } + + // optional string text = 6; + if (has_text()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 6, this->text(), output); + } + + // optional float areaWidth = 7; + if (has_areawidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(7, this->areawidth(), output); + } + + // optional float areaHeight = 8; + if (has_areaheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(8, this->areaheight(), output); + } + + // optional int32 hAlignment = 9; + if (has_halignment()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(9, this->halignment(), output); + } + + // optional int32 vAlignment = 10; + if (has_valignment()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(10, this->valignment(), output); + } + + // optional bool touchScaleEnable = 11; + if (has_touchscaleenable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(11, this->touchscaleenable(), output); + } + + // optional .protocolbuffers.ResourceData fontResource = 12; + if (has_fontresource()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 12, this->fontresource(), output); + } + + // optional bool IsCustomSize = 13; + if (has_iscustomsize()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(13, this->iscustomsize(), output); + } + +} + +int TextOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string fontName = 3; + if (has_fontname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->fontname()); + } + + // optional .protocolbuffers.ResourceData fontFile = 4; + if (has_fontfile()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->fontfile()); + } + + // optional int32 fontSize = 5; + if (has_fontsize()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->fontsize()); + } + + // optional string text = 6; + if (has_text()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->text()); + } + + // optional float areaWidth = 7; + if (has_areawidth()) { + total_size += 1 + 4; + } + + // optional float areaHeight = 8; + if (has_areaheight()) { + total_size += 1 + 4; + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional int32 hAlignment = 9; + if (has_halignment()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->halignment()); + } + + // optional int32 vAlignment = 10; + if (has_valignment()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->valignment()); + } + + // optional bool touchScaleEnable = 11; + if (has_touchscaleenable()) { + total_size += 1 + 1; + } + + // optional .protocolbuffers.ResourceData fontResource = 12; + if (has_fontresource()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->fontresource()); + } + + // optional bool IsCustomSize = 13; + if (has_iscustomsize()) { + total_size += 1 + 1; + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void TextOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void TextOptions::MergeFrom(const TextOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_fontname()) { + set_fontname(from.fontname()); + } + if (from.has_fontfile()) { + mutable_fontfile()->::protocolbuffers::ResourceData::MergeFrom(from.fontfile()); + } + if (from.has_fontsize()) { + set_fontsize(from.fontsize()); + } + if (from.has_text()) { + set_text(from.text()); + } + if (from.has_areawidth()) { + set_areawidth(from.areawidth()); + } + if (from.has_areaheight()) { + set_areaheight(from.areaheight()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_halignment()) { + set_halignment(from.halignment()); + } + if (from.has_valignment()) { + set_valignment(from.valignment()); + } + if (from.has_touchscaleenable()) { + set_touchscaleenable(from.touchscaleenable()); + } + if (from.has_fontresource()) { + mutable_fontresource()->::protocolbuffers::ResourceData::MergeFrom(from.fontresource()); + } + if (from.has_iscustomsize()) { + set_iscustomsize(from.iscustomsize()); + } + } +} + +void TextOptions::CopyFrom(const TextOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TextOptions::IsInitialized() const { + + return true; +} + +void TextOptions::Swap(TextOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(fontname_, other->fontname_); + std::swap(fontfile_, other->fontfile_); + std::swap(fontsize_, other->fontsize_); + std::swap(text_, other->text_); + std::swap(areawidth_, other->areawidth_); + std::swap(areaheight_, other->areaheight_); + std::swap(halignment_, other->halignment_); + std::swap(valignment_, other->valignment_); + std::swap(touchscaleenable_, other->touchscaleenable_); + std::swap(fontresource_, other->fontresource_); + std::swap(iscustomsize_, other->iscustomsize_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string TextOptions::GetTypeName() const { + return "protocolbuffers.TextOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int LoadingBarOptions::kNameFieldNumber; +const int LoadingBarOptions::kClassnameFieldNumber; +const int LoadingBarOptions::kTextureFieldNumber; +const int LoadingBarOptions::kTextureDataFieldNumber; +const int LoadingBarOptions::kPercentFieldNumber; +const int LoadingBarOptions::kDirectionFieldNumber; +const int LoadingBarOptions::kCapInsetsXFieldNumber; +const int LoadingBarOptions::kCapInsetsYFieldNumber; +const int LoadingBarOptions::kCapInsetsWidthFieldNumber; +const int LoadingBarOptions::kCapInsetsHeightFieldNumber; +const int LoadingBarOptions::kScale9EnableFieldNumber; +const int LoadingBarOptions::kScale9WidthFieldNumber; +const int LoadingBarOptions::kScale9HeightFieldNumber; +#endif // !_MSC_VER + +LoadingBarOptions::LoadingBarOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void LoadingBarOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + texturedata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + texturedata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +LoadingBarOptions::LoadingBarOptions(const LoadingBarOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void LoadingBarOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + texture_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + texturedata_ = NULL; + percent_ = 0; + direction_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetswidth_ = 0; + capinsetsheight_ = 0; + scale9enable_ = false; + scale9width_ = 0; + scale9height_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +LoadingBarOptions::~LoadingBarOptions() { + SharedDtor(); +} + +void LoadingBarOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (texture_ != &::google::protobuf::internal::kEmptyString) { + delete texture_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete texturedata_; + } +} + +void LoadingBarOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const LoadingBarOptions& LoadingBarOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +LoadingBarOptions* LoadingBarOptions::default_instance_ = NULL; + +LoadingBarOptions* LoadingBarOptions::New() const { + return new LoadingBarOptions; +} + +void LoadingBarOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_texture()) { + if (texture_ != &::google::protobuf::internal::kEmptyString) { + texture_->clear(); + } + } + if (has_texturedata()) { + if (texturedata_ != NULL) texturedata_->::protocolbuffers::ResourceData::Clear(); + } + percent_ = 0; + direction_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + capinsetswidth_ = 0; + capinsetsheight_ = 0; + scale9enable_ = false; + scale9width_ = 0; + scale9height_ = 0; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool LoadingBarOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_texture; + break; + } + + // optional string texture = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_texture: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_texture())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_textureData; + break; + } + + // optional .protocolbuffers.ResourceData textureData = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_textureData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_texturedata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_percent; + break; + } + + // optional int32 percent = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_percent: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &percent_))); + set_has_percent(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(48)) goto parse_direction; + break; + } + + // optional int32 direction = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_direction: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &direction_))); + set_has_direction(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(61)) goto parse_capInsetsX; + break; + } + + // optional float capInsetsX = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsx_))); + set_has_capinsetsx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(69)) goto parse_capInsetsY; + break; + } + + // optional float capInsetsY = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsy_))); + set_has_capinsetsy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(77)) goto parse_capInsetsWidth; + break; + } + + // optional float capInsetsWidth = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetswidth_))); + set_has_capinsetswidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(85)) goto parse_capInsetsHeight; + break; + } + + // optional float capInsetsHeight = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsheight_))); + set_has_capinsetsheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(88)) goto parse_scale9Enable; + break; + } + + // optional bool scale9Enable = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_scale9Enable: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &scale9enable_))); + set_has_scale9enable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(101)) goto parse_scale9Width; + break; + } + + // optional float scale9Width = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Width: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9width_))); + set_has_scale9width(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(109)) goto parse_scale9Height; + break; + } + + // optional float scale9Height = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Height: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9height_))); + set_has_scale9height(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void LoadingBarOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string texture = 3; + if (has_texture()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->texture(), output); + } + + // optional .protocolbuffers.ResourceData textureData = 4; + if (has_texturedata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 4, this->texturedata(), output); + } + + // optional int32 percent = 5; + if (has_percent()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->percent(), output); + } + + // optional int32 direction = 6; + if (has_direction()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->direction(), output); + } + + // optional float capInsetsX = 7; + if (has_capinsetsx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(7, this->capinsetsx(), output); + } + + // optional float capInsetsY = 8; + if (has_capinsetsy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(8, this->capinsetsy(), output); + } + + // optional float capInsetsWidth = 9; + if (has_capinsetswidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(9, this->capinsetswidth(), output); + } + + // optional float capInsetsHeight = 10; + if (has_capinsetsheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(10, this->capinsetsheight(), output); + } + + // optional bool scale9Enable = 11; + if (has_scale9enable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(11, this->scale9enable(), output); + } + + // optional float scale9Width = 12; + if (has_scale9width()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(12, this->scale9width(), output); + } + + // optional float scale9Height = 13; + if (has_scale9height()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(13, this->scale9height(), output); + } + +} + +int LoadingBarOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string texture = 3; + if (has_texture()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->texture()); + } + + // optional .protocolbuffers.ResourceData textureData = 4; + if (has_texturedata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->texturedata()); + } + + // optional int32 percent = 5; + if (has_percent()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->percent()); + } + + // optional int32 direction = 6; + if (has_direction()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->direction()); + } + + // optional float capInsetsX = 7; + if (has_capinsetsx()) { + total_size += 1 + 4; + } + + // optional float capInsetsY = 8; + if (has_capinsetsy()) { + total_size += 1 + 4; + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional float capInsetsWidth = 9; + if (has_capinsetswidth()) { + total_size += 1 + 4; + } + + // optional float capInsetsHeight = 10; + if (has_capinsetsheight()) { + total_size += 1 + 4; + } + + // optional bool scale9Enable = 11; + if (has_scale9enable()) { + total_size += 1 + 1; + } + + // optional float scale9Width = 12; + if (has_scale9width()) { + total_size += 1 + 4; + } + + // optional float scale9Height = 13; + if (has_scale9height()) { + total_size += 1 + 4; + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void LoadingBarOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void LoadingBarOptions::MergeFrom(const LoadingBarOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_texture()) { + set_texture(from.texture()); + } + if (from.has_texturedata()) { + mutable_texturedata()->::protocolbuffers::ResourceData::MergeFrom(from.texturedata()); + } + if (from.has_percent()) { + set_percent(from.percent()); + } + if (from.has_direction()) { + set_direction(from.direction()); + } + if (from.has_capinsetsx()) { + set_capinsetsx(from.capinsetsx()); + } + if (from.has_capinsetsy()) { + set_capinsetsy(from.capinsetsy()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_capinsetswidth()) { + set_capinsetswidth(from.capinsetswidth()); + } + if (from.has_capinsetsheight()) { + set_capinsetsheight(from.capinsetsheight()); + } + if (from.has_scale9enable()) { + set_scale9enable(from.scale9enable()); + } + if (from.has_scale9width()) { + set_scale9width(from.scale9width()); + } + if (from.has_scale9height()) { + set_scale9height(from.scale9height()); + } + } +} + +void LoadingBarOptions::CopyFrom(const LoadingBarOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool LoadingBarOptions::IsInitialized() const { + + return true; +} + +void LoadingBarOptions::Swap(LoadingBarOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(texture_, other->texture_); + std::swap(texturedata_, other->texturedata_); + std::swap(percent_, other->percent_); + std::swap(direction_, other->direction_); + std::swap(capinsetsx_, other->capinsetsx_); + std::swap(capinsetsy_, other->capinsetsy_); + std::swap(capinsetswidth_, other->capinsetswidth_); + std::swap(capinsetsheight_, other->capinsetsheight_); + std::swap(scale9enable_, other->scale9enable_); + std::swap(scale9width_, other->scale9width_); + std::swap(scale9height_, other->scale9height_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string LoadingBarOptions::GetTypeName() const { + return "protocolbuffers.LoadingBarOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int ListViewOptions::kNameFieldNumber; +const int ListViewOptions::kClassnameFieldNumber; +const int ListViewOptions::kBackGroundImageFieldNumber; +const int ListViewOptions::kBackGroundImageDataFieldNumber; +const int ListViewOptions::kBgColorRFieldNumber; +const int ListViewOptions::kBgColorGFieldNumber; +const int ListViewOptions::kBgColorBFieldNumber; +const int ListViewOptions::kBgStartColorRFieldNumber; +const int ListViewOptions::kBgStartColorGFieldNumber; +const int ListViewOptions::kBgStartColorBFieldNumber; +const int ListViewOptions::kBgEndColorRFieldNumber; +const int ListViewOptions::kBgEndColorGFieldNumber; +const int ListViewOptions::kBgEndColorBFieldNumber; +const int ListViewOptions::kColorTypeFieldNumber; +const int ListViewOptions::kBgColorOpacityFieldNumber; +const int ListViewOptions::kVectorXFieldNumber; +const int ListViewOptions::kVectorYFieldNumber; +const int ListViewOptions::kCapInsetsXFieldNumber; +const int ListViewOptions::kCapInsetsYFieldNumber; +const int ListViewOptions::kCapInsetsWidthFieldNumber; +const int ListViewOptions::kCapInsetsHeightFieldNumber; +const int ListViewOptions::kBackGroundScale9EnableFieldNumber; +const int ListViewOptions::kInnerWidthFieldNumber; +const int ListViewOptions::kInnerHeightFieldNumber; +const int ListViewOptions::kClipAbleFieldNumber; +const int ListViewOptions::kBounceEnableFieldNumber; +const int ListViewOptions::kDirectionFieldNumber; +const int ListViewOptions::kGravityFieldNumber; +const int ListViewOptions::kItemMarginFieldNumber; +const int ListViewOptions::kScale9WidthFieldNumber; +const int ListViewOptions::kScale9HeightFieldNumber; +#endif // !_MSC_VER + +ListViewOptions::ListViewOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void ListViewOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + backgroundimagedata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + backgroundimagedata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +ListViewOptions::ListViewOptions(const ListViewOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void ListViewOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + backgroundimage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + backgroundimagedata_ = NULL; + bgcolorr_ = 0; + bgcolorg_ = 0; + bgcolorb_ = 0; + bgstartcolorr_ = 0; + bgstartcolorg_ = 0; + bgstartcolorb_ = 0; + bgendcolorr_ = 0; + bgendcolorg_ = 0; + bgendcolorb_ = 0; + colortype_ = 0; + bgcoloropacity_ = 0; + vectorx_ = 0; + vectory_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetswidth_ = 0; + capinsetsheight_ = 0; + backgroundscale9enable_ = false; + innerwidth_ = 0; + innerheight_ = 0; + clipable_ = false; + bounceenable_ = false; + direction_ = 0; + gravity_ = 0; + itemmargin_ = 0; + scale9width_ = 0; + scale9height_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +ListViewOptions::~ListViewOptions() { + SharedDtor(); +} + +void ListViewOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundimage_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete backgroundimagedata_; + } +} + +void ListViewOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ListViewOptions& ListViewOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +ListViewOptions* ListViewOptions::default_instance_ = NULL; + +ListViewOptions* ListViewOptions::New() const { + return new ListViewOptions; +} + +void ListViewOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_backgroundimage()) { + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + backgroundimage_->clear(); + } + } + if (has_backgroundimagedata()) { + if (backgroundimagedata_ != NULL) backgroundimagedata_->::protocolbuffers::ResourceData::Clear(); + } + bgcolorr_ = 0; + bgcolorg_ = 0; + bgcolorb_ = 0; + bgstartcolorr_ = 0; + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + bgstartcolorg_ = 0; + bgstartcolorb_ = 0; + bgendcolorr_ = 0; + bgendcolorg_ = 0; + bgendcolorb_ = 0; + colortype_ = 0; + bgcoloropacity_ = 0; + vectorx_ = 0; + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + vectory_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetswidth_ = 0; + capinsetsheight_ = 0; + backgroundscale9enable_ = false; + innerwidth_ = 0; + innerheight_ = 0; + } + if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) { + clipable_ = false; + bounceenable_ = false; + direction_ = 0; + gravity_ = 0; + itemmargin_ = 0; + scale9width_ = 0; + scale9height_ = 0; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool ListViewOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_backGroundImage; + break; + } + + // optional string backGroundImage = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundImage: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_backgroundimage())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_backGroundImageData; + break; + } + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundImageData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_backgroundimagedata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_bgColorR; + break; + } + + // optional int32 bgColorR = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcolorr_))); + set_has_bgcolorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(48)) goto parse_bgColorG; + break; + } + + // optional int32 bgColorG = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcolorg_))); + set_has_bgcolorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(56)) goto parse_bgColorB; + break; + } + + // optional int32 bgColorB = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcolorb_))); + set_has_bgcolorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(64)) goto parse_bgStartColorR; + break; + } + + // optional int32 bgStartColorR = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgStartColorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgstartcolorr_))); + set_has_bgstartcolorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(72)) goto parse_bgStartColorG; + break; + } + + // optional int32 bgStartColorG = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgStartColorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgstartcolorg_))); + set_has_bgstartcolorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(80)) goto parse_bgStartColorB; + break; + } + + // optional int32 bgStartColorB = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgStartColorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgstartcolorb_))); + set_has_bgstartcolorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(88)) goto parse_bgEndColorR; + break; + } + + // optional int32 bgEndColorR = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgEndColorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgendcolorr_))); + set_has_bgendcolorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(96)) goto parse_bgEndColorG; + break; + } + + // optional int32 bgEndColorG = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgEndColorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgendcolorg_))); + set_has_bgendcolorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(104)) goto parse_bgEndColorB; + break; + } + + // optional int32 bgEndColorB = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgEndColorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgendcolorb_))); + set_has_bgendcolorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(112)) goto parse_colorType; + break; + } + + // optional int32 colorType = 14; + case 14: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_colorType: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &colortype_))); + set_has_colortype(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(120)) goto parse_bgColorOpacity; + break; + } + + // optional int32 bgColorOpacity = 15; + case 15: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorOpacity: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcoloropacity_))); + set_has_bgcoloropacity(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(133)) goto parse_vectorX; + break; + } + + // optional float vectorX = 16; + case 16: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_vectorX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &vectorx_))); + set_has_vectorx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(141)) goto parse_vectorY; + break; + } + + // optional float vectorY = 17; + case 17: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_vectorY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &vectory_))); + set_has_vectory(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(149)) goto parse_capInsetsX; + break; + } + + // optional float capInsetsX = 18; + case 18: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsx_))); + set_has_capinsetsx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(157)) goto parse_capInsetsY; + break; + } + + // optional float capInsetsY = 19; + case 19: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsy_))); + set_has_capinsetsy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(165)) goto parse_capInsetsWidth; + break; + } + + // optional float capInsetsWidth = 20; + case 20: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetswidth_))); + set_has_capinsetswidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(173)) goto parse_capInsetsHeight; + break; + } + + // optional float capInsetsHeight = 21; + case 21: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsheight_))); + set_has_capinsetsheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(176)) goto parse_backGroundScale9Enable; + break; + } + + // optional bool backGroundScale9Enable = 22; + case 22: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_backGroundScale9Enable: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &backgroundscale9enable_))); + set_has_backgroundscale9enable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(189)) goto parse_innerWidth; + break; + } + + // optional float innerWidth = 23; + case 23: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_innerWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &innerwidth_))); + set_has_innerwidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(197)) goto parse_innerHeight; + break; + } + + // optional float innerHeight = 24; + case 24: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_innerHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &innerheight_))); + set_has_innerheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(200)) goto parse_clipAble; + break; + } + + // optional bool clipAble = 25; + case 25: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_clipAble: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &clipable_))); + set_has_clipable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(208)) goto parse_bounceEnable; + break; + } + + // optional bool bounceEnable = 26; + case 26: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bounceEnable: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &bounceenable_))); + set_has_bounceenable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(216)) goto parse_direction; + break; + } + + // optional int32 direction = 27; + case 27: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_direction: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &direction_))); + set_has_direction(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(224)) goto parse_gravity; + break; + } + + // optional int32 gravity = 28; + case 28: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_gravity: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &gravity_))); + set_has_gravity(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(232)) goto parse_itemMargin; + break; + } + + // optional int32 itemMargin = 29; + case 29: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_itemMargin: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &itemmargin_))); + set_has_itemmargin(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(245)) goto parse_scale9Width; + break; + } + + // optional float scale9Width = 30; + case 30: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Width: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9width_))); + set_has_scale9width(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(253)) goto parse_scale9Height; + break; + } + + // optional float scale9Height = 31; + case 31: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Height: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9height_))); + set_has_scale9height(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void ListViewOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string backGroundImage = 3; + if (has_backgroundimage()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->backgroundimage(), output); + } + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + if (has_backgroundimagedata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 4, this->backgroundimagedata(), output); + } + + // optional int32 bgColorR = 5; + if (has_bgcolorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->bgcolorr(), output); + } + + // optional int32 bgColorG = 6; + if (has_bgcolorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->bgcolorg(), output); + } + + // optional int32 bgColorB = 7; + if (has_bgcolorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->bgcolorb(), output); + } + + // optional int32 bgStartColorR = 8; + if (has_bgstartcolorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(8, this->bgstartcolorr(), output); + } + + // optional int32 bgStartColorG = 9; + if (has_bgstartcolorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(9, this->bgstartcolorg(), output); + } + + // optional int32 bgStartColorB = 10; + if (has_bgstartcolorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(10, this->bgstartcolorb(), output); + } + + // optional int32 bgEndColorR = 11; + if (has_bgendcolorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(11, this->bgendcolorr(), output); + } + + // optional int32 bgEndColorG = 12; + if (has_bgendcolorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(12, this->bgendcolorg(), output); + } + + // optional int32 bgEndColorB = 13; + if (has_bgendcolorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(13, this->bgendcolorb(), output); + } + + // optional int32 colorType = 14; + if (has_colortype()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(14, this->colortype(), output); + } + + // optional int32 bgColorOpacity = 15; + if (has_bgcoloropacity()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(15, this->bgcoloropacity(), output); + } + + // optional float vectorX = 16; + if (has_vectorx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(16, this->vectorx(), output); + } + + // optional float vectorY = 17; + if (has_vectory()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(17, this->vectory(), output); + } + + // optional float capInsetsX = 18; + if (has_capinsetsx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(18, this->capinsetsx(), output); + } + + // optional float capInsetsY = 19; + if (has_capinsetsy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(19, this->capinsetsy(), output); + } + + // optional float capInsetsWidth = 20; + if (has_capinsetswidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(20, this->capinsetswidth(), output); + } + + // optional float capInsetsHeight = 21; + if (has_capinsetsheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(21, this->capinsetsheight(), output); + } + + // optional bool backGroundScale9Enable = 22; + if (has_backgroundscale9enable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(22, this->backgroundscale9enable(), output); + } + + // optional float innerWidth = 23; + if (has_innerwidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(23, this->innerwidth(), output); + } + + // optional float innerHeight = 24; + if (has_innerheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(24, this->innerheight(), output); + } + + // optional bool clipAble = 25; + if (has_clipable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(25, this->clipable(), output); + } + + // optional bool bounceEnable = 26; + if (has_bounceenable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(26, this->bounceenable(), output); + } + + // optional int32 direction = 27; + if (has_direction()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(27, this->direction(), output); + } + + // optional int32 gravity = 28; + if (has_gravity()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(28, this->gravity(), output); + } + + // optional int32 itemMargin = 29; + if (has_itemmargin()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(29, this->itemmargin(), output); + } + + // optional float scale9Width = 30; + if (has_scale9width()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(30, this->scale9width(), output); + } + + // optional float scale9Height = 31; + if (has_scale9height()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(31, this->scale9height(), output); + } + +} + +int ListViewOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string backGroundImage = 3; + if (has_backgroundimage()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->backgroundimage()); + } + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + if (has_backgroundimagedata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->backgroundimagedata()); + } + + // optional int32 bgColorR = 5; + if (has_bgcolorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcolorr()); + } + + // optional int32 bgColorG = 6; + if (has_bgcolorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcolorg()); + } + + // optional int32 bgColorB = 7; + if (has_bgcolorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcolorb()); + } + + // optional int32 bgStartColorR = 8; + if (has_bgstartcolorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgstartcolorr()); + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional int32 bgStartColorG = 9; + if (has_bgstartcolorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgstartcolorg()); + } + + // optional int32 bgStartColorB = 10; + if (has_bgstartcolorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgstartcolorb()); + } + + // optional int32 bgEndColorR = 11; + if (has_bgendcolorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgendcolorr()); + } + + // optional int32 bgEndColorG = 12; + if (has_bgendcolorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgendcolorg()); + } + + // optional int32 bgEndColorB = 13; + if (has_bgendcolorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgendcolorb()); + } + + // optional int32 colorType = 14; + if (has_colortype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->colortype()); + } + + // optional int32 bgColorOpacity = 15; + if (has_bgcoloropacity()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcoloropacity()); + } + + // optional float vectorX = 16; + if (has_vectorx()) { + total_size += 2 + 4; + } + + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + // optional float vectorY = 17; + if (has_vectory()) { + total_size += 2 + 4; + } + + // optional float capInsetsX = 18; + if (has_capinsetsx()) { + total_size += 2 + 4; + } + + // optional float capInsetsY = 19; + if (has_capinsetsy()) { + total_size += 2 + 4; + } + + // optional float capInsetsWidth = 20; + if (has_capinsetswidth()) { + total_size += 2 + 4; + } + + // optional float capInsetsHeight = 21; + if (has_capinsetsheight()) { + total_size += 2 + 4; + } + + // optional bool backGroundScale9Enable = 22; + if (has_backgroundscale9enable()) { + total_size += 2 + 1; + } + + // optional float innerWidth = 23; + if (has_innerwidth()) { + total_size += 2 + 4; + } + + // optional float innerHeight = 24; + if (has_innerheight()) { + total_size += 2 + 4; + } + + } + if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) { + // optional bool clipAble = 25; + if (has_clipable()) { + total_size += 2 + 1; + } + + // optional bool bounceEnable = 26; + if (has_bounceenable()) { + total_size += 2 + 1; + } + + // optional int32 direction = 27; + if (has_direction()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->direction()); + } + + // optional int32 gravity = 28; + if (has_gravity()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->gravity()); + } + + // optional int32 itemMargin = 29; + if (has_itemmargin()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->itemmargin()); + } + + // optional float scale9Width = 30; + if (has_scale9width()) { + total_size += 2 + 4; + } + + // optional float scale9Height = 31; + if (has_scale9height()) { + total_size += 2 + 4; + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void ListViewOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void ListViewOptions::MergeFrom(const ListViewOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_backgroundimage()) { + set_backgroundimage(from.backgroundimage()); + } + if (from.has_backgroundimagedata()) { + mutable_backgroundimagedata()->::protocolbuffers::ResourceData::MergeFrom(from.backgroundimagedata()); + } + if (from.has_bgcolorr()) { + set_bgcolorr(from.bgcolorr()); + } + if (from.has_bgcolorg()) { + set_bgcolorg(from.bgcolorg()); + } + if (from.has_bgcolorb()) { + set_bgcolorb(from.bgcolorb()); + } + if (from.has_bgstartcolorr()) { + set_bgstartcolorr(from.bgstartcolorr()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_bgstartcolorg()) { + set_bgstartcolorg(from.bgstartcolorg()); + } + if (from.has_bgstartcolorb()) { + set_bgstartcolorb(from.bgstartcolorb()); + } + if (from.has_bgendcolorr()) { + set_bgendcolorr(from.bgendcolorr()); + } + if (from.has_bgendcolorg()) { + set_bgendcolorg(from.bgendcolorg()); + } + if (from.has_bgendcolorb()) { + set_bgendcolorb(from.bgendcolorb()); + } + if (from.has_colortype()) { + set_colortype(from.colortype()); + } + if (from.has_bgcoloropacity()) { + set_bgcoloropacity(from.bgcoloropacity()); + } + if (from.has_vectorx()) { + set_vectorx(from.vectorx()); + } + } + if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) { + if (from.has_vectory()) { + set_vectory(from.vectory()); + } + if (from.has_capinsetsx()) { + set_capinsetsx(from.capinsetsx()); + } + if (from.has_capinsetsy()) { + set_capinsetsy(from.capinsetsy()); + } + if (from.has_capinsetswidth()) { + set_capinsetswidth(from.capinsetswidth()); + } + if (from.has_capinsetsheight()) { + set_capinsetsheight(from.capinsetsheight()); + } + if (from.has_backgroundscale9enable()) { + set_backgroundscale9enable(from.backgroundscale9enable()); + } + if (from.has_innerwidth()) { + set_innerwidth(from.innerwidth()); + } + if (from.has_innerheight()) { + set_innerheight(from.innerheight()); + } + } + if (from._has_bits_[24 / 32] & (0xffu << (24 % 32))) { + if (from.has_clipable()) { + set_clipable(from.clipable()); + } + if (from.has_bounceenable()) { + set_bounceenable(from.bounceenable()); + } + if (from.has_direction()) { + set_direction(from.direction()); + } + if (from.has_gravity()) { + set_gravity(from.gravity()); + } + if (from.has_itemmargin()) { + set_itemmargin(from.itemmargin()); + } + if (from.has_scale9width()) { + set_scale9width(from.scale9width()); + } + if (from.has_scale9height()) { + set_scale9height(from.scale9height()); + } + } +} + +void ListViewOptions::CopyFrom(const ListViewOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ListViewOptions::IsInitialized() const { + + return true; +} + +void ListViewOptions::Swap(ListViewOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(backgroundimage_, other->backgroundimage_); + std::swap(backgroundimagedata_, other->backgroundimagedata_); + std::swap(bgcolorr_, other->bgcolorr_); + std::swap(bgcolorg_, other->bgcolorg_); + std::swap(bgcolorb_, other->bgcolorb_); + std::swap(bgstartcolorr_, other->bgstartcolorr_); + std::swap(bgstartcolorg_, other->bgstartcolorg_); + std::swap(bgstartcolorb_, other->bgstartcolorb_); + std::swap(bgendcolorr_, other->bgendcolorr_); + std::swap(bgendcolorg_, other->bgendcolorg_); + std::swap(bgendcolorb_, other->bgendcolorb_); + std::swap(colortype_, other->colortype_); + std::swap(bgcoloropacity_, other->bgcoloropacity_); + std::swap(vectorx_, other->vectorx_); + std::swap(vectory_, other->vectory_); + std::swap(capinsetsx_, other->capinsetsx_); + std::swap(capinsetsy_, other->capinsetsy_); + std::swap(capinsetswidth_, other->capinsetswidth_); + std::swap(capinsetsheight_, other->capinsetsheight_); + std::swap(backgroundscale9enable_, other->backgroundscale9enable_); + std::swap(innerwidth_, other->innerwidth_); + std::swap(innerheight_, other->innerheight_); + std::swap(clipable_, other->clipable_); + std::swap(bounceenable_, other->bounceenable_); + std::swap(direction_, other->direction_); + std::swap(gravity_, other->gravity_); + std::swap(itemmargin_, other->itemmargin_); + std::swap(scale9width_, other->scale9width_); + std::swap(scale9height_, other->scale9height_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string ListViewOptions::GetTypeName() const { + return "protocolbuffers.ListViewOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int PageViewOptions::kNameFieldNumber; +const int PageViewOptions::kClassnameFieldNumber; +const int PageViewOptions::kBackGroundImageFieldNumber; +const int PageViewOptions::kBackGroundImageDataFieldNumber; +const int PageViewOptions::kClipAbleFieldNumber; +const int PageViewOptions::kBgColorRFieldNumber; +const int PageViewOptions::kBgColorGFieldNumber; +const int PageViewOptions::kBgColorBFieldNumber; +const int PageViewOptions::kBgStartColorRFieldNumber; +const int PageViewOptions::kBgStartColorGFieldNumber; +const int PageViewOptions::kBgStartColorBFieldNumber; +const int PageViewOptions::kBgEndColorRFieldNumber; +const int PageViewOptions::kBgEndColorGFieldNumber; +const int PageViewOptions::kBgEndColorBFieldNumber; +const int PageViewOptions::kColorTypeFieldNumber; +const int PageViewOptions::kBgColorOpacityFieldNumber; +const int PageViewOptions::kVectorXFieldNumber; +const int PageViewOptions::kVectorYFieldNumber; +const int PageViewOptions::kCapInsetsXFieldNumber; +const int PageViewOptions::kCapInsetsYFieldNumber; +const int PageViewOptions::kCapInsetsWidthFieldNumber; +const int PageViewOptions::kCapInsetsHeightFieldNumber; +const int PageViewOptions::kBackGroundScale9EnableFieldNumber; +const int PageViewOptions::kScale9WidthFieldNumber; +const int PageViewOptions::kScale9HeightFieldNumber; +#endif // !_MSC_VER + +PageViewOptions::PageViewOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void PageViewOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + backgroundimagedata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + backgroundimagedata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +PageViewOptions::PageViewOptions(const PageViewOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void PageViewOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + backgroundimage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + backgroundimagedata_ = NULL; + clipable_ = false; + bgcolorr_ = 0; + bgcolorg_ = 0; + bgcolorb_ = 0; + bgstartcolorr_ = 0; + bgstartcolorg_ = 0; + bgstartcolorb_ = 0; + bgendcolorr_ = 0; + bgendcolorg_ = 0; + bgendcolorb_ = 0; + colortype_ = 0; + bgcoloropacity_ = 0; + vectorx_ = 0; + vectory_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetswidth_ = 0; + capinsetsheight_ = 0; + backgroundscale9enable_ = false; + scale9width_ = 0; + scale9height_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +PageViewOptions::~PageViewOptions() { + SharedDtor(); +} + +void PageViewOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundimage_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete backgroundimagedata_; + } +} + +void PageViewOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const PageViewOptions& PageViewOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +PageViewOptions* PageViewOptions::default_instance_ = NULL; + +PageViewOptions* PageViewOptions::New() const { + return new PageViewOptions; +} + +void PageViewOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_backgroundimage()) { + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + backgroundimage_->clear(); + } + } + if (has_backgroundimagedata()) { + if (backgroundimagedata_ != NULL) backgroundimagedata_->::protocolbuffers::ResourceData::Clear(); + } + clipable_ = false; + bgcolorr_ = 0; + bgcolorg_ = 0; + bgcolorb_ = 0; + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + bgstartcolorr_ = 0; + bgstartcolorg_ = 0; + bgstartcolorb_ = 0; + bgendcolorr_ = 0; + bgendcolorg_ = 0; + bgendcolorb_ = 0; + colortype_ = 0; + bgcoloropacity_ = 0; + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + vectorx_ = 0; + vectory_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetswidth_ = 0; + capinsetsheight_ = 0; + backgroundscale9enable_ = false; + scale9width_ = 0; + } + if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) { + scale9height_ = 0; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool PageViewOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_backGroundImage; + break; + } + + // optional string backGroundImage = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundImage: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_backgroundimage())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_backGroundImageData; + break; + } + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundImageData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_backgroundimagedata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_clipAble; + break; + } + + // optional bool clipAble = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_clipAble: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &clipable_))); + set_has_clipable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(48)) goto parse_bgColorR; + break; + } + + // optional int32 bgColorR = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcolorr_))); + set_has_bgcolorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(56)) goto parse_bgColorG; + break; + } + + // optional int32 bgColorG = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcolorg_))); + set_has_bgcolorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(64)) goto parse_bgColorB; + break; + } + + // optional int32 bgColorB = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcolorb_))); + set_has_bgcolorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(72)) goto parse_bgStartColorR; + break; + } + + // optional int32 bgStartColorR = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgStartColorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgstartcolorr_))); + set_has_bgstartcolorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(80)) goto parse_bgStartColorG; + break; + } + + // optional int32 bgStartColorG = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgStartColorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgstartcolorg_))); + set_has_bgstartcolorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(88)) goto parse_bgStartColorB; + break; + } + + // optional int32 bgStartColorB = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgStartColorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgstartcolorb_))); + set_has_bgstartcolorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(96)) goto parse_bgEndColorR; + break; + } + + // optional int32 bgEndColorR = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgEndColorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgendcolorr_))); + set_has_bgendcolorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(104)) goto parse_bgEndColorG; + break; + } + + // optional int32 bgEndColorG = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgEndColorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgendcolorg_))); + set_has_bgendcolorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(112)) goto parse_bgEndColorB; + break; + } + + // optional int32 bgEndColorB = 14; + case 14: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgEndColorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgendcolorb_))); + set_has_bgendcolorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(120)) goto parse_colorType; + break; + } + + // optional int32 colorType = 15; + case 15: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_colorType: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &colortype_))); + set_has_colortype(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(128)) goto parse_bgColorOpacity; + break; + } + + // optional int32 bgColorOpacity = 16; + case 16: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorOpacity: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcoloropacity_))); + set_has_bgcoloropacity(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(141)) goto parse_vectorX; + break; + } + + // optional float vectorX = 17; + case 17: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_vectorX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &vectorx_))); + set_has_vectorx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(149)) goto parse_vectorY; + break; + } + + // optional float vectorY = 18; + case 18: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_vectorY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &vectory_))); + set_has_vectory(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(157)) goto parse_capInsetsX; + break; + } + + // optional float capInsetsX = 19; + case 19: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsx_))); + set_has_capinsetsx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(165)) goto parse_capInsetsY; + break; + } + + // optional float capInsetsY = 20; + case 20: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsy_))); + set_has_capinsetsy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(173)) goto parse_capInsetsWidth; + break; + } + + // optional float capInsetsWidth = 21; + case 21: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetswidth_))); + set_has_capinsetswidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(181)) goto parse_capInsetsHeight; + break; + } + + // optional float capInsetsHeight = 22; + case 22: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsheight_))); + set_has_capinsetsheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(184)) goto parse_backGroundScale9Enable; + break; + } + + // optional bool backGroundScale9Enable = 23; + case 23: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_backGroundScale9Enable: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &backgroundscale9enable_))); + set_has_backgroundscale9enable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(197)) goto parse_scale9Width; + break; + } + + // optional float scale9Width = 24; + case 24: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Width: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9width_))); + set_has_scale9width(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(205)) goto parse_scale9Height; + break; + } + + // optional float scale9Height = 25; + case 25: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Height: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9height_))); + set_has_scale9height(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void PageViewOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string backGroundImage = 3; + if (has_backgroundimage()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->backgroundimage(), output); + } + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + if (has_backgroundimagedata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 4, this->backgroundimagedata(), output); + } + + // optional bool clipAble = 5; + if (has_clipable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->clipable(), output); + } + + // optional int32 bgColorR = 6; + if (has_bgcolorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->bgcolorr(), output); + } + + // optional int32 bgColorG = 7; + if (has_bgcolorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->bgcolorg(), output); + } + + // optional int32 bgColorB = 8; + if (has_bgcolorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(8, this->bgcolorb(), output); + } + + // optional int32 bgStartColorR = 9; + if (has_bgstartcolorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(9, this->bgstartcolorr(), output); + } + + // optional int32 bgStartColorG = 10; + if (has_bgstartcolorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(10, this->bgstartcolorg(), output); + } + + // optional int32 bgStartColorB = 11; + if (has_bgstartcolorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(11, this->bgstartcolorb(), output); + } + + // optional int32 bgEndColorR = 12; + if (has_bgendcolorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(12, this->bgendcolorr(), output); + } + + // optional int32 bgEndColorG = 13; + if (has_bgendcolorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(13, this->bgendcolorg(), output); + } + + // optional int32 bgEndColorB = 14; + if (has_bgendcolorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(14, this->bgendcolorb(), output); + } + + // optional int32 colorType = 15; + if (has_colortype()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(15, this->colortype(), output); + } + + // optional int32 bgColorOpacity = 16; + if (has_bgcoloropacity()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(16, this->bgcoloropacity(), output); + } + + // optional float vectorX = 17; + if (has_vectorx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(17, this->vectorx(), output); + } + + // optional float vectorY = 18; + if (has_vectory()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(18, this->vectory(), output); + } + + // optional float capInsetsX = 19; + if (has_capinsetsx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(19, this->capinsetsx(), output); + } + + // optional float capInsetsY = 20; + if (has_capinsetsy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(20, this->capinsetsy(), output); + } + + // optional float capInsetsWidth = 21; + if (has_capinsetswidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(21, this->capinsetswidth(), output); + } + + // optional float capInsetsHeight = 22; + if (has_capinsetsheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(22, this->capinsetsheight(), output); + } + + // optional bool backGroundScale9Enable = 23; + if (has_backgroundscale9enable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(23, this->backgroundscale9enable(), output); + } + + // optional float scale9Width = 24; + if (has_scale9width()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(24, this->scale9width(), output); + } + + // optional float scale9Height = 25; + if (has_scale9height()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(25, this->scale9height(), output); + } + +} + +int PageViewOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string backGroundImage = 3; + if (has_backgroundimage()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->backgroundimage()); + } + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + if (has_backgroundimagedata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->backgroundimagedata()); + } + + // optional bool clipAble = 5; + if (has_clipable()) { + total_size += 1 + 1; + } + + // optional int32 bgColorR = 6; + if (has_bgcolorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcolorr()); + } + + // optional int32 bgColorG = 7; + if (has_bgcolorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcolorg()); + } + + // optional int32 bgColorB = 8; + if (has_bgcolorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcolorb()); + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional int32 bgStartColorR = 9; + if (has_bgstartcolorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgstartcolorr()); + } + + // optional int32 bgStartColorG = 10; + if (has_bgstartcolorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgstartcolorg()); + } + + // optional int32 bgStartColorB = 11; + if (has_bgstartcolorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgstartcolorb()); + } + + // optional int32 bgEndColorR = 12; + if (has_bgendcolorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgendcolorr()); + } + + // optional int32 bgEndColorG = 13; + if (has_bgendcolorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgendcolorg()); + } + + // optional int32 bgEndColorB = 14; + if (has_bgendcolorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgendcolorb()); + } + + // optional int32 colorType = 15; + if (has_colortype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->colortype()); + } + + // optional int32 bgColorOpacity = 16; + if (has_bgcoloropacity()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcoloropacity()); + } + + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + // optional float vectorX = 17; + if (has_vectorx()) { + total_size += 2 + 4; + } + + // optional float vectorY = 18; + if (has_vectory()) { + total_size += 2 + 4; + } + + // optional float capInsetsX = 19; + if (has_capinsetsx()) { + total_size += 2 + 4; + } + + // optional float capInsetsY = 20; + if (has_capinsetsy()) { + total_size += 2 + 4; + } + + // optional float capInsetsWidth = 21; + if (has_capinsetswidth()) { + total_size += 2 + 4; + } + + // optional float capInsetsHeight = 22; + if (has_capinsetsheight()) { + total_size += 2 + 4; + } + + // optional bool backGroundScale9Enable = 23; + if (has_backgroundscale9enable()) { + total_size += 2 + 1; + } + + // optional float scale9Width = 24; + if (has_scale9width()) { + total_size += 2 + 4; + } + + } + if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) { + // optional float scale9Height = 25; + if (has_scale9height()) { + total_size += 2 + 4; + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void PageViewOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void PageViewOptions::MergeFrom(const PageViewOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_backgroundimage()) { + set_backgroundimage(from.backgroundimage()); + } + if (from.has_backgroundimagedata()) { + mutable_backgroundimagedata()->::protocolbuffers::ResourceData::MergeFrom(from.backgroundimagedata()); + } + if (from.has_clipable()) { + set_clipable(from.clipable()); + } + if (from.has_bgcolorr()) { + set_bgcolorr(from.bgcolorr()); + } + if (from.has_bgcolorg()) { + set_bgcolorg(from.bgcolorg()); + } + if (from.has_bgcolorb()) { + set_bgcolorb(from.bgcolorb()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_bgstartcolorr()) { + set_bgstartcolorr(from.bgstartcolorr()); + } + if (from.has_bgstartcolorg()) { + set_bgstartcolorg(from.bgstartcolorg()); + } + if (from.has_bgstartcolorb()) { + set_bgstartcolorb(from.bgstartcolorb()); + } + if (from.has_bgendcolorr()) { + set_bgendcolorr(from.bgendcolorr()); + } + if (from.has_bgendcolorg()) { + set_bgendcolorg(from.bgendcolorg()); + } + if (from.has_bgendcolorb()) { + set_bgendcolorb(from.bgendcolorb()); + } + if (from.has_colortype()) { + set_colortype(from.colortype()); + } + if (from.has_bgcoloropacity()) { + set_bgcoloropacity(from.bgcoloropacity()); + } + } + if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) { + if (from.has_vectorx()) { + set_vectorx(from.vectorx()); + } + if (from.has_vectory()) { + set_vectory(from.vectory()); + } + if (from.has_capinsetsx()) { + set_capinsetsx(from.capinsetsx()); + } + if (from.has_capinsetsy()) { + set_capinsetsy(from.capinsetsy()); + } + if (from.has_capinsetswidth()) { + set_capinsetswidth(from.capinsetswidth()); + } + if (from.has_capinsetsheight()) { + set_capinsetsheight(from.capinsetsheight()); + } + if (from.has_backgroundscale9enable()) { + set_backgroundscale9enable(from.backgroundscale9enable()); + } + if (from.has_scale9width()) { + set_scale9width(from.scale9width()); + } + } + if (from._has_bits_[24 / 32] & (0xffu << (24 % 32))) { + if (from.has_scale9height()) { + set_scale9height(from.scale9height()); + } + } +} + +void PageViewOptions::CopyFrom(const PageViewOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool PageViewOptions::IsInitialized() const { + + return true; +} + +void PageViewOptions::Swap(PageViewOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(backgroundimage_, other->backgroundimage_); + std::swap(backgroundimagedata_, other->backgroundimagedata_); + std::swap(clipable_, other->clipable_); + std::swap(bgcolorr_, other->bgcolorr_); + std::swap(bgcolorg_, other->bgcolorg_); + std::swap(bgcolorb_, other->bgcolorb_); + std::swap(bgstartcolorr_, other->bgstartcolorr_); + std::swap(bgstartcolorg_, other->bgstartcolorg_); + std::swap(bgstartcolorb_, other->bgstartcolorb_); + std::swap(bgendcolorr_, other->bgendcolorr_); + std::swap(bgendcolorg_, other->bgendcolorg_); + std::swap(bgendcolorb_, other->bgendcolorb_); + std::swap(colortype_, other->colortype_); + std::swap(bgcoloropacity_, other->bgcoloropacity_); + std::swap(vectorx_, other->vectorx_); + std::swap(vectory_, other->vectory_); + std::swap(capinsetsx_, other->capinsetsx_); + std::swap(capinsetsy_, other->capinsetsy_); + std::swap(capinsetswidth_, other->capinsetswidth_); + std::swap(capinsetsheight_, other->capinsetsheight_); + std::swap(backgroundscale9enable_, other->backgroundscale9enable_); + std::swap(scale9width_, other->scale9width_); + std::swap(scale9height_, other->scale9height_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string PageViewOptions::GetTypeName() const { + return "protocolbuffers.PageViewOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int PanelOptions::kNameFieldNumber; +const int PanelOptions::kClassnameFieldNumber; +const int PanelOptions::kBackGroundImageFieldNumber; +const int PanelOptions::kBackGroundImageDataFieldNumber; +const int PanelOptions::kClipAbleFieldNumber; +const int PanelOptions::kBgColorRFieldNumber; +const int PanelOptions::kBgColorGFieldNumber; +const int PanelOptions::kBgColorBFieldNumber; +const int PanelOptions::kBgStartColorRFieldNumber; +const int PanelOptions::kBgStartColorGFieldNumber; +const int PanelOptions::kBgStartColorBFieldNumber; +const int PanelOptions::kBgEndColorRFieldNumber; +const int PanelOptions::kBgEndColorGFieldNumber; +const int PanelOptions::kBgEndColorBFieldNumber; +const int PanelOptions::kColorTypeFieldNumber; +const int PanelOptions::kBgColorOpacityFieldNumber; +const int PanelOptions::kVectorXFieldNumber; +const int PanelOptions::kVectorYFieldNumber; +const int PanelOptions::kCapInsetsXFieldNumber; +const int PanelOptions::kCapInsetsYFieldNumber; +const int PanelOptions::kCapInsetsWidthFieldNumber; +const int PanelOptions::kCapInsetsHeightFieldNumber; +const int PanelOptions::kBackGroundScale9EnableFieldNumber; +const int PanelOptions::kLayoutTypeFieldNumber; +const int PanelOptions::kAdaptScreenFieldNumber; +const int PanelOptions::kScale9WidthFieldNumber; +const int PanelOptions::kScale9HeightFieldNumber; +#endif // !_MSC_VER + +PanelOptions::PanelOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void PanelOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + backgroundimagedata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + backgroundimagedata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +PanelOptions::PanelOptions(const PanelOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void PanelOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + backgroundimage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + backgroundimagedata_ = NULL; + clipable_ = false; + bgcolorr_ = 0; + bgcolorg_ = 0; + bgcolorb_ = 0; + bgstartcolorr_ = 0; + bgstartcolorg_ = 0; + bgstartcolorb_ = 0; + bgendcolorr_ = 0; + bgendcolorg_ = 0; + bgendcolorb_ = 0; + colortype_ = 0; + bgcoloropacity_ = 0; + vectorx_ = 0; + vectory_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetswidth_ = 0; + capinsetsheight_ = 0; + backgroundscale9enable_ = false; + layouttype_ = 0; + adaptscreen_ = false; + scale9width_ = 0; + scale9height_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +PanelOptions::~PanelOptions() { + SharedDtor(); +} + +void PanelOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundimage_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete backgroundimagedata_; + } +} + +void PanelOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const PanelOptions& PanelOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +PanelOptions* PanelOptions::default_instance_ = NULL; + +PanelOptions* PanelOptions::New() const { + return new PanelOptions; +} + +void PanelOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_backgroundimage()) { + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + backgroundimage_->clear(); + } + } + if (has_backgroundimagedata()) { + if (backgroundimagedata_ != NULL) backgroundimagedata_->::protocolbuffers::ResourceData::Clear(); + } + clipable_ = false; + bgcolorr_ = 0; + bgcolorg_ = 0; + bgcolorb_ = 0; + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + bgstartcolorr_ = 0; + bgstartcolorg_ = 0; + bgstartcolorb_ = 0; + bgendcolorr_ = 0; + bgendcolorg_ = 0; + bgendcolorb_ = 0; + colortype_ = 0; + bgcoloropacity_ = 0; + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + vectorx_ = 0; + vectory_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetswidth_ = 0; + capinsetsheight_ = 0; + backgroundscale9enable_ = false; + layouttype_ = 0; + } + if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) { + adaptscreen_ = false; + scale9width_ = 0; + scale9height_ = 0; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool PanelOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_backGroundImage; + break; + } + + // optional string backGroundImage = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundImage: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_backgroundimage())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_backGroundImageData; + break; + } + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundImageData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_backgroundimagedata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_clipAble; + break; + } + + // optional bool clipAble = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_clipAble: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &clipable_))); + set_has_clipable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(48)) goto parse_bgColorR; + break; + } + + // optional int32 bgColorR = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcolorr_))); + set_has_bgcolorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(56)) goto parse_bgColorG; + break; + } + + // optional int32 bgColorG = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcolorg_))); + set_has_bgcolorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(64)) goto parse_bgColorB; + break; + } + + // optional int32 bgColorB = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcolorb_))); + set_has_bgcolorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(72)) goto parse_bgStartColorR; + break; + } + + // optional int32 bgStartColorR = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgStartColorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgstartcolorr_))); + set_has_bgstartcolorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(80)) goto parse_bgStartColorG; + break; + } + + // optional int32 bgStartColorG = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgStartColorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgstartcolorg_))); + set_has_bgstartcolorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(88)) goto parse_bgStartColorB; + break; + } + + // optional int32 bgStartColorB = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgStartColorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgstartcolorb_))); + set_has_bgstartcolorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(96)) goto parse_bgEndColorR; + break; + } + + // optional int32 bgEndColorR = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgEndColorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgendcolorr_))); + set_has_bgendcolorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(104)) goto parse_bgEndColorG; + break; + } + + // optional int32 bgEndColorG = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgEndColorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgendcolorg_))); + set_has_bgendcolorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(112)) goto parse_bgEndColorB; + break; + } + + // optional int32 bgEndColorB = 14; + case 14: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgEndColorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgendcolorb_))); + set_has_bgendcolorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(120)) goto parse_colorType; + break; + } + + // optional int32 colorType = 15; + case 15: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_colorType: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &colortype_))); + set_has_colortype(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(128)) goto parse_bgColorOpacity; + break; + } + + // optional int32 bgColorOpacity = 16; + case 16: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorOpacity: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcoloropacity_))); + set_has_bgcoloropacity(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(141)) goto parse_vectorX; + break; + } + + // optional float vectorX = 17; + case 17: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_vectorX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &vectorx_))); + set_has_vectorx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(149)) goto parse_vectorY; + break; + } + + // optional float vectorY = 18; + case 18: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_vectorY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &vectory_))); + set_has_vectory(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(157)) goto parse_capInsetsX; + break; + } + + // optional float capInsetsX = 19; + case 19: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsx_))); + set_has_capinsetsx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(165)) goto parse_capInsetsY; + break; + } + + // optional float capInsetsY = 20; + case 20: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsy_))); + set_has_capinsetsy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(173)) goto parse_capInsetsWidth; + break; + } + + // optional float capInsetsWidth = 21; + case 21: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetswidth_))); + set_has_capinsetswidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(181)) goto parse_capInsetsHeight; + break; + } + + // optional float capInsetsHeight = 22; + case 22: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsheight_))); + set_has_capinsetsheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(184)) goto parse_backGroundScale9Enable; + break; + } + + // optional bool backGroundScale9Enable = 23; + case 23: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_backGroundScale9Enable: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &backgroundscale9enable_))); + set_has_backgroundscale9enable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(192)) goto parse_layoutType; + break; + } + + // optional int32 layoutType = 24; + case 24: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_layoutType: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &layouttype_))); + set_has_layouttype(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(200)) goto parse_adaptScreen; + break; + } + + // optional bool adaptScreen = 25; + case 25: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_adaptScreen: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &adaptscreen_))); + set_has_adaptscreen(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(213)) goto parse_scale9Width; + break; + } + + // optional float scale9Width = 26; + case 26: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Width: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9width_))); + set_has_scale9width(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(221)) goto parse_scale9Height; + break; + } + + // optional float scale9Height = 27; + case 27: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Height: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9height_))); + set_has_scale9height(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void PanelOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string backGroundImage = 3; + if (has_backgroundimage()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->backgroundimage(), output); + } + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + if (has_backgroundimagedata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 4, this->backgroundimagedata(), output); + } + + // optional bool clipAble = 5; + if (has_clipable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->clipable(), output); + } + + // optional int32 bgColorR = 6; + if (has_bgcolorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->bgcolorr(), output); + } + + // optional int32 bgColorG = 7; + if (has_bgcolorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->bgcolorg(), output); + } + + // optional int32 bgColorB = 8; + if (has_bgcolorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(8, this->bgcolorb(), output); + } + + // optional int32 bgStartColorR = 9; + if (has_bgstartcolorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(9, this->bgstartcolorr(), output); + } + + // optional int32 bgStartColorG = 10; + if (has_bgstartcolorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(10, this->bgstartcolorg(), output); + } + + // optional int32 bgStartColorB = 11; + if (has_bgstartcolorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(11, this->bgstartcolorb(), output); + } + + // optional int32 bgEndColorR = 12; + if (has_bgendcolorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(12, this->bgendcolorr(), output); + } + + // optional int32 bgEndColorG = 13; + if (has_bgendcolorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(13, this->bgendcolorg(), output); + } + + // optional int32 bgEndColorB = 14; + if (has_bgendcolorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(14, this->bgendcolorb(), output); + } + + // optional int32 colorType = 15; + if (has_colortype()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(15, this->colortype(), output); + } + + // optional int32 bgColorOpacity = 16; + if (has_bgcoloropacity()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(16, this->bgcoloropacity(), output); + } + + // optional float vectorX = 17; + if (has_vectorx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(17, this->vectorx(), output); + } + + // optional float vectorY = 18; + if (has_vectory()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(18, this->vectory(), output); + } + + // optional float capInsetsX = 19; + if (has_capinsetsx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(19, this->capinsetsx(), output); + } + + // optional float capInsetsY = 20; + if (has_capinsetsy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(20, this->capinsetsy(), output); + } + + // optional float capInsetsWidth = 21; + if (has_capinsetswidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(21, this->capinsetswidth(), output); + } + + // optional float capInsetsHeight = 22; + if (has_capinsetsheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(22, this->capinsetsheight(), output); + } + + // optional bool backGroundScale9Enable = 23; + if (has_backgroundscale9enable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(23, this->backgroundscale9enable(), output); + } + + // optional int32 layoutType = 24; + if (has_layouttype()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(24, this->layouttype(), output); + } + + // optional bool adaptScreen = 25; + if (has_adaptscreen()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(25, this->adaptscreen(), output); + } + + // optional float scale9Width = 26; + if (has_scale9width()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(26, this->scale9width(), output); + } + + // optional float scale9Height = 27; + if (has_scale9height()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(27, this->scale9height(), output); + } + +} + +int PanelOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string backGroundImage = 3; + if (has_backgroundimage()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->backgroundimage()); + } + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + if (has_backgroundimagedata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->backgroundimagedata()); + } + + // optional bool clipAble = 5; + if (has_clipable()) { + total_size += 1 + 1; + } + + // optional int32 bgColorR = 6; + if (has_bgcolorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcolorr()); + } + + // optional int32 bgColorG = 7; + if (has_bgcolorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcolorg()); + } + + // optional int32 bgColorB = 8; + if (has_bgcolorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcolorb()); + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional int32 bgStartColorR = 9; + if (has_bgstartcolorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgstartcolorr()); + } + + // optional int32 bgStartColorG = 10; + if (has_bgstartcolorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgstartcolorg()); + } + + // optional int32 bgStartColorB = 11; + if (has_bgstartcolorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgstartcolorb()); + } + + // optional int32 bgEndColorR = 12; + if (has_bgendcolorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgendcolorr()); + } + + // optional int32 bgEndColorG = 13; + if (has_bgendcolorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgendcolorg()); + } + + // optional int32 bgEndColorB = 14; + if (has_bgendcolorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgendcolorb()); + } + + // optional int32 colorType = 15; + if (has_colortype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->colortype()); + } + + // optional int32 bgColorOpacity = 16; + if (has_bgcoloropacity()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcoloropacity()); + } + + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + // optional float vectorX = 17; + if (has_vectorx()) { + total_size += 2 + 4; + } + + // optional float vectorY = 18; + if (has_vectory()) { + total_size += 2 + 4; + } + + // optional float capInsetsX = 19; + if (has_capinsetsx()) { + total_size += 2 + 4; + } + + // optional float capInsetsY = 20; + if (has_capinsetsy()) { + total_size += 2 + 4; + } + + // optional float capInsetsWidth = 21; + if (has_capinsetswidth()) { + total_size += 2 + 4; + } + + // optional float capInsetsHeight = 22; + if (has_capinsetsheight()) { + total_size += 2 + 4; + } + + // optional bool backGroundScale9Enable = 23; + if (has_backgroundscale9enable()) { + total_size += 2 + 1; + } + + // optional int32 layoutType = 24; + if (has_layouttype()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->layouttype()); + } + + } + if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) { + // optional bool adaptScreen = 25; + if (has_adaptscreen()) { + total_size += 2 + 1; + } + + // optional float scale9Width = 26; + if (has_scale9width()) { + total_size += 2 + 4; + } + + // optional float scale9Height = 27; + if (has_scale9height()) { + total_size += 2 + 4; + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void PanelOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void PanelOptions::MergeFrom(const PanelOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_backgroundimage()) { + set_backgroundimage(from.backgroundimage()); + } + if (from.has_backgroundimagedata()) { + mutable_backgroundimagedata()->::protocolbuffers::ResourceData::MergeFrom(from.backgroundimagedata()); + } + if (from.has_clipable()) { + set_clipable(from.clipable()); + } + if (from.has_bgcolorr()) { + set_bgcolorr(from.bgcolorr()); + } + if (from.has_bgcolorg()) { + set_bgcolorg(from.bgcolorg()); + } + if (from.has_bgcolorb()) { + set_bgcolorb(from.bgcolorb()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_bgstartcolorr()) { + set_bgstartcolorr(from.bgstartcolorr()); + } + if (from.has_bgstartcolorg()) { + set_bgstartcolorg(from.bgstartcolorg()); + } + if (from.has_bgstartcolorb()) { + set_bgstartcolorb(from.bgstartcolorb()); + } + if (from.has_bgendcolorr()) { + set_bgendcolorr(from.bgendcolorr()); + } + if (from.has_bgendcolorg()) { + set_bgendcolorg(from.bgendcolorg()); + } + if (from.has_bgendcolorb()) { + set_bgendcolorb(from.bgendcolorb()); + } + if (from.has_colortype()) { + set_colortype(from.colortype()); + } + if (from.has_bgcoloropacity()) { + set_bgcoloropacity(from.bgcoloropacity()); + } + } + if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) { + if (from.has_vectorx()) { + set_vectorx(from.vectorx()); + } + if (from.has_vectory()) { + set_vectory(from.vectory()); + } + if (from.has_capinsetsx()) { + set_capinsetsx(from.capinsetsx()); + } + if (from.has_capinsetsy()) { + set_capinsetsy(from.capinsetsy()); + } + if (from.has_capinsetswidth()) { + set_capinsetswidth(from.capinsetswidth()); + } + if (from.has_capinsetsheight()) { + set_capinsetsheight(from.capinsetsheight()); + } + if (from.has_backgroundscale9enable()) { + set_backgroundscale9enable(from.backgroundscale9enable()); + } + if (from.has_layouttype()) { + set_layouttype(from.layouttype()); + } + } + if (from._has_bits_[24 / 32] & (0xffu << (24 % 32))) { + if (from.has_adaptscreen()) { + set_adaptscreen(from.adaptscreen()); + } + if (from.has_scale9width()) { + set_scale9width(from.scale9width()); + } + if (from.has_scale9height()) { + set_scale9height(from.scale9height()); + } + } +} + +void PanelOptions::CopyFrom(const PanelOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool PanelOptions::IsInitialized() const { + + return true; +} + +void PanelOptions::Swap(PanelOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(backgroundimage_, other->backgroundimage_); + std::swap(backgroundimagedata_, other->backgroundimagedata_); + std::swap(clipable_, other->clipable_); + std::swap(bgcolorr_, other->bgcolorr_); + std::swap(bgcolorg_, other->bgcolorg_); + std::swap(bgcolorb_, other->bgcolorb_); + std::swap(bgstartcolorr_, other->bgstartcolorr_); + std::swap(bgstartcolorg_, other->bgstartcolorg_); + std::swap(bgstartcolorb_, other->bgstartcolorb_); + std::swap(bgendcolorr_, other->bgendcolorr_); + std::swap(bgendcolorg_, other->bgendcolorg_); + std::swap(bgendcolorb_, other->bgendcolorb_); + std::swap(colortype_, other->colortype_); + std::swap(bgcoloropacity_, other->bgcoloropacity_); + std::swap(vectorx_, other->vectorx_); + std::swap(vectory_, other->vectory_); + std::swap(capinsetsx_, other->capinsetsx_); + std::swap(capinsetsy_, other->capinsetsy_); + std::swap(capinsetswidth_, other->capinsetswidth_); + std::swap(capinsetsheight_, other->capinsetsheight_); + std::swap(backgroundscale9enable_, other->backgroundscale9enable_); + std::swap(layouttype_, other->layouttype_); + std::swap(adaptscreen_, other->adaptscreen_); + std::swap(scale9width_, other->scale9width_); + std::swap(scale9height_, other->scale9height_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string PanelOptions::GetTypeName() const { + return "protocolbuffers.PanelOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int ScrollViewOptions::kNameFieldNumber; +const int ScrollViewOptions::kClassnameFieldNumber; +const int ScrollViewOptions::kBackGroundImageFieldNumber; +const int ScrollViewOptions::kBackGroundImageDataFieldNumber; +const int ScrollViewOptions::kBgColorRFieldNumber; +const int ScrollViewOptions::kBgColorGFieldNumber; +const int ScrollViewOptions::kBgColorBFieldNumber; +const int ScrollViewOptions::kBgStartColorRFieldNumber; +const int ScrollViewOptions::kBgStartColorGFieldNumber; +const int ScrollViewOptions::kBgStartColorBFieldNumber; +const int ScrollViewOptions::kBgEndColorRFieldNumber; +const int ScrollViewOptions::kBgEndColorGFieldNumber; +const int ScrollViewOptions::kBgEndColorBFieldNumber; +const int ScrollViewOptions::kColorTypeFieldNumber; +const int ScrollViewOptions::kBgColorOpacityFieldNumber; +const int ScrollViewOptions::kVectorXFieldNumber; +const int ScrollViewOptions::kVectorYFieldNumber; +const int ScrollViewOptions::kCapInsetsXFieldNumber; +const int ScrollViewOptions::kCapInsetsYFieldNumber; +const int ScrollViewOptions::kCapInsetsWidthFieldNumber; +const int ScrollViewOptions::kCapInsetsHeightFieldNumber; +const int ScrollViewOptions::kBackGroundScale9EnableFieldNumber; +const int ScrollViewOptions::kInnerWidthFieldNumber; +const int ScrollViewOptions::kInnerHeightFieldNumber; +const int ScrollViewOptions::kDirectionFieldNumber; +const int ScrollViewOptions::kClipAbleFieldNumber; +const int ScrollViewOptions::kBounceEnableFieldNumber; +const int ScrollViewOptions::kLayoutTypeFieldNumber; +const int ScrollViewOptions::kScale9WidthFieldNumber; +const int ScrollViewOptions::kScale9HeightFieldNumber; +#endif // !_MSC_VER + +ScrollViewOptions::ScrollViewOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void ScrollViewOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + backgroundimagedata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + backgroundimagedata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +ScrollViewOptions::ScrollViewOptions(const ScrollViewOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void ScrollViewOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + backgroundimage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + backgroundimagedata_ = NULL; + bgcolorr_ = 0; + bgcolorg_ = 0; + bgcolorb_ = 0; + bgstartcolorr_ = 0; + bgstartcolorg_ = 0; + bgstartcolorb_ = 0; + bgendcolorr_ = 0; + bgendcolorg_ = 0; + bgendcolorb_ = 0; + colortype_ = 0; + bgcoloropacity_ = 0; + vectorx_ = 0; + vectory_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetswidth_ = 0; + capinsetsheight_ = 0; + backgroundscale9enable_ = false; + innerwidth_ = 0; + innerheight_ = 0; + direction_ = 0; + clipable_ = false; + bounceenable_ = false; + layouttype_ = 0; + scale9width_ = 0; + scale9height_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +ScrollViewOptions::~ScrollViewOptions() { + SharedDtor(); +} + +void ScrollViewOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundimage_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete backgroundimagedata_; + } +} + +void ScrollViewOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ScrollViewOptions& ScrollViewOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +ScrollViewOptions* ScrollViewOptions::default_instance_ = NULL; + +ScrollViewOptions* ScrollViewOptions::New() const { + return new ScrollViewOptions; +} + +void ScrollViewOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_backgroundimage()) { + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + backgroundimage_->clear(); + } + } + if (has_backgroundimagedata()) { + if (backgroundimagedata_ != NULL) backgroundimagedata_->::protocolbuffers::ResourceData::Clear(); + } + bgcolorr_ = 0; + bgcolorg_ = 0; + bgcolorb_ = 0; + bgstartcolorr_ = 0; + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + bgstartcolorg_ = 0; + bgstartcolorb_ = 0; + bgendcolorr_ = 0; + bgendcolorg_ = 0; + bgendcolorb_ = 0; + colortype_ = 0; + bgcoloropacity_ = 0; + vectorx_ = 0; + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + vectory_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetswidth_ = 0; + capinsetsheight_ = 0; + backgroundscale9enable_ = false; + innerwidth_ = 0; + innerheight_ = 0; + } + if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) { + direction_ = 0; + clipable_ = false; + bounceenable_ = false; + layouttype_ = 0; + scale9width_ = 0; + scale9height_ = 0; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool ScrollViewOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_backGroundImage; + break; + } + + // optional string backGroundImage = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundImage: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_backgroundimage())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_backGroundImageData; + break; + } + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_backGroundImageData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_backgroundimagedata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_bgColorR; + break; + } + + // optional int32 bgColorR = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcolorr_))); + set_has_bgcolorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(48)) goto parse_bgColorG; + break; + } + + // optional int32 bgColorG = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcolorg_))); + set_has_bgcolorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(56)) goto parse_bgColorB; + break; + } + + // optional int32 bgColorB = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcolorb_))); + set_has_bgcolorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(64)) goto parse_bgStartColorR; + break; + } + + // optional int32 bgStartColorR = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgStartColorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgstartcolorr_))); + set_has_bgstartcolorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(72)) goto parse_bgStartColorG; + break; + } + + // optional int32 bgStartColorG = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgStartColorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgstartcolorg_))); + set_has_bgstartcolorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(80)) goto parse_bgStartColorB; + break; + } + + // optional int32 bgStartColorB = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgStartColorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgstartcolorb_))); + set_has_bgstartcolorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(88)) goto parse_bgEndColorR; + break; + } + + // optional int32 bgEndColorR = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgEndColorR: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgendcolorr_))); + set_has_bgendcolorr(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(96)) goto parse_bgEndColorG; + break; + } + + // optional int32 bgEndColorG = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgEndColorG: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgendcolorg_))); + set_has_bgendcolorg(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(104)) goto parse_bgEndColorB; + break; + } + + // optional int32 bgEndColorB = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgEndColorB: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgendcolorb_))); + set_has_bgendcolorb(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(112)) goto parse_colorType; + break; + } + + // optional int32 colorType = 14; + case 14: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_colorType: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &colortype_))); + set_has_colortype(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(120)) goto parse_bgColorOpacity; + break; + } + + // optional int32 bgColorOpacity = 15; + case 15: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bgColorOpacity: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &bgcoloropacity_))); + set_has_bgcoloropacity(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(133)) goto parse_vectorX; + break; + } + + // optional float vectorX = 16; + case 16: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_vectorX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &vectorx_))); + set_has_vectorx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(141)) goto parse_vectorY; + break; + } + + // optional float vectorY = 17; + case 17: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_vectorY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &vectory_))); + set_has_vectory(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(149)) goto parse_capInsetsX; + break; + } + + // optional float capInsetsX = 18; + case 18: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsx_))); + set_has_capinsetsx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(157)) goto parse_capInsetsY; + break; + } + + // optional float capInsetsY = 19; + case 19: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsy_))); + set_has_capinsetsy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(165)) goto parse_capInsetsWidth; + break; + } + + // optional float capInsetsWidth = 20; + case 20: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetswidth_))); + set_has_capinsetswidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(173)) goto parse_capInsetsHeight; + break; + } + + // optional float capInsetsHeight = 21; + case 21: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsheight_))); + set_has_capinsetsheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(176)) goto parse_backGroundScale9Enable; + break; + } + + // optional bool backGroundScale9Enable = 22; + case 22: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_backGroundScale9Enable: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &backgroundscale9enable_))); + set_has_backgroundscale9enable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(189)) goto parse_innerWidth; + break; + } + + // optional float innerWidth = 23; + case 23: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_innerWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &innerwidth_))); + set_has_innerwidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(197)) goto parse_innerHeight; + break; + } + + // optional float innerHeight = 24; + case 24: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_innerHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &innerheight_))); + set_has_innerheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(200)) goto parse_direction; + break; + } + + // optional int32 direction = 25; + case 25: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_direction: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &direction_))); + set_has_direction(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(208)) goto parse_clipAble; + break; + } + + // optional bool clipAble = 26; + case 26: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_clipAble: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &clipable_))); + set_has_clipable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(216)) goto parse_bounceEnable; + break; + } + + // optional bool bounceEnable = 27; + case 27: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_bounceEnable: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &bounceenable_))); + set_has_bounceenable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(224)) goto parse_layoutType; + break; + } + + // optional int32 layoutType = 28; + case 28: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_layoutType: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &layouttype_))); + set_has_layouttype(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(237)) goto parse_scale9Width; + break; + } + + // optional float scale9Width = 29; + case 29: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Width: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9width_))); + set_has_scale9width(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(245)) goto parse_scale9Height; + break; + } + + // optional float scale9Height = 30; + case 30: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Height: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9height_))); + set_has_scale9height(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void ScrollViewOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string backGroundImage = 3; + if (has_backgroundimage()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->backgroundimage(), output); + } + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + if (has_backgroundimagedata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 4, this->backgroundimagedata(), output); + } + + // optional int32 bgColorR = 5; + if (has_bgcolorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->bgcolorr(), output); + } + + // optional int32 bgColorG = 6; + if (has_bgcolorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->bgcolorg(), output); + } + + // optional int32 bgColorB = 7; + if (has_bgcolorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->bgcolorb(), output); + } + + // optional int32 bgStartColorR = 8; + if (has_bgstartcolorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(8, this->bgstartcolorr(), output); + } + + // optional int32 bgStartColorG = 9; + if (has_bgstartcolorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(9, this->bgstartcolorg(), output); + } + + // optional int32 bgStartColorB = 10; + if (has_bgstartcolorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(10, this->bgstartcolorb(), output); + } + + // optional int32 bgEndColorR = 11; + if (has_bgendcolorr()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(11, this->bgendcolorr(), output); + } + + // optional int32 bgEndColorG = 12; + if (has_bgendcolorg()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(12, this->bgendcolorg(), output); + } + + // optional int32 bgEndColorB = 13; + if (has_bgendcolorb()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(13, this->bgendcolorb(), output); + } + + // optional int32 colorType = 14; + if (has_colortype()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(14, this->colortype(), output); + } + + // optional int32 bgColorOpacity = 15; + if (has_bgcoloropacity()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(15, this->bgcoloropacity(), output); + } + + // optional float vectorX = 16; + if (has_vectorx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(16, this->vectorx(), output); + } + + // optional float vectorY = 17; + if (has_vectory()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(17, this->vectory(), output); + } + + // optional float capInsetsX = 18; + if (has_capinsetsx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(18, this->capinsetsx(), output); + } + + // optional float capInsetsY = 19; + if (has_capinsetsy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(19, this->capinsetsy(), output); + } + + // optional float capInsetsWidth = 20; + if (has_capinsetswidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(20, this->capinsetswidth(), output); + } + + // optional float capInsetsHeight = 21; + if (has_capinsetsheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(21, this->capinsetsheight(), output); + } + + // optional bool backGroundScale9Enable = 22; + if (has_backgroundscale9enable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(22, this->backgroundscale9enable(), output); + } + + // optional float innerWidth = 23; + if (has_innerwidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(23, this->innerwidth(), output); + } + + // optional float innerHeight = 24; + if (has_innerheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(24, this->innerheight(), output); + } + + // optional int32 direction = 25; + if (has_direction()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(25, this->direction(), output); + } + + // optional bool clipAble = 26; + if (has_clipable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(26, this->clipable(), output); + } + + // optional bool bounceEnable = 27; + if (has_bounceenable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(27, this->bounceenable(), output); + } + + // optional int32 layoutType = 28; + if (has_layouttype()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(28, this->layouttype(), output); + } + + // optional float scale9Width = 29; + if (has_scale9width()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(29, this->scale9width(), output); + } + + // optional float scale9Height = 30; + if (has_scale9height()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(30, this->scale9height(), output); + } + +} + +int ScrollViewOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string backGroundImage = 3; + if (has_backgroundimage()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->backgroundimage()); + } + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + if (has_backgroundimagedata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->backgroundimagedata()); + } + + // optional int32 bgColorR = 5; + if (has_bgcolorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcolorr()); + } + + // optional int32 bgColorG = 6; + if (has_bgcolorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcolorg()); + } + + // optional int32 bgColorB = 7; + if (has_bgcolorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcolorb()); + } + + // optional int32 bgStartColorR = 8; + if (has_bgstartcolorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgstartcolorr()); + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional int32 bgStartColorG = 9; + if (has_bgstartcolorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgstartcolorg()); + } + + // optional int32 bgStartColorB = 10; + if (has_bgstartcolorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgstartcolorb()); + } + + // optional int32 bgEndColorR = 11; + if (has_bgendcolorr()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgendcolorr()); + } + + // optional int32 bgEndColorG = 12; + if (has_bgendcolorg()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgendcolorg()); + } + + // optional int32 bgEndColorB = 13; + if (has_bgendcolorb()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgendcolorb()); + } + + // optional int32 colorType = 14; + if (has_colortype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->colortype()); + } + + // optional int32 bgColorOpacity = 15; + if (has_bgcoloropacity()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->bgcoloropacity()); + } + + // optional float vectorX = 16; + if (has_vectorx()) { + total_size += 2 + 4; + } + + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + // optional float vectorY = 17; + if (has_vectory()) { + total_size += 2 + 4; + } + + // optional float capInsetsX = 18; + if (has_capinsetsx()) { + total_size += 2 + 4; + } + + // optional float capInsetsY = 19; + if (has_capinsetsy()) { + total_size += 2 + 4; + } + + // optional float capInsetsWidth = 20; + if (has_capinsetswidth()) { + total_size += 2 + 4; + } + + // optional float capInsetsHeight = 21; + if (has_capinsetsheight()) { + total_size += 2 + 4; + } + + // optional bool backGroundScale9Enable = 22; + if (has_backgroundscale9enable()) { + total_size += 2 + 1; + } + + // optional float innerWidth = 23; + if (has_innerwidth()) { + total_size += 2 + 4; + } + + // optional float innerHeight = 24; + if (has_innerheight()) { + total_size += 2 + 4; + } + + } + if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) { + // optional int32 direction = 25; + if (has_direction()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->direction()); + } + + // optional bool clipAble = 26; + if (has_clipable()) { + total_size += 2 + 1; + } + + // optional bool bounceEnable = 27; + if (has_bounceenable()) { + total_size += 2 + 1; + } + + // optional int32 layoutType = 28; + if (has_layouttype()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->layouttype()); + } + + // optional float scale9Width = 29; + if (has_scale9width()) { + total_size += 2 + 4; + } + + // optional float scale9Height = 30; + if (has_scale9height()) { + total_size += 2 + 4; + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void ScrollViewOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void ScrollViewOptions::MergeFrom(const ScrollViewOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_backgroundimage()) { + set_backgroundimage(from.backgroundimage()); + } + if (from.has_backgroundimagedata()) { + mutable_backgroundimagedata()->::protocolbuffers::ResourceData::MergeFrom(from.backgroundimagedata()); + } + if (from.has_bgcolorr()) { + set_bgcolorr(from.bgcolorr()); + } + if (from.has_bgcolorg()) { + set_bgcolorg(from.bgcolorg()); + } + if (from.has_bgcolorb()) { + set_bgcolorb(from.bgcolorb()); + } + if (from.has_bgstartcolorr()) { + set_bgstartcolorr(from.bgstartcolorr()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_bgstartcolorg()) { + set_bgstartcolorg(from.bgstartcolorg()); + } + if (from.has_bgstartcolorb()) { + set_bgstartcolorb(from.bgstartcolorb()); + } + if (from.has_bgendcolorr()) { + set_bgendcolorr(from.bgendcolorr()); + } + if (from.has_bgendcolorg()) { + set_bgendcolorg(from.bgendcolorg()); + } + if (from.has_bgendcolorb()) { + set_bgendcolorb(from.bgendcolorb()); + } + if (from.has_colortype()) { + set_colortype(from.colortype()); + } + if (from.has_bgcoloropacity()) { + set_bgcoloropacity(from.bgcoloropacity()); + } + if (from.has_vectorx()) { + set_vectorx(from.vectorx()); + } + } + if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) { + if (from.has_vectory()) { + set_vectory(from.vectory()); + } + if (from.has_capinsetsx()) { + set_capinsetsx(from.capinsetsx()); + } + if (from.has_capinsetsy()) { + set_capinsetsy(from.capinsetsy()); + } + if (from.has_capinsetswidth()) { + set_capinsetswidth(from.capinsetswidth()); + } + if (from.has_capinsetsheight()) { + set_capinsetsheight(from.capinsetsheight()); + } + if (from.has_backgroundscale9enable()) { + set_backgroundscale9enable(from.backgroundscale9enable()); + } + if (from.has_innerwidth()) { + set_innerwidth(from.innerwidth()); + } + if (from.has_innerheight()) { + set_innerheight(from.innerheight()); + } + } + if (from._has_bits_[24 / 32] & (0xffu << (24 % 32))) { + if (from.has_direction()) { + set_direction(from.direction()); + } + if (from.has_clipable()) { + set_clipable(from.clipable()); + } + if (from.has_bounceenable()) { + set_bounceenable(from.bounceenable()); + } + if (from.has_layouttype()) { + set_layouttype(from.layouttype()); + } + if (from.has_scale9width()) { + set_scale9width(from.scale9width()); + } + if (from.has_scale9height()) { + set_scale9height(from.scale9height()); + } + } +} + +void ScrollViewOptions::CopyFrom(const ScrollViewOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ScrollViewOptions::IsInitialized() const { + + return true; +} + +void ScrollViewOptions::Swap(ScrollViewOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(backgroundimage_, other->backgroundimage_); + std::swap(backgroundimagedata_, other->backgroundimagedata_); + std::swap(bgcolorr_, other->bgcolorr_); + std::swap(bgcolorg_, other->bgcolorg_); + std::swap(bgcolorb_, other->bgcolorb_); + std::swap(bgstartcolorr_, other->bgstartcolorr_); + std::swap(bgstartcolorg_, other->bgstartcolorg_); + std::swap(bgstartcolorb_, other->bgstartcolorb_); + std::swap(bgendcolorr_, other->bgendcolorr_); + std::swap(bgendcolorg_, other->bgendcolorg_); + std::swap(bgendcolorb_, other->bgendcolorb_); + std::swap(colortype_, other->colortype_); + std::swap(bgcoloropacity_, other->bgcoloropacity_); + std::swap(vectorx_, other->vectorx_); + std::swap(vectory_, other->vectory_); + std::swap(capinsetsx_, other->capinsetsx_); + std::swap(capinsetsy_, other->capinsetsy_); + std::swap(capinsetswidth_, other->capinsetswidth_); + std::swap(capinsetsheight_, other->capinsetsheight_); + std::swap(backgroundscale9enable_, other->backgroundscale9enable_); + std::swap(innerwidth_, other->innerwidth_); + std::swap(innerheight_, other->innerheight_); + std::swap(direction_, other->direction_); + std::swap(clipable_, other->clipable_); + std::swap(bounceenable_, other->bounceenable_); + std::swap(layouttype_, other->layouttype_); + std::swap(scale9width_, other->scale9width_); + std::swap(scale9height_, other->scale9height_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string ScrollViewOptions::GetTypeName() const { + return "protocolbuffers.ScrollViewOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int SliderOptions::kNameFieldNumber; +const int SliderOptions::kClassnameFieldNumber; +const int SliderOptions::kBarFileNameFieldNumber; +const int SliderOptions::kBallNormalFieldNumber; +const int SliderOptions::kBallPressedFieldNumber; +const int SliderOptions::kBallDisabledFieldNumber; +const int SliderOptions::kBarFileNameDataFieldNumber; +const int SliderOptions::kBallNormalDataFieldNumber; +const int SliderOptions::kBallPressedDataFieldNumber; +const int SliderOptions::kBallDisabledDataFieldNumber; +const int SliderOptions::kProgressBarDataFieldNumber; +const int SliderOptions::kPercentFieldNumber; +const int SliderOptions::kCapInsetsXFieldNumber; +const int SliderOptions::kCapInsetsYFieldNumber; +const int SliderOptions::kCapInsetsWidthFieldNumber; +const int SliderOptions::kCapInsetsHeightFieldNumber; +const int SliderOptions::kBarCapInsetsXFieldNumber; +const int SliderOptions::kBarCapInsetsYFieldNumber; +const int SliderOptions::kBarCapInsetsWidthFieldNumber; +const int SliderOptions::kBarCapInsetsHeightFieldNumber; +const int SliderOptions::kProgressBarCapInsetsXFieldNumber; +const int SliderOptions::kProgressBarCapInsetsYFieldNumber; +const int SliderOptions::kProgressBarCapInsetsWidthFieldNumber; +const int SliderOptions::kProgressBarCapInsetsHeightFieldNumber; +const int SliderOptions::kScale9WidthFieldNumber; +const int SliderOptions::kScale9HeightFieldNumber; +const int SliderOptions::kScale9EnableFieldNumber; +const int SliderOptions::kSlidBallAnchorPointXFieldNumber; +const int SliderOptions::kSlidBallAnchorPointYFieldNumber; +const int SliderOptions::kLengthFieldNumber; +const int SliderOptions::kDisplaystateFieldNumber; +#endif // !_MSC_VER + +SliderOptions::SliderOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void SliderOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + barfilenamedata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + barfilenamedata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + ballnormaldata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + ballnormaldata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + ballpresseddata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + ballpresseddata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + balldisableddata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + balldisableddata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + progressbardata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + progressbardata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +SliderOptions::SliderOptions(const SliderOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void SliderOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + barfilename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + ballnormal_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + ballpressed_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + balldisabled_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + barfilenamedata_ = NULL; + ballnormaldata_ = NULL; + ballpresseddata_ = NULL; + balldisableddata_ = NULL; + progressbardata_ = NULL; + percent_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetswidth_ = 0; + capinsetsheight_ = 0; + barcapinsetsx_ = 0; + barcapinsetsy_ = 0; + barcapinsetswidth_ = 0; + barcapinsetsheight_ = 0; + progressbarcapinsetsx_ = 0; + progressbarcapinsetsy_ = 0; + progressbarcapinsetswidth_ = 0; + progressbarcapinsetsheight_ = 0; + scale9width_ = 0; + scale9height_ = 0; + scale9enable_ = false; + slidballanchorpointx_ = 0; + slidballanchorpointy_ = 0; + length_ = 0; + displaystate_ = false; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +SliderOptions::~SliderOptions() { + SharedDtor(); +} + +void SliderOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (barfilename_ != &::google::protobuf::internal::kEmptyString) { + delete barfilename_; + } + if (ballnormal_ != &::google::protobuf::internal::kEmptyString) { + delete ballnormal_; + } + if (ballpressed_ != &::google::protobuf::internal::kEmptyString) { + delete ballpressed_; + } + if (balldisabled_ != &::google::protobuf::internal::kEmptyString) { + delete balldisabled_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete barfilenamedata_; + delete ballnormaldata_; + delete ballpresseddata_; + delete balldisableddata_; + delete progressbardata_; + } +} + +void SliderOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const SliderOptions& SliderOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +SliderOptions* SliderOptions::default_instance_ = NULL; + +SliderOptions* SliderOptions::New() const { + return new SliderOptions; +} + +void SliderOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_barfilename()) { + if (barfilename_ != &::google::protobuf::internal::kEmptyString) { + barfilename_->clear(); + } + } + if (has_ballnormal()) { + if (ballnormal_ != &::google::protobuf::internal::kEmptyString) { + ballnormal_->clear(); + } + } + if (has_ballpressed()) { + if (ballpressed_ != &::google::protobuf::internal::kEmptyString) { + ballpressed_->clear(); + } + } + if (has_balldisabled()) { + if (balldisabled_ != &::google::protobuf::internal::kEmptyString) { + balldisabled_->clear(); + } + } + if (has_barfilenamedata()) { + if (barfilenamedata_ != NULL) barfilenamedata_->::protocolbuffers::ResourceData::Clear(); + } + if (has_ballnormaldata()) { + if (ballnormaldata_ != NULL) ballnormaldata_->::protocolbuffers::ResourceData::Clear(); + } + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (has_ballpresseddata()) { + if (ballpresseddata_ != NULL) ballpresseddata_->::protocolbuffers::ResourceData::Clear(); + } + if (has_balldisableddata()) { + if (balldisableddata_ != NULL) balldisableddata_->::protocolbuffers::ResourceData::Clear(); + } + if (has_progressbardata()) { + if (progressbardata_ != NULL) progressbardata_->::protocolbuffers::ResourceData::Clear(); + } + percent_ = 0; + capinsetsx_ = 0; + capinsetsy_ = 0; + capinsetswidth_ = 0; + capinsetsheight_ = 0; + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + barcapinsetsx_ = 0; + barcapinsetsy_ = 0; + barcapinsetswidth_ = 0; + barcapinsetsheight_ = 0; + progressbarcapinsetsx_ = 0; + progressbarcapinsetsy_ = 0; + progressbarcapinsetswidth_ = 0; + progressbarcapinsetsheight_ = 0; + } + if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) { + scale9width_ = 0; + scale9height_ = 0; + scale9enable_ = false; + slidballanchorpointx_ = 0; + slidballanchorpointy_ = 0; + length_ = 0; + displaystate_ = false; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool SliderOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_barFileName; + break; + } + + // optional string barFileName = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_barFileName: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_barfilename())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_ballNormal; + break; + } + + // optional string ballNormal = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_ballNormal: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_ballnormal())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_ballPressed; + break; + } + + // optional string ballPressed = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_ballPressed: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_ballpressed())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(50)) goto parse_ballDisabled; + break; + } + + // optional string ballDisabled = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_ballDisabled: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_balldisabled())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(58)) goto parse_barFileNameData; + break; + } + + // optional .protocolbuffers.ResourceData barFileNameData = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_barFileNameData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_barfilenamedata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(66)) goto parse_ballNormalData; + break; + } + + // optional .protocolbuffers.ResourceData ballNormalData = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_ballNormalData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_ballnormaldata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(74)) goto parse_ballPressedData; + break; + } + + // optional .protocolbuffers.ResourceData ballPressedData = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_ballPressedData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_ballpresseddata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(82)) goto parse_ballDisabledData; + break; + } + + // optional .protocolbuffers.ResourceData ballDisabledData = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_ballDisabledData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_balldisableddata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(90)) goto parse_progressBarData; + break; + } + + // optional .protocolbuffers.ResourceData progressBarData = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_progressBarData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_progressbardata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(96)) goto parse_percent; + break; + } + + // optional int32 percent = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_percent: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &percent_))); + set_has_percent(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(109)) goto parse_capInsetsX; + break; + } + + // optional float capInsetsX = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsx_))); + set_has_capinsetsx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(117)) goto parse_capInsetsY; + break; + } + + // optional float capInsetsY = 14; + case 14: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsy_))); + set_has_capinsetsy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(125)) goto parse_capInsetsWidth; + break; + } + + // optional float capInsetsWidth = 15; + case 15: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetswidth_))); + set_has_capinsetswidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(133)) goto parse_capInsetsHeight; + break; + } + + // optional float capInsetsHeight = 16; + case 16: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_capInsetsHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &capinsetsheight_))); + set_has_capinsetsheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(141)) goto parse_barCapInsetsX; + break; + } + + // optional float barCapInsetsX = 17; + case 17: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_barCapInsetsX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &barcapinsetsx_))); + set_has_barcapinsetsx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(149)) goto parse_barCapInsetsY; + break; + } + + // optional float barCapInsetsY = 18; + case 18: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_barCapInsetsY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &barcapinsetsy_))); + set_has_barcapinsetsy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(157)) goto parse_barCapInsetsWidth; + break; + } + + // optional float barCapInsetsWidth = 19; + case 19: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_barCapInsetsWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &barcapinsetswidth_))); + set_has_barcapinsetswidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(165)) goto parse_barCapInsetsHeight; + break; + } + + // optional float barCapInsetsHeight = 20; + case 20: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_barCapInsetsHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &barcapinsetsheight_))); + set_has_barcapinsetsheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(173)) goto parse_progressBarCapInsetsX; + break; + } + + // optional float progressBarCapInsetsX = 21; + case 21: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_progressBarCapInsetsX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &progressbarcapinsetsx_))); + set_has_progressbarcapinsetsx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(181)) goto parse_progressBarCapInsetsY; + break; + } + + // optional float progressBarCapInsetsY = 22; + case 22: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_progressBarCapInsetsY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &progressbarcapinsetsy_))); + set_has_progressbarcapinsetsy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(189)) goto parse_progressBarCapInsetsWidth; + break; + } + + // optional float progressBarCapInsetsWidth = 23; + case 23: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_progressBarCapInsetsWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &progressbarcapinsetswidth_))); + set_has_progressbarcapinsetswidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(197)) goto parse_progressBarCapInsetsHeight; + break; + } + + // optional float progressBarCapInsetsHeight = 24; + case 24: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_progressBarCapInsetsHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &progressbarcapinsetsheight_))); + set_has_progressbarcapinsetsheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(205)) goto parse_scale9Width; + break; + } + + // optional float scale9Width = 25; + case 25: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Width: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9width_))); + set_has_scale9width(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(213)) goto parse_scale9Height; + break; + } + + // optional float scale9Height = 26; + case 26: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_scale9Height: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &scale9height_))); + set_has_scale9height(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(216)) goto parse_scale9Enable; + break; + } + + // optional bool scale9Enable = 27; + case 27: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_scale9Enable: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &scale9enable_))); + set_has_scale9enable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(229)) goto parse_slidBallAnchorPointX; + break; + } + + // optional float slidBallAnchorPointX = 28; + case 28: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_slidBallAnchorPointX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &slidballanchorpointx_))); + set_has_slidballanchorpointx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(237)) goto parse_slidBallAnchorPointY; + break; + } + + // optional float slidBallAnchorPointY = 29; + case 29: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_slidBallAnchorPointY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &slidballanchorpointy_))); + set_has_slidballanchorpointy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(245)) goto parse_length; + break; + } + + // optional float length = 30; + case 30: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_length: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &length_))); + set_has_length(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(248)) goto parse_displaystate; + break; + } + + // optional bool displaystate = 31; + case 31: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_displaystate: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &displaystate_))); + set_has_displaystate(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void SliderOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string barFileName = 3; + if (has_barfilename()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->barfilename(), output); + } + + // optional string ballNormal = 4; + if (has_ballnormal()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 4, this->ballnormal(), output); + } + + // optional string ballPressed = 5; + if (has_ballpressed()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 5, this->ballpressed(), output); + } + + // optional string ballDisabled = 6; + if (has_balldisabled()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 6, this->balldisabled(), output); + } + + // optional .protocolbuffers.ResourceData barFileNameData = 7; + if (has_barfilenamedata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 7, this->barfilenamedata(), output); + } + + // optional .protocolbuffers.ResourceData ballNormalData = 8; + if (has_ballnormaldata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 8, this->ballnormaldata(), output); + } + + // optional .protocolbuffers.ResourceData ballPressedData = 9; + if (has_ballpresseddata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 9, this->ballpresseddata(), output); + } + + // optional .protocolbuffers.ResourceData ballDisabledData = 10; + if (has_balldisableddata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 10, this->balldisableddata(), output); + } + + // optional .protocolbuffers.ResourceData progressBarData = 11; + if (has_progressbardata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 11, this->progressbardata(), output); + } + + // optional int32 percent = 12; + if (has_percent()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(12, this->percent(), output); + } + + // optional float capInsetsX = 13; + if (has_capinsetsx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(13, this->capinsetsx(), output); + } + + // optional float capInsetsY = 14; + if (has_capinsetsy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(14, this->capinsetsy(), output); + } + + // optional float capInsetsWidth = 15; + if (has_capinsetswidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(15, this->capinsetswidth(), output); + } + + // optional float capInsetsHeight = 16; + if (has_capinsetsheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(16, this->capinsetsheight(), output); + } + + // optional float barCapInsetsX = 17; + if (has_barcapinsetsx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(17, this->barcapinsetsx(), output); + } + + // optional float barCapInsetsY = 18; + if (has_barcapinsetsy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(18, this->barcapinsetsy(), output); + } + + // optional float barCapInsetsWidth = 19; + if (has_barcapinsetswidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(19, this->barcapinsetswidth(), output); + } + + // optional float barCapInsetsHeight = 20; + if (has_barcapinsetsheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(20, this->barcapinsetsheight(), output); + } + + // optional float progressBarCapInsetsX = 21; + if (has_progressbarcapinsetsx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(21, this->progressbarcapinsetsx(), output); + } + + // optional float progressBarCapInsetsY = 22; + if (has_progressbarcapinsetsy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(22, this->progressbarcapinsetsy(), output); + } + + // optional float progressBarCapInsetsWidth = 23; + if (has_progressbarcapinsetswidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(23, this->progressbarcapinsetswidth(), output); + } + + // optional float progressBarCapInsetsHeight = 24; + if (has_progressbarcapinsetsheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(24, this->progressbarcapinsetsheight(), output); + } + + // optional float scale9Width = 25; + if (has_scale9width()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(25, this->scale9width(), output); + } + + // optional float scale9Height = 26; + if (has_scale9height()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(26, this->scale9height(), output); + } + + // optional bool scale9Enable = 27; + if (has_scale9enable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(27, this->scale9enable(), output); + } + + // optional float slidBallAnchorPointX = 28; + if (has_slidballanchorpointx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(28, this->slidballanchorpointx(), output); + } + + // optional float slidBallAnchorPointY = 29; + if (has_slidballanchorpointy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(29, this->slidballanchorpointy(), output); + } + + // optional float length = 30; + if (has_length()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(30, this->length(), output); + } + + // optional bool displaystate = 31; + if (has_displaystate()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(31, this->displaystate(), output); + } + +} + +int SliderOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string barFileName = 3; + if (has_barfilename()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->barfilename()); + } + + // optional string ballNormal = 4; + if (has_ballnormal()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->ballnormal()); + } + + // optional string ballPressed = 5; + if (has_ballpressed()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->ballpressed()); + } + + // optional string ballDisabled = 6; + if (has_balldisabled()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->balldisabled()); + } + + // optional .protocolbuffers.ResourceData barFileNameData = 7; + if (has_barfilenamedata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->barfilenamedata()); + } + + // optional .protocolbuffers.ResourceData ballNormalData = 8; + if (has_ballnormaldata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->ballnormaldata()); + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional .protocolbuffers.ResourceData ballPressedData = 9; + if (has_ballpresseddata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->ballpresseddata()); + } + + // optional .protocolbuffers.ResourceData ballDisabledData = 10; + if (has_balldisableddata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->balldisableddata()); + } + + // optional .protocolbuffers.ResourceData progressBarData = 11; + if (has_progressbardata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->progressbardata()); + } + + // optional int32 percent = 12; + if (has_percent()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->percent()); + } + + // optional float capInsetsX = 13; + if (has_capinsetsx()) { + total_size += 1 + 4; + } + + // optional float capInsetsY = 14; + if (has_capinsetsy()) { + total_size += 1 + 4; + } + + // optional float capInsetsWidth = 15; + if (has_capinsetswidth()) { + total_size += 1 + 4; + } + + // optional float capInsetsHeight = 16; + if (has_capinsetsheight()) { + total_size += 2 + 4; + } + + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + // optional float barCapInsetsX = 17; + if (has_barcapinsetsx()) { + total_size += 2 + 4; + } + + // optional float barCapInsetsY = 18; + if (has_barcapinsetsy()) { + total_size += 2 + 4; + } + + // optional float barCapInsetsWidth = 19; + if (has_barcapinsetswidth()) { + total_size += 2 + 4; + } + + // optional float barCapInsetsHeight = 20; + if (has_barcapinsetsheight()) { + total_size += 2 + 4; + } + + // optional float progressBarCapInsetsX = 21; + if (has_progressbarcapinsetsx()) { + total_size += 2 + 4; + } + + // optional float progressBarCapInsetsY = 22; + if (has_progressbarcapinsetsy()) { + total_size += 2 + 4; + } + + // optional float progressBarCapInsetsWidth = 23; + if (has_progressbarcapinsetswidth()) { + total_size += 2 + 4; + } + + // optional float progressBarCapInsetsHeight = 24; + if (has_progressbarcapinsetsheight()) { + total_size += 2 + 4; + } + + } + if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) { + // optional float scale9Width = 25; + if (has_scale9width()) { + total_size += 2 + 4; + } + + // optional float scale9Height = 26; + if (has_scale9height()) { + total_size += 2 + 4; + } + + // optional bool scale9Enable = 27; + if (has_scale9enable()) { + total_size += 2 + 1; + } + + // optional float slidBallAnchorPointX = 28; + if (has_slidballanchorpointx()) { + total_size += 2 + 4; + } + + // optional float slidBallAnchorPointY = 29; + if (has_slidballanchorpointy()) { + total_size += 2 + 4; + } + + // optional float length = 30; + if (has_length()) { + total_size += 2 + 4; + } + + // optional bool displaystate = 31; + if (has_displaystate()) { + total_size += 2 + 1; + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void SliderOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void SliderOptions::MergeFrom(const SliderOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_barfilename()) { + set_barfilename(from.barfilename()); + } + if (from.has_ballnormal()) { + set_ballnormal(from.ballnormal()); + } + if (from.has_ballpressed()) { + set_ballpressed(from.ballpressed()); + } + if (from.has_balldisabled()) { + set_balldisabled(from.balldisabled()); + } + if (from.has_barfilenamedata()) { + mutable_barfilenamedata()->::protocolbuffers::ResourceData::MergeFrom(from.barfilenamedata()); + } + if (from.has_ballnormaldata()) { + mutable_ballnormaldata()->::protocolbuffers::ResourceData::MergeFrom(from.ballnormaldata()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_ballpresseddata()) { + mutable_ballpresseddata()->::protocolbuffers::ResourceData::MergeFrom(from.ballpresseddata()); + } + if (from.has_balldisableddata()) { + mutable_balldisableddata()->::protocolbuffers::ResourceData::MergeFrom(from.balldisableddata()); + } + if (from.has_progressbardata()) { + mutable_progressbardata()->::protocolbuffers::ResourceData::MergeFrom(from.progressbardata()); + } + if (from.has_percent()) { + set_percent(from.percent()); + } + if (from.has_capinsetsx()) { + set_capinsetsx(from.capinsetsx()); + } + if (from.has_capinsetsy()) { + set_capinsetsy(from.capinsetsy()); + } + if (from.has_capinsetswidth()) { + set_capinsetswidth(from.capinsetswidth()); + } + if (from.has_capinsetsheight()) { + set_capinsetsheight(from.capinsetsheight()); + } + } + if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) { + if (from.has_barcapinsetsx()) { + set_barcapinsetsx(from.barcapinsetsx()); + } + if (from.has_barcapinsetsy()) { + set_barcapinsetsy(from.barcapinsetsy()); + } + if (from.has_barcapinsetswidth()) { + set_barcapinsetswidth(from.barcapinsetswidth()); + } + if (from.has_barcapinsetsheight()) { + set_barcapinsetsheight(from.barcapinsetsheight()); + } + if (from.has_progressbarcapinsetsx()) { + set_progressbarcapinsetsx(from.progressbarcapinsetsx()); + } + if (from.has_progressbarcapinsetsy()) { + set_progressbarcapinsetsy(from.progressbarcapinsetsy()); + } + if (from.has_progressbarcapinsetswidth()) { + set_progressbarcapinsetswidth(from.progressbarcapinsetswidth()); + } + if (from.has_progressbarcapinsetsheight()) { + set_progressbarcapinsetsheight(from.progressbarcapinsetsheight()); + } + } + if (from._has_bits_[24 / 32] & (0xffu << (24 % 32))) { + if (from.has_scale9width()) { + set_scale9width(from.scale9width()); + } + if (from.has_scale9height()) { + set_scale9height(from.scale9height()); + } + if (from.has_scale9enable()) { + set_scale9enable(from.scale9enable()); + } + if (from.has_slidballanchorpointx()) { + set_slidballanchorpointx(from.slidballanchorpointx()); + } + if (from.has_slidballanchorpointy()) { + set_slidballanchorpointy(from.slidballanchorpointy()); + } + if (from.has_length()) { + set_length(from.length()); + } + if (from.has_displaystate()) { + set_displaystate(from.displaystate()); + } + } +} + +void SliderOptions::CopyFrom(const SliderOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool SliderOptions::IsInitialized() const { + + return true; +} + +void SliderOptions::Swap(SliderOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(barfilename_, other->barfilename_); + std::swap(ballnormal_, other->ballnormal_); + std::swap(ballpressed_, other->ballpressed_); + std::swap(balldisabled_, other->balldisabled_); + std::swap(barfilenamedata_, other->barfilenamedata_); + std::swap(ballnormaldata_, other->ballnormaldata_); + std::swap(ballpresseddata_, other->ballpresseddata_); + std::swap(balldisableddata_, other->balldisableddata_); + std::swap(progressbardata_, other->progressbardata_); + std::swap(percent_, other->percent_); + std::swap(capinsetsx_, other->capinsetsx_); + std::swap(capinsetsy_, other->capinsetsy_); + std::swap(capinsetswidth_, other->capinsetswidth_); + std::swap(capinsetsheight_, other->capinsetsheight_); + std::swap(barcapinsetsx_, other->barcapinsetsx_); + std::swap(barcapinsetsy_, other->barcapinsetsy_); + std::swap(barcapinsetswidth_, other->barcapinsetswidth_); + std::swap(barcapinsetsheight_, other->barcapinsetsheight_); + std::swap(progressbarcapinsetsx_, other->progressbarcapinsetsx_); + std::swap(progressbarcapinsetsy_, other->progressbarcapinsetsy_); + std::swap(progressbarcapinsetswidth_, other->progressbarcapinsetswidth_); + std::swap(progressbarcapinsetsheight_, other->progressbarcapinsetsheight_); + std::swap(scale9width_, other->scale9width_); + std::swap(scale9height_, other->scale9height_); + std::swap(scale9enable_, other->scale9enable_); + std::swap(slidballanchorpointx_, other->slidballanchorpointx_); + std::swap(slidballanchorpointy_, other->slidballanchorpointy_); + std::swap(length_, other->length_); + std::swap(displaystate_, other->displaystate_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string SliderOptions::GetTypeName() const { + return "protocolbuffers.SliderOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int SpriteOptions::kNameFieldNumber; +const int SpriteOptions::kClassnameFieldNumber; +const int SpriteOptions::kTouchAbleFieldNumber; +const int SpriteOptions::kPositionTypeFieldNumber; +const int SpriteOptions::kPositionPercentXFieldNumber; +const int SpriteOptions::kPositionPercentYFieldNumber; +const int SpriteOptions::kSizeTypeFieldNumber; +const int SpriteOptions::kSizePercentXFieldNumber; +const int SpriteOptions::kSizePercentYFieldNumber; +const int SpriteOptions::kUseMergedTextureFieldNumber; +const int SpriteOptions::kIgnoreSizeFieldNumber; +const int SpriteOptions::kLayoutParameterFieldNumber; +const int SpriteOptions::kCustomPropertyFieldNumber; +const int SpriteOptions::kFileNameFieldNumber; +const int SpriteOptions::kFlippedXFieldNumber; +const int SpriteOptions::kFlippedYFieldNumber; +const int SpriteOptions::kFileNameDataFieldNumber; +#endif // !_MSC_VER + +SpriteOptions::SpriteOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void SpriteOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + layoutparameter_ = const_cast< ::protocolbuffers::LayoutParameter*>( + ::protocolbuffers::LayoutParameter::internal_default_instance()); +#else + layoutparameter_ = const_cast< ::protocolbuffers::LayoutParameter*>(&::protocolbuffers::LayoutParameter::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + filenamedata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + filenamedata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +SpriteOptions::SpriteOptions(const SpriteOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void SpriteOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + touchable_ = false; + positiontype_ = 0; + positionpercentx_ = 0; + positionpercenty_ = 0; + sizetype_ = 0; + sizepercentx_ = 0; + sizepercenty_ = 0; + usemergedtexture_ = false; + ignoresize_ = false; + layoutparameter_ = NULL; + customproperty_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + filename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + flippedx_ = false; + flippedy_ = false; + filenamedata_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +SpriteOptions::~SpriteOptions() { + SharedDtor(); +} + +void SpriteOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (customproperty_ != &::google::protobuf::internal::kEmptyString) { + delete customproperty_; + } + if (filename_ != &::google::protobuf::internal::kEmptyString) { + delete filename_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete layoutparameter_; + delete filenamedata_; + } +} + +void SpriteOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const SpriteOptions& SpriteOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +SpriteOptions* SpriteOptions::default_instance_ = NULL; + +SpriteOptions* SpriteOptions::New() const { + return new SpriteOptions; +} + +void SpriteOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + touchable_ = false; + positiontype_ = 0; + positionpercentx_ = 0; + positionpercenty_ = 0; + sizetype_ = 0; + sizepercentx_ = 0; + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + sizepercenty_ = 0; + usemergedtexture_ = false; + ignoresize_ = false; + if (has_layoutparameter()) { + if (layoutparameter_ != NULL) layoutparameter_->::protocolbuffers::LayoutParameter::Clear(); + } + if (has_customproperty()) { + if (customproperty_ != &::google::protobuf::internal::kEmptyString) { + customproperty_->clear(); + } + } + if (has_filename()) { + if (filename_ != &::google::protobuf::internal::kEmptyString) { + filename_->clear(); + } + } + flippedx_ = false; + flippedy_ = false; + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + if (has_filenamedata()) { + if (filenamedata_ != NULL) filenamedata_->::protocolbuffers::ResourceData::Clear(); + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool SpriteOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_touchAble; + break; + } + + // optional bool touchAble = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_touchAble: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &touchable_))); + set_has_touchable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(32)) goto parse_positionType; + break; + } + + // optional int32 positionType = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_positionType: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &positiontype_))); + set_has_positiontype(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(45)) goto parse_positionPercentX; + break; + } + + // optional float positionPercentX = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_positionPercentX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &positionpercentx_))); + set_has_positionpercentx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(53)) goto parse_positionPercentY; + break; + } + + // optional float positionPercentY = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_positionPercentY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &positionpercenty_))); + set_has_positionpercenty(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(56)) goto parse_sizeType; + break; + } + + // optional int32 sizeType = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_sizeType: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &sizetype_))); + set_has_sizetype(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(69)) goto parse_sizePercentX; + break; + } + + // optional float sizePercentX = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_sizePercentX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &sizepercentx_))); + set_has_sizepercentx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(77)) goto parse_sizePercentY; + break; + } + + // optional float sizePercentY = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_sizePercentY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &sizepercenty_))); + set_has_sizepercenty(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(80)) goto parse_useMergedTexture; + break; + } + + // optional bool useMergedTexture = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_useMergedTexture: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &usemergedtexture_))); + set_has_usemergedtexture(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(88)) goto parse_ignoreSize; + break; + } + + // optional bool ignoreSize = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_ignoreSize: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &ignoresize_))); + set_has_ignoresize(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(98)) goto parse_layoutParameter; + break; + } + + // optional .protocolbuffers.LayoutParameter layoutParameter = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_layoutParameter: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_layoutparameter())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(106)) goto parse_customProperty; + break; + } + + // optional string customProperty = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_customProperty: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_customproperty())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(114)) goto parse_fileName; + break; + } + + // optional string fileName = 14; + case 14: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fileName: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_filename())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(120)) goto parse_flippedX; + break; + } + + // optional bool flippedX = 15; + case 15: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_flippedX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &flippedx_))); + set_has_flippedx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(128)) goto parse_flippedY; + break; + } + + // optional bool flippedY = 16; + case 16: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_flippedY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &flippedy_))); + set_has_flippedy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(138)) goto parse_fileNameData; + break; + } + + // optional .protocolbuffers.ResourceData fileNameData = 17; + case 17: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fileNameData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_filenamedata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void SpriteOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional bool touchAble = 3; + if (has_touchable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->touchable(), output); + } + + // optional int32 positionType = 4; + if (has_positiontype()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->positiontype(), output); + } + + // optional float positionPercentX = 5; + if (has_positionpercentx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(5, this->positionpercentx(), output); + } + + // optional float positionPercentY = 6; + if (has_positionpercenty()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(6, this->positionpercenty(), output); + } + + // optional int32 sizeType = 7; + if (has_sizetype()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->sizetype(), output); + } + + // optional float sizePercentX = 8; + if (has_sizepercentx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(8, this->sizepercentx(), output); + } + + // optional float sizePercentY = 9; + if (has_sizepercenty()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(9, this->sizepercenty(), output); + } + + // optional bool useMergedTexture = 10; + if (has_usemergedtexture()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(10, this->usemergedtexture(), output); + } + + // optional bool ignoreSize = 11; + if (has_ignoresize()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(11, this->ignoresize(), output); + } + + // optional .protocolbuffers.LayoutParameter layoutParameter = 12; + if (has_layoutparameter()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 12, this->layoutparameter(), output); + } + + // optional string customProperty = 13; + if (has_customproperty()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 13, this->customproperty(), output); + } + + // optional string fileName = 14; + if (has_filename()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 14, this->filename(), output); + } + + // optional bool flippedX = 15; + if (has_flippedx()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(15, this->flippedx(), output); + } + + // optional bool flippedY = 16; + if (has_flippedy()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(16, this->flippedy(), output); + } + + // optional .protocolbuffers.ResourceData fileNameData = 17; + if (has_filenamedata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 17, this->filenamedata(), output); + } + +} + +int SpriteOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional bool touchAble = 3; + if (has_touchable()) { + total_size += 1 + 1; + } + + // optional int32 positionType = 4; + if (has_positiontype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->positiontype()); + } + + // optional float positionPercentX = 5; + if (has_positionpercentx()) { + total_size += 1 + 4; + } + + // optional float positionPercentY = 6; + if (has_positionpercenty()) { + total_size += 1 + 4; + } + + // optional int32 sizeType = 7; + if (has_sizetype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->sizetype()); + } + + // optional float sizePercentX = 8; + if (has_sizepercentx()) { + total_size += 1 + 4; + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional float sizePercentY = 9; + if (has_sizepercenty()) { + total_size += 1 + 4; + } + + // optional bool useMergedTexture = 10; + if (has_usemergedtexture()) { + total_size += 1 + 1; + } + + // optional bool ignoreSize = 11; + if (has_ignoresize()) { + total_size += 1 + 1; + } + + // optional .protocolbuffers.LayoutParameter layoutParameter = 12; + if (has_layoutparameter()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->layoutparameter()); + } + + // optional string customProperty = 13; + if (has_customproperty()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->customproperty()); + } + + // optional string fileName = 14; + if (has_filename()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->filename()); + } + + // optional bool flippedX = 15; + if (has_flippedx()) { + total_size += 1 + 1; + } + + // optional bool flippedY = 16; + if (has_flippedy()) { + total_size += 2 + 1; + } + + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + // optional .protocolbuffers.ResourceData fileNameData = 17; + if (has_filenamedata()) { + total_size += 2 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->filenamedata()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void SpriteOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void SpriteOptions::MergeFrom(const SpriteOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_touchable()) { + set_touchable(from.touchable()); + } + if (from.has_positiontype()) { + set_positiontype(from.positiontype()); + } + if (from.has_positionpercentx()) { + set_positionpercentx(from.positionpercentx()); + } + if (from.has_positionpercenty()) { + set_positionpercenty(from.positionpercenty()); + } + if (from.has_sizetype()) { + set_sizetype(from.sizetype()); + } + if (from.has_sizepercentx()) { + set_sizepercentx(from.sizepercentx()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_sizepercenty()) { + set_sizepercenty(from.sizepercenty()); + } + if (from.has_usemergedtexture()) { + set_usemergedtexture(from.usemergedtexture()); + } + if (from.has_ignoresize()) { + set_ignoresize(from.ignoresize()); + } + if (from.has_layoutparameter()) { + mutable_layoutparameter()->::protocolbuffers::LayoutParameter::MergeFrom(from.layoutparameter()); + } + if (from.has_customproperty()) { + set_customproperty(from.customproperty()); + } + if (from.has_filename()) { + set_filename(from.filename()); + } + if (from.has_flippedx()) { + set_flippedx(from.flippedx()); + } + if (from.has_flippedy()) { + set_flippedy(from.flippedy()); + } + } + if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) { + if (from.has_filenamedata()) { + mutable_filenamedata()->::protocolbuffers::ResourceData::MergeFrom(from.filenamedata()); + } + } +} + +void SpriteOptions::CopyFrom(const SpriteOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool SpriteOptions::IsInitialized() const { + + return true; +} + +void SpriteOptions::Swap(SpriteOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(touchable_, other->touchable_); + std::swap(positiontype_, other->positiontype_); + std::swap(positionpercentx_, other->positionpercentx_); + std::swap(positionpercenty_, other->positionpercenty_); + std::swap(sizetype_, other->sizetype_); + std::swap(sizepercentx_, other->sizepercentx_); + std::swap(sizepercenty_, other->sizepercenty_); + std::swap(usemergedtexture_, other->usemergedtexture_); + std::swap(ignoresize_, other->ignoresize_); + std::swap(layoutparameter_, other->layoutparameter_); + std::swap(customproperty_, other->customproperty_); + std::swap(filename_, other->filename_); + std::swap(flippedx_, other->flippedx_); + std::swap(flippedy_, other->flippedy_); + std::swap(filenamedata_, other->filenamedata_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string SpriteOptions::GetTypeName() const { + return "protocolbuffers.SpriteOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int TextFieldOptions::kNameFieldNumber; +const int TextFieldOptions::kClassnameFieldNumber; +const int TextFieldOptions::kFontNameFieldNumber; +const int TextFieldOptions::kFontFileFieldNumber; +const int TextFieldOptions::kFontSizeFieldNumber; +const int TextFieldOptions::kTextFieldNumber; +const int TextFieldOptions::kPlaceHolderFieldNumber; +const int TextFieldOptions::kPasswordEnableFieldNumber; +const int TextFieldOptions::kPasswordStyleTextFieldNumber; +const int TextFieldOptions::kMaxLengthEnableFieldNumber; +const int TextFieldOptions::kMaxLengthFieldNumber; +const int TextFieldOptions::kAreaWidthFieldNumber; +const int TextFieldOptions::kAreaHeightFieldNumber; +const int TextFieldOptions::kAnchorPointXFieldNumber; +const int TextFieldOptions::kAnchorPointYFieldNumber; +const int TextFieldOptions::kFontResourceFieldNumber; +const int TextFieldOptions::kIsCustomSizeFieldNumber; +#endif // !_MSC_VER + +TextFieldOptions::TextFieldOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void TextFieldOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + fontfile_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + fontfile_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + fontresource_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + fontresource_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +TextFieldOptions::TextFieldOptions(const TextFieldOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void TextFieldOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + fontname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + fontfile_ = NULL; + fontsize_ = 0; + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + placeholder_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + passwordenable_ = false; + passwordstyletext_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + maxlengthenable_ = false; + maxlength_ = 0; + areawidth_ = 0; + areaheight_ = 0; + anchorpointx_ = 0; + anchorpointy_ = 0; + fontresource_ = NULL; + iscustomsize_ = false; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +TextFieldOptions::~TextFieldOptions() { + SharedDtor(); +} + +void TextFieldOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (fontname_ != &::google::protobuf::internal::kEmptyString) { + delete fontname_; + } + if (text_ != &::google::protobuf::internal::kEmptyString) { + delete text_; + } + if (placeholder_ != &::google::protobuf::internal::kEmptyString) { + delete placeholder_; + } + if (passwordstyletext_ != &::google::protobuf::internal::kEmptyString) { + delete passwordstyletext_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete fontfile_; + delete fontresource_; + } +} + +void TextFieldOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const TextFieldOptions& TextFieldOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +TextFieldOptions* TextFieldOptions::default_instance_ = NULL; + +TextFieldOptions* TextFieldOptions::New() const { + return new TextFieldOptions; +} + +void TextFieldOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_fontname()) { + if (fontname_ != &::google::protobuf::internal::kEmptyString) { + fontname_->clear(); + } + } + if (has_fontfile()) { + if (fontfile_ != NULL) fontfile_->::protocolbuffers::ResourceData::Clear(); + } + fontsize_ = 0; + if (has_text()) { + if (text_ != &::google::protobuf::internal::kEmptyString) { + text_->clear(); + } + } + if (has_placeholder()) { + if (placeholder_ != &::google::protobuf::internal::kEmptyString) { + placeholder_->clear(); + } + } + passwordenable_ = false; + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (has_passwordstyletext()) { + if (passwordstyletext_ != &::google::protobuf::internal::kEmptyString) { + passwordstyletext_->clear(); + } + } + maxlengthenable_ = false; + maxlength_ = 0; + areawidth_ = 0; + areaheight_ = 0; + anchorpointx_ = 0; + anchorpointy_ = 0; + if (has_fontresource()) { + if (fontresource_ != NULL) fontresource_->::protocolbuffers::ResourceData::Clear(); + } + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + iscustomsize_ = false; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool TextFieldOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_fontName; + break; + } + + // optional string fontName = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fontName: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_fontname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_fontFile; + break; + } + + // optional .protocolbuffers.ResourceData fontFile = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fontFile: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_fontfile())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_fontSize; + break; + } + + // optional int32 fontSize = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_fontSize: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &fontsize_))); + set_has_fontsize(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(50)) goto parse_text; + break; + } + + // optional string text = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_text: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_text())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(58)) goto parse_placeHolder; + break; + } + + // optional string placeHolder = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_placeHolder: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_placeholder())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(64)) goto parse_passwordEnable; + break; + } + + // optional bool passwordEnable = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_passwordEnable: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &passwordenable_))); + set_has_passwordenable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(74)) goto parse_passwordStyleText; + break; + } + + // optional string passwordStyleText = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_passwordStyleText: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_passwordstyletext())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(80)) goto parse_maxLengthEnable; + break; + } + + // optional bool maxLengthEnable = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_maxLengthEnable: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &maxlengthenable_))); + set_has_maxlengthenable(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(88)) goto parse_maxLength; + break; + } + + // optional int32 maxLength = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_maxLength: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &maxlength_))); + set_has_maxlength(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(101)) goto parse_areaWidth; + break; + } + + // optional float areaWidth = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_areaWidth: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &areawidth_))); + set_has_areawidth(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(109)) goto parse_areaHeight; + break; + } + + // optional float areaHeight = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_areaHeight: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &areaheight_))); + set_has_areaheight(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(114)) goto parse_fontResource; + break; + } + + // optional .protocolbuffers.ResourceData fontResource = 14; + case 14: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fontResource: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_fontresource())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(125)) goto parse_anchorPointX; + break; + } + + // optional float anchorPointX = 15; + case 15: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_anchorPointX: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &anchorpointx_))); + set_has_anchorpointx(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(133)) goto parse_anchorPointY; + break; + } + + // optional float anchorPointY = 16; + case 16: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_anchorPointY: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &anchorpointy_))); + set_has_anchorpointy(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(136)) goto parse_IsCustomSize; + break; + } + + // optional bool IsCustomSize = 17; + case 17: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_IsCustomSize: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &iscustomsize_))); + set_has_iscustomsize(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void TextFieldOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string fontName = 3; + if (has_fontname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->fontname(), output); + } + + // optional .protocolbuffers.ResourceData fontFile = 4; + if (has_fontfile()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 4, this->fontfile(), output); + } + + // optional int32 fontSize = 5; + if (has_fontsize()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->fontsize(), output); + } + + // optional string text = 6; + if (has_text()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 6, this->text(), output); + } + + // optional string placeHolder = 7; + if (has_placeholder()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 7, this->placeholder(), output); + } + + // optional bool passwordEnable = 8; + if (has_passwordenable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(8, this->passwordenable(), output); + } + + // optional string passwordStyleText = 9; + if (has_passwordstyletext()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 9, this->passwordstyletext(), output); + } + + // optional bool maxLengthEnable = 10; + if (has_maxlengthenable()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(10, this->maxlengthenable(), output); + } + + // optional int32 maxLength = 11; + if (has_maxlength()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(11, this->maxlength(), output); + } + + // optional float areaWidth = 12; + if (has_areawidth()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(12, this->areawidth(), output); + } + + // optional float areaHeight = 13; + if (has_areaheight()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(13, this->areaheight(), output); + } + + // optional .protocolbuffers.ResourceData fontResource = 14; + if (has_fontresource()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 14, this->fontresource(), output); + } + + // optional float anchorPointX = 15; + if (has_anchorpointx()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(15, this->anchorpointx(), output); + } + + // optional float anchorPointY = 16; + if (has_anchorpointy()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(16, this->anchorpointy(), output); + } + + // optional bool IsCustomSize = 17; + if (has_iscustomsize()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(17, this->iscustomsize(), output); + } + +} + +int TextFieldOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string fontName = 3; + if (has_fontname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->fontname()); + } + + // optional .protocolbuffers.ResourceData fontFile = 4; + if (has_fontfile()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->fontfile()); + } + + // optional int32 fontSize = 5; + if (has_fontsize()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->fontsize()); + } + + // optional string text = 6; + if (has_text()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->text()); + } + + // optional string placeHolder = 7; + if (has_placeholder()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->placeholder()); + } + + // optional bool passwordEnable = 8; + if (has_passwordenable()) { + total_size += 1 + 1; + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional string passwordStyleText = 9; + if (has_passwordstyletext()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->passwordstyletext()); + } + + // optional bool maxLengthEnable = 10; + if (has_maxlengthenable()) { + total_size += 1 + 1; + } + + // optional int32 maxLength = 11; + if (has_maxlength()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->maxlength()); + } + + // optional float areaWidth = 12; + if (has_areawidth()) { + total_size += 1 + 4; + } + + // optional float areaHeight = 13; + if (has_areaheight()) { + total_size += 1 + 4; + } + + // optional float anchorPointX = 15; + if (has_anchorpointx()) { + total_size += 1 + 4; + } + + // optional float anchorPointY = 16; + if (has_anchorpointy()) { + total_size += 2 + 4; + } + + // optional .protocolbuffers.ResourceData fontResource = 14; + if (has_fontresource()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->fontresource()); + } + + } + if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { + // optional bool IsCustomSize = 17; + if (has_iscustomsize()) { + total_size += 2 + 1; + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void TextFieldOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void TextFieldOptions::MergeFrom(const TextFieldOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_fontname()) { + set_fontname(from.fontname()); + } + if (from.has_fontfile()) { + mutable_fontfile()->::protocolbuffers::ResourceData::MergeFrom(from.fontfile()); + } + if (from.has_fontsize()) { + set_fontsize(from.fontsize()); + } + if (from.has_text()) { + set_text(from.text()); + } + if (from.has_placeholder()) { + set_placeholder(from.placeholder()); + } + if (from.has_passwordenable()) { + set_passwordenable(from.passwordenable()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_passwordstyletext()) { + set_passwordstyletext(from.passwordstyletext()); + } + if (from.has_maxlengthenable()) { + set_maxlengthenable(from.maxlengthenable()); + } + if (from.has_maxlength()) { + set_maxlength(from.maxlength()); + } + if (from.has_areawidth()) { + set_areawidth(from.areawidth()); + } + if (from.has_areaheight()) { + set_areaheight(from.areaheight()); + } + if (from.has_anchorpointx()) { + set_anchorpointx(from.anchorpointx()); + } + if (from.has_anchorpointy()) { + set_anchorpointy(from.anchorpointy()); + } + if (from.has_fontresource()) { + mutable_fontresource()->::protocolbuffers::ResourceData::MergeFrom(from.fontresource()); + } + } + if (from._has_bits_[16 / 32] & (0xffu << (16 % 32))) { + if (from.has_iscustomsize()) { + set_iscustomsize(from.iscustomsize()); + } + } +} + +void TextFieldOptions::CopyFrom(const TextFieldOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TextFieldOptions::IsInitialized() const { + + return true; +} + +void TextFieldOptions::Swap(TextFieldOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(fontname_, other->fontname_); + std::swap(fontfile_, other->fontfile_); + std::swap(fontsize_, other->fontsize_); + std::swap(text_, other->text_); + std::swap(placeholder_, other->placeholder_); + std::swap(passwordenable_, other->passwordenable_); + std::swap(passwordstyletext_, other->passwordstyletext_); + std::swap(maxlengthenable_, other->maxlengthenable_); + std::swap(maxlength_, other->maxlength_); + std::swap(areawidth_, other->areawidth_); + std::swap(areaheight_, other->areaheight_); + std::swap(anchorpointx_, other->anchorpointx_); + std::swap(anchorpointy_, other->anchorpointy_); + std::swap(fontresource_, other->fontresource_); + std::swap(iscustomsize_, other->iscustomsize_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string TextFieldOptions::GetTypeName() const { + return "protocolbuffers.TextFieldOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int TMXTiledMapOptions::kTmxFileFieldNumber; +const int TMXTiledMapOptions::kTmxStringFieldNumber; +const int TMXTiledMapOptions::kResourcePathFieldNumber; +const int TMXTiledMapOptions::kFileNameDataFieldNumber; +#endif // !_MSC_VER + +TMXTiledMapOptions::TMXTiledMapOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void TMXTiledMapOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + filenamedata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + filenamedata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +TMXTiledMapOptions::TMXTiledMapOptions(const TMXTiledMapOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void TMXTiledMapOptions::SharedCtor() { + _cached_size_ = 0; + tmxfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + tmxstring_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + resourcepath_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + filenamedata_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +TMXTiledMapOptions::~TMXTiledMapOptions() { + SharedDtor(); +} + +void TMXTiledMapOptions::SharedDtor() { + if (tmxfile_ != &::google::protobuf::internal::kEmptyString) { + delete tmxfile_; + } + if (tmxstring_ != &::google::protobuf::internal::kEmptyString) { + delete tmxstring_; + } + if (resourcepath_ != &::google::protobuf::internal::kEmptyString) { + delete resourcepath_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete filenamedata_; + } +} + +void TMXTiledMapOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const TMXTiledMapOptions& TMXTiledMapOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +TMXTiledMapOptions* TMXTiledMapOptions::default_instance_ = NULL; + +TMXTiledMapOptions* TMXTiledMapOptions::New() const { + return new TMXTiledMapOptions; +} + +void TMXTiledMapOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_tmxfile()) { + if (tmxfile_ != &::google::protobuf::internal::kEmptyString) { + tmxfile_->clear(); + } + } + if (has_tmxstring()) { + if (tmxstring_ != &::google::protobuf::internal::kEmptyString) { + tmxstring_->clear(); + } + } + if (has_resourcepath()) { + if (resourcepath_ != &::google::protobuf::internal::kEmptyString) { + resourcepath_->clear(); + } + } + if (has_filenamedata()) { + if (filenamedata_ != NULL) filenamedata_->::protocolbuffers::ResourceData::Clear(); + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool TMXTiledMapOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string tmxFile = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_tmxfile())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_tmxString; + break; + } + + // optional string tmxString = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_tmxString: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_tmxstring())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_resourcePath; + break; + } + + // optional string resourcePath = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_resourcePath: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_resourcepath())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_fileNameData; + break; + } + + // optional .protocolbuffers.ResourceData fileNameData = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fileNameData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_filenamedata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void TMXTiledMapOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string tmxFile = 1; + if (has_tmxfile()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->tmxfile(), output); + } + + // optional string tmxString = 2; + if (has_tmxstring()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->tmxstring(), output); + } + + // optional string resourcePath = 3; + if (has_resourcepath()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->resourcepath(), output); + } + + // optional .protocolbuffers.ResourceData fileNameData = 4; + if (has_filenamedata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 4, this->filenamedata(), output); + } + +} + +int TMXTiledMapOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string tmxFile = 1; + if (has_tmxfile()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->tmxfile()); + } + + // optional string tmxString = 2; + if (has_tmxstring()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->tmxstring()); + } + + // optional string resourcePath = 3; + if (has_resourcepath()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->resourcepath()); + } + + // optional .protocolbuffers.ResourceData fileNameData = 4; + if (has_filenamedata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->filenamedata()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void TMXTiledMapOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void TMXTiledMapOptions::MergeFrom(const TMXTiledMapOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_tmxfile()) { + set_tmxfile(from.tmxfile()); + } + if (from.has_tmxstring()) { + set_tmxstring(from.tmxstring()); + } + if (from.has_resourcepath()) { + set_resourcepath(from.resourcepath()); + } + if (from.has_filenamedata()) { + mutable_filenamedata()->::protocolbuffers::ResourceData::MergeFrom(from.filenamedata()); + } + } +} + +void TMXTiledMapOptions::CopyFrom(const TMXTiledMapOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TMXTiledMapOptions::IsInitialized() const { + + return true; +} + +void TMXTiledMapOptions::Swap(TMXTiledMapOptions* other) { + if (other != this) { + std::swap(tmxfile_, other->tmxfile_); + std::swap(tmxstring_, other->tmxstring_); + std::swap(resourcepath_, other->resourcepath_); + std::swap(filenamedata_, other->filenamedata_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string TMXTiledMapOptions::GetTypeName() const { + return "protocolbuffers.TMXTiledMapOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int ParticleSystemOptions::kPlistFileFieldNumber; +const int ParticleSystemOptions::kTotalParticlesFieldNumber; +const int ParticleSystemOptions::kFileNameDataFieldNumber; +#endif // !_MSC_VER + +ParticleSystemOptions::ParticleSystemOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void ParticleSystemOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + filenamedata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + filenamedata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +ParticleSystemOptions::ParticleSystemOptions(const ParticleSystemOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void ParticleSystemOptions::SharedCtor() { + _cached_size_ = 0; + plistfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + totalparticles_ = 0; + filenamedata_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +ParticleSystemOptions::~ParticleSystemOptions() { + SharedDtor(); +} + +void ParticleSystemOptions::SharedDtor() { + if (plistfile_ != &::google::protobuf::internal::kEmptyString) { + delete plistfile_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete filenamedata_; + } +} + +void ParticleSystemOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ParticleSystemOptions& ParticleSystemOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +ParticleSystemOptions* ParticleSystemOptions::default_instance_ = NULL; + +ParticleSystemOptions* ParticleSystemOptions::New() const { + return new ParticleSystemOptions; +} + +void ParticleSystemOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_plistfile()) { + if (plistfile_ != &::google::protobuf::internal::kEmptyString) { + plistfile_->clear(); + } + } + totalparticles_ = 0; + if (has_filenamedata()) { + if (filenamedata_ != NULL) filenamedata_->::protocolbuffers::ResourceData::Clear(); + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool ParticleSystemOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string plistFile = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_plistfile())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(16)) goto parse_totalParticles; + break; + } + + // optional int32 totalParticles = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_totalParticles: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &totalparticles_))); + set_has_totalparticles(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_fileNameData; + break; + } + + // optional .protocolbuffers.ResourceData fileNameData = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fileNameData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_filenamedata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void ParticleSystemOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string plistFile = 1; + if (has_plistfile()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->plistfile(), output); + } + + // optional int32 totalParticles = 2; + if (has_totalparticles()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->totalparticles(), output); + } + + // optional .protocolbuffers.ResourceData fileNameData = 3; + if (has_filenamedata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 3, this->filenamedata(), output); + } + +} + +int ParticleSystemOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string plistFile = 1; + if (has_plistfile()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->plistfile()); + } + + // optional int32 totalParticles = 2; + if (has_totalparticles()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->totalparticles()); + } + + // optional .protocolbuffers.ResourceData fileNameData = 3; + if (has_filenamedata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->filenamedata()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void ParticleSystemOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void ParticleSystemOptions::MergeFrom(const ParticleSystemOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_plistfile()) { + set_plistfile(from.plistfile()); + } + if (from.has_totalparticles()) { + set_totalparticles(from.totalparticles()); + } + if (from.has_filenamedata()) { + mutable_filenamedata()->::protocolbuffers::ResourceData::MergeFrom(from.filenamedata()); + } + } +} + +void ParticleSystemOptions::CopyFrom(const ParticleSystemOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ParticleSystemOptions::IsInitialized() const { + + return true; +} + +void ParticleSystemOptions::Swap(ParticleSystemOptions* other) { + if (other != this) { + std::swap(plistfile_, other->plistfile_); + std::swap(totalparticles_, other->totalparticles_); + std::swap(filenamedata_, other->filenamedata_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string ParticleSystemOptions::GetTypeName() const { + return "protocolbuffers.ParticleSystemOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int ProjectNodeOptions::kFileNameFieldNumber; +#endif // !_MSC_VER + +ProjectNodeOptions::ProjectNodeOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void ProjectNodeOptions::InitAsDefaultInstance() { +} + +ProjectNodeOptions::ProjectNodeOptions(const ProjectNodeOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void ProjectNodeOptions::SharedCtor() { + _cached_size_ = 0; + filename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +ProjectNodeOptions::~ProjectNodeOptions() { + SharedDtor(); +} + +void ProjectNodeOptions::SharedDtor() { + if (filename_ != &::google::protobuf::internal::kEmptyString) { + delete filename_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void ProjectNodeOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ProjectNodeOptions& ProjectNodeOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +ProjectNodeOptions* ProjectNodeOptions::default_instance_ = NULL; + +ProjectNodeOptions* ProjectNodeOptions::New() const { + return new ProjectNodeOptions; +} + +void ProjectNodeOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_filename()) { + if (filename_ != &::google::protobuf::internal::kEmptyString) { + filename_->clear(); + } + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool ProjectNodeOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string fileName = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_filename())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void ProjectNodeOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string fileName = 1; + if (has_filename()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->filename(), output); + } + +} + +int ProjectNodeOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string fileName = 1; + if (has_filename()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->filename()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void ProjectNodeOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void ProjectNodeOptions::MergeFrom(const ProjectNodeOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_filename()) { + set_filename(from.filename()); + } + } +} + +void ProjectNodeOptions::CopyFrom(const ProjectNodeOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ProjectNodeOptions::IsInitialized() const { + + return true; +} + +void ProjectNodeOptions::Swap(ProjectNodeOptions* other) { + if (other != this) { + std::swap(filename_, other->filename_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string ProjectNodeOptions::GetTypeName() const { + return "protocolbuffers.ProjectNodeOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int ComponentOptions::kTypeFieldNumber; +const int ComponentOptions::kComAudioOptionsFieldNumber; +#endif // !_MSC_VER + +ComponentOptions::ComponentOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void ComponentOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + comaudiooptions_ = const_cast< ::protocolbuffers::ComAudioOptions*>( + ::protocolbuffers::ComAudioOptions::internal_default_instance()); +#else + comaudiooptions_ = const_cast< ::protocolbuffers::ComAudioOptions*>(&::protocolbuffers::ComAudioOptions::default_instance()); +#endif +} + +ComponentOptions::ComponentOptions(const ComponentOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void ComponentOptions::SharedCtor() { + _cached_size_ = 0; + type_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + comaudiooptions_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +ComponentOptions::~ComponentOptions() { + SharedDtor(); +} + +void ComponentOptions::SharedDtor() { + if (type_ != &::google::protobuf::internal::kEmptyString) { + delete type_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete comaudiooptions_; + } +} + +void ComponentOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ComponentOptions& ComponentOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +ComponentOptions* ComponentOptions::default_instance_ = NULL; + +ComponentOptions* ComponentOptions::New() const { + return new ComponentOptions; +} + +void ComponentOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_type()) { + if (type_ != &::google::protobuf::internal::kEmptyString) { + type_->clear(); + } + } + if (has_comaudiooptions()) { + if (comaudiooptions_ != NULL) comaudiooptions_->::protocolbuffers::ComAudioOptions::Clear(); + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool ComponentOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string type = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_type())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_comAudioOptions; + break; + } + + // optional .protocolbuffers.ComAudioOptions comAudioOptions = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_comAudioOptions: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_comaudiooptions())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void ComponentOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string type = 1; + if (has_type()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->type(), output); + } + + // optional .protocolbuffers.ComAudioOptions comAudioOptions = 2; + if (has_comaudiooptions()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 2, this->comaudiooptions(), output); + } + +} + +int ComponentOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string type = 1; + if (has_type()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->type()); + } + + // optional .protocolbuffers.ComAudioOptions comAudioOptions = 2; + if (has_comaudiooptions()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->comaudiooptions()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void ComponentOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void ComponentOptions::MergeFrom(const ComponentOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_type()) { + set_type(from.type()); + } + if (from.has_comaudiooptions()) { + mutable_comaudiooptions()->::protocolbuffers::ComAudioOptions::MergeFrom(from.comaudiooptions()); + } + } +} + +void ComponentOptions::CopyFrom(const ComponentOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ComponentOptions::IsInitialized() const { + + return true; +} + +void ComponentOptions::Swap(ComponentOptions* other) { + if (other != this) { + std::swap(type_, other->type_); + std::swap(comaudiooptions_, other->comaudiooptions_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string ComponentOptions::GetTypeName() const { + return "protocolbuffers.ComponentOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int ComAudioOptions::kNameFieldNumber; +const int ComAudioOptions::kEnabledFieldNumber; +const int ComAudioOptions::kLoopFieldNumber; +const int ComAudioOptions::kVolumeFieldNumber; +const int ComAudioOptions::kFileNameDataFieldNumber; +#endif // !_MSC_VER + +ComAudioOptions::ComAudioOptions() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void ComAudioOptions::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + filenamedata_ = const_cast< ::protocolbuffers::ResourceData*>( + ::protocolbuffers::ResourceData::internal_default_instance()); +#else + filenamedata_ = const_cast< ::protocolbuffers::ResourceData*>(&::protocolbuffers::ResourceData::default_instance()); +#endif +} + +ComAudioOptions::ComAudioOptions(const ComAudioOptions& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void ComAudioOptions::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + enabled_ = false; + loop_ = false; + volume_ = 0; + filenamedata_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +ComAudioOptions::~ComAudioOptions() { + SharedDtor(); +} + +void ComAudioOptions::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete filenamedata_; + } +} + +void ComAudioOptions::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ComAudioOptions& ComAudioOptions::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +ComAudioOptions* ComAudioOptions::default_instance_ = NULL; + +ComAudioOptions* ComAudioOptions::New() const { + return new ComAudioOptions; +} + +void ComAudioOptions::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + enabled_ = false; + loop_ = false; + volume_ = 0; + if (has_filenamedata()) { + if (filenamedata_ != NULL) filenamedata_->::protocolbuffers::ResourceData::Clear(); + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool ComAudioOptions::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(16)) goto parse_enabled; + break; + } + + // optional bool enabled = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_enabled: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &enabled_))); + set_has_enabled(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_loop; + break; + } + + // optional bool loop = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_loop: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &loop_))); + set_has_loop(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(32)) goto parse_volume; + break; + } + + // optional int32 volume = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_volume: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &volume_))); + set_has_volume(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_fileNameData; + break; + } + + // optional .protocolbuffers.ResourceData fileNameData = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_fileNameData: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_filenamedata())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void ComAudioOptions::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional bool enabled = 2; + if (has_enabled()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->enabled(), output); + } + + // optional bool loop = 3; + if (has_loop()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->loop(), output); + } + + // optional int32 volume = 4; + if (has_volume()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->volume(), output); + } + + // optional .protocolbuffers.ResourceData fileNameData = 5; + if (has_filenamedata()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 5, this->filenamedata(), output); + } + +} + +int ComAudioOptions::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional bool enabled = 2; + if (has_enabled()) { + total_size += 1 + 1; + } + + // optional bool loop = 3; + if (has_loop()) { + total_size += 1 + 1; + } + + // optional int32 volume = 4; + if (has_volume()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->volume()); + } + + // optional .protocolbuffers.ResourceData fileNameData = 5; + if (has_filenamedata()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->filenamedata()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void ComAudioOptions::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void ComAudioOptions::MergeFrom(const ComAudioOptions& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_enabled()) { + set_enabled(from.enabled()); + } + if (from.has_loop()) { + set_loop(from.loop()); + } + if (from.has_volume()) { + set_volume(from.volume()); + } + if (from.has_filenamedata()) { + mutable_filenamedata()->::protocolbuffers::ResourceData::MergeFrom(from.filenamedata()); + } + } +} + +void ComAudioOptions::CopyFrom(const ComAudioOptions& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ComAudioOptions::IsInitialized() const { + + return true; +} + +void ComAudioOptions::Swap(ComAudioOptions* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(enabled_, other->enabled_); + std::swap(loop_, other->loop_); + std::swap(volume_, other->volume_); + std::swap(filenamedata_, other->filenamedata_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string ComAudioOptions::GetTypeName() const { + return "protocolbuffers.ComAudioOptions"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int NodeAction::kNameFieldNumber; +const int NodeAction::kClassnameFieldNumber; +const int NodeAction::kDurationFieldNumber; +const int NodeAction::kSpeedFieldNumber; +const int NodeAction::kTimelinesFieldNumber; +#endif // !_MSC_VER + +NodeAction::NodeAction() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void NodeAction::InitAsDefaultInstance() { +} + +NodeAction::NodeAction(const NodeAction& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void NodeAction::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + duration_ = 0; + speed_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +NodeAction::~NodeAction() { + SharedDtor(); +} + +void NodeAction::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void NodeAction::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const NodeAction& NodeAction::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +NodeAction* NodeAction::default_instance_ = NULL; + +NodeAction* NodeAction::New() const { + return new NodeAction; +} + +void NodeAction::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + duration_ = 0; + speed_ = 0; + } + timelines_.Clear(); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool NodeAction::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_duration; + break; + } + + // optional int32 duration = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_duration: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &duration_))); + set_has_duration(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(37)) goto parse_speed; + break; + } + + // optional float speed = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_speed: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &speed_))); + set_has_speed(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_timelines; + break; + } + + // repeated .protocolbuffers.TimeLine timelines = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_timelines: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, add_timelines())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_timelines; + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void NodeAction::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional int32 duration = 3; + if (has_duration()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->duration(), output); + } + + // optional float speed = 4; + if (has_speed()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(4, this->speed(), output); + } + + // repeated .protocolbuffers.TimeLine timelines = 5; + for (int i = 0; i < this->timelines_size(); i++) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 5, this->timelines(i), output); + } + +} + +int NodeAction::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional int32 duration = 3; + if (has_duration()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->duration()); + } + + // optional float speed = 4; + if (has_speed()) { + total_size += 1 + 4; + } + + } + // repeated .protocolbuffers.TimeLine timelines = 5; + total_size += 1 * this->timelines_size(); + for (int i = 0; i < this->timelines_size(); i++) { + total_size += + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->timelines(i)); + } + + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void NodeAction::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void NodeAction::MergeFrom(const NodeAction& from) { + GOOGLE_CHECK_NE(&from, this); + timelines_.MergeFrom(from.timelines_); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_duration()) { + set_duration(from.duration()); + } + if (from.has_speed()) { + set_speed(from.speed()); + } + } +} + +void NodeAction::CopyFrom(const NodeAction& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool NodeAction::IsInitialized() const { + + return true; +} + +void NodeAction::Swap(NodeAction* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(duration_, other->duration_); + std::swap(speed_, other->speed_); + timelines_.Swap(&other->timelines_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string NodeAction::GetTypeName() const { + return "protocolbuffers.NodeAction"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int TimeLine::kNameFieldNumber; +const int TimeLine::kClassnameFieldNumber; +const int TimeLine::kFrameTypeFieldNumber; +const int TimeLine::kActionTagFieldNumber; +const int TimeLine::kFramesFieldNumber; +#endif // !_MSC_VER + +TimeLine::TimeLine() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void TimeLine::InitAsDefaultInstance() { +} + +TimeLine::TimeLine(const TimeLine& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void TimeLine::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + frametype_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + actiontag_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +TimeLine::~TimeLine() { + SharedDtor(); +} + +void TimeLine::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (frametype_ != &::google::protobuf::internal::kEmptyString) { + delete frametype_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void TimeLine::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const TimeLine& TimeLine::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +TimeLine* TimeLine::default_instance_ = NULL; + +TimeLine* TimeLine::New() const { + return new TimeLine; +} + +void TimeLine::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + if (has_frametype()) { + if (frametype_ != &::google::protobuf::internal::kEmptyString) { + frametype_->clear(); + } + } + actiontag_ = 0; + } + frames_.Clear(); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool TimeLine::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_frameType; + break; + } + + // optional string frameType = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_frameType: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_frametype())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(32)) goto parse_actionTag; + break; + } + + // optional int32 actionTag = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_actionTag: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &actiontag_))); + set_has_actiontag(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_frames; + break; + } + + // repeated .protocolbuffers.Frame frames = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_frames: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, add_frames())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_frames; + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void TimeLine::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional string frameType = 3; + if (has_frametype()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 3, this->frametype(), output); + } + + // optional int32 actionTag = 4; + if (has_actiontag()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->actiontag(), output); + } + + // repeated .protocolbuffers.Frame frames = 5; + for (int i = 0; i < this->frames_size(); i++) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 5, this->frames(i), output); + } + +} + +int TimeLine::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional string frameType = 3; + if (has_frametype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->frametype()); + } + + // optional int32 actionTag = 4; + if (has_actiontag()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->actiontag()); + } + + } + // repeated .protocolbuffers.Frame frames = 5; + total_size += 1 * this->frames_size(); + for (int i = 0; i < this->frames_size(); i++) { + total_size += + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->frames(i)); + } + + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void TimeLine::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void TimeLine::MergeFrom(const TimeLine& from) { + GOOGLE_CHECK_NE(&from, this); + frames_.MergeFrom(from.frames_); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_frametype()) { + set_frametype(from.frametype()); + } + if (from.has_actiontag()) { + set_actiontag(from.actiontag()); + } + } +} + +void TimeLine::CopyFrom(const TimeLine& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TimeLine::IsInitialized() const { + + return true; +} + +void TimeLine::Swap(TimeLine* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(frametype_, other->frametype_); + std::swap(actiontag_, other->actiontag_); + frames_.Swap(&other->frames_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string TimeLine::GetTypeName() const { + return "protocolbuffers.TimeLine"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int Frame::kVisibleFrameFieldNumber; +const int Frame::kZOrderFrameFieldNumber; +const int Frame::kRotationSkewFrameFieldNumber; +const int Frame::kEventFrameFieldNumber; +const int Frame::kAnchorPointFrameFieldNumber; +const int Frame::kPositionFrameFieldNumber; +const int Frame::kScaleFrameFieldNumber; +const int Frame::kColorFrameFieldNumber; +const int Frame::kTextureFrameFieldNumber; +#endif // !_MSC_VER + +Frame::Frame() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void Frame::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + visibleframe_ = const_cast< ::protocolbuffers::TimeLineBoolFrame*>( + ::protocolbuffers::TimeLineBoolFrame::internal_default_instance()); +#else + visibleframe_ = const_cast< ::protocolbuffers::TimeLineBoolFrame*>(&::protocolbuffers::TimeLineBoolFrame::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + zorderframe_ = const_cast< ::protocolbuffers::TimeLineIntFrame*>( + ::protocolbuffers::TimeLineIntFrame::internal_default_instance()); +#else + zorderframe_ = const_cast< ::protocolbuffers::TimeLineIntFrame*>(&::protocolbuffers::TimeLineIntFrame::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + rotationskewframe_ = const_cast< ::protocolbuffers::TimeLinePointFrame*>( + ::protocolbuffers::TimeLinePointFrame::internal_default_instance()); +#else + rotationskewframe_ = const_cast< ::protocolbuffers::TimeLinePointFrame*>(&::protocolbuffers::TimeLinePointFrame::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + eventframe_ = const_cast< ::protocolbuffers::TimeLineStringFrame*>( + ::protocolbuffers::TimeLineStringFrame::internal_default_instance()); +#else + eventframe_ = const_cast< ::protocolbuffers::TimeLineStringFrame*>(&::protocolbuffers::TimeLineStringFrame::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + anchorpointframe_ = const_cast< ::protocolbuffers::TimeLinePointFrame*>( + ::protocolbuffers::TimeLinePointFrame::internal_default_instance()); +#else + anchorpointframe_ = const_cast< ::protocolbuffers::TimeLinePointFrame*>(&::protocolbuffers::TimeLinePointFrame::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + positionframe_ = const_cast< ::protocolbuffers::TimeLinePointFrame*>( + ::protocolbuffers::TimeLinePointFrame::internal_default_instance()); +#else + positionframe_ = const_cast< ::protocolbuffers::TimeLinePointFrame*>(&::protocolbuffers::TimeLinePointFrame::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + scaleframe_ = const_cast< ::protocolbuffers::TimeLinePointFrame*>( + ::protocolbuffers::TimeLinePointFrame::internal_default_instance()); +#else + scaleframe_ = const_cast< ::protocolbuffers::TimeLinePointFrame*>(&::protocolbuffers::TimeLinePointFrame::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + colorframe_ = const_cast< ::protocolbuffers::TimeLineColorFrame*>( + ::protocolbuffers::TimeLineColorFrame::internal_default_instance()); +#else + colorframe_ = const_cast< ::protocolbuffers::TimeLineColorFrame*>(&::protocolbuffers::TimeLineColorFrame::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + textureframe_ = const_cast< ::protocolbuffers::TimeLineTextureFrame*>( + ::protocolbuffers::TimeLineTextureFrame::internal_default_instance()); +#else + textureframe_ = const_cast< ::protocolbuffers::TimeLineTextureFrame*>(&::protocolbuffers::TimeLineTextureFrame::default_instance()); +#endif +} + +Frame::Frame(const Frame& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void Frame::SharedCtor() { + _cached_size_ = 0; + visibleframe_ = NULL; + zorderframe_ = NULL; + rotationskewframe_ = NULL; + eventframe_ = NULL; + anchorpointframe_ = NULL; + positionframe_ = NULL; + scaleframe_ = NULL; + colorframe_ = NULL; + textureframe_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +Frame::~Frame() { + SharedDtor(); +} + +void Frame::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete visibleframe_; + delete zorderframe_; + delete rotationskewframe_; + delete eventframe_; + delete anchorpointframe_; + delete positionframe_; + delete scaleframe_; + delete colorframe_; + delete textureframe_; + } +} + +void Frame::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const Frame& Frame::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +Frame* Frame::default_instance_ = NULL; + +Frame* Frame::New() const { + return new Frame; +} + +void Frame::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_visibleframe()) { + if (visibleframe_ != NULL) visibleframe_->::protocolbuffers::TimeLineBoolFrame::Clear(); + } + if (has_zorderframe()) { + if (zorderframe_ != NULL) zorderframe_->::protocolbuffers::TimeLineIntFrame::Clear(); + } + if (has_rotationskewframe()) { + if (rotationskewframe_ != NULL) rotationskewframe_->::protocolbuffers::TimeLinePointFrame::Clear(); + } + if (has_eventframe()) { + if (eventframe_ != NULL) eventframe_->::protocolbuffers::TimeLineStringFrame::Clear(); + } + if (has_anchorpointframe()) { + if (anchorpointframe_ != NULL) anchorpointframe_->::protocolbuffers::TimeLinePointFrame::Clear(); + } + if (has_positionframe()) { + if (positionframe_ != NULL) positionframe_->::protocolbuffers::TimeLinePointFrame::Clear(); + } + if (has_scaleframe()) { + if (scaleframe_ != NULL) scaleframe_->::protocolbuffers::TimeLinePointFrame::Clear(); + } + if (has_colorframe()) { + if (colorframe_ != NULL) colorframe_->::protocolbuffers::TimeLineColorFrame::Clear(); + } + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (has_textureframe()) { + if (textureframe_ != NULL) textureframe_->::protocolbuffers::TimeLineTextureFrame::Clear(); + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool Frame::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional .protocolbuffers.TimeLineBoolFrame visibleFrame = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_visibleframe())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(50)) goto parse_zOrderFrame; + break; + } + + // optional .protocolbuffers.TimeLineIntFrame zOrderFrame = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_zOrderFrame: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_zorderframe())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(58)) goto parse_rotationSkewFrame; + break; + } + + // optional .protocolbuffers.TimeLinePointFrame rotationSkewFrame = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_rotationSkewFrame: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_rotationskewframe())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(66)) goto parse_eventFrame; + break; + } + + // optional .protocolbuffers.TimeLineStringFrame eventFrame = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_eventFrame: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_eventframe())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(74)) goto parse_anchorPointFrame; + break; + } + + // optional .protocolbuffers.TimeLinePointFrame anchorPointFrame = 9; + case 9: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_anchorPointFrame: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_anchorpointframe())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(82)) goto parse_positionFrame; + break; + } + + // optional .protocolbuffers.TimeLinePointFrame positionFrame = 10; + case 10: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_positionFrame: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_positionframe())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(90)) goto parse_scaleFrame; + break; + } + + // optional .protocolbuffers.TimeLinePointFrame scaleFrame = 11; + case 11: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_scaleFrame: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_scaleframe())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(98)) goto parse_colorFrame; + break; + } + + // optional .protocolbuffers.TimeLineColorFrame colorFrame = 12; + case 12: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_colorFrame: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_colorframe())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(106)) goto parse_textureFrame; + break; + } + + // optional .protocolbuffers.TimeLineTextureFrame textureFrame = 13; + case 13: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_textureFrame: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_textureframe())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void Frame::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional .protocolbuffers.TimeLineBoolFrame visibleFrame = 5; + if (has_visibleframe()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 5, this->visibleframe(), output); + } + + // optional .protocolbuffers.TimeLineIntFrame zOrderFrame = 6; + if (has_zorderframe()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 6, this->zorderframe(), output); + } + + // optional .protocolbuffers.TimeLinePointFrame rotationSkewFrame = 7; + if (has_rotationskewframe()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 7, this->rotationskewframe(), output); + } + + // optional .protocolbuffers.TimeLineStringFrame eventFrame = 8; + if (has_eventframe()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 8, this->eventframe(), output); + } + + // optional .protocolbuffers.TimeLinePointFrame anchorPointFrame = 9; + if (has_anchorpointframe()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 9, this->anchorpointframe(), output); + } + + // optional .protocolbuffers.TimeLinePointFrame positionFrame = 10; + if (has_positionframe()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 10, this->positionframe(), output); + } + + // optional .protocolbuffers.TimeLinePointFrame scaleFrame = 11; + if (has_scaleframe()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 11, this->scaleframe(), output); + } + + // optional .protocolbuffers.TimeLineColorFrame colorFrame = 12; + if (has_colorframe()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 12, this->colorframe(), output); + } + + // optional .protocolbuffers.TimeLineTextureFrame textureFrame = 13; + if (has_textureframe()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 13, this->textureframe(), output); + } + +} + +int Frame::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional .protocolbuffers.TimeLineBoolFrame visibleFrame = 5; + if (has_visibleframe()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->visibleframe()); + } + + // optional .protocolbuffers.TimeLineIntFrame zOrderFrame = 6; + if (has_zorderframe()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->zorderframe()); + } + + // optional .protocolbuffers.TimeLinePointFrame rotationSkewFrame = 7; + if (has_rotationskewframe()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->rotationskewframe()); + } + + // optional .protocolbuffers.TimeLineStringFrame eventFrame = 8; + if (has_eventframe()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->eventframe()); + } + + // optional .protocolbuffers.TimeLinePointFrame anchorPointFrame = 9; + if (has_anchorpointframe()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->anchorpointframe()); + } + + // optional .protocolbuffers.TimeLinePointFrame positionFrame = 10; + if (has_positionframe()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->positionframe()); + } + + // optional .protocolbuffers.TimeLinePointFrame scaleFrame = 11; + if (has_scaleframe()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->scaleframe()); + } + + // optional .protocolbuffers.TimeLineColorFrame colorFrame = 12; + if (has_colorframe()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->colorframe()); + } + + } + if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { + // optional .protocolbuffers.TimeLineTextureFrame textureFrame = 13; + if (has_textureframe()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->textureframe()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void Frame::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void Frame::MergeFrom(const Frame& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_visibleframe()) { + mutable_visibleframe()->::protocolbuffers::TimeLineBoolFrame::MergeFrom(from.visibleframe()); + } + if (from.has_zorderframe()) { + mutable_zorderframe()->::protocolbuffers::TimeLineIntFrame::MergeFrom(from.zorderframe()); + } + if (from.has_rotationskewframe()) { + mutable_rotationskewframe()->::protocolbuffers::TimeLinePointFrame::MergeFrom(from.rotationskewframe()); + } + if (from.has_eventframe()) { + mutable_eventframe()->::protocolbuffers::TimeLineStringFrame::MergeFrom(from.eventframe()); + } + if (from.has_anchorpointframe()) { + mutable_anchorpointframe()->::protocolbuffers::TimeLinePointFrame::MergeFrom(from.anchorpointframe()); + } + if (from.has_positionframe()) { + mutable_positionframe()->::protocolbuffers::TimeLinePointFrame::MergeFrom(from.positionframe()); + } + if (from.has_scaleframe()) { + mutable_scaleframe()->::protocolbuffers::TimeLinePointFrame::MergeFrom(from.scaleframe()); + } + if (from.has_colorframe()) { + mutable_colorframe()->::protocolbuffers::TimeLineColorFrame::MergeFrom(from.colorframe()); + } + } + if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) { + if (from.has_textureframe()) { + mutable_textureframe()->::protocolbuffers::TimeLineTextureFrame::MergeFrom(from.textureframe()); + } + } +} + +void Frame::CopyFrom(const Frame& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool Frame::IsInitialized() const { + + return true; +} + +void Frame::Swap(Frame* other) { + if (other != this) { + std::swap(visibleframe_, other->visibleframe_); + std::swap(zorderframe_, other->zorderframe_); + std::swap(rotationskewframe_, other->rotationskewframe_); + std::swap(eventframe_, other->eventframe_); + std::swap(anchorpointframe_, other->anchorpointframe_); + std::swap(positionframe_, other->positionframe_); + std::swap(scaleframe_, other->scaleframe_); + std::swap(colorframe_, other->colorframe_); + std::swap(textureframe_, other->textureframe_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string Frame::GetTypeName() const { + return "protocolbuffers.Frame"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int TimeLineBoolFrame::kNameFieldNumber; +const int TimeLineBoolFrame::kClassnameFieldNumber; +const int TimeLineBoolFrame::kFrameIndexFieldNumber; +const int TimeLineBoolFrame::kTweenFieldNumber; +const int TimeLineBoolFrame::kValueFieldNumber; +#endif // !_MSC_VER + +TimeLineBoolFrame::TimeLineBoolFrame() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void TimeLineBoolFrame::InitAsDefaultInstance() { +} + +TimeLineBoolFrame::TimeLineBoolFrame(const TimeLineBoolFrame& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void TimeLineBoolFrame::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + frameindex_ = 0; + tween_ = false; + value_ = false; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +TimeLineBoolFrame::~TimeLineBoolFrame() { + SharedDtor(); +} + +void TimeLineBoolFrame::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void TimeLineBoolFrame::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const TimeLineBoolFrame& TimeLineBoolFrame::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +TimeLineBoolFrame* TimeLineBoolFrame::default_instance_ = NULL; + +TimeLineBoolFrame* TimeLineBoolFrame::New() const { + return new TimeLineBoolFrame; +} + +void TimeLineBoolFrame::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + frameindex_ = 0; + tween_ = false; + value_ = false; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool TimeLineBoolFrame::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_frameIndex; + break; + } + + // optional int32 frameIndex = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_frameIndex: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &frameindex_))); + set_has_frameindex(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(32)) goto parse_tween; + break; + } + + // optional bool tween = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_tween: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &tween_))); + set_has_tween(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_value; + break; + } + + // optional bool value = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_value: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &value_))); + set_has_value(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void TimeLineBoolFrame::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional int32 frameIndex = 3; + if (has_frameindex()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->frameindex(), output); + } + + // optional bool tween = 4; + if (has_tween()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->tween(), output); + } + + // optional bool value = 5; + if (has_value()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(5, this->value(), output); + } + +} + +int TimeLineBoolFrame::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional int32 frameIndex = 3; + if (has_frameindex()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->frameindex()); + } + + // optional bool tween = 4; + if (has_tween()) { + total_size += 1 + 1; + } + + // optional bool value = 5; + if (has_value()) { + total_size += 1 + 1; + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void TimeLineBoolFrame::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void TimeLineBoolFrame::MergeFrom(const TimeLineBoolFrame& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_frameindex()) { + set_frameindex(from.frameindex()); + } + if (from.has_tween()) { + set_tween(from.tween()); + } + if (from.has_value()) { + set_value(from.value()); + } + } +} + +void TimeLineBoolFrame::CopyFrom(const TimeLineBoolFrame& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TimeLineBoolFrame::IsInitialized() const { + + return true; +} + +void TimeLineBoolFrame::Swap(TimeLineBoolFrame* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(frameindex_, other->frameindex_); + std::swap(tween_, other->tween_); + std::swap(value_, other->value_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string TimeLineBoolFrame::GetTypeName() const { + return "protocolbuffers.TimeLineBoolFrame"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int TimeLineIntFrame::kNameFieldNumber; +const int TimeLineIntFrame::kClassnameFieldNumber; +const int TimeLineIntFrame::kFrameIndexFieldNumber; +const int TimeLineIntFrame::kTweenFieldNumber; +const int TimeLineIntFrame::kValueFieldNumber; +#endif // !_MSC_VER + +TimeLineIntFrame::TimeLineIntFrame() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void TimeLineIntFrame::InitAsDefaultInstance() { +} + +TimeLineIntFrame::TimeLineIntFrame(const TimeLineIntFrame& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void TimeLineIntFrame::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + frameindex_ = 0; + tween_ = false; + value_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +TimeLineIntFrame::~TimeLineIntFrame() { + SharedDtor(); +} + +void TimeLineIntFrame::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void TimeLineIntFrame::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const TimeLineIntFrame& TimeLineIntFrame::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +TimeLineIntFrame* TimeLineIntFrame::default_instance_ = NULL; + +TimeLineIntFrame* TimeLineIntFrame::New() const { + return new TimeLineIntFrame; +} + +void TimeLineIntFrame::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + frameindex_ = 0; + tween_ = false; + value_ = 0; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool TimeLineIntFrame::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_frameIndex; + break; + } + + // optional int32 frameIndex = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_frameIndex: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &frameindex_))); + set_has_frameindex(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(32)) goto parse_tween; + break; + } + + // optional bool tween = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_tween: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &tween_))); + set_has_tween(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_value; + break; + } + + // optional int32 value = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_value: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &value_))); + set_has_value(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void TimeLineIntFrame::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional int32 frameIndex = 3; + if (has_frameindex()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->frameindex(), output); + } + + // optional bool tween = 4; + if (has_tween()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->tween(), output); + } + + // optional int32 value = 5; + if (has_value()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->value(), output); + } + +} + +int TimeLineIntFrame::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional int32 frameIndex = 3; + if (has_frameindex()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->frameindex()); + } + + // optional bool tween = 4; + if (has_tween()) { + total_size += 1 + 1; + } + + // optional int32 value = 5; + if (has_value()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->value()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void TimeLineIntFrame::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void TimeLineIntFrame::MergeFrom(const TimeLineIntFrame& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_frameindex()) { + set_frameindex(from.frameindex()); + } + if (from.has_tween()) { + set_tween(from.tween()); + } + if (from.has_value()) { + set_value(from.value()); + } + } +} + +void TimeLineIntFrame::CopyFrom(const TimeLineIntFrame& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TimeLineIntFrame::IsInitialized() const { + + return true; +} + +void TimeLineIntFrame::Swap(TimeLineIntFrame* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(frameindex_, other->frameindex_); + std::swap(tween_, other->tween_); + std::swap(value_, other->value_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string TimeLineIntFrame::GetTypeName() const { + return "protocolbuffers.TimeLineIntFrame"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int TimeLineStringFrame::kNameFieldNumber; +const int TimeLineStringFrame::kClassnameFieldNumber; +const int TimeLineStringFrame::kFrameIndexFieldNumber; +const int TimeLineStringFrame::kTweenFieldNumber; +const int TimeLineStringFrame::kValueFieldNumber; +#endif // !_MSC_VER + +TimeLineStringFrame::TimeLineStringFrame() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void TimeLineStringFrame::InitAsDefaultInstance() { +} + +TimeLineStringFrame::TimeLineStringFrame(const TimeLineStringFrame& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void TimeLineStringFrame::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + frameindex_ = 0; + tween_ = false; + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +TimeLineStringFrame::~TimeLineStringFrame() { + SharedDtor(); +} + +void TimeLineStringFrame::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (value_ != &::google::protobuf::internal::kEmptyString) { + delete value_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void TimeLineStringFrame::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const TimeLineStringFrame& TimeLineStringFrame::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +TimeLineStringFrame* TimeLineStringFrame::default_instance_ = NULL; + +TimeLineStringFrame* TimeLineStringFrame::New() const { + return new TimeLineStringFrame; +} + +void TimeLineStringFrame::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + frameindex_ = 0; + tween_ = false; + if (has_value()) { + if (value_ != &::google::protobuf::internal::kEmptyString) { + value_->clear(); + } + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool TimeLineStringFrame::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_frameIndex; + break; + } + + // optional int32 frameIndex = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_frameIndex: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &frameindex_))); + set_has_frameindex(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(32)) goto parse_tween; + break; + } + + // optional bool tween = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_tween: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &tween_))); + set_has_tween(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_value; + break; + } + + // optional string value = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_value: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_value())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void TimeLineStringFrame::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional int32 frameIndex = 3; + if (has_frameindex()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->frameindex(), output); + } + + // optional bool tween = 4; + if (has_tween()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->tween(), output); + } + + // optional string value = 5; + if (has_value()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 5, this->value(), output); + } + +} + +int TimeLineStringFrame::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional int32 frameIndex = 3; + if (has_frameindex()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->frameindex()); + } + + // optional bool tween = 4; + if (has_tween()) { + total_size += 1 + 1; + } + + // optional string value = 5; + if (has_value()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->value()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void TimeLineStringFrame::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void TimeLineStringFrame::MergeFrom(const TimeLineStringFrame& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_frameindex()) { + set_frameindex(from.frameindex()); + } + if (from.has_tween()) { + set_tween(from.tween()); + } + if (from.has_value()) { + set_value(from.value()); + } + } +} + +void TimeLineStringFrame::CopyFrom(const TimeLineStringFrame& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TimeLineStringFrame::IsInitialized() const { + + return true; +} + +void TimeLineStringFrame::Swap(TimeLineStringFrame* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(frameindex_, other->frameindex_); + std::swap(tween_, other->tween_); + std::swap(value_, other->value_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string TimeLineStringFrame::GetTypeName() const { + return "protocolbuffers.TimeLineStringFrame"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int TimeLinePointFrame::kNameFieldNumber; +const int TimeLinePointFrame::kClassnameFieldNumber; +const int TimeLinePointFrame::kFrameIndexFieldNumber; +const int TimeLinePointFrame::kTweenFieldNumber; +const int TimeLinePointFrame::kXFieldNumber; +const int TimeLinePointFrame::kYFieldNumber; +#endif // !_MSC_VER + +TimeLinePointFrame::TimeLinePointFrame() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void TimeLinePointFrame::InitAsDefaultInstance() { +} + +TimeLinePointFrame::TimeLinePointFrame(const TimeLinePointFrame& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void TimeLinePointFrame::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + frameindex_ = 0; + tween_ = false; + x_ = 0; + y_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +TimeLinePointFrame::~TimeLinePointFrame() { + SharedDtor(); +} + +void TimeLinePointFrame::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void TimeLinePointFrame::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const TimeLinePointFrame& TimeLinePointFrame::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +TimeLinePointFrame* TimeLinePointFrame::default_instance_ = NULL; + +TimeLinePointFrame* TimeLinePointFrame::New() const { + return new TimeLinePointFrame; +} + +void TimeLinePointFrame::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + frameindex_ = 0; + tween_ = false; + x_ = 0; + y_ = 0; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool TimeLinePointFrame::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_frameIndex; + break; + } + + // optional int32 frameIndex = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_frameIndex: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &frameindex_))); + set_has_frameindex(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(32)) goto parse_tween; + break; + } + + // optional bool tween = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_tween: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &tween_))); + set_has_tween(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(45)) goto parse_x; + break; + } + + // optional float x = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_x: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &x_))); + set_has_x(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(53)) goto parse_y; + break; + } + + // optional float y = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) { + parse_y: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( + input, &y_))); + set_has_y(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void TimeLinePointFrame::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional int32 frameIndex = 3; + if (has_frameindex()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->frameindex(), output); + } + + // optional bool tween = 4; + if (has_tween()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->tween(), output); + } + + // optional float x = 5; + if (has_x()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(5, this->x(), output); + } + + // optional float y = 6; + if (has_y()) { + ::google::protobuf::internal::WireFormatLite::WriteFloat(6, this->y(), output); + } + +} + +int TimeLinePointFrame::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional int32 frameIndex = 3; + if (has_frameindex()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->frameindex()); + } + + // optional bool tween = 4; + if (has_tween()) { + total_size += 1 + 1; + } + + // optional float x = 5; + if (has_x()) { + total_size += 1 + 4; + } + + // optional float y = 6; + if (has_y()) { + total_size += 1 + 4; + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void TimeLinePointFrame::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void TimeLinePointFrame::MergeFrom(const TimeLinePointFrame& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_frameindex()) { + set_frameindex(from.frameindex()); + } + if (from.has_tween()) { + set_tween(from.tween()); + } + if (from.has_x()) { + set_x(from.x()); + } + if (from.has_y()) { + set_y(from.y()); + } + } +} + +void TimeLinePointFrame::CopyFrom(const TimeLinePointFrame& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TimeLinePointFrame::IsInitialized() const { + + return true; +} + +void TimeLinePointFrame::Swap(TimeLinePointFrame* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(frameindex_, other->frameindex_); + std::swap(tween_, other->tween_); + std::swap(x_, other->x_); + std::swap(y_, other->y_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string TimeLinePointFrame::GetTypeName() const { + return "protocolbuffers.TimeLinePointFrame"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int TimeLineColorFrame::kNameFieldNumber; +const int TimeLineColorFrame::kClassnameFieldNumber; +const int TimeLineColorFrame::kFrameIndexFieldNumber; +const int TimeLineColorFrame::kTweenFieldNumber; +const int TimeLineColorFrame::kAlphaFieldNumber; +const int TimeLineColorFrame::kRedFieldNumber; +const int TimeLineColorFrame::kGreenFieldNumber; +const int TimeLineColorFrame::kBlueFieldNumber; +#endif // !_MSC_VER + +TimeLineColorFrame::TimeLineColorFrame() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void TimeLineColorFrame::InitAsDefaultInstance() { +} + +TimeLineColorFrame::TimeLineColorFrame(const TimeLineColorFrame& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void TimeLineColorFrame::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + frameindex_ = 0; + tween_ = false; + alpha_ = 0; + red_ = 0; + green_ = 0; + blue_ = 0; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +TimeLineColorFrame::~TimeLineColorFrame() { + SharedDtor(); +} + +void TimeLineColorFrame::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void TimeLineColorFrame::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const TimeLineColorFrame& TimeLineColorFrame::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +TimeLineColorFrame* TimeLineColorFrame::default_instance_ = NULL; + +TimeLineColorFrame* TimeLineColorFrame::New() const { + return new TimeLineColorFrame; +} + +void TimeLineColorFrame::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + frameindex_ = 0; + tween_ = false; + alpha_ = 0; + red_ = 0; + green_ = 0; + blue_ = 0; + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool TimeLineColorFrame::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_frameIndex; + break; + } + + // optional int32 frameIndex = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_frameIndex: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &frameindex_))); + set_has_frameindex(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(32)) goto parse_tween; + break; + } + + // optional bool tween = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_tween: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &tween_))); + set_has_tween(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_alpha; + break; + } + + // optional int32 alpha = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_alpha: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &alpha_))); + set_has_alpha(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(48)) goto parse_red; + break; + } + + // optional int32 red = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_red: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &red_))); + set_has_red(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(56)) goto parse_green; + break; + } + + // optional int32 green = 7; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_green: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &green_))); + set_has_green(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(64)) goto parse_blue; + break; + } + + // optional int32 blue = 8; + case 8: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_blue: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &blue_))); + set_has_blue(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void TimeLineColorFrame::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional int32 frameIndex = 3; + if (has_frameindex()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->frameindex(), output); + } + + // optional bool tween = 4; + if (has_tween()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->tween(), output); + } + + // optional int32 alpha = 5; + if (has_alpha()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->alpha(), output); + } + + // optional int32 red = 6; + if (has_red()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->red(), output); + } + + // optional int32 green = 7; + if (has_green()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(7, this->green(), output); + } + + // optional int32 blue = 8; + if (has_blue()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(8, this->blue(), output); + } + +} + +int TimeLineColorFrame::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional int32 frameIndex = 3; + if (has_frameindex()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->frameindex()); + } + + // optional bool tween = 4; + if (has_tween()) { + total_size += 1 + 1; + } + + // optional int32 alpha = 5; + if (has_alpha()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->alpha()); + } + + // optional int32 red = 6; + if (has_red()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->red()); + } + + // optional int32 green = 7; + if (has_green()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->green()); + } + + // optional int32 blue = 8; + if (has_blue()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->blue()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void TimeLineColorFrame::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void TimeLineColorFrame::MergeFrom(const TimeLineColorFrame& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_frameindex()) { + set_frameindex(from.frameindex()); + } + if (from.has_tween()) { + set_tween(from.tween()); + } + if (from.has_alpha()) { + set_alpha(from.alpha()); + } + if (from.has_red()) { + set_red(from.red()); + } + if (from.has_green()) { + set_green(from.green()); + } + if (from.has_blue()) { + set_blue(from.blue()); + } + } +} + +void TimeLineColorFrame::CopyFrom(const TimeLineColorFrame& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TimeLineColorFrame::IsInitialized() const { + + return true; +} + +void TimeLineColorFrame::Swap(TimeLineColorFrame* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(frameindex_, other->frameindex_); + std::swap(tween_, other->tween_); + std::swap(alpha_, other->alpha_); + std::swap(red_, other->red_); + std::swap(green_, other->green_); + std::swap(blue_, other->blue_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string TimeLineColorFrame::GetTypeName() const { + return "protocolbuffers.TimeLineColorFrame"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int TimeLineTextureFrame::kNameFieldNumber; +const int TimeLineTextureFrame::kClassnameFieldNumber; +const int TimeLineTextureFrame::kFrameIndexFieldNumber; +const int TimeLineTextureFrame::kTweenFieldNumber; +const int TimeLineTextureFrame::kFilePathFieldNumber; +const int TimeLineTextureFrame::kPlistFileFieldNumber; +#endif // !_MSC_VER + +TimeLineTextureFrame::TimeLineTextureFrame() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void TimeLineTextureFrame::InitAsDefaultInstance() { +} + +TimeLineTextureFrame::TimeLineTextureFrame(const TimeLineTextureFrame& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void TimeLineTextureFrame::SharedCtor() { + _cached_size_ = 0; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + frameindex_ = 0; + tween_ = false; + filepath_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + plistfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +TimeLineTextureFrame::~TimeLineTextureFrame() { + SharedDtor(); +} + +void TimeLineTextureFrame::SharedDtor() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (filepath_ != &::google::protobuf::internal::kEmptyString) { + delete filepath_; + } + if (plistfile_ != &::google::protobuf::internal::kEmptyString) { + delete plistfile_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void TimeLineTextureFrame::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const TimeLineTextureFrame& TimeLineTextureFrame::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_CSParseBinary_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_CSParseBinary_2eproto(); +#endif + return *default_instance_; +} + +TimeLineTextureFrame* TimeLineTextureFrame::default_instance_ = NULL; + +TimeLineTextureFrame* TimeLineTextureFrame::New() const { + return new TimeLineTextureFrame; +} + +void TimeLineTextureFrame::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (has_name()) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + } + if (has_classname()) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + } + frameindex_ = 0; + tween_ = false; + if (has_filepath()) { + if (filepath_ != &::google::protobuf::internal::kEmptyString) { + filepath_->clear(); + } + } + if (has_plistfile()) { + if (plistfile_ != &::google::protobuf::internal::kEmptyString) { + plistfile_->clear(); + } + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool TimeLineTextureFrame::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // optional string name = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_name())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_classname; + break; + } + + // optional string classname = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_classname: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_classname())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_frameIndex; + break; + } + + // optional int32 frameIndex = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_frameIndex: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( + input, &frameindex_))); + set_has_frameindex(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(32)) goto parse_tween; + break; + } + + // optional bool tween = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_tween: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &tween_))); + set_has_tween(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_filePath; + break; + } + + // optional string filePath = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_filePath: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_filepath())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(50)) goto parse_plistFile; + break; + } + + // optional string plistFile = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_plistFile: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_plistfile())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void TimeLineTextureFrame::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // optional string name = 1; + if (has_name()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 1, this->name(), output); + } + + // optional string classname = 2; + if (has_classname()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->classname(), output); + } + + // optional int32 frameIndex = 3; + if (has_frameindex()) { + ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->frameindex(), output); + } + + // optional bool tween = 4; + if (has_tween()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->tween(), output); + } + + // optional string filePath = 5; + if (has_filepath()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 5, this->filepath(), output); + } + + // optional string plistFile = 6; + if (has_plistfile()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 6, this->plistfile(), output); + } + +} + +int TimeLineTextureFrame::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // optional string name = 1; + if (has_name()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->name()); + } + + // optional string classname = 2; + if (has_classname()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->classname()); + } + + // optional int32 frameIndex = 3; + if (has_frameindex()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size( + this->frameindex()); + } + + // optional bool tween = 4; + if (has_tween()) { + total_size += 1 + 1; + } + + // optional string filePath = 5; + if (has_filepath()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->filepath()); + } + + // optional string plistFile = 6; + if (has_plistfile()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->plistfile()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void TimeLineTextureFrame::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void TimeLineTextureFrame::MergeFrom(const TimeLineTextureFrame& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_name()) { + set_name(from.name()); + } + if (from.has_classname()) { + set_classname(from.classname()); + } + if (from.has_frameindex()) { + set_frameindex(from.frameindex()); + } + if (from.has_tween()) { + set_tween(from.tween()); + } + if (from.has_filepath()) { + set_filepath(from.filepath()); + } + if (from.has_plistfile()) { + set_plistfile(from.plistfile()); + } + } +} + +void TimeLineTextureFrame::CopyFrom(const TimeLineTextureFrame& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool TimeLineTextureFrame::IsInitialized() const { + + return true; +} + +void TimeLineTextureFrame::Swap(TimeLineTextureFrame* other) { + if (other != this) { + std::swap(name_, other->name_); + std::swap(classname_, other->classname_); + std::swap(frameindex_, other->frameindex_); + std::swap(tween_, other->tween_); + std::swap(filepath_, other->filepath_); + std::swap(plistfile_, other->plistfile_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string TimeLineTextureFrame::GetTypeName() const { + return "protocolbuffers.TimeLineTextureFrame"; +} + + +// @@protoc_insertion_point(namespace_scope) + +} // namespace protocolbuffers + +// @@protoc_insertion_point(global_scope) diff --git a/cocos/editor-support/cocostudio/CSParseBinary.pb.h b/cocos/editor-support/cocostudio/CSParseBinary.pb.h new file mode 100644 index 0000000000..5c78acb668 --- /dev/null +++ b/cocos/editor-support/cocostudio/CSParseBinary.pb.h @@ -0,0 +1,22806 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: CSParseBinary.proto + +#ifndef PROTOBUF_CSParseBinary_2eproto__INCLUDED +#define PROTOBUF_CSParseBinary_2eproto__INCLUDED + +#include + +#include + +#if GOOGLE_PROTOBUF_VERSION < 2005000 +#error This file was generated by a newer version of protoc which is +#error incompatible with your Protocol Buffer headers. Please update +#error your headers. +#endif +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#error This file was generated by an older version of protoc which is +#error incompatible with your Protocol Buffer headers. Please +#error regenerate this file with a newer version of protoc. +#endif + +#include +#include +#include +#include +// @@protoc_insertion_point(includes) + +namespace protocolbuffers { + +// Internal implementation detail -- do not call these. +void protobuf_AddDesc_CSParseBinary_2eproto(); +void protobuf_AssignDesc_CSParseBinary_2eproto(); +void protobuf_ShutdownFile_CSParseBinary_2eproto(); + +class CSParseBinary; +class NodeTree; +class WidgetOptions; +class LayoutParameter; +class ButtonOptions; +class ResourceData; +class CheckBoxOptions; +class ImageViewOptions; +class TextAtlasOptions; +class TextBMFontOptions; +class TextOptions; +class LoadingBarOptions; +class ListViewOptions; +class PageViewOptions; +class PanelOptions; +class ScrollViewOptions; +class SliderOptions; +class SpriteOptions; +class TextFieldOptions; +class TMXTiledMapOptions; +class ParticleSystemOptions; +class ProjectNodeOptions; +class ComponentOptions; +class ComAudioOptions; +class NodeAction; +class TimeLine; +class Frame; +class TimeLineBoolFrame; +class TimeLineIntFrame; +class TimeLineStringFrame; +class TimeLinePointFrame; +class TimeLineColorFrame; +class TimeLineTextureFrame; + +// =================================================================== + +class CSParseBinary : public ::google::protobuf::MessageLite { + public: + CSParseBinary(); + virtual ~CSParseBinary(); + + CSParseBinary(const CSParseBinary& from); + + inline CSParseBinary& operator=(const CSParseBinary& from) { + CopyFrom(from); + return *this; + } + + static const CSParseBinary& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const CSParseBinary* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(CSParseBinary* other); + + // implements Message ---------------------------------------------- + + CSParseBinary* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const CSParseBinary& from); + void MergeFrom(const CSParseBinary& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string version = 1; + inline bool has_version() const; + inline void clear_version(); + static const int kVersionFieldNumber = 1; + inline const ::std::string& version() const; + inline void set_version(const ::std::string& value); + inline void set_version(const char* value); + inline void set_version(const char* value, size_t size); + inline ::std::string* mutable_version(); + inline ::std::string* release_version(); + inline void set_allocated_version(::std::string* version); + + // optional string cocos2dVersion = 2; + inline bool has_cocos2dversion() const; + inline void clear_cocos2dversion(); + static const int kCocos2DVersionFieldNumber = 2; + inline const ::std::string& cocos2dversion() const; + inline void set_cocos2dversion(const ::std::string& value); + inline void set_cocos2dversion(const char* value); + inline void set_cocos2dversion(const char* value, size_t size); + inline ::std::string* mutable_cocos2dversion(); + inline ::std::string* release_cocos2dversion(); + inline void set_allocated_cocos2dversion(::std::string* cocos2dversion); + + // optional string editorType = 3; + inline bool has_editortype() const; + inline void clear_editortype(); + static const int kEditorTypeFieldNumber = 3; + inline const ::std::string& editortype() const; + inline void set_editortype(const ::std::string& value); + inline void set_editortype(const char* value); + inline void set_editortype(const char* value, size_t size); + inline ::std::string* mutable_editortype(); + inline ::std::string* release_editortype(); + inline void set_allocated_editortype(::std::string* editortype); + + // optional float dataScale = 4; + inline bool has_datascale() const; + inline void clear_datascale(); + static const int kDataScaleFieldNumber = 4; + inline float datascale() const; + inline void set_datascale(float value); + + // optional int32 designHeight = 5; + inline bool has_designheight() const; + inline void clear_designheight(); + static const int kDesignHeightFieldNumber = 5; + inline ::google::protobuf::int32 designheight() const; + inline void set_designheight(::google::protobuf::int32 value); + + // optional int32 designWidth = 6; + inline bool has_designwidth() const; + inline void clear_designwidth(); + static const int kDesignWidthFieldNumber = 6; + inline ::google::protobuf::int32 designwidth() const; + inline void set_designwidth(::google::protobuf::int32 value); + + // repeated string textures = 7; + inline int textures_size() const; + inline void clear_textures(); + static const int kTexturesFieldNumber = 7; + inline const ::std::string& textures(int index) const; + inline ::std::string* mutable_textures(int index); + inline void set_textures(int index, const ::std::string& value); + inline void set_textures(int index, const char* value); + inline void set_textures(int index, const char* value, size_t size); + inline ::std::string* add_textures(); + inline void add_textures(const ::std::string& value); + inline void add_textures(const char* value); + inline void add_textures(const char* value, size_t size); + inline const ::google::protobuf::RepeatedPtrField< ::std::string>& textures() const; + inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_textures(); + + // repeated string texturesPng = 8; + inline int texturespng_size() const; + inline void clear_texturespng(); + static const int kTexturesPngFieldNumber = 8; + inline const ::std::string& texturespng(int index) const; + inline ::std::string* mutable_texturespng(int index); + inline void set_texturespng(int index, const ::std::string& value); + inline void set_texturespng(int index, const char* value); + inline void set_texturespng(int index, const char* value, size_t size); + inline ::std::string* add_texturespng(); + inline void add_texturespng(const ::std::string& value); + inline void add_texturespng(const char* value); + inline void add_texturespng(const char* value, size_t size); + inline const ::google::protobuf::RepeatedPtrField< ::std::string>& texturespng() const; + inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_texturespng(); + + // optional .protocolbuffers.NodeTree nodeTree = 9; + inline bool has_nodetree() const; + inline void clear_nodetree(); + static const int kNodeTreeFieldNumber = 9; + inline const ::protocolbuffers::NodeTree& nodetree() const; + inline ::protocolbuffers::NodeTree* mutable_nodetree(); + inline ::protocolbuffers::NodeTree* release_nodetree(); + inline void set_allocated_nodetree(::protocolbuffers::NodeTree* nodetree); + + // optional .protocolbuffers.NodeAction action = 10; + inline bool has_action() const; + inline void clear_action(); + static const int kActionFieldNumber = 10; + inline const ::protocolbuffers::NodeAction& action() const; + inline ::protocolbuffers::NodeAction* mutable_action(); + inline ::protocolbuffers::NodeAction* release_action(); + inline void set_allocated_action(::protocolbuffers::NodeAction* action); + + // @@protoc_insertion_point(class_scope:protocolbuffers.CSParseBinary) + private: + inline void set_has_version(); + inline void clear_has_version(); + inline void set_has_cocos2dversion(); + inline void clear_has_cocos2dversion(); + inline void set_has_editortype(); + inline void clear_has_editortype(); + inline void set_has_datascale(); + inline void clear_has_datascale(); + inline void set_has_designheight(); + inline void clear_has_designheight(); + inline void set_has_designwidth(); + inline void clear_has_designwidth(); + inline void set_has_nodetree(); + inline void clear_has_nodetree(); + inline void set_has_action(); + inline void clear_has_action(); + + ::std::string* version_; + ::std::string* cocos2dversion_; + ::std::string* editortype_; + float datascale_; + ::google::protobuf::int32 designheight_; + ::google::protobuf::RepeatedPtrField< ::std::string> textures_; + ::google::protobuf::RepeatedPtrField< ::std::string> texturespng_; + ::protocolbuffers::NodeTree* nodetree_; + ::protocolbuffers::NodeAction* action_; + ::google::protobuf::int32 designwidth_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(10 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static CSParseBinary* default_instance_; +}; +// ------------------------------------------------------------------- + +class NodeTree : public ::google::protobuf::MessageLite { + public: + NodeTree(); + virtual ~NodeTree(); + + NodeTree(const NodeTree& from); + + inline NodeTree& operator=(const NodeTree& from) { + CopyFrom(from); + return *this; + } + + static const NodeTree& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const NodeTree* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(NodeTree* other); + + // implements Message ---------------------------------------------- + + NodeTree* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const NodeTree& from); + void MergeFrom(const NodeTree& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string classname = 1; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 1; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string name = 2; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 2; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // repeated .protocolbuffers.NodeTree children = 3; + inline int children_size() const; + inline void clear_children(); + static const int kChildrenFieldNumber = 3; + inline const ::protocolbuffers::NodeTree& children(int index) const; + inline ::protocolbuffers::NodeTree* mutable_children(int index); + inline ::protocolbuffers::NodeTree* add_children(); + inline const ::google::protobuf::RepeatedPtrField< ::protocolbuffers::NodeTree >& + children() const; + inline ::google::protobuf::RepeatedPtrField< ::protocolbuffers::NodeTree >* + mutable_children(); + + // optional .protocolbuffers.WidgetOptions widgetOptions = 4; + inline bool has_widgetoptions() const; + inline void clear_widgetoptions(); + static const int kWidgetOptionsFieldNumber = 4; + inline const ::protocolbuffers::WidgetOptions& widgetoptions() const; + inline ::protocolbuffers::WidgetOptions* mutable_widgetoptions(); + inline ::protocolbuffers::WidgetOptions* release_widgetoptions(); + inline void set_allocated_widgetoptions(::protocolbuffers::WidgetOptions* widgetoptions); + + // optional .protocolbuffers.ButtonOptions buttonOptions = 5; + inline bool has_buttonoptions() const; + inline void clear_buttonoptions(); + static const int kButtonOptionsFieldNumber = 5; + inline const ::protocolbuffers::ButtonOptions& buttonoptions() const; + inline ::protocolbuffers::ButtonOptions* mutable_buttonoptions(); + inline ::protocolbuffers::ButtonOptions* release_buttonoptions(); + inline void set_allocated_buttonoptions(::protocolbuffers::ButtonOptions* buttonoptions); + + // optional .protocolbuffers.CheckBoxOptions checkBoxOptions = 6; + inline bool has_checkboxoptions() const; + inline void clear_checkboxoptions(); + static const int kCheckBoxOptionsFieldNumber = 6; + inline const ::protocolbuffers::CheckBoxOptions& checkboxoptions() const; + inline ::protocolbuffers::CheckBoxOptions* mutable_checkboxoptions(); + inline ::protocolbuffers::CheckBoxOptions* release_checkboxoptions(); + inline void set_allocated_checkboxoptions(::protocolbuffers::CheckBoxOptions* checkboxoptions); + + // optional .protocolbuffers.ImageViewOptions imageViewOptions = 7; + inline bool has_imageviewoptions() const; + inline void clear_imageviewoptions(); + static const int kImageViewOptionsFieldNumber = 7; + inline const ::protocolbuffers::ImageViewOptions& imageviewoptions() const; + inline ::protocolbuffers::ImageViewOptions* mutable_imageviewoptions(); + inline ::protocolbuffers::ImageViewOptions* release_imageviewoptions(); + inline void set_allocated_imageviewoptions(::protocolbuffers::ImageViewOptions* imageviewoptions); + + // optional .protocolbuffers.TextAtlasOptions textAtlasOptions = 8; + inline bool has_textatlasoptions() const; + inline void clear_textatlasoptions(); + static const int kTextAtlasOptionsFieldNumber = 8; + inline const ::protocolbuffers::TextAtlasOptions& textatlasoptions() const; + inline ::protocolbuffers::TextAtlasOptions* mutable_textatlasoptions(); + inline ::protocolbuffers::TextAtlasOptions* release_textatlasoptions(); + inline void set_allocated_textatlasoptions(::protocolbuffers::TextAtlasOptions* textatlasoptions); + + // optional .protocolbuffers.TextBMFontOptions textBMFontOptions = 9; + inline bool has_textbmfontoptions() const; + inline void clear_textbmfontoptions(); + static const int kTextBMFontOptionsFieldNumber = 9; + inline const ::protocolbuffers::TextBMFontOptions& textbmfontoptions() const; + inline ::protocolbuffers::TextBMFontOptions* mutable_textbmfontoptions(); + inline ::protocolbuffers::TextBMFontOptions* release_textbmfontoptions(); + inline void set_allocated_textbmfontoptions(::protocolbuffers::TextBMFontOptions* textbmfontoptions); + + // optional .protocolbuffers.TextOptions textOptions = 10; + inline bool has_textoptions() const; + inline void clear_textoptions(); + static const int kTextOptionsFieldNumber = 10; + inline const ::protocolbuffers::TextOptions& textoptions() const; + inline ::protocolbuffers::TextOptions* mutable_textoptions(); + inline ::protocolbuffers::TextOptions* release_textoptions(); + inline void set_allocated_textoptions(::protocolbuffers::TextOptions* textoptions); + + // optional .protocolbuffers.LoadingBarOptions loadingBarOptions = 11; + inline bool has_loadingbaroptions() const; + inline void clear_loadingbaroptions(); + static const int kLoadingBarOptionsFieldNumber = 11; + inline const ::protocolbuffers::LoadingBarOptions& loadingbaroptions() const; + inline ::protocolbuffers::LoadingBarOptions* mutable_loadingbaroptions(); + inline ::protocolbuffers::LoadingBarOptions* release_loadingbaroptions(); + inline void set_allocated_loadingbaroptions(::protocolbuffers::LoadingBarOptions* loadingbaroptions); + + // optional .protocolbuffers.SliderOptions sliderOptions = 12; + inline bool has_slideroptions() const; + inline void clear_slideroptions(); + static const int kSliderOptionsFieldNumber = 12; + inline const ::protocolbuffers::SliderOptions& slideroptions() const; + inline ::protocolbuffers::SliderOptions* mutable_slideroptions(); + inline ::protocolbuffers::SliderOptions* release_slideroptions(); + inline void set_allocated_slideroptions(::protocolbuffers::SliderOptions* slideroptions); + + // optional .protocolbuffers.TextFieldOptions textFieldOptions = 13; + inline bool has_textfieldoptions() const; + inline void clear_textfieldoptions(); + static const int kTextFieldOptionsFieldNumber = 13; + inline const ::protocolbuffers::TextFieldOptions& textfieldoptions() const; + inline ::protocolbuffers::TextFieldOptions* mutable_textfieldoptions(); + inline ::protocolbuffers::TextFieldOptions* release_textfieldoptions(); + inline void set_allocated_textfieldoptions(::protocolbuffers::TextFieldOptions* textfieldoptions); + + // optional .protocolbuffers.ScrollViewOptions scrollViewOptions = 14; + inline bool has_scrollviewoptions() const; + inline void clear_scrollviewoptions(); + static const int kScrollViewOptionsFieldNumber = 14; + inline const ::protocolbuffers::ScrollViewOptions& scrollviewoptions() const; + inline ::protocolbuffers::ScrollViewOptions* mutable_scrollviewoptions(); + inline ::protocolbuffers::ScrollViewOptions* release_scrollviewoptions(); + inline void set_allocated_scrollviewoptions(::protocolbuffers::ScrollViewOptions* scrollviewoptions); + + // optional .protocolbuffers.PageViewOptions pageViewOptions = 15; + inline bool has_pageviewoptions() const; + inline void clear_pageviewoptions(); + static const int kPageViewOptionsFieldNumber = 15; + inline const ::protocolbuffers::PageViewOptions& pageviewoptions() const; + inline ::protocolbuffers::PageViewOptions* mutable_pageviewoptions(); + inline ::protocolbuffers::PageViewOptions* release_pageviewoptions(); + inline void set_allocated_pageviewoptions(::protocolbuffers::PageViewOptions* pageviewoptions); + + // optional .protocolbuffers.ListViewOptions listViewOptions = 16; + inline bool has_listviewoptions() const; + inline void clear_listviewoptions(); + static const int kListViewOptionsFieldNumber = 16; + inline const ::protocolbuffers::ListViewOptions& listviewoptions() const; + inline ::protocolbuffers::ListViewOptions* mutable_listviewoptions(); + inline ::protocolbuffers::ListViewOptions* release_listviewoptions(); + inline void set_allocated_listviewoptions(::protocolbuffers::ListViewOptions* listviewoptions); + + // optional .protocolbuffers.PanelOptions PanelOptions = 17; + inline bool has_paneloptions() const; + inline void clear_paneloptions(); + static const int kPanelOptionsFieldNumber = 17; + inline const ::protocolbuffers::PanelOptions& paneloptions() const; + inline ::protocolbuffers::PanelOptions* mutable_paneloptions(); + inline ::protocolbuffers::PanelOptions* release_paneloptions(); + inline void set_allocated_paneloptions(::protocolbuffers::PanelOptions* paneloptions); + + // optional .protocolbuffers.SpriteOptions spriteOptions = 18; + inline bool has_spriteoptions() const; + inline void clear_spriteoptions(); + static const int kSpriteOptionsFieldNumber = 18; + inline const ::protocolbuffers::SpriteOptions& spriteoptions() const; + inline ::protocolbuffers::SpriteOptions* mutable_spriteoptions(); + inline ::protocolbuffers::SpriteOptions* release_spriteoptions(); + inline void set_allocated_spriteoptions(::protocolbuffers::SpriteOptions* spriteoptions); + + // optional .protocolbuffers.TMXTiledMapOptions tmxTiledMapOptions = 19; + inline bool has_tmxtiledmapoptions() const; + inline void clear_tmxtiledmapoptions(); + static const int kTmxTiledMapOptionsFieldNumber = 19; + inline const ::protocolbuffers::TMXTiledMapOptions& tmxtiledmapoptions() const; + inline ::protocolbuffers::TMXTiledMapOptions* mutable_tmxtiledmapoptions(); + inline ::protocolbuffers::TMXTiledMapOptions* release_tmxtiledmapoptions(); + inline void set_allocated_tmxtiledmapoptions(::protocolbuffers::TMXTiledMapOptions* tmxtiledmapoptions); + + // optional .protocolbuffers.ParticleSystemOptions particleSystemOptions = 20; + inline bool has_particlesystemoptions() const; + inline void clear_particlesystemoptions(); + static const int kParticleSystemOptionsFieldNumber = 20; + inline const ::protocolbuffers::ParticleSystemOptions& particlesystemoptions() const; + inline ::protocolbuffers::ParticleSystemOptions* mutable_particlesystemoptions(); + inline ::protocolbuffers::ParticleSystemOptions* release_particlesystemoptions(); + inline void set_allocated_particlesystemoptions(::protocolbuffers::ParticleSystemOptions* particlesystemoptions); + + // optional .protocolbuffers.ProjectNodeOptions projectNodeOptions = 21; + inline bool has_projectnodeoptions() const; + inline void clear_projectnodeoptions(); + static const int kProjectNodeOptionsFieldNumber = 21; + inline const ::protocolbuffers::ProjectNodeOptions& projectnodeoptions() const; + inline ::protocolbuffers::ProjectNodeOptions* mutable_projectnodeoptions(); + inline ::protocolbuffers::ProjectNodeOptions* release_projectnodeoptions(); + inline void set_allocated_projectnodeoptions(::protocolbuffers::ProjectNodeOptions* projectnodeoptions); + + // @@protoc_insertion_point(class_scope:protocolbuffers.NodeTree) + private: + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_widgetoptions(); + inline void clear_has_widgetoptions(); + inline void set_has_buttonoptions(); + inline void clear_has_buttonoptions(); + inline void set_has_checkboxoptions(); + inline void clear_has_checkboxoptions(); + inline void set_has_imageviewoptions(); + inline void clear_has_imageviewoptions(); + inline void set_has_textatlasoptions(); + inline void clear_has_textatlasoptions(); + inline void set_has_textbmfontoptions(); + inline void clear_has_textbmfontoptions(); + inline void set_has_textoptions(); + inline void clear_has_textoptions(); + inline void set_has_loadingbaroptions(); + inline void clear_has_loadingbaroptions(); + inline void set_has_slideroptions(); + inline void clear_has_slideroptions(); + inline void set_has_textfieldoptions(); + inline void clear_has_textfieldoptions(); + inline void set_has_scrollviewoptions(); + inline void clear_has_scrollviewoptions(); + inline void set_has_pageviewoptions(); + inline void clear_has_pageviewoptions(); + inline void set_has_listviewoptions(); + inline void clear_has_listviewoptions(); + inline void set_has_paneloptions(); + inline void clear_has_paneloptions(); + inline void set_has_spriteoptions(); + inline void clear_has_spriteoptions(); + inline void set_has_tmxtiledmapoptions(); + inline void clear_has_tmxtiledmapoptions(); + inline void set_has_particlesystemoptions(); + inline void clear_has_particlesystemoptions(); + inline void set_has_projectnodeoptions(); + inline void clear_has_projectnodeoptions(); + + ::std::string* classname_; + ::std::string* name_; + ::google::protobuf::RepeatedPtrField< ::protocolbuffers::NodeTree > children_; + ::protocolbuffers::WidgetOptions* widgetoptions_; + ::protocolbuffers::ButtonOptions* buttonoptions_; + ::protocolbuffers::CheckBoxOptions* checkboxoptions_; + ::protocolbuffers::ImageViewOptions* imageviewoptions_; + ::protocolbuffers::TextAtlasOptions* textatlasoptions_; + ::protocolbuffers::TextBMFontOptions* textbmfontoptions_; + ::protocolbuffers::TextOptions* textoptions_; + ::protocolbuffers::LoadingBarOptions* loadingbaroptions_; + ::protocolbuffers::SliderOptions* slideroptions_; + ::protocolbuffers::TextFieldOptions* textfieldoptions_; + ::protocolbuffers::ScrollViewOptions* scrollviewoptions_; + ::protocolbuffers::PageViewOptions* pageviewoptions_; + ::protocolbuffers::ListViewOptions* listviewoptions_; + ::protocolbuffers::PanelOptions* paneloptions_; + ::protocolbuffers::SpriteOptions* spriteoptions_; + ::protocolbuffers::TMXTiledMapOptions* tmxtiledmapoptions_; + ::protocolbuffers::ParticleSystemOptions* particlesystemoptions_; + ::protocolbuffers::ProjectNodeOptions* projectnodeoptions_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(21 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static NodeTree* default_instance_; +}; +// ------------------------------------------------------------------- + +class WidgetOptions : public ::google::protobuf::MessageLite { + public: + WidgetOptions(); + virtual ~WidgetOptions(); + + WidgetOptions(const WidgetOptions& from); + + inline WidgetOptions& operator=(const WidgetOptions& from) { + CopyFrom(from); + return *this; + } + + static const WidgetOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const WidgetOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(WidgetOptions* other); + + // implements Message ---------------------------------------------- + + WidgetOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const WidgetOptions& from); + void MergeFrom(const WidgetOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional float x = 1; + inline bool has_x() const; + inline void clear_x(); + static const int kXFieldNumber = 1; + inline float x() const; + inline void set_x(float value); + + // optional float y = 2; + inline bool has_y() const; + inline void clear_y(); + static const int kYFieldNumber = 2; + inline float y() const; + inline void set_y(float value); + + // optional float scaleX = 3; + inline bool has_scalex() const; + inline void clear_scalex(); + static const int kScaleXFieldNumber = 3; + inline float scalex() const; + inline void set_scalex(float value); + + // optional float scaleY = 4; + inline bool has_scaley() const; + inline void clear_scaley(); + static const int kScaleYFieldNumber = 4; + inline float scaley() const; + inline void set_scaley(float value); + + // optional float rotation = 5; + inline bool has_rotation() const; + inline void clear_rotation(); + static const int kRotationFieldNumber = 5; + inline float rotation() const; + inline void set_rotation(float value); + + // optional bool flipX = 6; + inline bool has_flipx() const; + inline void clear_flipx(); + static const int kFlipXFieldNumber = 6; + inline bool flipx() const; + inline void set_flipx(bool value); + + // optional bool flipY = 7; + inline bool has_flipy() const; + inline void clear_flipy(); + static const int kFlipYFieldNumber = 7; + inline bool flipy() const; + inline void set_flipy(bool value); + + // optional int32 colorB = 8; + inline bool has_colorb() const; + inline void clear_colorb(); + static const int kColorBFieldNumber = 8; + inline ::google::protobuf::int32 colorb() const; + inline void set_colorb(::google::protobuf::int32 value); + + // optional int32 colorG = 9; + inline bool has_colorg() const; + inline void clear_colorg(); + static const int kColorGFieldNumber = 9; + inline ::google::protobuf::int32 colorg() const; + inline void set_colorg(::google::protobuf::int32 value); + + // optional int32 colorR = 10; + inline bool has_colorr() const; + inline void clear_colorr(); + static const int kColorRFieldNumber = 10; + inline ::google::protobuf::int32 colorr() const; + inline void set_colorr(::google::protobuf::int32 value); + + // optional int32 opacity = 11; + inline bool has_opacity() const; + inline void clear_opacity(); + static const int kOpacityFieldNumber = 11; + inline ::google::protobuf::int32 opacity() const; + inline void set_opacity(::google::protobuf::int32 value); + + // optional bool touchAble = 12; + inline bool has_touchable() const; + inline void clear_touchable(); + static const int kTouchAbleFieldNumber = 12; + inline bool touchable() const; + inline void set_touchable(bool value); + + // optional bool visible = 13; + inline bool has_visible() const; + inline void clear_visible(); + static const int kVisibleFieldNumber = 13; + inline bool visible() const; + inline void set_visible(bool value); + + // optional int32 zorder = 14; + inline bool has_zorder() const; + inline void clear_zorder(); + static const int kZorderFieldNumber = 14; + inline ::google::protobuf::int32 zorder() const; + inline void set_zorder(::google::protobuf::int32 value); + + // optional string classType = 15; + inline bool has_classtype() const; + inline void clear_classtype(); + static const int kClassTypeFieldNumber = 15; + inline const ::std::string& classtype() const; + inline void set_classtype(const ::std::string& value); + inline void set_classtype(const char* value); + inline void set_classtype(const char* value, size_t size); + inline ::std::string* mutable_classtype(); + inline ::std::string* release_classtype(); + inline void set_allocated_classtype(::std::string* classtype); + + // optional float width = 16; + inline bool has_width() const; + inline void clear_width(); + static const int kWidthFieldNumber = 16; + inline float width() const; + inline void set_width(float value); + + // optional float height = 17; + inline bool has_height() const; + inline void clear_height(); + static const int kHeightFieldNumber = 17; + inline float height() const; + inline void set_height(float value); + + // optional int32 positionType = 18; + inline bool has_positiontype() const; + inline void clear_positiontype(); + static const int kPositionTypeFieldNumber = 18; + inline ::google::protobuf::int32 positiontype() const; + inline void set_positiontype(::google::protobuf::int32 value); + + // optional float positionPercentX = 19; + inline bool has_positionpercentx() const; + inline void clear_positionpercentx(); + static const int kPositionPercentXFieldNumber = 19; + inline float positionpercentx() const; + inline void set_positionpercentx(float value); + + // optional float positionPercentY = 20; + inline bool has_positionpercenty() const; + inline void clear_positionpercenty(); + static const int kPositionPercentYFieldNumber = 20; + inline float positionpercenty() const; + inline void set_positionpercenty(float value); + + // optional int32 sizeType = 21; + inline bool has_sizetype() const; + inline void clear_sizetype(); + static const int kSizeTypeFieldNumber = 21; + inline ::google::protobuf::int32 sizetype() const; + inline void set_sizetype(::google::protobuf::int32 value); + + // optional float sizePercentX = 22; + inline bool has_sizepercentx() const; + inline void clear_sizepercentx(); + static const int kSizePercentXFieldNumber = 22; + inline float sizepercentx() const; + inline void set_sizepercentx(float value); + + // optional float sizePercentY = 23; + inline bool has_sizepercenty() const; + inline void clear_sizepercenty(); + static const int kSizePercentYFieldNumber = 23; + inline float sizepercenty() const; + inline void set_sizepercenty(float value); + + // optional bool useMergedTexture = 24; + inline bool has_usemergedtexture() const; + inline void clear_usemergedtexture(); + static const int kUseMergedTextureFieldNumber = 24; + inline bool usemergedtexture() const; + inline void set_usemergedtexture(bool value); + + // optional int32 actionTag = 25; + inline bool has_actiontag() const; + inline void clear_actiontag(); + static const int kActionTagFieldNumber = 25; + inline ::google::protobuf::int32 actiontag() const; + inline void set_actiontag(::google::protobuf::int32 value); + + // optional int32 tag = 26; + inline bool has_tag() const; + inline void clear_tag(); + static const int kTagFieldNumber = 26; + inline ::google::protobuf::int32 tag() const; + inline void set_tag(::google::protobuf::int32 value); + + // optional float anchorPointX = 27; + inline bool has_anchorpointx() const; + inline void clear_anchorpointx(); + static const int kAnchorPointXFieldNumber = 27; + inline float anchorpointx() const; + inline void set_anchorpointx(float value); + + // optional float anchorPointY = 28; + inline bool has_anchorpointy() const; + inline void clear_anchorpointy(); + static const int kAnchorPointYFieldNumber = 28; + inline float anchorpointy() const; + inline void set_anchorpointy(float value); + + // optional bool ignoreSize = 29; + inline bool has_ignoresize() const; + inline void clear_ignoresize(); + static const int kIgnoreSizeFieldNumber = 29; + inline bool ignoresize() const; + inline void set_ignoresize(bool value); + + // optional float rotationSkewX = 30; + inline bool has_rotationskewx() const; + inline void clear_rotationskewx(); + static const int kRotationSkewXFieldNumber = 30; + inline float rotationskewx() const; + inline void set_rotationskewx(float value); + + // optional float rotationSkewY = 31; + inline bool has_rotationskewy() const; + inline void clear_rotationskewy(); + static const int kRotationSkewYFieldNumber = 31; + inline float rotationskewy() const; + inline void set_rotationskewy(float value); + + // optional .protocolbuffers.LayoutParameter layoutParameter = 32; + inline bool has_layoutparameter() const; + inline void clear_layoutparameter(); + static const int kLayoutParameterFieldNumber = 32; + inline const ::protocolbuffers::LayoutParameter& layoutparameter() const; + inline ::protocolbuffers::LayoutParameter* mutable_layoutparameter(); + inline ::protocolbuffers::LayoutParameter* release_layoutparameter(); + inline void set_allocated_layoutparameter(::protocolbuffers::LayoutParameter* layoutparameter); + + // optional string customProperty = 33; + inline bool has_customproperty() const; + inline void clear_customproperty(); + static const int kCustomPropertyFieldNumber = 33; + inline const ::std::string& customproperty() const; + inline void set_customproperty(const ::std::string& value); + inline void set_customproperty(const char* value); + inline void set_customproperty(const char* value, size_t size); + inline ::std::string* mutable_customproperty(); + inline ::std::string* release_customproperty(); + inline void set_allocated_customproperty(::std::string* customproperty); + + // optional string frameEvent = 34; + inline bool has_frameevent() const; + inline void clear_frameevent(); + static const int kFrameEventFieldNumber = 34; + inline const ::std::string& frameevent() const; + inline void set_frameevent(const ::std::string& value); + inline void set_frameevent(const char* value); + inline void set_frameevent(const char* value, size_t size); + inline ::std::string* mutable_frameevent(); + inline ::std::string* release_frameevent(); + inline void set_allocated_frameevent(::std::string* frameevent); + + // optional string name = 35; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 35; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional int32 Alpha = 37; + inline bool has_alpha() const; + inline void clear_alpha(); + static const int kAlphaFieldNumber = 37; + inline ::google::protobuf::int32 alpha() const; + inline void set_alpha(::google::protobuf::int32 value); + + // repeated .protocolbuffers.ComponentOptions componentOptions = 36; + inline int componentoptions_size() const; + inline void clear_componentoptions(); + static const int kComponentOptionsFieldNumber = 36; + inline const ::protocolbuffers::ComponentOptions& componentoptions(int index) const; + inline ::protocolbuffers::ComponentOptions* mutable_componentoptions(int index); + inline ::protocolbuffers::ComponentOptions* add_componentoptions(); + inline const ::google::protobuf::RepeatedPtrField< ::protocolbuffers::ComponentOptions >& + componentoptions() const; + inline ::google::protobuf::RepeatedPtrField< ::protocolbuffers::ComponentOptions >* + mutable_componentoptions(); + + // @@protoc_insertion_point(class_scope:protocolbuffers.WidgetOptions) + private: + inline void set_has_x(); + inline void clear_has_x(); + inline void set_has_y(); + inline void clear_has_y(); + inline void set_has_scalex(); + inline void clear_has_scalex(); + inline void set_has_scaley(); + inline void clear_has_scaley(); + inline void set_has_rotation(); + inline void clear_has_rotation(); + inline void set_has_flipx(); + inline void clear_has_flipx(); + inline void set_has_flipy(); + inline void clear_has_flipy(); + inline void set_has_colorb(); + inline void clear_has_colorb(); + inline void set_has_colorg(); + inline void clear_has_colorg(); + inline void set_has_colorr(); + inline void clear_has_colorr(); + inline void set_has_opacity(); + inline void clear_has_opacity(); + inline void set_has_touchable(); + inline void clear_has_touchable(); + inline void set_has_visible(); + inline void clear_has_visible(); + inline void set_has_zorder(); + inline void clear_has_zorder(); + inline void set_has_classtype(); + inline void clear_has_classtype(); + inline void set_has_width(); + inline void clear_has_width(); + inline void set_has_height(); + inline void clear_has_height(); + inline void set_has_positiontype(); + inline void clear_has_positiontype(); + inline void set_has_positionpercentx(); + inline void clear_has_positionpercentx(); + inline void set_has_positionpercenty(); + inline void clear_has_positionpercenty(); + inline void set_has_sizetype(); + inline void clear_has_sizetype(); + inline void set_has_sizepercentx(); + inline void clear_has_sizepercentx(); + inline void set_has_sizepercenty(); + inline void clear_has_sizepercenty(); + inline void set_has_usemergedtexture(); + inline void clear_has_usemergedtexture(); + inline void set_has_actiontag(); + inline void clear_has_actiontag(); + inline void set_has_tag(); + inline void clear_has_tag(); + inline void set_has_anchorpointx(); + inline void clear_has_anchorpointx(); + inline void set_has_anchorpointy(); + inline void clear_has_anchorpointy(); + inline void set_has_ignoresize(); + inline void clear_has_ignoresize(); + inline void set_has_rotationskewx(); + inline void clear_has_rotationskewx(); + inline void set_has_rotationskewy(); + inline void clear_has_rotationskewy(); + inline void set_has_layoutparameter(); + inline void clear_has_layoutparameter(); + inline void set_has_customproperty(); + inline void clear_has_customproperty(); + inline void set_has_frameevent(); + inline void clear_has_frameevent(); + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_alpha(); + inline void clear_has_alpha(); + + float x_; + float y_; + float scalex_; + float scaley_; + float rotation_; + ::google::protobuf::int32 colorb_; + ::google::protobuf::int32 colorg_; + bool flipx_; + bool flipy_; + bool touchable_; + bool visible_; + ::google::protobuf::int32 colorr_; + ::google::protobuf::int32 opacity_; + ::std::string* classtype_; + ::google::protobuf::int32 zorder_; + float width_; + float height_; + ::google::protobuf::int32 positiontype_; + float positionpercentx_; + float positionpercenty_; + ::google::protobuf::int32 sizetype_; + float sizepercentx_; + float sizepercenty_; + ::google::protobuf::int32 actiontag_; + ::google::protobuf::int32 tag_; + bool usemergedtexture_; + bool ignoresize_; + float anchorpointx_; + float anchorpointy_; + float rotationskewx_; + float rotationskewy_; + ::protocolbuffers::LayoutParameter* layoutparameter_; + ::std::string* customproperty_; + ::std::string* frameevent_; + ::std::string* name_; + ::google::protobuf::RepeatedPtrField< ::protocolbuffers::ComponentOptions > componentoptions_; + ::google::protobuf::int32 alpha_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(37 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static WidgetOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class LayoutParameter : public ::google::protobuf::MessageLite { + public: + LayoutParameter(); + virtual ~LayoutParameter(); + + LayoutParameter(const LayoutParameter& from); + + inline LayoutParameter& operator=(const LayoutParameter& from) { + CopyFrom(from); + return *this; + } + + static const LayoutParameter& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const LayoutParameter* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(LayoutParameter* other); + + // implements Message ---------------------------------------------- + + LayoutParameter* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const LayoutParameter& from); + void MergeFrom(const LayoutParameter& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional int32 type = 1; + inline bool has_type() const; + inline void clear_type(); + static const int kTypeFieldNumber = 1; + inline ::google::protobuf::int32 type() const; + inline void set_type(::google::protobuf::int32 value); + + // optional int32 gravity = 2; + inline bool has_gravity() const; + inline void clear_gravity(); + static const int kGravityFieldNumber = 2; + inline ::google::protobuf::int32 gravity() const; + inline void set_gravity(::google::protobuf::int32 value); + + // optional string relativeName = 3; + inline bool has_relativename() const; + inline void clear_relativename(); + static const int kRelativeNameFieldNumber = 3; + inline const ::std::string& relativename() const; + inline void set_relativename(const ::std::string& value); + inline void set_relativename(const char* value); + inline void set_relativename(const char* value, size_t size); + inline ::std::string* mutable_relativename(); + inline ::std::string* release_relativename(); + inline void set_allocated_relativename(::std::string* relativename); + + // optional string relativeToName = 4; + inline bool has_relativetoname() const; + inline void clear_relativetoname(); + static const int kRelativeToNameFieldNumber = 4; + inline const ::std::string& relativetoname() const; + inline void set_relativetoname(const ::std::string& value); + inline void set_relativetoname(const char* value); + inline void set_relativetoname(const char* value, size_t size); + inline ::std::string* mutable_relativetoname(); + inline ::std::string* release_relativetoname(); + inline void set_allocated_relativetoname(::std::string* relativetoname); + + // optional int32 align = 5; + inline bool has_align() const; + inline void clear_align(); + static const int kAlignFieldNumber = 5; + inline ::google::protobuf::int32 align() const; + inline void set_align(::google::protobuf::int32 value); + + // optional int32 marginLeft = 6; + inline bool has_marginleft() const; + inline void clear_marginleft(); + static const int kMarginLeftFieldNumber = 6; + inline ::google::protobuf::int32 marginleft() const; + inline void set_marginleft(::google::protobuf::int32 value); + + // optional int32 marginTop = 7; + inline bool has_margintop() const; + inline void clear_margintop(); + static const int kMarginTopFieldNumber = 7; + inline ::google::protobuf::int32 margintop() const; + inline void set_margintop(::google::protobuf::int32 value); + + // optional int32 marginRight = 8; + inline bool has_marginright() const; + inline void clear_marginright(); + static const int kMarginRightFieldNumber = 8; + inline ::google::protobuf::int32 marginright() const; + inline void set_marginright(::google::protobuf::int32 value); + + // optional int32 marginDown = 9; + inline bool has_margindown() const; + inline void clear_margindown(); + static const int kMarginDownFieldNumber = 9; + inline ::google::protobuf::int32 margindown() const; + inline void set_margindown(::google::protobuf::int32 value); + + // optional int32 layoutEageType = 10; + inline bool has_layouteagetype() const; + inline void clear_layouteagetype(); + static const int kLayoutEageTypeFieldNumber = 10; + inline ::google::protobuf::int32 layouteagetype() const; + inline void set_layouteagetype(::google::protobuf::int32 value); + + // optional int32 layoutNormalHorizontal = 11; + inline bool has_layoutnormalhorizontal() const; + inline void clear_layoutnormalhorizontal(); + static const int kLayoutNormalHorizontalFieldNumber = 11; + inline ::google::protobuf::int32 layoutnormalhorizontal() const; + inline void set_layoutnormalhorizontal(::google::protobuf::int32 value); + + // optional int32 layoutNormalVertical = 12; + inline bool has_layoutnormalvertical() const; + inline void clear_layoutnormalvertical(); + static const int kLayoutNormalVerticalFieldNumber = 12; + inline ::google::protobuf::int32 layoutnormalvertical() const; + inline void set_layoutnormalvertical(::google::protobuf::int32 value); + + // optional int32 layoutParentHorizontal = 13; + inline bool has_layoutparenthorizontal() const; + inline void clear_layoutparenthorizontal(); + static const int kLayoutParentHorizontalFieldNumber = 13; + inline ::google::protobuf::int32 layoutparenthorizontal() const; + inline void set_layoutparenthorizontal(::google::protobuf::int32 value); + + // optional int32 layoutParentVertical = 14; + inline bool has_layoutparentvertical() const; + inline void clear_layoutparentvertical(); + static const int kLayoutParentVerticalFieldNumber = 14; + inline ::google::protobuf::int32 layoutparentvertical() const; + inline void set_layoutparentvertical(::google::protobuf::int32 value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.LayoutParameter) + private: + inline void set_has_type(); + inline void clear_has_type(); + inline void set_has_gravity(); + inline void clear_has_gravity(); + inline void set_has_relativename(); + inline void clear_has_relativename(); + inline void set_has_relativetoname(); + inline void clear_has_relativetoname(); + inline void set_has_align(); + inline void clear_has_align(); + inline void set_has_marginleft(); + inline void clear_has_marginleft(); + inline void set_has_margintop(); + inline void clear_has_margintop(); + inline void set_has_marginright(); + inline void clear_has_marginright(); + inline void set_has_margindown(); + inline void clear_has_margindown(); + inline void set_has_layouteagetype(); + inline void clear_has_layouteagetype(); + inline void set_has_layoutnormalhorizontal(); + inline void clear_has_layoutnormalhorizontal(); + inline void set_has_layoutnormalvertical(); + inline void clear_has_layoutnormalvertical(); + inline void set_has_layoutparenthorizontal(); + inline void clear_has_layoutparenthorizontal(); + inline void set_has_layoutparentvertical(); + inline void clear_has_layoutparentvertical(); + + ::google::protobuf::int32 type_; + ::google::protobuf::int32 gravity_; + ::std::string* relativename_; + ::std::string* relativetoname_; + ::google::protobuf::int32 align_; + ::google::protobuf::int32 marginleft_; + ::google::protobuf::int32 margintop_; + ::google::protobuf::int32 marginright_; + ::google::protobuf::int32 margindown_; + ::google::protobuf::int32 layouteagetype_; + ::google::protobuf::int32 layoutnormalhorizontal_; + ::google::protobuf::int32 layoutnormalvertical_; + ::google::protobuf::int32 layoutparenthorizontal_; + ::google::protobuf::int32 layoutparentvertical_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(14 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static LayoutParameter* default_instance_; +}; +// ------------------------------------------------------------------- + +class ButtonOptions : public ::google::protobuf::MessageLite { + public: + ButtonOptions(); + virtual ~ButtonOptions(); + + ButtonOptions(const ButtonOptions& from); + + inline ButtonOptions& operator=(const ButtonOptions& from) { + CopyFrom(from); + return *this; + } + + static const ButtonOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ButtonOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(ButtonOptions* other); + + // implements Message ---------------------------------------------- + + ButtonOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const ButtonOptions& from); + void MergeFrom(const ButtonOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string normal = 3; + inline bool has_normal() const; + inline void clear_normal(); + static const int kNormalFieldNumber = 3; + inline const ::std::string& normal() const; + inline void set_normal(const ::std::string& value); + inline void set_normal(const char* value); + inline void set_normal(const char* value, size_t size); + inline ::std::string* mutable_normal(); + inline ::std::string* release_normal(); + inline void set_allocated_normal(::std::string* normal); + + // optional string pressed = 4; + inline bool has_pressed() const; + inline void clear_pressed(); + static const int kPressedFieldNumber = 4; + inline const ::std::string& pressed() const; + inline void set_pressed(const ::std::string& value); + inline void set_pressed(const char* value); + inline void set_pressed(const char* value, size_t size); + inline ::std::string* mutable_pressed(); + inline ::std::string* release_pressed(); + inline void set_allocated_pressed(::std::string* pressed); + + // optional string disabled = 5; + inline bool has_disabled() const; + inline void clear_disabled(); + static const int kDisabledFieldNumber = 5; + inline const ::std::string& disabled() const; + inline void set_disabled(const ::std::string& value); + inline void set_disabled(const char* value); + inline void set_disabled(const char* value, size_t size); + inline ::std::string* mutable_disabled(); + inline ::std::string* release_disabled(); + inline void set_allocated_disabled(::std::string* disabled); + + // optional .protocolbuffers.ResourceData normalData = 6; + inline bool has_normaldata() const; + inline void clear_normaldata(); + static const int kNormalDataFieldNumber = 6; + inline const ::protocolbuffers::ResourceData& normaldata() const; + inline ::protocolbuffers::ResourceData* mutable_normaldata(); + inline ::protocolbuffers::ResourceData* release_normaldata(); + inline void set_allocated_normaldata(::protocolbuffers::ResourceData* normaldata); + + // optional .protocolbuffers.ResourceData pressedData = 7; + inline bool has_presseddata() const; + inline void clear_presseddata(); + static const int kPressedDataFieldNumber = 7; + inline const ::protocolbuffers::ResourceData& presseddata() const; + inline ::protocolbuffers::ResourceData* mutable_presseddata(); + inline ::protocolbuffers::ResourceData* release_presseddata(); + inline void set_allocated_presseddata(::protocolbuffers::ResourceData* presseddata); + + // optional .protocolbuffers.ResourceData disabledData = 8; + inline bool has_disableddata() const; + inline void clear_disableddata(); + static const int kDisabledDataFieldNumber = 8; + inline const ::protocolbuffers::ResourceData& disableddata() const; + inline ::protocolbuffers::ResourceData* mutable_disableddata(); + inline ::protocolbuffers::ResourceData* release_disableddata(); + inline void set_allocated_disableddata(::protocolbuffers::ResourceData* disableddata); + + // optional string text = 9; + inline bool has_text() const; + inline void clear_text(); + static const int kTextFieldNumber = 9; + inline const ::std::string& text() const; + inline void set_text(const ::std::string& value); + inline void set_text(const char* value); + inline void set_text(const char* value, size_t size); + inline ::std::string* mutable_text(); + inline ::std::string* release_text(); + inline void set_allocated_text(::std::string* text); + + // optional string fontName = 10; + inline bool has_fontname() const; + inline void clear_fontname(); + static const int kFontNameFieldNumber = 10; + inline const ::std::string& fontname() const; + inline void set_fontname(const ::std::string& value); + inline void set_fontname(const char* value); + inline void set_fontname(const char* value, size_t size); + inline ::std::string* mutable_fontname(); + inline ::std::string* release_fontname(); + inline void set_allocated_fontname(::std::string* fontname); + + // optional int32 fontSize = 11; + inline bool has_fontsize() const; + inline void clear_fontsize(); + static const int kFontSizeFieldNumber = 11; + inline ::google::protobuf::int32 fontsize() const; + inline void set_fontsize(::google::protobuf::int32 value); + + // optional int32 textColorR = 12; + inline bool has_textcolorr() const; + inline void clear_textcolorr(); + static const int kTextColorRFieldNumber = 12; + inline ::google::protobuf::int32 textcolorr() const; + inline void set_textcolorr(::google::protobuf::int32 value); + + // optional int32 textColorG = 13; + inline bool has_textcolorg() const; + inline void clear_textcolorg(); + static const int kTextColorGFieldNumber = 13; + inline ::google::protobuf::int32 textcolorg() const; + inline void set_textcolorg(::google::protobuf::int32 value); + + // optional int32 textColorB = 14; + inline bool has_textcolorb() const; + inline void clear_textcolorb(); + static const int kTextColorBFieldNumber = 14; + inline ::google::protobuf::int32 textcolorb() const; + inline void set_textcolorb(::google::protobuf::int32 value); + + // optional float capInsetsX = 15; + inline bool has_capinsetsx() const; + inline void clear_capinsetsx(); + static const int kCapInsetsXFieldNumber = 15; + inline float capinsetsx() const; + inline void set_capinsetsx(float value); + + // optional float capInsetsY = 16; + inline bool has_capinsetsy() const; + inline void clear_capinsetsy(); + static const int kCapInsetsYFieldNumber = 16; + inline float capinsetsy() const; + inline void set_capinsetsy(float value); + + // optional float capInsetsWidth = 17; + inline bool has_capinsetswidth() const; + inline void clear_capinsetswidth(); + static const int kCapInsetsWidthFieldNumber = 17; + inline float capinsetswidth() const; + inline void set_capinsetswidth(float value); + + // optional float capInsetsHeight = 18; + inline bool has_capinsetsheight() const; + inline void clear_capinsetsheight(); + static const int kCapInsetsHeightFieldNumber = 18; + inline float capinsetsheight() const; + inline void set_capinsetsheight(float value); + + // optional float scale9Width = 19; + inline bool has_scale9width() const; + inline void clear_scale9width(); + static const int kScale9WidthFieldNumber = 19; + inline float scale9width() const; + inline void set_scale9width(float value); + + // optional float scale9Height = 20; + inline bool has_scale9height() const; + inline void clear_scale9height(); + static const int kScale9HeightFieldNumber = 20; + inline float scale9height() const; + inline void set_scale9height(float value); + + // optional bool scale9Enable = 21; + inline bool has_scale9enable() const; + inline void clear_scale9enable(); + static const int kScale9EnableFieldNumber = 21; + inline bool scale9enable() const; + inline void set_scale9enable(bool value); + + // optional bool displaystate = 22; + inline bool has_displaystate() const; + inline void clear_displaystate(); + static const int kDisplaystateFieldNumber = 22; + inline bool displaystate() const; + inline void set_displaystate(bool value); + + // optional .protocolbuffers.ResourceData fontResource = 23; + inline bool has_fontresource() const; + inline void clear_fontresource(); + static const int kFontResourceFieldNumber = 23; + inline const ::protocolbuffers::ResourceData& fontresource() const; + inline ::protocolbuffers::ResourceData* mutable_fontresource(); + inline ::protocolbuffers::ResourceData* release_fontresource(); + inline void set_allocated_fontresource(::protocolbuffers::ResourceData* fontresource); + + // @@protoc_insertion_point(class_scope:protocolbuffers.ButtonOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_normal(); + inline void clear_has_normal(); + inline void set_has_pressed(); + inline void clear_has_pressed(); + inline void set_has_disabled(); + inline void clear_has_disabled(); + inline void set_has_normaldata(); + inline void clear_has_normaldata(); + inline void set_has_presseddata(); + inline void clear_has_presseddata(); + inline void set_has_disableddata(); + inline void clear_has_disableddata(); + inline void set_has_text(); + inline void clear_has_text(); + inline void set_has_fontname(); + inline void clear_has_fontname(); + inline void set_has_fontsize(); + inline void clear_has_fontsize(); + inline void set_has_textcolorr(); + inline void clear_has_textcolorr(); + inline void set_has_textcolorg(); + inline void clear_has_textcolorg(); + inline void set_has_textcolorb(); + inline void clear_has_textcolorb(); + inline void set_has_capinsetsx(); + inline void clear_has_capinsetsx(); + inline void set_has_capinsetsy(); + inline void clear_has_capinsetsy(); + inline void set_has_capinsetswidth(); + inline void clear_has_capinsetswidth(); + inline void set_has_capinsetsheight(); + inline void clear_has_capinsetsheight(); + inline void set_has_scale9width(); + inline void clear_has_scale9width(); + inline void set_has_scale9height(); + inline void clear_has_scale9height(); + inline void set_has_scale9enable(); + inline void clear_has_scale9enable(); + inline void set_has_displaystate(); + inline void clear_has_displaystate(); + inline void set_has_fontresource(); + inline void clear_has_fontresource(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* normal_; + ::std::string* pressed_; + ::std::string* disabled_; + ::protocolbuffers::ResourceData* normaldata_; + ::protocolbuffers::ResourceData* presseddata_; + ::protocolbuffers::ResourceData* disableddata_; + ::std::string* text_; + ::std::string* fontname_; + ::google::protobuf::int32 fontsize_; + ::google::protobuf::int32 textcolorr_; + ::google::protobuf::int32 textcolorg_; + ::google::protobuf::int32 textcolorb_; + float capinsetsx_; + float capinsetsy_; + float capinsetswidth_; + float capinsetsheight_; + float scale9width_; + float scale9height_; + ::protocolbuffers::ResourceData* fontresource_; + bool scale9enable_; + bool displaystate_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(23 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static ButtonOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class ResourceData : public ::google::protobuf::MessageLite { + public: + ResourceData(); + virtual ~ResourceData(); + + ResourceData(const ResourceData& from); + + inline ResourceData& operator=(const ResourceData& from) { + CopyFrom(from); + return *this; + } + + static const ResourceData& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ResourceData* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(ResourceData* other); + + // implements Message ---------------------------------------------- + + ResourceData* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const ResourceData& from); + void MergeFrom(const ResourceData& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string path = 1; + inline bool has_path() const; + inline void clear_path(); + static const int kPathFieldNumber = 1; + inline const ::std::string& path() const; + inline void set_path(const ::std::string& value); + inline void set_path(const char* value); + inline void set_path(const char* value, size_t size); + inline ::std::string* mutable_path(); + inline ::std::string* release_path(); + inline void set_allocated_path(::std::string* path); + + // optional string plistFile = 2; + inline bool has_plistfile() const; + inline void clear_plistfile(); + static const int kPlistFileFieldNumber = 2; + inline const ::std::string& plistfile() const; + inline void set_plistfile(const ::std::string& value); + inline void set_plistfile(const char* value); + inline void set_plistfile(const char* value, size_t size); + inline ::std::string* mutable_plistfile(); + inline ::std::string* release_plistfile(); + inline void set_allocated_plistfile(::std::string* plistfile); + + // optional int32 resourceType = 3; + inline bool has_resourcetype() const; + inline void clear_resourcetype(); + static const int kResourceTypeFieldNumber = 3; + inline ::google::protobuf::int32 resourcetype() const; + inline void set_resourcetype(::google::protobuf::int32 value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.ResourceData) + private: + inline void set_has_path(); + inline void clear_has_path(); + inline void set_has_plistfile(); + inline void clear_has_plistfile(); + inline void set_has_resourcetype(); + inline void clear_has_resourcetype(); + + ::std::string* path_; + ::std::string* plistfile_; + ::google::protobuf::int32 resourcetype_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static ResourceData* default_instance_; +}; +// ------------------------------------------------------------------- + +class CheckBoxOptions : public ::google::protobuf::MessageLite { + public: + CheckBoxOptions(); + virtual ~CheckBoxOptions(); + + CheckBoxOptions(const CheckBoxOptions& from); + + inline CheckBoxOptions& operator=(const CheckBoxOptions& from) { + CopyFrom(from); + return *this; + } + + static const CheckBoxOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const CheckBoxOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(CheckBoxOptions* other); + + // implements Message ---------------------------------------------- + + CheckBoxOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const CheckBoxOptions& from); + void MergeFrom(const CheckBoxOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string backGroundBox = 3; + inline bool has_backgroundbox() const; + inline void clear_backgroundbox(); + static const int kBackGroundBoxFieldNumber = 3; + inline const ::std::string& backgroundbox() const; + inline void set_backgroundbox(const ::std::string& value); + inline void set_backgroundbox(const char* value); + inline void set_backgroundbox(const char* value, size_t size); + inline ::std::string* mutable_backgroundbox(); + inline ::std::string* release_backgroundbox(); + inline void set_allocated_backgroundbox(::std::string* backgroundbox); + + // optional string backGroundBoxSelected = 4; + inline bool has_backgroundboxselected() const; + inline void clear_backgroundboxselected(); + static const int kBackGroundBoxSelectedFieldNumber = 4; + inline const ::std::string& backgroundboxselected() const; + inline void set_backgroundboxselected(const ::std::string& value); + inline void set_backgroundboxselected(const char* value); + inline void set_backgroundboxselected(const char* value, size_t size); + inline ::std::string* mutable_backgroundboxselected(); + inline ::std::string* release_backgroundboxselected(); + inline void set_allocated_backgroundboxselected(::std::string* backgroundboxselected); + + // optional string backGroundBoxDisabled = 5; + inline bool has_backgroundboxdisabled() const; + inline void clear_backgroundboxdisabled(); + static const int kBackGroundBoxDisabledFieldNumber = 5; + inline const ::std::string& backgroundboxdisabled() const; + inline void set_backgroundboxdisabled(const ::std::string& value); + inline void set_backgroundboxdisabled(const char* value); + inline void set_backgroundboxdisabled(const char* value, size_t size); + inline ::std::string* mutable_backgroundboxdisabled(); + inline ::std::string* release_backgroundboxdisabled(); + inline void set_allocated_backgroundboxdisabled(::std::string* backgroundboxdisabled); + + // optional string frontCross = 6; + inline bool has_frontcross() const; + inline void clear_frontcross(); + static const int kFrontCrossFieldNumber = 6; + inline const ::std::string& frontcross() const; + inline void set_frontcross(const ::std::string& value); + inline void set_frontcross(const char* value); + inline void set_frontcross(const char* value, size_t size); + inline ::std::string* mutable_frontcross(); + inline ::std::string* release_frontcross(); + inline void set_allocated_frontcross(::std::string* frontcross); + + // optional string frontCrossDisabled = 7; + inline bool has_frontcrossdisabled() const; + inline void clear_frontcrossdisabled(); + static const int kFrontCrossDisabledFieldNumber = 7; + inline const ::std::string& frontcrossdisabled() const; + inline void set_frontcrossdisabled(const ::std::string& value); + inline void set_frontcrossdisabled(const char* value); + inline void set_frontcrossdisabled(const char* value, size_t size); + inline ::std::string* mutable_frontcrossdisabled(); + inline ::std::string* release_frontcrossdisabled(); + inline void set_allocated_frontcrossdisabled(::std::string* frontcrossdisabled); + + // optional .protocolbuffers.ResourceData backGroundBoxData = 8; + inline bool has_backgroundboxdata() const; + inline void clear_backgroundboxdata(); + static const int kBackGroundBoxDataFieldNumber = 8; + inline const ::protocolbuffers::ResourceData& backgroundboxdata() const; + inline ::protocolbuffers::ResourceData* mutable_backgroundboxdata(); + inline ::protocolbuffers::ResourceData* release_backgroundboxdata(); + inline void set_allocated_backgroundboxdata(::protocolbuffers::ResourceData* backgroundboxdata); + + // optional .protocolbuffers.ResourceData backGroundBoxSelectedData = 9; + inline bool has_backgroundboxselecteddata() const; + inline void clear_backgroundboxselecteddata(); + static const int kBackGroundBoxSelectedDataFieldNumber = 9; + inline const ::protocolbuffers::ResourceData& backgroundboxselecteddata() const; + inline ::protocolbuffers::ResourceData* mutable_backgroundboxselecteddata(); + inline ::protocolbuffers::ResourceData* release_backgroundboxselecteddata(); + inline void set_allocated_backgroundboxselecteddata(::protocolbuffers::ResourceData* backgroundboxselecteddata); + + // optional .protocolbuffers.ResourceData frontCrossData = 10; + inline bool has_frontcrossdata() const; + inline void clear_frontcrossdata(); + static const int kFrontCrossDataFieldNumber = 10; + inline const ::protocolbuffers::ResourceData& frontcrossdata() const; + inline ::protocolbuffers::ResourceData* mutable_frontcrossdata(); + inline ::protocolbuffers::ResourceData* release_frontcrossdata(); + inline void set_allocated_frontcrossdata(::protocolbuffers::ResourceData* frontcrossdata); + + // optional .protocolbuffers.ResourceData backGroundBoxDisabledData = 11; + inline bool has_backgroundboxdisableddata() const; + inline void clear_backgroundboxdisableddata(); + static const int kBackGroundBoxDisabledDataFieldNumber = 11; + inline const ::protocolbuffers::ResourceData& backgroundboxdisableddata() const; + inline ::protocolbuffers::ResourceData* mutable_backgroundboxdisableddata(); + inline ::protocolbuffers::ResourceData* release_backgroundboxdisableddata(); + inline void set_allocated_backgroundboxdisableddata(::protocolbuffers::ResourceData* backgroundboxdisableddata); + + // optional .protocolbuffers.ResourceData frontCrossDisabledData = 12; + inline bool has_frontcrossdisableddata() const; + inline void clear_frontcrossdisableddata(); + static const int kFrontCrossDisabledDataFieldNumber = 12; + inline const ::protocolbuffers::ResourceData& frontcrossdisableddata() const; + inline ::protocolbuffers::ResourceData* mutable_frontcrossdisableddata(); + inline ::protocolbuffers::ResourceData* release_frontcrossdisableddata(); + inline void set_allocated_frontcrossdisableddata(::protocolbuffers::ResourceData* frontcrossdisableddata); + + // optional bool selectedState = 13; + inline bool has_selectedstate() const; + inline void clear_selectedstate(); + static const int kSelectedStateFieldNumber = 13; + inline bool selectedstate() const; + inline void set_selectedstate(bool value); + + // optional bool displaystate = 14; + inline bool has_displaystate() const; + inline void clear_displaystate(); + static const int kDisplaystateFieldNumber = 14; + inline bool displaystate() const; + inline void set_displaystate(bool value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.CheckBoxOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_backgroundbox(); + inline void clear_has_backgroundbox(); + inline void set_has_backgroundboxselected(); + inline void clear_has_backgroundboxselected(); + inline void set_has_backgroundboxdisabled(); + inline void clear_has_backgroundboxdisabled(); + inline void set_has_frontcross(); + inline void clear_has_frontcross(); + inline void set_has_frontcrossdisabled(); + inline void clear_has_frontcrossdisabled(); + inline void set_has_backgroundboxdata(); + inline void clear_has_backgroundboxdata(); + inline void set_has_backgroundboxselecteddata(); + inline void clear_has_backgroundboxselecteddata(); + inline void set_has_frontcrossdata(); + inline void clear_has_frontcrossdata(); + inline void set_has_backgroundboxdisableddata(); + inline void clear_has_backgroundboxdisableddata(); + inline void set_has_frontcrossdisableddata(); + inline void clear_has_frontcrossdisableddata(); + inline void set_has_selectedstate(); + inline void clear_has_selectedstate(); + inline void set_has_displaystate(); + inline void clear_has_displaystate(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* backgroundbox_; + ::std::string* backgroundboxselected_; + ::std::string* backgroundboxdisabled_; + ::std::string* frontcross_; + ::std::string* frontcrossdisabled_; + ::protocolbuffers::ResourceData* backgroundboxdata_; + ::protocolbuffers::ResourceData* backgroundboxselecteddata_; + ::protocolbuffers::ResourceData* frontcrossdata_; + ::protocolbuffers::ResourceData* backgroundboxdisableddata_; + ::protocolbuffers::ResourceData* frontcrossdisableddata_; + bool selectedstate_; + bool displaystate_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(14 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static CheckBoxOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class ImageViewOptions : public ::google::protobuf::MessageLite { + public: + ImageViewOptions(); + virtual ~ImageViewOptions(); + + ImageViewOptions(const ImageViewOptions& from); + + inline ImageViewOptions& operator=(const ImageViewOptions& from) { + CopyFrom(from); + return *this; + } + + static const ImageViewOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ImageViewOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(ImageViewOptions* other); + + // implements Message ---------------------------------------------- + + ImageViewOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const ImageViewOptions& from); + void MergeFrom(const ImageViewOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string fileName = 3; + inline bool has_filename() const; + inline void clear_filename(); + static const int kFileNameFieldNumber = 3; + inline const ::std::string& filename() const; + inline void set_filename(const ::std::string& value); + inline void set_filename(const char* value); + inline void set_filename(const char* value, size_t size); + inline ::std::string* mutable_filename(); + inline ::std::string* release_filename(); + inline void set_allocated_filename(::std::string* filename); + + // optional .protocolbuffers.ResourceData fileNameData = 4; + inline bool has_filenamedata() const; + inline void clear_filenamedata(); + static const int kFileNameDataFieldNumber = 4; + inline const ::protocolbuffers::ResourceData& filenamedata() const; + inline ::protocolbuffers::ResourceData* mutable_filenamedata(); + inline ::protocolbuffers::ResourceData* release_filenamedata(); + inline void set_allocated_filenamedata(::protocolbuffers::ResourceData* filenamedata); + + // optional float capInsetsX = 5; + inline bool has_capinsetsx() const; + inline void clear_capinsetsx(); + static const int kCapInsetsXFieldNumber = 5; + inline float capinsetsx() const; + inline void set_capinsetsx(float value); + + // optional float capInsetsY = 6; + inline bool has_capinsetsy() const; + inline void clear_capinsetsy(); + static const int kCapInsetsYFieldNumber = 6; + inline float capinsetsy() const; + inline void set_capinsetsy(float value); + + // optional float capInsetsHeight = 7; + inline bool has_capinsetsheight() const; + inline void clear_capinsetsheight(); + static const int kCapInsetsHeightFieldNumber = 7; + inline float capinsetsheight() const; + inline void set_capinsetsheight(float value); + + // optional float capInsetsWidth = 8; + inline bool has_capinsetswidth() const; + inline void clear_capinsetswidth(); + static const int kCapInsetsWidthFieldNumber = 8; + inline float capinsetswidth() const; + inline void set_capinsetswidth(float value); + + // optional float scale9Width = 9; + inline bool has_scale9width() const; + inline void clear_scale9width(); + static const int kScale9WidthFieldNumber = 9; + inline float scale9width() const; + inline void set_scale9width(float value); + + // optional float scale9Height = 10; + inline bool has_scale9height() const; + inline void clear_scale9height(); + static const int kScale9HeightFieldNumber = 10; + inline float scale9height() const; + inline void set_scale9height(float value); + + // optional bool scale9Enable = 11; + inline bool has_scale9enable() const; + inline void clear_scale9enable(); + static const int kScale9EnableFieldNumber = 11; + inline bool scale9enable() const; + inline void set_scale9enable(bool value); + + // optional bool flippedX = 12; + inline bool has_flippedx() const; + inline void clear_flippedx(); + static const int kFlippedXFieldNumber = 12; + inline bool flippedx() const; + inline void set_flippedx(bool value); + + // optional bool flippedY = 13; + inline bool has_flippedy() const; + inline void clear_flippedy(); + static const int kFlippedYFieldNumber = 13; + inline bool flippedy() const; + inline void set_flippedy(bool value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.ImageViewOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_filename(); + inline void clear_has_filename(); + inline void set_has_filenamedata(); + inline void clear_has_filenamedata(); + inline void set_has_capinsetsx(); + inline void clear_has_capinsetsx(); + inline void set_has_capinsetsy(); + inline void clear_has_capinsetsy(); + inline void set_has_capinsetsheight(); + inline void clear_has_capinsetsheight(); + inline void set_has_capinsetswidth(); + inline void clear_has_capinsetswidth(); + inline void set_has_scale9width(); + inline void clear_has_scale9width(); + inline void set_has_scale9height(); + inline void clear_has_scale9height(); + inline void set_has_scale9enable(); + inline void clear_has_scale9enable(); + inline void set_has_flippedx(); + inline void clear_has_flippedx(); + inline void set_has_flippedy(); + inline void clear_has_flippedy(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* filename_; + ::protocolbuffers::ResourceData* filenamedata_; + float capinsetsx_; + float capinsetsy_; + float capinsetsheight_; + float capinsetswidth_; + float scale9width_; + float scale9height_; + bool scale9enable_; + bool flippedx_; + bool flippedy_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(13 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static ImageViewOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class TextAtlasOptions : public ::google::protobuf::MessageLite { + public: + TextAtlasOptions(); + virtual ~TextAtlasOptions(); + + TextAtlasOptions(const TextAtlasOptions& from); + + inline TextAtlasOptions& operator=(const TextAtlasOptions& from) { + CopyFrom(from); + return *this; + } + + static const TextAtlasOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const TextAtlasOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(TextAtlasOptions* other); + + // implements Message ---------------------------------------------- + + TextAtlasOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const TextAtlasOptions& from); + void MergeFrom(const TextAtlasOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string stringValue = 3; + inline bool has_stringvalue() const; + inline void clear_stringvalue(); + static const int kStringValueFieldNumber = 3; + inline const ::std::string& stringvalue() const; + inline void set_stringvalue(const ::std::string& value); + inline void set_stringvalue(const char* value); + inline void set_stringvalue(const char* value, size_t size); + inline ::std::string* mutable_stringvalue(); + inline ::std::string* release_stringvalue(); + inline void set_allocated_stringvalue(::std::string* stringvalue); + + // optional string charMapFile = 4; + inline bool has_charmapfile() const; + inline void clear_charmapfile(); + static const int kCharMapFileFieldNumber = 4; + inline const ::std::string& charmapfile() const; + inline void set_charmapfile(const ::std::string& value); + inline void set_charmapfile(const char* value); + inline void set_charmapfile(const char* value, size_t size); + inline ::std::string* mutable_charmapfile(); + inline ::std::string* release_charmapfile(); + inline void set_allocated_charmapfile(::std::string* charmapfile); + + // optional .protocolbuffers.ResourceData charMapFileData = 5; + inline bool has_charmapfiledata() const; + inline void clear_charmapfiledata(); + static const int kCharMapFileDataFieldNumber = 5; + inline const ::protocolbuffers::ResourceData& charmapfiledata() const; + inline ::protocolbuffers::ResourceData* mutable_charmapfiledata(); + inline ::protocolbuffers::ResourceData* release_charmapfiledata(); + inline void set_allocated_charmapfiledata(::protocolbuffers::ResourceData* charmapfiledata); + + // optional string startCharMap = 6; + inline bool has_startcharmap() const; + inline void clear_startcharmap(); + static const int kStartCharMapFieldNumber = 6; + inline const ::std::string& startcharmap() const; + inline void set_startcharmap(const ::std::string& value); + inline void set_startcharmap(const char* value); + inline void set_startcharmap(const char* value, size_t size); + inline ::std::string* mutable_startcharmap(); + inline ::std::string* release_startcharmap(); + inline void set_allocated_startcharmap(::std::string* startcharmap); + + // optional int32 itemWidth = 7; + inline bool has_itemwidth() const; + inline void clear_itemwidth(); + static const int kItemWidthFieldNumber = 7; + inline ::google::protobuf::int32 itemwidth() const; + inline void set_itemwidth(::google::protobuf::int32 value); + + // optional int32 itemHeight = 8; + inline bool has_itemheight() const; + inline void clear_itemheight(); + static const int kItemHeightFieldNumber = 8; + inline ::google::protobuf::int32 itemheight() const; + inline void set_itemheight(::google::protobuf::int32 value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.TextAtlasOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_stringvalue(); + inline void clear_has_stringvalue(); + inline void set_has_charmapfile(); + inline void clear_has_charmapfile(); + inline void set_has_charmapfiledata(); + inline void clear_has_charmapfiledata(); + inline void set_has_startcharmap(); + inline void clear_has_startcharmap(); + inline void set_has_itemwidth(); + inline void clear_has_itemwidth(); + inline void set_has_itemheight(); + inline void clear_has_itemheight(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* stringvalue_; + ::std::string* charmapfile_; + ::protocolbuffers::ResourceData* charmapfiledata_; + ::std::string* startcharmap_; + ::google::protobuf::int32 itemwidth_; + ::google::protobuf::int32 itemheight_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static TextAtlasOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class TextBMFontOptions : public ::google::protobuf::MessageLite { + public: + TextBMFontOptions(); + virtual ~TextBMFontOptions(); + + TextBMFontOptions(const TextBMFontOptions& from); + + inline TextBMFontOptions& operator=(const TextBMFontOptions& from) { + CopyFrom(from); + return *this; + } + + static const TextBMFontOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const TextBMFontOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(TextBMFontOptions* other); + + // implements Message ---------------------------------------------- + + TextBMFontOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const TextBMFontOptions& from); + void MergeFrom(const TextBMFontOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string text = 3; + inline bool has_text() const; + inline void clear_text(); + static const int kTextFieldNumber = 3; + inline const ::std::string& text() const; + inline void set_text(const ::std::string& value); + inline void set_text(const char* value); + inline void set_text(const char* value, size_t size); + inline ::std::string* mutable_text(); + inline ::std::string* release_text(); + inline void set_allocated_text(::std::string* text); + + // optional .protocolbuffers.ResourceData fileNameData = 4; + inline bool has_filenamedata() const; + inline void clear_filenamedata(); + static const int kFileNameDataFieldNumber = 4; + inline const ::protocolbuffers::ResourceData& filenamedata() const; + inline ::protocolbuffers::ResourceData* mutable_filenamedata(); + inline ::protocolbuffers::ResourceData* release_filenamedata(); + inline void set_allocated_filenamedata(::protocolbuffers::ResourceData* filenamedata); + + // @@protoc_insertion_point(class_scope:protocolbuffers.TextBMFontOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_text(); + inline void clear_has_text(); + inline void set_has_filenamedata(); + inline void clear_has_filenamedata(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* text_; + ::protocolbuffers::ResourceData* filenamedata_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static TextBMFontOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class TextOptions : public ::google::protobuf::MessageLite { + public: + TextOptions(); + virtual ~TextOptions(); + + TextOptions(const TextOptions& from); + + inline TextOptions& operator=(const TextOptions& from) { + CopyFrom(from); + return *this; + } + + static const TextOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const TextOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(TextOptions* other); + + // implements Message ---------------------------------------------- + + TextOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const TextOptions& from); + void MergeFrom(const TextOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string fontName = 3; + inline bool has_fontname() const; + inline void clear_fontname(); + static const int kFontNameFieldNumber = 3; + inline const ::std::string& fontname() const; + inline void set_fontname(const ::std::string& value); + inline void set_fontname(const char* value); + inline void set_fontname(const char* value, size_t size); + inline ::std::string* mutable_fontname(); + inline ::std::string* release_fontname(); + inline void set_allocated_fontname(::std::string* fontname); + + // optional .protocolbuffers.ResourceData fontFile = 4; + inline bool has_fontfile() const; + inline void clear_fontfile(); + static const int kFontFileFieldNumber = 4; + inline const ::protocolbuffers::ResourceData& fontfile() const; + inline ::protocolbuffers::ResourceData* mutable_fontfile(); + inline ::protocolbuffers::ResourceData* release_fontfile(); + inline void set_allocated_fontfile(::protocolbuffers::ResourceData* fontfile); + + // optional int32 fontSize = 5; + inline bool has_fontsize() const; + inline void clear_fontsize(); + static const int kFontSizeFieldNumber = 5; + inline ::google::protobuf::int32 fontsize() const; + inline void set_fontsize(::google::protobuf::int32 value); + + // optional string text = 6; + inline bool has_text() const; + inline void clear_text(); + static const int kTextFieldNumber = 6; + inline const ::std::string& text() const; + inline void set_text(const ::std::string& value); + inline void set_text(const char* value); + inline void set_text(const char* value, size_t size); + inline ::std::string* mutable_text(); + inline ::std::string* release_text(); + inline void set_allocated_text(::std::string* text); + + // optional float areaWidth = 7; + inline bool has_areawidth() const; + inline void clear_areawidth(); + static const int kAreaWidthFieldNumber = 7; + inline float areawidth() const; + inline void set_areawidth(float value); + + // optional float areaHeight = 8; + inline bool has_areaheight() const; + inline void clear_areaheight(); + static const int kAreaHeightFieldNumber = 8; + inline float areaheight() const; + inline void set_areaheight(float value); + + // optional int32 hAlignment = 9; + inline bool has_halignment() const; + inline void clear_halignment(); + static const int kHAlignmentFieldNumber = 9; + inline ::google::protobuf::int32 halignment() const; + inline void set_halignment(::google::protobuf::int32 value); + + // optional int32 vAlignment = 10; + inline bool has_valignment() const; + inline void clear_valignment(); + static const int kVAlignmentFieldNumber = 10; + inline ::google::protobuf::int32 valignment() const; + inline void set_valignment(::google::protobuf::int32 value); + + // optional bool touchScaleEnable = 11; + inline bool has_touchscaleenable() const; + inline void clear_touchscaleenable(); + static const int kTouchScaleEnableFieldNumber = 11; + inline bool touchscaleenable() const; + inline void set_touchscaleenable(bool value); + + // optional .protocolbuffers.ResourceData fontResource = 12; + inline bool has_fontresource() const; + inline void clear_fontresource(); + static const int kFontResourceFieldNumber = 12; + inline const ::protocolbuffers::ResourceData& fontresource() const; + inline ::protocolbuffers::ResourceData* mutable_fontresource(); + inline ::protocolbuffers::ResourceData* release_fontresource(); + inline void set_allocated_fontresource(::protocolbuffers::ResourceData* fontresource); + + // optional bool IsCustomSize = 13; + inline bool has_iscustomsize() const; + inline void clear_iscustomsize(); + static const int kIsCustomSizeFieldNumber = 13; + inline bool iscustomsize() const; + inline void set_iscustomsize(bool value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.TextOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_fontname(); + inline void clear_has_fontname(); + inline void set_has_fontfile(); + inline void clear_has_fontfile(); + inline void set_has_fontsize(); + inline void clear_has_fontsize(); + inline void set_has_text(); + inline void clear_has_text(); + inline void set_has_areawidth(); + inline void clear_has_areawidth(); + inline void set_has_areaheight(); + inline void clear_has_areaheight(); + inline void set_has_halignment(); + inline void clear_has_halignment(); + inline void set_has_valignment(); + inline void clear_has_valignment(); + inline void set_has_touchscaleenable(); + inline void clear_has_touchscaleenable(); + inline void set_has_fontresource(); + inline void clear_has_fontresource(); + inline void set_has_iscustomsize(); + inline void clear_has_iscustomsize(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* fontname_; + ::protocolbuffers::ResourceData* fontfile_; + ::std::string* text_; + ::google::protobuf::int32 fontsize_; + float areawidth_; + float areaheight_; + ::google::protobuf::int32 halignment_; + ::google::protobuf::int32 valignment_; + bool touchscaleenable_; + bool iscustomsize_; + ::protocolbuffers::ResourceData* fontresource_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(13 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static TextOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class LoadingBarOptions : public ::google::protobuf::MessageLite { + public: + LoadingBarOptions(); + virtual ~LoadingBarOptions(); + + LoadingBarOptions(const LoadingBarOptions& from); + + inline LoadingBarOptions& operator=(const LoadingBarOptions& from) { + CopyFrom(from); + return *this; + } + + static const LoadingBarOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const LoadingBarOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(LoadingBarOptions* other); + + // implements Message ---------------------------------------------- + + LoadingBarOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const LoadingBarOptions& from); + void MergeFrom(const LoadingBarOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string texture = 3; + inline bool has_texture() const; + inline void clear_texture(); + static const int kTextureFieldNumber = 3; + inline const ::std::string& texture() const; + inline void set_texture(const ::std::string& value); + inline void set_texture(const char* value); + inline void set_texture(const char* value, size_t size); + inline ::std::string* mutable_texture(); + inline ::std::string* release_texture(); + inline void set_allocated_texture(::std::string* texture); + + // optional .protocolbuffers.ResourceData textureData = 4; + inline bool has_texturedata() const; + inline void clear_texturedata(); + static const int kTextureDataFieldNumber = 4; + inline const ::protocolbuffers::ResourceData& texturedata() const; + inline ::protocolbuffers::ResourceData* mutable_texturedata(); + inline ::protocolbuffers::ResourceData* release_texturedata(); + inline void set_allocated_texturedata(::protocolbuffers::ResourceData* texturedata); + + // optional int32 percent = 5; + inline bool has_percent() const; + inline void clear_percent(); + static const int kPercentFieldNumber = 5; + inline ::google::protobuf::int32 percent() const; + inline void set_percent(::google::protobuf::int32 value); + + // optional int32 direction = 6; + inline bool has_direction() const; + inline void clear_direction(); + static const int kDirectionFieldNumber = 6; + inline ::google::protobuf::int32 direction() const; + inline void set_direction(::google::protobuf::int32 value); + + // optional float capInsetsX = 7; + inline bool has_capinsetsx() const; + inline void clear_capinsetsx(); + static const int kCapInsetsXFieldNumber = 7; + inline float capinsetsx() const; + inline void set_capinsetsx(float value); + + // optional float capInsetsY = 8; + inline bool has_capinsetsy() const; + inline void clear_capinsetsy(); + static const int kCapInsetsYFieldNumber = 8; + inline float capinsetsy() const; + inline void set_capinsetsy(float value); + + // optional float capInsetsWidth = 9; + inline bool has_capinsetswidth() const; + inline void clear_capinsetswidth(); + static const int kCapInsetsWidthFieldNumber = 9; + inline float capinsetswidth() const; + inline void set_capinsetswidth(float value); + + // optional float capInsetsHeight = 10; + inline bool has_capinsetsheight() const; + inline void clear_capinsetsheight(); + static const int kCapInsetsHeightFieldNumber = 10; + inline float capinsetsheight() const; + inline void set_capinsetsheight(float value); + + // optional bool scale9Enable = 11; + inline bool has_scale9enable() const; + inline void clear_scale9enable(); + static const int kScale9EnableFieldNumber = 11; + inline bool scale9enable() const; + inline void set_scale9enable(bool value); + + // optional float scale9Width = 12; + inline bool has_scale9width() const; + inline void clear_scale9width(); + static const int kScale9WidthFieldNumber = 12; + inline float scale9width() const; + inline void set_scale9width(float value); + + // optional float scale9Height = 13; + inline bool has_scale9height() const; + inline void clear_scale9height(); + static const int kScale9HeightFieldNumber = 13; + inline float scale9height() const; + inline void set_scale9height(float value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.LoadingBarOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_texture(); + inline void clear_has_texture(); + inline void set_has_texturedata(); + inline void clear_has_texturedata(); + inline void set_has_percent(); + inline void clear_has_percent(); + inline void set_has_direction(); + inline void clear_has_direction(); + inline void set_has_capinsetsx(); + inline void clear_has_capinsetsx(); + inline void set_has_capinsetsy(); + inline void clear_has_capinsetsy(); + inline void set_has_capinsetswidth(); + inline void clear_has_capinsetswidth(); + inline void set_has_capinsetsheight(); + inline void clear_has_capinsetsheight(); + inline void set_has_scale9enable(); + inline void clear_has_scale9enable(); + inline void set_has_scale9width(); + inline void clear_has_scale9width(); + inline void set_has_scale9height(); + inline void clear_has_scale9height(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* texture_; + ::protocolbuffers::ResourceData* texturedata_; + ::google::protobuf::int32 percent_; + ::google::protobuf::int32 direction_; + float capinsetsx_; + float capinsetsy_; + float capinsetswidth_; + float capinsetsheight_; + bool scale9enable_; + float scale9width_; + float scale9height_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(13 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static LoadingBarOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class ListViewOptions : public ::google::protobuf::MessageLite { + public: + ListViewOptions(); + virtual ~ListViewOptions(); + + ListViewOptions(const ListViewOptions& from); + + inline ListViewOptions& operator=(const ListViewOptions& from) { + CopyFrom(from); + return *this; + } + + static const ListViewOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ListViewOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(ListViewOptions* other); + + // implements Message ---------------------------------------------- + + ListViewOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const ListViewOptions& from); + void MergeFrom(const ListViewOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string backGroundImage = 3; + inline bool has_backgroundimage() const; + inline void clear_backgroundimage(); + static const int kBackGroundImageFieldNumber = 3; + inline const ::std::string& backgroundimage() const; + inline void set_backgroundimage(const ::std::string& value); + inline void set_backgroundimage(const char* value); + inline void set_backgroundimage(const char* value, size_t size); + inline ::std::string* mutable_backgroundimage(); + inline ::std::string* release_backgroundimage(); + inline void set_allocated_backgroundimage(::std::string* backgroundimage); + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + inline bool has_backgroundimagedata() const; + inline void clear_backgroundimagedata(); + static const int kBackGroundImageDataFieldNumber = 4; + inline const ::protocolbuffers::ResourceData& backgroundimagedata() const; + inline ::protocolbuffers::ResourceData* mutable_backgroundimagedata(); + inline ::protocolbuffers::ResourceData* release_backgroundimagedata(); + inline void set_allocated_backgroundimagedata(::protocolbuffers::ResourceData* backgroundimagedata); + + // optional int32 bgColorR = 5; + inline bool has_bgcolorr() const; + inline void clear_bgcolorr(); + static const int kBgColorRFieldNumber = 5; + inline ::google::protobuf::int32 bgcolorr() const; + inline void set_bgcolorr(::google::protobuf::int32 value); + + // optional int32 bgColorG = 6; + inline bool has_bgcolorg() const; + inline void clear_bgcolorg(); + static const int kBgColorGFieldNumber = 6; + inline ::google::protobuf::int32 bgcolorg() const; + inline void set_bgcolorg(::google::protobuf::int32 value); + + // optional int32 bgColorB = 7; + inline bool has_bgcolorb() const; + inline void clear_bgcolorb(); + static const int kBgColorBFieldNumber = 7; + inline ::google::protobuf::int32 bgcolorb() const; + inline void set_bgcolorb(::google::protobuf::int32 value); + + // optional int32 bgStartColorR = 8; + inline bool has_bgstartcolorr() const; + inline void clear_bgstartcolorr(); + static const int kBgStartColorRFieldNumber = 8; + inline ::google::protobuf::int32 bgstartcolorr() const; + inline void set_bgstartcolorr(::google::protobuf::int32 value); + + // optional int32 bgStartColorG = 9; + inline bool has_bgstartcolorg() const; + inline void clear_bgstartcolorg(); + static const int kBgStartColorGFieldNumber = 9; + inline ::google::protobuf::int32 bgstartcolorg() const; + inline void set_bgstartcolorg(::google::protobuf::int32 value); + + // optional int32 bgStartColorB = 10; + inline bool has_bgstartcolorb() const; + inline void clear_bgstartcolorb(); + static const int kBgStartColorBFieldNumber = 10; + inline ::google::protobuf::int32 bgstartcolorb() const; + inline void set_bgstartcolorb(::google::protobuf::int32 value); + + // optional int32 bgEndColorR = 11; + inline bool has_bgendcolorr() const; + inline void clear_bgendcolorr(); + static const int kBgEndColorRFieldNumber = 11; + inline ::google::protobuf::int32 bgendcolorr() const; + inline void set_bgendcolorr(::google::protobuf::int32 value); + + // optional int32 bgEndColorG = 12; + inline bool has_bgendcolorg() const; + inline void clear_bgendcolorg(); + static const int kBgEndColorGFieldNumber = 12; + inline ::google::protobuf::int32 bgendcolorg() const; + inline void set_bgendcolorg(::google::protobuf::int32 value); + + // optional int32 bgEndColorB = 13; + inline bool has_bgendcolorb() const; + inline void clear_bgendcolorb(); + static const int kBgEndColorBFieldNumber = 13; + inline ::google::protobuf::int32 bgendcolorb() const; + inline void set_bgendcolorb(::google::protobuf::int32 value); + + // optional int32 colorType = 14; + inline bool has_colortype() const; + inline void clear_colortype(); + static const int kColorTypeFieldNumber = 14; + inline ::google::protobuf::int32 colortype() const; + inline void set_colortype(::google::protobuf::int32 value); + + // optional int32 bgColorOpacity = 15; + inline bool has_bgcoloropacity() const; + inline void clear_bgcoloropacity(); + static const int kBgColorOpacityFieldNumber = 15; + inline ::google::protobuf::int32 bgcoloropacity() const; + inline void set_bgcoloropacity(::google::protobuf::int32 value); + + // optional float vectorX = 16; + inline bool has_vectorx() const; + inline void clear_vectorx(); + static const int kVectorXFieldNumber = 16; + inline float vectorx() const; + inline void set_vectorx(float value); + + // optional float vectorY = 17; + inline bool has_vectory() const; + inline void clear_vectory(); + static const int kVectorYFieldNumber = 17; + inline float vectory() const; + inline void set_vectory(float value); + + // optional float capInsetsX = 18; + inline bool has_capinsetsx() const; + inline void clear_capinsetsx(); + static const int kCapInsetsXFieldNumber = 18; + inline float capinsetsx() const; + inline void set_capinsetsx(float value); + + // optional float capInsetsY = 19; + inline bool has_capinsetsy() const; + inline void clear_capinsetsy(); + static const int kCapInsetsYFieldNumber = 19; + inline float capinsetsy() const; + inline void set_capinsetsy(float value); + + // optional float capInsetsWidth = 20; + inline bool has_capinsetswidth() const; + inline void clear_capinsetswidth(); + static const int kCapInsetsWidthFieldNumber = 20; + inline float capinsetswidth() const; + inline void set_capinsetswidth(float value); + + // optional float capInsetsHeight = 21; + inline bool has_capinsetsheight() const; + inline void clear_capinsetsheight(); + static const int kCapInsetsHeightFieldNumber = 21; + inline float capinsetsheight() const; + inline void set_capinsetsheight(float value); + + // optional bool backGroundScale9Enable = 22; + inline bool has_backgroundscale9enable() const; + inline void clear_backgroundscale9enable(); + static const int kBackGroundScale9EnableFieldNumber = 22; + inline bool backgroundscale9enable() const; + inline void set_backgroundscale9enable(bool value); + + // optional float innerWidth = 23; + inline bool has_innerwidth() const; + inline void clear_innerwidth(); + static const int kInnerWidthFieldNumber = 23; + inline float innerwidth() const; + inline void set_innerwidth(float value); + + // optional float innerHeight = 24; + inline bool has_innerheight() const; + inline void clear_innerheight(); + static const int kInnerHeightFieldNumber = 24; + inline float innerheight() const; + inline void set_innerheight(float value); + + // optional bool clipAble = 25; + inline bool has_clipable() const; + inline void clear_clipable(); + static const int kClipAbleFieldNumber = 25; + inline bool clipable() const; + inline void set_clipable(bool value); + + // optional bool bounceEnable = 26; + inline bool has_bounceenable() const; + inline void clear_bounceenable(); + static const int kBounceEnableFieldNumber = 26; + inline bool bounceenable() const; + inline void set_bounceenable(bool value); + + // optional int32 direction = 27; + inline bool has_direction() const; + inline void clear_direction(); + static const int kDirectionFieldNumber = 27; + inline ::google::protobuf::int32 direction() const; + inline void set_direction(::google::protobuf::int32 value); + + // optional int32 gravity = 28; + inline bool has_gravity() const; + inline void clear_gravity(); + static const int kGravityFieldNumber = 28; + inline ::google::protobuf::int32 gravity() const; + inline void set_gravity(::google::protobuf::int32 value); + + // optional int32 itemMargin = 29; + inline bool has_itemmargin() const; + inline void clear_itemmargin(); + static const int kItemMarginFieldNumber = 29; + inline ::google::protobuf::int32 itemmargin() const; + inline void set_itemmargin(::google::protobuf::int32 value); + + // optional float scale9Width = 30; + inline bool has_scale9width() const; + inline void clear_scale9width(); + static const int kScale9WidthFieldNumber = 30; + inline float scale9width() const; + inline void set_scale9width(float value); + + // optional float scale9Height = 31; + inline bool has_scale9height() const; + inline void clear_scale9height(); + static const int kScale9HeightFieldNumber = 31; + inline float scale9height() const; + inline void set_scale9height(float value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.ListViewOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_backgroundimage(); + inline void clear_has_backgroundimage(); + inline void set_has_backgroundimagedata(); + inline void clear_has_backgroundimagedata(); + inline void set_has_bgcolorr(); + inline void clear_has_bgcolorr(); + inline void set_has_bgcolorg(); + inline void clear_has_bgcolorg(); + inline void set_has_bgcolorb(); + inline void clear_has_bgcolorb(); + inline void set_has_bgstartcolorr(); + inline void clear_has_bgstartcolorr(); + inline void set_has_bgstartcolorg(); + inline void clear_has_bgstartcolorg(); + inline void set_has_bgstartcolorb(); + inline void clear_has_bgstartcolorb(); + inline void set_has_bgendcolorr(); + inline void clear_has_bgendcolorr(); + inline void set_has_bgendcolorg(); + inline void clear_has_bgendcolorg(); + inline void set_has_bgendcolorb(); + inline void clear_has_bgendcolorb(); + inline void set_has_colortype(); + inline void clear_has_colortype(); + inline void set_has_bgcoloropacity(); + inline void clear_has_bgcoloropacity(); + inline void set_has_vectorx(); + inline void clear_has_vectorx(); + inline void set_has_vectory(); + inline void clear_has_vectory(); + inline void set_has_capinsetsx(); + inline void clear_has_capinsetsx(); + inline void set_has_capinsetsy(); + inline void clear_has_capinsetsy(); + inline void set_has_capinsetswidth(); + inline void clear_has_capinsetswidth(); + inline void set_has_capinsetsheight(); + inline void clear_has_capinsetsheight(); + inline void set_has_backgroundscale9enable(); + inline void clear_has_backgroundscale9enable(); + inline void set_has_innerwidth(); + inline void clear_has_innerwidth(); + inline void set_has_innerheight(); + inline void clear_has_innerheight(); + inline void set_has_clipable(); + inline void clear_has_clipable(); + inline void set_has_bounceenable(); + inline void clear_has_bounceenable(); + inline void set_has_direction(); + inline void clear_has_direction(); + inline void set_has_gravity(); + inline void clear_has_gravity(); + inline void set_has_itemmargin(); + inline void clear_has_itemmargin(); + inline void set_has_scale9width(); + inline void clear_has_scale9width(); + inline void set_has_scale9height(); + inline void clear_has_scale9height(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* backgroundimage_; + ::protocolbuffers::ResourceData* backgroundimagedata_; + ::google::protobuf::int32 bgcolorr_; + ::google::protobuf::int32 bgcolorg_; + ::google::protobuf::int32 bgcolorb_; + ::google::protobuf::int32 bgstartcolorr_; + ::google::protobuf::int32 bgstartcolorg_; + ::google::protobuf::int32 bgstartcolorb_; + ::google::protobuf::int32 bgendcolorr_; + ::google::protobuf::int32 bgendcolorg_; + ::google::protobuf::int32 bgendcolorb_; + ::google::protobuf::int32 colortype_; + ::google::protobuf::int32 bgcoloropacity_; + float vectorx_; + float vectory_; + float capinsetsx_; + float capinsetsy_; + float capinsetswidth_; + float capinsetsheight_; + float innerwidth_; + float innerheight_; + bool backgroundscale9enable_; + bool clipable_; + bool bounceenable_; + ::google::protobuf::int32 direction_; + ::google::protobuf::int32 gravity_; + ::google::protobuf::int32 itemmargin_; + float scale9width_; + float scale9height_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(31 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static ListViewOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class PageViewOptions : public ::google::protobuf::MessageLite { + public: + PageViewOptions(); + virtual ~PageViewOptions(); + + PageViewOptions(const PageViewOptions& from); + + inline PageViewOptions& operator=(const PageViewOptions& from) { + CopyFrom(from); + return *this; + } + + static const PageViewOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const PageViewOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(PageViewOptions* other); + + // implements Message ---------------------------------------------- + + PageViewOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const PageViewOptions& from); + void MergeFrom(const PageViewOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string backGroundImage = 3; + inline bool has_backgroundimage() const; + inline void clear_backgroundimage(); + static const int kBackGroundImageFieldNumber = 3; + inline const ::std::string& backgroundimage() const; + inline void set_backgroundimage(const ::std::string& value); + inline void set_backgroundimage(const char* value); + inline void set_backgroundimage(const char* value, size_t size); + inline ::std::string* mutable_backgroundimage(); + inline ::std::string* release_backgroundimage(); + inline void set_allocated_backgroundimage(::std::string* backgroundimage); + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + inline bool has_backgroundimagedata() const; + inline void clear_backgroundimagedata(); + static const int kBackGroundImageDataFieldNumber = 4; + inline const ::protocolbuffers::ResourceData& backgroundimagedata() const; + inline ::protocolbuffers::ResourceData* mutable_backgroundimagedata(); + inline ::protocolbuffers::ResourceData* release_backgroundimagedata(); + inline void set_allocated_backgroundimagedata(::protocolbuffers::ResourceData* backgroundimagedata); + + // optional bool clipAble = 5; + inline bool has_clipable() const; + inline void clear_clipable(); + static const int kClipAbleFieldNumber = 5; + inline bool clipable() const; + inline void set_clipable(bool value); + + // optional int32 bgColorR = 6; + inline bool has_bgcolorr() const; + inline void clear_bgcolorr(); + static const int kBgColorRFieldNumber = 6; + inline ::google::protobuf::int32 bgcolorr() const; + inline void set_bgcolorr(::google::protobuf::int32 value); + + // optional int32 bgColorG = 7; + inline bool has_bgcolorg() const; + inline void clear_bgcolorg(); + static const int kBgColorGFieldNumber = 7; + inline ::google::protobuf::int32 bgcolorg() const; + inline void set_bgcolorg(::google::protobuf::int32 value); + + // optional int32 bgColorB = 8; + inline bool has_bgcolorb() const; + inline void clear_bgcolorb(); + static const int kBgColorBFieldNumber = 8; + inline ::google::protobuf::int32 bgcolorb() const; + inline void set_bgcolorb(::google::protobuf::int32 value); + + // optional int32 bgStartColorR = 9; + inline bool has_bgstartcolorr() const; + inline void clear_bgstartcolorr(); + static const int kBgStartColorRFieldNumber = 9; + inline ::google::protobuf::int32 bgstartcolorr() const; + inline void set_bgstartcolorr(::google::protobuf::int32 value); + + // optional int32 bgStartColorG = 10; + inline bool has_bgstartcolorg() const; + inline void clear_bgstartcolorg(); + static const int kBgStartColorGFieldNumber = 10; + inline ::google::protobuf::int32 bgstartcolorg() const; + inline void set_bgstartcolorg(::google::protobuf::int32 value); + + // optional int32 bgStartColorB = 11; + inline bool has_bgstartcolorb() const; + inline void clear_bgstartcolorb(); + static const int kBgStartColorBFieldNumber = 11; + inline ::google::protobuf::int32 bgstartcolorb() const; + inline void set_bgstartcolorb(::google::protobuf::int32 value); + + // optional int32 bgEndColorR = 12; + inline bool has_bgendcolorr() const; + inline void clear_bgendcolorr(); + static const int kBgEndColorRFieldNumber = 12; + inline ::google::protobuf::int32 bgendcolorr() const; + inline void set_bgendcolorr(::google::protobuf::int32 value); + + // optional int32 bgEndColorG = 13; + inline bool has_bgendcolorg() const; + inline void clear_bgendcolorg(); + static const int kBgEndColorGFieldNumber = 13; + inline ::google::protobuf::int32 bgendcolorg() const; + inline void set_bgendcolorg(::google::protobuf::int32 value); + + // optional int32 bgEndColorB = 14; + inline bool has_bgendcolorb() const; + inline void clear_bgendcolorb(); + static const int kBgEndColorBFieldNumber = 14; + inline ::google::protobuf::int32 bgendcolorb() const; + inline void set_bgendcolorb(::google::protobuf::int32 value); + + // optional int32 colorType = 15; + inline bool has_colortype() const; + inline void clear_colortype(); + static const int kColorTypeFieldNumber = 15; + inline ::google::protobuf::int32 colortype() const; + inline void set_colortype(::google::protobuf::int32 value); + + // optional int32 bgColorOpacity = 16; + inline bool has_bgcoloropacity() const; + inline void clear_bgcoloropacity(); + static const int kBgColorOpacityFieldNumber = 16; + inline ::google::protobuf::int32 bgcoloropacity() const; + inline void set_bgcoloropacity(::google::protobuf::int32 value); + + // optional float vectorX = 17; + inline bool has_vectorx() const; + inline void clear_vectorx(); + static const int kVectorXFieldNumber = 17; + inline float vectorx() const; + inline void set_vectorx(float value); + + // optional float vectorY = 18; + inline bool has_vectory() const; + inline void clear_vectory(); + static const int kVectorYFieldNumber = 18; + inline float vectory() const; + inline void set_vectory(float value); + + // optional float capInsetsX = 19; + inline bool has_capinsetsx() const; + inline void clear_capinsetsx(); + static const int kCapInsetsXFieldNumber = 19; + inline float capinsetsx() const; + inline void set_capinsetsx(float value); + + // optional float capInsetsY = 20; + inline bool has_capinsetsy() const; + inline void clear_capinsetsy(); + static const int kCapInsetsYFieldNumber = 20; + inline float capinsetsy() const; + inline void set_capinsetsy(float value); + + // optional float capInsetsWidth = 21; + inline bool has_capinsetswidth() const; + inline void clear_capinsetswidth(); + static const int kCapInsetsWidthFieldNumber = 21; + inline float capinsetswidth() const; + inline void set_capinsetswidth(float value); + + // optional float capInsetsHeight = 22; + inline bool has_capinsetsheight() const; + inline void clear_capinsetsheight(); + static const int kCapInsetsHeightFieldNumber = 22; + inline float capinsetsheight() const; + inline void set_capinsetsheight(float value); + + // optional bool backGroundScale9Enable = 23; + inline bool has_backgroundscale9enable() const; + inline void clear_backgroundscale9enable(); + static const int kBackGroundScale9EnableFieldNumber = 23; + inline bool backgroundscale9enable() const; + inline void set_backgroundscale9enable(bool value); + + // optional float scale9Width = 24; + inline bool has_scale9width() const; + inline void clear_scale9width(); + static const int kScale9WidthFieldNumber = 24; + inline float scale9width() const; + inline void set_scale9width(float value); + + // optional float scale9Height = 25; + inline bool has_scale9height() const; + inline void clear_scale9height(); + static const int kScale9HeightFieldNumber = 25; + inline float scale9height() const; + inline void set_scale9height(float value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.PageViewOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_backgroundimage(); + inline void clear_has_backgroundimage(); + inline void set_has_backgroundimagedata(); + inline void clear_has_backgroundimagedata(); + inline void set_has_clipable(); + inline void clear_has_clipable(); + inline void set_has_bgcolorr(); + inline void clear_has_bgcolorr(); + inline void set_has_bgcolorg(); + inline void clear_has_bgcolorg(); + inline void set_has_bgcolorb(); + inline void clear_has_bgcolorb(); + inline void set_has_bgstartcolorr(); + inline void clear_has_bgstartcolorr(); + inline void set_has_bgstartcolorg(); + inline void clear_has_bgstartcolorg(); + inline void set_has_bgstartcolorb(); + inline void clear_has_bgstartcolorb(); + inline void set_has_bgendcolorr(); + inline void clear_has_bgendcolorr(); + inline void set_has_bgendcolorg(); + inline void clear_has_bgendcolorg(); + inline void set_has_bgendcolorb(); + inline void clear_has_bgendcolorb(); + inline void set_has_colortype(); + inline void clear_has_colortype(); + inline void set_has_bgcoloropacity(); + inline void clear_has_bgcoloropacity(); + inline void set_has_vectorx(); + inline void clear_has_vectorx(); + inline void set_has_vectory(); + inline void clear_has_vectory(); + inline void set_has_capinsetsx(); + inline void clear_has_capinsetsx(); + inline void set_has_capinsetsy(); + inline void clear_has_capinsetsy(); + inline void set_has_capinsetswidth(); + inline void clear_has_capinsetswidth(); + inline void set_has_capinsetsheight(); + inline void clear_has_capinsetsheight(); + inline void set_has_backgroundscale9enable(); + inline void clear_has_backgroundscale9enable(); + inline void set_has_scale9width(); + inline void clear_has_scale9width(); + inline void set_has_scale9height(); + inline void clear_has_scale9height(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* backgroundimage_; + ::protocolbuffers::ResourceData* backgroundimagedata_; + ::google::protobuf::int32 bgcolorr_; + ::google::protobuf::int32 bgcolorg_; + ::google::protobuf::int32 bgcolorb_; + ::google::protobuf::int32 bgstartcolorr_; + ::google::protobuf::int32 bgstartcolorg_; + ::google::protobuf::int32 bgstartcolorb_; + ::google::protobuf::int32 bgendcolorr_; + ::google::protobuf::int32 bgendcolorg_; + ::google::protobuf::int32 bgendcolorb_; + bool clipable_; + bool backgroundscale9enable_; + ::google::protobuf::int32 colortype_; + ::google::protobuf::int32 bgcoloropacity_; + float vectorx_; + float vectory_; + float capinsetsx_; + float capinsetsy_; + float capinsetswidth_; + float capinsetsheight_; + float scale9width_; + float scale9height_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(25 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static PageViewOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class PanelOptions : public ::google::protobuf::MessageLite { + public: + PanelOptions(); + virtual ~PanelOptions(); + + PanelOptions(const PanelOptions& from); + + inline PanelOptions& operator=(const PanelOptions& from) { + CopyFrom(from); + return *this; + } + + static const PanelOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const PanelOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(PanelOptions* other); + + // implements Message ---------------------------------------------- + + PanelOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const PanelOptions& from); + void MergeFrom(const PanelOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string backGroundImage = 3; + inline bool has_backgroundimage() const; + inline void clear_backgroundimage(); + static const int kBackGroundImageFieldNumber = 3; + inline const ::std::string& backgroundimage() const; + inline void set_backgroundimage(const ::std::string& value); + inline void set_backgroundimage(const char* value); + inline void set_backgroundimage(const char* value, size_t size); + inline ::std::string* mutable_backgroundimage(); + inline ::std::string* release_backgroundimage(); + inline void set_allocated_backgroundimage(::std::string* backgroundimage); + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + inline bool has_backgroundimagedata() const; + inline void clear_backgroundimagedata(); + static const int kBackGroundImageDataFieldNumber = 4; + inline const ::protocolbuffers::ResourceData& backgroundimagedata() const; + inline ::protocolbuffers::ResourceData* mutable_backgroundimagedata(); + inline ::protocolbuffers::ResourceData* release_backgroundimagedata(); + inline void set_allocated_backgroundimagedata(::protocolbuffers::ResourceData* backgroundimagedata); + + // optional bool clipAble = 5; + inline bool has_clipable() const; + inline void clear_clipable(); + static const int kClipAbleFieldNumber = 5; + inline bool clipable() const; + inline void set_clipable(bool value); + + // optional int32 bgColorR = 6; + inline bool has_bgcolorr() const; + inline void clear_bgcolorr(); + static const int kBgColorRFieldNumber = 6; + inline ::google::protobuf::int32 bgcolorr() const; + inline void set_bgcolorr(::google::protobuf::int32 value); + + // optional int32 bgColorG = 7; + inline bool has_bgcolorg() const; + inline void clear_bgcolorg(); + static const int kBgColorGFieldNumber = 7; + inline ::google::protobuf::int32 bgcolorg() const; + inline void set_bgcolorg(::google::protobuf::int32 value); + + // optional int32 bgColorB = 8; + inline bool has_bgcolorb() const; + inline void clear_bgcolorb(); + static const int kBgColorBFieldNumber = 8; + inline ::google::protobuf::int32 bgcolorb() const; + inline void set_bgcolorb(::google::protobuf::int32 value); + + // optional int32 bgStartColorR = 9; + inline bool has_bgstartcolorr() const; + inline void clear_bgstartcolorr(); + static const int kBgStartColorRFieldNumber = 9; + inline ::google::protobuf::int32 bgstartcolorr() const; + inline void set_bgstartcolorr(::google::protobuf::int32 value); + + // optional int32 bgStartColorG = 10; + inline bool has_bgstartcolorg() const; + inline void clear_bgstartcolorg(); + static const int kBgStartColorGFieldNumber = 10; + inline ::google::protobuf::int32 bgstartcolorg() const; + inline void set_bgstartcolorg(::google::protobuf::int32 value); + + // optional int32 bgStartColorB = 11; + inline bool has_bgstartcolorb() const; + inline void clear_bgstartcolorb(); + static const int kBgStartColorBFieldNumber = 11; + inline ::google::protobuf::int32 bgstartcolorb() const; + inline void set_bgstartcolorb(::google::protobuf::int32 value); + + // optional int32 bgEndColorR = 12; + inline bool has_bgendcolorr() const; + inline void clear_bgendcolorr(); + static const int kBgEndColorRFieldNumber = 12; + inline ::google::protobuf::int32 bgendcolorr() const; + inline void set_bgendcolorr(::google::protobuf::int32 value); + + // optional int32 bgEndColorG = 13; + inline bool has_bgendcolorg() const; + inline void clear_bgendcolorg(); + static const int kBgEndColorGFieldNumber = 13; + inline ::google::protobuf::int32 bgendcolorg() const; + inline void set_bgendcolorg(::google::protobuf::int32 value); + + // optional int32 bgEndColorB = 14; + inline bool has_bgendcolorb() const; + inline void clear_bgendcolorb(); + static const int kBgEndColorBFieldNumber = 14; + inline ::google::protobuf::int32 bgendcolorb() const; + inline void set_bgendcolorb(::google::protobuf::int32 value); + + // optional int32 colorType = 15; + inline bool has_colortype() const; + inline void clear_colortype(); + static const int kColorTypeFieldNumber = 15; + inline ::google::protobuf::int32 colortype() const; + inline void set_colortype(::google::protobuf::int32 value); + + // optional int32 bgColorOpacity = 16; + inline bool has_bgcoloropacity() const; + inline void clear_bgcoloropacity(); + static const int kBgColorOpacityFieldNumber = 16; + inline ::google::protobuf::int32 bgcoloropacity() const; + inline void set_bgcoloropacity(::google::protobuf::int32 value); + + // optional float vectorX = 17; + inline bool has_vectorx() const; + inline void clear_vectorx(); + static const int kVectorXFieldNumber = 17; + inline float vectorx() const; + inline void set_vectorx(float value); + + // optional float vectorY = 18; + inline bool has_vectory() const; + inline void clear_vectory(); + static const int kVectorYFieldNumber = 18; + inline float vectory() const; + inline void set_vectory(float value); + + // optional float capInsetsX = 19; + inline bool has_capinsetsx() const; + inline void clear_capinsetsx(); + static const int kCapInsetsXFieldNumber = 19; + inline float capinsetsx() const; + inline void set_capinsetsx(float value); + + // optional float capInsetsY = 20; + inline bool has_capinsetsy() const; + inline void clear_capinsetsy(); + static const int kCapInsetsYFieldNumber = 20; + inline float capinsetsy() const; + inline void set_capinsetsy(float value); + + // optional float capInsetsWidth = 21; + inline bool has_capinsetswidth() const; + inline void clear_capinsetswidth(); + static const int kCapInsetsWidthFieldNumber = 21; + inline float capinsetswidth() const; + inline void set_capinsetswidth(float value); + + // optional float capInsetsHeight = 22; + inline bool has_capinsetsheight() const; + inline void clear_capinsetsheight(); + static const int kCapInsetsHeightFieldNumber = 22; + inline float capinsetsheight() const; + inline void set_capinsetsheight(float value); + + // optional bool backGroundScale9Enable = 23; + inline bool has_backgroundscale9enable() const; + inline void clear_backgroundscale9enable(); + static const int kBackGroundScale9EnableFieldNumber = 23; + inline bool backgroundscale9enable() const; + inline void set_backgroundscale9enable(bool value); + + // optional int32 layoutType = 24; + inline bool has_layouttype() const; + inline void clear_layouttype(); + static const int kLayoutTypeFieldNumber = 24; + inline ::google::protobuf::int32 layouttype() const; + inline void set_layouttype(::google::protobuf::int32 value); + + // optional bool adaptScreen = 25; + inline bool has_adaptscreen() const; + inline void clear_adaptscreen(); + static const int kAdaptScreenFieldNumber = 25; + inline bool adaptscreen() const; + inline void set_adaptscreen(bool value); + + // optional float scale9Width = 26; + inline bool has_scale9width() const; + inline void clear_scale9width(); + static const int kScale9WidthFieldNumber = 26; + inline float scale9width() const; + inline void set_scale9width(float value); + + // optional float scale9Height = 27; + inline bool has_scale9height() const; + inline void clear_scale9height(); + static const int kScale9HeightFieldNumber = 27; + inline float scale9height() const; + inline void set_scale9height(float value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.PanelOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_backgroundimage(); + inline void clear_has_backgroundimage(); + inline void set_has_backgroundimagedata(); + inline void clear_has_backgroundimagedata(); + inline void set_has_clipable(); + inline void clear_has_clipable(); + inline void set_has_bgcolorr(); + inline void clear_has_bgcolorr(); + inline void set_has_bgcolorg(); + inline void clear_has_bgcolorg(); + inline void set_has_bgcolorb(); + inline void clear_has_bgcolorb(); + inline void set_has_bgstartcolorr(); + inline void clear_has_bgstartcolorr(); + inline void set_has_bgstartcolorg(); + inline void clear_has_bgstartcolorg(); + inline void set_has_bgstartcolorb(); + inline void clear_has_bgstartcolorb(); + inline void set_has_bgendcolorr(); + inline void clear_has_bgendcolorr(); + inline void set_has_bgendcolorg(); + inline void clear_has_bgendcolorg(); + inline void set_has_bgendcolorb(); + inline void clear_has_bgendcolorb(); + inline void set_has_colortype(); + inline void clear_has_colortype(); + inline void set_has_bgcoloropacity(); + inline void clear_has_bgcoloropacity(); + inline void set_has_vectorx(); + inline void clear_has_vectorx(); + inline void set_has_vectory(); + inline void clear_has_vectory(); + inline void set_has_capinsetsx(); + inline void clear_has_capinsetsx(); + inline void set_has_capinsetsy(); + inline void clear_has_capinsetsy(); + inline void set_has_capinsetswidth(); + inline void clear_has_capinsetswidth(); + inline void set_has_capinsetsheight(); + inline void clear_has_capinsetsheight(); + inline void set_has_backgroundscale9enable(); + inline void clear_has_backgroundscale9enable(); + inline void set_has_layouttype(); + inline void clear_has_layouttype(); + inline void set_has_adaptscreen(); + inline void clear_has_adaptscreen(); + inline void set_has_scale9width(); + inline void clear_has_scale9width(); + inline void set_has_scale9height(); + inline void clear_has_scale9height(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* backgroundimage_; + ::protocolbuffers::ResourceData* backgroundimagedata_; + ::google::protobuf::int32 bgcolorr_; + ::google::protobuf::int32 bgcolorg_; + ::google::protobuf::int32 bgcolorb_; + ::google::protobuf::int32 bgstartcolorr_; + ::google::protobuf::int32 bgstartcolorg_; + ::google::protobuf::int32 bgstartcolorb_; + ::google::protobuf::int32 bgendcolorr_; + ::google::protobuf::int32 bgendcolorg_; + ::google::protobuf::int32 bgendcolorb_; + ::google::protobuf::int32 colortype_; + ::google::protobuf::int32 bgcoloropacity_; + float vectorx_; + bool clipable_; + bool backgroundscale9enable_; + bool adaptscreen_; + float vectory_; + float capinsetsx_; + float capinsetsy_; + float capinsetswidth_; + float capinsetsheight_; + ::google::protobuf::int32 layouttype_; + float scale9width_; + float scale9height_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(27 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static PanelOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class ScrollViewOptions : public ::google::protobuf::MessageLite { + public: + ScrollViewOptions(); + virtual ~ScrollViewOptions(); + + ScrollViewOptions(const ScrollViewOptions& from); + + inline ScrollViewOptions& operator=(const ScrollViewOptions& from) { + CopyFrom(from); + return *this; + } + + static const ScrollViewOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ScrollViewOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(ScrollViewOptions* other); + + // implements Message ---------------------------------------------- + + ScrollViewOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const ScrollViewOptions& from); + void MergeFrom(const ScrollViewOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string backGroundImage = 3; + inline bool has_backgroundimage() const; + inline void clear_backgroundimage(); + static const int kBackGroundImageFieldNumber = 3; + inline const ::std::string& backgroundimage() const; + inline void set_backgroundimage(const ::std::string& value); + inline void set_backgroundimage(const char* value); + inline void set_backgroundimage(const char* value, size_t size); + inline ::std::string* mutable_backgroundimage(); + inline ::std::string* release_backgroundimage(); + inline void set_allocated_backgroundimage(::std::string* backgroundimage); + + // optional .protocolbuffers.ResourceData backGroundImageData = 4; + inline bool has_backgroundimagedata() const; + inline void clear_backgroundimagedata(); + static const int kBackGroundImageDataFieldNumber = 4; + inline const ::protocolbuffers::ResourceData& backgroundimagedata() const; + inline ::protocolbuffers::ResourceData* mutable_backgroundimagedata(); + inline ::protocolbuffers::ResourceData* release_backgroundimagedata(); + inline void set_allocated_backgroundimagedata(::protocolbuffers::ResourceData* backgroundimagedata); + + // optional int32 bgColorR = 5; + inline bool has_bgcolorr() const; + inline void clear_bgcolorr(); + static const int kBgColorRFieldNumber = 5; + inline ::google::protobuf::int32 bgcolorr() const; + inline void set_bgcolorr(::google::protobuf::int32 value); + + // optional int32 bgColorG = 6; + inline bool has_bgcolorg() const; + inline void clear_bgcolorg(); + static const int kBgColorGFieldNumber = 6; + inline ::google::protobuf::int32 bgcolorg() const; + inline void set_bgcolorg(::google::protobuf::int32 value); + + // optional int32 bgColorB = 7; + inline bool has_bgcolorb() const; + inline void clear_bgcolorb(); + static const int kBgColorBFieldNumber = 7; + inline ::google::protobuf::int32 bgcolorb() const; + inline void set_bgcolorb(::google::protobuf::int32 value); + + // optional int32 bgStartColorR = 8; + inline bool has_bgstartcolorr() const; + inline void clear_bgstartcolorr(); + static const int kBgStartColorRFieldNumber = 8; + inline ::google::protobuf::int32 bgstartcolorr() const; + inline void set_bgstartcolorr(::google::protobuf::int32 value); + + // optional int32 bgStartColorG = 9; + inline bool has_bgstartcolorg() const; + inline void clear_bgstartcolorg(); + static const int kBgStartColorGFieldNumber = 9; + inline ::google::protobuf::int32 bgstartcolorg() const; + inline void set_bgstartcolorg(::google::protobuf::int32 value); + + // optional int32 bgStartColorB = 10; + inline bool has_bgstartcolorb() const; + inline void clear_bgstartcolorb(); + static const int kBgStartColorBFieldNumber = 10; + inline ::google::protobuf::int32 bgstartcolorb() const; + inline void set_bgstartcolorb(::google::protobuf::int32 value); + + // optional int32 bgEndColorR = 11; + inline bool has_bgendcolorr() const; + inline void clear_bgendcolorr(); + static const int kBgEndColorRFieldNumber = 11; + inline ::google::protobuf::int32 bgendcolorr() const; + inline void set_bgendcolorr(::google::protobuf::int32 value); + + // optional int32 bgEndColorG = 12; + inline bool has_bgendcolorg() const; + inline void clear_bgendcolorg(); + static const int kBgEndColorGFieldNumber = 12; + inline ::google::protobuf::int32 bgendcolorg() const; + inline void set_bgendcolorg(::google::protobuf::int32 value); + + // optional int32 bgEndColorB = 13; + inline bool has_bgendcolorb() const; + inline void clear_bgendcolorb(); + static const int kBgEndColorBFieldNumber = 13; + inline ::google::protobuf::int32 bgendcolorb() const; + inline void set_bgendcolorb(::google::protobuf::int32 value); + + // optional int32 colorType = 14; + inline bool has_colortype() const; + inline void clear_colortype(); + static const int kColorTypeFieldNumber = 14; + inline ::google::protobuf::int32 colortype() const; + inline void set_colortype(::google::protobuf::int32 value); + + // optional int32 bgColorOpacity = 15; + inline bool has_bgcoloropacity() const; + inline void clear_bgcoloropacity(); + static const int kBgColorOpacityFieldNumber = 15; + inline ::google::protobuf::int32 bgcoloropacity() const; + inline void set_bgcoloropacity(::google::protobuf::int32 value); + + // optional float vectorX = 16; + inline bool has_vectorx() const; + inline void clear_vectorx(); + static const int kVectorXFieldNumber = 16; + inline float vectorx() const; + inline void set_vectorx(float value); + + // optional float vectorY = 17; + inline bool has_vectory() const; + inline void clear_vectory(); + static const int kVectorYFieldNumber = 17; + inline float vectory() const; + inline void set_vectory(float value); + + // optional float capInsetsX = 18; + inline bool has_capinsetsx() const; + inline void clear_capinsetsx(); + static const int kCapInsetsXFieldNumber = 18; + inline float capinsetsx() const; + inline void set_capinsetsx(float value); + + // optional float capInsetsY = 19; + inline bool has_capinsetsy() const; + inline void clear_capinsetsy(); + static const int kCapInsetsYFieldNumber = 19; + inline float capinsetsy() const; + inline void set_capinsetsy(float value); + + // optional float capInsetsWidth = 20; + inline bool has_capinsetswidth() const; + inline void clear_capinsetswidth(); + static const int kCapInsetsWidthFieldNumber = 20; + inline float capinsetswidth() const; + inline void set_capinsetswidth(float value); + + // optional float capInsetsHeight = 21; + inline bool has_capinsetsheight() const; + inline void clear_capinsetsheight(); + static const int kCapInsetsHeightFieldNumber = 21; + inline float capinsetsheight() const; + inline void set_capinsetsheight(float value); + + // optional bool backGroundScale9Enable = 22; + inline bool has_backgroundscale9enable() const; + inline void clear_backgroundscale9enable(); + static const int kBackGroundScale9EnableFieldNumber = 22; + inline bool backgroundscale9enable() const; + inline void set_backgroundscale9enable(bool value); + + // optional float innerWidth = 23; + inline bool has_innerwidth() const; + inline void clear_innerwidth(); + static const int kInnerWidthFieldNumber = 23; + inline float innerwidth() const; + inline void set_innerwidth(float value); + + // optional float innerHeight = 24; + inline bool has_innerheight() const; + inline void clear_innerheight(); + static const int kInnerHeightFieldNumber = 24; + inline float innerheight() const; + inline void set_innerheight(float value); + + // optional int32 direction = 25; + inline bool has_direction() const; + inline void clear_direction(); + static const int kDirectionFieldNumber = 25; + inline ::google::protobuf::int32 direction() const; + inline void set_direction(::google::protobuf::int32 value); + + // optional bool clipAble = 26; + inline bool has_clipable() const; + inline void clear_clipable(); + static const int kClipAbleFieldNumber = 26; + inline bool clipable() const; + inline void set_clipable(bool value); + + // optional bool bounceEnable = 27; + inline bool has_bounceenable() const; + inline void clear_bounceenable(); + static const int kBounceEnableFieldNumber = 27; + inline bool bounceenable() const; + inline void set_bounceenable(bool value); + + // optional int32 layoutType = 28; + inline bool has_layouttype() const; + inline void clear_layouttype(); + static const int kLayoutTypeFieldNumber = 28; + inline ::google::protobuf::int32 layouttype() const; + inline void set_layouttype(::google::protobuf::int32 value); + + // optional float scale9Width = 29; + inline bool has_scale9width() const; + inline void clear_scale9width(); + static const int kScale9WidthFieldNumber = 29; + inline float scale9width() const; + inline void set_scale9width(float value); + + // optional float scale9Height = 30; + inline bool has_scale9height() const; + inline void clear_scale9height(); + static const int kScale9HeightFieldNumber = 30; + inline float scale9height() const; + inline void set_scale9height(float value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.ScrollViewOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_backgroundimage(); + inline void clear_has_backgroundimage(); + inline void set_has_backgroundimagedata(); + inline void clear_has_backgroundimagedata(); + inline void set_has_bgcolorr(); + inline void clear_has_bgcolorr(); + inline void set_has_bgcolorg(); + inline void clear_has_bgcolorg(); + inline void set_has_bgcolorb(); + inline void clear_has_bgcolorb(); + inline void set_has_bgstartcolorr(); + inline void clear_has_bgstartcolorr(); + inline void set_has_bgstartcolorg(); + inline void clear_has_bgstartcolorg(); + inline void set_has_bgstartcolorb(); + inline void clear_has_bgstartcolorb(); + inline void set_has_bgendcolorr(); + inline void clear_has_bgendcolorr(); + inline void set_has_bgendcolorg(); + inline void clear_has_bgendcolorg(); + inline void set_has_bgendcolorb(); + inline void clear_has_bgendcolorb(); + inline void set_has_colortype(); + inline void clear_has_colortype(); + inline void set_has_bgcoloropacity(); + inline void clear_has_bgcoloropacity(); + inline void set_has_vectorx(); + inline void clear_has_vectorx(); + inline void set_has_vectory(); + inline void clear_has_vectory(); + inline void set_has_capinsetsx(); + inline void clear_has_capinsetsx(); + inline void set_has_capinsetsy(); + inline void clear_has_capinsetsy(); + inline void set_has_capinsetswidth(); + inline void clear_has_capinsetswidth(); + inline void set_has_capinsetsheight(); + inline void clear_has_capinsetsheight(); + inline void set_has_backgroundscale9enable(); + inline void clear_has_backgroundscale9enable(); + inline void set_has_innerwidth(); + inline void clear_has_innerwidth(); + inline void set_has_innerheight(); + inline void clear_has_innerheight(); + inline void set_has_direction(); + inline void clear_has_direction(); + inline void set_has_clipable(); + inline void clear_has_clipable(); + inline void set_has_bounceenable(); + inline void clear_has_bounceenable(); + inline void set_has_layouttype(); + inline void clear_has_layouttype(); + inline void set_has_scale9width(); + inline void clear_has_scale9width(); + inline void set_has_scale9height(); + inline void clear_has_scale9height(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* backgroundimage_; + ::protocolbuffers::ResourceData* backgroundimagedata_; + ::google::protobuf::int32 bgcolorr_; + ::google::protobuf::int32 bgcolorg_; + ::google::protobuf::int32 bgcolorb_; + ::google::protobuf::int32 bgstartcolorr_; + ::google::protobuf::int32 bgstartcolorg_; + ::google::protobuf::int32 bgstartcolorb_; + ::google::protobuf::int32 bgendcolorr_; + ::google::protobuf::int32 bgendcolorg_; + ::google::protobuf::int32 bgendcolorb_; + ::google::protobuf::int32 colortype_; + ::google::protobuf::int32 bgcoloropacity_; + float vectorx_; + float vectory_; + float capinsetsx_; + float capinsetsy_; + float capinsetswidth_; + float capinsetsheight_; + float innerwidth_; + float innerheight_; + ::google::protobuf::int32 direction_; + bool backgroundscale9enable_; + bool clipable_; + bool bounceenable_; + ::google::protobuf::int32 layouttype_; + float scale9width_; + float scale9height_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(30 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static ScrollViewOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class SliderOptions : public ::google::protobuf::MessageLite { + public: + SliderOptions(); + virtual ~SliderOptions(); + + SliderOptions(const SliderOptions& from); + + inline SliderOptions& operator=(const SliderOptions& from) { + CopyFrom(from); + return *this; + } + + static const SliderOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const SliderOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(SliderOptions* other); + + // implements Message ---------------------------------------------- + + SliderOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const SliderOptions& from); + void MergeFrom(const SliderOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string barFileName = 3; + inline bool has_barfilename() const; + inline void clear_barfilename(); + static const int kBarFileNameFieldNumber = 3; + inline const ::std::string& barfilename() const; + inline void set_barfilename(const ::std::string& value); + inline void set_barfilename(const char* value); + inline void set_barfilename(const char* value, size_t size); + inline ::std::string* mutable_barfilename(); + inline ::std::string* release_barfilename(); + inline void set_allocated_barfilename(::std::string* barfilename); + + // optional string ballNormal = 4; + inline bool has_ballnormal() const; + inline void clear_ballnormal(); + static const int kBallNormalFieldNumber = 4; + inline const ::std::string& ballnormal() const; + inline void set_ballnormal(const ::std::string& value); + inline void set_ballnormal(const char* value); + inline void set_ballnormal(const char* value, size_t size); + inline ::std::string* mutable_ballnormal(); + inline ::std::string* release_ballnormal(); + inline void set_allocated_ballnormal(::std::string* ballnormal); + + // optional string ballPressed = 5; + inline bool has_ballpressed() const; + inline void clear_ballpressed(); + static const int kBallPressedFieldNumber = 5; + inline const ::std::string& ballpressed() const; + inline void set_ballpressed(const ::std::string& value); + inline void set_ballpressed(const char* value); + inline void set_ballpressed(const char* value, size_t size); + inline ::std::string* mutable_ballpressed(); + inline ::std::string* release_ballpressed(); + inline void set_allocated_ballpressed(::std::string* ballpressed); + + // optional string ballDisabled = 6; + inline bool has_balldisabled() const; + inline void clear_balldisabled(); + static const int kBallDisabledFieldNumber = 6; + inline const ::std::string& balldisabled() const; + inline void set_balldisabled(const ::std::string& value); + inline void set_balldisabled(const char* value); + inline void set_balldisabled(const char* value, size_t size); + inline ::std::string* mutable_balldisabled(); + inline ::std::string* release_balldisabled(); + inline void set_allocated_balldisabled(::std::string* balldisabled); + + // optional .protocolbuffers.ResourceData barFileNameData = 7; + inline bool has_barfilenamedata() const; + inline void clear_barfilenamedata(); + static const int kBarFileNameDataFieldNumber = 7; + inline const ::protocolbuffers::ResourceData& barfilenamedata() const; + inline ::protocolbuffers::ResourceData* mutable_barfilenamedata(); + inline ::protocolbuffers::ResourceData* release_barfilenamedata(); + inline void set_allocated_barfilenamedata(::protocolbuffers::ResourceData* barfilenamedata); + + // optional .protocolbuffers.ResourceData ballNormalData = 8; + inline bool has_ballnormaldata() const; + inline void clear_ballnormaldata(); + static const int kBallNormalDataFieldNumber = 8; + inline const ::protocolbuffers::ResourceData& ballnormaldata() const; + inline ::protocolbuffers::ResourceData* mutable_ballnormaldata(); + inline ::protocolbuffers::ResourceData* release_ballnormaldata(); + inline void set_allocated_ballnormaldata(::protocolbuffers::ResourceData* ballnormaldata); + + // optional .protocolbuffers.ResourceData ballPressedData = 9; + inline bool has_ballpresseddata() const; + inline void clear_ballpresseddata(); + static const int kBallPressedDataFieldNumber = 9; + inline const ::protocolbuffers::ResourceData& ballpresseddata() const; + inline ::protocolbuffers::ResourceData* mutable_ballpresseddata(); + inline ::protocolbuffers::ResourceData* release_ballpresseddata(); + inline void set_allocated_ballpresseddata(::protocolbuffers::ResourceData* ballpresseddata); + + // optional .protocolbuffers.ResourceData ballDisabledData = 10; + inline bool has_balldisableddata() const; + inline void clear_balldisableddata(); + static const int kBallDisabledDataFieldNumber = 10; + inline const ::protocolbuffers::ResourceData& balldisableddata() const; + inline ::protocolbuffers::ResourceData* mutable_balldisableddata(); + inline ::protocolbuffers::ResourceData* release_balldisableddata(); + inline void set_allocated_balldisableddata(::protocolbuffers::ResourceData* balldisableddata); + + // optional .protocolbuffers.ResourceData progressBarData = 11; + inline bool has_progressbardata() const; + inline void clear_progressbardata(); + static const int kProgressBarDataFieldNumber = 11; + inline const ::protocolbuffers::ResourceData& progressbardata() const; + inline ::protocolbuffers::ResourceData* mutable_progressbardata(); + inline ::protocolbuffers::ResourceData* release_progressbardata(); + inline void set_allocated_progressbardata(::protocolbuffers::ResourceData* progressbardata); + + // optional int32 percent = 12; + inline bool has_percent() const; + inline void clear_percent(); + static const int kPercentFieldNumber = 12; + inline ::google::protobuf::int32 percent() const; + inline void set_percent(::google::protobuf::int32 value); + + // optional float capInsetsX = 13; + inline bool has_capinsetsx() const; + inline void clear_capinsetsx(); + static const int kCapInsetsXFieldNumber = 13; + inline float capinsetsx() const; + inline void set_capinsetsx(float value); + + // optional float capInsetsY = 14; + inline bool has_capinsetsy() const; + inline void clear_capinsetsy(); + static const int kCapInsetsYFieldNumber = 14; + inline float capinsetsy() const; + inline void set_capinsetsy(float value); + + // optional float capInsetsWidth = 15; + inline bool has_capinsetswidth() const; + inline void clear_capinsetswidth(); + static const int kCapInsetsWidthFieldNumber = 15; + inline float capinsetswidth() const; + inline void set_capinsetswidth(float value); + + // optional float capInsetsHeight = 16; + inline bool has_capinsetsheight() const; + inline void clear_capinsetsheight(); + static const int kCapInsetsHeightFieldNumber = 16; + inline float capinsetsheight() const; + inline void set_capinsetsheight(float value); + + // optional float barCapInsetsX = 17; + inline bool has_barcapinsetsx() const; + inline void clear_barcapinsetsx(); + static const int kBarCapInsetsXFieldNumber = 17; + inline float barcapinsetsx() const; + inline void set_barcapinsetsx(float value); + + // optional float barCapInsetsY = 18; + inline bool has_barcapinsetsy() const; + inline void clear_barcapinsetsy(); + static const int kBarCapInsetsYFieldNumber = 18; + inline float barcapinsetsy() const; + inline void set_barcapinsetsy(float value); + + // optional float barCapInsetsWidth = 19; + inline bool has_barcapinsetswidth() const; + inline void clear_barcapinsetswidth(); + static const int kBarCapInsetsWidthFieldNumber = 19; + inline float barcapinsetswidth() const; + inline void set_barcapinsetswidth(float value); + + // optional float barCapInsetsHeight = 20; + inline bool has_barcapinsetsheight() const; + inline void clear_barcapinsetsheight(); + static const int kBarCapInsetsHeightFieldNumber = 20; + inline float barcapinsetsheight() const; + inline void set_barcapinsetsheight(float value); + + // optional float progressBarCapInsetsX = 21; + inline bool has_progressbarcapinsetsx() const; + inline void clear_progressbarcapinsetsx(); + static const int kProgressBarCapInsetsXFieldNumber = 21; + inline float progressbarcapinsetsx() const; + inline void set_progressbarcapinsetsx(float value); + + // optional float progressBarCapInsetsY = 22; + inline bool has_progressbarcapinsetsy() const; + inline void clear_progressbarcapinsetsy(); + static const int kProgressBarCapInsetsYFieldNumber = 22; + inline float progressbarcapinsetsy() const; + inline void set_progressbarcapinsetsy(float value); + + // optional float progressBarCapInsetsWidth = 23; + inline bool has_progressbarcapinsetswidth() const; + inline void clear_progressbarcapinsetswidth(); + static const int kProgressBarCapInsetsWidthFieldNumber = 23; + inline float progressbarcapinsetswidth() const; + inline void set_progressbarcapinsetswidth(float value); + + // optional float progressBarCapInsetsHeight = 24; + inline bool has_progressbarcapinsetsheight() const; + inline void clear_progressbarcapinsetsheight(); + static const int kProgressBarCapInsetsHeightFieldNumber = 24; + inline float progressbarcapinsetsheight() const; + inline void set_progressbarcapinsetsheight(float value); + + // optional float scale9Width = 25; + inline bool has_scale9width() const; + inline void clear_scale9width(); + static const int kScale9WidthFieldNumber = 25; + inline float scale9width() const; + inline void set_scale9width(float value); + + // optional float scale9Height = 26; + inline bool has_scale9height() const; + inline void clear_scale9height(); + static const int kScale9HeightFieldNumber = 26; + inline float scale9height() const; + inline void set_scale9height(float value); + + // optional bool scale9Enable = 27; + inline bool has_scale9enable() const; + inline void clear_scale9enable(); + static const int kScale9EnableFieldNumber = 27; + inline bool scale9enable() const; + inline void set_scale9enable(bool value); + + // optional float slidBallAnchorPointX = 28; + inline bool has_slidballanchorpointx() const; + inline void clear_slidballanchorpointx(); + static const int kSlidBallAnchorPointXFieldNumber = 28; + inline float slidballanchorpointx() const; + inline void set_slidballanchorpointx(float value); + + // optional float slidBallAnchorPointY = 29; + inline bool has_slidballanchorpointy() const; + inline void clear_slidballanchorpointy(); + static const int kSlidBallAnchorPointYFieldNumber = 29; + inline float slidballanchorpointy() const; + inline void set_slidballanchorpointy(float value); + + // optional float length = 30; + inline bool has_length() const; + inline void clear_length(); + static const int kLengthFieldNumber = 30; + inline float length() const; + inline void set_length(float value); + + // optional bool displaystate = 31; + inline bool has_displaystate() const; + inline void clear_displaystate(); + static const int kDisplaystateFieldNumber = 31; + inline bool displaystate() const; + inline void set_displaystate(bool value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.SliderOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_barfilename(); + inline void clear_has_barfilename(); + inline void set_has_ballnormal(); + inline void clear_has_ballnormal(); + inline void set_has_ballpressed(); + inline void clear_has_ballpressed(); + inline void set_has_balldisabled(); + inline void clear_has_balldisabled(); + inline void set_has_barfilenamedata(); + inline void clear_has_barfilenamedata(); + inline void set_has_ballnormaldata(); + inline void clear_has_ballnormaldata(); + inline void set_has_ballpresseddata(); + inline void clear_has_ballpresseddata(); + inline void set_has_balldisableddata(); + inline void clear_has_balldisableddata(); + inline void set_has_progressbardata(); + inline void clear_has_progressbardata(); + inline void set_has_percent(); + inline void clear_has_percent(); + inline void set_has_capinsetsx(); + inline void clear_has_capinsetsx(); + inline void set_has_capinsetsy(); + inline void clear_has_capinsetsy(); + inline void set_has_capinsetswidth(); + inline void clear_has_capinsetswidth(); + inline void set_has_capinsetsheight(); + inline void clear_has_capinsetsheight(); + inline void set_has_barcapinsetsx(); + inline void clear_has_barcapinsetsx(); + inline void set_has_barcapinsetsy(); + inline void clear_has_barcapinsetsy(); + inline void set_has_barcapinsetswidth(); + inline void clear_has_barcapinsetswidth(); + inline void set_has_barcapinsetsheight(); + inline void clear_has_barcapinsetsheight(); + inline void set_has_progressbarcapinsetsx(); + inline void clear_has_progressbarcapinsetsx(); + inline void set_has_progressbarcapinsetsy(); + inline void clear_has_progressbarcapinsetsy(); + inline void set_has_progressbarcapinsetswidth(); + inline void clear_has_progressbarcapinsetswidth(); + inline void set_has_progressbarcapinsetsheight(); + inline void clear_has_progressbarcapinsetsheight(); + inline void set_has_scale9width(); + inline void clear_has_scale9width(); + inline void set_has_scale9height(); + inline void clear_has_scale9height(); + inline void set_has_scale9enable(); + inline void clear_has_scale9enable(); + inline void set_has_slidballanchorpointx(); + inline void clear_has_slidballanchorpointx(); + inline void set_has_slidballanchorpointy(); + inline void clear_has_slidballanchorpointy(); + inline void set_has_length(); + inline void clear_has_length(); + inline void set_has_displaystate(); + inline void clear_has_displaystate(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* barfilename_; + ::std::string* ballnormal_; + ::std::string* ballpressed_; + ::std::string* balldisabled_; + ::protocolbuffers::ResourceData* barfilenamedata_; + ::protocolbuffers::ResourceData* ballnormaldata_; + ::protocolbuffers::ResourceData* ballpresseddata_; + ::protocolbuffers::ResourceData* balldisableddata_; + ::protocolbuffers::ResourceData* progressbardata_; + ::google::protobuf::int32 percent_; + float capinsetsx_; + float capinsetsy_; + float capinsetswidth_; + float capinsetsheight_; + float barcapinsetsx_; + float barcapinsetsy_; + float barcapinsetswidth_; + float barcapinsetsheight_; + float progressbarcapinsetsx_; + float progressbarcapinsetsy_; + float progressbarcapinsetswidth_; + float progressbarcapinsetsheight_; + float scale9width_; + float scale9height_; + float slidballanchorpointx_; + float slidballanchorpointy_; + bool scale9enable_; + bool displaystate_; + float length_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(31 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static SliderOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class SpriteOptions : public ::google::protobuf::MessageLite { + public: + SpriteOptions(); + virtual ~SpriteOptions(); + + SpriteOptions(const SpriteOptions& from); + + inline SpriteOptions& operator=(const SpriteOptions& from) { + CopyFrom(from); + return *this; + } + + static const SpriteOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const SpriteOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(SpriteOptions* other); + + // implements Message ---------------------------------------------- + + SpriteOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const SpriteOptions& from); + void MergeFrom(const SpriteOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional bool touchAble = 3; + inline bool has_touchable() const; + inline void clear_touchable(); + static const int kTouchAbleFieldNumber = 3; + inline bool touchable() const; + inline void set_touchable(bool value); + + // optional int32 positionType = 4; + inline bool has_positiontype() const; + inline void clear_positiontype(); + static const int kPositionTypeFieldNumber = 4; + inline ::google::protobuf::int32 positiontype() const; + inline void set_positiontype(::google::protobuf::int32 value); + + // optional float positionPercentX = 5; + inline bool has_positionpercentx() const; + inline void clear_positionpercentx(); + static const int kPositionPercentXFieldNumber = 5; + inline float positionpercentx() const; + inline void set_positionpercentx(float value); + + // optional float positionPercentY = 6; + inline bool has_positionpercenty() const; + inline void clear_positionpercenty(); + static const int kPositionPercentYFieldNumber = 6; + inline float positionpercenty() const; + inline void set_positionpercenty(float value); + + // optional int32 sizeType = 7; + inline bool has_sizetype() const; + inline void clear_sizetype(); + static const int kSizeTypeFieldNumber = 7; + inline ::google::protobuf::int32 sizetype() const; + inline void set_sizetype(::google::protobuf::int32 value); + + // optional float sizePercentX = 8; + inline bool has_sizepercentx() const; + inline void clear_sizepercentx(); + static const int kSizePercentXFieldNumber = 8; + inline float sizepercentx() const; + inline void set_sizepercentx(float value); + + // optional float sizePercentY = 9; + inline bool has_sizepercenty() const; + inline void clear_sizepercenty(); + static const int kSizePercentYFieldNumber = 9; + inline float sizepercenty() const; + inline void set_sizepercenty(float value); + + // optional bool useMergedTexture = 10; + inline bool has_usemergedtexture() const; + inline void clear_usemergedtexture(); + static const int kUseMergedTextureFieldNumber = 10; + inline bool usemergedtexture() const; + inline void set_usemergedtexture(bool value); + + // optional bool ignoreSize = 11; + inline bool has_ignoresize() const; + inline void clear_ignoresize(); + static const int kIgnoreSizeFieldNumber = 11; + inline bool ignoresize() const; + inline void set_ignoresize(bool value); + + // optional .protocolbuffers.LayoutParameter layoutParameter = 12; + inline bool has_layoutparameter() const; + inline void clear_layoutparameter(); + static const int kLayoutParameterFieldNumber = 12; + inline const ::protocolbuffers::LayoutParameter& layoutparameter() const; + inline ::protocolbuffers::LayoutParameter* mutable_layoutparameter(); + inline ::protocolbuffers::LayoutParameter* release_layoutparameter(); + inline void set_allocated_layoutparameter(::protocolbuffers::LayoutParameter* layoutparameter); + + // optional string customProperty = 13; + inline bool has_customproperty() const; + inline void clear_customproperty(); + static const int kCustomPropertyFieldNumber = 13; + inline const ::std::string& customproperty() const; + inline void set_customproperty(const ::std::string& value); + inline void set_customproperty(const char* value); + inline void set_customproperty(const char* value, size_t size); + inline ::std::string* mutable_customproperty(); + inline ::std::string* release_customproperty(); + inline void set_allocated_customproperty(::std::string* customproperty); + + // optional string fileName = 14; + inline bool has_filename() const; + inline void clear_filename(); + static const int kFileNameFieldNumber = 14; + inline const ::std::string& filename() const; + inline void set_filename(const ::std::string& value); + inline void set_filename(const char* value); + inline void set_filename(const char* value, size_t size); + inline ::std::string* mutable_filename(); + inline ::std::string* release_filename(); + inline void set_allocated_filename(::std::string* filename); + + // optional bool flippedX = 15; + inline bool has_flippedx() const; + inline void clear_flippedx(); + static const int kFlippedXFieldNumber = 15; + inline bool flippedx() const; + inline void set_flippedx(bool value); + + // optional bool flippedY = 16; + inline bool has_flippedy() const; + inline void clear_flippedy(); + static const int kFlippedYFieldNumber = 16; + inline bool flippedy() const; + inline void set_flippedy(bool value); + + // optional .protocolbuffers.ResourceData fileNameData = 17; + inline bool has_filenamedata() const; + inline void clear_filenamedata(); + static const int kFileNameDataFieldNumber = 17; + inline const ::protocolbuffers::ResourceData& filenamedata() const; + inline ::protocolbuffers::ResourceData* mutable_filenamedata(); + inline ::protocolbuffers::ResourceData* release_filenamedata(); + inline void set_allocated_filenamedata(::protocolbuffers::ResourceData* filenamedata); + + // @@protoc_insertion_point(class_scope:protocolbuffers.SpriteOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_touchable(); + inline void clear_has_touchable(); + inline void set_has_positiontype(); + inline void clear_has_positiontype(); + inline void set_has_positionpercentx(); + inline void clear_has_positionpercentx(); + inline void set_has_positionpercenty(); + inline void clear_has_positionpercenty(); + inline void set_has_sizetype(); + inline void clear_has_sizetype(); + inline void set_has_sizepercentx(); + inline void clear_has_sizepercentx(); + inline void set_has_sizepercenty(); + inline void clear_has_sizepercenty(); + inline void set_has_usemergedtexture(); + inline void clear_has_usemergedtexture(); + inline void set_has_ignoresize(); + inline void clear_has_ignoresize(); + inline void set_has_layoutparameter(); + inline void clear_has_layoutparameter(); + inline void set_has_customproperty(); + inline void clear_has_customproperty(); + inline void set_has_filename(); + inline void clear_has_filename(); + inline void set_has_flippedx(); + inline void clear_has_flippedx(); + inline void set_has_flippedy(); + inline void clear_has_flippedy(); + inline void set_has_filenamedata(); + inline void clear_has_filenamedata(); + + ::std::string* name_; + ::std::string* classname_; + ::google::protobuf::int32 positiontype_; + float positionpercentx_; + float positionpercenty_; + ::google::protobuf::int32 sizetype_; + float sizepercentx_; + float sizepercenty_; + bool touchable_; + bool usemergedtexture_; + bool ignoresize_; + bool flippedx_; + bool flippedy_; + ::protocolbuffers::LayoutParameter* layoutparameter_; + ::std::string* customproperty_; + ::std::string* filename_; + ::protocolbuffers::ResourceData* filenamedata_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(17 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static SpriteOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class TextFieldOptions : public ::google::protobuf::MessageLite { + public: + TextFieldOptions(); + virtual ~TextFieldOptions(); + + TextFieldOptions(const TextFieldOptions& from); + + inline TextFieldOptions& operator=(const TextFieldOptions& from) { + CopyFrom(from); + return *this; + } + + static const TextFieldOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const TextFieldOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(TextFieldOptions* other); + + // implements Message ---------------------------------------------- + + TextFieldOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const TextFieldOptions& from); + void MergeFrom(const TextFieldOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string fontName = 3; + inline bool has_fontname() const; + inline void clear_fontname(); + static const int kFontNameFieldNumber = 3; + inline const ::std::string& fontname() const; + inline void set_fontname(const ::std::string& value); + inline void set_fontname(const char* value); + inline void set_fontname(const char* value, size_t size); + inline ::std::string* mutable_fontname(); + inline ::std::string* release_fontname(); + inline void set_allocated_fontname(::std::string* fontname); + + // optional .protocolbuffers.ResourceData fontFile = 4; + inline bool has_fontfile() const; + inline void clear_fontfile(); + static const int kFontFileFieldNumber = 4; + inline const ::protocolbuffers::ResourceData& fontfile() const; + inline ::protocolbuffers::ResourceData* mutable_fontfile(); + inline ::protocolbuffers::ResourceData* release_fontfile(); + inline void set_allocated_fontfile(::protocolbuffers::ResourceData* fontfile); + + // optional int32 fontSize = 5; + inline bool has_fontsize() const; + inline void clear_fontsize(); + static const int kFontSizeFieldNumber = 5; + inline ::google::protobuf::int32 fontsize() const; + inline void set_fontsize(::google::protobuf::int32 value); + + // optional string text = 6; + inline bool has_text() const; + inline void clear_text(); + static const int kTextFieldNumber = 6; + inline const ::std::string& text() const; + inline void set_text(const ::std::string& value); + inline void set_text(const char* value); + inline void set_text(const char* value, size_t size); + inline ::std::string* mutable_text(); + inline ::std::string* release_text(); + inline void set_allocated_text(::std::string* text); + + // optional string placeHolder = 7; + inline bool has_placeholder() const; + inline void clear_placeholder(); + static const int kPlaceHolderFieldNumber = 7; + inline const ::std::string& placeholder() const; + inline void set_placeholder(const ::std::string& value); + inline void set_placeholder(const char* value); + inline void set_placeholder(const char* value, size_t size); + inline ::std::string* mutable_placeholder(); + inline ::std::string* release_placeholder(); + inline void set_allocated_placeholder(::std::string* placeholder); + + // optional bool passwordEnable = 8; + inline bool has_passwordenable() const; + inline void clear_passwordenable(); + static const int kPasswordEnableFieldNumber = 8; + inline bool passwordenable() const; + inline void set_passwordenable(bool value); + + // optional string passwordStyleText = 9; + inline bool has_passwordstyletext() const; + inline void clear_passwordstyletext(); + static const int kPasswordStyleTextFieldNumber = 9; + inline const ::std::string& passwordstyletext() const; + inline void set_passwordstyletext(const ::std::string& value); + inline void set_passwordstyletext(const char* value); + inline void set_passwordstyletext(const char* value, size_t size); + inline ::std::string* mutable_passwordstyletext(); + inline ::std::string* release_passwordstyletext(); + inline void set_allocated_passwordstyletext(::std::string* passwordstyletext); + + // optional bool maxLengthEnable = 10; + inline bool has_maxlengthenable() const; + inline void clear_maxlengthenable(); + static const int kMaxLengthEnableFieldNumber = 10; + inline bool maxlengthenable() const; + inline void set_maxlengthenable(bool value); + + // optional int32 maxLength = 11; + inline bool has_maxlength() const; + inline void clear_maxlength(); + static const int kMaxLengthFieldNumber = 11; + inline ::google::protobuf::int32 maxlength() const; + inline void set_maxlength(::google::protobuf::int32 value); + + // optional float areaWidth = 12; + inline bool has_areawidth() const; + inline void clear_areawidth(); + static const int kAreaWidthFieldNumber = 12; + inline float areawidth() const; + inline void set_areawidth(float value); + + // optional float areaHeight = 13; + inline bool has_areaheight() const; + inline void clear_areaheight(); + static const int kAreaHeightFieldNumber = 13; + inline float areaheight() const; + inline void set_areaheight(float value); + + // optional float anchorPointX = 15; + inline bool has_anchorpointx() const; + inline void clear_anchorpointx(); + static const int kAnchorPointXFieldNumber = 15; + inline float anchorpointx() const; + inline void set_anchorpointx(float value); + + // optional float anchorPointY = 16; + inline bool has_anchorpointy() const; + inline void clear_anchorpointy(); + static const int kAnchorPointYFieldNumber = 16; + inline float anchorpointy() const; + inline void set_anchorpointy(float value); + + // optional .protocolbuffers.ResourceData fontResource = 14; + inline bool has_fontresource() const; + inline void clear_fontresource(); + static const int kFontResourceFieldNumber = 14; + inline const ::protocolbuffers::ResourceData& fontresource() const; + inline ::protocolbuffers::ResourceData* mutable_fontresource(); + inline ::protocolbuffers::ResourceData* release_fontresource(); + inline void set_allocated_fontresource(::protocolbuffers::ResourceData* fontresource); + + // optional bool IsCustomSize = 17; + inline bool has_iscustomsize() const; + inline void clear_iscustomsize(); + static const int kIsCustomSizeFieldNumber = 17; + inline bool iscustomsize() const; + inline void set_iscustomsize(bool value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.TextFieldOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_fontname(); + inline void clear_has_fontname(); + inline void set_has_fontfile(); + inline void clear_has_fontfile(); + inline void set_has_fontsize(); + inline void clear_has_fontsize(); + inline void set_has_text(); + inline void clear_has_text(); + inline void set_has_placeholder(); + inline void clear_has_placeholder(); + inline void set_has_passwordenable(); + inline void clear_has_passwordenable(); + inline void set_has_passwordstyletext(); + inline void clear_has_passwordstyletext(); + inline void set_has_maxlengthenable(); + inline void clear_has_maxlengthenable(); + inline void set_has_maxlength(); + inline void clear_has_maxlength(); + inline void set_has_areawidth(); + inline void clear_has_areawidth(); + inline void set_has_areaheight(); + inline void clear_has_areaheight(); + inline void set_has_anchorpointx(); + inline void clear_has_anchorpointx(); + inline void set_has_anchorpointy(); + inline void clear_has_anchorpointy(); + inline void set_has_fontresource(); + inline void clear_has_fontresource(); + inline void set_has_iscustomsize(); + inline void clear_has_iscustomsize(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* fontname_; + ::protocolbuffers::ResourceData* fontfile_; + ::std::string* text_; + ::std::string* placeholder_; + ::google::protobuf::int32 fontsize_; + ::google::protobuf::int32 maxlength_; + ::std::string* passwordstyletext_; + bool passwordenable_; + bool maxlengthenable_; + bool iscustomsize_; + float areawidth_; + float areaheight_; + float anchorpointx_; + ::protocolbuffers::ResourceData* fontresource_; + float anchorpointy_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(17 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static TextFieldOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class TMXTiledMapOptions : public ::google::protobuf::MessageLite { + public: + TMXTiledMapOptions(); + virtual ~TMXTiledMapOptions(); + + TMXTiledMapOptions(const TMXTiledMapOptions& from); + + inline TMXTiledMapOptions& operator=(const TMXTiledMapOptions& from) { + CopyFrom(from); + return *this; + } + + static const TMXTiledMapOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const TMXTiledMapOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(TMXTiledMapOptions* other); + + // implements Message ---------------------------------------------- + + TMXTiledMapOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const TMXTiledMapOptions& from); + void MergeFrom(const TMXTiledMapOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string tmxFile = 1; + inline bool has_tmxfile() const; + inline void clear_tmxfile(); + static const int kTmxFileFieldNumber = 1; + inline const ::std::string& tmxfile() const; + inline void set_tmxfile(const ::std::string& value); + inline void set_tmxfile(const char* value); + inline void set_tmxfile(const char* value, size_t size); + inline ::std::string* mutable_tmxfile(); + inline ::std::string* release_tmxfile(); + inline void set_allocated_tmxfile(::std::string* tmxfile); + + // optional string tmxString = 2; + inline bool has_tmxstring() const; + inline void clear_tmxstring(); + static const int kTmxStringFieldNumber = 2; + inline const ::std::string& tmxstring() const; + inline void set_tmxstring(const ::std::string& value); + inline void set_tmxstring(const char* value); + inline void set_tmxstring(const char* value, size_t size); + inline ::std::string* mutable_tmxstring(); + inline ::std::string* release_tmxstring(); + inline void set_allocated_tmxstring(::std::string* tmxstring); + + // optional string resourcePath = 3; + inline bool has_resourcepath() const; + inline void clear_resourcepath(); + static const int kResourcePathFieldNumber = 3; + inline const ::std::string& resourcepath() const; + inline void set_resourcepath(const ::std::string& value); + inline void set_resourcepath(const char* value); + inline void set_resourcepath(const char* value, size_t size); + inline ::std::string* mutable_resourcepath(); + inline ::std::string* release_resourcepath(); + inline void set_allocated_resourcepath(::std::string* resourcepath); + + // optional .protocolbuffers.ResourceData fileNameData = 4; + inline bool has_filenamedata() const; + inline void clear_filenamedata(); + static const int kFileNameDataFieldNumber = 4; + inline const ::protocolbuffers::ResourceData& filenamedata() const; + inline ::protocolbuffers::ResourceData* mutable_filenamedata(); + inline ::protocolbuffers::ResourceData* release_filenamedata(); + inline void set_allocated_filenamedata(::protocolbuffers::ResourceData* filenamedata); + + // @@protoc_insertion_point(class_scope:protocolbuffers.TMXTiledMapOptions) + private: + inline void set_has_tmxfile(); + inline void clear_has_tmxfile(); + inline void set_has_tmxstring(); + inline void clear_has_tmxstring(); + inline void set_has_resourcepath(); + inline void clear_has_resourcepath(); + inline void set_has_filenamedata(); + inline void clear_has_filenamedata(); + + ::std::string* tmxfile_; + ::std::string* tmxstring_; + ::std::string* resourcepath_; + ::protocolbuffers::ResourceData* filenamedata_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static TMXTiledMapOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class ParticleSystemOptions : public ::google::protobuf::MessageLite { + public: + ParticleSystemOptions(); + virtual ~ParticleSystemOptions(); + + ParticleSystemOptions(const ParticleSystemOptions& from); + + inline ParticleSystemOptions& operator=(const ParticleSystemOptions& from) { + CopyFrom(from); + return *this; + } + + static const ParticleSystemOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ParticleSystemOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(ParticleSystemOptions* other); + + // implements Message ---------------------------------------------- + + ParticleSystemOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const ParticleSystemOptions& from); + void MergeFrom(const ParticleSystemOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string plistFile = 1; + inline bool has_plistfile() const; + inline void clear_plistfile(); + static const int kPlistFileFieldNumber = 1; + inline const ::std::string& plistfile() const; + inline void set_plistfile(const ::std::string& value); + inline void set_plistfile(const char* value); + inline void set_plistfile(const char* value, size_t size); + inline ::std::string* mutable_plistfile(); + inline ::std::string* release_plistfile(); + inline void set_allocated_plistfile(::std::string* plistfile); + + // optional int32 totalParticles = 2; + inline bool has_totalparticles() const; + inline void clear_totalparticles(); + static const int kTotalParticlesFieldNumber = 2; + inline ::google::protobuf::int32 totalparticles() const; + inline void set_totalparticles(::google::protobuf::int32 value); + + // optional .protocolbuffers.ResourceData fileNameData = 3; + inline bool has_filenamedata() const; + inline void clear_filenamedata(); + static const int kFileNameDataFieldNumber = 3; + inline const ::protocolbuffers::ResourceData& filenamedata() const; + inline ::protocolbuffers::ResourceData* mutable_filenamedata(); + inline ::protocolbuffers::ResourceData* release_filenamedata(); + inline void set_allocated_filenamedata(::protocolbuffers::ResourceData* filenamedata); + + // @@protoc_insertion_point(class_scope:protocolbuffers.ParticleSystemOptions) + private: + inline void set_has_plistfile(); + inline void clear_has_plistfile(); + inline void set_has_totalparticles(); + inline void clear_has_totalparticles(); + inline void set_has_filenamedata(); + inline void clear_has_filenamedata(); + + ::std::string* plistfile_; + ::protocolbuffers::ResourceData* filenamedata_; + ::google::protobuf::int32 totalparticles_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static ParticleSystemOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class ProjectNodeOptions : public ::google::protobuf::MessageLite { + public: + ProjectNodeOptions(); + virtual ~ProjectNodeOptions(); + + ProjectNodeOptions(const ProjectNodeOptions& from); + + inline ProjectNodeOptions& operator=(const ProjectNodeOptions& from) { + CopyFrom(from); + return *this; + } + + static const ProjectNodeOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ProjectNodeOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(ProjectNodeOptions* other); + + // implements Message ---------------------------------------------- + + ProjectNodeOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const ProjectNodeOptions& from); + void MergeFrom(const ProjectNodeOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string fileName = 1; + inline bool has_filename() const; + inline void clear_filename(); + static const int kFileNameFieldNumber = 1; + inline const ::std::string& filename() const; + inline void set_filename(const ::std::string& value); + inline void set_filename(const char* value); + inline void set_filename(const char* value, size_t size); + inline ::std::string* mutable_filename(); + inline ::std::string* release_filename(); + inline void set_allocated_filename(::std::string* filename); + + // @@protoc_insertion_point(class_scope:protocolbuffers.ProjectNodeOptions) + private: + inline void set_has_filename(); + inline void clear_has_filename(); + + ::std::string* filename_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static ProjectNodeOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class ComponentOptions : public ::google::protobuf::MessageLite { + public: + ComponentOptions(); + virtual ~ComponentOptions(); + + ComponentOptions(const ComponentOptions& from); + + inline ComponentOptions& operator=(const ComponentOptions& from) { + CopyFrom(from); + return *this; + } + + static const ComponentOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ComponentOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(ComponentOptions* other); + + // implements Message ---------------------------------------------- + + ComponentOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const ComponentOptions& from); + void MergeFrom(const ComponentOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string type = 1; + inline bool has_type() const; + inline void clear_type(); + static const int kTypeFieldNumber = 1; + inline const ::std::string& type() const; + inline void set_type(const ::std::string& value); + inline void set_type(const char* value); + inline void set_type(const char* value, size_t size); + inline ::std::string* mutable_type(); + inline ::std::string* release_type(); + inline void set_allocated_type(::std::string* type); + + // optional .protocolbuffers.ComAudioOptions comAudioOptions = 2; + inline bool has_comaudiooptions() const; + inline void clear_comaudiooptions(); + static const int kComAudioOptionsFieldNumber = 2; + inline const ::protocolbuffers::ComAudioOptions& comaudiooptions() const; + inline ::protocolbuffers::ComAudioOptions* mutable_comaudiooptions(); + inline ::protocolbuffers::ComAudioOptions* release_comaudiooptions(); + inline void set_allocated_comaudiooptions(::protocolbuffers::ComAudioOptions* comaudiooptions); + + // @@protoc_insertion_point(class_scope:protocolbuffers.ComponentOptions) + private: + inline void set_has_type(); + inline void clear_has_type(); + inline void set_has_comaudiooptions(); + inline void clear_has_comaudiooptions(); + + ::std::string* type_; + ::protocolbuffers::ComAudioOptions* comaudiooptions_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static ComponentOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class ComAudioOptions : public ::google::protobuf::MessageLite { + public: + ComAudioOptions(); + virtual ~ComAudioOptions(); + + ComAudioOptions(const ComAudioOptions& from); + + inline ComAudioOptions& operator=(const ComAudioOptions& from) { + CopyFrom(from); + return *this; + } + + static const ComAudioOptions& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ComAudioOptions* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(ComAudioOptions* other); + + // implements Message ---------------------------------------------- + + ComAudioOptions* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const ComAudioOptions& from); + void MergeFrom(const ComAudioOptions& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional bool enabled = 2; + inline bool has_enabled() const; + inline void clear_enabled(); + static const int kEnabledFieldNumber = 2; + inline bool enabled() const; + inline void set_enabled(bool value); + + // optional bool loop = 3; + inline bool has_loop() const; + inline void clear_loop(); + static const int kLoopFieldNumber = 3; + inline bool loop() const; + inline void set_loop(bool value); + + // optional int32 volume = 4; + inline bool has_volume() const; + inline void clear_volume(); + static const int kVolumeFieldNumber = 4; + inline ::google::protobuf::int32 volume() const; + inline void set_volume(::google::protobuf::int32 value); + + // optional .protocolbuffers.ResourceData fileNameData = 5; + inline bool has_filenamedata() const; + inline void clear_filenamedata(); + static const int kFileNameDataFieldNumber = 5; + inline const ::protocolbuffers::ResourceData& filenamedata() const; + inline ::protocolbuffers::ResourceData* mutable_filenamedata(); + inline ::protocolbuffers::ResourceData* release_filenamedata(); + inline void set_allocated_filenamedata(::protocolbuffers::ResourceData* filenamedata); + + // @@protoc_insertion_point(class_scope:protocolbuffers.ComAudioOptions) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_enabled(); + inline void clear_has_enabled(); + inline void set_has_loop(); + inline void clear_has_loop(); + inline void set_has_volume(); + inline void clear_has_volume(); + inline void set_has_filenamedata(); + inline void clear_has_filenamedata(); + + ::std::string* name_; + bool enabled_; + bool loop_; + ::google::protobuf::int32 volume_; + ::protocolbuffers::ResourceData* filenamedata_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static ComAudioOptions* default_instance_; +}; +// ------------------------------------------------------------------- + +class NodeAction : public ::google::protobuf::MessageLite { + public: + NodeAction(); + virtual ~NodeAction(); + + NodeAction(const NodeAction& from); + + inline NodeAction& operator=(const NodeAction& from) { + CopyFrom(from); + return *this; + } + + static const NodeAction& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const NodeAction* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(NodeAction* other); + + // implements Message ---------------------------------------------- + + NodeAction* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const NodeAction& from); + void MergeFrom(const NodeAction& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional int32 duration = 3; + inline bool has_duration() const; + inline void clear_duration(); + static const int kDurationFieldNumber = 3; + inline ::google::protobuf::int32 duration() const; + inline void set_duration(::google::protobuf::int32 value); + + // optional float speed = 4; + inline bool has_speed() const; + inline void clear_speed(); + static const int kSpeedFieldNumber = 4; + inline float speed() const; + inline void set_speed(float value); + + // repeated .protocolbuffers.TimeLine timelines = 5; + inline int timelines_size() const; + inline void clear_timelines(); + static const int kTimelinesFieldNumber = 5; + inline const ::protocolbuffers::TimeLine& timelines(int index) const; + inline ::protocolbuffers::TimeLine* mutable_timelines(int index); + inline ::protocolbuffers::TimeLine* add_timelines(); + inline const ::google::protobuf::RepeatedPtrField< ::protocolbuffers::TimeLine >& + timelines() const; + inline ::google::protobuf::RepeatedPtrField< ::protocolbuffers::TimeLine >* + mutable_timelines(); + + // @@protoc_insertion_point(class_scope:protocolbuffers.NodeAction) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_duration(); + inline void clear_has_duration(); + inline void set_has_speed(); + inline void clear_has_speed(); + + ::std::string* name_; + ::std::string* classname_; + ::google::protobuf::int32 duration_; + float speed_; + ::google::protobuf::RepeatedPtrField< ::protocolbuffers::TimeLine > timelines_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static NodeAction* default_instance_; +}; +// ------------------------------------------------------------------- + +class TimeLine : public ::google::protobuf::MessageLite { + public: + TimeLine(); + virtual ~TimeLine(); + + TimeLine(const TimeLine& from); + + inline TimeLine& operator=(const TimeLine& from) { + CopyFrom(from); + return *this; + } + + static const TimeLine& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const TimeLine* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(TimeLine* other); + + // implements Message ---------------------------------------------- + + TimeLine* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const TimeLine& from); + void MergeFrom(const TimeLine& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional string frameType = 3; + inline bool has_frametype() const; + inline void clear_frametype(); + static const int kFrameTypeFieldNumber = 3; + inline const ::std::string& frametype() const; + inline void set_frametype(const ::std::string& value); + inline void set_frametype(const char* value); + inline void set_frametype(const char* value, size_t size); + inline ::std::string* mutable_frametype(); + inline ::std::string* release_frametype(); + inline void set_allocated_frametype(::std::string* frametype); + + // optional int32 actionTag = 4; + inline bool has_actiontag() const; + inline void clear_actiontag(); + static const int kActionTagFieldNumber = 4; + inline ::google::protobuf::int32 actiontag() const; + inline void set_actiontag(::google::protobuf::int32 value); + + // repeated .protocolbuffers.Frame frames = 5; + inline int frames_size() const; + inline void clear_frames(); + static const int kFramesFieldNumber = 5; + inline const ::protocolbuffers::Frame& frames(int index) const; + inline ::protocolbuffers::Frame* mutable_frames(int index); + inline ::protocolbuffers::Frame* add_frames(); + inline const ::google::protobuf::RepeatedPtrField< ::protocolbuffers::Frame >& + frames() const; + inline ::google::protobuf::RepeatedPtrField< ::protocolbuffers::Frame >* + mutable_frames(); + + // @@protoc_insertion_point(class_scope:protocolbuffers.TimeLine) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_frametype(); + inline void clear_has_frametype(); + inline void set_has_actiontag(); + inline void clear_has_actiontag(); + + ::std::string* name_; + ::std::string* classname_; + ::std::string* frametype_; + ::google::protobuf::RepeatedPtrField< ::protocolbuffers::Frame > frames_; + ::google::protobuf::int32 actiontag_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static TimeLine* default_instance_; +}; +// ------------------------------------------------------------------- + +class Frame : public ::google::protobuf::MessageLite { + public: + Frame(); + virtual ~Frame(); + + Frame(const Frame& from); + + inline Frame& operator=(const Frame& from) { + CopyFrom(from); + return *this; + } + + static const Frame& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const Frame* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(Frame* other); + + // implements Message ---------------------------------------------- + + Frame* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const Frame& from); + void MergeFrom(const Frame& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional .protocolbuffers.TimeLineBoolFrame visibleFrame = 5; + inline bool has_visibleframe() const; + inline void clear_visibleframe(); + static const int kVisibleFrameFieldNumber = 5; + inline const ::protocolbuffers::TimeLineBoolFrame& visibleframe() const; + inline ::protocolbuffers::TimeLineBoolFrame* mutable_visibleframe(); + inline ::protocolbuffers::TimeLineBoolFrame* release_visibleframe(); + inline void set_allocated_visibleframe(::protocolbuffers::TimeLineBoolFrame* visibleframe); + + // optional .protocolbuffers.TimeLineIntFrame zOrderFrame = 6; + inline bool has_zorderframe() const; + inline void clear_zorderframe(); + static const int kZOrderFrameFieldNumber = 6; + inline const ::protocolbuffers::TimeLineIntFrame& zorderframe() const; + inline ::protocolbuffers::TimeLineIntFrame* mutable_zorderframe(); + inline ::protocolbuffers::TimeLineIntFrame* release_zorderframe(); + inline void set_allocated_zorderframe(::protocolbuffers::TimeLineIntFrame* zorderframe); + + // optional .protocolbuffers.TimeLinePointFrame rotationSkewFrame = 7; + inline bool has_rotationskewframe() const; + inline void clear_rotationskewframe(); + static const int kRotationSkewFrameFieldNumber = 7; + inline const ::protocolbuffers::TimeLinePointFrame& rotationskewframe() const; + inline ::protocolbuffers::TimeLinePointFrame* mutable_rotationskewframe(); + inline ::protocolbuffers::TimeLinePointFrame* release_rotationskewframe(); + inline void set_allocated_rotationskewframe(::protocolbuffers::TimeLinePointFrame* rotationskewframe); + + // optional .protocolbuffers.TimeLineStringFrame eventFrame = 8; + inline bool has_eventframe() const; + inline void clear_eventframe(); + static const int kEventFrameFieldNumber = 8; + inline const ::protocolbuffers::TimeLineStringFrame& eventframe() const; + inline ::protocolbuffers::TimeLineStringFrame* mutable_eventframe(); + inline ::protocolbuffers::TimeLineStringFrame* release_eventframe(); + inline void set_allocated_eventframe(::protocolbuffers::TimeLineStringFrame* eventframe); + + // optional .protocolbuffers.TimeLinePointFrame anchorPointFrame = 9; + inline bool has_anchorpointframe() const; + inline void clear_anchorpointframe(); + static const int kAnchorPointFrameFieldNumber = 9; + inline const ::protocolbuffers::TimeLinePointFrame& anchorpointframe() const; + inline ::protocolbuffers::TimeLinePointFrame* mutable_anchorpointframe(); + inline ::protocolbuffers::TimeLinePointFrame* release_anchorpointframe(); + inline void set_allocated_anchorpointframe(::protocolbuffers::TimeLinePointFrame* anchorpointframe); + + // optional .protocolbuffers.TimeLinePointFrame positionFrame = 10; + inline bool has_positionframe() const; + inline void clear_positionframe(); + static const int kPositionFrameFieldNumber = 10; + inline const ::protocolbuffers::TimeLinePointFrame& positionframe() const; + inline ::protocolbuffers::TimeLinePointFrame* mutable_positionframe(); + inline ::protocolbuffers::TimeLinePointFrame* release_positionframe(); + inline void set_allocated_positionframe(::protocolbuffers::TimeLinePointFrame* positionframe); + + // optional .protocolbuffers.TimeLinePointFrame scaleFrame = 11; + inline bool has_scaleframe() const; + inline void clear_scaleframe(); + static const int kScaleFrameFieldNumber = 11; + inline const ::protocolbuffers::TimeLinePointFrame& scaleframe() const; + inline ::protocolbuffers::TimeLinePointFrame* mutable_scaleframe(); + inline ::protocolbuffers::TimeLinePointFrame* release_scaleframe(); + inline void set_allocated_scaleframe(::protocolbuffers::TimeLinePointFrame* scaleframe); + + // optional .protocolbuffers.TimeLineColorFrame colorFrame = 12; + inline bool has_colorframe() const; + inline void clear_colorframe(); + static const int kColorFrameFieldNumber = 12; + inline const ::protocolbuffers::TimeLineColorFrame& colorframe() const; + inline ::protocolbuffers::TimeLineColorFrame* mutable_colorframe(); + inline ::protocolbuffers::TimeLineColorFrame* release_colorframe(); + inline void set_allocated_colorframe(::protocolbuffers::TimeLineColorFrame* colorframe); + + // optional .protocolbuffers.TimeLineTextureFrame textureFrame = 13; + inline bool has_textureframe() const; + inline void clear_textureframe(); + static const int kTextureFrameFieldNumber = 13; + inline const ::protocolbuffers::TimeLineTextureFrame& textureframe() const; + inline ::protocolbuffers::TimeLineTextureFrame* mutable_textureframe(); + inline ::protocolbuffers::TimeLineTextureFrame* release_textureframe(); + inline void set_allocated_textureframe(::protocolbuffers::TimeLineTextureFrame* textureframe); + + // @@protoc_insertion_point(class_scope:protocolbuffers.Frame) + private: + inline void set_has_visibleframe(); + inline void clear_has_visibleframe(); + inline void set_has_zorderframe(); + inline void clear_has_zorderframe(); + inline void set_has_rotationskewframe(); + inline void clear_has_rotationskewframe(); + inline void set_has_eventframe(); + inline void clear_has_eventframe(); + inline void set_has_anchorpointframe(); + inline void clear_has_anchorpointframe(); + inline void set_has_positionframe(); + inline void clear_has_positionframe(); + inline void set_has_scaleframe(); + inline void clear_has_scaleframe(); + inline void set_has_colorframe(); + inline void clear_has_colorframe(); + inline void set_has_textureframe(); + inline void clear_has_textureframe(); + + ::protocolbuffers::TimeLineBoolFrame* visibleframe_; + ::protocolbuffers::TimeLineIntFrame* zorderframe_; + ::protocolbuffers::TimeLinePointFrame* rotationskewframe_; + ::protocolbuffers::TimeLineStringFrame* eventframe_; + ::protocolbuffers::TimeLinePointFrame* anchorpointframe_; + ::protocolbuffers::TimeLinePointFrame* positionframe_; + ::protocolbuffers::TimeLinePointFrame* scaleframe_; + ::protocolbuffers::TimeLineColorFrame* colorframe_; + ::protocolbuffers::TimeLineTextureFrame* textureframe_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(9 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static Frame* default_instance_; +}; +// ------------------------------------------------------------------- + +class TimeLineBoolFrame : public ::google::protobuf::MessageLite { + public: + TimeLineBoolFrame(); + virtual ~TimeLineBoolFrame(); + + TimeLineBoolFrame(const TimeLineBoolFrame& from); + + inline TimeLineBoolFrame& operator=(const TimeLineBoolFrame& from) { + CopyFrom(from); + return *this; + } + + static const TimeLineBoolFrame& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const TimeLineBoolFrame* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(TimeLineBoolFrame* other); + + // implements Message ---------------------------------------------- + + TimeLineBoolFrame* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const TimeLineBoolFrame& from); + void MergeFrom(const TimeLineBoolFrame& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional int32 frameIndex = 3; + inline bool has_frameindex() const; + inline void clear_frameindex(); + static const int kFrameIndexFieldNumber = 3; + inline ::google::protobuf::int32 frameindex() const; + inline void set_frameindex(::google::protobuf::int32 value); + + // optional bool tween = 4; + inline bool has_tween() const; + inline void clear_tween(); + static const int kTweenFieldNumber = 4; + inline bool tween() const; + inline void set_tween(bool value); + + // optional bool value = 5; + inline bool has_value() const; + inline void clear_value(); + static const int kValueFieldNumber = 5; + inline bool value() const; + inline void set_value(bool value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.TimeLineBoolFrame) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_frameindex(); + inline void clear_has_frameindex(); + inline void set_has_tween(); + inline void clear_has_tween(); + inline void set_has_value(); + inline void clear_has_value(); + + ::std::string* name_; + ::std::string* classname_; + ::google::protobuf::int32 frameindex_; + bool tween_; + bool value_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static TimeLineBoolFrame* default_instance_; +}; +// ------------------------------------------------------------------- + +class TimeLineIntFrame : public ::google::protobuf::MessageLite { + public: + TimeLineIntFrame(); + virtual ~TimeLineIntFrame(); + + TimeLineIntFrame(const TimeLineIntFrame& from); + + inline TimeLineIntFrame& operator=(const TimeLineIntFrame& from) { + CopyFrom(from); + return *this; + } + + static const TimeLineIntFrame& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const TimeLineIntFrame* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(TimeLineIntFrame* other); + + // implements Message ---------------------------------------------- + + TimeLineIntFrame* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const TimeLineIntFrame& from); + void MergeFrom(const TimeLineIntFrame& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional int32 frameIndex = 3; + inline bool has_frameindex() const; + inline void clear_frameindex(); + static const int kFrameIndexFieldNumber = 3; + inline ::google::protobuf::int32 frameindex() const; + inline void set_frameindex(::google::protobuf::int32 value); + + // optional bool tween = 4; + inline bool has_tween() const; + inline void clear_tween(); + static const int kTweenFieldNumber = 4; + inline bool tween() const; + inline void set_tween(bool value); + + // optional int32 value = 5; + inline bool has_value() const; + inline void clear_value(); + static const int kValueFieldNumber = 5; + inline ::google::protobuf::int32 value() const; + inline void set_value(::google::protobuf::int32 value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.TimeLineIntFrame) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_frameindex(); + inline void clear_has_frameindex(); + inline void set_has_tween(); + inline void clear_has_tween(); + inline void set_has_value(); + inline void clear_has_value(); + + ::std::string* name_; + ::std::string* classname_; + ::google::protobuf::int32 frameindex_; + bool tween_; + ::google::protobuf::int32 value_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static TimeLineIntFrame* default_instance_; +}; +// ------------------------------------------------------------------- + +class TimeLineStringFrame : public ::google::protobuf::MessageLite { + public: + TimeLineStringFrame(); + virtual ~TimeLineStringFrame(); + + TimeLineStringFrame(const TimeLineStringFrame& from); + + inline TimeLineStringFrame& operator=(const TimeLineStringFrame& from) { + CopyFrom(from); + return *this; + } + + static const TimeLineStringFrame& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const TimeLineStringFrame* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(TimeLineStringFrame* other); + + // implements Message ---------------------------------------------- + + TimeLineStringFrame* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const TimeLineStringFrame& from); + void MergeFrom(const TimeLineStringFrame& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional int32 frameIndex = 3; + inline bool has_frameindex() const; + inline void clear_frameindex(); + static const int kFrameIndexFieldNumber = 3; + inline ::google::protobuf::int32 frameindex() const; + inline void set_frameindex(::google::protobuf::int32 value); + + // optional bool tween = 4; + inline bool has_tween() const; + inline void clear_tween(); + static const int kTweenFieldNumber = 4; + inline bool tween() const; + inline void set_tween(bool value); + + // optional string value = 5; + inline bool has_value() const; + inline void clear_value(); + static const int kValueFieldNumber = 5; + inline const ::std::string& value() const; + inline void set_value(const ::std::string& value); + inline void set_value(const char* value); + inline void set_value(const char* value, size_t size); + inline ::std::string* mutable_value(); + inline ::std::string* release_value(); + inline void set_allocated_value(::std::string* value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.TimeLineStringFrame) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_frameindex(); + inline void clear_has_frameindex(); + inline void set_has_tween(); + inline void clear_has_tween(); + inline void set_has_value(); + inline void clear_has_value(); + + ::std::string* name_; + ::std::string* classname_; + ::google::protobuf::int32 frameindex_; + bool tween_; + ::std::string* value_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static TimeLineStringFrame* default_instance_; +}; +// ------------------------------------------------------------------- + +class TimeLinePointFrame : public ::google::protobuf::MessageLite { + public: + TimeLinePointFrame(); + virtual ~TimeLinePointFrame(); + + TimeLinePointFrame(const TimeLinePointFrame& from); + + inline TimeLinePointFrame& operator=(const TimeLinePointFrame& from) { + CopyFrom(from); + return *this; + } + + static const TimeLinePointFrame& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const TimeLinePointFrame* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(TimeLinePointFrame* other); + + // implements Message ---------------------------------------------- + + TimeLinePointFrame* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const TimeLinePointFrame& from); + void MergeFrom(const TimeLinePointFrame& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional int32 frameIndex = 3; + inline bool has_frameindex() const; + inline void clear_frameindex(); + static const int kFrameIndexFieldNumber = 3; + inline ::google::protobuf::int32 frameindex() const; + inline void set_frameindex(::google::protobuf::int32 value); + + // optional bool tween = 4; + inline bool has_tween() const; + inline void clear_tween(); + static const int kTweenFieldNumber = 4; + inline bool tween() const; + inline void set_tween(bool value); + + // optional float x = 5; + inline bool has_x() const; + inline void clear_x(); + static const int kXFieldNumber = 5; + inline float x() const; + inline void set_x(float value); + + // optional float y = 6; + inline bool has_y() const; + inline void clear_y(); + static const int kYFieldNumber = 6; + inline float y() const; + inline void set_y(float value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.TimeLinePointFrame) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_frameindex(); + inline void clear_has_frameindex(); + inline void set_has_tween(); + inline void clear_has_tween(); + inline void set_has_x(); + inline void clear_has_x(); + inline void set_has_y(); + inline void clear_has_y(); + + ::std::string* name_; + ::std::string* classname_; + ::google::protobuf::int32 frameindex_; + bool tween_; + float x_; + float y_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static TimeLinePointFrame* default_instance_; +}; +// ------------------------------------------------------------------- + +class TimeLineColorFrame : public ::google::protobuf::MessageLite { + public: + TimeLineColorFrame(); + virtual ~TimeLineColorFrame(); + + TimeLineColorFrame(const TimeLineColorFrame& from); + + inline TimeLineColorFrame& operator=(const TimeLineColorFrame& from) { + CopyFrom(from); + return *this; + } + + static const TimeLineColorFrame& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const TimeLineColorFrame* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(TimeLineColorFrame* other); + + // implements Message ---------------------------------------------- + + TimeLineColorFrame* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const TimeLineColorFrame& from); + void MergeFrom(const TimeLineColorFrame& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional int32 frameIndex = 3; + inline bool has_frameindex() const; + inline void clear_frameindex(); + static const int kFrameIndexFieldNumber = 3; + inline ::google::protobuf::int32 frameindex() const; + inline void set_frameindex(::google::protobuf::int32 value); + + // optional bool tween = 4; + inline bool has_tween() const; + inline void clear_tween(); + static const int kTweenFieldNumber = 4; + inline bool tween() const; + inline void set_tween(bool value); + + // optional int32 alpha = 5; + inline bool has_alpha() const; + inline void clear_alpha(); + static const int kAlphaFieldNumber = 5; + inline ::google::protobuf::int32 alpha() const; + inline void set_alpha(::google::protobuf::int32 value); + + // optional int32 red = 6; + inline bool has_red() const; + inline void clear_red(); + static const int kRedFieldNumber = 6; + inline ::google::protobuf::int32 red() const; + inline void set_red(::google::protobuf::int32 value); + + // optional int32 green = 7; + inline bool has_green() const; + inline void clear_green(); + static const int kGreenFieldNumber = 7; + inline ::google::protobuf::int32 green() const; + inline void set_green(::google::protobuf::int32 value); + + // optional int32 blue = 8; + inline bool has_blue() const; + inline void clear_blue(); + static const int kBlueFieldNumber = 8; + inline ::google::protobuf::int32 blue() const; + inline void set_blue(::google::protobuf::int32 value); + + // @@protoc_insertion_point(class_scope:protocolbuffers.TimeLineColorFrame) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_frameindex(); + inline void clear_has_frameindex(); + inline void set_has_tween(); + inline void clear_has_tween(); + inline void set_has_alpha(); + inline void clear_has_alpha(); + inline void set_has_red(); + inline void clear_has_red(); + inline void set_has_green(); + inline void clear_has_green(); + inline void set_has_blue(); + inline void clear_has_blue(); + + ::std::string* name_; + ::std::string* classname_; + ::google::protobuf::int32 frameindex_; + bool tween_; + ::google::protobuf::int32 alpha_; + ::google::protobuf::int32 red_; + ::google::protobuf::int32 green_; + ::google::protobuf::int32 blue_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static TimeLineColorFrame* default_instance_; +}; +// ------------------------------------------------------------------- + +class TimeLineTextureFrame : public ::google::protobuf::MessageLite { + public: + TimeLineTextureFrame(); + virtual ~TimeLineTextureFrame(); + + TimeLineTextureFrame(const TimeLineTextureFrame& from); + + inline TimeLineTextureFrame& operator=(const TimeLineTextureFrame& from) { + CopyFrom(from); + return *this; + } + + static const TimeLineTextureFrame& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const TimeLineTextureFrame* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(TimeLineTextureFrame* other); + + // implements Message ---------------------------------------------- + + TimeLineTextureFrame* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const TimeLineTextureFrame& from); + void MergeFrom(const TimeLineTextureFrame& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // optional string name = 1; + inline bool has_name() const; + inline void clear_name(); + static const int kNameFieldNumber = 1; + inline const ::std::string& name() const; + inline void set_name(const ::std::string& value); + inline void set_name(const char* value); + inline void set_name(const char* value, size_t size); + inline ::std::string* mutable_name(); + inline ::std::string* release_name(); + inline void set_allocated_name(::std::string* name); + + // optional string classname = 2; + inline bool has_classname() const; + inline void clear_classname(); + static const int kClassnameFieldNumber = 2; + inline const ::std::string& classname() const; + inline void set_classname(const ::std::string& value); + inline void set_classname(const char* value); + inline void set_classname(const char* value, size_t size); + inline ::std::string* mutable_classname(); + inline ::std::string* release_classname(); + inline void set_allocated_classname(::std::string* classname); + + // optional int32 frameIndex = 3; + inline bool has_frameindex() const; + inline void clear_frameindex(); + static const int kFrameIndexFieldNumber = 3; + inline ::google::protobuf::int32 frameindex() const; + inline void set_frameindex(::google::protobuf::int32 value); + + // optional bool tween = 4; + inline bool has_tween() const; + inline void clear_tween(); + static const int kTweenFieldNumber = 4; + inline bool tween() const; + inline void set_tween(bool value); + + // optional string filePath = 5; + inline bool has_filepath() const; + inline void clear_filepath(); + static const int kFilePathFieldNumber = 5; + inline const ::std::string& filepath() const; + inline void set_filepath(const ::std::string& value); + inline void set_filepath(const char* value); + inline void set_filepath(const char* value, size_t size); + inline ::std::string* mutable_filepath(); + inline ::std::string* release_filepath(); + inline void set_allocated_filepath(::std::string* filepath); + + // optional string plistFile = 6; + inline bool has_plistfile() const; + inline void clear_plistfile(); + static const int kPlistFileFieldNumber = 6; + inline const ::std::string& plistfile() const; + inline void set_plistfile(const ::std::string& value); + inline void set_plistfile(const char* value); + inline void set_plistfile(const char* value, size_t size); + inline ::std::string* mutable_plistfile(); + inline ::std::string* release_plistfile(); + inline void set_allocated_plistfile(::std::string* plistfile); + + // @@protoc_insertion_point(class_scope:protocolbuffers.TimeLineTextureFrame) + private: + inline void set_has_name(); + inline void clear_has_name(); + inline void set_has_classname(); + inline void clear_has_classname(); + inline void set_has_frameindex(); + inline void clear_has_frameindex(); + inline void set_has_tween(); + inline void clear_has_tween(); + inline void set_has_filepath(); + inline void clear_has_filepath(); + inline void set_has_plistfile(); + inline void clear_has_plistfile(); + + ::std::string* name_; + ::std::string* classname_; + ::google::protobuf::int32 frameindex_; + bool tween_; + ::std::string* filepath_; + ::std::string* plistfile_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_CSParseBinary_2eproto_impl(); + #else + friend void protobuf_AddDesc_CSParseBinary_2eproto(); + #endif + friend void protobuf_AssignDesc_CSParseBinary_2eproto(); + friend void protobuf_ShutdownFile_CSParseBinary_2eproto(); + + void InitAsDefaultInstance(); + static TimeLineTextureFrame* default_instance_; +}; +// =================================================================== + + +// =================================================================== + +// CSParseBinary + +// optional string version = 1; +inline bool CSParseBinary::has_version() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void CSParseBinary::set_has_version() { + _has_bits_[0] |= 0x00000001u; +} +inline void CSParseBinary::clear_has_version() { + _has_bits_[0] &= ~0x00000001u; +} +inline void CSParseBinary::clear_version() { + if (version_ != &::google::protobuf::internal::kEmptyString) { + version_->clear(); + } + clear_has_version(); +} +inline const ::std::string& CSParseBinary::version() const { + return *version_; +} +inline void CSParseBinary::set_version(const ::std::string& value) { + set_has_version(); + if (version_ == &::google::protobuf::internal::kEmptyString) { + version_ = new ::std::string; + } + version_->assign(value); +} +inline void CSParseBinary::set_version(const char* value) { + set_has_version(); + if (version_ == &::google::protobuf::internal::kEmptyString) { + version_ = new ::std::string; + } + version_->assign(value); +} +inline void CSParseBinary::set_version(const char* value, size_t size) { + set_has_version(); + if (version_ == &::google::protobuf::internal::kEmptyString) { + version_ = new ::std::string; + } + version_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CSParseBinary::mutable_version() { + set_has_version(); + if (version_ == &::google::protobuf::internal::kEmptyString) { + version_ = new ::std::string; + } + return version_; +} +inline ::std::string* CSParseBinary::release_version() { + clear_has_version(); + if (version_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = version_; + version_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CSParseBinary::set_allocated_version(::std::string* version) { + if (version_ != &::google::protobuf::internal::kEmptyString) { + delete version_; + } + if (version) { + set_has_version(); + version_ = version; + } else { + clear_has_version(); + version_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string cocos2dVersion = 2; +inline bool CSParseBinary::has_cocos2dversion() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void CSParseBinary::set_has_cocos2dversion() { + _has_bits_[0] |= 0x00000002u; +} +inline void CSParseBinary::clear_has_cocos2dversion() { + _has_bits_[0] &= ~0x00000002u; +} +inline void CSParseBinary::clear_cocos2dversion() { + if (cocos2dversion_ != &::google::protobuf::internal::kEmptyString) { + cocos2dversion_->clear(); + } + clear_has_cocos2dversion(); +} +inline const ::std::string& CSParseBinary::cocos2dversion() const { + return *cocos2dversion_; +} +inline void CSParseBinary::set_cocos2dversion(const ::std::string& value) { + set_has_cocos2dversion(); + if (cocos2dversion_ == &::google::protobuf::internal::kEmptyString) { + cocos2dversion_ = new ::std::string; + } + cocos2dversion_->assign(value); +} +inline void CSParseBinary::set_cocos2dversion(const char* value) { + set_has_cocos2dversion(); + if (cocos2dversion_ == &::google::protobuf::internal::kEmptyString) { + cocos2dversion_ = new ::std::string; + } + cocos2dversion_->assign(value); +} +inline void CSParseBinary::set_cocos2dversion(const char* value, size_t size) { + set_has_cocos2dversion(); + if (cocos2dversion_ == &::google::protobuf::internal::kEmptyString) { + cocos2dversion_ = new ::std::string; + } + cocos2dversion_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CSParseBinary::mutable_cocos2dversion() { + set_has_cocos2dversion(); + if (cocos2dversion_ == &::google::protobuf::internal::kEmptyString) { + cocos2dversion_ = new ::std::string; + } + return cocos2dversion_; +} +inline ::std::string* CSParseBinary::release_cocos2dversion() { + clear_has_cocos2dversion(); + if (cocos2dversion_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = cocos2dversion_; + cocos2dversion_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CSParseBinary::set_allocated_cocos2dversion(::std::string* cocos2dversion) { + if (cocos2dversion_ != &::google::protobuf::internal::kEmptyString) { + delete cocos2dversion_; + } + if (cocos2dversion) { + set_has_cocos2dversion(); + cocos2dversion_ = cocos2dversion; + } else { + clear_has_cocos2dversion(); + cocos2dversion_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string editorType = 3; +inline bool CSParseBinary::has_editortype() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void CSParseBinary::set_has_editortype() { + _has_bits_[0] |= 0x00000004u; +} +inline void CSParseBinary::clear_has_editortype() { + _has_bits_[0] &= ~0x00000004u; +} +inline void CSParseBinary::clear_editortype() { + if (editortype_ != &::google::protobuf::internal::kEmptyString) { + editortype_->clear(); + } + clear_has_editortype(); +} +inline const ::std::string& CSParseBinary::editortype() const { + return *editortype_; +} +inline void CSParseBinary::set_editortype(const ::std::string& value) { + set_has_editortype(); + if (editortype_ == &::google::protobuf::internal::kEmptyString) { + editortype_ = new ::std::string; + } + editortype_->assign(value); +} +inline void CSParseBinary::set_editortype(const char* value) { + set_has_editortype(); + if (editortype_ == &::google::protobuf::internal::kEmptyString) { + editortype_ = new ::std::string; + } + editortype_->assign(value); +} +inline void CSParseBinary::set_editortype(const char* value, size_t size) { + set_has_editortype(); + if (editortype_ == &::google::protobuf::internal::kEmptyString) { + editortype_ = new ::std::string; + } + editortype_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CSParseBinary::mutable_editortype() { + set_has_editortype(); + if (editortype_ == &::google::protobuf::internal::kEmptyString) { + editortype_ = new ::std::string; + } + return editortype_; +} +inline ::std::string* CSParseBinary::release_editortype() { + clear_has_editortype(); + if (editortype_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = editortype_; + editortype_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CSParseBinary::set_allocated_editortype(::std::string* editortype) { + if (editortype_ != &::google::protobuf::internal::kEmptyString) { + delete editortype_; + } + if (editortype) { + set_has_editortype(); + editortype_ = editortype; + } else { + clear_has_editortype(); + editortype_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional float dataScale = 4; +inline bool CSParseBinary::has_datascale() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void CSParseBinary::set_has_datascale() { + _has_bits_[0] |= 0x00000008u; +} +inline void CSParseBinary::clear_has_datascale() { + _has_bits_[0] &= ~0x00000008u; +} +inline void CSParseBinary::clear_datascale() { + datascale_ = 0; + clear_has_datascale(); +} +inline float CSParseBinary::datascale() const { + return datascale_; +} +inline void CSParseBinary::set_datascale(float value) { + set_has_datascale(); + datascale_ = value; +} + +// optional int32 designHeight = 5; +inline bool CSParseBinary::has_designheight() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void CSParseBinary::set_has_designheight() { + _has_bits_[0] |= 0x00000010u; +} +inline void CSParseBinary::clear_has_designheight() { + _has_bits_[0] &= ~0x00000010u; +} +inline void CSParseBinary::clear_designheight() { + designheight_ = 0; + clear_has_designheight(); +} +inline ::google::protobuf::int32 CSParseBinary::designheight() const { + return designheight_; +} +inline void CSParseBinary::set_designheight(::google::protobuf::int32 value) { + set_has_designheight(); + designheight_ = value; +} + +// optional int32 designWidth = 6; +inline bool CSParseBinary::has_designwidth() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void CSParseBinary::set_has_designwidth() { + _has_bits_[0] |= 0x00000020u; +} +inline void CSParseBinary::clear_has_designwidth() { + _has_bits_[0] &= ~0x00000020u; +} +inline void CSParseBinary::clear_designwidth() { + designwidth_ = 0; + clear_has_designwidth(); +} +inline ::google::protobuf::int32 CSParseBinary::designwidth() const { + return designwidth_; +} +inline void CSParseBinary::set_designwidth(::google::protobuf::int32 value) { + set_has_designwidth(); + designwidth_ = value; +} + +// repeated string textures = 7; +inline int CSParseBinary::textures_size() const { + return textures_.size(); +} +inline void CSParseBinary::clear_textures() { + textures_.Clear(); +} +inline const ::std::string& CSParseBinary::textures(int index) const { + return textures_.Get(index); +} +inline ::std::string* CSParseBinary::mutable_textures(int index) { + return textures_.Mutable(index); +} +inline void CSParseBinary::set_textures(int index, const ::std::string& value) { + textures_.Mutable(index)->assign(value); +} +inline void CSParseBinary::set_textures(int index, const char* value) { + textures_.Mutable(index)->assign(value); +} +inline void CSParseBinary::set_textures(int index, const char* value, size_t size) { + textures_.Mutable(index)->assign( + reinterpret_cast(value), size); +} +inline ::std::string* CSParseBinary::add_textures() { + return textures_.Add(); +} +inline void CSParseBinary::add_textures(const ::std::string& value) { + textures_.Add()->assign(value); +} +inline void CSParseBinary::add_textures(const char* value) { + textures_.Add()->assign(value); +} +inline void CSParseBinary::add_textures(const char* value, size_t size) { + textures_.Add()->assign(reinterpret_cast(value), size); +} +inline const ::google::protobuf::RepeatedPtrField< ::std::string>& +CSParseBinary::textures() const { + return textures_; +} +inline ::google::protobuf::RepeatedPtrField< ::std::string>* +CSParseBinary::mutable_textures() { + return &textures_; +} + +// repeated string texturesPng = 8; +inline int CSParseBinary::texturespng_size() const { + return texturespng_.size(); +} +inline void CSParseBinary::clear_texturespng() { + texturespng_.Clear(); +} +inline const ::std::string& CSParseBinary::texturespng(int index) const { + return texturespng_.Get(index); +} +inline ::std::string* CSParseBinary::mutable_texturespng(int index) { + return texturespng_.Mutable(index); +} +inline void CSParseBinary::set_texturespng(int index, const ::std::string& value) { + texturespng_.Mutable(index)->assign(value); +} +inline void CSParseBinary::set_texturespng(int index, const char* value) { + texturespng_.Mutable(index)->assign(value); +} +inline void CSParseBinary::set_texturespng(int index, const char* value, size_t size) { + texturespng_.Mutable(index)->assign( + reinterpret_cast(value), size); +} +inline ::std::string* CSParseBinary::add_texturespng() { + return texturespng_.Add(); +} +inline void CSParseBinary::add_texturespng(const ::std::string& value) { + texturespng_.Add()->assign(value); +} +inline void CSParseBinary::add_texturespng(const char* value) { + texturespng_.Add()->assign(value); +} +inline void CSParseBinary::add_texturespng(const char* value, size_t size) { + texturespng_.Add()->assign(reinterpret_cast(value), size); +} +inline const ::google::protobuf::RepeatedPtrField< ::std::string>& +CSParseBinary::texturespng() const { + return texturespng_; +} +inline ::google::protobuf::RepeatedPtrField< ::std::string>* +CSParseBinary::mutable_texturespng() { + return &texturespng_; +} + +// optional .protocolbuffers.NodeTree nodeTree = 9; +inline bool CSParseBinary::has_nodetree() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void CSParseBinary::set_has_nodetree() { + _has_bits_[0] |= 0x00000100u; +} +inline void CSParseBinary::clear_has_nodetree() { + _has_bits_[0] &= ~0x00000100u; +} +inline void CSParseBinary::clear_nodetree() { + if (nodetree_ != NULL) nodetree_->::protocolbuffers::NodeTree::Clear(); + clear_has_nodetree(); +} +inline const ::protocolbuffers::NodeTree& CSParseBinary::nodetree() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return nodetree_ != NULL ? *nodetree_ : *default_instance().nodetree_; +#else + return nodetree_ != NULL ? *nodetree_ : *default_instance_->nodetree_; +#endif +} +inline ::protocolbuffers::NodeTree* CSParseBinary::mutable_nodetree() { + set_has_nodetree(); + if (nodetree_ == NULL) nodetree_ = new ::protocolbuffers::NodeTree; + return nodetree_; +} +inline ::protocolbuffers::NodeTree* CSParseBinary::release_nodetree() { + clear_has_nodetree(); + ::protocolbuffers::NodeTree* temp = nodetree_; + nodetree_ = NULL; + return temp; +} +inline void CSParseBinary::set_allocated_nodetree(::protocolbuffers::NodeTree* nodetree) { + delete nodetree_; + nodetree_ = nodetree; + if (nodetree) { + set_has_nodetree(); + } else { + clear_has_nodetree(); + } +} + +// optional .protocolbuffers.NodeAction action = 10; +inline bool CSParseBinary::has_action() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void CSParseBinary::set_has_action() { + _has_bits_[0] |= 0x00000200u; +} +inline void CSParseBinary::clear_has_action() { + _has_bits_[0] &= ~0x00000200u; +} +inline void CSParseBinary::clear_action() { + if (action_ != NULL) action_->::protocolbuffers::NodeAction::Clear(); + clear_has_action(); +} +inline const ::protocolbuffers::NodeAction& CSParseBinary::action() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return action_ != NULL ? *action_ : *default_instance().action_; +#else + return action_ != NULL ? *action_ : *default_instance_->action_; +#endif +} +inline ::protocolbuffers::NodeAction* CSParseBinary::mutable_action() { + set_has_action(); + if (action_ == NULL) action_ = new ::protocolbuffers::NodeAction; + return action_; +} +inline ::protocolbuffers::NodeAction* CSParseBinary::release_action() { + clear_has_action(); + ::protocolbuffers::NodeAction* temp = action_; + action_ = NULL; + return temp; +} +inline void CSParseBinary::set_allocated_action(::protocolbuffers::NodeAction* action) { + delete action_; + action_ = action; + if (action) { + set_has_action(); + } else { + clear_has_action(); + } +} + +// ------------------------------------------------------------------- + +// NodeTree + +// optional string classname = 1; +inline bool NodeTree::has_classname() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void NodeTree::set_has_classname() { + _has_bits_[0] |= 0x00000001u; +} +inline void NodeTree::clear_has_classname() { + _has_bits_[0] &= ~0x00000001u; +} +inline void NodeTree::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& NodeTree::classname() const { + return *classname_; +} +inline void NodeTree::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void NodeTree::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void NodeTree::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* NodeTree::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* NodeTree::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void NodeTree::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string name = 2; +inline bool NodeTree::has_name() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void NodeTree::set_has_name() { + _has_bits_[0] |= 0x00000002u; +} +inline void NodeTree::clear_has_name() { + _has_bits_[0] &= ~0x00000002u; +} +inline void NodeTree::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& NodeTree::name() const { + return *name_; +} +inline void NodeTree::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void NodeTree::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void NodeTree::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* NodeTree::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* NodeTree::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void NodeTree::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// repeated .protocolbuffers.NodeTree children = 3; +inline int NodeTree::children_size() const { + return children_.size(); +} +inline void NodeTree::clear_children() { + children_.Clear(); +} +inline const ::protocolbuffers::NodeTree& NodeTree::children(int index) const { + return children_.Get(index); +} +inline ::protocolbuffers::NodeTree* NodeTree::mutable_children(int index) { + return children_.Mutable(index); +} +inline ::protocolbuffers::NodeTree* NodeTree::add_children() { + return children_.Add(); +} +inline const ::google::protobuf::RepeatedPtrField< ::protocolbuffers::NodeTree >& +NodeTree::children() const { + return children_; +} +inline ::google::protobuf::RepeatedPtrField< ::protocolbuffers::NodeTree >* +NodeTree::mutable_children() { + return &children_; +} + +// optional .protocolbuffers.WidgetOptions widgetOptions = 4; +inline bool NodeTree::has_widgetoptions() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void NodeTree::set_has_widgetoptions() { + _has_bits_[0] |= 0x00000008u; +} +inline void NodeTree::clear_has_widgetoptions() { + _has_bits_[0] &= ~0x00000008u; +} +inline void NodeTree::clear_widgetoptions() { + if (widgetoptions_ != NULL) widgetoptions_->::protocolbuffers::WidgetOptions::Clear(); + clear_has_widgetoptions(); +} +inline const ::protocolbuffers::WidgetOptions& NodeTree::widgetoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return widgetoptions_ != NULL ? *widgetoptions_ : *default_instance().widgetoptions_; +#else + return widgetoptions_ != NULL ? *widgetoptions_ : *default_instance_->widgetoptions_; +#endif +} +inline ::protocolbuffers::WidgetOptions* NodeTree::mutable_widgetoptions() { + set_has_widgetoptions(); + if (widgetoptions_ == NULL) widgetoptions_ = new ::protocolbuffers::WidgetOptions; + return widgetoptions_; +} +inline ::protocolbuffers::WidgetOptions* NodeTree::release_widgetoptions() { + clear_has_widgetoptions(); + ::protocolbuffers::WidgetOptions* temp = widgetoptions_; + widgetoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_widgetoptions(::protocolbuffers::WidgetOptions* widgetoptions) { + delete widgetoptions_; + widgetoptions_ = widgetoptions; + if (widgetoptions) { + set_has_widgetoptions(); + } else { + clear_has_widgetoptions(); + } +} + +// optional .protocolbuffers.ButtonOptions buttonOptions = 5; +inline bool NodeTree::has_buttonoptions() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void NodeTree::set_has_buttonoptions() { + _has_bits_[0] |= 0x00000010u; +} +inline void NodeTree::clear_has_buttonoptions() { + _has_bits_[0] &= ~0x00000010u; +} +inline void NodeTree::clear_buttonoptions() { + if (buttonoptions_ != NULL) buttonoptions_->::protocolbuffers::ButtonOptions::Clear(); + clear_has_buttonoptions(); +} +inline const ::protocolbuffers::ButtonOptions& NodeTree::buttonoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return buttonoptions_ != NULL ? *buttonoptions_ : *default_instance().buttonoptions_; +#else + return buttonoptions_ != NULL ? *buttonoptions_ : *default_instance_->buttonoptions_; +#endif +} +inline ::protocolbuffers::ButtonOptions* NodeTree::mutable_buttonoptions() { + set_has_buttonoptions(); + if (buttonoptions_ == NULL) buttonoptions_ = new ::protocolbuffers::ButtonOptions; + return buttonoptions_; +} +inline ::protocolbuffers::ButtonOptions* NodeTree::release_buttonoptions() { + clear_has_buttonoptions(); + ::protocolbuffers::ButtonOptions* temp = buttonoptions_; + buttonoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_buttonoptions(::protocolbuffers::ButtonOptions* buttonoptions) { + delete buttonoptions_; + buttonoptions_ = buttonoptions; + if (buttonoptions) { + set_has_buttonoptions(); + } else { + clear_has_buttonoptions(); + } +} + +// optional .protocolbuffers.CheckBoxOptions checkBoxOptions = 6; +inline bool NodeTree::has_checkboxoptions() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void NodeTree::set_has_checkboxoptions() { + _has_bits_[0] |= 0x00000020u; +} +inline void NodeTree::clear_has_checkboxoptions() { + _has_bits_[0] &= ~0x00000020u; +} +inline void NodeTree::clear_checkboxoptions() { + if (checkboxoptions_ != NULL) checkboxoptions_->::protocolbuffers::CheckBoxOptions::Clear(); + clear_has_checkboxoptions(); +} +inline const ::protocolbuffers::CheckBoxOptions& NodeTree::checkboxoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return checkboxoptions_ != NULL ? *checkboxoptions_ : *default_instance().checkboxoptions_; +#else + return checkboxoptions_ != NULL ? *checkboxoptions_ : *default_instance_->checkboxoptions_; +#endif +} +inline ::protocolbuffers::CheckBoxOptions* NodeTree::mutable_checkboxoptions() { + set_has_checkboxoptions(); + if (checkboxoptions_ == NULL) checkboxoptions_ = new ::protocolbuffers::CheckBoxOptions; + return checkboxoptions_; +} +inline ::protocolbuffers::CheckBoxOptions* NodeTree::release_checkboxoptions() { + clear_has_checkboxoptions(); + ::protocolbuffers::CheckBoxOptions* temp = checkboxoptions_; + checkboxoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_checkboxoptions(::protocolbuffers::CheckBoxOptions* checkboxoptions) { + delete checkboxoptions_; + checkboxoptions_ = checkboxoptions; + if (checkboxoptions) { + set_has_checkboxoptions(); + } else { + clear_has_checkboxoptions(); + } +} + +// optional .protocolbuffers.ImageViewOptions imageViewOptions = 7; +inline bool NodeTree::has_imageviewoptions() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void NodeTree::set_has_imageviewoptions() { + _has_bits_[0] |= 0x00000040u; +} +inline void NodeTree::clear_has_imageviewoptions() { + _has_bits_[0] &= ~0x00000040u; +} +inline void NodeTree::clear_imageviewoptions() { + if (imageviewoptions_ != NULL) imageviewoptions_->::protocolbuffers::ImageViewOptions::Clear(); + clear_has_imageviewoptions(); +} +inline const ::protocolbuffers::ImageViewOptions& NodeTree::imageviewoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return imageviewoptions_ != NULL ? *imageviewoptions_ : *default_instance().imageviewoptions_; +#else + return imageviewoptions_ != NULL ? *imageviewoptions_ : *default_instance_->imageviewoptions_; +#endif +} +inline ::protocolbuffers::ImageViewOptions* NodeTree::mutable_imageviewoptions() { + set_has_imageviewoptions(); + if (imageviewoptions_ == NULL) imageviewoptions_ = new ::protocolbuffers::ImageViewOptions; + return imageviewoptions_; +} +inline ::protocolbuffers::ImageViewOptions* NodeTree::release_imageviewoptions() { + clear_has_imageviewoptions(); + ::protocolbuffers::ImageViewOptions* temp = imageviewoptions_; + imageviewoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_imageviewoptions(::protocolbuffers::ImageViewOptions* imageviewoptions) { + delete imageviewoptions_; + imageviewoptions_ = imageviewoptions; + if (imageviewoptions) { + set_has_imageviewoptions(); + } else { + clear_has_imageviewoptions(); + } +} + +// optional .protocolbuffers.TextAtlasOptions textAtlasOptions = 8; +inline bool NodeTree::has_textatlasoptions() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void NodeTree::set_has_textatlasoptions() { + _has_bits_[0] |= 0x00000080u; +} +inline void NodeTree::clear_has_textatlasoptions() { + _has_bits_[0] &= ~0x00000080u; +} +inline void NodeTree::clear_textatlasoptions() { + if (textatlasoptions_ != NULL) textatlasoptions_->::protocolbuffers::TextAtlasOptions::Clear(); + clear_has_textatlasoptions(); +} +inline const ::protocolbuffers::TextAtlasOptions& NodeTree::textatlasoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return textatlasoptions_ != NULL ? *textatlasoptions_ : *default_instance().textatlasoptions_; +#else + return textatlasoptions_ != NULL ? *textatlasoptions_ : *default_instance_->textatlasoptions_; +#endif +} +inline ::protocolbuffers::TextAtlasOptions* NodeTree::mutable_textatlasoptions() { + set_has_textatlasoptions(); + if (textatlasoptions_ == NULL) textatlasoptions_ = new ::protocolbuffers::TextAtlasOptions; + return textatlasoptions_; +} +inline ::protocolbuffers::TextAtlasOptions* NodeTree::release_textatlasoptions() { + clear_has_textatlasoptions(); + ::protocolbuffers::TextAtlasOptions* temp = textatlasoptions_; + textatlasoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_textatlasoptions(::protocolbuffers::TextAtlasOptions* textatlasoptions) { + delete textatlasoptions_; + textatlasoptions_ = textatlasoptions; + if (textatlasoptions) { + set_has_textatlasoptions(); + } else { + clear_has_textatlasoptions(); + } +} + +// optional .protocolbuffers.TextBMFontOptions textBMFontOptions = 9; +inline bool NodeTree::has_textbmfontoptions() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void NodeTree::set_has_textbmfontoptions() { + _has_bits_[0] |= 0x00000100u; +} +inline void NodeTree::clear_has_textbmfontoptions() { + _has_bits_[0] &= ~0x00000100u; +} +inline void NodeTree::clear_textbmfontoptions() { + if (textbmfontoptions_ != NULL) textbmfontoptions_->::protocolbuffers::TextBMFontOptions::Clear(); + clear_has_textbmfontoptions(); +} +inline const ::protocolbuffers::TextBMFontOptions& NodeTree::textbmfontoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return textbmfontoptions_ != NULL ? *textbmfontoptions_ : *default_instance().textbmfontoptions_; +#else + return textbmfontoptions_ != NULL ? *textbmfontoptions_ : *default_instance_->textbmfontoptions_; +#endif +} +inline ::protocolbuffers::TextBMFontOptions* NodeTree::mutable_textbmfontoptions() { + set_has_textbmfontoptions(); + if (textbmfontoptions_ == NULL) textbmfontoptions_ = new ::protocolbuffers::TextBMFontOptions; + return textbmfontoptions_; +} +inline ::protocolbuffers::TextBMFontOptions* NodeTree::release_textbmfontoptions() { + clear_has_textbmfontoptions(); + ::protocolbuffers::TextBMFontOptions* temp = textbmfontoptions_; + textbmfontoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_textbmfontoptions(::protocolbuffers::TextBMFontOptions* textbmfontoptions) { + delete textbmfontoptions_; + textbmfontoptions_ = textbmfontoptions; + if (textbmfontoptions) { + set_has_textbmfontoptions(); + } else { + clear_has_textbmfontoptions(); + } +} + +// optional .protocolbuffers.TextOptions textOptions = 10; +inline bool NodeTree::has_textoptions() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void NodeTree::set_has_textoptions() { + _has_bits_[0] |= 0x00000200u; +} +inline void NodeTree::clear_has_textoptions() { + _has_bits_[0] &= ~0x00000200u; +} +inline void NodeTree::clear_textoptions() { + if (textoptions_ != NULL) textoptions_->::protocolbuffers::TextOptions::Clear(); + clear_has_textoptions(); +} +inline const ::protocolbuffers::TextOptions& NodeTree::textoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return textoptions_ != NULL ? *textoptions_ : *default_instance().textoptions_; +#else + return textoptions_ != NULL ? *textoptions_ : *default_instance_->textoptions_; +#endif +} +inline ::protocolbuffers::TextOptions* NodeTree::mutable_textoptions() { + set_has_textoptions(); + if (textoptions_ == NULL) textoptions_ = new ::protocolbuffers::TextOptions; + return textoptions_; +} +inline ::protocolbuffers::TextOptions* NodeTree::release_textoptions() { + clear_has_textoptions(); + ::protocolbuffers::TextOptions* temp = textoptions_; + textoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_textoptions(::protocolbuffers::TextOptions* textoptions) { + delete textoptions_; + textoptions_ = textoptions; + if (textoptions) { + set_has_textoptions(); + } else { + clear_has_textoptions(); + } +} + +// optional .protocolbuffers.LoadingBarOptions loadingBarOptions = 11; +inline bool NodeTree::has_loadingbaroptions() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void NodeTree::set_has_loadingbaroptions() { + _has_bits_[0] |= 0x00000400u; +} +inline void NodeTree::clear_has_loadingbaroptions() { + _has_bits_[0] &= ~0x00000400u; +} +inline void NodeTree::clear_loadingbaroptions() { + if (loadingbaroptions_ != NULL) loadingbaroptions_->::protocolbuffers::LoadingBarOptions::Clear(); + clear_has_loadingbaroptions(); +} +inline const ::protocolbuffers::LoadingBarOptions& NodeTree::loadingbaroptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return loadingbaroptions_ != NULL ? *loadingbaroptions_ : *default_instance().loadingbaroptions_; +#else + return loadingbaroptions_ != NULL ? *loadingbaroptions_ : *default_instance_->loadingbaroptions_; +#endif +} +inline ::protocolbuffers::LoadingBarOptions* NodeTree::mutable_loadingbaroptions() { + set_has_loadingbaroptions(); + if (loadingbaroptions_ == NULL) loadingbaroptions_ = new ::protocolbuffers::LoadingBarOptions; + return loadingbaroptions_; +} +inline ::protocolbuffers::LoadingBarOptions* NodeTree::release_loadingbaroptions() { + clear_has_loadingbaroptions(); + ::protocolbuffers::LoadingBarOptions* temp = loadingbaroptions_; + loadingbaroptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_loadingbaroptions(::protocolbuffers::LoadingBarOptions* loadingbaroptions) { + delete loadingbaroptions_; + loadingbaroptions_ = loadingbaroptions; + if (loadingbaroptions) { + set_has_loadingbaroptions(); + } else { + clear_has_loadingbaroptions(); + } +} + +// optional .protocolbuffers.SliderOptions sliderOptions = 12; +inline bool NodeTree::has_slideroptions() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void NodeTree::set_has_slideroptions() { + _has_bits_[0] |= 0x00000800u; +} +inline void NodeTree::clear_has_slideroptions() { + _has_bits_[0] &= ~0x00000800u; +} +inline void NodeTree::clear_slideroptions() { + if (slideroptions_ != NULL) slideroptions_->::protocolbuffers::SliderOptions::Clear(); + clear_has_slideroptions(); +} +inline const ::protocolbuffers::SliderOptions& NodeTree::slideroptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return slideroptions_ != NULL ? *slideroptions_ : *default_instance().slideroptions_; +#else + return slideroptions_ != NULL ? *slideroptions_ : *default_instance_->slideroptions_; +#endif +} +inline ::protocolbuffers::SliderOptions* NodeTree::mutable_slideroptions() { + set_has_slideroptions(); + if (slideroptions_ == NULL) slideroptions_ = new ::protocolbuffers::SliderOptions; + return slideroptions_; +} +inline ::protocolbuffers::SliderOptions* NodeTree::release_slideroptions() { + clear_has_slideroptions(); + ::protocolbuffers::SliderOptions* temp = slideroptions_; + slideroptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_slideroptions(::protocolbuffers::SliderOptions* slideroptions) { + delete slideroptions_; + slideroptions_ = slideroptions; + if (slideroptions) { + set_has_slideroptions(); + } else { + clear_has_slideroptions(); + } +} + +// optional .protocolbuffers.TextFieldOptions textFieldOptions = 13; +inline bool NodeTree::has_textfieldoptions() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void NodeTree::set_has_textfieldoptions() { + _has_bits_[0] |= 0x00001000u; +} +inline void NodeTree::clear_has_textfieldoptions() { + _has_bits_[0] &= ~0x00001000u; +} +inline void NodeTree::clear_textfieldoptions() { + if (textfieldoptions_ != NULL) textfieldoptions_->::protocolbuffers::TextFieldOptions::Clear(); + clear_has_textfieldoptions(); +} +inline const ::protocolbuffers::TextFieldOptions& NodeTree::textfieldoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return textfieldoptions_ != NULL ? *textfieldoptions_ : *default_instance().textfieldoptions_; +#else + return textfieldoptions_ != NULL ? *textfieldoptions_ : *default_instance_->textfieldoptions_; +#endif +} +inline ::protocolbuffers::TextFieldOptions* NodeTree::mutable_textfieldoptions() { + set_has_textfieldoptions(); + if (textfieldoptions_ == NULL) textfieldoptions_ = new ::protocolbuffers::TextFieldOptions; + return textfieldoptions_; +} +inline ::protocolbuffers::TextFieldOptions* NodeTree::release_textfieldoptions() { + clear_has_textfieldoptions(); + ::protocolbuffers::TextFieldOptions* temp = textfieldoptions_; + textfieldoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_textfieldoptions(::protocolbuffers::TextFieldOptions* textfieldoptions) { + delete textfieldoptions_; + textfieldoptions_ = textfieldoptions; + if (textfieldoptions) { + set_has_textfieldoptions(); + } else { + clear_has_textfieldoptions(); + } +} + +// optional .protocolbuffers.ScrollViewOptions scrollViewOptions = 14; +inline bool NodeTree::has_scrollviewoptions() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void NodeTree::set_has_scrollviewoptions() { + _has_bits_[0] |= 0x00002000u; +} +inline void NodeTree::clear_has_scrollviewoptions() { + _has_bits_[0] &= ~0x00002000u; +} +inline void NodeTree::clear_scrollviewoptions() { + if (scrollviewoptions_ != NULL) scrollviewoptions_->::protocolbuffers::ScrollViewOptions::Clear(); + clear_has_scrollviewoptions(); +} +inline const ::protocolbuffers::ScrollViewOptions& NodeTree::scrollviewoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return scrollviewoptions_ != NULL ? *scrollviewoptions_ : *default_instance().scrollviewoptions_; +#else + return scrollviewoptions_ != NULL ? *scrollviewoptions_ : *default_instance_->scrollviewoptions_; +#endif +} +inline ::protocolbuffers::ScrollViewOptions* NodeTree::mutable_scrollviewoptions() { + set_has_scrollviewoptions(); + if (scrollviewoptions_ == NULL) scrollviewoptions_ = new ::protocolbuffers::ScrollViewOptions; + return scrollviewoptions_; +} +inline ::protocolbuffers::ScrollViewOptions* NodeTree::release_scrollviewoptions() { + clear_has_scrollviewoptions(); + ::protocolbuffers::ScrollViewOptions* temp = scrollviewoptions_; + scrollviewoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_scrollviewoptions(::protocolbuffers::ScrollViewOptions* scrollviewoptions) { + delete scrollviewoptions_; + scrollviewoptions_ = scrollviewoptions; + if (scrollviewoptions) { + set_has_scrollviewoptions(); + } else { + clear_has_scrollviewoptions(); + } +} + +// optional .protocolbuffers.PageViewOptions pageViewOptions = 15; +inline bool NodeTree::has_pageviewoptions() const { + return (_has_bits_[0] & 0x00004000u) != 0; +} +inline void NodeTree::set_has_pageviewoptions() { + _has_bits_[0] |= 0x00004000u; +} +inline void NodeTree::clear_has_pageviewoptions() { + _has_bits_[0] &= ~0x00004000u; +} +inline void NodeTree::clear_pageviewoptions() { + if (pageviewoptions_ != NULL) pageviewoptions_->::protocolbuffers::PageViewOptions::Clear(); + clear_has_pageviewoptions(); +} +inline const ::protocolbuffers::PageViewOptions& NodeTree::pageviewoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return pageviewoptions_ != NULL ? *pageviewoptions_ : *default_instance().pageviewoptions_; +#else + return pageviewoptions_ != NULL ? *pageviewoptions_ : *default_instance_->pageviewoptions_; +#endif +} +inline ::protocolbuffers::PageViewOptions* NodeTree::mutable_pageviewoptions() { + set_has_pageviewoptions(); + if (pageviewoptions_ == NULL) pageviewoptions_ = new ::protocolbuffers::PageViewOptions; + return pageviewoptions_; +} +inline ::protocolbuffers::PageViewOptions* NodeTree::release_pageviewoptions() { + clear_has_pageviewoptions(); + ::protocolbuffers::PageViewOptions* temp = pageviewoptions_; + pageviewoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_pageviewoptions(::protocolbuffers::PageViewOptions* pageviewoptions) { + delete pageviewoptions_; + pageviewoptions_ = pageviewoptions; + if (pageviewoptions) { + set_has_pageviewoptions(); + } else { + clear_has_pageviewoptions(); + } +} + +// optional .protocolbuffers.ListViewOptions listViewOptions = 16; +inline bool NodeTree::has_listviewoptions() const { + return (_has_bits_[0] & 0x00008000u) != 0; +} +inline void NodeTree::set_has_listviewoptions() { + _has_bits_[0] |= 0x00008000u; +} +inline void NodeTree::clear_has_listviewoptions() { + _has_bits_[0] &= ~0x00008000u; +} +inline void NodeTree::clear_listviewoptions() { + if (listviewoptions_ != NULL) listviewoptions_->::protocolbuffers::ListViewOptions::Clear(); + clear_has_listviewoptions(); +} +inline const ::protocolbuffers::ListViewOptions& NodeTree::listviewoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return listviewoptions_ != NULL ? *listviewoptions_ : *default_instance().listviewoptions_; +#else + return listviewoptions_ != NULL ? *listviewoptions_ : *default_instance_->listviewoptions_; +#endif +} +inline ::protocolbuffers::ListViewOptions* NodeTree::mutable_listviewoptions() { + set_has_listviewoptions(); + if (listviewoptions_ == NULL) listviewoptions_ = new ::protocolbuffers::ListViewOptions; + return listviewoptions_; +} +inline ::protocolbuffers::ListViewOptions* NodeTree::release_listviewoptions() { + clear_has_listviewoptions(); + ::protocolbuffers::ListViewOptions* temp = listviewoptions_; + listviewoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_listviewoptions(::protocolbuffers::ListViewOptions* listviewoptions) { + delete listviewoptions_; + listviewoptions_ = listviewoptions; + if (listviewoptions) { + set_has_listviewoptions(); + } else { + clear_has_listviewoptions(); + } +} + +// optional .protocolbuffers.PanelOptions PanelOptions = 17; +inline bool NodeTree::has_paneloptions() const { + return (_has_bits_[0] & 0x00010000u) != 0; +} +inline void NodeTree::set_has_paneloptions() { + _has_bits_[0] |= 0x00010000u; +} +inline void NodeTree::clear_has_paneloptions() { + _has_bits_[0] &= ~0x00010000u; +} +inline void NodeTree::clear_paneloptions() { + if (paneloptions_ != NULL) paneloptions_->::protocolbuffers::PanelOptions::Clear(); + clear_has_paneloptions(); +} +inline const ::protocolbuffers::PanelOptions& NodeTree::paneloptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return paneloptions_ != NULL ? *paneloptions_ : *default_instance().paneloptions_; +#else + return paneloptions_ != NULL ? *paneloptions_ : *default_instance_->paneloptions_; +#endif +} +inline ::protocolbuffers::PanelOptions* NodeTree::mutable_paneloptions() { + set_has_paneloptions(); + if (paneloptions_ == NULL) paneloptions_ = new ::protocolbuffers::PanelOptions; + return paneloptions_; +} +inline ::protocolbuffers::PanelOptions* NodeTree::release_paneloptions() { + clear_has_paneloptions(); + ::protocolbuffers::PanelOptions* temp = paneloptions_; + paneloptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_paneloptions(::protocolbuffers::PanelOptions* paneloptions) { + delete paneloptions_; + paneloptions_ = paneloptions; + if (paneloptions) { + set_has_paneloptions(); + } else { + clear_has_paneloptions(); + } +} + +// optional .protocolbuffers.SpriteOptions spriteOptions = 18; +inline bool NodeTree::has_spriteoptions() const { + return (_has_bits_[0] & 0x00020000u) != 0; +} +inline void NodeTree::set_has_spriteoptions() { + _has_bits_[0] |= 0x00020000u; +} +inline void NodeTree::clear_has_spriteoptions() { + _has_bits_[0] &= ~0x00020000u; +} +inline void NodeTree::clear_spriteoptions() { + if (spriteoptions_ != NULL) spriteoptions_->::protocolbuffers::SpriteOptions::Clear(); + clear_has_spriteoptions(); +} +inline const ::protocolbuffers::SpriteOptions& NodeTree::spriteoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return spriteoptions_ != NULL ? *spriteoptions_ : *default_instance().spriteoptions_; +#else + return spriteoptions_ != NULL ? *spriteoptions_ : *default_instance_->spriteoptions_; +#endif +} +inline ::protocolbuffers::SpriteOptions* NodeTree::mutable_spriteoptions() { + set_has_spriteoptions(); + if (spriteoptions_ == NULL) spriteoptions_ = new ::protocolbuffers::SpriteOptions; + return spriteoptions_; +} +inline ::protocolbuffers::SpriteOptions* NodeTree::release_spriteoptions() { + clear_has_spriteoptions(); + ::protocolbuffers::SpriteOptions* temp = spriteoptions_; + spriteoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_spriteoptions(::protocolbuffers::SpriteOptions* spriteoptions) { + delete spriteoptions_; + spriteoptions_ = spriteoptions; + if (spriteoptions) { + set_has_spriteoptions(); + } else { + clear_has_spriteoptions(); + } +} + +// optional .protocolbuffers.TMXTiledMapOptions tmxTiledMapOptions = 19; +inline bool NodeTree::has_tmxtiledmapoptions() const { + return (_has_bits_[0] & 0x00040000u) != 0; +} +inline void NodeTree::set_has_tmxtiledmapoptions() { + _has_bits_[0] |= 0x00040000u; +} +inline void NodeTree::clear_has_tmxtiledmapoptions() { + _has_bits_[0] &= ~0x00040000u; +} +inline void NodeTree::clear_tmxtiledmapoptions() { + if (tmxtiledmapoptions_ != NULL) tmxtiledmapoptions_->::protocolbuffers::TMXTiledMapOptions::Clear(); + clear_has_tmxtiledmapoptions(); +} +inline const ::protocolbuffers::TMXTiledMapOptions& NodeTree::tmxtiledmapoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return tmxtiledmapoptions_ != NULL ? *tmxtiledmapoptions_ : *default_instance().tmxtiledmapoptions_; +#else + return tmxtiledmapoptions_ != NULL ? *tmxtiledmapoptions_ : *default_instance_->tmxtiledmapoptions_; +#endif +} +inline ::protocolbuffers::TMXTiledMapOptions* NodeTree::mutable_tmxtiledmapoptions() { + set_has_tmxtiledmapoptions(); + if (tmxtiledmapoptions_ == NULL) tmxtiledmapoptions_ = new ::protocolbuffers::TMXTiledMapOptions; + return tmxtiledmapoptions_; +} +inline ::protocolbuffers::TMXTiledMapOptions* NodeTree::release_tmxtiledmapoptions() { + clear_has_tmxtiledmapoptions(); + ::protocolbuffers::TMXTiledMapOptions* temp = tmxtiledmapoptions_; + tmxtiledmapoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_tmxtiledmapoptions(::protocolbuffers::TMXTiledMapOptions* tmxtiledmapoptions) { + delete tmxtiledmapoptions_; + tmxtiledmapoptions_ = tmxtiledmapoptions; + if (tmxtiledmapoptions) { + set_has_tmxtiledmapoptions(); + } else { + clear_has_tmxtiledmapoptions(); + } +} + +// optional .protocolbuffers.ParticleSystemOptions particleSystemOptions = 20; +inline bool NodeTree::has_particlesystemoptions() const { + return (_has_bits_[0] & 0x00080000u) != 0; +} +inline void NodeTree::set_has_particlesystemoptions() { + _has_bits_[0] |= 0x00080000u; +} +inline void NodeTree::clear_has_particlesystemoptions() { + _has_bits_[0] &= ~0x00080000u; +} +inline void NodeTree::clear_particlesystemoptions() { + if (particlesystemoptions_ != NULL) particlesystemoptions_->::protocolbuffers::ParticleSystemOptions::Clear(); + clear_has_particlesystemoptions(); +} +inline const ::protocolbuffers::ParticleSystemOptions& NodeTree::particlesystemoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return particlesystemoptions_ != NULL ? *particlesystemoptions_ : *default_instance().particlesystemoptions_; +#else + return particlesystemoptions_ != NULL ? *particlesystemoptions_ : *default_instance_->particlesystemoptions_; +#endif +} +inline ::protocolbuffers::ParticleSystemOptions* NodeTree::mutable_particlesystemoptions() { + set_has_particlesystemoptions(); + if (particlesystemoptions_ == NULL) particlesystemoptions_ = new ::protocolbuffers::ParticleSystemOptions; + return particlesystemoptions_; +} +inline ::protocolbuffers::ParticleSystemOptions* NodeTree::release_particlesystemoptions() { + clear_has_particlesystemoptions(); + ::protocolbuffers::ParticleSystemOptions* temp = particlesystemoptions_; + particlesystemoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_particlesystemoptions(::protocolbuffers::ParticleSystemOptions* particlesystemoptions) { + delete particlesystemoptions_; + particlesystemoptions_ = particlesystemoptions; + if (particlesystemoptions) { + set_has_particlesystemoptions(); + } else { + clear_has_particlesystemoptions(); + } +} + +// optional .protocolbuffers.ProjectNodeOptions projectNodeOptions = 21; +inline bool NodeTree::has_projectnodeoptions() const { + return (_has_bits_[0] & 0x00100000u) != 0; +} +inline void NodeTree::set_has_projectnodeoptions() { + _has_bits_[0] |= 0x00100000u; +} +inline void NodeTree::clear_has_projectnodeoptions() { + _has_bits_[0] &= ~0x00100000u; +} +inline void NodeTree::clear_projectnodeoptions() { + if (projectnodeoptions_ != NULL) projectnodeoptions_->::protocolbuffers::ProjectNodeOptions::Clear(); + clear_has_projectnodeoptions(); +} +inline const ::protocolbuffers::ProjectNodeOptions& NodeTree::projectnodeoptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return projectnodeoptions_ != NULL ? *projectnodeoptions_ : *default_instance().projectnodeoptions_; +#else + return projectnodeoptions_ != NULL ? *projectnodeoptions_ : *default_instance_->projectnodeoptions_; +#endif +} +inline ::protocolbuffers::ProjectNodeOptions* NodeTree::mutable_projectnodeoptions() { + set_has_projectnodeoptions(); + if (projectnodeoptions_ == NULL) projectnodeoptions_ = new ::protocolbuffers::ProjectNodeOptions; + return projectnodeoptions_; +} +inline ::protocolbuffers::ProjectNodeOptions* NodeTree::release_projectnodeoptions() { + clear_has_projectnodeoptions(); + ::protocolbuffers::ProjectNodeOptions* temp = projectnodeoptions_; + projectnodeoptions_ = NULL; + return temp; +} +inline void NodeTree::set_allocated_projectnodeoptions(::protocolbuffers::ProjectNodeOptions* projectnodeoptions) { + delete projectnodeoptions_; + projectnodeoptions_ = projectnodeoptions; + if (projectnodeoptions) { + set_has_projectnodeoptions(); + } else { + clear_has_projectnodeoptions(); + } +} + +// ------------------------------------------------------------------- + +// WidgetOptions + +// optional float x = 1; +inline bool WidgetOptions::has_x() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void WidgetOptions::set_has_x() { + _has_bits_[0] |= 0x00000001u; +} +inline void WidgetOptions::clear_has_x() { + _has_bits_[0] &= ~0x00000001u; +} +inline void WidgetOptions::clear_x() { + x_ = 0; + clear_has_x(); +} +inline float WidgetOptions::x() const { + return x_; +} +inline void WidgetOptions::set_x(float value) { + set_has_x(); + x_ = value; +} + +// optional float y = 2; +inline bool WidgetOptions::has_y() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void WidgetOptions::set_has_y() { + _has_bits_[0] |= 0x00000002u; +} +inline void WidgetOptions::clear_has_y() { + _has_bits_[0] &= ~0x00000002u; +} +inline void WidgetOptions::clear_y() { + y_ = 0; + clear_has_y(); +} +inline float WidgetOptions::y() const { + return y_; +} +inline void WidgetOptions::set_y(float value) { + set_has_y(); + y_ = value; +} + +// optional float scaleX = 3; +inline bool WidgetOptions::has_scalex() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void WidgetOptions::set_has_scalex() { + _has_bits_[0] |= 0x00000004u; +} +inline void WidgetOptions::clear_has_scalex() { + _has_bits_[0] &= ~0x00000004u; +} +inline void WidgetOptions::clear_scalex() { + scalex_ = 0; + clear_has_scalex(); +} +inline float WidgetOptions::scalex() const { + return scalex_; +} +inline void WidgetOptions::set_scalex(float value) { + set_has_scalex(); + scalex_ = value; +} + +// optional float scaleY = 4; +inline bool WidgetOptions::has_scaley() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void WidgetOptions::set_has_scaley() { + _has_bits_[0] |= 0x00000008u; +} +inline void WidgetOptions::clear_has_scaley() { + _has_bits_[0] &= ~0x00000008u; +} +inline void WidgetOptions::clear_scaley() { + scaley_ = 0; + clear_has_scaley(); +} +inline float WidgetOptions::scaley() const { + return scaley_; +} +inline void WidgetOptions::set_scaley(float value) { + set_has_scaley(); + scaley_ = value; +} + +// optional float rotation = 5; +inline bool WidgetOptions::has_rotation() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void WidgetOptions::set_has_rotation() { + _has_bits_[0] |= 0x00000010u; +} +inline void WidgetOptions::clear_has_rotation() { + _has_bits_[0] &= ~0x00000010u; +} +inline void WidgetOptions::clear_rotation() { + rotation_ = 0; + clear_has_rotation(); +} +inline float WidgetOptions::rotation() const { + return rotation_; +} +inline void WidgetOptions::set_rotation(float value) { + set_has_rotation(); + rotation_ = value; +} + +// optional bool flipX = 6; +inline bool WidgetOptions::has_flipx() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void WidgetOptions::set_has_flipx() { + _has_bits_[0] |= 0x00000020u; +} +inline void WidgetOptions::clear_has_flipx() { + _has_bits_[0] &= ~0x00000020u; +} +inline void WidgetOptions::clear_flipx() { + flipx_ = false; + clear_has_flipx(); +} +inline bool WidgetOptions::flipx() const { + return flipx_; +} +inline void WidgetOptions::set_flipx(bool value) { + set_has_flipx(); + flipx_ = value; +} + +// optional bool flipY = 7; +inline bool WidgetOptions::has_flipy() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void WidgetOptions::set_has_flipy() { + _has_bits_[0] |= 0x00000040u; +} +inline void WidgetOptions::clear_has_flipy() { + _has_bits_[0] &= ~0x00000040u; +} +inline void WidgetOptions::clear_flipy() { + flipy_ = false; + clear_has_flipy(); +} +inline bool WidgetOptions::flipy() const { + return flipy_; +} +inline void WidgetOptions::set_flipy(bool value) { + set_has_flipy(); + flipy_ = value; +} + +// optional int32 colorB = 8; +inline bool WidgetOptions::has_colorb() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void WidgetOptions::set_has_colorb() { + _has_bits_[0] |= 0x00000080u; +} +inline void WidgetOptions::clear_has_colorb() { + _has_bits_[0] &= ~0x00000080u; +} +inline void WidgetOptions::clear_colorb() { + colorb_ = 0; + clear_has_colorb(); +} +inline ::google::protobuf::int32 WidgetOptions::colorb() const { + return colorb_; +} +inline void WidgetOptions::set_colorb(::google::protobuf::int32 value) { + set_has_colorb(); + colorb_ = value; +} + +// optional int32 colorG = 9; +inline bool WidgetOptions::has_colorg() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void WidgetOptions::set_has_colorg() { + _has_bits_[0] |= 0x00000100u; +} +inline void WidgetOptions::clear_has_colorg() { + _has_bits_[0] &= ~0x00000100u; +} +inline void WidgetOptions::clear_colorg() { + colorg_ = 0; + clear_has_colorg(); +} +inline ::google::protobuf::int32 WidgetOptions::colorg() const { + return colorg_; +} +inline void WidgetOptions::set_colorg(::google::protobuf::int32 value) { + set_has_colorg(); + colorg_ = value; +} + +// optional int32 colorR = 10; +inline bool WidgetOptions::has_colorr() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void WidgetOptions::set_has_colorr() { + _has_bits_[0] |= 0x00000200u; +} +inline void WidgetOptions::clear_has_colorr() { + _has_bits_[0] &= ~0x00000200u; +} +inline void WidgetOptions::clear_colorr() { + colorr_ = 0; + clear_has_colorr(); +} +inline ::google::protobuf::int32 WidgetOptions::colorr() const { + return colorr_; +} +inline void WidgetOptions::set_colorr(::google::protobuf::int32 value) { + set_has_colorr(); + colorr_ = value; +} + +// optional int32 opacity = 11; +inline bool WidgetOptions::has_opacity() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void WidgetOptions::set_has_opacity() { + _has_bits_[0] |= 0x00000400u; +} +inline void WidgetOptions::clear_has_opacity() { + _has_bits_[0] &= ~0x00000400u; +} +inline void WidgetOptions::clear_opacity() { + opacity_ = 0; + clear_has_opacity(); +} +inline ::google::protobuf::int32 WidgetOptions::opacity() const { + return opacity_; +} +inline void WidgetOptions::set_opacity(::google::protobuf::int32 value) { + set_has_opacity(); + opacity_ = value; +} + +// optional bool touchAble = 12; +inline bool WidgetOptions::has_touchable() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void WidgetOptions::set_has_touchable() { + _has_bits_[0] |= 0x00000800u; +} +inline void WidgetOptions::clear_has_touchable() { + _has_bits_[0] &= ~0x00000800u; +} +inline void WidgetOptions::clear_touchable() { + touchable_ = false; + clear_has_touchable(); +} +inline bool WidgetOptions::touchable() const { + return touchable_; +} +inline void WidgetOptions::set_touchable(bool value) { + set_has_touchable(); + touchable_ = value; +} + +// optional bool visible = 13; +inline bool WidgetOptions::has_visible() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void WidgetOptions::set_has_visible() { + _has_bits_[0] |= 0x00001000u; +} +inline void WidgetOptions::clear_has_visible() { + _has_bits_[0] &= ~0x00001000u; +} +inline void WidgetOptions::clear_visible() { + visible_ = false; + clear_has_visible(); +} +inline bool WidgetOptions::visible() const { + return visible_; +} +inline void WidgetOptions::set_visible(bool value) { + set_has_visible(); + visible_ = value; +} + +// optional int32 zorder = 14; +inline bool WidgetOptions::has_zorder() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void WidgetOptions::set_has_zorder() { + _has_bits_[0] |= 0x00002000u; +} +inline void WidgetOptions::clear_has_zorder() { + _has_bits_[0] &= ~0x00002000u; +} +inline void WidgetOptions::clear_zorder() { + zorder_ = 0; + clear_has_zorder(); +} +inline ::google::protobuf::int32 WidgetOptions::zorder() const { + return zorder_; +} +inline void WidgetOptions::set_zorder(::google::protobuf::int32 value) { + set_has_zorder(); + zorder_ = value; +} + +// optional string classType = 15; +inline bool WidgetOptions::has_classtype() const { + return (_has_bits_[0] & 0x00004000u) != 0; +} +inline void WidgetOptions::set_has_classtype() { + _has_bits_[0] |= 0x00004000u; +} +inline void WidgetOptions::clear_has_classtype() { + _has_bits_[0] &= ~0x00004000u; +} +inline void WidgetOptions::clear_classtype() { + if (classtype_ != &::google::protobuf::internal::kEmptyString) { + classtype_->clear(); + } + clear_has_classtype(); +} +inline const ::std::string& WidgetOptions::classtype() const { + return *classtype_; +} +inline void WidgetOptions::set_classtype(const ::std::string& value) { + set_has_classtype(); + if (classtype_ == &::google::protobuf::internal::kEmptyString) { + classtype_ = new ::std::string; + } + classtype_->assign(value); +} +inline void WidgetOptions::set_classtype(const char* value) { + set_has_classtype(); + if (classtype_ == &::google::protobuf::internal::kEmptyString) { + classtype_ = new ::std::string; + } + classtype_->assign(value); +} +inline void WidgetOptions::set_classtype(const char* value, size_t size) { + set_has_classtype(); + if (classtype_ == &::google::protobuf::internal::kEmptyString) { + classtype_ = new ::std::string; + } + classtype_->assign(reinterpret_cast(value), size); +} +inline ::std::string* WidgetOptions::mutable_classtype() { + set_has_classtype(); + if (classtype_ == &::google::protobuf::internal::kEmptyString) { + classtype_ = new ::std::string; + } + return classtype_; +} +inline ::std::string* WidgetOptions::release_classtype() { + clear_has_classtype(); + if (classtype_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classtype_; + classtype_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void WidgetOptions::set_allocated_classtype(::std::string* classtype) { + if (classtype_ != &::google::protobuf::internal::kEmptyString) { + delete classtype_; + } + if (classtype) { + set_has_classtype(); + classtype_ = classtype; + } else { + clear_has_classtype(); + classtype_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional float width = 16; +inline bool WidgetOptions::has_width() const { + return (_has_bits_[0] & 0x00008000u) != 0; +} +inline void WidgetOptions::set_has_width() { + _has_bits_[0] |= 0x00008000u; +} +inline void WidgetOptions::clear_has_width() { + _has_bits_[0] &= ~0x00008000u; +} +inline void WidgetOptions::clear_width() { + width_ = 0; + clear_has_width(); +} +inline float WidgetOptions::width() const { + return width_; +} +inline void WidgetOptions::set_width(float value) { + set_has_width(); + width_ = value; +} + +// optional float height = 17; +inline bool WidgetOptions::has_height() const { + return (_has_bits_[0] & 0x00010000u) != 0; +} +inline void WidgetOptions::set_has_height() { + _has_bits_[0] |= 0x00010000u; +} +inline void WidgetOptions::clear_has_height() { + _has_bits_[0] &= ~0x00010000u; +} +inline void WidgetOptions::clear_height() { + height_ = 0; + clear_has_height(); +} +inline float WidgetOptions::height() const { + return height_; +} +inline void WidgetOptions::set_height(float value) { + set_has_height(); + height_ = value; +} + +// optional int32 positionType = 18; +inline bool WidgetOptions::has_positiontype() const { + return (_has_bits_[0] & 0x00020000u) != 0; +} +inline void WidgetOptions::set_has_positiontype() { + _has_bits_[0] |= 0x00020000u; +} +inline void WidgetOptions::clear_has_positiontype() { + _has_bits_[0] &= ~0x00020000u; +} +inline void WidgetOptions::clear_positiontype() { + positiontype_ = 0; + clear_has_positiontype(); +} +inline ::google::protobuf::int32 WidgetOptions::positiontype() const { + return positiontype_; +} +inline void WidgetOptions::set_positiontype(::google::protobuf::int32 value) { + set_has_positiontype(); + positiontype_ = value; +} + +// optional float positionPercentX = 19; +inline bool WidgetOptions::has_positionpercentx() const { + return (_has_bits_[0] & 0x00040000u) != 0; +} +inline void WidgetOptions::set_has_positionpercentx() { + _has_bits_[0] |= 0x00040000u; +} +inline void WidgetOptions::clear_has_positionpercentx() { + _has_bits_[0] &= ~0x00040000u; +} +inline void WidgetOptions::clear_positionpercentx() { + positionpercentx_ = 0; + clear_has_positionpercentx(); +} +inline float WidgetOptions::positionpercentx() const { + return positionpercentx_; +} +inline void WidgetOptions::set_positionpercentx(float value) { + set_has_positionpercentx(); + positionpercentx_ = value; +} + +// optional float positionPercentY = 20; +inline bool WidgetOptions::has_positionpercenty() const { + return (_has_bits_[0] & 0x00080000u) != 0; +} +inline void WidgetOptions::set_has_positionpercenty() { + _has_bits_[0] |= 0x00080000u; +} +inline void WidgetOptions::clear_has_positionpercenty() { + _has_bits_[0] &= ~0x00080000u; +} +inline void WidgetOptions::clear_positionpercenty() { + positionpercenty_ = 0; + clear_has_positionpercenty(); +} +inline float WidgetOptions::positionpercenty() const { + return positionpercenty_; +} +inline void WidgetOptions::set_positionpercenty(float value) { + set_has_positionpercenty(); + positionpercenty_ = value; +} + +// optional int32 sizeType = 21; +inline bool WidgetOptions::has_sizetype() const { + return (_has_bits_[0] & 0x00100000u) != 0; +} +inline void WidgetOptions::set_has_sizetype() { + _has_bits_[0] |= 0x00100000u; +} +inline void WidgetOptions::clear_has_sizetype() { + _has_bits_[0] &= ~0x00100000u; +} +inline void WidgetOptions::clear_sizetype() { + sizetype_ = 0; + clear_has_sizetype(); +} +inline ::google::protobuf::int32 WidgetOptions::sizetype() const { + return sizetype_; +} +inline void WidgetOptions::set_sizetype(::google::protobuf::int32 value) { + set_has_sizetype(); + sizetype_ = value; +} + +// optional float sizePercentX = 22; +inline bool WidgetOptions::has_sizepercentx() const { + return (_has_bits_[0] & 0x00200000u) != 0; +} +inline void WidgetOptions::set_has_sizepercentx() { + _has_bits_[0] |= 0x00200000u; +} +inline void WidgetOptions::clear_has_sizepercentx() { + _has_bits_[0] &= ~0x00200000u; +} +inline void WidgetOptions::clear_sizepercentx() { + sizepercentx_ = 0; + clear_has_sizepercentx(); +} +inline float WidgetOptions::sizepercentx() const { + return sizepercentx_; +} +inline void WidgetOptions::set_sizepercentx(float value) { + set_has_sizepercentx(); + sizepercentx_ = value; +} + +// optional float sizePercentY = 23; +inline bool WidgetOptions::has_sizepercenty() const { + return (_has_bits_[0] & 0x00400000u) != 0; +} +inline void WidgetOptions::set_has_sizepercenty() { + _has_bits_[0] |= 0x00400000u; +} +inline void WidgetOptions::clear_has_sizepercenty() { + _has_bits_[0] &= ~0x00400000u; +} +inline void WidgetOptions::clear_sizepercenty() { + sizepercenty_ = 0; + clear_has_sizepercenty(); +} +inline float WidgetOptions::sizepercenty() const { + return sizepercenty_; +} +inline void WidgetOptions::set_sizepercenty(float value) { + set_has_sizepercenty(); + sizepercenty_ = value; +} + +// optional bool useMergedTexture = 24; +inline bool WidgetOptions::has_usemergedtexture() const { + return (_has_bits_[0] & 0x00800000u) != 0; +} +inline void WidgetOptions::set_has_usemergedtexture() { + _has_bits_[0] |= 0x00800000u; +} +inline void WidgetOptions::clear_has_usemergedtexture() { + _has_bits_[0] &= ~0x00800000u; +} +inline void WidgetOptions::clear_usemergedtexture() { + usemergedtexture_ = false; + clear_has_usemergedtexture(); +} +inline bool WidgetOptions::usemergedtexture() const { + return usemergedtexture_; +} +inline void WidgetOptions::set_usemergedtexture(bool value) { + set_has_usemergedtexture(); + usemergedtexture_ = value; +} + +// optional int32 actionTag = 25; +inline bool WidgetOptions::has_actiontag() const { + return (_has_bits_[0] & 0x01000000u) != 0; +} +inline void WidgetOptions::set_has_actiontag() { + _has_bits_[0] |= 0x01000000u; +} +inline void WidgetOptions::clear_has_actiontag() { + _has_bits_[0] &= ~0x01000000u; +} +inline void WidgetOptions::clear_actiontag() { + actiontag_ = 0; + clear_has_actiontag(); +} +inline ::google::protobuf::int32 WidgetOptions::actiontag() const { + return actiontag_; +} +inline void WidgetOptions::set_actiontag(::google::protobuf::int32 value) { + set_has_actiontag(); + actiontag_ = value; +} + +// optional int32 tag = 26; +inline bool WidgetOptions::has_tag() const { + return (_has_bits_[0] & 0x02000000u) != 0; +} +inline void WidgetOptions::set_has_tag() { + _has_bits_[0] |= 0x02000000u; +} +inline void WidgetOptions::clear_has_tag() { + _has_bits_[0] &= ~0x02000000u; +} +inline void WidgetOptions::clear_tag() { + tag_ = 0; + clear_has_tag(); +} +inline ::google::protobuf::int32 WidgetOptions::tag() const { + return tag_; +} +inline void WidgetOptions::set_tag(::google::protobuf::int32 value) { + set_has_tag(); + tag_ = value; +} + +// optional float anchorPointX = 27; +inline bool WidgetOptions::has_anchorpointx() const { + return (_has_bits_[0] & 0x04000000u) != 0; +} +inline void WidgetOptions::set_has_anchorpointx() { + _has_bits_[0] |= 0x04000000u; +} +inline void WidgetOptions::clear_has_anchorpointx() { + _has_bits_[0] &= ~0x04000000u; +} +inline void WidgetOptions::clear_anchorpointx() { + anchorpointx_ = 0; + clear_has_anchorpointx(); +} +inline float WidgetOptions::anchorpointx() const { + return anchorpointx_; +} +inline void WidgetOptions::set_anchorpointx(float value) { + set_has_anchorpointx(); + anchorpointx_ = value; +} + +// optional float anchorPointY = 28; +inline bool WidgetOptions::has_anchorpointy() const { + return (_has_bits_[0] & 0x08000000u) != 0; +} +inline void WidgetOptions::set_has_anchorpointy() { + _has_bits_[0] |= 0x08000000u; +} +inline void WidgetOptions::clear_has_anchorpointy() { + _has_bits_[0] &= ~0x08000000u; +} +inline void WidgetOptions::clear_anchorpointy() { + anchorpointy_ = 0; + clear_has_anchorpointy(); +} +inline float WidgetOptions::anchorpointy() const { + return anchorpointy_; +} +inline void WidgetOptions::set_anchorpointy(float value) { + set_has_anchorpointy(); + anchorpointy_ = value; +} + +// optional bool ignoreSize = 29; +inline bool WidgetOptions::has_ignoresize() const { + return (_has_bits_[0] & 0x10000000u) != 0; +} +inline void WidgetOptions::set_has_ignoresize() { + _has_bits_[0] |= 0x10000000u; +} +inline void WidgetOptions::clear_has_ignoresize() { + _has_bits_[0] &= ~0x10000000u; +} +inline void WidgetOptions::clear_ignoresize() { + ignoresize_ = false; + clear_has_ignoresize(); +} +inline bool WidgetOptions::ignoresize() const { + return ignoresize_; +} +inline void WidgetOptions::set_ignoresize(bool value) { + set_has_ignoresize(); + ignoresize_ = value; +} + +// optional float rotationSkewX = 30; +inline bool WidgetOptions::has_rotationskewx() const { + return (_has_bits_[0] & 0x20000000u) != 0; +} +inline void WidgetOptions::set_has_rotationskewx() { + _has_bits_[0] |= 0x20000000u; +} +inline void WidgetOptions::clear_has_rotationskewx() { + _has_bits_[0] &= ~0x20000000u; +} +inline void WidgetOptions::clear_rotationskewx() { + rotationskewx_ = 0; + clear_has_rotationskewx(); +} +inline float WidgetOptions::rotationskewx() const { + return rotationskewx_; +} +inline void WidgetOptions::set_rotationskewx(float value) { + set_has_rotationskewx(); + rotationskewx_ = value; +} + +// optional float rotationSkewY = 31; +inline bool WidgetOptions::has_rotationskewy() const { + return (_has_bits_[0] & 0x40000000u) != 0; +} +inline void WidgetOptions::set_has_rotationskewy() { + _has_bits_[0] |= 0x40000000u; +} +inline void WidgetOptions::clear_has_rotationskewy() { + _has_bits_[0] &= ~0x40000000u; +} +inline void WidgetOptions::clear_rotationskewy() { + rotationskewy_ = 0; + clear_has_rotationskewy(); +} +inline float WidgetOptions::rotationskewy() const { + return rotationskewy_; +} +inline void WidgetOptions::set_rotationskewy(float value) { + set_has_rotationskewy(); + rotationskewy_ = value; +} + +// optional .protocolbuffers.LayoutParameter layoutParameter = 32; +inline bool WidgetOptions::has_layoutparameter() const { + return (_has_bits_[0] & 0x80000000u) != 0; +} +inline void WidgetOptions::set_has_layoutparameter() { + _has_bits_[0] |= 0x80000000u; +} +inline void WidgetOptions::clear_has_layoutparameter() { + _has_bits_[0] &= ~0x80000000u; +} +inline void WidgetOptions::clear_layoutparameter() { + if (layoutparameter_ != NULL) layoutparameter_->::protocolbuffers::LayoutParameter::Clear(); + clear_has_layoutparameter(); +} +inline const ::protocolbuffers::LayoutParameter& WidgetOptions::layoutparameter() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return layoutparameter_ != NULL ? *layoutparameter_ : *default_instance().layoutparameter_; +#else + return layoutparameter_ != NULL ? *layoutparameter_ : *default_instance_->layoutparameter_; +#endif +} +inline ::protocolbuffers::LayoutParameter* WidgetOptions::mutable_layoutparameter() { + set_has_layoutparameter(); + if (layoutparameter_ == NULL) layoutparameter_ = new ::protocolbuffers::LayoutParameter; + return layoutparameter_; +} +inline ::protocolbuffers::LayoutParameter* WidgetOptions::release_layoutparameter() { + clear_has_layoutparameter(); + ::protocolbuffers::LayoutParameter* temp = layoutparameter_; + layoutparameter_ = NULL; + return temp; +} +inline void WidgetOptions::set_allocated_layoutparameter(::protocolbuffers::LayoutParameter* layoutparameter) { + delete layoutparameter_; + layoutparameter_ = layoutparameter; + if (layoutparameter) { + set_has_layoutparameter(); + } else { + clear_has_layoutparameter(); + } +} + +// optional string customProperty = 33; +inline bool WidgetOptions::has_customproperty() const { + return (_has_bits_[1] & 0x00000001u) != 0; +} +inline void WidgetOptions::set_has_customproperty() { + _has_bits_[1] |= 0x00000001u; +} +inline void WidgetOptions::clear_has_customproperty() { + _has_bits_[1] &= ~0x00000001u; +} +inline void WidgetOptions::clear_customproperty() { + if (customproperty_ != &::google::protobuf::internal::kEmptyString) { + customproperty_->clear(); + } + clear_has_customproperty(); +} +inline const ::std::string& WidgetOptions::customproperty() const { + return *customproperty_; +} +inline void WidgetOptions::set_customproperty(const ::std::string& value) { + set_has_customproperty(); + if (customproperty_ == &::google::protobuf::internal::kEmptyString) { + customproperty_ = new ::std::string; + } + customproperty_->assign(value); +} +inline void WidgetOptions::set_customproperty(const char* value) { + set_has_customproperty(); + if (customproperty_ == &::google::protobuf::internal::kEmptyString) { + customproperty_ = new ::std::string; + } + customproperty_->assign(value); +} +inline void WidgetOptions::set_customproperty(const char* value, size_t size) { + set_has_customproperty(); + if (customproperty_ == &::google::protobuf::internal::kEmptyString) { + customproperty_ = new ::std::string; + } + customproperty_->assign(reinterpret_cast(value), size); +} +inline ::std::string* WidgetOptions::mutable_customproperty() { + set_has_customproperty(); + if (customproperty_ == &::google::protobuf::internal::kEmptyString) { + customproperty_ = new ::std::string; + } + return customproperty_; +} +inline ::std::string* WidgetOptions::release_customproperty() { + clear_has_customproperty(); + if (customproperty_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = customproperty_; + customproperty_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void WidgetOptions::set_allocated_customproperty(::std::string* customproperty) { + if (customproperty_ != &::google::protobuf::internal::kEmptyString) { + delete customproperty_; + } + if (customproperty) { + set_has_customproperty(); + customproperty_ = customproperty; + } else { + clear_has_customproperty(); + customproperty_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string frameEvent = 34; +inline bool WidgetOptions::has_frameevent() const { + return (_has_bits_[1] & 0x00000002u) != 0; +} +inline void WidgetOptions::set_has_frameevent() { + _has_bits_[1] |= 0x00000002u; +} +inline void WidgetOptions::clear_has_frameevent() { + _has_bits_[1] &= ~0x00000002u; +} +inline void WidgetOptions::clear_frameevent() { + if (frameevent_ != &::google::protobuf::internal::kEmptyString) { + frameevent_->clear(); + } + clear_has_frameevent(); +} +inline const ::std::string& WidgetOptions::frameevent() const { + return *frameevent_; +} +inline void WidgetOptions::set_frameevent(const ::std::string& value) { + set_has_frameevent(); + if (frameevent_ == &::google::protobuf::internal::kEmptyString) { + frameevent_ = new ::std::string; + } + frameevent_->assign(value); +} +inline void WidgetOptions::set_frameevent(const char* value) { + set_has_frameevent(); + if (frameevent_ == &::google::protobuf::internal::kEmptyString) { + frameevent_ = new ::std::string; + } + frameevent_->assign(value); +} +inline void WidgetOptions::set_frameevent(const char* value, size_t size) { + set_has_frameevent(); + if (frameevent_ == &::google::protobuf::internal::kEmptyString) { + frameevent_ = new ::std::string; + } + frameevent_->assign(reinterpret_cast(value), size); +} +inline ::std::string* WidgetOptions::mutable_frameevent() { + set_has_frameevent(); + if (frameevent_ == &::google::protobuf::internal::kEmptyString) { + frameevent_ = new ::std::string; + } + return frameevent_; +} +inline ::std::string* WidgetOptions::release_frameevent() { + clear_has_frameevent(); + if (frameevent_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = frameevent_; + frameevent_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void WidgetOptions::set_allocated_frameevent(::std::string* frameevent) { + if (frameevent_ != &::google::protobuf::internal::kEmptyString) { + delete frameevent_; + } + if (frameevent) { + set_has_frameevent(); + frameevent_ = frameevent; + } else { + clear_has_frameevent(); + frameevent_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string name = 35; +inline bool WidgetOptions::has_name() const { + return (_has_bits_[1] & 0x00000004u) != 0; +} +inline void WidgetOptions::set_has_name() { + _has_bits_[1] |= 0x00000004u; +} +inline void WidgetOptions::clear_has_name() { + _has_bits_[1] &= ~0x00000004u; +} +inline void WidgetOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& WidgetOptions::name() const { + return *name_; +} +inline void WidgetOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void WidgetOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void WidgetOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* WidgetOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* WidgetOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void WidgetOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 Alpha = 37; +inline bool WidgetOptions::has_alpha() const { + return (_has_bits_[1] & 0x00000008u) != 0; +} +inline void WidgetOptions::set_has_alpha() { + _has_bits_[1] |= 0x00000008u; +} +inline void WidgetOptions::clear_has_alpha() { + _has_bits_[1] &= ~0x00000008u; +} +inline void WidgetOptions::clear_alpha() { + alpha_ = 0; + clear_has_alpha(); +} +inline ::google::protobuf::int32 WidgetOptions::alpha() const { + return alpha_; +} +inline void WidgetOptions::set_alpha(::google::protobuf::int32 value) { + set_has_alpha(); + alpha_ = value; +} + +// repeated .protocolbuffers.ComponentOptions componentOptions = 36; +inline int WidgetOptions::componentoptions_size() const { + return componentoptions_.size(); +} +inline void WidgetOptions::clear_componentoptions() { + componentoptions_.Clear(); +} +inline const ::protocolbuffers::ComponentOptions& WidgetOptions::componentoptions(int index) const { + return componentoptions_.Get(index); +} +inline ::protocolbuffers::ComponentOptions* WidgetOptions::mutable_componentoptions(int index) { + return componentoptions_.Mutable(index); +} +inline ::protocolbuffers::ComponentOptions* WidgetOptions::add_componentoptions() { + return componentoptions_.Add(); +} +inline const ::google::protobuf::RepeatedPtrField< ::protocolbuffers::ComponentOptions >& +WidgetOptions::componentoptions() const { + return componentoptions_; +} +inline ::google::protobuf::RepeatedPtrField< ::protocolbuffers::ComponentOptions >* +WidgetOptions::mutable_componentoptions() { + return &componentoptions_; +} + +// ------------------------------------------------------------------- + +// LayoutParameter + +// optional int32 type = 1; +inline bool LayoutParameter::has_type() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void LayoutParameter::set_has_type() { + _has_bits_[0] |= 0x00000001u; +} +inline void LayoutParameter::clear_has_type() { + _has_bits_[0] &= ~0x00000001u; +} +inline void LayoutParameter::clear_type() { + type_ = 0; + clear_has_type(); +} +inline ::google::protobuf::int32 LayoutParameter::type() const { + return type_; +} +inline void LayoutParameter::set_type(::google::protobuf::int32 value) { + set_has_type(); + type_ = value; +} + +// optional int32 gravity = 2; +inline bool LayoutParameter::has_gravity() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void LayoutParameter::set_has_gravity() { + _has_bits_[0] |= 0x00000002u; +} +inline void LayoutParameter::clear_has_gravity() { + _has_bits_[0] &= ~0x00000002u; +} +inline void LayoutParameter::clear_gravity() { + gravity_ = 0; + clear_has_gravity(); +} +inline ::google::protobuf::int32 LayoutParameter::gravity() const { + return gravity_; +} +inline void LayoutParameter::set_gravity(::google::protobuf::int32 value) { + set_has_gravity(); + gravity_ = value; +} + +// optional string relativeName = 3; +inline bool LayoutParameter::has_relativename() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void LayoutParameter::set_has_relativename() { + _has_bits_[0] |= 0x00000004u; +} +inline void LayoutParameter::clear_has_relativename() { + _has_bits_[0] &= ~0x00000004u; +} +inline void LayoutParameter::clear_relativename() { + if (relativename_ != &::google::protobuf::internal::kEmptyString) { + relativename_->clear(); + } + clear_has_relativename(); +} +inline const ::std::string& LayoutParameter::relativename() const { + return *relativename_; +} +inline void LayoutParameter::set_relativename(const ::std::string& value) { + set_has_relativename(); + if (relativename_ == &::google::protobuf::internal::kEmptyString) { + relativename_ = new ::std::string; + } + relativename_->assign(value); +} +inline void LayoutParameter::set_relativename(const char* value) { + set_has_relativename(); + if (relativename_ == &::google::protobuf::internal::kEmptyString) { + relativename_ = new ::std::string; + } + relativename_->assign(value); +} +inline void LayoutParameter::set_relativename(const char* value, size_t size) { + set_has_relativename(); + if (relativename_ == &::google::protobuf::internal::kEmptyString) { + relativename_ = new ::std::string; + } + relativename_->assign(reinterpret_cast(value), size); +} +inline ::std::string* LayoutParameter::mutable_relativename() { + set_has_relativename(); + if (relativename_ == &::google::protobuf::internal::kEmptyString) { + relativename_ = new ::std::string; + } + return relativename_; +} +inline ::std::string* LayoutParameter::release_relativename() { + clear_has_relativename(); + if (relativename_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = relativename_; + relativename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void LayoutParameter::set_allocated_relativename(::std::string* relativename) { + if (relativename_ != &::google::protobuf::internal::kEmptyString) { + delete relativename_; + } + if (relativename) { + set_has_relativename(); + relativename_ = relativename; + } else { + clear_has_relativename(); + relativename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string relativeToName = 4; +inline bool LayoutParameter::has_relativetoname() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void LayoutParameter::set_has_relativetoname() { + _has_bits_[0] |= 0x00000008u; +} +inline void LayoutParameter::clear_has_relativetoname() { + _has_bits_[0] &= ~0x00000008u; +} +inline void LayoutParameter::clear_relativetoname() { + if (relativetoname_ != &::google::protobuf::internal::kEmptyString) { + relativetoname_->clear(); + } + clear_has_relativetoname(); +} +inline const ::std::string& LayoutParameter::relativetoname() const { + return *relativetoname_; +} +inline void LayoutParameter::set_relativetoname(const ::std::string& value) { + set_has_relativetoname(); + if (relativetoname_ == &::google::protobuf::internal::kEmptyString) { + relativetoname_ = new ::std::string; + } + relativetoname_->assign(value); +} +inline void LayoutParameter::set_relativetoname(const char* value) { + set_has_relativetoname(); + if (relativetoname_ == &::google::protobuf::internal::kEmptyString) { + relativetoname_ = new ::std::string; + } + relativetoname_->assign(value); +} +inline void LayoutParameter::set_relativetoname(const char* value, size_t size) { + set_has_relativetoname(); + if (relativetoname_ == &::google::protobuf::internal::kEmptyString) { + relativetoname_ = new ::std::string; + } + relativetoname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* LayoutParameter::mutable_relativetoname() { + set_has_relativetoname(); + if (relativetoname_ == &::google::protobuf::internal::kEmptyString) { + relativetoname_ = new ::std::string; + } + return relativetoname_; +} +inline ::std::string* LayoutParameter::release_relativetoname() { + clear_has_relativetoname(); + if (relativetoname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = relativetoname_; + relativetoname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void LayoutParameter::set_allocated_relativetoname(::std::string* relativetoname) { + if (relativetoname_ != &::google::protobuf::internal::kEmptyString) { + delete relativetoname_; + } + if (relativetoname) { + set_has_relativetoname(); + relativetoname_ = relativetoname; + } else { + clear_has_relativetoname(); + relativetoname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 align = 5; +inline bool LayoutParameter::has_align() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void LayoutParameter::set_has_align() { + _has_bits_[0] |= 0x00000010u; +} +inline void LayoutParameter::clear_has_align() { + _has_bits_[0] &= ~0x00000010u; +} +inline void LayoutParameter::clear_align() { + align_ = 0; + clear_has_align(); +} +inline ::google::protobuf::int32 LayoutParameter::align() const { + return align_; +} +inline void LayoutParameter::set_align(::google::protobuf::int32 value) { + set_has_align(); + align_ = value; +} + +// optional int32 marginLeft = 6; +inline bool LayoutParameter::has_marginleft() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void LayoutParameter::set_has_marginleft() { + _has_bits_[0] |= 0x00000020u; +} +inline void LayoutParameter::clear_has_marginleft() { + _has_bits_[0] &= ~0x00000020u; +} +inline void LayoutParameter::clear_marginleft() { + marginleft_ = 0; + clear_has_marginleft(); +} +inline ::google::protobuf::int32 LayoutParameter::marginleft() const { + return marginleft_; +} +inline void LayoutParameter::set_marginleft(::google::protobuf::int32 value) { + set_has_marginleft(); + marginleft_ = value; +} + +// optional int32 marginTop = 7; +inline bool LayoutParameter::has_margintop() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void LayoutParameter::set_has_margintop() { + _has_bits_[0] |= 0x00000040u; +} +inline void LayoutParameter::clear_has_margintop() { + _has_bits_[0] &= ~0x00000040u; +} +inline void LayoutParameter::clear_margintop() { + margintop_ = 0; + clear_has_margintop(); +} +inline ::google::protobuf::int32 LayoutParameter::margintop() const { + return margintop_; +} +inline void LayoutParameter::set_margintop(::google::protobuf::int32 value) { + set_has_margintop(); + margintop_ = value; +} + +// optional int32 marginRight = 8; +inline bool LayoutParameter::has_marginright() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void LayoutParameter::set_has_marginright() { + _has_bits_[0] |= 0x00000080u; +} +inline void LayoutParameter::clear_has_marginright() { + _has_bits_[0] &= ~0x00000080u; +} +inline void LayoutParameter::clear_marginright() { + marginright_ = 0; + clear_has_marginright(); +} +inline ::google::protobuf::int32 LayoutParameter::marginright() const { + return marginright_; +} +inline void LayoutParameter::set_marginright(::google::protobuf::int32 value) { + set_has_marginright(); + marginright_ = value; +} + +// optional int32 marginDown = 9; +inline bool LayoutParameter::has_margindown() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void LayoutParameter::set_has_margindown() { + _has_bits_[0] |= 0x00000100u; +} +inline void LayoutParameter::clear_has_margindown() { + _has_bits_[0] &= ~0x00000100u; +} +inline void LayoutParameter::clear_margindown() { + margindown_ = 0; + clear_has_margindown(); +} +inline ::google::protobuf::int32 LayoutParameter::margindown() const { + return margindown_; +} +inline void LayoutParameter::set_margindown(::google::protobuf::int32 value) { + set_has_margindown(); + margindown_ = value; +} + +// optional int32 layoutEageType = 10; +inline bool LayoutParameter::has_layouteagetype() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void LayoutParameter::set_has_layouteagetype() { + _has_bits_[0] |= 0x00000200u; +} +inline void LayoutParameter::clear_has_layouteagetype() { + _has_bits_[0] &= ~0x00000200u; +} +inline void LayoutParameter::clear_layouteagetype() { + layouteagetype_ = 0; + clear_has_layouteagetype(); +} +inline ::google::protobuf::int32 LayoutParameter::layouteagetype() const { + return layouteagetype_; +} +inline void LayoutParameter::set_layouteagetype(::google::protobuf::int32 value) { + set_has_layouteagetype(); + layouteagetype_ = value; +} + +// optional int32 layoutNormalHorizontal = 11; +inline bool LayoutParameter::has_layoutnormalhorizontal() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void LayoutParameter::set_has_layoutnormalhorizontal() { + _has_bits_[0] |= 0x00000400u; +} +inline void LayoutParameter::clear_has_layoutnormalhorizontal() { + _has_bits_[0] &= ~0x00000400u; +} +inline void LayoutParameter::clear_layoutnormalhorizontal() { + layoutnormalhorizontal_ = 0; + clear_has_layoutnormalhorizontal(); +} +inline ::google::protobuf::int32 LayoutParameter::layoutnormalhorizontal() const { + return layoutnormalhorizontal_; +} +inline void LayoutParameter::set_layoutnormalhorizontal(::google::protobuf::int32 value) { + set_has_layoutnormalhorizontal(); + layoutnormalhorizontal_ = value; +} + +// optional int32 layoutNormalVertical = 12; +inline bool LayoutParameter::has_layoutnormalvertical() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void LayoutParameter::set_has_layoutnormalvertical() { + _has_bits_[0] |= 0x00000800u; +} +inline void LayoutParameter::clear_has_layoutnormalvertical() { + _has_bits_[0] &= ~0x00000800u; +} +inline void LayoutParameter::clear_layoutnormalvertical() { + layoutnormalvertical_ = 0; + clear_has_layoutnormalvertical(); +} +inline ::google::protobuf::int32 LayoutParameter::layoutnormalvertical() const { + return layoutnormalvertical_; +} +inline void LayoutParameter::set_layoutnormalvertical(::google::protobuf::int32 value) { + set_has_layoutnormalvertical(); + layoutnormalvertical_ = value; +} + +// optional int32 layoutParentHorizontal = 13; +inline bool LayoutParameter::has_layoutparenthorizontal() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void LayoutParameter::set_has_layoutparenthorizontal() { + _has_bits_[0] |= 0x00001000u; +} +inline void LayoutParameter::clear_has_layoutparenthorizontal() { + _has_bits_[0] &= ~0x00001000u; +} +inline void LayoutParameter::clear_layoutparenthorizontal() { + layoutparenthorizontal_ = 0; + clear_has_layoutparenthorizontal(); +} +inline ::google::protobuf::int32 LayoutParameter::layoutparenthorizontal() const { + return layoutparenthorizontal_; +} +inline void LayoutParameter::set_layoutparenthorizontal(::google::protobuf::int32 value) { + set_has_layoutparenthorizontal(); + layoutparenthorizontal_ = value; +} + +// optional int32 layoutParentVertical = 14; +inline bool LayoutParameter::has_layoutparentvertical() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void LayoutParameter::set_has_layoutparentvertical() { + _has_bits_[0] |= 0x00002000u; +} +inline void LayoutParameter::clear_has_layoutparentvertical() { + _has_bits_[0] &= ~0x00002000u; +} +inline void LayoutParameter::clear_layoutparentvertical() { + layoutparentvertical_ = 0; + clear_has_layoutparentvertical(); +} +inline ::google::protobuf::int32 LayoutParameter::layoutparentvertical() const { + return layoutparentvertical_; +} +inline void LayoutParameter::set_layoutparentvertical(::google::protobuf::int32 value) { + set_has_layoutparentvertical(); + layoutparentvertical_ = value; +} + +// ------------------------------------------------------------------- + +// ButtonOptions + +// optional string name = 1; +inline bool ButtonOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ButtonOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void ButtonOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void ButtonOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& ButtonOptions::name() const { + return *name_; +} +inline void ButtonOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void ButtonOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void ButtonOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ButtonOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* ButtonOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ButtonOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool ButtonOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ButtonOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void ButtonOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void ButtonOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& ButtonOptions::classname() const { + return *classname_; +} +inline void ButtonOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void ButtonOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void ButtonOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ButtonOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* ButtonOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ButtonOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string normal = 3; +inline bool ButtonOptions::has_normal() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void ButtonOptions::set_has_normal() { + _has_bits_[0] |= 0x00000004u; +} +inline void ButtonOptions::clear_has_normal() { + _has_bits_[0] &= ~0x00000004u; +} +inline void ButtonOptions::clear_normal() { + if (normal_ != &::google::protobuf::internal::kEmptyString) { + normal_->clear(); + } + clear_has_normal(); +} +inline const ::std::string& ButtonOptions::normal() const { + return *normal_; +} +inline void ButtonOptions::set_normal(const ::std::string& value) { + set_has_normal(); + if (normal_ == &::google::protobuf::internal::kEmptyString) { + normal_ = new ::std::string; + } + normal_->assign(value); +} +inline void ButtonOptions::set_normal(const char* value) { + set_has_normal(); + if (normal_ == &::google::protobuf::internal::kEmptyString) { + normal_ = new ::std::string; + } + normal_->assign(value); +} +inline void ButtonOptions::set_normal(const char* value, size_t size) { + set_has_normal(); + if (normal_ == &::google::protobuf::internal::kEmptyString) { + normal_ = new ::std::string; + } + normal_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ButtonOptions::mutable_normal() { + set_has_normal(); + if (normal_ == &::google::protobuf::internal::kEmptyString) { + normal_ = new ::std::string; + } + return normal_; +} +inline ::std::string* ButtonOptions::release_normal() { + clear_has_normal(); + if (normal_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = normal_; + normal_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ButtonOptions::set_allocated_normal(::std::string* normal) { + if (normal_ != &::google::protobuf::internal::kEmptyString) { + delete normal_; + } + if (normal) { + set_has_normal(); + normal_ = normal; + } else { + clear_has_normal(); + normal_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string pressed = 4; +inline bool ButtonOptions::has_pressed() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void ButtonOptions::set_has_pressed() { + _has_bits_[0] |= 0x00000008u; +} +inline void ButtonOptions::clear_has_pressed() { + _has_bits_[0] &= ~0x00000008u; +} +inline void ButtonOptions::clear_pressed() { + if (pressed_ != &::google::protobuf::internal::kEmptyString) { + pressed_->clear(); + } + clear_has_pressed(); +} +inline const ::std::string& ButtonOptions::pressed() const { + return *pressed_; +} +inline void ButtonOptions::set_pressed(const ::std::string& value) { + set_has_pressed(); + if (pressed_ == &::google::protobuf::internal::kEmptyString) { + pressed_ = new ::std::string; + } + pressed_->assign(value); +} +inline void ButtonOptions::set_pressed(const char* value) { + set_has_pressed(); + if (pressed_ == &::google::protobuf::internal::kEmptyString) { + pressed_ = new ::std::string; + } + pressed_->assign(value); +} +inline void ButtonOptions::set_pressed(const char* value, size_t size) { + set_has_pressed(); + if (pressed_ == &::google::protobuf::internal::kEmptyString) { + pressed_ = new ::std::string; + } + pressed_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ButtonOptions::mutable_pressed() { + set_has_pressed(); + if (pressed_ == &::google::protobuf::internal::kEmptyString) { + pressed_ = new ::std::string; + } + return pressed_; +} +inline ::std::string* ButtonOptions::release_pressed() { + clear_has_pressed(); + if (pressed_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = pressed_; + pressed_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ButtonOptions::set_allocated_pressed(::std::string* pressed) { + if (pressed_ != &::google::protobuf::internal::kEmptyString) { + delete pressed_; + } + if (pressed) { + set_has_pressed(); + pressed_ = pressed; + } else { + clear_has_pressed(); + pressed_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string disabled = 5; +inline bool ButtonOptions::has_disabled() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void ButtonOptions::set_has_disabled() { + _has_bits_[0] |= 0x00000010u; +} +inline void ButtonOptions::clear_has_disabled() { + _has_bits_[0] &= ~0x00000010u; +} +inline void ButtonOptions::clear_disabled() { + if (disabled_ != &::google::protobuf::internal::kEmptyString) { + disabled_->clear(); + } + clear_has_disabled(); +} +inline const ::std::string& ButtonOptions::disabled() const { + return *disabled_; +} +inline void ButtonOptions::set_disabled(const ::std::string& value) { + set_has_disabled(); + if (disabled_ == &::google::protobuf::internal::kEmptyString) { + disabled_ = new ::std::string; + } + disabled_->assign(value); +} +inline void ButtonOptions::set_disabled(const char* value) { + set_has_disabled(); + if (disabled_ == &::google::protobuf::internal::kEmptyString) { + disabled_ = new ::std::string; + } + disabled_->assign(value); +} +inline void ButtonOptions::set_disabled(const char* value, size_t size) { + set_has_disabled(); + if (disabled_ == &::google::protobuf::internal::kEmptyString) { + disabled_ = new ::std::string; + } + disabled_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ButtonOptions::mutable_disabled() { + set_has_disabled(); + if (disabled_ == &::google::protobuf::internal::kEmptyString) { + disabled_ = new ::std::string; + } + return disabled_; +} +inline ::std::string* ButtonOptions::release_disabled() { + clear_has_disabled(); + if (disabled_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = disabled_; + disabled_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ButtonOptions::set_allocated_disabled(::std::string* disabled) { + if (disabled_ != &::google::protobuf::internal::kEmptyString) { + delete disabled_; + } + if (disabled) { + set_has_disabled(); + disabled_ = disabled; + } else { + clear_has_disabled(); + disabled_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData normalData = 6; +inline bool ButtonOptions::has_normaldata() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void ButtonOptions::set_has_normaldata() { + _has_bits_[0] |= 0x00000020u; +} +inline void ButtonOptions::clear_has_normaldata() { + _has_bits_[0] &= ~0x00000020u; +} +inline void ButtonOptions::clear_normaldata() { + if (normaldata_ != NULL) normaldata_->::protocolbuffers::ResourceData::Clear(); + clear_has_normaldata(); +} +inline const ::protocolbuffers::ResourceData& ButtonOptions::normaldata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return normaldata_ != NULL ? *normaldata_ : *default_instance().normaldata_; +#else + return normaldata_ != NULL ? *normaldata_ : *default_instance_->normaldata_; +#endif +} +inline ::protocolbuffers::ResourceData* ButtonOptions::mutable_normaldata() { + set_has_normaldata(); + if (normaldata_ == NULL) normaldata_ = new ::protocolbuffers::ResourceData; + return normaldata_; +} +inline ::protocolbuffers::ResourceData* ButtonOptions::release_normaldata() { + clear_has_normaldata(); + ::protocolbuffers::ResourceData* temp = normaldata_; + normaldata_ = NULL; + return temp; +} +inline void ButtonOptions::set_allocated_normaldata(::protocolbuffers::ResourceData* normaldata) { + delete normaldata_; + normaldata_ = normaldata; + if (normaldata) { + set_has_normaldata(); + } else { + clear_has_normaldata(); + } +} + +// optional .protocolbuffers.ResourceData pressedData = 7; +inline bool ButtonOptions::has_presseddata() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void ButtonOptions::set_has_presseddata() { + _has_bits_[0] |= 0x00000040u; +} +inline void ButtonOptions::clear_has_presseddata() { + _has_bits_[0] &= ~0x00000040u; +} +inline void ButtonOptions::clear_presseddata() { + if (presseddata_ != NULL) presseddata_->::protocolbuffers::ResourceData::Clear(); + clear_has_presseddata(); +} +inline const ::protocolbuffers::ResourceData& ButtonOptions::presseddata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return presseddata_ != NULL ? *presseddata_ : *default_instance().presseddata_; +#else + return presseddata_ != NULL ? *presseddata_ : *default_instance_->presseddata_; +#endif +} +inline ::protocolbuffers::ResourceData* ButtonOptions::mutable_presseddata() { + set_has_presseddata(); + if (presseddata_ == NULL) presseddata_ = new ::protocolbuffers::ResourceData; + return presseddata_; +} +inline ::protocolbuffers::ResourceData* ButtonOptions::release_presseddata() { + clear_has_presseddata(); + ::protocolbuffers::ResourceData* temp = presseddata_; + presseddata_ = NULL; + return temp; +} +inline void ButtonOptions::set_allocated_presseddata(::protocolbuffers::ResourceData* presseddata) { + delete presseddata_; + presseddata_ = presseddata; + if (presseddata) { + set_has_presseddata(); + } else { + clear_has_presseddata(); + } +} + +// optional .protocolbuffers.ResourceData disabledData = 8; +inline bool ButtonOptions::has_disableddata() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void ButtonOptions::set_has_disableddata() { + _has_bits_[0] |= 0x00000080u; +} +inline void ButtonOptions::clear_has_disableddata() { + _has_bits_[0] &= ~0x00000080u; +} +inline void ButtonOptions::clear_disableddata() { + if (disableddata_ != NULL) disableddata_->::protocolbuffers::ResourceData::Clear(); + clear_has_disableddata(); +} +inline const ::protocolbuffers::ResourceData& ButtonOptions::disableddata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return disableddata_ != NULL ? *disableddata_ : *default_instance().disableddata_; +#else + return disableddata_ != NULL ? *disableddata_ : *default_instance_->disableddata_; +#endif +} +inline ::protocolbuffers::ResourceData* ButtonOptions::mutable_disableddata() { + set_has_disableddata(); + if (disableddata_ == NULL) disableddata_ = new ::protocolbuffers::ResourceData; + return disableddata_; +} +inline ::protocolbuffers::ResourceData* ButtonOptions::release_disableddata() { + clear_has_disableddata(); + ::protocolbuffers::ResourceData* temp = disableddata_; + disableddata_ = NULL; + return temp; +} +inline void ButtonOptions::set_allocated_disableddata(::protocolbuffers::ResourceData* disableddata) { + delete disableddata_; + disableddata_ = disableddata; + if (disableddata) { + set_has_disableddata(); + } else { + clear_has_disableddata(); + } +} + +// optional string text = 9; +inline bool ButtonOptions::has_text() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void ButtonOptions::set_has_text() { + _has_bits_[0] |= 0x00000100u; +} +inline void ButtonOptions::clear_has_text() { + _has_bits_[0] &= ~0x00000100u; +} +inline void ButtonOptions::clear_text() { + if (text_ != &::google::protobuf::internal::kEmptyString) { + text_->clear(); + } + clear_has_text(); +} +inline const ::std::string& ButtonOptions::text() const { + return *text_; +} +inline void ButtonOptions::set_text(const ::std::string& value) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + text_->assign(value); +} +inline void ButtonOptions::set_text(const char* value) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + text_->assign(value); +} +inline void ButtonOptions::set_text(const char* value, size_t size) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + text_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ButtonOptions::mutable_text() { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + return text_; +} +inline ::std::string* ButtonOptions::release_text() { + clear_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = text_; + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ButtonOptions::set_allocated_text(::std::string* text) { + if (text_ != &::google::protobuf::internal::kEmptyString) { + delete text_; + } + if (text) { + set_has_text(); + text_ = text; + } else { + clear_has_text(); + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string fontName = 10; +inline bool ButtonOptions::has_fontname() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void ButtonOptions::set_has_fontname() { + _has_bits_[0] |= 0x00000200u; +} +inline void ButtonOptions::clear_has_fontname() { + _has_bits_[0] &= ~0x00000200u; +} +inline void ButtonOptions::clear_fontname() { + if (fontname_ != &::google::protobuf::internal::kEmptyString) { + fontname_->clear(); + } + clear_has_fontname(); +} +inline const ::std::string& ButtonOptions::fontname() const { + return *fontname_; +} +inline void ButtonOptions::set_fontname(const ::std::string& value) { + set_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + fontname_ = new ::std::string; + } + fontname_->assign(value); +} +inline void ButtonOptions::set_fontname(const char* value) { + set_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + fontname_ = new ::std::string; + } + fontname_->assign(value); +} +inline void ButtonOptions::set_fontname(const char* value, size_t size) { + set_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + fontname_ = new ::std::string; + } + fontname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ButtonOptions::mutable_fontname() { + set_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + fontname_ = new ::std::string; + } + return fontname_; +} +inline ::std::string* ButtonOptions::release_fontname() { + clear_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = fontname_; + fontname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ButtonOptions::set_allocated_fontname(::std::string* fontname) { + if (fontname_ != &::google::protobuf::internal::kEmptyString) { + delete fontname_; + } + if (fontname) { + set_has_fontname(); + fontname_ = fontname; + } else { + clear_has_fontname(); + fontname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 fontSize = 11; +inline bool ButtonOptions::has_fontsize() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void ButtonOptions::set_has_fontsize() { + _has_bits_[0] |= 0x00000400u; +} +inline void ButtonOptions::clear_has_fontsize() { + _has_bits_[0] &= ~0x00000400u; +} +inline void ButtonOptions::clear_fontsize() { + fontsize_ = 0; + clear_has_fontsize(); +} +inline ::google::protobuf::int32 ButtonOptions::fontsize() const { + return fontsize_; +} +inline void ButtonOptions::set_fontsize(::google::protobuf::int32 value) { + set_has_fontsize(); + fontsize_ = value; +} + +// optional int32 textColorR = 12; +inline bool ButtonOptions::has_textcolorr() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void ButtonOptions::set_has_textcolorr() { + _has_bits_[0] |= 0x00000800u; +} +inline void ButtonOptions::clear_has_textcolorr() { + _has_bits_[0] &= ~0x00000800u; +} +inline void ButtonOptions::clear_textcolorr() { + textcolorr_ = 0; + clear_has_textcolorr(); +} +inline ::google::protobuf::int32 ButtonOptions::textcolorr() const { + return textcolorr_; +} +inline void ButtonOptions::set_textcolorr(::google::protobuf::int32 value) { + set_has_textcolorr(); + textcolorr_ = value; +} + +// optional int32 textColorG = 13; +inline bool ButtonOptions::has_textcolorg() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void ButtonOptions::set_has_textcolorg() { + _has_bits_[0] |= 0x00001000u; +} +inline void ButtonOptions::clear_has_textcolorg() { + _has_bits_[0] &= ~0x00001000u; +} +inline void ButtonOptions::clear_textcolorg() { + textcolorg_ = 0; + clear_has_textcolorg(); +} +inline ::google::protobuf::int32 ButtonOptions::textcolorg() const { + return textcolorg_; +} +inline void ButtonOptions::set_textcolorg(::google::protobuf::int32 value) { + set_has_textcolorg(); + textcolorg_ = value; +} + +// optional int32 textColorB = 14; +inline bool ButtonOptions::has_textcolorb() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void ButtonOptions::set_has_textcolorb() { + _has_bits_[0] |= 0x00002000u; +} +inline void ButtonOptions::clear_has_textcolorb() { + _has_bits_[0] &= ~0x00002000u; +} +inline void ButtonOptions::clear_textcolorb() { + textcolorb_ = 0; + clear_has_textcolorb(); +} +inline ::google::protobuf::int32 ButtonOptions::textcolorb() const { + return textcolorb_; +} +inline void ButtonOptions::set_textcolorb(::google::protobuf::int32 value) { + set_has_textcolorb(); + textcolorb_ = value; +} + +// optional float capInsetsX = 15; +inline bool ButtonOptions::has_capinsetsx() const { + return (_has_bits_[0] & 0x00004000u) != 0; +} +inline void ButtonOptions::set_has_capinsetsx() { + _has_bits_[0] |= 0x00004000u; +} +inline void ButtonOptions::clear_has_capinsetsx() { + _has_bits_[0] &= ~0x00004000u; +} +inline void ButtonOptions::clear_capinsetsx() { + capinsetsx_ = 0; + clear_has_capinsetsx(); +} +inline float ButtonOptions::capinsetsx() const { + return capinsetsx_; +} +inline void ButtonOptions::set_capinsetsx(float value) { + set_has_capinsetsx(); + capinsetsx_ = value; +} + +// optional float capInsetsY = 16; +inline bool ButtonOptions::has_capinsetsy() const { + return (_has_bits_[0] & 0x00008000u) != 0; +} +inline void ButtonOptions::set_has_capinsetsy() { + _has_bits_[0] |= 0x00008000u; +} +inline void ButtonOptions::clear_has_capinsetsy() { + _has_bits_[0] &= ~0x00008000u; +} +inline void ButtonOptions::clear_capinsetsy() { + capinsetsy_ = 0; + clear_has_capinsetsy(); +} +inline float ButtonOptions::capinsetsy() const { + return capinsetsy_; +} +inline void ButtonOptions::set_capinsetsy(float value) { + set_has_capinsetsy(); + capinsetsy_ = value; +} + +// optional float capInsetsWidth = 17; +inline bool ButtonOptions::has_capinsetswidth() const { + return (_has_bits_[0] & 0x00010000u) != 0; +} +inline void ButtonOptions::set_has_capinsetswidth() { + _has_bits_[0] |= 0x00010000u; +} +inline void ButtonOptions::clear_has_capinsetswidth() { + _has_bits_[0] &= ~0x00010000u; +} +inline void ButtonOptions::clear_capinsetswidth() { + capinsetswidth_ = 0; + clear_has_capinsetswidth(); +} +inline float ButtonOptions::capinsetswidth() const { + return capinsetswidth_; +} +inline void ButtonOptions::set_capinsetswidth(float value) { + set_has_capinsetswidth(); + capinsetswidth_ = value; +} + +// optional float capInsetsHeight = 18; +inline bool ButtonOptions::has_capinsetsheight() const { + return (_has_bits_[0] & 0x00020000u) != 0; +} +inline void ButtonOptions::set_has_capinsetsheight() { + _has_bits_[0] |= 0x00020000u; +} +inline void ButtonOptions::clear_has_capinsetsheight() { + _has_bits_[0] &= ~0x00020000u; +} +inline void ButtonOptions::clear_capinsetsheight() { + capinsetsheight_ = 0; + clear_has_capinsetsheight(); +} +inline float ButtonOptions::capinsetsheight() const { + return capinsetsheight_; +} +inline void ButtonOptions::set_capinsetsheight(float value) { + set_has_capinsetsheight(); + capinsetsheight_ = value; +} + +// optional float scale9Width = 19; +inline bool ButtonOptions::has_scale9width() const { + return (_has_bits_[0] & 0x00040000u) != 0; +} +inline void ButtonOptions::set_has_scale9width() { + _has_bits_[0] |= 0x00040000u; +} +inline void ButtonOptions::clear_has_scale9width() { + _has_bits_[0] &= ~0x00040000u; +} +inline void ButtonOptions::clear_scale9width() { + scale9width_ = 0; + clear_has_scale9width(); +} +inline float ButtonOptions::scale9width() const { + return scale9width_; +} +inline void ButtonOptions::set_scale9width(float value) { + set_has_scale9width(); + scale9width_ = value; +} + +// optional float scale9Height = 20; +inline bool ButtonOptions::has_scale9height() const { + return (_has_bits_[0] & 0x00080000u) != 0; +} +inline void ButtonOptions::set_has_scale9height() { + _has_bits_[0] |= 0x00080000u; +} +inline void ButtonOptions::clear_has_scale9height() { + _has_bits_[0] &= ~0x00080000u; +} +inline void ButtonOptions::clear_scale9height() { + scale9height_ = 0; + clear_has_scale9height(); +} +inline float ButtonOptions::scale9height() const { + return scale9height_; +} +inline void ButtonOptions::set_scale9height(float value) { + set_has_scale9height(); + scale9height_ = value; +} + +// optional bool scale9Enable = 21; +inline bool ButtonOptions::has_scale9enable() const { + return (_has_bits_[0] & 0x00100000u) != 0; +} +inline void ButtonOptions::set_has_scale9enable() { + _has_bits_[0] |= 0x00100000u; +} +inline void ButtonOptions::clear_has_scale9enable() { + _has_bits_[0] &= ~0x00100000u; +} +inline void ButtonOptions::clear_scale9enable() { + scale9enable_ = false; + clear_has_scale9enable(); +} +inline bool ButtonOptions::scale9enable() const { + return scale9enable_; +} +inline void ButtonOptions::set_scale9enable(bool value) { + set_has_scale9enable(); + scale9enable_ = value; +} + +// optional bool displaystate = 22; +inline bool ButtonOptions::has_displaystate() const { + return (_has_bits_[0] & 0x00200000u) != 0; +} +inline void ButtonOptions::set_has_displaystate() { + _has_bits_[0] |= 0x00200000u; +} +inline void ButtonOptions::clear_has_displaystate() { + _has_bits_[0] &= ~0x00200000u; +} +inline void ButtonOptions::clear_displaystate() { + displaystate_ = false; + clear_has_displaystate(); +} +inline bool ButtonOptions::displaystate() const { + return displaystate_; +} +inline void ButtonOptions::set_displaystate(bool value) { + set_has_displaystate(); + displaystate_ = value; +} + +// optional .protocolbuffers.ResourceData fontResource = 23; +inline bool ButtonOptions::has_fontresource() const { + return (_has_bits_[0] & 0x00400000u) != 0; +} +inline void ButtonOptions::set_has_fontresource() { + _has_bits_[0] |= 0x00400000u; +} +inline void ButtonOptions::clear_has_fontresource() { + _has_bits_[0] &= ~0x00400000u; +} +inline void ButtonOptions::clear_fontresource() { + if (fontresource_ != NULL) fontresource_->::protocolbuffers::ResourceData::Clear(); + clear_has_fontresource(); +} +inline const ::protocolbuffers::ResourceData& ButtonOptions::fontresource() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return fontresource_ != NULL ? *fontresource_ : *default_instance().fontresource_; +#else + return fontresource_ != NULL ? *fontresource_ : *default_instance_->fontresource_; +#endif +} +inline ::protocolbuffers::ResourceData* ButtonOptions::mutable_fontresource() { + set_has_fontresource(); + if (fontresource_ == NULL) fontresource_ = new ::protocolbuffers::ResourceData; + return fontresource_; +} +inline ::protocolbuffers::ResourceData* ButtonOptions::release_fontresource() { + clear_has_fontresource(); + ::protocolbuffers::ResourceData* temp = fontresource_; + fontresource_ = NULL; + return temp; +} +inline void ButtonOptions::set_allocated_fontresource(::protocolbuffers::ResourceData* fontresource) { + delete fontresource_; + fontresource_ = fontresource; + if (fontresource) { + set_has_fontresource(); + } else { + clear_has_fontresource(); + } +} + +// ------------------------------------------------------------------- + +// ResourceData + +// optional string path = 1; +inline bool ResourceData::has_path() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ResourceData::set_has_path() { + _has_bits_[0] |= 0x00000001u; +} +inline void ResourceData::clear_has_path() { + _has_bits_[0] &= ~0x00000001u; +} +inline void ResourceData::clear_path() { + if (path_ != &::google::protobuf::internal::kEmptyString) { + path_->clear(); + } + clear_has_path(); +} +inline const ::std::string& ResourceData::path() const { + return *path_; +} +inline void ResourceData::set_path(const ::std::string& value) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + path_ = new ::std::string; + } + path_->assign(value); +} +inline void ResourceData::set_path(const char* value) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + path_ = new ::std::string; + } + path_->assign(value); +} +inline void ResourceData::set_path(const char* value, size_t size) { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + path_ = new ::std::string; + } + path_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ResourceData::mutable_path() { + set_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + path_ = new ::std::string; + } + return path_; +} +inline ::std::string* ResourceData::release_path() { + clear_has_path(); + if (path_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = path_; + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ResourceData::set_allocated_path(::std::string* path) { + if (path_ != &::google::protobuf::internal::kEmptyString) { + delete path_; + } + if (path) { + set_has_path(); + path_ = path; + } else { + clear_has_path(); + path_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string plistFile = 2; +inline bool ResourceData::has_plistfile() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ResourceData::set_has_plistfile() { + _has_bits_[0] |= 0x00000002u; +} +inline void ResourceData::clear_has_plistfile() { + _has_bits_[0] &= ~0x00000002u; +} +inline void ResourceData::clear_plistfile() { + if (plistfile_ != &::google::protobuf::internal::kEmptyString) { + plistfile_->clear(); + } + clear_has_plistfile(); +} +inline const ::std::string& ResourceData::plistfile() const { + return *plistfile_; +} +inline void ResourceData::set_plistfile(const ::std::string& value) { + set_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + plistfile_ = new ::std::string; + } + plistfile_->assign(value); +} +inline void ResourceData::set_plistfile(const char* value) { + set_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + plistfile_ = new ::std::string; + } + plistfile_->assign(value); +} +inline void ResourceData::set_plistfile(const char* value, size_t size) { + set_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + plistfile_ = new ::std::string; + } + plistfile_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ResourceData::mutable_plistfile() { + set_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + plistfile_ = new ::std::string; + } + return plistfile_; +} +inline ::std::string* ResourceData::release_plistfile() { + clear_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = plistfile_; + plistfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ResourceData::set_allocated_plistfile(::std::string* plistfile) { + if (plistfile_ != &::google::protobuf::internal::kEmptyString) { + delete plistfile_; + } + if (plistfile) { + set_has_plistfile(); + plistfile_ = plistfile; + } else { + clear_has_plistfile(); + plistfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 resourceType = 3; +inline bool ResourceData::has_resourcetype() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void ResourceData::set_has_resourcetype() { + _has_bits_[0] |= 0x00000004u; +} +inline void ResourceData::clear_has_resourcetype() { + _has_bits_[0] &= ~0x00000004u; +} +inline void ResourceData::clear_resourcetype() { + resourcetype_ = 0; + clear_has_resourcetype(); +} +inline ::google::protobuf::int32 ResourceData::resourcetype() const { + return resourcetype_; +} +inline void ResourceData::set_resourcetype(::google::protobuf::int32 value) { + set_has_resourcetype(); + resourcetype_ = value; +} + +// ------------------------------------------------------------------- + +// CheckBoxOptions + +// optional string name = 1; +inline bool CheckBoxOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void CheckBoxOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void CheckBoxOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void CheckBoxOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& CheckBoxOptions::name() const { + return *name_; +} +inline void CheckBoxOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void CheckBoxOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void CheckBoxOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CheckBoxOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* CheckBoxOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CheckBoxOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool CheckBoxOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void CheckBoxOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void CheckBoxOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void CheckBoxOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& CheckBoxOptions::classname() const { + return *classname_; +} +inline void CheckBoxOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void CheckBoxOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void CheckBoxOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CheckBoxOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* CheckBoxOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CheckBoxOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string backGroundBox = 3; +inline bool CheckBoxOptions::has_backgroundbox() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void CheckBoxOptions::set_has_backgroundbox() { + _has_bits_[0] |= 0x00000004u; +} +inline void CheckBoxOptions::clear_has_backgroundbox() { + _has_bits_[0] &= ~0x00000004u; +} +inline void CheckBoxOptions::clear_backgroundbox() { + if (backgroundbox_ != &::google::protobuf::internal::kEmptyString) { + backgroundbox_->clear(); + } + clear_has_backgroundbox(); +} +inline const ::std::string& CheckBoxOptions::backgroundbox() const { + return *backgroundbox_; +} +inline void CheckBoxOptions::set_backgroundbox(const ::std::string& value) { + set_has_backgroundbox(); + if (backgroundbox_ == &::google::protobuf::internal::kEmptyString) { + backgroundbox_ = new ::std::string; + } + backgroundbox_->assign(value); +} +inline void CheckBoxOptions::set_backgroundbox(const char* value) { + set_has_backgroundbox(); + if (backgroundbox_ == &::google::protobuf::internal::kEmptyString) { + backgroundbox_ = new ::std::string; + } + backgroundbox_->assign(value); +} +inline void CheckBoxOptions::set_backgroundbox(const char* value, size_t size) { + set_has_backgroundbox(); + if (backgroundbox_ == &::google::protobuf::internal::kEmptyString) { + backgroundbox_ = new ::std::string; + } + backgroundbox_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CheckBoxOptions::mutable_backgroundbox() { + set_has_backgroundbox(); + if (backgroundbox_ == &::google::protobuf::internal::kEmptyString) { + backgroundbox_ = new ::std::string; + } + return backgroundbox_; +} +inline ::std::string* CheckBoxOptions::release_backgroundbox() { + clear_has_backgroundbox(); + if (backgroundbox_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = backgroundbox_; + backgroundbox_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CheckBoxOptions::set_allocated_backgroundbox(::std::string* backgroundbox) { + if (backgroundbox_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundbox_; + } + if (backgroundbox) { + set_has_backgroundbox(); + backgroundbox_ = backgroundbox; + } else { + clear_has_backgroundbox(); + backgroundbox_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string backGroundBoxSelected = 4; +inline bool CheckBoxOptions::has_backgroundboxselected() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void CheckBoxOptions::set_has_backgroundboxselected() { + _has_bits_[0] |= 0x00000008u; +} +inline void CheckBoxOptions::clear_has_backgroundboxselected() { + _has_bits_[0] &= ~0x00000008u; +} +inline void CheckBoxOptions::clear_backgroundboxselected() { + if (backgroundboxselected_ != &::google::protobuf::internal::kEmptyString) { + backgroundboxselected_->clear(); + } + clear_has_backgroundboxselected(); +} +inline const ::std::string& CheckBoxOptions::backgroundboxselected() const { + return *backgroundboxselected_; +} +inline void CheckBoxOptions::set_backgroundboxselected(const ::std::string& value) { + set_has_backgroundboxselected(); + if (backgroundboxselected_ == &::google::protobuf::internal::kEmptyString) { + backgroundboxselected_ = new ::std::string; + } + backgroundboxselected_->assign(value); +} +inline void CheckBoxOptions::set_backgroundboxselected(const char* value) { + set_has_backgroundboxselected(); + if (backgroundboxselected_ == &::google::protobuf::internal::kEmptyString) { + backgroundboxselected_ = new ::std::string; + } + backgroundboxselected_->assign(value); +} +inline void CheckBoxOptions::set_backgroundboxselected(const char* value, size_t size) { + set_has_backgroundboxselected(); + if (backgroundboxselected_ == &::google::protobuf::internal::kEmptyString) { + backgroundboxselected_ = new ::std::string; + } + backgroundboxselected_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CheckBoxOptions::mutable_backgroundboxselected() { + set_has_backgroundboxselected(); + if (backgroundboxselected_ == &::google::protobuf::internal::kEmptyString) { + backgroundboxselected_ = new ::std::string; + } + return backgroundboxselected_; +} +inline ::std::string* CheckBoxOptions::release_backgroundboxselected() { + clear_has_backgroundboxselected(); + if (backgroundboxselected_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = backgroundboxselected_; + backgroundboxselected_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CheckBoxOptions::set_allocated_backgroundboxselected(::std::string* backgroundboxselected) { + if (backgroundboxselected_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundboxselected_; + } + if (backgroundboxselected) { + set_has_backgroundboxselected(); + backgroundboxselected_ = backgroundboxselected; + } else { + clear_has_backgroundboxselected(); + backgroundboxselected_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string backGroundBoxDisabled = 5; +inline bool CheckBoxOptions::has_backgroundboxdisabled() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void CheckBoxOptions::set_has_backgroundboxdisabled() { + _has_bits_[0] |= 0x00000010u; +} +inline void CheckBoxOptions::clear_has_backgroundboxdisabled() { + _has_bits_[0] &= ~0x00000010u; +} +inline void CheckBoxOptions::clear_backgroundboxdisabled() { + if (backgroundboxdisabled_ != &::google::protobuf::internal::kEmptyString) { + backgroundboxdisabled_->clear(); + } + clear_has_backgroundboxdisabled(); +} +inline const ::std::string& CheckBoxOptions::backgroundboxdisabled() const { + return *backgroundboxdisabled_; +} +inline void CheckBoxOptions::set_backgroundboxdisabled(const ::std::string& value) { + set_has_backgroundboxdisabled(); + if (backgroundboxdisabled_ == &::google::protobuf::internal::kEmptyString) { + backgroundboxdisabled_ = new ::std::string; + } + backgroundboxdisabled_->assign(value); +} +inline void CheckBoxOptions::set_backgroundboxdisabled(const char* value) { + set_has_backgroundboxdisabled(); + if (backgroundboxdisabled_ == &::google::protobuf::internal::kEmptyString) { + backgroundboxdisabled_ = new ::std::string; + } + backgroundboxdisabled_->assign(value); +} +inline void CheckBoxOptions::set_backgroundboxdisabled(const char* value, size_t size) { + set_has_backgroundboxdisabled(); + if (backgroundboxdisabled_ == &::google::protobuf::internal::kEmptyString) { + backgroundboxdisabled_ = new ::std::string; + } + backgroundboxdisabled_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CheckBoxOptions::mutable_backgroundboxdisabled() { + set_has_backgroundboxdisabled(); + if (backgroundboxdisabled_ == &::google::protobuf::internal::kEmptyString) { + backgroundboxdisabled_ = new ::std::string; + } + return backgroundboxdisabled_; +} +inline ::std::string* CheckBoxOptions::release_backgroundboxdisabled() { + clear_has_backgroundboxdisabled(); + if (backgroundboxdisabled_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = backgroundboxdisabled_; + backgroundboxdisabled_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CheckBoxOptions::set_allocated_backgroundboxdisabled(::std::string* backgroundboxdisabled) { + if (backgroundboxdisabled_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundboxdisabled_; + } + if (backgroundboxdisabled) { + set_has_backgroundboxdisabled(); + backgroundboxdisabled_ = backgroundboxdisabled; + } else { + clear_has_backgroundboxdisabled(); + backgroundboxdisabled_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string frontCross = 6; +inline bool CheckBoxOptions::has_frontcross() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void CheckBoxOptions::set_has_frontcross() { + _has_bits_[0] |= 0x00000020u; +} +inline void CheckBoxOptions::clear_has_frontcross() { + _has_bits_[0] &= ~0x00000020u; +} +inline void CheckBoxOptions::clear_frontcross() { + if (frontcross_ != &::google::protobuf::internal::kEmptyString) { + frontcross_->clear(); + } + clear_has_frontcross(); +} +inline const ::std::string& CheckBoxOptions::frontcross() const { + return *frontcross_; +} +inline void CheckBoxOptions::set_frontcross(const ::std::string& value) { + set_has_frontcross(); + if (frontcross_ == &::google::protobuf::internal::kEmptyString) { + frontcross_ = new ::std::string; + } + frontcross_->assign(value); +} +inline void CheckBoxOptions::set_frontcross(const char* value) { + set_has_frontcross(); + if (frontcross_ == &::google::protobuf::internal::kEmptyString) { + frontcross_ = new ::std::string; + } + frontcross_->assign(value); +} +inline void CheckBoxOptions::set_frontcross(const char* value, size_t size) { + set_has_frontcross(); + if (frontcross_ == &::google::protobuf::internal::kEmptyString) { + frontcross_ = new ::std::string; + } + frontcross_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CheckBoxOptions::mutable_frontcross() { + set_has_frontcross(); + if (frontcross_ == &::google::protobuf::internal::kEmptyString) { + frontcross_ = new ::std::string; + } + return frontcross_; +} +inline ::std::string* CheckBoxOptions::release_frontcross() { + clear_has_frontcross(); + if (frontcross_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = frontcross_; + frontcross_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CheckBoxOptions::set_allocated_frontcross(::std::string* frontcross) { + if (frontcross_ != &::google::protobuf::internal::kEmptyString) { + delete frontcross_; + } + if (frontcross) { + set_has_frontcross(); + frontcross_ = frontcross; + } else { + clear_has_frontcross(); + frontcross_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string frontCrossDisabled = 7; +inline bool CheckBoxOptions::has_frontcrossdisabled() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void CheckBoxOptions::set_has_frontcrossdisabled() { + _has_bits_[0] |= 0x00000040u; +} +inline void CheckBoxOptions::clear_has_frontcrossdisabled() { + _has_bits_[0] &= ~0x00000040u; +} +inline void CheckBoxOptions::clear_frontcrossdisabled() { + if (frontcrossdisabled_ != &::google::protobuf::internal::kEmptyString) { + frontcrossdisabled_->clear(); + } + clear_has_frontcrossdisabled(); +} +inline const ::std::string& CheckBoxOptions::frontcrossdisabled() const { + return *frontcrossdisabled_; +} +inline void CheckBoxOptions::set_frontcrossdisabled(const ::std::string& value) { + set_has_frontcrossdisabled(); + if (frontcrossdisabled_ == &::google::protobuf::internal::kEmptyString) { + frontcrossdisabled_ = new ::std::string; + } + frontcrossdisabled_->assign(value); +} +inline void CheckBoxOptions::set_frontcrossdisabled(const char* value) { + set_has_frontcrossdisabled(); + if (frontcrossdisabled_ == &::google::protobuf::internal::kEmptyString) { + frontcrossdisabled_ = new ::std::string; + } + frontcrossdisabled_->assign(value); +} +inline void CheckBoxOptions::set_frontcrossdisabled(const char* value, size_t size) { + set_has_frontcrossdisabled(); + if (frontcrossdisabled_ == &::google::protobuf::internal::kEmptyString) { + frontcrossdisabled_ = new ::std::string; + } + frontcrossdisabled_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CheckBoxOptions::mutable_frontcrossdisabled() { + set_has_frontcrossdisabled(); + if (frontcrossdisabled_ == &::google::protobuf::internal::kEmptyString) { + frontcrossdisabled_ = new ::std::string; + } + return frontcrossdisabled_; +} +inline ::std::string* CheckBoxOptions::release_frontcrossdisabled() { + clear_has_frontcrossdisabled(); + if (frontcrossdisabled_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = frontcrossdisabled_; + frontcrossdisabled_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CheckBoxOptions::set_allocated_frontcrossdisabled(::std::string* frontcrossdisabled) { + if (frontcrossdisabled_ != &::google::protobuf::internal::kEmptyString) { + delete frontcrossdisabled_; + } + if (frontcrossdisabled) { + set_has_frontcrossdisabled(); + frontcrossdisabled_ = frontcrossdisabled; + } else { + clear_has_frontcrossdisabled(); + frontcrossdisabled_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData backGroundBoxData = 8; +inline bool CheckBoxOptions::has_backgroundboxdata() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void CheckBoxOptions::set_has_backgroundboxdata() { + _has_bits_[0] |= 0x00000080u; +} +inline void CheckBoxOptions::clear_has_backgroundboxdata() { + _has_bits_[0] &= ~0x00000080u; +} +inline void CheckBoxOptions::clear_backgroundboxdata() { + if (backgroundboxdata_ != NULL) backgroundboxdata_->::protocolbuffers::ResourceData::Clear(); + clear_has_backgroundboxdata(); +} +inline const ::protocolbuffers::ResourceData& CheckBoxOptions::backgroundboxdata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return backgroundboxdata_ != NULL ? *backgroundboxdata_ : *default_instance().backgroundboxdata_; +#else + return backgroundboxdata_ != NULL ? *backgroundboxdata_ : *default_instance_->backgroundboxdata_; +#endif +} +inline ::protocolbuffers::ResourceData* CheckBoxOptions::mutable_backgroundboxdata() { + set_has_backgroundboxdata(); + if (backgroundboxdata_ == NULL) backgroundboxdata_ = new ::protocolbuffers::ResourceData; + return backgroundboxdata_; +} +inline ::protocolbuffers::ResourceData* CheckBoxOptions::release_backgroundboxdata() { + clear_has_backgroundboxdata(); + ::protocolbuffers::ResourceData* temp = backgroundboxdata_; + backgroundboxdata_ = NULL; + return temp; +} +inline void CheckBoxOptions::set_allocated_backgroundboxdata(::protocolbuffers::ResourceData* backgroundboxdata) { + delete backgroundboxdata_; + backgroundboxdata_ = backgroundboxdata; + if (backgroundboxdata) { + set_has_backgroundboxdata(); + } else { + clear_has_backgroundboxdata(); + } +} + +// optional .protocolbuffers.ResourceData backGroundBoxSelectedData = 9; +inline bool CheckBoxOptions::has_backgroundboxselecteddata() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void CheckBoxOptions::set_has_backgroundboxselecteddata() { + _has_bits_[0] |= 0x00000100u; +} +inline void CheckBoxOptions::clear_has_backgroundboxselecteddata() { + _has_bits_[0] &= ~0x00000100u; +} +inline void CheckBoxOptions::clear_backgroundboxselecteddata() { + if (backgroundboxselecteddata_ != NULL) backgroundboxselecteddata_->::protocolbuffers::ResourceData::Clear(); + clear_has_backgroundboxselecteddata(); +} +inline const ::protocolbuffers::ResourceData& CheckBoxOptions::backgroundboxselecteddata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return backgroundboxselecteddata_ != NULL ? *backgroundboxselecteddata_ : *default_instance().backgroundboxselecteddata_; +#else + return backgroundboxselecteddata_ != NULL ? *backgroundboxselecteddata_ : *default_instance_->backgroundboxselecteddata_; +#endif +} +inline ::protocolbuffers::ResourceData* CheckBoxOptions::mutable_backgroundboxselecteddata() { + set_has_backgroundboxselecteddata(); + if (backgroundboxselecteddata_ == NULL) backgroundboxselecteddata_ = new ::protocolbuffers::ResourceData; + return backgroundboxselecteddata_; +} +inline ::protocolbuffers::ResourceData* CheckBoxOptions::release_backgroundboxselecteddata() { + clear_has_backgroundboxselecteddata(); + ::protocolbuffers::ResourceData* temp = backgroundboxselecteddata_; + backgroundboxselecteddata_ = NULL; + return temp; +} +inline void CheckBoxOptions::set_allocated_backgroundboxselecteddata(::protocolbuffers::ResourceData* backgroundboxselecteddata) { + delete backgroundboxselecteddata_; + backgroundboxselecteddata_ = backgroundboxselecteddata; + if (backgroundboxselecteddata) { + set_has_backgroundboxselecteddata(); + } else { + clear_has_backgroundboxselecteddata(); + } +} + +// optional .protocolbuffers.ResourceData frontCrossData = 10; +inline bool CheckBoxOptions::has_frontcrossdata() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void CheckBoxOptions::set_has_frontcrossdata() { + _has_bits_[0] |= 0x00000200u; +} +inline void CheckBoxOptions::clear_has_frontcrossdata() { + _has_bits_[0] &= ~0x00000200u; +} +inline void CheckBoxOptions::clear_frontcrossdata() { + if (frontcrossdata_ != NULL) frontcrossdata_->::protocolbuffers::ResourceData::Clear(); + clear_has_frontcrossdata(); +} +inline const ::protocolbuffers::ResourceData& CheckBoxOptions::frontcrossdata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return frontcrossdata_ != NULL ? *frontcrossdata_ : *default_instance().frontcrossdata_; +#else + return frontcrossdata_ != NULL ? *frontcrossdata_ : *default_instance_->frontcrossdata_; +#endif +} +inline ::protocolbuffers::ResourceData* CheckBoxOptions::mutable_frontcrossdata() { + set_has_frontcrossdata(); + if (frontcrossdata_ == NULL) frontcrossdata_ = new ::protocolbuffers::ResourceData; + return frontcrossdata_; +} +inline ::protocolbuffers::ResourceData* CheckBoxOptions::release_frontcrossdata() { + clear_has_frontcrossdata(); + ::protocolbuffers::ResourceData* temp = frontcrossdata_; + frontcrossdata_ = NULL; + return temp; +} +inline void CheckBoxOptions::set_allocated_frontcrossdata(::protocolbuffers::ResourceData* frontcrossdata) { + delete frontcrossdata_; + frontcrossdata_ = frontcrossdata; + if (frontcrossdata) { + set_has_frontcrossdata(); + } else { + clear_has_frontcrossdata(); + } +} + +// optional .protocolbuffers.ResourceData backGroundBoxDisabledData = 11; +inline bool CheckBoxOptions::has_backgroundboxdisableddata() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void CheckBoxOptions::set_has_backgroundboxdisableddata() { + _has_bits_[0] |= 0x00000400u; +} +inline void CheckBoxOptions::clear_has_backgroundboxdisableddata() { + _has_bits_[0] &= ~0x00000400u; +} +inline void CheckBoxOptions::clear_backgroundboxdisableddata() { + if (backgroundboxdisableddata_ != NULL) backgroundboxdisableddata_->::protocolbuffers::ResourceData::Clear(); + clear_has_backgroundboxdisableddata(); +} +inline const ::protocolbuffers::ResourceData& CheckBoxOptions::backgroundboxdisableddata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return backgroundboxdisableddata_ != NULL ? *backgroundboxdisableddata_ : *default_instance().backgroundboxdisableddata_; +#else + return backgroundboxdisableddata_ != NULL ? *backgroundboxdisableddata_ : *default_instance_->backgroundboxdisableddata_; +#endif +} +inline ::protocolbuffers::ResourceData* CheckBoxOptions::mutable_backgroundboxdisableddata() { + set_has_backgroundboxdisableddata(); + if (backgroundboxdisableddata_ == NULL) backgroundboxdisableddata_ = new ::protocolbuffers::ResourceData; + return backgroundboxdisableddata_; +} +inline ::protocolbuffers::ResourceData* CheckBoxOptions::release_backgroundboxdisableddata() { + clear_has_backgroundboxdisableddata(); + ::protocolbuffers::ResourceData* temp = backgroundboxdisableddata_; + backgroundboxdisableddata_ = NULL; + return temp; +} +inline void CheckBoxOptions::set_allocated_backgroundboxdisableddata(::protocolbuffers::ResourceData* backgroundboxdisableddata) { + delete backgroundboxdisableddata_; + backgroundboxdisableddata_ = backgroundboxdisableddata; + if (backgroundboxdisableddata) { + set_has_backgroundboxdisableddata(); + } else { + clear_has_backgroundboxdisableddata(); + } +} + +// optional .protocolbuffers.ResourceData frontCrossDisabledData = 12; +inline bool CheckBoxOptions::has_frontcrossdisableddata() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void CheckBoxOptions::set_has_frontcrossdisableddata() { + _has_bits_[0] |= 0x00000800u; +} +inline void CheckBoxOptions::clear_has_frontcrossdisableddata() { + _has_bits_[0] &= ~0x00000800u; +} +inline void CheckBoxOptions::clear_frontcrossdisableddata() { + if (frontcrossdisableddata_ != NULL) frontcrossdisableddata_->::protocolbuffers::ResourceData::Clear(); + clear_has_frontcrossdisableddata(); +} +inline const ::protocolbuffers::ResourceData& CheckBoxOptions::frontcrossdisableddata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return frontcrossdisableddata_ != NULL ? *frontcrossdisableddata_ : *default_instance().frontcrossdisableddata_; +#else + return frontcrossdisableddata_ != NULL ? *frontcrossdisableddata_ : *default_instance_->frontcrossdisableddata_; +#endif +} +inline ::protocolbuffers::ResourceData* CheckBoxOptions::mutable_frontcrossdisableddata() { + set_has_frontcrossdisableddata(); + if (frontcrossdisableddata_ == NULL) frontcrossdisableddata_ = new ::protocolbuffers::ResourceData; + return frontcrossdisableddata_; +} +inline ::protocolbuffers::ResourceData* CheckBoxOptions::release_frontcrossdisableddata() { + clear_has_frontcrossdisableddata(); + ::protocolbuffers::ResourceData* temp = frontcrossdisableddata_; + frontcrossdisableddata_ = NULL; + return temp; +} +inline void CheckBoxOptions::set_allocated_frontcrossdisableddata(::protocolbuffers::ResourceData* frontcrossdisableddata) { + delete frontcrossdisableddata_; + frontcrossdisableddata_ = frontcrossdisableddata; + if (frontcrossdisableddata) { + set_has_frontcrossdisableddata(); + } else { + clear_has_frontcrossdisableddata(); + } +} + +// optional bool selectedState = 13; +inline bool CheckBoxOptions::has_selectedstate() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void CheckBoxOptions::set_has_selectedstate() { + _has_bits_[0] |= 0x00001000u; +} +inline void CheckBoxOptions::clear_has_selectedstate() { + _has_bits_[0] &= ~0x00001000u; +} +inline void CheckBoxOptions::clear_selectedstate() { + selectedstate_ = false; + clear_has_selectedstate(); +} +inline bool CheckBoxOptions::selectedstate() const { + return selectedstate_; +} +inline void CheckBoxOptions::set_selectedstate(bool value) { + set_has_selectedstate(); + selectedstate_ = value; +} + +// optional bool displaystate = 14; +inline bool CheckBoxOptions::has_displaystate() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void CheckBoxOptions::set_has_displaystate() { + _has_bits_[0] |= 0x00002000u; +} +inline void CheckBoxOptions::clear_has_displaystate() { + _has_bits_[0] &= ~0x00002000u; +} +inline void CheckBoxOptions::clear_displaystate() { + displaystate_ = false; + clear_has_displaystate(); +} +inline bool CheckBoxOptions::displaystate() const { + return displaystate_; +} +inline void CheckBoxOptions::set_displaystate(bool value) { + set_has_displaystate(); + displaystate_ = value; +} + +// ------------------------------------------------------------------- + +// ImageViewOptions + +// optional string name = 1; +inline bool ImageViewOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ImageViewOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void ImageViewOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void ImageViewOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& ImageViewOptions::name() const { + return *name_; +} +inline void ImageViewOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void ImageViewOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void ImageViewOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ImageViewOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* ImageViewOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ImageViewOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool ImageViewOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ImageViewOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void ImageViewOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void ImageViewOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& ImageViewOptions::classname() const { + return *classname_; +} +inline void ImageViewOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void ImageViewOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void ImageViewOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ImageViewOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* ImageViewOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ImageViewOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string fileName = 3; +inline bool ImageViewOptions::has_filename() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void ImageViewOptions::set_has_filename() { + _has_bits_[0] |= 0x00000004u; +} +inline void ImageViewOptions::clear_has_filename() { + _has_bits_[0] &= ~0x00000004u; +} +inline void ImageViewOptions::clear_filename() { + if (filename_ != &::google::protobuf::internal::kEmptyString) { + filename_->clear(); + } + clear_has_filename(); +} +inline const ::std::string& ImageViewOptions::filename() const { + return *filename_; +} +inline void ImageViewOptions::set_filename(const ::std::string& value) { + set_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + filename_ = new ::std::string; + } + filename_->assign(value); +} +inline void ImageViewOptions::set_filename(const char* value) { + set_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + filename_ = new ::std::string; + } + filename_->assign(value); +} +inline void ImageViewOptions::set_filename(const char* value, size_t size) { + set_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + filename_ = new ::std::string; + } + filename_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ImageViewOptions::mutable_filename() { + set_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + filename_ = new ::std::string; + } + return filename_; +} +inline ::std::string* ImageViewOptions::release_filename() { + clear_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = filename_; + filename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ImageViewOptions::set_allocated_filename(::std::string* filename) { + if (filename_ != &::google::protobuf::internal::kEmptyString) { + delete filename_; + } + if (filename) { + set_has_filename(); + filename_ = filename; + } else { + clear_has_filename(); + filename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData fileNameData = 4; +inline bool ImageViewOptions::has_filenamedata() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void ImageViewOptions::set_has_filenamedata() { + _has_bits_[0] |= 0x00000008u; +} +inline void ImageViewOptions::clear_has_filenamedata() { + _has_bits_[0] &= ~0x00000008u; +} +inline void ImageViewOptions::clear_filenamedata() { + if (filenamedata_ != NULL) filenamedata_->::protocolbuffers::ResourceData::Clear(); + clear_has_filenamedata(); +} +inline const ::protocolbuffers::ResourceData& ImageViewOptions::filenamedata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return filenamedata_ != NULL ? *filenamedata_ : *default_instance().filenamedata_; +#else + return filenamedata_ != NULL ? *filenamedata_ : *default_instance_->filenamedata_; +#endif +} +inline ::protocolbuffers::ResourceData* ImageViewOptions::mutable_filenamedata() { + set_has_filenamedata(); + if (filenamedata_ == NULL) filenamedata_ = new ::protocolbuffers::ResourceData; + return filenamedata_; +} +inline ::protocolbuffers::ResourceData* ImageViewOptions::release_filenamedata() { + clear_has_filenamedata(); + ::protocolbuffers::ResourceData* temp = filenamedata_; + filenamedata_ = NULL; + return temp; +} +inline void ImageViewOptions::set_allocated_filenamedata(::protocolbuffers::ResourceData* filenamedata) { + delete filenamedata_; + filenamedata_ = filenamedata; + if (filenamedata) { + set_has_filenamedata(); + } else { + clear_has_filenamedata(); + } +} + +// optional float capInsetsX = 5; +inline bool ImageViewOptions::has_capinsetsx() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void ImageViewOptions::set_has_capinsetsx() { + _has_bits_[0] |= 0x00000010u; +} +inline void ImageViewOptions::clear_has_capinsetsx() { + _has_bits_[0] &= ~0x00000010u; +} +inline void ImageViewOptions::clear_capinsetsx() { + capinsetsx_ = 0; + clear_has_capinsetsx(); +} +inline float ImageViewOptions::capinsetsx() const { + return capinsetsx_; +} +inline void ImageViewOptions::set_capinsetsx(float value) { + set_has_capinsetsx(); + capinsetsx_ = value; +} + +// optional float capInsetsY = 6; +inline bool ImageViewOptions::has_capinsetsy() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void ImageViewOptions::set_has_capinsetsy() { + _has_bits_[0] |= 0x00000020u; +} +inline void ImageViewOptions::clear_has_capinsetsy() { + _has_bits_[0] &= ~0x00000020u; +} +inline void ImageViewOptions::clear_capinsetsy() { + capinsetsy_ = 0; + clear_has_capinsetsy(); +} +inline float ImageViewOptions::capinsetsy() const { + return capinsetsy_; +} +inline void ImageViewOptions::set_capinsetsy(float value) { + set_has_capinsetsy(); + capinsetsy_ = value; +} + +// optional float capInsetsHeight = 7; +inline bool ImageViewOptions::has_capinsetsheight() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void ImageViewOptions::set_has_capinsetsheight() { + _has_bits_[0] |= 0x00000040u; +} +inline void ImageViewOptions::clear_has_capinsetsheight() { + _has_bits_[0] &= ~0x00000040u; +} +inline void ImageViewOptions::clear_capinsetsheight() { + capinsetsheight_ = 0; + clear_has_capinsetsheight(); +} +inline float ImageViewOptions::capinsetsheight() const { + return capinsetsheight_; +} +inline void ImageViewOptions::set_capinsetsheight(float value) { + set_has_capinsetsheight(); + capinsetsheight_ = value; +} + +// optional float capInsetsWidth = 8; +inline bool ImageViewOptions::has_capinsetswidth() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void ImageViewOptions::set_has_capinsetswidth() { + _has_bits_[0] |= 0x00000080u; +} +inline void ImageViewOptions::clear_has_capinsetswidth() { + _has_bits_[0] &= ~0x00000080u; +} +inline void ImageViewOptions::clear_capinsetswidth() { + capinsetswidth_ = 0; + clear_has_capinsetswidth(); +} +inline float ImageViewOptions::capinsetswidth() const { + return capinsetswidth_; +} +inline void ImageViewOptions::set_capinsetswidth(float value) { + set_has_capinsetswidth(); + capinsetswidth_ = value; +} + +// optional float scale9Width = 9; +inline bool ImageViewOptions::has_scale9width() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void ImageViewOptions::set_has_scale9width() { + _has_bits_[0] |= 0x00000100u; +} +inline void ImageViewOptions::clear_has_scale9width() { + _has_bits_[0] &= ~0x00000100u; +} +inline void ImageViewOptions::clear_scale9width() { + scale9width_ = 0; + clear_has_scale9width(); +} +inline float ImageViewOptions::scale9width() const { + return scale9width_; +} +inline void ImageViewOptions::set_scale9width(float value) { + set_has_scale9width(); + scale9width_ = value; +} + +// optional float scale9Height = 10; +inline bool ImageViewOptions::has_scale9height() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void ImageViewOptions::set_has_scale9height() { + _has_bits_[0] |= 0x00000200u; +} +inline void ImageViewOptions::clear_has_scale9height() { + _has_bits_[0] &= ~0x00000200u; +} +inline void ImageViewOptions::clear_scale9height() { + scale9height_ = 0; + clear_has_scale9height(); +} +inline float ImageViewOptions::scale9height() const { + return scale9height_; +} +inline void ImageViewOptions::set_scale9height(float value) { + set_has_scale9height(); + scale9height_ = value; +} + +// optional bool scale9Enable = 11; +inline bool ImageViewOptions::has_scale9enable() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void ImageViewOptions::set_has_scale9enable() { + _has_bits_[0] |= 0x00000400u; +} +inline void ImageViewOptions::clear_has_scale9enable() { + _has_bits_[0] &= ~0x00000400u; +} +inline void ImageViewOptions::clear_scale9enable() { + scale9enable_ = false; + clear_has_scale9enable(); +} +inline bool ImageViewOptions::scale9enable() const { + return scale9enable_; +} +inline void ImageViewOptions::set_scale9enable(bool value) { + set_has_scale9enable(); + scale9enable_ = value; +} + +// optional bool flippedX = 12; +inline bool ImageViewOptions::has_flippedx() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void ImageViewOptions::set_has_flippedx() { + _has_bits_[0] |= 0x00000800u; +} +inline void ImageViewOptions::clear_has_flippedx() { + _has_bits_[0] &= ~0x00000800u; +} +inline void ImageViewOptions::clear_flippedx() { + flippedx_ = false; + clear_has_flippedx(); +} +inline bool ImageViewOptions::flippedx() const { + return flippedx_; +} +inline void ImageViewOptions::set_flippedx(bool value) { + set_has_flippedx(); + flippedx_ = value; +} + +// optional bool flippedY = 13; +inline bool ImageViewOptions::has_flippedy() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void ImageViewOptions::set_has_flippedy() { + _has_bits_[0] |= 0x00001000u; +} +inline void ImageViewOptions::clear_has_flippedy() { + _has_bits_[0] &= ~0x00001000u; +} +inline void ImageViewOptions::clear_flippedy() { + flippedy_ = false; + clear_has_flippedy(); +} +inline bool ImageViewOptions::flippedy() const { + return flippedy_; +} +inline void ImageViewOptions::set_flippedy(bool value) { + set_has_flippedy(); + flippedy_ = value; +} + +// ------------------------------------------------------------------- + +// TextAtlasOptions + +// optional string name = 1; +inline bool TextAtlasOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void TextAtlasOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void TextAtlasOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void TextAtlasOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& TextAtlasOptions::name() const { + return *name_; +} +inline void TextAtlasOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TextAtlasOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TextAtlasOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextAtlasOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* TextAtlasOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextAtlasOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool TextAtlasOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void TextAtlasOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void TextAtlasOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void TextAtlasOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& TextAtlasOptions::classname() const { + return *classname_; +} +inline void TextAtlasOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TextAtlasOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TextAtlasOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextAtlasOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* TextAtlasOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextAtlasOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string stringValue = 3; +inline bool TextAtlasOptions::has_stringvalue() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void TextAtlasOptions::set_has_stringvalue() { + _has_bits_[0] |= 0x00000004u; +} +inline void TextAtlasOptions::clear_has_stringvalue() { + _has_bits_[0] &= ~0x00000004u; +} +inline void TextAtlasOptions::clear_stringvalue() { + if (stringvalue_ != &::google::protobuf::internal::kEmptyString) { + stringvalue_->clear(); + } + clear_has_stringvalue(); +} +inline const ::std::string& TextAtlasOptions::stringvalue() const { + return *stringvalue_; +} +inline void TextAtlasOptions::set_stringvalue(const ::std::string& value) { + set_has_stringvalue(); + if (stringvalue_ == &::google::protobuf::internal::kEmptyString) { + stringvalue_ = new ::std::string; + } + stringvalue_->assign(value); +} +inline void TextAtlasOptions::set_stringvalue(const char* value) { + set_has_stringvalue(); + if (stringvalue_ == &::google::protobuf::internal::kEmptyString) { + stringvalue_ = new ::std::string; + } + stringvalue_->assign(value); +} +inline void TextAtlasOptions::set_stringvalue(const char* value, size_t size) { + set_has_stringvalue(); + if (stringvalue_ == &::google::protobuf::internal::kEmptyString) { + stringvalue_ = new ::std::string; + } + stringvalue_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextAtlasOptions::mutable_stringvalue() { + set_has_stringvalue(); + if (stringvalue_ == &::google::protobuf::internal::kEmptyString) { + stringvalue_ = new ::std::string; + } + return stringvalue_; +} +inline ::std::string* TextAtlasOptions::release_stringvalue() { + clear_has_stringvalue(); + if (stringvalue_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = stringvalue_; + stringvalue_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextAtlasOptions::set_allocated_stringvalue(::std::string* stringvalue) { + if (stringvalue_ != &::google::protobuf::internal::kEmptyString) { + delete stringvalue_; + } + if (stringvalue) { + set_has_stringvalue(); + stringvalue_ = stringvalue; + } else { + clear_has_stringvalue(); + stringvalue_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string charMapFile = 4; +inline bool TextAtlasOptions::has_charmapfile() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void TextAtlasOptions::set_has_charmapfile() { + _has_bits_[0] |= 0x00000008u; +} +inline void TextAtlasOptions::clear_has_charmapfile() { + _has_bits_[0] &= ~0x00000008u; +} +inline void TextAtlasOptions::clear_charmapfile() { + if (charmapfile_ != &::google::protobuf::internal::kEmptyString) { + charmapfile_->clear(); + } + clear_has_charmapfile(); +} +inline const ::std::string& TextAtlasOptions::charmapfile() const { + return *charmapfile_; +} +inline void TextAtlasOptions::set_charmapfile(const ::std::string& value) { + set_has_charmapfile(); + if (charmapfile_ == &::google::protobuf::internal::kEmptyString) { + charmapfile_ = new ::std::string; + } + charmapfile_->assign(value); +} +inline void TextAtlasOptions::set_charmapfile(const char* value) { + set_has_charmapfile(); + if (charmapfile_ == &::google::protobuf::internal::kEmptyString) { + charmapfile_ = new ::std::string; + } + charmapfile_->assign(value); +} +inline void TextAtlasOptions::set_charmapfile(const char* value, size_t size) { + set_has_charmapfile(); + if (charmapfile_ == &::google::protobuf::internal::kEmptyString) { + charmapfile_ = new ::std::string; + } + charmapfile_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextAtlasOptions::mutable_charmapfile() { + set_has_charmapfile(); + if (charmapfile_ == &::google::protobuf::internal::kEmptyString) { + charmapfile_ = new ::std::string; + } + return charmapfile_; +} +inline ::std::string* TextAtlasOptions::release_charmapfile() { + clear_has_charmapfile(); + if (charmapfile_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = charmapfile_; + charmapfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextAtlasOptions::set_allocated_charmapfile(::std::string* charmapfile) { + if (charmapfile_ != &::google::protobuf::internal::kEmptyString) { + delete charmapfile_; + } + if (charmapfile) { + set_has_charmapfile(); + charmapfile_ = charmapfile; + } else { + clear_has_charmapfile(); + charmapfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData charMapFileData = 5; +inline bool TextAtlasOptions::has_charmapfiledata() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void TextAtlasOptions::set_has_charmapfiledata() { + _has_bits_[0] |= 0x00000010u; +} +inline void TextAtlasOptions::clear_has_charmapfiledata() { + _has_bits_[0] &= ~0x00000010u; +} +inline void TextAtlasOptions::clear_charmapfiledata() { + if (charmapfiledata_ != NULL) charmapfiledata_->::protocolbuffers::ResourceData::Clear(); + clear_has_charmapfiledata(); +} +inline const ::protocolbuffers::ResourceData& TextAtlasOptions::charmapfiledata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return charmapfiledata_ != NULL ? *charmapfiledata_ : *default_instance().charmapfiledata_; +#else + return charmapfiledata_ != NULL ? *charmapfiledata_ : *default_instance_->charmapfiledata_; +#endif +} +inline ::protocolbuffers::ResourceData* TextAtlasOptions::mutable_charmapfiledata() { + set_has_charmapfiledata(); + if (charmapfiledata_ == NULL) charmapfiledata_ = new ::protocolbuffers::ResourceData; + return charmapfiledata_; +} +inline ::protocolbuffers::ResourceData* TextAtlasOptions::release_charmapfiledata() { + clear_has_charmapfiledata(); + ::protocolbuffers::ResourceData* temp = charmapfiledata_; + charmapfiledata_ = NULL; + return temp; +} +inline void TextAtlasOptions::set_allocated_charmapfiledata(::protocolbuffers::ResourceData* charmapfiledata) { + delete charmapfiledata_; + charmapfiledata_ = charmapfiledata; + if (charmapfiledata) { + set_has_charmapfiledata(); + } else { + clear_has_charmapfiledata(); + } +} + +// optional string startCharMap = 6; +inline bool TextAtlasOptions::has_startcharmap() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void TextAtlasOptions::set_has_startcharmap() { + _has_bits_[0] |= 0x00000020u; +} +inline void TextAtlasOptions::clear_has_startcharmap() { + _has_bits_[0] &= ~0x00000020u; +} +inline void TextAtlasOptions::clear_startcharmap() { + if (startcharmap_ != &::google::protobuf::internal::kEmptyString) { + startcharmap_->clear(); + } + clear_has_startcharmap(); +} +inline const ::std::string& TextAtlasOptions::startcharmap() const { + return *startcharmap_; +} +inline void TextAtlasOptions::set_startcharmap(const ::std::string& value) { + set_has_startcharmap(); + if (startcharmap_ == &::google::protobuf::internal::kEmptyString) { + startcharmap_ = new ::std::string; + } + startcharmap_->assign(value); +} +inline void TextAtlasOptions::set_startcharmap(const char* value) { + set_has_startcharmap(); + if (startcharmap_ == &::google::protobuf::internal::kEmptyString) { + startcharmap_ = new ::std::string; + } + startcharmap_->assign(value); +} +inline void TextAtlasOptions::set_startcharmap(const char* value, size_t size) { + set_has_startcharmap(); + if (startcharmap_ == &::google::protobuf::internal::kEmptyString) { + startcharmap_ = new ::std::string; + } + startcharmap_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextAtlasOptions::mutable_startcharmap() { + set_has_startcharmap(); + if (startcharmap_ == &::google::protobuf::internal::kEmptyString) { + startcharmap_ = new ::std::string; + } + return startcharmap_; +} +inline ::std::string* TextAtlasOptions::release_startcharmap() { + clear_has_startcharmap(); + if (startcharmap_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = startcharmap_; + startcharmap_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextAtlasOptions::set_allocated_startcharmap(::std::string* startcharmap) { + if (startcharmap_ != &::google::protobuf::internal::kEmptyString) { + delete startcharmap_; + } + if (startcharmap) { + set_has_startcharmap(); + startcharmap_ = startcharmap; + } else { + clear_has_startcharmap(); + startcharmap_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 itemWidth = 7; +inline bool TextAtlasOptions::has_itemwidth() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void TextAtlasOptions::set_has_itemwidth() { + _has_bits_[0] |= 0x00000040u; +} +inline void TextAtlasOptions::clear_has_itemwidth() { + _has_bits_[0] &= ~0x00000040u; +} +inline void TextAtlasOptions::clear_itemwidth() { + itemwidth_ = 0; + clear_has_itemwidth(); +} +inline ::google::protobuf::int32 TextAtlasOptions::itemwidth() const { + return itemwidth_; +} +inline void TextAtlasOptions::set_itemwidth(::google::protobuf::int32 value) { + set_has_itemwidth(); + itemwidth_ = value; +} + +// optional int32 itemHeight = 8; +inline bool TextAtlasOptions::has_itemheight() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void TextAtlasOptions::set_has_itemheight() { + _has_bits_[0] |= 0x00000080u; +} +inline void TextAtlasOptions::clear_has_itemheight() { + _has_bits_[0] &= ~0x00000080u; +} +inline void TextAtlasOptions::clear_itemheight() { + itemheight_ = 0; + clear_has_itemheight(); +} +inline ::google::protobuf::int32 TextAtlasOptions::itemheight() const { + return itemheight_; +} +inline void TextAtlasOptions::set_itemheight(::google::protobuf::int32 value) { + set_has_itemheight(); + itemheight_ = value; +} + +// ------------------------------------------------------------------- + +// TextBMFontOptions + +// optional string name = 1; +inline bool TextBMFontOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void TextBMFontOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void TextBMFontOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void TextBMFontOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& TextBMFontOptions::name() const { + return *name_; +} +inline void TextBMFontOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TextBMFontOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TextBMFontOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextBMFontOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* TextBMFontOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextBMFontOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool TextBMFontOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void TextBMFontOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void TextBMFontOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void TextBMFontOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& TextBMFontOptions::classname() const { + return *classname_; +} +inline void TextBMFontOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TextBMFontOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TextBMFontOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextBMFontOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* TextBMFontOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextBMFontOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string text = 3; +inline bool TextBMFontOptions::has_text() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void TextBMFontOptions::set_has_text() { + _has_bits_[0] |= 0x00000004u; +} +inline void TextBMFontOptions::clear_has_text() { + _has_bits_[0] &= ~0x00000004u; +} +inline void TextBMFontOptions::clear_text() { + if (text_ != &::google::protobuf::internal::kEmptyString) { + text_->clear(); + } + clear_has_text(); +} +inline const ::std::string& TextBMFontOptions::text() const { + return *text_; +} +inline void TextBMFontOptions::set_text(const ::std::string& value) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + text_->assign(value); +} +inline void TextBMFontOptions::set_text(const char* value) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + text_->assign(value); +} +inline void TextBMFontOptions::set_text(const char* value, size_t size) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + text_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextBMFontOptions::mutable_text() { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + return text_; +} +inline ::std::string* TextBMFontOptions::release_text() { + clear_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = text_; + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextBMFontOptions::set_allocated_text(::std::string* text) { + if (text_ != &::google::protobuf::internal::kEmptyString) { + delete text_; + } + if (text) { + set_has_text(); + text_ = text; + } else { + clear_has_text(); + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData fileNameData = 4; +inline bool TextBMFontOptions::has_filenamedata() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void TextBMFontOptions::set_has_filenamedata() { + _has_bits_[0] |= 0x00000008u; +} +inline void TextBMFontOptions::clear_has_filenamedata() { + _has_bits_[0] &= ~0x00000008u; +} +inline void TextBMFontOptions::clear_filenamedata() { + if (filenamedata_ != NULL) filenamedata_->::protocolbuffers::ResourceData::Clear(); + clear_has_filenamedata(); +} +inline const ::protocolbuffers::ResourceData& TextBMFontOptions::filenamedata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return filenamedata_ != NULL ? *filenamedata_ : *default_instance().filenamedata_; +#else + return filenamedata_ != NULL ? *filenamedata_ : *default_instance_->filenamedata_; +#endif +} +inline ::protocolbuffers::ResourceData* TextBMFontOptions::mutable_filenamedata() { + set_has_filenamedata(); + if (filenamedata_ == NULL) filenamedata_ = new ::protocolbuffers::ResourceData; + return filenamedata_; +} +inline ::protocolbuffers::ResourceData* TextBMFontOptions::release_filenamedata() { + clear_has_filenamedata(); + ::protocolbuffers::ResourceData* temp = filenamedata_; + filenamedata_ = NULL; + return temp; +} +inline void TextBMFontOptions::set_allocated_filenamedata(::protocolbuffers::ResourceData* filenamedata) { + delete filenamedata_; + filenamedata_ = filenamedata; + if (filenamedata) { + set_has_filenamedata(); + } else { + clear_has_filenamedata(); + } +} + +// ------------------------------------------------------------------- + +// TextOptions + +// optional string name = 1; +inline bool TextOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void TextOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void TextOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void TextOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& TextOptions::name() const { + return *name_; +} +inline void TextOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TextOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TextOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* TextOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool TextOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void TextOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void TextOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void TextOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& TextOptions::classname() const { + return *classname_; +} +inline void TextOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TextOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TextOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* TextOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string fontName = 3; +inline bool TextOptions::has_fontname() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void TextOptions::set_has_fontname() { + _has_bits_[0] |= 0x00000004u; +} +inline void TextOptions::clear_has_fontname() { + _has_bits_[0] &= ~0x00000004u; +} +inline void TextOptions::clear_fontname() { + if (fontname_ != &::google::protobuf::internal::kEmptyString) { + fontname_->clear(); + } + clear_has_fontname(); +} +inline const ::std::string& TextOptions::fontname() const { + return *fontname_; +} +inline void TextOptions::set_fontname(const ::std::string& value) { + set_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + fontname_ = new ::std::string; + } + fontname_->assign(value); +} +inline void TextOptions::set_fontname(const char* value) { + set_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + fontname_ = new ::std::string; + } + fontname_->assign(value); +} +inline void TextOptions::set_fontname(const char* value, size_t size) { + set_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + fontname_ = new ::std::string; + } + fontname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextOptions::mutable_fontname() { + set_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + fontname_ = new ::std::string; + } + return fontname_; +} +inline ::std::string* TextOptions::release_fontname() { + clear_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = fontname_; + fontname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextOptions::set_allocated_fontname(::std::string* fontname) { + if (fontname_ != &::google::protobuf::internal::kEmptyString) { + delete fontname_; + } + if (fontname) { + set_has_fontname(); + fontname_ = fontname; + } else { + clear_has_fontname(); + fontname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData fontFile = 4; +inline bool TextOptions::has_fontfile() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void TextOptions::set_has_fontfile() { + _has_bits_[0] |= 0x00000008u; +} +inline void TextOptions::clear_has_fontfile() { + _has_bits_[0] &= ~0x00000008u; +} +inline void TextOptions::clear_fontfile() { + if (fontfile_ != NULL) fontfile_->::protocolbuffers::ResourceData::Clear(); + clear_has_fontfile(); +} +inline const ::protocolbuffers::ResourceData& TextOptions::fontfile() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return fontfile_ != NULL ? *fontfile_ : *default_instance().fontfile_; +#else + return fontfile_ != NULL ? *fontfile_ : *default_instance_->fontfile_; +#endif +} +inline ::protocolbuffers::ResourceData* TextOptions::mutable_fontfile() { + set_has_fontfile(); + if (fontfile_ == NULL) fontfile_ = new ::protocolbuffers::ResourceData; + return fontfile_; +} +inline ::protocolbuffers::ResourceData* TextOptions::release_fontfile() { + clear_has_fontfile(); + ::protocolbuffers::ResourceData* temp = fontfile_; + fontfile_ = NULL; + return temp; +} +inline void TextOptions::set_allocated_fontfile(::protocolbuffers::ResourceData* fontfile) { + delete fontfile_; + fontfile_ = fontfile; + if (fontfile) { + set_has_fontfile(); + } else { + clear_has_fontfile(); + } +} + +// optional int32 fontSize = 5; +inline bool TextOptions::has_fontsize() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void TextOptions::set_has_fontsize() { + _has_bits_[0] |= 0x00000010u; +} +inline void TextOptions::clear_has_fontsize() { + _has_bits_[0] &= ~0x00000010u; +} +inline void TextOptions::clear_fontsize() { + fontsize_ = 0; + clear_has_fontsize(); +} +inline ::google::protobuf::int32 TextOptions::fontsize() const { + return fontsize_; +} +inline void TextOptions::set_fontsize(::google::protobuf::int32 value) { + set_has_fontsize(); + fontsize_ = value; +} + +// optional string text = 6; +inline bool TextOptions::has_text() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void TextOptions::set_has_text() { + _has_bits_[0] |= 0x00000020u; +} +inline void TextOptions::clear_has_text() { + _has_bits_[0] &= ~0x00000020u; +} +inline void TextOptions::clear_text() { + if (text_ != &::google::protobuf::internal::kEmptyString) { + text_->clear(); + } + clear_has_text(); +} +inline const ::std::string& TextOptions::text() const { + return *text_; +} +inline void TextOptions::set_text(const ::std::string& value) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + text_->assign(value); +} +inline void TextOptions::set_text(const char* value) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + text_->assign(value); +} +inline void TextOptions::set_text(const char* value, size_t size) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + text_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextOptions::mutable_text() { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + return text_; +} +inline ::std::string* TextOptions::release_text() { + clear_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = text_; + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextOptions::set_allocated_text(::std::string* text) { + if (text_ != &::google::protobuf::internal::kEmptyString) { + delete text_; + } + if (text) { + set_has_text(); + text_ = text; + } else { + clear_has_text(); + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional float areaWidth = 7; +inline bool TextOptions::has_areawidth() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void TextOptions::set_has_areawidth() { + _has_bits_[0] |= 0x00000040u; +} +inline void TextOptions::clear_has_areawidth() { + _has_bits_[0] &= ~0x00000040u; +} +inline void TextOptions::clear_areawidth() { + areawidth_ = 0; + clear_has_areawidth(); +} +inline float TextOptions::areawidth() const { + return areawidth_; +} +inline void TextOptions::set_areawidth(float value) { + set_has_areawidth(); + areawidth_ = value; +} + +// optional float areaHeight = 8; +inline bool TextOptions::has_areaheight() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void TextOptions::set_has_areaheight() { + _has_bits_[0] |= 0x00000080u; +} +inline void TextOptions::clear_has_areaheight() { + _has_bits_[0] &= ~0x00000080u; +} +inline void TextOptions::clear_areaheight() { + areaheight_ = 0; + clear_has_areaheight(); +} +inline float TextOptions::areaheight() const { + return areaheight_; +} +inline void TextOptions::set_areaheight(float value) { + set_has_areaheight(); + areaheight_ = value; +} + +// optional int32 hAlignment = 9; +inline bool TextOptions::has_halignment() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void TextOptions::set_has_halignment() { + _has_bits_[0] |= 0x00000100u; +} +inline void TextOptions::clear_has_halignment() { + _has_bits_[0] &= ~0x00000100u; +} +inline void TextOptions::clear_halignment() { + halignment_ = 0; + clear_has_halignment(); +} +inline ::google::protobuf::int32 TextOptions::halignment() const { + return halignment_; +} +inline void TextOptions::set_halignment(::google::protobuf::int32 value) { + set_has_halignment(); + halignment_ = value; +} + +// optional int32 vAlignment = 10; +inline bool TextOptions::has_valignment() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void TextOptions::set_has_valignment() { + _has_bits_[0] |= 0x00000200u; +} +inline void TextOptions::clear_has_valignment() { + _has_bits_[0] &= ~0x00000200u; +} +inline void TextOptions::clear_valignment() { + valignment_ = 0; + clear_has_valignment(); +} +inline ::google::protobuf::int32 TextOptions::valignment() const { + return valignment_; +} +inline void TextOptions::set_valignment(::google::protobuf::int32 value) { + set_has_valignment(); + valignment_ = value; +} + +// optional bool touchScaleEnable = 11; +inline bool TextOptions::has_touchscaleenable() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void TextOptions::set_has_touchscaleenable() { + _has_bits_[0] |= 0x00000400u; +} +inline void TextOptions::clear_has_touchscaleenable() { + _has_bits_[0] &= ~0x00000400u; +} +inline void TextOptions::clear_touchscaleenable() { + touchscaleenable_ = false; + clear_has_touchscaleenable(); +} +inline bool TextOptions::touchscaleenable() const { + return touchscaleenable_; +} +inline void TextOptions::set_touchscaleenable(bool value) { + set_has_touchscaleenable(); + touchscaleenable_ = value; +} + +// optional .protocolbuffers.ResourceData fontResource = 12; +inline bool TextOptions::has_fontresource() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void TextOptions::set_has_fontresource() { + _has_bits_[0] |= 0x00000800u; +} +inline void TextOptions::clear_has_fontresource() { + _has_bits_[0] &= ~0x00000800u; +} +inline void TextOptions::clear_fontresource() { + if (fontresource_ != NULL) fontresource_->::protocolbuffers::ResourceData::Clear(); + clear_has_fontresource(); +} +inline const ::protocolbuffers::ResourceData& TextOptions::fontresource() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return fontresource_ != NULL ? *fontresource_ : *default_instance().fontresource_; +#else + return fontresource_ != NULL ? *fontresource_ : *default_instance_->fontresource_; +#endif +} +inline ::protocolbuffers::ResourceData* TextOptions::mutable_fontresource() { + set_has_fontresource(); + if (fontresource_ == NULL) fontresource_ = new ::protocolbuffers::ResourceData; + return fontresource_; +} +inline ::protocolbuffers::ResourceData* TextOptions::release_fontresource() { + clear_has_fontresource(); + ::protocolbuffers::ResourceData* temp = fontresource_; + fontresource_ = NULL; + return temp; +} +inline void TextOptions::set_allocated_fontresource(::protocolbuffers::ResourceData* fontresource) { + delete fontresource_; + fontresource_ = fontresource; + if (fontresource) { + set_has_fontresource(); + } else { + clear_has_fontresource(); + } +} + +// optional bool IsCustomSize = 13; +inline bool TextOptions::has_iscustomsize() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void TextOptions::set_has_iscustomsize() { + _has_bits_[0] |= 0x00001000u; +} +inline void TextOptions::clear_has_iscustomsize() { + _has_bits_[0] &= ~0x00001000u; +} +inline void TextOptions::clear_iscustomsize() { + iscustomsize_ = false; + clear_has_iscustomsize(); +} +inline bool TextOptions::iscustomsize() const { + return iscustomsize_; +} +inline void TextOptions::set_iscustomsize(bool value) { + set_has_iscustomsize(); + iscustomsize_ = value; +} + +// ------------------------------------------------------------------- + +// LoadingBarOptions + +// optional string name = 1; +inline bool LoadingBarOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void LoadingBarOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void LoadingBarOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void LoadingBarOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& LoadingBarOptions::name() const { + return *name_; +} +inline void LoadingBarOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void LoadingBarOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void LoadingBarOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* LoadingBarOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* LoadingBarOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void LoadingBarOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool LoadingBarOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void LoadingBarOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void LoadingBarOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void LoadingBarOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& LoadingBarOptions::classname() const { + return *classname_; +} +inline void LoadingBarOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void LoadingBarOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void LoadingBarOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* LoadingBarOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* LoadingBarOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void LoadingBarOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string texture = 3; +inline bool LoadingBarOptions::has_texture() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void LoadingBarOptions::set_has_texture() { + _has_bits_[0] |= 0x00000004u; +} +inline void LoadingBarOptions::clear_has_texture() { + _has_bits_[0] &= ~0x00000004u; +} +inline void LoadingBarOptions::clear_texture() { + if (texture_ != &::google::protobuf::internal::kEmptyString) { + texture_->clear(); + } + clear_has_texture(); +} +inline const ::std::string& LoadingBarOptions::texture() const { + return *texture_; +} +inline void LoadingBarOptions::set_texture(const ::std::string& value) { + set_has_texture(); + if (texture_ == &::google::protobuf::internal::kEmptyString) { + texture_ = new ::std::string; + } + texture_->assign(value); +} +inline void LoadingBarOptions::set_texture(const char* value) { + set_has_texture(); + if (texture_ == &::google::protobuf::internal::kEmptyString) { + texture_ = new ::std::string; + } + texture_->assign(value); +} +inline void LoadingBarOptions::set_texture(const char* value, size_t size) { + set_has_texture(); + if (texture_ == &::google::protobuf::internal::kEmptyString) { + texture_ = new ::std::string; + } + texture_->assign(reinterpret_cast(value), size); +} +inline ::std::string* LoadingBarOptions::mutable_texture() { + set_has_texture(); + if (texture_ == &::google::protobuf::internal::kEmptyString) { + texture_ = new ::std::string; + } + return texture_; +} +inline ::std::string* LoadingBarOptions::release_texture() { + clear_has_texture(); + if (texture_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = texture_; + texture_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void LoadingBarOptions::set_allocated_texture(::std::string* texture) { + if (texture_ != &::google::protobuf::internal::kEmptyString) { + delete texture_; + } + if (texture) { + set_has_texture(); + texture_ = texture; + } else { + clear_has_texture(); + texture_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData textureData = 4; +inline bool LoadingBarOptions::has_texturedata() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void LoadingBarOptions::set_has_texturedata() { + _has_bits_[0] |= 0x00000008u; +} +inline void LoadingBarOptions::clear_has_texturedata() { + _has_bits_[0] &= ~0x00000008u; +} +inline void LoadingBarOptions::clear_texturedata() { + if (texturedata_ != NULL) texturedata_->::protocolbuffers::ResourceData::Clear(); + clear_has_texturedata(); +} +inline const ::protocolbuffers::ResourceData& LoadingBarOptions::texturedata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return texturedata_ != NULL ? *texturedata_ : *default_instance().texturedata_; +#else + return texturedata_ != NULL ? *texturedata_ : *default_instance_->texturedata_; +#endif +} +inline ::protocolbuffers::ResourceData* LoadingBarOptions::mutable_texturedata() { + set_has_texturedata(); + if (texturedata_ == NULL) texturedata_ = new ::protocolbuffers::ResourceData; + return texturedata_; +} +inline ::protocolbuffers::ResourceData* LoadingBarOptions::release_texturedata() { + clear_has_texturedata(); + ::protocolbuffers::ResourceData* temp = texturedata_; + texturedata_ = NULL; + return temp; +} +inline void LoadingBarOptions::set_allocated_texturedata(::protocolbuffers::ResourceData* texturedata) { + delete texturedata_; + texturedata_ = texturedata; + if (texturedata) { + set_has_texturedata(); + } else { + clear_has_texturedata(); + } +} + +// optional int32 percent = 5; +inline bool LoadingBarOptions::has_percent() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void LoadingBarOptions::set_has_percent() { + _has_bits_[0] |= 0x00000010u; +} +inline void LoadingBarOptions::clear_has_percent() { + _has_bits_[0] &= ~0x00000010u; +} +inline void LoadingBarOptions::clear_percent() { + percent_ = 0; + clear_has_percent(); +} +inline ::google::protobuf::int32 LoadingBarOptions::percent() const { + return percent_; +} +inline void LoadingBarOptions::set_percent(::google::protobuf::int32 value) { + set_has_percent(); + percent_ = value; +} + +// optional int32 direction = 6; +inline bool LoadingBarOptions::has_direction() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void LoadingBarOptions::set_has_direction() { + _has_bits_[0] |= 0x00000020u; +} +inline void LoadingBarOptions::clear_has_direction() { + _has_bits_[0] &= ~0x00000020u; +} +inline void LoadingBarOptions::clear_direction() { + direction_ = 0; + clear_has_direction(); +} +inline ::google::protobuf::int32 LoadingBarOptions::direction() const { + return direction_; +} +inline void LoadingBarOptions::set_direction(::google::protobuf::int32 value) { + set_has_direction(); + direction_ = value; +} + +// optional float capInsetsX = 7; +inline bool LoadingBarOptions::has_capinsetsx() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void LoadingBarOptions::set_has_capinsetsx() { + _has_bits_[0] |= 0x00000040u; +} +inline void LoadingBarOptions::clear_has_capinsetsx() { + _has_bits_[0] &= ~0x00000040u; +} +inline void LoadingBarOptions::clear_capinsetsx() { + capinsetsx_ = 0; + clear_has_capinsetsx(); +} +inline float LoadingBarOptions::capinsetsx() const { + return capinsetsx_; +} +inline void LoadingBarOptions::set_capinsetsx(float value) { + set_has_capinsetsx(); + capinsetsx_ = value; +} + +// optional float capInsetsY = 8; +inline bool LoadingBarOptions::has_capinsetsy() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void LoadingBarOptions::set_has_capinsetsy() { + _has_bits_[0] |= 0x00000080u; +} +inline void LoadingBarOptions::clear_has_capinsetsy() { + _has_bits_[0] &= ~0x00000080u; +} +inline void LoadingBarOptions::clear_capinsetsy() { + capinsetsy_ = 0; + clear_has_capinsetsy(); +} +inline float LoadingBarOptions::capinsetsy() const { + return capinsetsy_; +} +inline void LoadingBarOptions::set_capinsetsy(float value) { + set_has_capinsetsy(); + capinsetsy_ = value; +} + +// optional float capInsetsWidth = 9; +inline bool LoadingBarOptions::has_capinsetswidth() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void LoadingBarOptions::set_has_capinsetswidth() { + _has_bits_[0] |= 0x00000100u; +} +inline void LoadingBarOptions::clear_has_capinsetswidth() { + _has_bits_[0] &= ~0x00000100u; +} +inline void LoadingBarOptions::clear_capinsetswidth() { + capinsetswidth_ = 0; + clear_has_capinsetswidth(); +} +inline float LoadingBarOptions::capinsetswidth() const { + return capinsetswidth_; +} +inline void LoadingBarOptions::set_capinsetswidth(float value) { + set_has_capinsetswidth(); + capinsetswidth_ = value; +} + +// optional float capInsetsHeight = 10; +inline bool LoadingBarOptions::has_capinsetsheight() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void LoadingBarOptions::set_has_capinsetsheight() { + _has_bits_[0] |= 0x00000200u; +} +inline void LoadingBarOptions::clear_has_capinsetsheight() { + _has_bits_[0] &= ~0x00000200u; +} +inline void LoadingBarOptions::clear_capinsetsheight() { + capinsetsheight_ = 0; + clear_has_capinsetsheight(); +} +inline float LoadingBarOptions::capinsetsheight() const { + return capinsetsheight_; +} +inline void LoadingBarOptions::set_capinsetsheight(float value) { + set_has_capinsetsheight(); + capinsetsheight_ = value; +} + +// optional bool scale9Enable = 11; +inline bool LoadingBarOptions::has_scale9enable() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void LoadingBarOptions::set_has_scale9enable() { + _has_bits_[0] |= 0x00000400u; +} +inline void LoadingBarOptions::clear_has_scale9enable() { + _has_bits_[0] &= ~0x00000400u; +} +inline void LoadingBarOptions::clear_scale9enable() { + scale9enable_ = false; + clear_has_scale9enable(); +} +inline bool LoadingBarOptions::scale9enable() const { + return scale9enable_; +} +inline void LoadingBarOptions::set_scale9enable(bool value) { + set_has_scale9enable(); + scale9enable_ = value; +} + +// optional float scale9Width = 12; +inline bool LoadingBarOptions::has_scale9width() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void LoadingBarOptions::set_has_scale9width() { + _has_bits_[0] |= 0x00000800u; +} +inline void LoadingBarOptions::clear_has_scale9width() { + _has_bits_[0] &= ~0x00000800u; +} +inline void LoadingBarOptions::clear_scale9width() { + scale9width_ = 0; + clear_has_scale9width(); +} +inline float LoadingBarOptions::scale9width() const { + return scale9width_; +} +inline void LoadingBarOptions::set_scale9width(float value) { + set_has_scale9width(); + scale9width_ = value; +} + +// optional float scale9Height = 13; +inline bool LoadingBarOptions::has_scale9height() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void LoadingBarOptions::set_has_scale9height() { + _has_bits_[0] |= 0x00001000u; +} +inline void LoadingBarOptions::clear_has_scale9height() { + _has_bits_[0] &= ~0x00001000u; +} +inline void LoadingBarOptions::clear_scale9height() { + scale9height_ = 0; + clear_has_scale9height(); +} +inline float LoadingBarOptions::scale9height() const { + return scale9height_; +} +inline void LoadingBarOptions::set_scale9height(float value) { + set_has_scale9height(); + scale9height_ = value; +} + +// ------------------------------------------------------------------- + +// ListViewOptions + +// optional string name = 1; +inline bool ListViewOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ListViewOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void ListViewOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void ListViewOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& ListViewOptions::name() const { + return *name_; +} +inline void ListViewOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void ListViewOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void ListViewOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ListViewOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* ListViewOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ListViewOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool ListViewOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ListViewOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void ListViewOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void ListViewOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& ListViewOptions::classname() const { + return *classname_; +} +inline void ListViewOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void ListViewOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void ListViewOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ListViewOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* ListViewOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ListViewOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string backGroundImage = 3; +inline bool ListViewOptions::has_backgroundimage() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void ListViewOptions::set_has_backgroundimage() { + _has_bits_[0] |= 0x00000004u; +} +inline void ListViewOptions::clear_has_backgroundimage() { + _has_bits_[0] &= ~0x00000004u; +} +inline void ListViewOptions::clear_backgroundimage() { + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + backgroundimage_->clear(); + } + clear_has_backgroundimage(); +} +inline const ::std::string& ListViewOptions::backgroundimage() const { + return *backgroundimage_; +} +inline void ListViewOptions::set_backgroundimage(const ::std::string& value) { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + backgroundimage_->assign(value); +} +inline void ListViewOptions::set_backgroundimage(const char* value) { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + backgroundimage_->assign(value); +} +inline void ListViewOptions::set_backgroundimage(const char* value, size_t size) { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + backgroundimage_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ListViewOptions::mutable_backgroundimage() { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + return backgroundimage_; +} +inline ::std::string* ListViewOptions::release_backgroundimage() { + clear_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = backgroundimage_; + backgroundimage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ListViewOptions::set_allocated_backgroundimage(::std::string* backgroundimage) { + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundimage_; + } + if (backgroundimage) { + set_has_backgroundimage(); + backgroundimage_ = backgroundimage; + } else { + clear_has_backgroundimage(); + backgroundimage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData backGroundImageData = 4; +inline bool ListViewOptions::has_backgroundimagedata() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void ListViewOptions::set_has_backgroundimagedata() { + _has_bits_[0] |= 0x00000008u; +} +inline void ListViewOptions::clear_has_backgroundimagedata() { + _has_bits_[0] &= ~0x00000008u; +} +inline void ListViewOptions::clear_backgroundimagedata() { + if (backgroundimagedata_ != NULL) backgroundimagedata_->::protocolbuffers::ResourceData::Clear(); + clear_has_backgroundimagedata(); +} +inline const ::protocolbuffers::ResourceData& ListViewOptions::backgroundimagedata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return backgroundimagedata_ != NULL ? *backgroundimagedata_ : *default_instance().backgroundimagedata_; +#else + return backgroundimagedata_ != NULL ? *backgroundimagedata_ : *default_instance_->backgroundimagedata_; +#endif +} +inline ::protocolbuffers::ResourceData* ListViewOptions::mutable_backgroundimagedata() { + set_has_backgroundimagedata(); + if (backgroundimagedata_ == NULL) backgroundimagedata_ = new ::protocolbuffers::ResourceData; + return backgroundimagedata_; +} +inline ::protocolbuffers::ResourceData* ListViewOptions::release_backgroundimagedata() { + clear_has_backgroundimagedata(); + ::protocolbuffers::ResourceData* temp = backgroundimagedata_; + backgroundimagedata_ = NULL; + return temp; +} +inline void ListViewOptions::set_allocated_backgroundimagedata(::protocolbuffers::ResourceData* backgroundimagedata) { + delete backgroundimagedata_; + backgroundimagedata_ = backgroundimagedata; + if (backgroundimagedata) { + set_has_backgroundimagedata(); + } else { + clear_has_backgroundimagedata(); + } +} + +// optional int32 bgColorR = 5; +inline bool ListViewOptions::has_bgcolorr() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void ListViewOptions::set_has_bgcolorr() { + _has_bits_[0] |= 0x00000010u; +} +inline void ListViewOptions::clear_has_bgcolorr() { + _has_bits_[0] &= ~0x00000010u; +} +inline void ListViewOptions::clear_bgcolorr() { + bgcolorr_ = 0; + clear_has_bgcolorr(); +} +inline ::google::protobuf::int32 ListViewOptions::bgcolorr() const { + return bgcolorr_; +} +inline void ListViewOptions::set_bgcolorr(::google::protobuf::int32 value) { + set_has_bgcolorr(); + bgcolorr_ = value; +} + +// optional int32 bgColorG = 6; +inline bool ListViewOptions::has_bgcolorg() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void ListViewOptions::set_has_bgcolorg() { + _has_bits_[0] |= 0x00000020u; +} +inline void ListViewOptions::clear_has_bgcolorg() { + _has_bits_[0] &= ~0x00000020u; +} +inline void ListViewOptions::clear_bgcolorg() { + bgcolorg_ = 0; + clear_has_bgcolorg(); +} +inline ::google::protobuf::int32 ListViewOptions::bgcolorg() const { + return bgcolorg_; +} +inline void ListViewOptions::set_bgcolorg(::google::protobuf::int32 value) { + set_has_bgcolorg(); + bgcolorg_ = value; +} + +// optional int32 bgColorB = 7; +inline bool ListViewOptions::has_bgcolorb() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void ListViewOptions::set_has_bgcolorb() { + _has_bits_[0] |= 0x00000040u; +} +inline void ListViewOptions::clear_has_bgcolorb() { + _has_bits_[0] &= ~0x00000040u; +} +inline void ListViewOptions::clear_bgcolorb() { + bgcolorb_ = 0; + clear_has_bgcolorb(); +} +inline ::google::protobuf::int32 ListViewOptions::bgcolorb() const { + return bgcolorb_; +} +inline void ListViewOptions::set_bgcolorb(::google::protobuf::int32 value) { + set_has_bgcolorb(); + bgcolorb_ = value; +} + +// optional int32 bgStartColorR = 8; +inline bool ListViewOptions::has_bgstartcolorr() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void ListViewOptions::set_has_bgstartcolorr() { + _has_bits_[0] |= 0x00000080u; +} +inline void ListViewOptions::clear_has_bgstartcolorr() { + _has_bits_[0] &= ~0x00000080u; +} +inline void ListViewOptions::clear_bgstartcolorr() { + bgstartcolorr_ = 0; + clear_has_bgstartcolorr(); +} +inline ::google::protobuf::int32 ListViewOptions::bgstartcolorr() const { + return bgstartcolorr_; +} +inline void ListViewOptions::set_bgstartcolorr(::google::protobuf::int32 value) { + set_has_bgstartcolorr(); + bgstartcolorr_ = value; +} + +// optional int32 bgStartColorG = 9; +inline bool ListViewOptions::has_bgstartcolorg() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void ListViewOptions::set_has_bgstartcolorg() { + _has_bits_[0] |= 0x00000100u; +} +inline void ListViewOptions::clear_has_bgstartcolorg() { + _has_bits_[0] &= ~0x00000100u; +} +inline void ListViewOptions::clear_bgstartcolorg() { + bgstartcolorg_ = 0; + clear_has_bgstartcolorg(); +} +inline ::google::protobuf::int32 ListViewOptions::bgstartcolorg() const { + return bgstartcolorg_; +} +inline void ListViewOptions::set_bgstartcolorg(::google::protobuf::int32 value) { + set_has_bgstartcolorg(); + bgstartcolorg_ = value; +} + +// optional int32 bgStartColorB = 10; +inline bool ListViewOptions::has_bgstartcolorb() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void ListViewOptions::set_has_bgstartcolorb() { + _has_bits_[0] |= 0x00000200u; +} +inline void ListViewOptions::clear_has_bgstartcolorb() { + _has_bits_[0] &= ~0x00000200u; +} +inline void ListViewOptions::clear_bgstartcolorb() { + bgstartcolorb_ = 0; + clear_has_bgstartcolorb(); +} +inline ::google::protobuf::int32 ListViewOptions::bgstartcolorb() const { + return bgstartcolorb_; +} +inline void ListViewOptions::set_bgstartcolorb(::google::protobuf::int32 value) { + set_has_bgstartcolorb(); + bgstartcolorb_ = value; +} + +// optional int32 bgEndColorR = 11; +inline bool ListViewOptions::has_bgendcolorr() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void ListViewOptions::set_has_bgendcolorr() { + _has_bits_[0] |= 0x00000400u; +} +inline void ListViewOptions::clear_has_bgendcolorr() { + _has_bits_[0] &= ~0x00000400u; +} +inline void ListViewOptions::clear_bgendcolorr() { + bgendcolorr_ = 0; + clear_has_bgendcolorr(); +} +inline ::google::protobuf::int32 ListViewOptions::bgendcolorr() const { + return bgendcolorr_; +} +inline void ListViewOptions::set_bgendcolorr(::google::protobuf::int32 value) { + set_has_bgendcolorr(); + bgendcolorr_ = value; +} + +// optional int32 bgEndColorG = 12; +inline bool ListViewOptions::has_bgendcolorg() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void ListViewOptions::set_has_bgendcolorg() { + _has_bits_[0] |= 0x00000800u; +} +inline void ListViewOptions::clear_has_bgendcolorg() { + _has_bits_[0] &= ~0x00000800u; +} +inline void ListViewOptions::clear_bgendcolorg() { + bgendcolorg_ = 0; + clear_has_bgendcolorg(); +} +inline ::google::protobuf::int32 ListViewOptions::bgendcolorg() const { + return bgendcolorg_; +} +inline void ListViewOptions::set_bgendcolorg(::google::protobuf::int32 value) { + set_has_bgendcolorg(); + bgendcolorg_ = value; +} + +// optional int32 bgEndColorB = 13; +inline bool ListViewOptions::has_bgendcolorb() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void ListViewOptions::set_has_bgendcolorb() { + _has_bits_[0] |= 0x00001000u; +} +inline void ListViewOptions::clear_has_bgendcolorb() { + _has_bits_[0] &= ~0x00001000u; +} +inline void ListViewOptions::clear_bgendcolorb() { + bgendcolorb_ = 0; + clear_has_bgendcolorb(); +} +inline ::google::protobuf::int32 ListViewOptions::bgendcolorb() const { + return bgendcolorb_; +} +inline void ListViewOptions::set_bgendcolorb(::google::protobuf::int32 value) { + set_has_bgendcolorb(); + bgendcolorb_ = value; +} + +// optional int32 colorType = 14; +inline bool ListViewOptions::has_colortype() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void ListViewOptions::set_has_colortype() { + _has_bits_[0] |= 0x00002000u; +} +inline void ListViewOptions::clear_has_colortype() { + _has_bits_[0] &= ~0x00002000u; +} +inline void ListViewOptions::clear_colortype() { + colortype_ = 0; + clear_has_colortype(); +} +inline ::google::protobuf::int32 ListViewOptions::colortype() const { + return colortype_; +} +inline void ListViewOptions::set_colortype(::google::protobuf::int32 value) { + set_has_colortype(); + colortype_ = value; +} + +// optional int32 bgColorOpacity = 15; +inline bool ListViewOptions::has_bgcoloropacity() const { + return (_has_bits_[0] & 0x00004000u) != 0; +} +inline void ListViewOptions::set_has_bgcoloropacity() { + _has_bits_[0] |= 0x00004000u; +} +inline void ListViewOptions::clear_has_bgcoloropacity() { + _has_bits_[0] &= ~0x00004000u; +} +inline void ListViewOptions::clear_bgcoloropacity() { + bgcoloropacity_ = 0; + clear_has_bgcoloropacity(); +} +inline ::google::protobuf::int32 ListViewOptions::bgcoloropacity() const { + return bgcoloropacity_; +} +inline void ListViewOptions::set_bgcoloropacity(::google::protobuf::int32 value) { + set_has_bgcoloropacity(); + bgcoloropacity_ = value; +} + +// optional float vectorX = 16; +inline bool ListViewOptions::has_vectorx() const { + return (_has_bits_[0] & 0x00008000u) != 0; +} +inline void ListViewOptions::set_has_vectorx() { + _has_bits_[0] |= 0x00008000u; +} +inline void ListViewOptions::clear_has_vectorx() { + _has_bits_[0] &= ~0x00008000u; +} +inline void ListViewOptions::clear_vectorx() { + vectorx_ = 0; + clear_has_vectorx(); +} +inline float ListViewOptions::vectorx() const { + return vectorx_; +} +inline void ListViewOptions::set_vectorx(float value) { + set_has_vectorx(); + vectorx_ = value; +} + +// optional float vectorY = 17; +inline bool ListViewOptions::has_vectory() const { + return (_has_bits_[0] & 0x00010000u) != 0; +} +inline void ListViewOptions::set_has_vectory() { + _has_bits_[0] |= 0x00010000u; +} +inline void ListViewOptions::clear_has_vectory() { + _has_bits_[0] &= ~0x00010000u; +} +inline void ListViewOptions::clear_vectory() { + vectory_ = 0; + clear_has_vectory(); +} +inline float ListViewOptions::vectory() const { + return vectory_; +} +inline void ListViewOptions::set_vectory(float value) { + set_has_vectory(); + vectory_ = value; +} + +// optional float capInsetsX = 18; +inline bool ListViewOptions::has_capinsetsx() const { + return (_has_bits_[0] & 0x00020000u) != 0; +} +inline void ListViewOptions::set_has_capinsetsx() { + _has_bits_[0] |= 0x00020000u; +} +inline void ListViewOptions::clear_has_capinsetsx() { + _has_bits_[0] &= ~0x00020000u; +} +inline void ListViewOptions::clear_capinsetsx() { + capinsetsx_ = 0; + clear_has_capinsetsx(); +} +inline float ListViewOptions::capinsetsx() const { + return capinsetsx_; +} +inline void ListViewOptions::set_capinsetsx(float value) { + set_has_capinsetsx(); + capinsetsx_ = value; +} + +// optional float capInsetsY = 19; +inline bool ListViewOptions::has_capinsetsy() const { + return (_has_bits_[0] & 0x00040000u) != 0; +} +inline void ListViewOptions::set_has_capinsetsy() { + _has_bits_[0] |= 0x00040000u; +} +inline void ListViewOptions::clear_has_capinsetsy() { + _has_bits_[0] &= ~0x00040000u; +} +inline void ListViewOptions::clear_capinsetsy() { + capinsetsy_ = 0; + clear_has_capinsetsy(); +} +inline float ListViewOptions::capinsetsy() const { + return capinsetsy_; +} +inline void ListViewOptions::set_capinsetsy(float value) { + set_has_capinsetsy(); + capinsetsy_ = value; +} + +// optional float capInsetsWidth = 20; +inline bool ListViewOptions::has_capinsetswidth() const { + return (_has_bits_[0] & 0x00080000u) != 0; +} +inline void ListViewOptions::set_has_capinsetswidth() { + _has_bits_[0] |= 0x00080000u; +} +inline void ListViewOptions::clear_has_capinsetswidth() { + _has_bits_[0] &= ~0x00080000u; +} +inline void ListViewOptions::clear_capinsetswidth() { + capinsetswidth_ = 0; + clear_has_capinsetswidth(); +} +inline float ListViewOptions::capinsetswidth() const { + return capinsetswidth_; +} +inline void ListViewOptions::set_capinsetswidth(float value) { + set_has_capinsetswidth(); + capinsetswidth_ = value; +} + +// optional float capInsetsHeight = 21; +inline bool ListViewOptions::has_capinsetsheight() const { + return (_has_bits_[0] & 0x00100000u) != 0; +} +inline void ListViewOptions::set_has_capinsetsheight() { + _has_bits_[0] |= 0x00100000u; +} +inline void ListViewOptions::clear_has_capinsetsheight() { + _has_bits_[0] &= ~0x00100000u; +} +inline void ListViewOptions::clear_capinsetsheight() { + capinsetsheight_ = 0; + clear_has_capinsetsheight(); +} +inline float ListViewOptions::capinsetsheight() const { + return capinsetsheight_; +} +inline void ListViewOptions::set_capinsetsheight(float value) { + set_has_capinsetsheight(); + capinsetsheight_ = value; +} + +// optional bool backGroundScale9Enable = 22; +inline bool ListViewOptions::has_backgroundscale9enable() const { + return (_has_bits_[0] & 0x00200000u) != 0; +} +inline void ListViewOptions::set_has_backgroundscale9enable() { + _has_bits_[0] |= 0x00200000u; +} +inline void ListViewOptions::clear_has_backgroundscale9enable() { + _has_bits_[0] &= ~0x00200000u; +} +inline void ListViewOptions::clear_backgroundscale9enable() { + backgroundscale9enable_ = false; + clear_has_backgroundscale9enable(); +} +inline bool ListViewOptions::backgroundscale9enable() const { + return backgroundscale9enable_; +} +inline void ListViewOptions::set_backgroundscale9enable(bool value) { + set_has_backgroundscale9enable(); + backgroundscale9enable_ = value; +} + +// optional float innerWidth = 23; +inline bool ListViewOptions::has_innerwidth() const { + return (_has_bits_[0] & 0x00400000u) != 0; +} +inline void ListViewOptions::set_has_innerwidth() { + _has_bits_[0] |= 0x00400000u; +} +inline void ListViewOptions::clear_has_innerwidth() { + _has_bits_[0] &= ~0x00400000u; +} +inline void ListViewOptions::clear_innerwidth() { + innerwidth_ = 0; + clear_has_innerwidth(); +} +inline float ListViewOptions::innerwidth() const { + return innerwidth_; +} +inline void ListViewOptions::set_innerwidth(float value) { + set_has_innerwidth(); + innerwidth_ = value; +} + +// optional float innerHeight = 24; +inline bool ListViewOptions::has_innerheight() const { + return (_has_bits_[0] & 0x00800000u) != 0; +} +inline void ListViewOptions::set_has_innerheight() { + _has_bits_[0] |= 0x00800000u; +} +inline void ListViewOptions::clear_has_innerheight() { + _has_bits_[0] &= ~0x00800000u; +} +inline void ListViewOptions::clear_innerheight() { + innerheight_ = 0; + clear_has_innerheight(); +} +inline float ListViewOptions::innerheight() const { + return innerheight_; +} +inline void ListViewOptions::set_innerheight(float value) { + set_has_innerheight(); + innerheight_ = value; +} + +// optional bool clipAble = 25; +inline bool ListViewOptions::has_clipable() const { + return (_has_bits_[0] & 0x01000000u) != 0; +} +inline void ListViewOptions::set_has_clipable() { + _has_bits_[0] |= 0x01000000u; +} +inline void ListViewOptions::clear_has_clipable() { + _has_bits_[0] &= ~0x01000000u; +} +inline void ListViewOptions::clear_clipable() { + clipable_ = false; + clear_has_clipable(); +} +inline bool ListViewOptions::clipable() const { + return clipable_; +} +inline void ListViewOptions::set_clipable(bool value) { + set_has_clipable(); + clipable_ = value; +} + +// optional bool bounceEnable = 26; +inline bool ListViewOptions::has_bounceenable() const { + return (_has_bits_[0] & 0x02000000u) != 0; +} +inline void ListViewOptions::set_has_bounceenable() { + _has_bits_[0] |= 0x02000000u; +} +inline void ListViewOptions::clear_has_bounceenable() { + _has_bits_[0] &= ~0x02000000u; +} +inline void ListViewOptions::clear_bounceenable() { + bounceenable_ = false; + clear_has_bounceenable(); +} +inline bool ListViewOptions::bounceenable() const { + return bounceenable_; +} +inline void ListViewOptions::set_bounceenable(bool value) { + set_has_bounceenable(); + bounceenable_ = value; +} + +// optional int32 direction = 27; +inline bool ListViewOptions::has_direction() const { + return (_has_bits_[0] & 0x04000000u) != 0; +} +inline void ListViewOptions::set_has_direction() { + _has_bits_[0] |= 0x04000000u; +} +inline void ListViewOptions::clear_has_direction() { + _has_bits_[0] &= ~0x04000000u; +} +inline void ListViewOptions::clear_direction() { + direction_ = 0; + clear_has_direction(); +} +inline ::google::protobuf::int32 ListViewOptions::direction() const { + return direction_; +} +inline void ListViewOptions::set_direction(::google::protobuf::int32 value) { + set_has_direction(); + direction_ = value; +} + +// optional int32 gravity = 28; +inline bool ListViewOptions::has_gravity() const { + return (_has_bits_[0] & 0x08000000u) != 0; +} +inline void ListViewOptions::set_has_gravity() { + _has_bits_[0] |= 0x08000000u; +} +inline void ListViewOptions::clear_has_gravity() { + _has_bits_[0] &= ~0x08000000u; +} +inline void ListViewOptions::clear_gravity() { + gravity_ = 0; + clear_has_gravity(); +} +inline ::google::protobuf::int32 ListViewOptions::gravity() const { + return gravity_; +} +inline void ListViewOptions::set_gravity(::google::protobuf::int32 value) { + set_has_gravity(); + gravity_ = value; +} + +// optional int32 itemMargin = 29; +inline bool ListViewOptions::has_itemmargin() const { + return (_has_bits_[0] & 0x10000000u) != 0; +} +inline void ListViewOptions::set_has_itemmargin() { + _has_bits_[0] |= 0x10000000u; +} +inline void ListViewOptions::clear_has_itemmargin() { + _has_bits_[0] &= ~0x10000000u; +} +inline void ListViewOptions::clear_itemmargin() { + itemmargin_ = 0; + clear_has_itemmargin(); +} +inline ::google::protobuf::int32 ListViewOptions::itemmargin() const { + return itemmargin_; +} +inline void ListViewOptions::set_itemmargin(::google::protobuf::int32 value) { + set_has_itemmargin(); + itemmargin_ = value; +} + +// optional float scale9Width = 30; +inline bool ListViewOptions::has_scale9width() const { + return (_has_bits_[0] & 0x20000000u) != 0; +} +inline void ListViewOptions::set_has_scale9width() { + _has_bits_[0] |= 0x20000000u; +} +inline void ListViewOptions::clear_has_scale9width() { + _has_bits_[0] &= ~0x20000000u; +} +inline void ListViewOptions::clear_scale9width() { + scale9width_ = 0; + clear_has_scale9width(); +} +inline float ListViewOptions::scale9width() const { + return scale9width_; +} +inline void ListViewOptions::set_scale9width(float value) { + set_has_scale9width(); + scale9width_ = value; +} + +// optional float scale9Height = 31; +inline bool ListViewOptions::has_scale9height() const { + return (_has_bits_[0] & 0x40000000u) != 0; +} +inline void ListViewOptions::set_has_scale9height() { + _has_bits_[0] |= 0x40000000u; +} +inline void ListViewOptions::clear_has_scale9height() { + _has_bits_[0] &= ~0x40000000u; +} +inline void ListViewOptions::clear_scale9height() { + scale9height_ = 0; + clear_has_scale9height(); +} +inline float ListViewOptions::scale9height() const { + return scale9height_; +} +inline void ListViewOptions::set_scale9height(float value) { + set_has_scale9height(); + scale9height_ = value; +} + +// ------------------------------------------------------------------- + +// PageViewOptions + +// optional string name = 1; +inline bool PageViewOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void PageViewOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void PageViewOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void PageViewOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& PageViewOptions::name() const { + return *name_; +} +inline void PageViewOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void PageViewOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void PageViewOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* PageViewOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* PageViewOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void PageViewOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool PageViewOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void PageViewOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void PageViewOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void PageViewOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& PageViewOptions::classname() const { + return *classname_; +} +inline void PageViewOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void PageViewOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void PageViewOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* PageViewOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* PageViewOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void PageViewOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string backGroundImage = 3; +inline bool PageViewOptions::has_backgroundimage() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void PageViewOptions::set_has_backgroundimage() { + _has_bits_[0] |= 0x00000004u; +} +inline void PageViewOptions::clear_has_backgroundimage() { + _has_bits_[0] &= ~0x00000004u; +} +inline void PageViewOptions::clear_backgroundimage() { + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + backgroundimage_->clear(); + } + clear_has_backgroundimage(); +} +inline const ::std::string& PageViewOptions::backgroundimage() const { + return *backgroundimage_; +} +inline void PageViewOptions::set_backgroundimage(const ::std::string& value) { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + backgroundimage_->assign(value); +} +inline void PageViewOptions::set_backgroundimage(const char* value) { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + backgroundimage_->assign(value); +} +inline void PageViewOptions::set_backgroundimage(const char* value, size_t size) { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + backgroundimage_->assign(reinterpret_cast(value), size); +} +inline ::std::string* PageViewOptions::mutable_backgroundimage() { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + return backgroundimage_; +} +inline ::std::string* PageViewOptions::release_backgroundimage() { + clear_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = backgroundimage_; + backgroundimage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void PageViewOptions::set_allocated_backgroundimage(::std::string* backgroundimage) { + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundimage_; + } + if (backgroundimage) { + set_has_backgroundimage(); + backgroundimage_ = backgroundimage; + } else { + clear_has_backgroundimage(); + backgroundimage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData backGroundImageData = 4; +inline bool PageViewOptions::has_backgroundimagedata() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void PageViewOptions::set_has_backgroundimagedata() { + _has_bits_[0] |= 0x00000008u; +} +inline void PageViewOptions::clear_has_backgroundimagedata() { + _has_bits_[0] &= ~0x00000008u; +} +inline void PageViewOptions::clear_backgroundimagedata() { + if (backgroundimagedata_ != NULL) backgroundimagedata_->::protocolbuffers::ResourceData::Clear(); + clear_has_backgroundimagedata(); +} +inline const ::protocolbuffers::ResourceData& PageViewOptions::backgroundimagedata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return backgroundimagedata_ != NULL ? *backgroundimagedata_ : *default_instance().backgroundimagedata_; +#else + return backgroundimagedata_ != NULL ? *backgroundimagedata_ : *default_instance_->backgroundimagedata_; +#endif +} +inline ::protocolbuffers::ResourceData* PageViewOptions::mutable_backgroundimagedata() { + set_has_backgroundimagedata(); + if (backgroundimagedata_ == NULL) backgroundimagedata_ = new ::protocolbuffers::ResourceData; + return backgroundimagedata_; +} +inline ::protocolbuffers::ResourceData* PageViewOptions::release_backgroundimagedata() { + clear_has_backgroundimagedata(); + ::protocolbuffers::ResourceData* temp = backgroundimagedata_; + backgroundimagedata_ = NULL; + return temp; +} +inline void PageViewOptions::set_allocated_backgroundimagedata(::protocolbuffers::ResourceData* backgroundimagedata) { + delete backgroundimagedata_; + backgroundimagedata_ = backgroundimagedata; + if (backgroundimagedata) { + set_has_backgroundimagedata(); + } else { + clear_has_backgroundimagedata(); + } +} + +// optional bool clipAble = 5; +inline bool PageViewOptions::has_clipable() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void PageViewOptions::set_has_clipable() { + _has_bits_[0] |= 0x00000010u; +} +inline void PageViewOptions::clear_has_clipable() { + _has_bits_[0] &= ~0x00000010u; +} +inline void PageViewOptions::clear_clipable() { + clipable_ = false; + clear_has_clipable(); +} +inline bool PageViewOptions::clipable() const { + return clipable_; +} +inline void PageViewOptions::set_clipable(bool value) { + set_has_clipable(); + clipable_ = value; +} + +// optional int32 bgColorR = 6; +inline bool PageViewOptions::has_bgcolorr() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void PageViewOptions::set_has_bgcolorr() { + _has_bits_[0] |= 0x00000020u; +} +inline void PageViewOptions::clear_has_bgcolorr() { + _has_bits_[0] &= ~0x00000020u; +} +inline void PageViewOptions::clear_bgcolorr() { + bgcolorr_ = 0; + clear_has_bgcolorr(); +} +inline ::google::protobuf::int32 PageViewOptions::bgcolorr() const { + return bgcolorr_; +} +inline void PageViewOptions::set_bgcolorr(::google::protobuf::int32 value) { + set_has_bgcolorr(); + bgcolorr_ = value; +} + +// optional int32 bgColorG = 7; +inline bool PageViewOptions::has_bgcolorg() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void PageViewOptions::set_has_bgcolorg() { + _has_bits_[0] |= 0x00000040u; +} +inline void PageViewOptions::clear_has_bgcolorg() { + _has_bits_[0] &= ~0x00000040u; +} +inline void PageViewOptions::clear_bgcolorg() { + bgcolorg_ = 0; + clear_has_bgcolorg(); +} +inline ::google::protobuf::int32 PageViewOptions::bgcolorg() const { + return bgcolorg_; +} +inline void PageViewOptions::set_bgcolorg(::google::protobuf::int32 value) { + set_has_bgcolorg(); + bgcolorg_ = value; +} + +// optional int32 bgColorB = 8; +inline bool PageViewOptions::has_bgcolorb() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void PageViewOptions::set_has_bgcolorb() { + _has_bits_[0] |= 0x00000080u; +} +inline void PageViewOptions::clear_has_bgcolorb() { + _has_bits_[0] &= ~0x00000080u; +} +inline void PageViewOptions::clear_bgcolorb() { + bgcolorb_ = 0; + clear_has_bgcolorb(); +} +inline ::google::protobuf::int32 PageViewOptions::bgcolorb() const { + return bgcolorb_; +} +inline void PageViewOptions::set_bgcolorb(::google::protobuf::int32 value) { + set_has_bgcolorb(); + bgcolorb_ = value; +} + +// optional int32 bgStartColorR = 9; +inline bool PageViewOptions::has_bgstartcolorr() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void PageViewOptions::set_has_bgstartcolorr() { + _has_bits_[0] |= 0x00000100u; +} +inline void PageViewOptions::clear_has_bgstartcolorr() { + _has_bits_[0] &= ~0x00000100u; +} +inline void PageViewOptions::clear_bgstartcolorr() { + bgstartcolorr_ = 0; + clear_has_bgstartcolorr(); +} +inline ::google::protobuf::int32 PageViewOptions::bgstartcolorr() const { + return bgstartcolorr_; +} +inline void PageViewOptions::set_bgstartcolorr(::google::protobuf::int32 value) { + set_has_bgstartcolorr(); + bgstartcolorr_ = value; +} + +// optional int32 bgStartColorG = 10; +inline bool PageViewOptions::has_bgstartcolorg() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void PageViewOptions::set_has_bgstartcolorg() { + _has_bits_[0] |= 0x00000200u; +} +inline void PageViewOptions::clear_has_bgstartcolorg() { + _has_bits_[0] &= ~0x00000200u; +} +inline void PageViewOptions::clear_bgstartcolorg() { + bgstartcolorg_ = 0; + clear_has_bgstartcolorg(); +} +inline ::google::protobuf::int32 PageViewOptions::bgstartcolorg() const { + return bgstartcolorg_; +} +inline void PageViewOptions::set_bgstartcolorg(::google::protobuf::int32 value) { + set_has_bgstartcolorg(); + bgstartcolorg_ = value; +} + +// optional int32 bgStartColorB = 11; +inline bool PageViewOptions::has_bgstartcolorb() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void PageViewOptions::set_has_bgstartcolorb() { + _has_bits_[0] |= 0x00000400u; +} +inline void PageViewOptions::clear_has_bgstartcolorb() { + _has_bits_[0] &= ~0x00000400u; +} +inline void PageViewOptions::clear_bgstartcolorb() { + bgstartcolorb_ = 0; + clear_has_bgstartcolorb(); +} +inline ::google::protobuf::int32 PageViewOptions::bgstartcolorb() const { + return bgstartcolorb_; +} +inline void PageViewOptions::set_bgstartcolorb(::google::protobuf::int32 value) { + set_has_bgstartcolorb(); + bgstartcolorb_ = value; +} + +// optional int32 bgEndColorR = 12; +inline bool PageViewOptions::has_bgendcolorr() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void PageViewOptions::set_has_bgendcolorr() { + _has_bits_[0] |= 0x00000800u; +} +inline void PageViewOptions::clear_has_bgendcolorr() { + _has_bits_[0] &= ~0x00000800u; +} +inline void PageViewOptions::clear_bgendcolorr() { + bgendcolorr_ = 0; + clear_has_bgendcolorr(); +} +inline ::google::protobuf::int32 PageViewOptions::bgendcolorr() const { + return bgendcolorr_; +} +inline void PageViewOptions::set_bgendcolorr(::google::protobuf::int32 value) { + set_has_bgendcolorr(); + bgendcolorr_ = value; +} + +// optional int32 bgEndColorG = 13; +inline bool PageViewOptions::has_bgendcolorg() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void PageViewOptions::set_has_bgendcolorg() { + _has_bits_[0] |= 0x00001000u; +} +inline void PageViewOptions::clear_has_bgendcolorg() { + _has_bits_[0] &= ~0x00001000u; +} +inline void PageViewOptions::clear_bgendcolorg() { + bgendcolorg_ = 0; + clear_has_bgendcolorg(); +} +inline ::google::protobuf::int32 PageViewOptions::bgendcolorg() const { + return bgendcolorg_; +} +inline void PageViewOptions::set_bgendcolorg(::google::protobuf::int32 value) { + set_has_bgendcolorg(); + bgendcolorg_ = value; +} + +// optional int32 bgEndColorB = 14; +inline bool PageViewOptions::has_bgendcolorb() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void PageViewOptions::set_has_bgendcolorb() { + _has_bits_[0] |= 0x00002000u; +} +inline void PageViewOptions::clear_has_bgendcolorb() { + _has_bits_[0] &= ~0x00002000u; +} +inline void PageViewOptions::clear_bgendcolorb() { + bgendcolorb_ = 0; + clear_has_bgendcolorb(); +} +inline ::google::protobuf::int32 PageViewOptions::bgendcolorb() const { + return bgendcolorb_; +} +inline void PageViewOptions::set_bgendcolorb(::google::protobuf::int32 value) { + set_has_bgendcolorb(); + bgendcolorb_ = value; +} + +// optional int32 colorType = 15; +inline bool PageViewOptions::has_colortype() const { + return (_has_bits_[0] & 0x00004000u) != 0; +} +inline void PageViewOptions::set_has_colortype() { + _has_bits_[0] |= 0x00004000u; +} +inline void PageViewOptions::clear_has_colortype() { + _has_bits_[0] &= ~0x00004000u; +} +inline void PageViewOptions::clear_colortype() { + colortype_ = 0; + clear_has_colortype(); +} +inline ::google::protobuf::int32 PageViewOptions::colortype() const { + return colortype_; +} +inline void PageViewOptions::set_colortype(::google::protobuf::int32 value) { + set_has_colortype(); + colortype_ = value; +} + +// optional int32 bgColorOpacity = 16; +inline bool PageViewOptions::has_bgcoloropacity() const { + return (_has_bits_[0] & 0x00008000u) != 0; +} +inline void PageViewOptions::set_has_bgcoloropacity() { + _has_bits_[0] |= 0x00008000u; +} +inline void PageViewOptions::clear_has_bgcoloropacity() { + _has_bits_[0] &= ~0x00008000u; +} +inline void PageViewOptions::clear_bgcoloropacity() { + bgcoloropacity_ = 0; + clear_has_bgcoloropacity(); +} +inline ::google::protobuf::int32 PageViewOptions::bgcoloropacity() const { + return bgcoloropacity_; +} +inline void PageViewOptions::set_bgcoloropacity(::google::protobuf::int32 value) { + set_has_bgcoloropacity(); + bgcoloropacity_ = value; +} + +// optional float vectorX = 17; +inline bool PageViewOptions::has_vectorx() const { + return (_has_bits_[0] & 0x00010000u) != 0; +} +inline void PageViewOptions::set_has_vectorx() { + _has_bits_[0] |= 0x00010000u; +} +inline void PageViewOptions::clear_has_vectorx() { + _has_bits_[0] &= ~0x00010000u; +} +inline void PageViewOptions::clear_vectorx() { + vectorx_ = 0; + clear_has_vectorx(); +} +inline float PageViewOptions::vectorx() const { + return vectorx_; +} +inline void PageViewOptions::set_vectorx(float value) { + set_has_vectorx(); + vectorx_ = value; +} + +// optional float vectorY = 18; +inline bool PageViewOptions::has_vectory() const { + return (_has_bits_[0] & 0x00020000u) != 0; +} +inline void PageViewOptions::set_has_vectory() { + _has_bits_[0] |= 0x00020000u; +} +inline void PageViewOptions::clear_has_vectory() { + _has_bits_[0] &= ~0x00020000u; +} +inline void PageViewOptions::clear_vectory() { + vectory_ = 0; + clear_has_vectory(); +} +inline float PageViewOptions::vectory() const { + return vectory_; +} +inline void PageViewOptions::set_vectory(float value) { + set_has_vectory(); + vectory_ = value; +} + +// optional float capInsetsX = 19; +inline bool PageViewOptions::has_capinsetsx() const { + return (_has_bits_[0] & 0x00040000u) != 0; +} +inline void PageViewOptions::set_has_capinsetsx() { + _has_bits_[0] |= 0x00040000u; +} +inline void PageViewOptions::clear_has_capinsetsx() { + _has_bits_[0] &= ~0x00040000u; +} +inline void PageViewOptions::clear_capinsetsx() { + capinsetsx_ = 0; + clear_has_capinsetsx(); +} +inline float PageViewOptions::capinsetsx() const { + return capinsetsx_; +} +inline void PageViewOptions::set_capinsetsx(float value) { + set_has_capinsetsx(); + capinsetsx_ = value; +} + +// optional float capInsetsY = 20; +inline bool PageViewOptions::has_capinsetsy() const { + return (_has_bits_[0] & 0x00080000u) != 0; +} +inline void PageViewOptions::set_has_capinsetsy() { + _has_bits_[0] |= 0x00080000u; +} +inline void PageViewOptions::clear_has_capinsetsy() { + _has_bits_[0] &= ~0x00080000u; +} +inline void PageViewOptions::clear_capinsetsy() { + capinsetsy_ = 0; + clear_has_capinsetsy(); +} +inline float PageViewOptions::capinsetsy() const { + return capinsetsy_; +} +inline void PageViewOptions::set_capinsetsy(float value) { + set_has_capinsetsy(); + capinsetsy_ = value; +} + +// optional float capInsetsWidth = 21; +inline bool PageViewOptions::has_capinsetswidth() const { + return (_has_bits_[0] & 0x00100000u) != 0; +} +inline void PageViewOptions::set_has_capinsetswidth() { + _has_bits_[0] |= 0x00100000u; +} +inline void PageViewOptions::clear_has_capinsetswidth() { + _has_bits_[0] &= ~0x00100000u; +} +inline void PageViewOptions::clear_capinsetswidth() { + capinsetswidth_ = 0; + clear_has_capinsetswidth(); +} +inline float PageViewOptions::capinsetswidth() const { + return capinsetswidth_; +} +inline void PageViewOptions::set_capinsetswidth(float value) { + set_has_capinsetswidth(); + capinsetswidth_ = value; +} + +// optional float capInsetsHeight = 22; +inline bool PageViewOptions::has_capinsetsheight() const { + return (_has_bits_[0] & 0x00200000u) != 0; +} +inline void PageViewOptions::set_has_capinsetsheight() { + _has_bits_[0] |= 0x00200000u; +} +inline void PageViewOptions::clear_has_capinsetsheight() { + _has_bits_[0] &= ~0x00200000u; +} +inline void PageViewOptions::clear_capinsetsheight() { + capinsetsheight_ = 0; + clear_has_capinsetsheight(); +} +inline float PageViewOptions::capinsetsheight() const { + return capinsetsheight_; +} +inline void PageViewOptions::set_capinsetsheight(float value) { + set_has_capinsetsheight(); + capinsetsheight_ = value; +} + +// optional bool backGroundScale9Enable = 23; +inline bool PageViewOptions::has_backgroundscale9enable() const { + return (_has_bits_[0] & 0x00400000u) != 0; +} +inline void PageViewOptions::set_has_backgroundscale9enable() { + _has_bits_[0] |= 0x00400000u; +} +inline void PageViewOptions::clear_has_backgroundscale9enable() { + _has_bits_[0] &= ~0x00400000u; +} +inline void PageViewOptions::clear_backgroundscale9enable() { + backgroundscale9enable_ = false; + clear_has_backgroundscale9enable(); +} +inline bool PageViewOptions::backgroundscale9enable() const { + return backgroundscale9enable_; +} +inline void PageViewOptions::set_backgroundscale9enable(bool value) { + set_has_backgroundscale9enable(); + backgroundscale9enable_ = value; +} + +// optional float scale9Width = 24; +inline bool PageViewOptions::has_scale9width() const { + return (_has_bits_[0] & 0x00800000u) != 0; +} +inline void PageViewOptions::set_has_scale9width() { + _has_bits_[0] |= 0x00800000u; +} +inline void PageViewOptions::clear_has_scale9width() { + _has_bits_[0] &= ~0x00800000u; +} +inline void PageViewOptions::clear_scale9width() { + scale9width_ = 0; + clear_has_scale9width(); +} +inline float PageViewOptions::scale9width() const { + return scale9width_; +} +inline void PageViewOptions::set_scale9width(float value) { + set_has_scale9width(); + scale9width_ = value; +} + +// optional float scale9Height = 25; +inline bool PageViewOptions::has_scale9height() const { + return (_has_bits_[0] & 0x01000000u) != 0; +} +inline void PageViewOptions::set_has_scale9height() { + _has_bits_[0] |= 0x01000000u; +} +inline void PageViewOptions::clear_has_scale9height() { + _has_bits_[0] &= ~0x01000000u; +} +inline void PageViewOptions::clear_scale9height() { + scale9height_ = 0; + clear_has_scale9height(); +} +inline float PageViewOptions::scale9height() const { + return scale9height_; +} +inline void PageViewOptions::set_scale9height(float value) { + set_has_scale9height(); + scale9height_ = value; +} + +// ------------------------------------------------------------------- + +// PanelOptions + +// optional string name = 1; +inline bool PanelOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void PanelOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void PanelOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void PanelOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& PanelOptions::name() const { + return *name_; +} +inline void PanelOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void PanelOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void PanelOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* PanelOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* PanelOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void PanelOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool PanelOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void PanelOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void PanelOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void PanelOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& PanelOptions::classname() const { + return *classname_; +} +inline void PanelOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void PanelOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void PanelOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* PanelOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* PanelOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void PanelOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string backGroundImage = 3; +inline bool PanelOptions::has_backgroundimage() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void PanelOptions::set_has_backgroundimage() { + _has_bits_[0] |= 0x00000004u; +} +inline void PanelOptions::clear_has_backgroundimage() { + _has_bits_[0] &= ~0x00000004u; +} +inline void PanelOptions::clear_backgroundimage() { + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + backgroundimage_->clear(); + } + clear_has_backgroundimage(); +} +inline const ::std::string& PanelOptions::backgroundimage() const { + return *backgroundimage_; +} +inline void PanelOptions::set_backgroundimage(const ::std::string& value) { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + backgroundimage_->assign(value); +} +inline void PanelOptions::set_backgroundimage(const char* value) { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + backgroundimage_->assign(value); +} +inline void PanelOptions::set_backgroundimage(const char* value, size_t size) { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + backgroundimage_->assign(reinterpret_cast(value), size); +} +inline ::std::string* PanelOptions::mutable_backgroundimage() { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + return backgroundimage_; +} +inline ::std::string* PanelOptions::release_backgroundimage() { + clear_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = backgroundimage_; + backgroundimage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void PanelOptions::set_allocated_backgroundimage(::std::string* backgroundimage) { + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundimage_; + } + if (backgroundimage) { + set_has_backgroundimage(); + backgroundimage_ = backgroundimage; + } else { + clear_has_backgroundimage(); + backgroundimage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData backGroundImageData = 4; +inline bool PanelOptions::has_backgroundimagedata() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void PanelOptions::set_has_backgroundimagedata() { + _has_bits_[0] |= 0x00000008u; +} +inline void PanelOptions::clear_has_backgroundimagedata() { + _has_bits_[0] &= ~0x00000008u; +} +inline void PanelOptions::clear_backgroundimagedata() { + if (backgroundimagedata_ != NULL) backgroundimagedata_->::protocolbuffers::ResourceData::Clear(); + clear_has_backgroundimagedata(); +} +inline const ::protocolbuffers::ResourceData& PanelOptions::backgroundimagedata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return backgroundimagedata_ != NULL ? *backgroundimagedata_ : *default_instance().backgroundimagedata_; +#else + return backgroundimagedata_ != NULL ? *backgroundimagedata_ : *default_instance_->backgroundimagedata_; +#endif +} +inline ::protocolbuffers::ResourceData* PanelOptions::mutable_backgroundimagedata() { + set_has_backgroundimagedata(); + if (backgroundimagedata_ == NULL) backgroundimagedata_ = new ::protocolbuffers::ResourceData; + return backgroundimagedata_; +} +inline ::protocolbuffers::ResourceData* PanelOptions::release_backgroundimagedata() { + clear_has_backgroundimagedata(); + ::protocolbuffers::ResourceData* temp = backgroundimagedata_; + backgroundimagedata_ = NULL; + return temp; +} +inline void PanelOptions::set_allocated_backgroundimagedata(::protocolbuffers::ResourceData* backgroundimagedata) { + delete backgroundimagedata_; + backgroundimagedata_ = backgroundimagedata; + if (backgroundimagedata) { + set_has_backgroundimagedata(); + } else { + clear_has_backgroundimagedata(); + } +} + +// optional bool clipAble = 5; +inline bool PanelOptions::has_clipable() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void PanelOptions::set_has_clipable() { + _has_bits_[0] |= 0x00000010u; +} +inline void PanelOptions::clear_has_clipable() { + _has_bits_[0] &= ~0x00000010u; +} +inline void PanelOptions::clear_clipable() { + clipable_ = false; + clear_has_clipable(); +} +inline bool PanelOptions::clipable() const { + return clipable_; +} +inline void PanelOptions::set_clipable(bool value) { + set_has_clipable(); + clipable_ = value; +} + +// optional int32 bgColorR = 6; +inline bool PanelOptions::has_bgcolorr() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void PanelOptions::set_has_bgcolorr() { + _has_bits_[0] |= 0x00000020u; +} +inline void PanelOptions::clear_has_bgcolorr() { + _has_bits_[0] &= ~0x00000020u; +} +inline void PanelOptions::clear_bgcolorr() { + bgcolorr_ = 0; + clear_has_bgcolorr(); +} +inline ::google::protobuf::int32 PanelOptions::bgcolorr() const { + return bgcolorr_; +} +inline void PanelOptions::set_bgcolorr(::google::protobuf::int32 value) { + set_has_bgcolorr(); + bgcolorr_ = value; +} + +// optional int32 bgColorG = 7; +inline bool PanelOptions::has_bgcolorg() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void PanelOptions::set_has_bgcolorg() { + _has_bits_[0] |= 0x00000040u; +} +inline void PanelOptions::clear_has_bgcolorg() { + _has_bits_[0] &= ~0x00000040u; +} +inline void PanelOptions::clear_bgcolorg() { + bgcolorg_ = 0; + clear_has_bgcolorg(); +} +inline ::google::protobuf::int32 PanelOptions::bgcolorg() const { + return bgcolorg_; +} +inline void PanelOptions::set_bgcolorg(::google::protobuf::int32 value) { + set_has_bgcolorg(); + bgcolorg_ = value; +} + +// optional int32 bgColorB = 8; +inline bool PanelOptions::has_bgcolorb() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void PanelOptions::set_has_bgcolorb() { + _has_bits_[0] |= 0x00000080u; +} +inline void PanelOptions::clear_has_bgcolorb() { + _has_bits_[0] &= ~0x00000080u; +} +inline void PanelOptions::clear_bgcolorb() { + bgcolorb_ = 0; + clear_has_bgcolorb(); +} +inline ::google::protobuf::int32 PanelOptions::bgcolorb() const { + return bgcolorb_; +} +inline void PanelOptions::set_bgcolorb(::google::protobuf::int32 value) { + set_has_bgcolorb(); + bgcolorb_ = value; +} + +// optional int32 bgStartColorR = 9; +inline bool PanelOptions::has_bgstartcolorr() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void PanelOptions::set_has_bgstartcolorr() { + _has_bits_[0] |= 0x00000100u; +} +inline void PanelOptions::clear_has_bgstartcolorr() { + _has_bits_[0] &= ~0x00000100u; +} +inline void PanelOptions::clear_bgstartcolorr() { + bgstartcolorr_ = 0; + clear_has_bgstartcolorr(); +} +inline ::google::protobuf::int32 PanelOptions::bgstartcolorr() const { + return bgstartcolorr_; +} +inline void PanelOptions::set_bgstartcolorr(::google::protobuf::int32 value) { + set_has_bgstartcolorr(); + bgstartcolorr_ = value; +} + +// optional int32 bgStartColorG = 10; +inline bool PanelOptions::has_bgstartcolorg() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void PanelOptions::set_has_bgstartcolorg() { + _has_bits_[0] |= 0x00000200u; +} +inline void PanelOptions::clear_has_bgstartcolorg() { + _has_bits_[0] &= ~0x00000200u; +} +inline void PanelOptions::clear_bgstartcolorg() { + bgstartcolorg_ = 0; + clear_has_bgstartcolorg(); +} +inline ::google::protobuf::int32 PanelOptions::bgstartcolorg() const { + return bgstartcolorg_; +} +inline void PanelOptions::set_bgstartcolorg(::google::protobuf::int32 value) { + set_has_bgstartcolorg(); + bgstartcolorg_ = value; +} + +// optional int32 bgStartColorB = 11; +inline bool PanelOptions::has_bgstartcolorb() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void PanelOptions::set_has_bgstartcolorb() { + _has_bits_[0] |= 0x00000400u; +} +inline void PanelOptions::clear_has_bgstartcolorb() { + _has_bits_[0] &= ~0x00000400u; +} +inline void PanelOptions::clear_bgstartcolorb() { + bgstartcolorb_ = 0; + clear_has_bgstartcolorb(); +} +inline ::google::protobuf::int32 PanelOptions::bgstartcolorb() const { + return bgstartcolorb_; +} +inline void PanelOptions::set_bgstartcolorb(::google::protobuf::int32 value) { + set_has_bgstartcolorb(); + bgstartcolorb_ = value; +} + +// optional int32 bgEndColorR = 12; +inline bool PanelOptions::has_bgendcolorr() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void PanelOptions::set_has_bgendcolorr() { + _has_bits_[0] |= 0x00000800u; +} +inline void PanelOptions::clear_has_bgendcolorr() { + _has_bits_[0] &= ~0x00000800u; +} +inline void PanelOptions::clear_bgendcolorr() { + bgendcolorr_ = 0; + clear_has_bgendcolorr(); +} +inline ::google::protobuf::int32 PanelOptions::bgendcolorr() const { + return bgendcolorr_; +} +inline void PanelOptions::set_bgendcolorr(::google::protobuf::int32 value) { + set_has_bgendcolorr(); + bgendcolorr_ = value; +} + +// optional int32 bgEndColorG = 13; +inline bool PanelOptions::has_bgendcolorg() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void PanelOptions::set_has_bgendcolorg() { + _has_bits_[0] |= 0x00001000u; +} +inline void PanelOptions::clear_has_bgendcolorg() { + _has_bits_[0] &= ~0x00001000u; +} +inline void PanelOptions::clear_bgendcolorg() { + bgendcolorg_ = 0; + clear_has_bgendcolorg(); +} +inline ::google::protobuf::int32 PanelOptions::bgendcolorg() const { + return bgendcolorg_; +} +inline void PanelOptions::set_bgendcolorg(::google::protobuf::int32 value) { + set_has_bgendcolorg(); + bgendcolorg_ = value; +} + +// optional int32 bgEndColorB = 14; +inline bool PanelOptions::has_bgendcolorb() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void PanelOptions::set_has_bgendcolorb() { + _has_bits_[0] |= 0x00002000u; +} +inline void PanelOptions::clear_has_bgendcolorb() { + _has_bits_[0] &= ~0x00002000u; +} +inline void PanelOptions::clear_bgendcolorb() { + bgendcolorb_ = 0; + clear_has_bgendcolorb(); +} +inline ::google::protobuf::int32 PanelOptions::bgendcolorb() const { + return bgendcolorb_; +} +inline void PanelOptions::set_bgendcolorb(::google::protobuf::int32 value) { + set_has_bgendcolorb(); + bgendcolorb_ = value; +} + +// optional int32 colorType = 15; +inline bool PanelOptions::has_colortype() const { + return (_has_bits_[0] & 0x00004000u) != 0; +} +inline void PanelOptions::set_has_colortype() { + _has_bits_[0] |= 0x00004000u; +} +inline void PanelOptions::clear_has_colortype() { + _has_bits_[0] &= ~0x00004000u; +} +inline void PanelOptions::clear_colortype() { + colortype_ = 0; + clear_has_colortype(); +} +inline ::google::protobuf::int32 PanelOptions::colortype() const { + return colortype_; +} +inline void PanelOptions::set_colortype(::google::protobuf::int32 value) { + set_has_colortype(); + colortype_ = value; +} + +// optional int32 bgColorOpacity = 16; +inline bool PanelOptions::has_bgcoloropacity() const { + return (_has_bits_[0] & 0x00008000u) != 0; +} +inline void PanelOptions::set_has_bgcoloropacity() { + _has_bits_[0] |= 0x00008000u; +} +inline void PanelOptions::clear_has_bgcoloropacity() { + _has_bits_[0] &= ~0x00008000u; +} +inline void PanelOptions::clear_bgcoloropacity() { + bgcoloropacity_ = 0; + clear_has_bgcoloropacity(); +} +inline ::google::protobuf::int32 PanelOptions::bgcoloropacity() const { + return bgcoloropacity_; +} +inline void PanelOptions::set_bgcoloropacity(::google::protobuf::int32 value) { + set_has_bgcoloropacity(); + bgcoloropacity_ = value; +} + +// optional float vectorX = 17; +inline bool PanelOptions::has_vectorx() const { + return (_has_bits_[0] & 0x00010000u) != 0; +} +inline void PanelOptions::set_has_vectorx() { + _has_bits_[0] |= 0x00010000u; +} +inline void PanelOptions::clear_has_vectorx() { + _has_bits_[0] &= ~0x00010000u; +} +inline void PanelOptions::clear_vectorx() { + vectorx_ = 0; + clear_has_vectorx(); +} +inline float PanelOptions::vectorx() const { + return vectorx_; +} +inline void PanelOptions::set_vectorx(float value) { + set_has_vectorx(); + vectorx_ = value; +} + +// optional float vectorY = 18; +inline bool PanelOptions::has_vectory() const { + return (_has_bits_[0] & 0x00020000u) != 0; +} +inline void PanelOptions::set_has_vectory() { + _has_bits_[0] |= 0x00020000u; +} +inline void PanelOptions::clear_has_vectory() { + _has_bits_[0] &= ~0x00020000u; +} +inline void PanelOptions::clear_vectory() { + vectory_ = 0; + clear_has_vectory(); +} +inline float PanelOptions::vectory() const { + return vectory_; +} +inline void PanelOptions::set_vectory(float value) { + set_has_vectory(); + vectory_ = value; +} + +// optional float capInsetsX = 19; +inline bool PanelOptions::has_capinsetsx() const { + return (_has_bits_[0] & 0x00040000u) != 0; +} +inline void PanelOptions::set_has_capinsetsx() { + _has_bits_[0] |= 0x00040000u; +} +inline void PanelOptions::clear_has_capinsetsx() { + _has_bits_[0] &= ~0x00040000u; +} +inline void PanelOptions::clear_capinsetsx() { + capinsetsx_ = 0; + clear_has_capinsetsx(); +} +inline float PanelOptions::capinsetsx() const { + return capinsetsx_; +} +inline void PanelOptions::set_capinsetsx(float value) { + set_has_capinsetsx(); + capinsetsx_ = value; +} + +// optional float capInsetsY = 20; +inline bool PanelOptions::has_capinsetsy() const { + return (_has_bits_[0] & 0x00080000u) != 0; +} +inline void PanelOptions::set_has_capinsetsy() { + _has_bits_[0] |= 0x00080000u; +} +inline void PanelOptions::clear_has_capinsetsy() { + _has_bits_[0] &= ~0x00080000u; +} +inline void PanelOptions::clear_capinsetsy() { + capinsetsy_ = 0; + clear_has_capinsetsy(); +} +inline float PanelOptions::capinsetsy() const { + return capinsetsy_; +} +inline void PanelOptions::set_capinsetsy(float value) { + set_has_capinsetsy(); + capinsetsy_ = value; +} + +// optional float capInsetsWidth = 21; +inline bool PanelOptions::has_capinsetswidth() const { + return (_has_bits_[0] & 0x00100000u) != 0; +} +inline void PanelOptions::set_has_capinsetswidth() { + _has_bits_[0] |= 0x00100000u; +} +inline void PanelOptions::clear_has_capinsetswidth() { + _has_bits_[0] &= ~0x00100000u; +} +inline void PanelOptions::clear_capinsetswidth() { + capinsetswidth_ = 0; + clear_has_capinsetswidth(); +} +inline float PanelOptions::capinsetswidth() const { + return capinsetswidth_; +} +inline void PanelOptions::set_capinsetswidth(float value) { + set_has_capinsetswidth(); + capinsetswidth_ = value; +} + +// optional float capInsetsHeight = 22; +inline bool PanelOptions::has_capinsetsheight() const { + return (_has_bits_[0] & 0x00200000u) != 0; +} +inline void PanelOptions::set_has_capinsetsheight() { + _has_bits_[0] |= 0x00200000u; +} +inline void PanelOptions::clear_has_capinsetsheight() { + _has_bits_[0] &= ~0x00200000u; +} +inline void PanelOptions::clear_capinsetsheight() { + capinsetsheight_ = 0; + clear_has_capinsetsheight(); +} +inline float PanelOptions::capinsetsheight() const { + return capinsetsheight_; +} +inline void PanelOptions::set_capinsetsheight(float value) { + set_has_capinsetsheight(); + capinsetsheight_ = value; +} + +// optional bool backGroundScale9Enable = 23; +inline bool PanelOptions::has_backgroundscale9enable() const { + return (_has_bits_[0] & 0x00400000u) != 0; +} +inline void PanelOptions::set_has_backgroundscale9enable() { + _has_bits_[0] |= 0x00400000u; +} +inline void PanelOptions::clear_has_backgroundscale9enable() { + _has_bits_[0] &= ~0x00400000u; +} +inline void PanelOptions::clear_backgroundscale9enable() { + backgroundscale9enable_ = false; + clear_has_backgroundscale9enable(); +} +inline bool PanelOptions::backgroundscale9enable() const { + return backgroundscale9enable_; +} +inline void PanelOptions::set_backgroundscale9enable(bool value) { + set_has_backgroundscale9enable(); + backgroundscale9enable_ = value; +} + +// optional int32 layoutType = 24; +inline bool PanelOptions::has_layouttype() const { + return (_has_bits_[0] & 0x00800000u) != 0; +} +inline void PanelOptions::set_has_layouttype() { + _has_bits_[0] |= 0x00800000u; +} +inline void PanelOptions::clear_has_layouttype() { + _has_bits_[0] &= ~0x00800000u; +} +inline void PanelOptions::clear_layouttype() { + layouttype_ = 0; + clear_has_layouttype(); +} +inline ::google::protobuf::int32 PanelOptions::layouttype() const { + return layouttype_; +} +inline void PanelOptions::set_layouttype(::google::protobuf::int32 value) { + set_has_layouttype(); + layouttype_ = value; +} + +// optional bool adaptScreen = 25; +inline bool PanelOptions::has_adaptscreen() const { + return (_has_bits_[0] & 0x01000000u) != 0; +} +inline void PanelOptions::set_has_adaptscreen() { + _has_bits_[0] |= 0x01000000u; +} +inline void PanelOptions::clear_has_adaptscreen() { + _has_bits_[0] &= ~0x01000000u; +} +inline void PanelOptions::clear_adaptscreen() { + adaptscreen_ = false; + clear_has_adaptscreen(); +} +inline bool PanelOptions::adaptscreen() const { + return adaptscreen_; +} +inline void PanelOptions::set_adaptscreen(bool value) { + set_has_adaptscreen(); + adaptscreen_ = value; +} + +// optional float scale9Width = 26; +inline bool PanelOptions::has_scale9width() const { + return (_has_bits_[0] & 0x02000000u) != 0; +} +inline void PanelOptions::set_has_scale9width() { + _has_bits_[0] |= 0x02000000u; +} +inline void PanelOptions::clear_has_scale9width() { + _has_bits_[0] &= ~0x02000000u; +} +inline void PanelOptions::clear_scale9width() { + scale9width_ = 0; + clear_has_scale9width(); +} +inline float PanelOptions::scale9width() const { + return scale9width_; +} +inline void PanelOptions::set_scale9width(float value) { + set_has_scale9width(); + scale9width_ = value; +} + +// optional float scale9Height = 27; +inline bool PanelOptions::has_scale9height() const { + return (_has_bits_[0] & 0x04000000u) != 0; +} +inline void PanelOptions::set_has_scale9height() { + _has_bits_[0] |= 0x04000000u; +} +inline void PanelOptions::clear_has_scale9height() { + _has_bits_[0] &= ~0x04000000u; +} +inline void PanelOptions::clear_scale9height() { + scale9height_ = 0; + clear_has_scale9height(); +} +inline float PanelOptions::scale9height() const { + return scale9height_; +} +inline void PanelOptions::set_scale9height(float value) { + set_has_scale9height(); + scale9height_ = value; +} + +// ------------------------------------------------------------------- + +// ScrollViewOptions + +// optional string name = 1; +inline bool ScrollViewOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ScrollViewOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void ScrollViewOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void ScrollViewOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& ScrollViewOptions::name() const { + return *name_; +} +inline void ScrollViewOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void ScrollViewOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void ScrollViewOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ScrollViewOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* ScrollViewOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ScrollViewOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool ScrollViewOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ScrollViewOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void ScrollViewOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void ScrollViewOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& ScrollViewOptions::classname() const { + return *classname_; +} +inline void ScrollViewOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void ScrollViewOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void ScrollViewOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ScrollViewOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* ScrollViewOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ScrollViewOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string backGroundImage = 3; +inline bool ScrollViewOptions::has_backgroundimage() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void ScrollViewOptions::set_has_backgroundimage() { + _has_bits_[0] |= 0x00000004u; +} +inline void ScrollViewOptions::clear_has_backgroundimage() { + _has_bits_[0] &= ~0x00000004u; +} +inline void ScrollViewOptions::clear_backgroundimage() { + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + backgroundimage_->clear(); + } + clear_has_backgroundimage(); +} +inline const ::std::string& ScrollViewOptions::backgroundimage() const { + return *backgroundimage_; +} +inline void ScrollViewOptions::set_backgroundimage(const ::std::string& value) { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + backgroundimage_->assign(value); +} +inline void ScrollViewOptions::set_backgroundimage(const char* value) { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + backgroundimage_->assign(value); +} +inline void ScrollViewOptions::set_backgroundimage(const char* value, size_t size) { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + backgroundimage_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ScrollViewOptions::mutable_backgroundimage() { + set_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + backgroundimage_ = new ::std::string; + } + return backgroundimage_; +} +inline ::std::string* ScrollViewOptions::release_backgroundimage() { + clear_has_backgroundimage(); + if (backgroundimage_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = backgroundimage_; + backgroundimage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ScrollViewOptions::set_allocated_backgroundimage(::std::string* backgroundimage) { + if (backgroundimage_ != &::google::protobuf::internal::kEmptyString) { + delete backgroundimage_; + } + if (backgroundimage) { + set_has_backgroundimage(); + backgroundimage_ = backgroundimage; + } else { + clear_has_backgroundimage(); + backgroundimage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData backGroundImageData = 4; +inline bool ScrollViewOptions::has_backgroundimagedata() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void ScrollViewOptions::set_has_backgroundimagedata() { + _has_bits_[0] |= 0x00000008u; +} +inline void ScrollViewOptions::clear_has_backgroundimagedata() { + _has_bits_[0] &= ~0x00000008u; +} +inline void ScrollViewOptions::clear_backgroundimagedata() { + if (backgroundimagedata_ != NULL) backgroundimagedata_->::protocolbuffers::ResourceData::Clear(); + clear_has_backgroundimagedata(); +} +inline const ::protocolbuffers::ResourceData& ScrollViewOptions::backgroundimagedata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return backgroundimagedata_ != NULL ? *backgroundimagedata_ : *default_instance().backgroundimagedata_; +#else + return backgroundimagedata_ != NULL ? *backgroundimagedata_ : *default_instance_->backgroundimagedata_; +#endif +} +inline ::protocolbuffers::ResourceData* ScrollViewOptions::mutable_backgroundimagedata() { + set_has_backgroundimagedata(); + if (backgroundimagedata_ == NULL) backgroundimagedata_ = new ::protocolbuffers::ResourceData; + return backgroundimagedata_; +} +inline ::protocolbuffers::ResourceData* ScrollViewOptions::release_backgroundimagedata() { + clear_has_backgroundimagedata(); + ::protocolbuffers::ResourceData* temp = backgroundimagedata_; + backgroundimagedata_ = NULL; + return temp; +} +inline void ScrollViewOptions::set_allocated_backgroundimagedata(::protocolbuffers::ResourceData* backgroundimagedata) { + delete backgroundimagedata_; + backgroundimagedata_ = backgroundimagedata; + if (backgroundimagedata) { + set_has_backgroundimagedata(); + } else { + clear_has_backgroundimagedata(); + } +} + +// optional int32 bgColorR = 5; +inline bool ScrollViewOptions::has_bgcolorr() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void ScrollViewOptions::set_has_bgcolorr() { + _has_bits_[0] |= 0x00000010u; +} +inline void ScrollViewOptions::clear_has_bgcolorr() { + _has_bits_[0] &= ~0x00000010u; +} +inline void ScrollViewOptions::clear_bgcolorr() { + bgcolorr_ = 0; + clear_has_bgcolorr(); +} +inline ::google::protobuf::int32 ScrollViewOptions::bgcolorr() const { + return bgcolorr_; +} +inline void ScrollViewOptions::set_bgcolorr(::google::protobuf::int32 value) { + set_has_bgcolorr(); + bgcolorr_ = value; +} + +// optional int32 bgColorG = 6; +inline bool ScrollViewOptions::has_bgcolorg() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void ScrollViewOptions::set_has_bgcolorg() { + _has_bits_[0] |= 0x00000020u; +} +inline void ScrollViewOptions::clear_has_bgcolorg() { + _has_bits_[0] &= ~0x00000020u; +} +inline void ScrollViewOptions::clear_bgcolorg() { + bgcolorg_ = 0; + clear_has_bgcolorg(); +} +inline ::google::protobuf::int32 ScrollViewOptions::bgcolorg() const { + return bgcolorg_; +} +inline void ScrollViewOptions::set_bgcolorg(::google::protobuf::int32 value) { + set_has_bgcolorg(); + bgcolorg_ = value; +} + +// optional int32 bgColorB = 7; +inline bool ScrollViewOptions::has_bgcolorb() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void ScrollViewOptions::set_has_bgcolorb() { + _has_bits_[0] |= 0x00000040u; +} +inline void ScrollViewOptions::clear_has_bgcolorb() { + _has_bits_[0] &= ~0x00000040u; +} +inline void ScrollViewOptions::clear_bgcolorb() { + bgcolorb_ = 0; + clear_has_bgcolorb(); +} +inline ::google::protobuf::int32 ScrollViewOptions::bgcolorb() const { + return bgcolorb_; +} +inline void ScrollViewOptions::set_bgcolorb(::google::protobuf::int32 value) { + set_has_bgcolorb(); + bgcolorb_ = value; +} + +// optional int32 bgStartColorR = 8; +inline bool ScrollViewOptions::has_bgstartcolorr() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void ScrollViewOptions::set_has_bgstartcolorr() { + _has_bits_[0] |= 0x00000080u; +} +inline void ScrollViewOptions::clear_has_bgstartcolorr() { + _has_bits_[0] &= ~0x00000080u; +} +inline void ScrollViewOptions::clear_bgstartcolorr() { + bgstartcolorr_ = 0; + clear_has_bgstartcolorr(); +} +inline ::google::protobuf::int32 ScrollViewOptions::bgstartcolorr() const { + return bgstartcolorr_; +} +inline void ScrollViewOptions::set_bgstartcolorr(::google::protobuf::int32 value) { + set_has_bgstartcolorr(); + bgstartcolorr_ = value; +} + +// optional int32 bgStartColorG = 9; +inline bool ScrollViewOptions::has_bgstartcolorg() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void ScrollViewOptions::set_has_bgstartcolorg() { + _has_bits_[0] |= 0x00000100u; +} +inline void ScrollViewOptions::clear_has_bgstartcolorg() { + _has_bits_[0] &= ~0x00000100u; +} +inline void ScrollViewOptions::clear_bgstartcolorg() { + bgstartcolorg_ = 0; + clear_has_bgstartcolorg(); +} +inline ::google::protobuf::int32 ScrollViewOptions::bgstartcolorg() const { + return bgstartcolorg_; +} +inline void ScrollViewOptions::set_bgstartcolorg(::google::protobuf::int32 value) { + set_has_bgstartcolorg(); + bgstartcolorg_ = value; +} + +// optional int32 bgStartColorB = 10; +inline bool ScrollViewOptions::has_bgstartcolorb() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void ScrollViewOptions::set_has_bgstartcolorb() { + _has_bits_[0] |= 0x00000200u; +} +inline void ScrollViewOptions::clear_has_bgstartcolorb() { + _has_bits_[0] &= ~0x00000200u; +} +inline void ScrollViewOptions::clear_bgstartcolorb() { + bgstartcolorb_ = 0; + clear_has_bgstartcolorb(); +} +inline ::google::protobuf::int32 ScrollViewOptions::bgstartcolorb() const { + return bgstartcolorb_; +} +inline void ScrollViewOptions::set_bgstartcolorb(::google::protobuf::int32 value) { + set_has_bgstartcolorb(); + bgstartcolorb_ = value; +} + +// optional int32 bgEndColorR = 11; +inline bool ScrollViewOptions::has_bgendcolorr() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void ScrollViewOptions::set_has_bgendcolorr() { + _has_bits_[0] |= 0x00000400u; +} +inline void ScrollViewOptions::clear_has_bgendcolorr() { + _has_bits_[0] &= ~0x00000400u; +} +inline void ScrollViewOptions::clear_bgendcolorr() { + bgendcolorr_ = 0; + clear_has_bgendcolorr(); +} +inline ::google::protobuf::int32 ScrollViewOptions::bgendcolorr() const { + return bgendcolorr_; +} +inline void ScrollViewOptions::set_bgendcolorr(::google::protobuf::int32 value) { + set_has_bgendcolorr(); + bgendcolorr_ = value; +} + +// optional int32 bgEndColorG = 12; +inline bool ScrollViewOptions::has_bgendcolorg() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void ScrollViewOptions::set_has_bgendcolorg() { + _has_bits_[0] |= 0x00000800u; +} +inline void ScrollViewOptions::clear_has_bgendcolorg() { + _has_bits_[0] &= ~0x00000800u; +} +inline void ScrollViewOptions::clear_bgendcolorg() { + bgendcolorg_ = 0; + clear_has_bgendcolorg(); +} +inline ::google::protobuf::int32 ScrollViewOptions::bgendcolorg() const { + return bgendcolorg_; +} +inline void ScrollViewOptions::set_bgendcolorg(::google::protobuf::int32 value) { + set_has_bgendcolorg(); + bgendcolorg_ = value; +} + +// optional int32 bgEndColorB = 13; +inline bool ScrollViewOptions::has_bgendcolorb() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void ScrollViewOptions::set_has_bgendcolorb() { + _has_bits_[0] |= 0x00001000u; +} +inline void ScrollViewOptions::clear_has_bgendcolorb() { + _has_bits_[0] &= ~0x00001000u; +} +inline void ScrollViewOptions::clear_bgendcolorb() { + bgendcolorb_ = 0; + clear_has_bgendcolorb(); +} +inline ::google::protobuf::int32 ScrollViewOptions::bgendcolorb() const { + return bgendcolorb_; +} +inline void ScrollViewOptions::set_bgendcolorb(::google::protobuf::int32 value) { + set_has_bgendcolorb(); + bgendcolorb_ = value; +} + +// optional int32 colorType = 14; +inline bool ScrollViewOptions::has_colortype() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void ScrollViewOptions::set_has_colortype() { + _has_bits_[0] |= 0x00002000u; +} +inline void ScrollViewOptions::clear_has_colortype() { + _has_bits_[0] &= ~0x00002000u; +} +inline void ScrollViewOptions::clear_colortype() { + colortype_ = 0; + clear_has_colortype(); +} +inline ::google::protobuf::int32 ScrollViewOptions::colortype() const { + return colortype_; +} +inline void ScrollViewOptions::set_colortype(::google::protobuf::int32 value) { + set_has_colortype(); + colortype_ = value; +} + +// optional int32 bgColorOpacity = 15; +inline bool ScrollViewOptions::has_bgcoloropacity() const { + return (_has_bits_[0] & 0x00004000u) != 0; +} +inline void ScrollViewOptions::set_has_bgcoloropacity() { + _has_bits_[0] |= 0x00004000u; +} +inline void ScrollViewOptions::clear_has_bgcoloropacity() { + _has_bits_[0] &= ~0x00004000u; +} +inline void ScrollViewOptions::clear_bgcoloropacity() { + bgcoloropacity_ = 0; + clear_has_bgcoloropacity(); +} +inline ::google::protobuf::int32 ScrollViewOptions::bgcoloropacity() const { + return bgcoloropacity_; +} +inline void ScrollViewOptions::set_bgcoloropacity(::google::protobuf::int32 value) { + set_has_bgcoloropacity(); + bgcoloropacity_ = value; +} + +// optional float vectorX = 16; +inline bool ScrollViewOptions::has_vectorx() const { + return (_has_bits_[0] & 0x00008000u) != 0; +} +inline void ScrollViewOptions::set_has_vectorx() { + _has_bits_[0] |= 0x00008000u; +} +inline void ScrollViewOptions::clear_has_vectorx() { + _has_bits_[0] &= ~0x00008000u; +} +inline void ScrollViewOptions::clear_vectorx() { + vectorx_ = 0; + clear_has_vectorx(); +} +inline float ScrollViewOptions::vectorx() const { + return vectorx_; +} +inline void ScrollViewOptions::set_vectorx(float value) { + set_has_vectorx(); + vectorx_ = value; +} + +// optional float vectorY = 17; +inline bool ScrollViewOptions::has_vectory() const { + return (_has_bits_[0] & 0x00010000u) != 0; +} +inline void ScrollViewOptions::set_has_vectory() { + _has_bits_[0] |= 0x00010000u; +} +inline void ScrollViewOptions::clear_has_vectory() { + _has_bits_[0] &= ~0x00010000u; +} +inline void ScrollViewOptions::clear_vectory() { + vectory_ = 0; + clear_has_vectory(); +} +inline float ScrollViewOptions::vectory() const { + return vectory_; +} +inline void ScrollViewOptions::set_vectory(float value) { + set_has_vectory(); + vectory_ = value; +} + +// optional float capInsetsX = 18; +inline bool ScrollViewOptions::has_capinsetsx() const { + return (_has_bits_[0] & 0x00020000u) != 0; +} +inline void ScrollViewOptions::set_has_capinsetsx() { + _has_bits_[0] |= 0x00020000u; +} +inline void ScrollViewOptions::clear_has_capinsetsx() { + _has_bits_[0] &= ~0x00020000u; +} +inline void ScrollViewOptions::clear_capinsetsx() { + capinsetsx_ = 0; + clear_has_capinsetsx(); +} +inline float ScrollViewOptions::capinsetsx() const { + return capinsetsx_; +} +inline void ScrollViewOptions::set_capinsetsx(float value) { + set_has_capinsetsx(); + capinsetsx_ = value; +} + +// optional float capInsetsY = 19; +inline bool ScrollViewOptions::has_capinsetsy() const { + return (_has_bits_[0] & 0x00040000u) != 0; +} +inline void ScrollViewOptions::set_has_capinsetsy() { + _has_bits_[0] |= 0x00040000u; +} +inline void ScrollViewOptions::clear_has_capinsetsy() { + _has_bits_[0] &= ~0x00040000u; +} +inline void ScrollViewOptions::clear_capinsetsy() { + capinsetsy_ = 0; + clear_has_capinsetsy(); +} +inline float ScrollViewOptions::capinsetsy() const { + return capinsetsy_; +} +inline void ScrollViewOptions::set_capinsetsy(float value) { + set_has_capinsetsy(); + capinsetsy_ = value; +} + +// optional float capInsetsWidth = 20; +inline bool ScrollViewOptions::has_capinsetswidth() const { + return (_has_bits_[0] & 0x00080000u) != 0; +} +inline void ScrollViewOptions::set_has_capinsetswidth() { + _has_bits_[0] |= 0x00080000u; +} +inline void ScrollViewOptions::clear_has_capinsetswidth() { + _has_bits_[0] &= ~0x00080000u; +} +inline void ScrollViewOptions::clear_capinsetswidth() { + capinsetswidth_ = 0; + clear_has_capinsetswidth(); +} +inline float ScrollViewOptions::capinsetswidth() const { + return capinsetswidth_; +} +inline void ScrollViewOptions::set_capinsetswidth(float value) { + set_has_capinsetswidth(); + capinsetswidth_ = value; +} + +// optional float capInsetsHeight = 21; +inline bool ScrollViewOptions::has_capinsetsheight() const { + return (_has_bits_[0] & 0x00100000u) != 0; +} +inline void ScrollViewOptions::set_has_capinsetsheight() { + _has_bits_[0] |= 0x00100000u; +} +inline void ScrollViewOptions::clear_has_capinsetsheight() { + _has_bits_[0] &= ~0x00100000u; +} +inline void ScrollViewOptions::clear_capinsetsheight() { + capinsetsheight_ = 0; + clear_has_capinsetsheight(); +} +inline float ScrollViewOptions::capinsetsheight() const { + return capinsetsheight_; +} +inline void ScrollViewOptions::set_capinsetsheight(float value) { + set_has_capinsetsheight(); + capinsetsheight_ = value; +} + +// optional bool backGroundScale9Enable = 22; +inline bool ScrollViewOptions::has_backgroundscale9enable() const { + return (_has_bits_[0] & 0x00200000u) != 0; +} +inline void ScrollViewOptions::set_has_backgroundscale9enable() { + _has_bits_[0] |= 0x00200000u; +} +inline void ScrollViewOptions::clear_has_backgroundscale9enable() { + _has_bits_[0] &= ~0x00200000u; +} +inline void ScrollViewOptions::clear_backgroundscale9enable() { + backgroundscale9enable_ = false; + clear_has_backgroundscale9enable(); +} +inline bool ScrollViewOptions::backgroundscale9enable() const { + return backgroundscale9enable_; +} +inline void ScrollViewOptions::set_backgroundscale9enable(bool value) { + set_has_backgroundscale9enable(); + backgroundscale9enable_ = value; +} + +// optional float innerWidth = 23; +inline bool ScrollViewOptions::has_innerwidth() const { + return (_has_bits_[0] & 0x00400000u) != 0; +} +inline void ScrollViewOptions::set_has_innerwidth() { + _has_bits_[0] |= 0x00400000u; +} +inline void ScrollViewOptions::clear_has_innerwidth() { + _has_bits_[0] &= ~0x00400000u; +} +inline void ScrollViewOptions::clear_innerwidth() { + innerwidth_ = 0; + clear_has_innerwidth(); +} +inline float ScrollViewOptions::innerwidth() const { + return innerwidth_; +} +inline void ScrollViewOptions::set_innerwidth(float value) { + set_has_innerwidth(); + innerwidth_ = value; +} + +// optional float innerHeight = 24; +inline bool ScrollViewOptions::has_innerheight() const { + return (_has_bits_[0] & 0x00800000u) != 0; +} +inline void ScrollViewOptions::set_has_innerheight() { + _has_bits_[0] |= 0x00800000u; +} +inline void ScrollViewOptions::clear_has_innerheight() { + _has_bits_[0] &= ~0x00800000u; +} +inline void ScrollViewOptions::clear_innerheight() { + innerheight_ = 0; + clear_has_innerheight(); +} +inline float ScrollViewOptions::innerheight() const { + return innerheight_; +} +inline void ScrollViewOptions::set_innerheight(float value) { + set_has_innerheight(); + innerheight_ = value; +} + +// optional int32 direction = 25; +inline bool ScrollViewOptions::has_direction() const { + return (_has_bits_[0] & 0x01000000u) != 0; +} +inline void ScrollViewOptions::set_has_direction() { + _has_bits_[0] |= 0x01000000u; +} +inline void ScrollViewOptions::clear_has_direction() { + _has_bits_[0] &= ~0x01000000u; +} +inline void ScrollViewOptions::clear_direction() { + direction_ = 0; + clear_has_direction(); +} +inline ::google::protobuf::int32 ScrollViewOptions::direction() const { + return direction_; +} +inline void ScrollViewOptions::set_direction(::google::protobuf::int32 value) { + set_has_direction(); + direction_ = value; +} + +// optional bool clipAble = 26; +inline bool ScrollViewOptions::has_clipable() const { + return (_has_bits_[0] & 0x02000000u) != 0; +} +inline void ScrollViewOptions::set_has_clipable() { + _has_bits_[0] |= 0x02000000u; +} +inline void ScrollViewOptions::clear_has_clipable() { + _has_bits_[0] &= ~0x02000000u; +} +inline void ScrollViewOptions::clear_clipable() { + clipable_ = false; + clear_has_clipable(); +} +inline bool ScrollViewOptions::clipable() const { + return clipable_; +} +inline void ScrollViewOptions::set_clipable(bool value) { + set_has_clipable(); + clipable_ = value; +} + +// optional bool bounceEnable = 27; +inline bool ScrollViewOptions::has_bounceenable() const { + return (_has_bits_[0] & 0x04000000u) != 0; +} +inline void ScrollViewOptions::set_has_bounceenable() { + _has_bits_[0] |= 0x04000000u; +} +inline void ScrollViewOptions::clear_has_bounceenable() { + _has_bits_[0] &= ~0x04000000u; +} +inline void ScrollViewOptions::clear_bounceenable() { + bounceenable_ = false; + clear_has_bounceenable(); +} +inline bool ScrollViewOptions::bounceenable() const { + return bounceenable_; +} +inline void ScrollViewOptions::set_bounceenable(bool value) { + set_has_bounceenable(); + bounceenable_ = value; +} + +// optional int32 layoutType = 28; +inline bool ScrollViewOptions::has_layouttype() const { + return (_has_bits_[0] & 0x08000000u) != 0; +} +inline void ScrollViewOptions::set_has_layouttype() { + _has_bits_[0] |= 0x08000000u; +} +inline void ScrollViewOptions::clear_has_layouttype() { + _has_bits_[0] &= ~0x08000000u; +} +inline void ScrollViewOptions::clear_layouttype() { + layouttype_ = 0; + clear_has_layouttype(); +} +inline ::google::protobuf::int32 ScrollViewOptions::layouttype() const { + return layouttype_; +} +inline void ScrollViewOptions::set_layouttype(::google::protobuf::int32 value) { + set_has_layouttype(); + layouttype_ = value; +} + +// optional float scale9Width = 29; +inline bool ScrollViewOptions::has_scale9width() const { + return (_has_bits_[0] & 0x10000000u) != 0; +} +inline void ScrollViewOptions::set_has_scale9width() { + _has_bits_[0] |= 0x10000000u; +} +inline void ScrollViewOptions::clear_has_scale9width() { + _has_bits_[0] &= ~0x10000000u; +} +inline void ScrollViewOptions::clear_scale9width() { + scale9width_ = 0; + clear_has_scale9width(); +} +inline float ScrollViewOptions::scale9width() const { + return scale9width_; +} +inline void ScrollViewOptions::set_scale9width(float value) { + set_has_scale9width(); + scale9width_ = value; +} + +// optional float scale9Height = 30; +inline bool ScrollViewOptions::has_scale9height() const { + return (_has_bits_[0] & 0x20000000u) != 0; +} +inline void ScrollViewOptions::set_has_scale9height() { + _has_bits_[0] |= 0x20000000u; +} +inline void ScrollViewOptions::clear_has_scale9height() { + _has_bits_[0] &= ~0x20000000u; +} +inline void ScrollViewOptions::clear_scale9height() { + scale9height_ = 0; + clear_has_scale9height(); +} +inline float ScrollViewOptions::scale9height() const { + return scale9height_; +} +inline void ScrollViewOptions::set_scale9height(float value) { + set_has_scale9height(); + scale9height_ = value; +} + +// ------------------------------------------------------------------- + +// SliderOptions + +// optional string name = 1; +inline bool SliderOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void SliderOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void SliderOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void SliderOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& SliderOptions::name() const { + return *name_; +} +inline void SliderOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void SliderOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void SliderOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* SliderOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* SliderOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void SliderOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool SliderOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void SliderOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void SliderOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void SliderOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& SliderOptions::classname() const { + return *classname_; +} +inline void SliderOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void SliderOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void SliderOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* SliderOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* SliderOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void SliderOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string barFileName = 3; +inline bool SliderOptions::has_barfilename() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void SliderOptions::set_has_barfilename() { + _has_bits_[0] |= 0x00000004u; +} +inline void SliderOptions::clear_has_barfilename() { + _has_bits_[0] &= ~0x00000004u; +} +inline void SliderOptions::clear_barfilename() { + if (barfilename_ != &::google::protobuf::internal::kEmptyString) { + barfilename_->clear(); + } + clear_has_barfilename(); +} +inline const ::std::string& SliderOptions::barfilename() const { + return *barfilename_; +} +inline void SliderOptions::set_barfilename(const ::std::string& value) { + set_has_barfilename(); + if (barfilename_ == &::google::protobuf::internal::kEmptyString) { + barfilename_ = new ::std::string; + } + barfilename_->assign(value); +} +inline void SliderOptions::set_barfilename(const char* value) { + set_has_barfilename(); + if (barfilename_ == &::google::protobuf::internal::kEmptyString) { + barfilename_ = new ::std::string; + } + barfilename_->assign(value); +} +inline void SliderOptions::set_barfilename(const char* value, size_t size) { + set_has_barfilename(); + if (barfilename_ == &::google::protobuf::internal::kEmptyString) { + barfilename_ = new ::std::string; + } + barfilename_->assign(reinterpret_cast(value), size); +} +inline ::std::string* SliderOptions::mutable_barfilename() { + set_has_barfilename(); + if (barfilename_ == &::google::protobuf::internal::kEmptyString) { + barfilename_ = new ::std::string; + } + return barfilename_; +} +inline ::std::string* SliderOptions::release_barfilename() { + clear_has_barfilename(); + if (barfilename_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = barfilename_; + barfilename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void SliderOptions::set_allocated_barfilename(::std::string* barfilename) { + if (barfilename_ != &::google::protobuf::internal::kEmptyString) { + delete barfilename_; + } + if (barfilename) { + set_has_barfilename(); + barfilename_ = barfilename; + } else { + clear_has_barfilename(); + barfilename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string ballNormal = 4; +inline bool SliderOptions::has_ballnormal() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void SliderOptions::set_has_ballnormal() { + _has_bits_[0] |= 0x00000008u; +} +inline void SliderOptions::clear_has_ballnormal() { + _has_bits_[0] &= ~0x00000008u; +} +inline void SliderOptions::clear_ballnormal() { + if (ballnormal_ != &::google::protobuf::internal::kEmptyString) { + ballnormal_->clear(); + } + clear_has_ballnormal(); +} +inline const ::std::string& SliderOptions::ballnormal() const { + return *ballnormal_; +} +inline void SliderOptions::set_ballnormal(const ::std::string& value) { + set_has_ballnormal(); + if (ballnormal_ == &::google::protobuf::internal::kEmptyString) { + ballnormal_ = new ::std::string; + } + ballnormal_->assign(value); +} +inline void SliderOptions::set_ballnormal(const char* value) { + set_has_ballnormal(); + if (ballnormal_ == &::google::protobuf::internal::kEmptyString) { + ballnormal_ = new ::std::string; + } + ballnormal_->assign(value); +} +inline void SliderOptions::set_ballnormal(const char* value, size_t size) { + set_has_ballnormal(); + if (ballnormal_ == &::google::protobuf::internal::kEmptyString) { + ballnormal_ = new ::std::string; + } + ballnormal_->assign(reinterpret_cast(value), size); +} +inline ::std::string* SliderOptions::mutable_ballnormal() { + set_has_ballnormal(); + if (ballnormal_ == &::google::protobuf::internal::kEmptyString) { + ballnormal_ = new ::std::string; + } + return ballnormal_; +} +inline ::std::string* SliderOptions::release_ballnormal() { + clear_has_ballnormal(); + if (ballnormal_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = ballnormal_; + ballnormal_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void SliderOptions::set_allocated_ballnormal(::std::string* ballnormal) { + if (ballnormal_ != &::google::protobuf::internal::kEmptyString) { + delete ballnormal_; + } + if (ballnormal) { + set_has_ballnormal(); + ballnormal_ = ballnormal; + } else { + clear_has_ballnormal(); + ballnormal_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string ballPressed = 5; +inline bool SliderOptions::has_ballpressed() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void SliderOptions::set_has_ballpressed() { + _has_bits_[0] |= 0x00000010u; +} +inline void SliderOptions::clear_has_ballpressed() { + _has_bits_[0] &= ~0x00000010u; +} +inline void SliderOptions::clear_ballpressed() { + if (ballpressed_ != &::google::protobuf::internal::kEmptyString) { + ballpressed_->clear(); + } + clear_has_ballpressed(); +} +inline const ::std::string& SliderOptions::ballpressed() const { + return *ballpressed_; +} +inline void SliderOptions::set_ballpressed(const ::std::string& value) { + set_has_ballpressed(); + if (ballpressed_ == &::google::protobuf::internal::kEmptyString) { + ballpressed_ = new ::std::string; + } + ballpressed_->assign(value); +} +inline void SliderOptions::set_ballpressed(const char* value) { + set_has_ballpressed(); + if (ballpressed_ == &::google::protobuf::internal::kEmptyString) { + ballpressed_ = new ::std::string; + } + ballpressed_->assign(value); +} +inline void SliderOptions::set_ballpressed(const char* value, size_t size) { + set_has_ballpressed(); + if (ballpressed_ == &::google::protobuf::internal::kEmptyString) { + ballpressed_ = new ::std::string; + } + ballpressed_->assign(reinterpret_cast(value), size); +} +inline ::std::string* SliderOptions::mutable_ballpressed() { + set_has_ballpressed(); + if (ballpressed_ == &::google::protobuf::internal::kEmptyString) { + ballpressed_ = new ::std::string; + } + return ballpressed_; +} +inline ::std::string* SliderOptions::release_ballpressed() { + clear_has_ballpressed(); + if (ballpressed_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = ballpressed_; + ballpressed_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void SliderOptions::set_allocated_ballpressed(::std::string* ballpressed) { + if (ballpressed_ != &::google::protobuf::internal::kEmptyString) { + delete ballpressed_; + } + if (ballpressed) { + set_has_ballpressed(); + ballpressed_ = ballpressed; + } else { + clear_has_ballpressed(); + ballpressed_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string ballDisabled = 6; +inline bool SliderOptions::has_balldisabled() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void SliderOptions::set_has_balldisabled() { + _has_bits_[0] |= 0x00000020u; +} +inline void SliderOptions::clear_has_balldisabled() { + _has_bits_[0] &= ~0x00000020u; +} +inline void SliderOptions::clear_balldisabled() { + if (balldisabled_ != &::google::protobuf::internal::kEmptyString) { + balldisabled_->clear(); + } + clear_has_balldisabled(); +} +inline const ::std::string& SliderOptions::balldisabled() const { + return *balldisabled_; +} +inline void SliderOptions::set_balldisabled(const ::std::string& value) { + set_has_balldisabled(); + if (balldisabled_ == &::google::protobuf::internal::kEmptyString) { + balldisabled_ = new ::std::string; + } + balldisabled_->assign(value); +} +inline void SliderOptions::set_balldisabled(const char* value) { + set_has_balldisabled(); + if (balldisabled_ == &::google::protobuf::internal::kEmptyString) { + balldisabled_ = new ::std::string; + } + balldisabled_->assign(value); +} +inline void SliderOptions::set_balldisabled(const char* value, size_t size) { + set_has_balldisabled(); + if (balldisabled_ == &::google::protobuf::internal::kEmptyString) { + balldisabled_ = new ::std::string; + } + balldisabled_->assign(reinterpret_cast(value), size); +} +inline ::std::string* SliderOptions::mutable_balldisabled() { + set_has_balldisabled(); + if (balldisabled_ == &::google::protobuf::internal::kEmptyString) { + balldisabled_ = new ::std::string; + } + return balldisabled_; +} +inline ::std::string* SliderOptions::release_balldisabled() { + clear_has_balldisabled(); + if (balldisabled_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = balldisabled_; + balldisabled_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void SliderOptions::set_allocated_balldisabled(::std::string* balldisabled) { + if (balldisabled_ != &::google::protobuf::internal::kEmptyString) { + delete balldisabled_; + } + if (balldisabled) { + set_has_balldisabled(); + balldisabled_ = balldisabled; + } else { + clear_has_balldisabled(); + balldisabled_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData barFileNameData = 7; +inline bool SliderOptions::has_barfilenamedata() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void SliderOptions::set_has_barfilenamedata() { + _has_bits_[0] |= 0x00000040u; +} +inline void SliderOptions::clear_has_barfilenamedata() { + _has_bits_[0] &= ~0x00000040u; +} +inline void SliderOptions::clear_barfilenamedata() { + if (barfilenamedata_ != NULL) barfilenamedata_->::protocolbuffers::ResourceData::Clear(); + clear_has_barfilenamedata(); +} +inline const ::protocolbuffers::ResourceData& SliderOptions::barfilenamedata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return barfilenamedata_ != NULL ? *barfilenamedata_ : *default_instance().barfilenamedata_; +#else + return barfilenamedata_ != NULL ? *barfilenamedata_ : *default_instance_->barfilenamedata_; +#endif +} +inline ::protocolbuffers::ResourceData* SliderOptions::mutable_barfilenamedata() { + set_has_barfilenamedata(); + if (barfilenamedata_ == NULL) barfilenamedata_ = new ::protocolbuffers::ResourceData; + return barfilenamedata_; +} +inline ::protocolbuffers::ResourceData* SliderOptions::release_barfilenamedata() { + clear_has_barfilenamedata(); + ::protocolbuffers::ResourceData* temp = barfilenamedata_; + barfilenamedata_ = NULL; + return temp; +} +inline void SliderOptions::set_allocated_barfilenamedata(::protocolbuffers::ResourceData* barfilenamedata) { + delete barfilenamedata_; + barfilenamedata_ = barfilenamedata; + if (barfilenamedata) { + set_has_barfilenamedata(); + } else { + clear_has_barfilenamedata(); + } +} + +// optional .protocolbuffers.ResourceData ballNormalData = 8; +inline bool SliderOptions::has_ballnormaldata() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void SliderOptions::set_has_ballnormaldata() { + _has_bits_[0] |= 0x00000080u; +} +inline void SliderOptions::clear_has_ballnormaldata() { + _has_bits_[0] &= ~0x00000080u; +} +inline void SliderOptions::clear_ballnormaldata() { + if (ballnormaldata_ != NULL) ballnormaldata_->::protocolbuffers::ResourceData::Clear(); + clear_has_ballnormaldata(); +} +inline const ::protocolbuffers::ResourceData& SliderOptions::ballnormaldata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return ballnormaldata_ != NULL ? *ballnormaldata_ : *default_instance().ballnormaldata_; +#else + return ballnormaldata_ != NULL ? *ballnormaldata_ : *default_instance_->ballnormaldata_; +#endif +} +inline ::protocolbuffers::ResourceData* SliderOptions::mutable_ballnormaldata() { + set_has_ballnormaldata(); + if (ballnormaldata_ == NULL) ballnormaldata_ = new ::protocolbuffers::ResourceData; + return ballnormaldata_; +} +inline ::protocolbuffers::ResourceData* SliderOptions::release_ballnormaldata() { + clear_has_ballnormaldata(); + ::protocolbuffers::ResourceData* temp = ballnormaldata_; + ballnormaldata_ = NULL; + return temp; +} +inline void SliderOptions::set_allocated_ballnormaldata(::protocolbuffers::ResourceData* ballnormaldata) { + delete ballnormaldata_; + ballnormaldata_ = ballnormaldata; + if (ballnormaldata) { + set_has_ballnormaldata(); + } else { + clear_has_ballnormaldata(); + } +} + +// optional .protocolbuffers.ResourceData ballPressedData = 9; +inline bool SliderOptions::has_ballpresseddata() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void SliderOptions::set_has_ballpresseddata() { + _has_bits_[0] |= 0x00000100u; +} +inline void SliderOptions::clear_has_ballpresseddata() { + _has_bits_[0] &= ~0x00000100u; +} +inline void SliderOptions::clear_ballpresseddata() { + if (ballpresseddata_ != NULL) ballpresseddata_->::protocolbuffers::ResourceData::Clear(); + clear_has_ballpresseddata(); +} +inline const ::protocolbuffers::ResourceData& SliderOptions::ballpresseddata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return ballpresseddata_ != NULL ? *ballpresseddata_ : *default_instance().ballpresseddata_; +#else + return ballpresseddata_ != NULL ? *ballpresseddata_ : *default_instance_->ballpresseddata_; +#endif +} +inline ::protocolbuffers::ResourceData* SliderOptions::mutable_ballpresseddata() { + set_has_ballpresseddata(); + if (ballpresseddata_ == NULL) ballpresseddata_ = new ::protocolbuffers::ResourceData; + return ballpresseddata_; +} +inline ::protocolbuffers::ResourceData* SliderOptions::release_ballpresseddata() { + clear_has_ballpresseddata(); + ::protocolbuffers::ResourceData* temp = ballpresseddata_; + ballpresseddata_ = NULL; + return temp; +} +inline void SliderOptions::set_allocated_ballpresseddata(::protocolbuffers::ResourceData* ballpresseddata) { + delete ballpresseddata_; + ballpresseddata_ = ballpresseddata; + if (ballpresseddata) { + set_has_ballpresseddata(); + } else { + clear_has_ballpresseddata(); + } +} + +// optional .protocolbuffers.ResourceData ballDisabledData = 10; +inline bool SliderOptions::has_balldisableddata() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void SliderOptions::set_has_balldisableddata() { + _has_bits_[0] |= 0x00000200u; +} +inline void SliderOptions::clear_has_balldisableddata() { + _has_bits_[0] &= ~0x00000200u; +} +inline void SliderOptions::clear_balldisableddata() { + if (balldisableddata_ != NULL) balldisableddata_->::protocolbuffers::ResourceData::Clear(); + clear_has_balldisableddata(); +} +inline const ::protocolbuffers::ResourceData& SliderOptions::balldisableddata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return balldisableddata_ != NULL ? *balldisableddata_ : *default_instance().balldisableddata_; +#else + return balldisableddata_ != NULL ? *balldisableddata_ : *default_instance_->balldisableddata_; +#endif +} +inline ::protocolbuffers::ResourceData* SliderOptions::mutable_balldisableddata() { + set_has_balldisableddata(); + if (balldisableddata_ == NULL) balldisableddata_ = new ::protocolbuffers::ResourceData; + return balldisableddata_; +} +inline ::protocolbuffers::ResourceData* SliderOptions::release_balldisableddata() { + clear_has_balldisableddata(); + ::protocolbuffers::ResourceData* temp = balldisableddata_; + balldisableddata_ = NULL; + return temp; +} +inline void SliderOptions::set_allocated_balldisableddata(::protocolbuffers::ResourceData* balldisableddata) { + delete balldisableddata_; + balldisableddata_ = balldisableddata; + if (balldisableddata) { + set_has_balldisableddata(); + } else { + clear_has_balldisableddata(); + } +} + +// optional .protocolbuffers.ResourceData progressBarData = 11; +inline bool SliderOptions::has_progressbardata() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void SliderOptions::set_has_progressbardata() { + _has_bits_[0] |= 0x00000400u; +} +inline void SliderOptions::clear_has_progressbardata() { + _has_bits_[0] &= ~0x00000400u; +} +inline void SliderOptions::clear_progressbardata() { + if (progressbardata_ != NULL) progressbardata_->::protocolbuffers::ResourceData::Clear(); + clear_has_progressbardata(); +} +inline const ::protocolbuffers::ResourceData& SliderOptions::progressbardata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return progressbardata_ != NULL ? *progressbardata_ : *default_instance().progressbardata_; +#else + return progressbardata_ != NULL ? *progressbardata_ : *default_instance_->progressbardata_; +#endif +} +inline ::protocolbuffers::ResourceData* SliderOptions::mutable_progressbardata() { + set_has_progressbardata(); + if (progressbardata_ == NULL) progressbardata_ = new ::protocolbuffers::ResourceData; + return progressbardata_; +} +inline ::protocolbuffers::ResourceData* SliderOptions::release_progressbardata() { + clear_has_progressbardata(); + ::protocolbuffers::ResourceData* temp = progressbardata_; + progressbardata_ = NULL; + return temp; +} +inline void SliderOptions::set_allocated_progressbardata(::protocolbuffers::ResourceData* progressbardata) { + delete progressbardata_; + progressbardata_ = progressbardata; + if (progressbardata) { + set_has_progressbardata(); + } else { + clear_has_progressbardata(); + } +} + +// optional int32 percent = 12; +inline bool SliderOptions::has_percent() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void SliderOptions::set_has_percent() { + _has_bits_[0] |= 0x00000800u; +} +inline void SliderOptions::clear_has_percent() { + _has_bits_[0] &= ~0x00000800u; +} +inline void SliderOptions::clear_percent() { + percent_ = 0; + clear_has_percent(); +} +inline ::google::protobuf::int32 SliderOptions::percent() const { + return percent_; +} +inline void SliderOptions::set_percent(::google::protobuf::int32 value) { + set_has_percent(); + percent_ = value; +} + +// optional float capInsetsX = 13; +inline bool SliderOptions::has_capinsetsx() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void SliderOptions::set_has_capinsetsx() { + _has_bits_[0] |= 0x00001000u; +} +inline void SliderOptions::clear_has_capinsetsx() { + _has_bits_[0] &= ~0x00001000u; +} +inline void SliderOptions::clear_capinsetsx() { + capinsetsx_ = 0; + clear_has_capinsetsx(); +} +inline float SliderOptions::capinsetsx() const { + return capinsetsx_; +} +inline void SliderOptions::set_capinsetsx(float value) { + set_has_capinsetsx(); + capinsetsx_ = value; +} + +// optional float capInsetsY = 14; +inline bool SliderOptions::has_capinsetsy() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void SliderOptions::set_has_capinsetsy() { + _has_bits_[0] |= 0x00002000u; +} +inline void SliderOptions::clear_has_capinsetsy() { + _has_bits_[0] &= ~0x00002000u; +} +inline void SliderOptions::clear_capinsetsy() { + capinsetsy_ = 0; + clear_has_capinsetsy(); +} +inline float SliderOptions::capinsetsy() const { + return capinsetsy_; +} +inline void SliderOptions::set_capinsetsy(float value) { + set_has_capinsetsy(); + capinsetsy_ = value; +} + +// optional float capInsetsWidth = 15; +inline bool SliderOptions::has_capinsetswidth() const { + return (_has_bits_[0] & 0x00004000u) != 0; +} +inline void SliderOptions::set_has_capinsetswidth() { + _has_bits_[0] |= 0x00004000u; +} +inline void SliderOptions::clear_has_capinsetswidth() { + _has_bits_[0] &= ~0x00004000u; +} +inline void SliderOptions::clear_capinsetswidth() { + capinsetswidth_ = 0; + clear_has_capinsetswidth(); +} +inline float SliderOptions::capinsetswidth() const { + return capinsetswidth_; +} +inline void SliderOptions::set_capinsetswidth(float value) { + set_has_capinsetswidth(); + capinsetswidth_ = value; +} + +// optional float capInsetsHeight = 16; +inline bool SliderOptions::has_capinsetsheight() const { + return (_has_bits_[0] & 0x00008000u) != 0; +} +inline void SliderOptions::set_has_capinsetsheight() { + _has_bits_[0] |= 0x00008000u; +} +inline void SliderOptions::clear_has_capinsetsheight() { + _has_bits_[0] &= ~0x00008000u; +} +inline void SliderOptions::clear_capinsetsheight() { + capinsetsheight_ = 0; + clear_has_capinsetsheight(); +} +inline float SliderOptions::capinsetsheight() const { + return capinsetsheight_; +} +inline void SliderOptions::set_capinsetsheight(float value) { + set_has_capinsetsheight(); + capinsetsheight_ = value; +} + +// optional float barCapInsetsX = 17; +inline bool SliderOptions::has_barcapinsetsx() const { + return (_has_bits_[0] & 0x00010000u) != 0; +} +inline void SliderOptions::set_has_barcapinsetsx() { + _has_bits_[0] |= 0x00010000u; +} +inline void SliderOptions::clear_has_barcapinsetsx() { + _has_bits_[0] &= ~0x00010000u; +} +inline void SliderOptions::clear_barcapinsetsx() { + barcapinsetsx_ = 0; + clear_has_barcapinsetsx(); +} +inline float SliderOptions::barcapinsetsx() const { + return barcapinsetsx_; +} +inline void SliderOptions::set_barcapinsetsx(float value) { + set_has_barcapinsetsx(); + barcapinsetsx_ = value; +} + +// optional float barCapInsetsY = 18; +inline bool SliderOptions::has_barcapinsetsy() const { + return (_has_bits_[0] & 0x00020000u) != 0; +} +inline void SliderOptions::set_has_barcapinsetsy() { + _has_bits_[0] |= 0x00020000u; +} +inline void SliderOptions::clear_has_barcapinsetsy() { + _has_bits_[0] &= ~0x00020000u; +} +inline void SliderOptions::clear_barcapinsetsy() { + barcapinsetsy_ = 0; + clear_has_barcapinsetsy(); +} +inline float SliderOptions::barcapinsetsy() const { + return barcapinsetsy_; +} +inline void SliderOptions::set_barcapinsetsy(float value) { + set_has_barcapinsetsy(); + barcapinsetsy_ = value; +} + +// optional float barCapInsetsWidth = 19; +inline bool SliderOptions::has_barcapinsetswidth() const { + return (_has_bits_[0] & 0x00040000u) != 0; +} +inline void SliderOptions::set_has_barcapinsetswidth() { + _has_bits_[0] |= 0x00040000u; +} +inline void SliderOptions::clear_has_barcapinsetswidth() { + _has_bits_[0] &= ~0x00040000u; +} +inline void SliderOptions::clear_barcapinsetswidth() { + barcapinsetswidth_ = 0; + clear_has_barcapinsetswidth(); +} +inline float SliderOptions::barcapinsetswidth() const { + return barcapinsetswidth_; +} +inline void SliderOptions::set_barcapinsetswidth(float value) { + set_has_barcapinsetswidth(); + barcapinsetswidth_ = value; +} + +// optional float barCapInsetsHeight = 20; +inline bool SliderOptions::has_barcapinsetsheight() const { + return (_has_bits_[0] & 0x00080000u) != 0; +} +inline void SliderOptions::set_has_barcapinsetsheight() { + _has_bits_[0] |= 0x00080000u; +} +inline void SliderOptions::clear_has_barcapinsetsheight() { + _has_bits_[0] &= ~0x00080000u; +} +inline void SliderOptions::clear_barcapinsetsheight() { + barcapinsetsheight_ = 0; + clear_has_barcapinsetsheight(); +} +inline float SliderOptions::barcapinsetsheight() const { + return barcapinsetsheight_; +} +inline void SliderOptions::set_barcapinsetsheight(float value) { + set_has_barcapinsetsheight(); + barcapinsetsheight_ = value; +} + +// optional float progressBarCapInsetsX = 21; +inline bool SliderOptions::has_progressbarcapinsetsx() const { + return (_has_bits_[0] & 0x00100000u) != 0; +} +inline void SliderOptions::set_has_progressbarcapinsetsx() { + _has_bits_[0] |= 0x00100000u; +} +inline void SliderOptions::clear_has_progressbarcapinsetsx() { + _has_bits_[0] &= ~0x00100000u; +} +inline void SliderOptions::clear_progressbarcapinsetsx() { + progressbarcapinsetsx_ = 0; + clear_has_progressbarcapinsetsx(); +} +inline float SliderOptions::progressbarcapinsetsx() const { + return progressbarcapinsetsx_; +} +inline void SliderOptions::set_progressbarcapinsetsx(float value) { + set_has_progressbarcapinsetsx(); + progressbarcapinsetsx_ = value; +} + +// optional float progressBarCapInsetsY = 22; +inline bool SliderOptions::has_progressbarcapinsetsy() const { + return (_has_bits_[0] & 0x00200000u) != 0; +} +inline void SliderOptions::set_has_progressbarcapinsetsy() { + _has_bits_[0] |= 0x00200000u; +} +inline void SliderOptions::clear_has_progressbarcapinsetsy() { + _has_bits_[0] &= ~0x00200000u; +} +inline void SliderOptions::clear_progressbarcapinsetsy() { + progressbarcapinsetsy_ = 0; + clear_has_progressbarcapinsetsy(); +} +inline float SliderOptions::progressbarcapinsetsy() const { + return progressbarcapinsetsy_; +} +inline void SliderOptions::set_progressbarcapinsetsy(float value) { + set_has_progressbarcapinsetsy(); + progressbarcapinsetsy_ = value; +} + +// optional float progressBarCapInsetsWidth = 23; +inline bool SliderOptions::has_progressbarcapinsetswidth() const { + return (_has_bits_[0] & 0x00400000u) != 0; +} +inline void SliderOptions::set_has_progressbarcapinsetswidth() { + _has_bits_[0] |= 0x00400000u; +} +inline void SliderOptions::clear_has_progressbarcapinsetswidth() { + _has_bits_[0] &= ~0x00400000u; +} +inline void SliderOptions::clear_progressbarcapinsetswidth() { + progressbarcapinsetswidth_ = 0; + clear_has_progressbarcapinsetswidth(); +} +inline float SliderOptions::progressbarcapinsetswidth() const { + return progressbarcapinsetswidth_; +} +inline void SliderOptions::set_progressbarcapinsetswidth(float value) { + set_has_progressbarcapinsetswidth(); + progressbarcapinsetswidth_ = value; +} + +// optional float progressBarCapInsetsHeight = 24; +inline bool SliderOptions::has_progressbarcapinsetsheight() const { + return (_has_bits_[0] & 0x00800000u) != 0; +} +inline void SliderOptions::set_has_progressbarcapinsetsheight() { + _has_bits_[0] |= 0x00800000u; +} +inline void SliderOptions::clear_has_progressbarcapinsetsheight() { + _has_bits_[0] &= ~0x00800000u; +} +inline void SliderOptions::clear_progressbarcapinsetsheight() { + progressbarcapinsetsheight_ = 0; + clear_has_progressbarcapinsetsheight(); +} +inline float SliderOptions::progressbarcapinsetsheight() const { + return progressbarcapinsetsheight_; +} +inline void SliderOptions::set_progressbarcapinsetsheight(float value) { + set_has_progressbarcapinsetsheight(); + progressbarcapinsetsheight_ = value; +} + +// optional float scale9Width = 25; +inline bool SliderOptions::has_scale9width() const { + return (_has_bits_[0] & 0x01000000u) != 0; +} +inline void SliderOptions::set_has_scale9width() { + _has_bits_[0] |= 0x01000000u; +} +inline void SliderOptions::clear_has_scale9width() { + _has_bits_[0] &= ~0x01000000u; +} +inline void SliderOptions::clear_scale9width() { + scale9width_ = 0; + clear_has_scale9width(); +} +inline float SliderOptions::scale9width() const { + return scale9width_; +} +inline void SliderOptions::set_scale9width(float value) { + set_has_scale9width(); + scale9width_ = value; +} + +// optional float scale9Height = 26; +inline bool SliderOptions::has_scale9height() const { + return (_has_bits_[0] & 0x02000000u) != 0; +} +inline void SliderOptions::set_has_scale9height() { + _has_bits_[0] |= 0x02000000u; +} +inline void SliderOptions::clear_has_scale9height() { + _has_bits_[0] &= ~0x02000000u; +} +inline void SliderOptions::clear_scale9height() { + scale9height_ = 0; + clear_has_scale9height(); +} +inline float SliderOptions::scale9height() const { + return scale9height_; +} +inline void SliderOptions::set_scale9height(float value) { + set_has_scale9height(); + scale9height_ = value; +} + +// optional bool scale9Enable = 27; +inline bool SliderOptions::has_scale9enable() const { + return (_has_bits_[0] & 0x04000000u) != 0; +} +inline void SliderOptions::set_has_scale9enable() { + _has_bits_[0] |= 0x04000000u; +} +inline void SliderOptions::clear_has_scale9enable() { + _has_bits_[0] &= ~0x04000000u; +} +inline void SliderOptions::clear_scale9enable() { + scale9enable_ = false; + clear_has_scale9enable(); +} +inline bool SliderOptions::scale9enable() const { + return scale9enable_; +} +inline void SliderOptions::set_scale9enable(bool value) { + set_has_scale9enable(); + scale9enable_ = value; +} + +// optional float slidBallAnchorPointX = 28; +inline bool SliderOptions::has_slidballanchorpointx() const { + return (_has_bits_[0] & 0x08000000u) != 0; +} +inline void SliderOptions::set_has_slidballanchorpointx() { + _has_bits_[0] |= 0x08000000u; +} +inline void SliderOptions::clear_has_slidballanchorpointx() { + _has_bits_[0] &= ~0x08000000u; +} +inline void SliderOptions::clear_slidballanchorpointx() { + slidballanchorpointx_ = 0; + clear_has_slidballanchorpointx(); +} +inline float SliderOptions::slidballanchorpointx() const { + return slidballanchorpointx_; +} +inline void SliderOptions::set_slidballanchorpointx(float value) { + set_has_slidballanchorpointx(); + slidballanchorpointx_ = value; +} + +// optional float slidBallAnchorPointY = 29; +inline bool SliderOptions::has_slidballanchorpointy() const { + return (_has_bits_[0] & 0x10000000u) != 0; +} +inline void SliderOptions::set_has_slidballanchorpointy() { + _has_bits_[0] |= 0x10000000u; +} +inline void SliderOptions::clear_has_slidballanchorpointy() { + _has_bits_[0] &= ~0x10000000u; +} +inline void SliderOptions::clear_slidballanchorpointy() { + slidballanchorpointy_ = 0; + clear_has_slidballanchorpointy(); +} +inline float SliderOptions::slidballanchorpointy() const { + return slidballanchorpointy_; +} +inline void SliderOptions::set_slidballanchorpointy(float value) { + set_has_slidballanchorpointy(); + slidballanchorpointy_ = value; +} + +// optional float length = 30; +inline bool SliderOptions::has_length() const { + return (_has_bits_[0] & 0x20000000u) != 0; +} +inline void SliderOptions::set_has_length() { + _has_bits_[0] |= 0x20000000u; +} +inline void SliderOptions::clear_has_length() { + _has_bits_[0] &= ~0x20000000u; +} +inline void SliderOptions::clear_length() { + length_ = 0; + clear_has_length(); +} +inline float SliderOptions::length() const { + return length_; +} +inline void SliderOptions::set_length(float value) { + set_has_length(); + length_ = value; +} + +// optional bool displaystate = 31; +inline bool SliderOptions::has_displaystate() const { + return (_has_bits_[0] & 0x40000000u) != 0; +} +inline void SliderOptions::set_has_displaystate() { + _has_bits_[0] |= 0x40000000u; +} +inline void SliderOptions::clear_has_displaystate() { + _has_bits_[0] &= ~0x40000000u; +} +inline void SliderOptions::clear_displaystate() { + displaystate_ = false; + clear_has_displaystate(); +} +inline bool SliderOptions::displaystate() const { + return displaystate_; +} +inline void SliderOptions::set_displaystate(bool value) { + set_has_displaystate(); + displaystate_ = value; +} + +// ------------------------------------------------------------------- + +// SpriteOptions + +// optional string name = 1; +inline bool SpriteOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void SpriteOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void SpriteOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void SpriteOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& SpriteOptions::name() const { + return *name_; +} +inline void SpriteOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void SpriteOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void SpriteOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* SpriteOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* SpriteOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void SpriteOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool SpriteOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void SpriteOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void SpriteOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void SpriteOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& SpriteOptions::classname() const { + return *classname_; +} +inline void SpriteOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void SpriteOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void SpriteOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* SpriteOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* SpriteOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void SpriteOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional bool touchAble = 3; +inline bool SpriteOptions::has_touchable() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void SpriteOptions::set_has_touchable() { + _has_bits_[0] |= 0x00000004u; +} +inline void SpriteOptions::clear_has_touchable() { + _has_bits_[0] &= ~0x00000004u; +} +inline void SpriteOptions::clear_touchable() { + touchable_ = false; + clear_has_touchable(); +} +inline bool SpriteOptions::touchable() const { + return touchable_; +} +inline void SpriteOptions::set_touchable(bool value) { + set_has_touchable(); + touchable_ = value; +} + +// optional int32 positionType = 4; +inline bool SpriteOptions::has_positiontype() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void SpriteOptions::set_has_positiontype() { + _has_bits_[0] |= 0x00000008u; +} +inline void SpriteOptions::clear_has_positiontype() { + _has_bits_[0] &= ~0x00000008u; +} +inline void SpriteOptions::clear_positiontype() { + positiontype_ = 0; + clear_has_positiontype(); +} +inline ::google::protobuf::int32 SpriteOptions::positiontype() const { + return positiontype_; +} +inline void SpriteOptions::set_positiontype(::google::protobuf::int32 value) { + set_has_positiontype(); + positiontype_ = value; +} + +// optional float positionPercentX = 5; +inline bool SpriteOptions::has_positionpercentx() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void SpriteOptions::set_has_positionpercentx() { + _has_bits_[0] |= 0x00000010u; +} +inline void SpriteOptions::clear_has_positionpercentx() { + _has_bits_[0] &= ~0x00000010u; +} +inline void SpriteOptions::clear_positionpercentx() { + positionpercentx_ = 0; + clear_has_positionpercentx(); +} +inline float SpriteOptions::positionpercentx() const { + return positionpercentx_; +} +inline void SpriteOptions::set_positionpercentx(float value) { + set_has_positionpercentx(); + positionpercentx_ = value; +} + +// optional float positionPercentY = 6; +inline bool SpriteOptions::has_positionpercenty() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void SpriteOptions::set_has_positionpercenty() { + _has_bits_[0] |= 0x00000020u; +} +inline void SpriteOptions::clear_has_positionpercenty() { + _has_bits_[0] &= ~0x00000020u; +} +inline void SpriteOptions::clear_positionpercenty() { + positionpercenty_ = 0; + clear_has_positionpercenty(); +} +inline float SpriteOptions::positionpercenty() const { + return positionpercenty_; +} +inline void SpriteOptions::set_positionpercenty(float value) { + set_has_positionpercenty(); + positionpercenty_ = value; +} + +// optional int32 sizeType = 7; +inline bool SpriteOptions::has_sizetype() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void SpriteOptions::set_has_sizetype() { + _has_bits_[0] |= 0x00000040u; +} +inline void SpriteOptions::clear_has_sizetype() { + _has_bits_[0] &= ~0x00000040u; +} +inline void SpriteOptions::clear_sizetype() { + sizetype_ = 0; + clear_has_sizetype(); +} +inline ::google::protobuf::int32 SpriteOptions::sizetype() const { + return sizetype_; +} +inline void SpriteOptions::set_sizetype(::google::protobuf::int32 value) { + set_has_sizetype(); + sizetype_ = value; +} + +// optional float sizePercentX = 8; +inline bool SpriteOptions::has_sizepercentx() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void SpriteOptions::set_has_sizepercentx() { + _has_bits_[0] |= 0x00000080u; +} +inline void SpriteOptions::clear_has_sizepercentx() { + _has_bits_[0] &= ~0x00000080u; +} +inline void SpriteOptions::clear_sizepercentx() { + sizepercentx_ = 0; + clear_has_sizepercentx(); +} +inline float SpriteOptions::sizepercentx() const { + return sizepercentx_; +} +inline void SpriteOptions::set_sizepercentx(float value) { + set_has_sizepercentx(); + sizepercentx_ = value; +} + +// optional float sizePercentY = 9; +inline bool SpriteOptions::has_sizepercenty() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void SpriteOptions::set_has_sizepercenty() { + _has_bits_[0] |= 0x00000100u; +} +inline void SpriteOptions::clear_has_sizepercenty() { + _has_bits_[0] &= ~0x00000100u; +} +inline void SpriteOptions::clear_sizepercenty() { + sizepercenty_ = 0; + clear_has_sizepercenty(); +} +inline float SpriteOptions::sizepercenty() const { + return sizepercenty_; +} +inline void SpriteOptions::set_sizepercenty(float value) { + set_has_sizepercenty(); + sizepercenty_ = value; +} + +// optional bool useMergedTexture = 10; +inline bool SpriteOptions::has_usemergedtexture() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void SpriteOptions::set_has_usemergedtexture() { + _has_bits_[0] |= 0x00000200u; +} +inline void SpriteOptions::clear_has_usemergedtexture() { + _has_bits_[0] &= ~0x00000200u; +} +inline void SpriteOptions::clear_usemergedtexture() { + usemergedtexture_ = false; + clear_has_usemergedtexture(); +} +inline bool SpriteOptions::usemergedtexture() const { + return usemergedtexture_; +} +inline void SpriteOptions::set_usemergedtexture(bool value) { + set_has_usemergedtexture(); + usemergedtexture_ = value; +} + +// optional bool ignoreSize = 11; +inline bool SpriteOptions::has_ignoresize() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void SpriteOptions::set_has_ignoresize() { + _has_bits_[0] |= 0x00000400u; +} +inline void SpriteOptions::clear_has_ignoresize() { + _has_bits_[0] &= ~0x00000400u; +} +inline void SpriteOptions::clear_ignoresize() { + ignoresize_ = false; + clear_has_ignoresize(); +} +inline bool SpriteOptions::ignoresize() const { + return ignoresize_; +} +inline void SpriteOptions::set_ignoresize(bool value) { + set_has_ignoresize(); + ignoresize_ = value; +} + +// optional .protocolbuffers.LayoutParameter layoutParameter = 12; +inline bool SpriteOptions::has_layoutparameter() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void SpriteOptions::set_has_layoutparameter() { + _has_bits_[0] |= 0x00000800u; +} +inline void SpriteOptions::clear_has_layoutparameter() { + _has_bits_[0] &= ~0x00000800u; +} +inline void SpriteOptions::clear_layoutparameter() { + if (layoutparameter_ != NULL) layoutparameter_->::protocolbuffers::LayoutParameter::Clear(); + clear_has_layoutparameter(); +} +inline const ::protocolbuffers::LayoutParameter& SpriteOptions::layoutparameter() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return layoutparameter_ != NULL ? *layoutparameter_ : *default_instance().layoutparameter_; +#else + return layoutparameter_ != NULL ? *layoutparameter_ : *default_instance_->layoutparameter_; +#endif +} +inline ::protocolbuffers::LayoutParameter* SpriteOptions::mutable_layoutparameter() { + set_has_layoutparameter(); + if (layoutparameter_ == NULL) layoutparameter_ = new ::protocolbuffers::LayoutParameter; + return layoutparameter_; +} +inline ::protocolbuffers::LayoutParameter* SpriteOptions::release_layoutparameter() { + clear_has_layoutparameter(); + ::protocolbuffers::LayoutParameter* temp = layoutparameter_; + layoutparameter_ = NULL; + return temp; +} +inline void SpriteOptions::set_allocated_layoutparameter(::protocolbuffers::LayoutParameter* layoutparameter) { + delete layoutparameter_; + layoutparameter_ = layoutparameter; + if (layoutparameter) { + set_has_layoutparameter(); + } else { + clear_has_layoutparameter(); + } +} + +// optional string customProperty = 13; +inline bool SpriteOptions::has_customproperty() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void SpriteOptions::set_has_customproperty() { + _has_bits_[0] |= 0x00001000u; +} +inline void SpriteOptions::clear_has_customproperty() { + _has_bits_[0] &= ~0x00001000u; +} +inline void SpriteOptions::clear_customproperty() { + if (customproperty_ != &::google::protobuf::internal::kEmptyString) { + customproperty_->clear(); + } + clear_has_customproperty(); +} +inline const ::std::string& SpriteOptions::customproperty() const { + return *customproperty_; +} +inline void SpriteOptions::set_customproperty(const ::std::string& value) { + set_has_customproperty(); + if (customproperty_ == &::google::protobuf::internal::kEmptyString) { + customproperty_ = new ::std::string; + } + customproperty_->assign(value); +} +inline void SpriteOptions::set_customproperty(const char* value) { + set_has_customproperty(); + if (customproperty_ == &::google::protobuf::internal::kEmptyString) { + customproperty_ = new ::std::string; + } + customproperty_->assign(value); +} +inline void SpriteOptions::set_customproperty(const char* value, size_t size) { + set_has_customproperty(); + if (customproperty_ == &::google::protobuf::internal::kEmptyString) { + customproperty_ = new ::std::string; + } + customproperty_->assign(reinterpret_cast(value), size); +} +inline ::std::string* SpriteOptions::mutable_customproperty() { + set_has_customproperty(); + if (customproperty_ == &::google::protobuf::internal::kEmptyString) { + customproperty_ = new ::std::string; + } + return customproperty_; +} +inline ::std::string* SpriteOptions::release_customproperty() { + clear_has_customproperty(); + if (customproperty_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = customproperty_; + customproperty_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void SpriteOptions::set_allocated_customproperty(::std::string* customproperty) { + if (customproperty_ != &::google::protobuf::internal::kEmptyString) { + delete customproperty_; + } + if (customproperty) { + set_has_customproperty(); + customproperty_ = customproperty; + } else { + clear_has_customproperty(); + customproperty_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string fileName = 14; +inline bool SpriteOptions::has_filename() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void SpriteOptions::set_has_filename() { + _has_bits_[0] |= 0x00002000u; +} +inline void SpriteOptions::clear_has_filename() { + _has_bits_[0] &= ~0x00002000u; +} +inline void SpriteOptions::clear_filename() { + if (filename_ != &::google::protobuf::internal::kEmptyString) { + filename_->clear(); + } + clear_has_filename(); +} +inline const ::std::string& SpriteOptions::filename() const { + return *filename_; +} +inline void SpriteOptions::set_filename(const ::std::string& value) { + set_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + filename_ = new ::std::string; + } + filename_->assign(value); +} +inline void SpriteOptions::set_filename(const char* value) { + set_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + filename_ = new ::std::string; + } + filename_->assign(value); +} +inline void SpriteOptions::set_filename(const char* value, size_t size) { + set_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + filename_ = new ::std::string; + } + filename_->assign(reinterpret_cast(value), size); +} +inline ::std::string* SpriteOptions::mutable_filename() { + set_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + filename_ = new ::std::string; + } + return filename_; +} +inline ::std::string* SpriteOptions::release_filename() { + clear_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = filename_; + filename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void SpriteOptions::set_allocated_filename(::std::string* filename) { + if (filename_ != &::google::protobuf::internal::kEmptyString) { + delete filename_; + } + if (filename) { + set_has_filename(); + filename_ = filename; + } else { + clear_has_filename(); + filename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional bool flippedX = 15; +inline bool SpriteOptions::has_flippedx() const { + return (_has_bits_[0] & 0x00004000u) != 0; +} +inline void SpriteOptions::set_has_flippedx() { + _has_bits_[0] |= 0x00004000u; +} +inline void SpriteOptions::clear_has_flippedx() { + _has_bits_[0] &= ~0x00004000u; +} +inline void SpriteOptions::clear_flippedx() { + flippedx_ = false; + clear_has_flippedx(); +} +inline bool SpriteOptions::flippedx() const { + return flippedx_; +} +inline void SpriteOptions::set_flippedx(bool value) { + set_has_flippedx(); + flippedx_ = value; +} + +// optional bool flippedY = 16; +inline bool SpriteOptions::has_flippedy() const { + return (_has_bits_[0] & 0x00008000u) != 0; +} +inline void SpriteOptions::set_has_flippedy() { + _has_bits_[0] |= 0x00008000u; +} +inline void SpriteOptions::clear_has_flippedy() { + _has_bits_[0] &= ~0x00008000u; +} +inline void SpriteOptions::clear_flippedy() { + flippedy_ = false; + clear_has_flippedy(); +} +inline bool SpriteOptions::flippedy() const { + return flippedy_; +} +inline void SpriteOptions::set_flippedy(bool value) { + set_has_flippedy(); + flippedy_ = value; +} + +// optional .protocolbuffers.ResourceData fileNameData = 17; +inline bool SpriteOptions::has_filenamedata() const { + return (_has_bits_[0] & 0x00010000u) != 0; +} +inline void SpriteOptions::set_has_filenamedata() { + _has_bits_[0] |= 0x00010000u; +} +inline void SpriteOptions::clear_has_filenamedata() { + _has_bits_[0] &= ~0x00010000u; +} +inline void SpriteOptions::clear_filenamedata() { + if (filenamedata_ != NULL) filenamedata_->::protocolbuffers::ResourceData::Clear(); + clear_has_filenamedata(); +} +inline const ::protocolbuffers::ResourceData& SpriteOptions::filenamedata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return filenamedata_ != NULL ? *filenamedata_ : *default_instance().filenamedata_; +#else + return filenamedata_ != NULL ? *filenamedata_ : *default_instance_->filenamedata_; +#endif +} +inline ::protocolbuffers::ResourceData* SpriteOptions::mutable_filenamedata() { + set_has_filenamedata(); + if (filenamedata_ == NULL) filenamedata_ = new ::protocolbuffers::ResourceData; + return filenamedata_; +} +inline ::protocolbuffers::ResourceData* SpriteOptions::release_filenamedata() { + clear_has_filenamedata(); + ::protocolbuffers::ResourceData* temp = filenamedata_; + filenamedata_ = NULL; + return temp; +} +inline void SpriteOptions::set_allocated_filenamedata(::protocolbuffers::ResourceData* filenamedata) { + delete filenamedata_; + filenamedata_ = filenamedata; + if (filenamedata) { + set_has_filenamedata(); + } else { + clear_has_filenamedata(); + } +} + +// ------------------------------------------------------------------- + +// TextFieldOptions + +// optional string name = 1; +inline bool TextFieldOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void TextFieldOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void TextFieldOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void TextFieldOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& TextFieldOptions::name() const { + return *name_; +} +inline void TextFieldOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TextFieldOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TextFieldOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextFieldOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* TextFieldOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextFieldOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool TextFieldOptions::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void TextFieldOptions::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void TextFieldOptions::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void TextFieldOptions::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& TextFieldOptions::classname() const { + return *classname_; +} +inline void TextFieldOptions::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TextFieldOptions::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TextFieldOptions::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextFieldOptions::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* TextFieldOptions::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextFieldOptions::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string fontName = 3; +inline bool TextFieldOptions::has_fontname() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void TextFieldOptions::set_has_fontname() { + _has_bits_[0] |= 0x00000004u; +} +inline void TextFieldOptions::clear_has_fontname() { + _has_bits_[0] &= ~0x00000004u; +} +inline void TextFieldOptions::clear_fontname() { + if (fontname_ != &::google::protobuf::internal::kEmptyString) { + fontname_->clear(); + } + clear_has_fontname(); +} +inline const ::std::string& TextFieldOptions::fontname() const { + return *fontname_; +} +inline void TextFieldOptions::set_fontname(const ::std::string& value) { + set_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + fontname_ = new ::std::string; + } + fontname_->assign(value); +} +inline void TextFieldOptions::set_fontname(const char* value) { + set_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + fontname_ = new ::std::string; + } + fontname_->assign(value); +} +inline void TextFieldOptions::set_fontname(const char* value, size_t size) { + set_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + fontname_ = new ::std::string; + } + fontname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextFieldOptions::mutable_fontname() { + set_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + fontname_ = new ::std::string; + } + return fontname_; +} +inline ::std::string* TextFieldOptions::release_fontname() { + clear_has_fontname(); + if (fontname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = fontname_; + fontname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextFieldOptions::set_allocated_fontname(::std::string* fontname) { + if (fontname_ != &::google::protobuf::internal::kEmptyString) { + delete fontname_; + } + if (fontname) { + set_has_fontname(); + fontname_ = fontname; + } else { + clear_has_fontname(); + fontname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData fontFile = 4; +inline bool TextFieldOptions::has_fontfile() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void TextFieldOptions::set_has_fontfile() { + _has_bits_[0] |= 0x00000008u; +} +inline void TextFieldOptions::clear_has_fontfile() { + _has_bits_[0] &= ~0x00000008u; +} +inline void TextFieldOptions::clear_fontfile() { + if (fontfile_ != NULL) fontfile_->::protocolbuffers::ResourceData::Clear(); + clear_has_fontfile(); +} +inline const ::protocolbuffers::ResourceData& TextFieldOptions::fontfile() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return fontfile_ != NULL ? *fontfile_ : *default_instance().fontfile_; +#else + return fontfile_ != NULL ? *fontfile_ : *default_instance_->fontfile_; +#endif +} +inline ::protocolbuffers::ResourceData* TextFieldOptions::mutable_fontfile() { + set_has_fontfile(); + if (fontfile_ == NULL) fontfile_ = new ::protocolbuffers::ResourceData; + return fontfile_; +} +inline ::protocolbuffers::ResourceData* TextFieldOptions::release_fontfile() { + clear_has_fontfile(); + ::protocolbuffers::ResourceData* temp = fontfile_; + fontfile_ = NULL; + return temp; +} +inline void TextFieldOptions::set_allocated_fontfile(::protocolbuffers::ResourceData* fontfile) { + delete fontfile_; + fontfile_ = fontfile; + if (fontfile) { + set_has_fontfile(); + } else { + clear_has_fontfile(); + } +} + +// optional int32 fontSize = 5; +inline bool TextFieldOptions::has_fontsize() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void TextFieldOptions::set_has_fontsize() { + _has_bits_[0] |= 0x00000010u; +} +inline void TextFieldOptions::clear_has_fontsize() { + _has_bits_[0] &= ~0x00000010u; +} +inline void TextFieldOptions::clear_fontsize() { + fontsize_ = 0; + clear_has_fontsize(); +} +inline ::google::protobuf::int32 TextFieldOptions::fontsize() const { + return fontsize_; +} +inline void TextFieldOptions::set_fontsize(::google::protobuf::int32 value) { + set_has_fontsize(); + fontsize_ = value; +} + +// optional string text = 6; +inline bool TextFieldOptions::has_text() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void TextFieldOptions::set_has_text() { + _has_bits_[0] |= 0x00000020u; +} +inline void TextFieldOptions::clear_has_text() { + _has_bits_[0] &= ~0x00000020u; +} +inline void TextFieldOptions::clear_text() { + if (text_ != &::google::protobuf::internal::kEmptyString) { + text_->clear(); + } + clear_has_text(); +} +inline const ::std::string& TextFieldOptions::text() const { + return *text_; +} +inline void TextFieldOptions::set_text(const ::std::string& value) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + text_->assign(value); +} +inline void TextFieldOptions::set_text(const char* value) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + text_->assign(value); +} +inline void TextFieldOptions::set_text(const char* value, size_t size) { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + text_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextFieldOptions::mutable_text() { + set_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + text_ = new ::std::string; + } + return text_; +} +inline ::std::string* TextFieldOptions::release_text() { + clear_has_text(); + if (text_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = text_; + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextFieldOptions::set_allocated_text(::std::string* text) { + if (text_ != &::google::protobuf::internal::kEmptyString) { + delete text_; + } + if (text) { + set_has_text(); + text_ = text; + } else { + clear_has_text(); + text_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string placeHolder = 7; +inline bool TextFieldOptions::has_placeholder() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void TextFieldOptions::set_has_placeholder() { + _has_bits_[0] |= 0x00000040u; +} +inline void TextFieldOptions::clear_has_placeholder() { + _has_bits_[0] &= ~0x00000040u; +} +inline void TextFieldOptions::clear_placeholder() { + if (placeholder_ != &::google::protobuf::internal::kEmptyString) { + placeholder_->clear(); + } + clear_has_placeholder(); +} +inline const ::std::string& TextFieldOptions::placeholder() const { + return *placeholder_; +} +inline void TextFieldOptions::set_placeholder(const ::std::string& value) { + set_has_placeholder(); + if (placeholder_ == &::google::protobuf::internal::kEmptyString) { + placeholder_ = new ::std::string; + } + placeholder_->assign(value); +} +inline void TextFieldOptions::set_placeholder(const char* value) { + set_has_placeholder(); + if (placeholder_ == &::google::protobuf::internal::kEmptyString) { + placeholder_ = new ::std::string; + } + placeholder_->assign(value); +} +inline void TextFieldOptions::set_placeholder(const char* value, size_t size) { + set_has_placeholder(); + if (placeholder_ == &::google::protobuf::internal::kEmptyString) { + placeholder_ = new ::std::string; + } + placeholder_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextFieldOptions::mutable_placeholder() { + set_has_placeholder(); + if (placeholder_ == &::google::protobuf::internal::kEmptyString) { + placeholder_ = new ::std::string; + } + return placeholder_; +} +inline ::std::string* TextFieldOptions::release_placeholder() { + clear_has_placeholder(); + if (placeholder_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = placeholder_; + placeholder_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextFieldOptions::set_allocated_placeholder(::std::string* placeholder) { + if (placeholder_ != &::google::protobuf::internal::kEmptyString) { + delete placeholder_; + } + if (placeholder) { + set_has_placeholder(); + placeholder_ = placeholder; + } else { + clear_has_placeholder(); + placeholder_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional bool passwordEnable = 8; +inline bool TextFieldOptions::has_passwordenable() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void TextFieldOptions::set_has_passwordenable() { + _has_bits_[0] |= 0x00000080u; +} +inline void TextFieldOptions::clear_has_passwordenable() { + _has_bits_[0] &= ~0x00000080u; +} +inline void TextFieldOptions::clear_passwordenable() { + passwordenable_ = false; + clear_has_passwordenable(); +} +inline bool TextFieldOptions::passwordenable() const { + return passwordenable_; +} +inline void TextFieldOptions::set_passwordenable(bool value) { + set_has_passwordenable(); + passwordenable_ = value; +} + +// optional string passwordStyleText = 9; +inline bool TextFieldOptions::has_passwordstyletext() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void TextFieldOptions::set_has_passwordstyletext() { + _has_bits_[0] |= 0x00000100u; +} +inline void TextFieldOptions::clear_has_passwordstyletext() { + _has_bits_[0] &= ~0x00000100u; +} +inline void TextFieldOptions::clear_passwordstyletext() { + if (passwordstyletext_ != &::google::protobuf::internal::kEmptyString) { + passwordstyletext_->clear(); + } + clear_has_passwordstyletext(); +} +inline const ::std::string& TextFieldOptions::passwordstyletext() const { + return *passwordstyletext_; +} +inline void TextFieldOptions::set_passwordstyletext(const ::std::string& value) { + set_has_passwordstyletext(); + if (passwordstyletext_ == &::google::protobuf::internal::kEmptyString) { + passwordstyletext_ = new ::std::string; + } + passwordstyletext_->assign(value); +} +inline void TextFieldOptions::set_passwordstyletext(const char* value) { + set_has_passwordstyletext(); + if (passwordstyletext_ == &::google::protobuf::internal::kEmptyString) { + passwordstyletext_ = new ::std::string; + } + passwordstyletext_->assign(value); +} +inline void TextFieldOptions::set_passwordstyletext(const char* value, size_t size) { + set_has_passwordstyletext(); + if (passwordstyletext_ == &::google::protobuf::internal::kEmptyString) { + passwordstyletext_ = new ::std::string; + } + passwordstyletext_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TextFieldOptions::mutable_passwordstyletext() { + set_has_passwordstyletext(); + if (passwordstyletext_ == &::google::protobuf::internal::kEmptyString) { + passwordstyletext_ = new ::std::string; + } + return passwordstyletext_; +} +inline ::std::string* TextFieldOptions::release_passwordstyletext() { + clear_has_passwordstyletext(); + if (passwordstyletext_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = passwordstyletext_; + passwordstyletext_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TextFieldOptions::set_allocated_passwordstyletext(::std::string* passwordstyletext) { + if (passwordstyletext_ != &::google::protobuf::internal::kEmptyString) { + delete passwordstyletext_; + } + if (passwordstyletext) { + set_has_passwordstyletext(); + passwordstyletext_ = passwordstyletext; + } else { + clear_has_passwordstyletext(); + passwordstyletext_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional bool maxLengthEnable = 10; +inline bool TextFieldOptions::has_maxlengthenable() const { + return (_has_bits_[0] & 0x00000200u) != 0; +} +inline void TextFieldOptions::set_has_maxlengthenable() { + _has_bits_[0] |= 0x00000200u; +} +inline void TextFieldOptions::clear_has_maxlengthenable() { + _has_bits_[0] &= ~0x00000200u; +} +inline void TextFieldOptions::clear_maxlengthenable() { + maxlengthenable_ = false; + clear_has_maxlengthenable(); +} +inline bool TextFieldOptions::maxlengthenable() const { + return maxlengthenable_; +} +inline void TextFieldOptions::set_maxlengthenable(bool value) { + set_has_maxlengthenable(); + maxlengthenable_ = value; +} + +// optional int32 maxLength = 11; +inline bool TextFieldOptions::has_maxlength() const { + return (_has_bits_[0] & 0x00000400u) != 0; +} +inline void TextFieldOptions::set_has_maxlength() { + _has_bits_[0] |= 0x00000400u; +} +inline void TextFieldOptions::clear_has_maxlength() { + _has_bits_[0] &= ~0x00000400u; +} +inline void TextFieldOptions::clear_maxlength() { + maxlength_ = 0; + clear_has_maxlength(); +} +inline ::google::protobuf::int32 TextFieldOptions::maxlength() const { + return maxlength_; +} +inline void TextFieldOptions::set_maxlength(::google::protobuf::int32 value) { + set_has_maxlength(); + maxlength_ = value; +} + +// optional float areaWidth = 12; +inline bool TextFieldOptions::has_areawidth() const { + return (_has_bits_[0] & 0x00000800u) != 0; +} +inline void TextFieldOptions::set_has_areawidth() { + _has_bits_[0] |= 0x00000800u; +} +inline void TextFieldOptions::clear_has_areawidth() { + _has_bits_[0] &= ~0x00000800u; +} +inline void TextFieldOptions::clear_areawidth() { + areawidth_ = 0; + clear_has_areawidth(); +} +inline float TextFieldOptions::areawidth() const { + return areawidth_; +} +inline void TextFieldOptions::set_areawidth(float value) { + set_has_areawidth(); + areawidth_ = value; +} + +// optional float areaHeight = 13; +inline bool TextFieldOptions::has_areaheight() const { + return (_has_bits_[0] & 0x00001000u) != 0; +} +inline void TextFieldOptions::set_has_areaheight() { + _has_bits_[0] |= 0x00001000u; +} +inline void TextFieldOptions::clear_has_areaheight() { + _has_bits_[0] &= ~0x00001000u; +} +inline void TextFieldOptions::clear_areaheight() { + areaheight_ = 0; + clear_has_areaheight(); +} +inline float TextFieldOptions::areaheight() const { + return areaheight_; +} +inline void TextFieldOptions::set_areaheight(float value) { + set_has_areaheight(); + areaheight_ = value; +} + +// optional float anchorPointX = 15; +inline bool TextFieldOptions::has_anchorpointx() const { + return (_has_bits_[0] & 0x00002000u) != 0; +} +inline void TextFieldOptions::set_has_anchorpointx() { + _has_bits_[0] |= 0x00002000u; +} +inline void TextFieldOptions::clear_has_anchorpointx() { + _has_bits_[0] &= ~0x00002000u; +} +inline void TextFieldOptions::clear_anchorpointx() { + anchorpointx_ = 0; + clear_has_anchorpointx(); +} +inline float TextFieldOptions::anchorpointx() const { + return anchorpointx_; +} +inline void TextFieldOptions::set_anchorpointx(float value) { + set_has_anchorpointx(); + anchorpointx_ = value; +} + +// optional float anchorPointY = 16; +inline bool TextFieldOptions::has_anchorpointy() const { + return (_has_bits_[0] & 0x00004000u) != 0; +} +inline void TextFieldOptions::set_has_anchorpointy() { + _has_bits_[0] |= 0x00004000u; +} +inline void TextFieldOptions::clear_has_anchorpointy() { + _has_bits_[0] &= ~0x00004000u; +} +inline void TextFieldOptions::clear_anchorpointy() { + anchorpointy_ = 0; + clear_has_anchorpointy(); +} +inline float TextFieldOptions::anchorpointy() const { + return anchorpointy_; +} +inline void TextFieldOptions::set_anchorpointy(float value) { + set_has_anchorpointy(); + anchorpointy_ = value; +} + +// optional .protocolbuffers.ResourceData fontResource = 14; +inline bool TextFieldOptions::has_fontresource() const { + return (_has_bits_[0] & 0x00008000u) != 0; +} +inline void TextFieldOptions::set_has_fontresource() { + _has_bits_[0] |= 0x00008000u; +} +inline void TextFieldOptions::clear_has_fontresource() { + _has_bits_[0] &= ~0x00008000u; +} +inline void TextFieldOptions::clear_fontresource() { + if (fontresource_ != NULL) fontresource_->::protocolbuffers::ResourceData::Clear(); + clear_has_fontresource(); +} +inline const ::protocolbuffers::ResourceData& TextFieldOptions::fontresource() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return fontresource_ != NULL ? *fontresource_ : *default_instance().fontresource_; +#else + return fontresource_ != NULL ? *fontresource_ : *default_instance_->fontresource_; +#endif +} +inline ::protocolbuffers::ResourceData* TextFieldOptions::mutable_fontresource() { + set_has_fontresource(); + if (fontresource_ == NULL) fontresource_ = new ::protocolbuffers::ResourceData; + return fontresource_; +} +inline ::protocolbuffers::ResourceData* TextFieldOptions::release_fontresource() { + clear_has_fontresource(); + ::protocolbuffers::ResourceData* temp = fontresource_; + fontresource_ = NULL; + return temp; +} +inline void TextFieldOptions::set_allocated_fontresource(::protocolbuffers::ResourceData* fontresource) { + delete fontresource_; + fontresource_ = fontresource; + if (fontresource) { + set_has_fontresource(); + } else { + clear_has_fontresource(); + } +} + +// optional bool IsCustomSize = 17; +inline bool TextFieldOptions::has_iscustomsize() const { + return (_has_bits_[0] & 0x00010000u) != 0; +} +inline void TextFieldOptions::set_has_iscustomsize() { + _has_bits_[0] |= 0x00010000u; +} +inline void TextFieldOptions::clear_has_iscustomsize() { + _has_bits_[0] &= ~0x00010000u; +} +inline void TextFieldOptions::clear_iscustomsize() { + iscustomsize_ = false; + clear_has_iscustomsize(); +} +inline bool TextFieldOptions::iscustomsize() const { + return iscustomsize_; +} +inline void TextFieldOptions::set_iscustomsize(bool value) { + set_has_iscustomsize(); + iscustomsize_ = value; +} + +// ------------------------------------------------------------------- + +// TMXTiledMapOptions + +// optional string tmxFile = 1; +inline bool TMXTiledMapOptions::has_tmxfile() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void TMXTiledMapOptions::set_has_tmxfile() { + _has_bits_[0] |= 0x00000001u; +} +inline void TMXTiledMapOptions::clear_has_tmxfile() { + _has_bits_[0] &= ~0x00000001u; +} +inline void TMXTiledMapOptions::clear_tmxfile() { + if (tmxfile_ != &::google::protobuf::internal::kEmptyString) { + tmxfile_->clear(); + } + clear_has_tmxfile(); +} +inline const ::std::string& TMXTiledMapOptions::tmxfile() const { + return *tmxfile_; +} +inline void TMXTiledMapOptions::set_tmxfile(const ::std::string& value) { + set_has_tmxfile(); + if (tmxfile_ == &::google::protobuf::internal::kEmptyString) { + tmxfile_ = new ::std::string; + } + tmxfile_->assign(value); +} +inline void TMXTiledMapOptions::set_tmxfile(const char* value) { + set_has_tmxfile(); + if (tmxfile_ == &::google::protobuf::internal::kEmptyString) { + tmxfile_ = new ::std::string; + } + tmxfile_->assign(value); +} +inline void TMXTiledMapOptions::set_tmxfile(const char* value, size_t size) { + set_has_tmxfile(); + if (tmxfile_ == &::google::protobuf::internal::kEmptyString) { + tmxfile_ = new ::std::string; + } + tmxfile_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TMXTiledMapOptions::mutable_tmxfile() { + set_has_tmxfile(); + if (tmxfile_ == &::google::protobuf::internal::kEmptyString) { + tmxfile_ = new ::std::string; + } + return tmxfile_; +} +inline ::std::string* TMXTiledMapOptions::release_tmxfile() { + clear_has_tmxfile(); + if (tmxfile_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = tmxfile_; + tmxfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TMXTiledMapOptions::set_allocated_tmxfile(::std::string* tmxfile) { + if (tmxfile_ != &::google::protobuf::internal::kEmptyString) { + delete tmxfile_; + } + if (tmxfile) { + set_has_tmxfile(); + tmxfile_ = tmxfile; + } else { + clear_has_tmxfile(); + tmxfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string tmxString = 2; +inline bool TMXTiledMapOptions::has_tmxstring() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void TMXTiledMapOptions::set_has_tmxstring() { + _has_bits_[0] |= 0x00000002u; +} +inline void TMXTiledMapOptions::clear_has_tmxstring() { + _has_bits_[0] &= ~0x00000002u; +} +inline void TMXTiledMapOptions::clear_tmxstring() { + if (tmxstring_ != &::google::protobuf::internal::kEmptyString) { + tmxstring_->clear(); + } + clear_has_tmxstring(); +} +inline const ::std::string& TMXTiledMapOptions::tmxstring() const { + return *tmxstring_; +} +inline void TMXTiledMapOptions::set_tmxstring(const ::std::string& value) { + set_has_tmxstring(); + if (tmxstring_ == &::google::protobuf::internal::kEmptyString) { + tmxstring_ = new ::std::string; + } + tmxstring_->assign(value); +} +inline void TMXTiledMapOptions::set_tmxstring(const char* value) { + set_has_tmxstring(); + if (tmxstring_ == &::google::protobuf::internal::kEmptyString) { + tmxstring_ = new ::std::string; + } + tmxstring_->assign(value); +} +inline void TMXTiledMapOptions::set_tmxstring(const char* value, size_t size) { + set_has_tmxstring(); + if (tmxstring_ == &::google::protobuf::internal::kEmptyString) { + tmxstring_ = new ::std::string; + } + tmxstring_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TMXTiledMapOptions::mutable_tmxstring() { + set_has_tmxstring(); + if (tmxstring_ == &::google::protobuf::internal::kEmptyString) { + tmxstring_ = new ::std::string; + } + return tmxstring_; +} +inline ::std::string* TMXTiledMapOptions::release_tmxstring() { + clear_has_tmxstring(); + if (tmxstring_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = tmxstring_; + tmxstring_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TMXTiledMapOptions::set_allocated_tmxstring(::std::string* tmxstring) { + if (tmxstring_ != &::google::protobuf::internal::kEmptyString) { + delete tmxstring_; + } + if (tmxstring) { + set_has_tmxstring(); + tmxstring_ = tmxstring; + } else { + clear_has_tmxstring(); + tmxstring_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string resourcePath = 3; +inline bool TMXTiledMapOptions::has_resourcepath() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void TMXTiledMapOptions::set_has_resourcepath() { + _has_bits_[0] |= 0x00000004u; +} +inline void TMXTiledMapOptions::clear_has_resourcepath() { + _has_bits_[0] &= ~0x00000004u; +} +inline void TMXTiledMapOptions::clear_resourcepath() { + if (resourcepath_ != &::google::protobuf::internal::kEmptyString) { + resourcepath_->clear(); + } + clear_has_resourcepath(); +} +inline const ::std::string& TMXTiledMapOptions::resourcepath() const { + return *resourcepath_; +} +inline void TMXTiledMapOptions::set_resourcepath(const ::std::string& value) { + set_has_resourcepath(); + if (resourcepath_ == &::google::protobuf::internal::kEmptyString) { + resourcepath_ = new ::std::string; + } + resourcepath_->assign(value); +} +inline void TMXTiledMapOptions::set_resourcepath(const char* value) { + set_has_resourcepath(); + if (resourcepath_ == &::google::protobuf::internal::kEmptyString) { + resourcepath_ = new ::std::string; + } + resourcepath_->assign(value); +} +inline void TMXTiledMapOptions::set_resourcepath(const char* value, size_t size) { + set_has_resourcepath(); + if (resourcepath_ == &::google::protobuf::internal::kEmptyString) { + resourcepath_ = new ::std::string; + } + resourcepath_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TMXTiledMapOptions::mutable_resourcepath() { + set_has_resourcepath(); + if (resourcepath_ == &::google::protobuf::internal::kEmptyString) { + resourcepath_ = new ::std::string; + } + return resourcepath_; +} +inline ::std::string* TMXTiledMapOptions::release_resourcepath() { + clear_has_resourcepath(); + if (resourcepath_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = resourcepath_; + resourcepath_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TMXTiledMapOptions::set_allocated_resourcepath(::std::string* resourcepath) { + if (resourcepath_ != &::google::protobuf::internal::kEmptyString) { + delete resourcepath_; + } + if (resourcepath) { + set_has_resourcepath(); + resourcepath_ = resourcepath; + } else { + clear_has_resourcepath(); + resourcepath_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ResourceData fileNameData = 4; +inline bool TMXTiledMapOptions::has_filenamedata() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void TMXTiledMapOptions::set_has_filenamedata() { + _has_bits_[0] |= 0x00000008u; +} +inline void TMXTiledMapOptions::clear_has_filenamedata() { + _has_bits_[0] &= ~0x00000008u; +} +inline void TMXTiledMapOptions::clear_filenamedata() { + if (filenamedata_ != NULL) filenamedata_->::protocolbuffers::ResourceData::Clear(); + clear_has_filenamedata(); +} +inline const ::protocolbuffers::ResourceData& TMXTiledMapOptions::filenamedata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return filenamedata_ != NULL ? *filenamedata_ : *default_instance().filenamedata_; +#else + return filenamedata_ != NULL ? *filenamedata_ : *default_instance_->filenamedata_; +#endif +} +inline ::protocolbuffers::ResourceData* TMXTiledMapOptions::mutable_filenamedata() { + set_has_filenamedata(); + if (filenamedata_ == NULL) filenamedata_ = new ::protocolbuffers::ResourceData; + return filenamedata_; +} +inline ::protocolbuffers::ResourceData* TMXTiledMapOptions::release_filenamedata() { + clear_has_filenamedata(); + ::protocolbuffers::ResourceData* temp = filenamedata_; + filenamedata_ = NULL; + return temp; +} +inline void TMXTiledMapOptions::set_allocated_filenamedata(::protocolbuffers::ResourceData* filenamedata) { + delete filenamedata_; + filenamedata_ = filenamedata; + if (filenamedata) { + set_has_filenamedata(); + } else { + clear_has_filenamedata(); + } +} + +// ------------------------------------------------------------------- + +// ParticleSystemOptions + +// optional string plistFile = 1; +inline bool ParticleSystemOptions::has_plistfile() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ParticleSystemOptions::set_has_plistfile() { + _has_bits_[0] |= 0x00000001u; +} +inline void ParticleSystemOptions::clear_has_plistfile() { + _has_bits_[0] &= ~0x00000001u; +} +inline void ParticleSystemOptions::clear_plistfile() { + if (plistfile_ != &::google::protobuf::internal::kEmptyString) { + plistfile_->clear(); + } + clear_has_plistfile(); +} +inline const ::std::string& ParticleSystemOptions::plistfile() const { + return *plistfile_; +} +inline void ParticleSystemOptions::set_plistfile(const ::std::string& value) { + set_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + plistfile_ = new ::std::string; + } + plistfile_->assign(value); +} +inline void ParticleSystemOptions::set_plistfile(const char* value) { + set_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + plistfile_ = new ::std::string; + } + plistfile_->assign(value); +} +inline void ParticleSystemOptions::set_plistfile(const char* value, size_t size) { + set_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + plistfile_ = new ::std::string; + } + plistfile_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ParticleSystemOptions::mutable_plistfile() { + set_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + plistfile_ = new ::std::string; + } + return plistfile_; +} +inline ::std::string* ParticleSystemOptions::release_plistfile() { + clear_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = plistfile_; + plistfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ParticleSystemOptions::set_allocated_plistfile(::std::string* plistfile) { + if (plistfile_ != &::google::protobuf::internal::kEmptyString) { + delete plistfile_; + } + if (plistfile) { + set_has_plistfile(); + plistfile_ = plistfile; + } else { + clear_has_plistfile(); + plistfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 totalParticles = 2; +inline bool ParticleSystemOptions::has_totalparticles() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ParticleSystemOptions::set_has_totalparticles() { + _has_bits_[0] |= 0x00000002u; +} +inline void ParticleSystemOptions::clear_has_totalparticles() { + _has_bits_[0] &= ~0x00000002u; +} +inline void ParticleSystemOptions::clear_totalparticles() { + totalparticles_ = 0; + clear_has_totalparticles(); +} +inline ::google::protobuf::int32 ParticleSystemOptions::totalparticles() const { + return totalparticles_; +} +inline void ParticleSystemOptions::set_totalparticles(::google::protobuf::int32 value) { + set_has_totalparticles(); + totalparticles_ = value; +} + +// optional .protocolbuffers.ResourceData fileNameData = 3; +inline bool ParticleSystemOptions::has_filenamedata() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void ParticleSystemOptions::set_has_filenamedata() { + _has_bits_[0] |= 0x00000004u; +} +inline void ParticleSystemOptions::clear_has_filenamedata() { + _has_bits_[0] &= ~0x00000004u; +} +inline void ParticleSystemOptions::clear_filenamedata() { + if (filenamedata_ != NULL) filenamedata_->::protocolbuffers::ResourceData::Clear(); + clear_has_filenamedata(); +} +inline const ::protocolbuffers::ResourceData& ParticleSystemOptions::filenamedata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return filenamedata_ != NULL ? *filenamedata_ : *default_instance().filenamedata_; +#else + return filenamedata_ != NULL ? *filenamedata_ : *default_instance_->filenamedata_; +#endif +} +inline ::protocolbuffers::ResourceData* ParticleSystemOptions::mutable_filenamedata() { + set_has_filenamedata(); + if (filenamedata_ == NULL) filenamedata_ = new ::protocolbuffers::ResourceData; + return filenamedata_; +} +inline ::protocolbuffers::ResourceData* ParticleSystemOptions::release_filenamedata() { + clear_has_filenamedata(); + ::protocolbuffers::ResourceData* temp = filenamedata_; + filenamedata_ = NULL; + return temp; +} +inline void ParticleSystemOptions::set_allocated_filenamedata(::protocolbuffers::ResourceData* filenamedata) { + delete filenamedata_; + filenamedata_ = filenamedata; + if (filenamedata) { + set_has_filenamedata(); + } else { + clear_has_filenamedata(); + } +} + +// ------------------------------------------------------------------- + +// ProjectNodeOptions + +// optional string fileName = 1; +inline bool ProjectNodeOptions::has_filename() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ProjectNodeOptions::set_has_filename() { + _has_bits_[0] |= 0x00000001u; +} +inline void ProjectNodeOptions::clear_has_filename() { + _has_bits_[0] &= ~0x00000001u; +} +inline void ProjectNodeOptions::clear_filename() { + if (filename_ != &::google::protobuf::internal::kEmptyString) { + filename_->clear(); + } + clear_has_filename(); +} +inline const ::std::string& ProjectNodeOptions::filename() const { + return *filename_; +} +inline void ProjectNodeOptions::set_filename(const ::std::string& value) { + set_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + filename_ = new ::std::string; + } + filename_->assign(value); +} +inline void ProjectNodeOptions::set_filename(const char* value) { + set_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + filename_ = new ::std::string; + } + filename_->assign(value); +} +inline void ProjectNodeOptions::set_filename(const char* value, size_t size) { + set_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + filename_ = new ::std::string; + } + filename_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ProjectNodeOptions::mutable_filename() { + set_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + filename_ = new ::std::string; + } + return filename_; +} +inline ::std::string* ProjectNodeOptions::release_filename() { + clear_has_filename(); + if (filename_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = filename_; + filename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ProjectNodeOptions::set_allocated_filename(::std::string* filename) { + if (filename_ != &::google::protobuf::internal::kEmptyString) { + delete filename_; + } + if (filename) { + set_has_filename(); + filename_ = filename; + } else { + clear_has_filename(); + filename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// ------------------------------------------------------------------- + +// ComponentOptions + +// optional string type = 1; +inline bool ComponentOptions::has_type() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ComponentOptions::set_has_type() { + _has_bits_[0] |= 0x00000001u; +} +inline void ComponentOptions::clear_has_type() { + _has_bits_[0] &= ~0x00000001u; +} +inline void ComponentOptions::clear_type() { + if (type_ != &::google::protobuf::internal::kEmptyString) { + type_->clear(); + } + clear_has_type(); +} +inline const ::std::string& ComponentOptions::type() const { + return *type_; +} +inline void ComponentOptions::set_type(const ::std::string& value) { + set_has_type(); + if (type_ == &::google::protobuf::internal::kEmptyString) { + type_ = new ::std::string; + } + type_->assign(value); +} +inline void ComponentOptions::set_type(const char* value) { + set_has_type(); + if (type_ == &::google::protobuf::internal::kEmptyString) { + type_ = new ::std::string; + } + type_->assign(value); +} +inline void ComponentOptions::set_type(const char* value, size_t size) { + set_has_type(); + if (type_ == &::google::protobuf::internal::kEmptyString) { + type_ = new ::std::string; + } + type_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ComponentOptions::mutable_type() { + set_has_type(); + if (type_ == &::google::protobuf::internal::kEmptyString) { + type_ = new ::std::string; + } + return type_; +} +inline ::std::string* ComponentOptions::release_type() { + clear_has_type(); + if (type_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = type_; + type_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ComponentOptions::set_allocated_type(::std::string* type) { + if (type_ != &::google::protobuf::internal::kEmptyString) { + delete type_; + } + if (type) { + set_has_type(); + type_ = type; + } else { + clear_has_type(); + type_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional .protocolbuffers.ComAudioOptions comAudioOptions = 2; +inline bool ComponentOptions::has_comaudiooptions() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ComponentOptions::set_has_comaudiooptions() { + _has_bits_[0] |= 0x00000002u; +} +inline void ComponentOptions::clear_has_comaudiooptions() { + _has_bits_[0] &= ~0x00000002u; +} +inline void ComponentOptions::clear_comaudiooptions() { + if (comaudiooptions_ != NULL) comaudiooptions_->::protocolbuffers::ComAudioOptions::Clear(); + clear_has_comaudiooptions(); +} +inline const ::protocolbuffers::ComAudioOptions& ComponentOptions::comaudiooptions() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return comaudiooptions_ != NULL ? *comaudiooptions_ : *default_instance().comaudiooptions_; +#else + return comaudiooptions_ != NULL ? *comaudiooptions_ : *default_instance_->comaudiooptions_; +#endif +} +inline ::protocolbuffers::ComAudioOptions* ComponentOptions::mutable_comaudiooptions() { + set_has_comaudiooptions(); + if (comaudiooptions_ == NULL) comaudiooptions_ = new ::protocolbuffers::ComAudioOptions; + return comaudiooptions_; +} +inline ::protocolbuffers::ComAudioOptions* ComponentOptions::release_comaudiooptions() { + clear_has_comaudiooptions(); + ::protocolbuffers::ComAudioOptions* temp = comaudiooptions_; + comaudiooptions_ = NULL; + return temp; +} +inline void ComponentOptions::set_allocated_comaudiooptions(::protocolbuffers::ComAudioOptions* comaudiooptions) { + delete comaudiooptions_; + comaudiooptions_ = comaudiooptions; + if (comaudiooptions) { + set_has_comaudiooptions(); + } else { + clear_has_comaudiooptions(); + } +} + +// ------------------------------------------------------------------- + +// ComAudioOptions + +// optional string name = 1; +inline bool ComAudioOptions::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ComAudioOptions::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void ComAudioOptions::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void ComAudioOptions::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& ComAudioOptions::name() const { + return *name_; +} +inline void ComAudioOptions::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void ComAudioOptions::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void ComAudioOptions::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* ComAudioOptions::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* ComAudioOptions::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void ComAudioOptions::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional bool enabled = 2; +inline bool ComAudioOptions::has_enabled() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ComAudioOptions::set_has_enabled() { + _has_bits_[0] |= 0x00000002u; +} +inline void ComAudioOptions::clear_has_enabled() { + _has_bits_[0] &= ~0x00000002u; +} +inline void ComAudioOptions::clear_enabled() { + enabled_ = false; + clear_has_enabled(); +} +inline bool ComAudioOptions::enabled() const { + return enabled_; +} +inline void ComAudioOptions::set_enabled(bool value) { + set_has_enabled(); + enabled_ = value; +} + +// optional bool loop = 3; +inline bool ComAudioOptions::has_loop() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void ComAudioOptions::set_has_loop() { + _has_bits_[0] |= 0x00000004u; +} +inline void ComAudioOptions::clear_has_loop() { + _has_bits_[0] &= ~0x00000004u; +} +inline void ComAudioOptions::clear_loop() { + loop_ = false; + clear_has_loop(); +} +inline bool ComAudioOptions::loop() const { + return loop_; +} +inline void ComAudioOptions::set_loop(bool value) { + set_has_loop(); + loop_ = value; +} + +// optional int32 volume = 4; +inline bool ComAudioOptions::has_volume() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void ComAudioOptions::set_has_volume() { + _has_bits_[0] |= 0x00000008u; +} +inline void ComAudioOptions::clear_has_volume() { + _has_bits_[0] &= ~0x00000008u; +} +inline void ComAudioOptions::clear_volume() { + volume_ = 0; + clear_has_volume(); +} +inline ::google::protobuf::int32 ComAudioOptions::volume() const { + return volume_; +} +inline void ComAudioOptions::set_volume(::google::protobuf::int32 value) { + set_has_volume(); + volume_ = value; +} + +// optional .protocolbuffers.ResourceData fileNameData = 5; +inline bool ComAudioOptions::has_filenamedata() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void ComAudioOptions::set_has_filenamedata() { + _has_bits_[0] |= 0x00000010u; +} +inline void ComAudioOptions::clear_has_filenamedata() { + _has_bits_[0] &= ~0x00000010u; +} +inline void ComAudioOptions::clear_filenamedata() { + if (filenamedata_ != NULL) filenamedata_->::protocolbuffers::ResourceData::Clear(); + clear_has_filenamedata(); +} +inline const ::protocolbuffers::ResourceData& ComAudioOptions::filenamedata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return filenamedata_ != NULL ? *filenamedata_ : *default_instance().filenamedata_; +#else + return filenamedata_ != NULL ? *filenamedata_ : *default_instance_->filenamedata_; +#endif +} +inline ::protocolbuffers::ResourceData* ComAudioOptions::mutable_filenamedata() { + set_has_filenamedata(); + if (filenamedata_ == NULL) filenamedata_ = new ::protocolbuffers::ResourceData; + return filenamedata_; +} +inline ::protocolbuffers::ResourceData* ComAudioOptions::release_filenamedata() { + clear_has_filenamedata(); + ::protocolbuffers::ResourceData* temp = filenamedata_; + filenamedata_ = NULL; + return temp; +} +inline void ComAudioOptions::set_allocated_filenamedata(::protocolbuffers::ResourceData* filenamedata) { + delete filenamedata_; + filenamedata_ = filenamedata; + if (filenamedata) { + set_has_filenamedata(); + } else { + clear_has_filenamedata(); + } +} + +// ------------------------------------------------------------------- + +// NodeAction + +// optional string name = 1; +inline bool NodeAction::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void NodeAction::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void NodeAction::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void NodeAction::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& NodeAction::name() const { + return *name_; +} +inline void NodeAction::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void NodeAction::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void NodeAction::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* NodeAction::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* NodeAction::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void NodeAction::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool NodeAction::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void NodeAction::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void NodeAction::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void NodeAction::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& NodeAction::classname() const { + return *classname_; +} +inline void NodeAction::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void NodeAction::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void NodeAction::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* NodeAction::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* NodeAction::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void NodeAction::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 duration = 3; +inline bool NodeAction::has_duration() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void NodeAction::set_has_duration() { + _has_bits_[0] |= 0x00000004u; +} +inline void NodeAction::clear_has_duration() { + _has_bits_[0] &= ~0x00000004u; +} +inline void NodeAction::clear_duration() { + duration_ = 0; + clear_has_duration(); +} +inline ::google::protobuf::int32 NodeAction::duration() const { + return duration_; +} +inline void NodeAction::set_duration(::google::protobuf::int32 value) { + set_has_duration(); + duration_ = value; +} + +// optional float speed = 4; +inline bool NodeAction::has_speed() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void NodeAction::set_has_speed() { + _has_bits_[0] |= 0x00000008u; +} +inline void NodeAction::clear_has_speed() { + _has_bits_[0] &= ~0x00000008u; +} +inline void NodeAction::clear_speed() { + speed_ = 0; + clear_has_speed(); +} +inline float NodeAction::speed() const { + return speed_; +} +inline void NodeAction::set_speed(float value) { + set_has_speed(); + speed_ = value; +} + +// repeated .protocolbuffers.TimeLine timelines = 5; +inline int NodeAction::timelines_size() const { + return timelines_.size(); +} +inline void NodeAction::clear_timelines() { + timelines_.Clear(); +} +inline const ::protocolbuffers::TimeLine& NodeAction::timelines(int index) const { + return timelines_.Get(index); +} +inline ::protocolbuffers::TimeLine* NodeAction::mutable_timelines(int index) { + return timelines_.Mutable(index); +} +inline ::protocolbuffers::TimeLine* NodeAction::add_timelines() { + return timelines_.Add(); +} +inline const ::google::protobuf::RepeatedPtrField< ::protocolbuffers::TimeLine >& +NodeAction::timelines() const { + return timelines_; +} +inline ::google::protobuf::RepeatedPtrField< ::protocolbuffers::TimeLine >* +NodeAction::mutable_timelines() { + return &timelines_; +} + +// ------------------------------------------------------------------- + +// TimeLine + +// optional string name = 1; +inline bool TimeLine::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void TimeLine::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void TimeLine::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void TimeLine::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& TimeLine::name() const { + return *name_; +} +inline void TimeLine::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLine::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLine::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLine::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* TimeLine::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLine::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool TimeLine::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void TimeLine::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void TimeLine::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void TimeLine::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& TimeLine::classname() const { + return *classname_; +} +inline void TimeLine::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLine::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLine::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLine::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* TimeLine::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLine::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string frameType = 3; +inline bool TimeLine::has_frametype() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void TimeLine::set_has_frametype() { + _has_bits_[0] |= 0x00000004u; +} +inline void TimeLine::clear_has_frametype() { + _has_bits_[0] &= ~0x00000004u; +} +inline void TimeLine::clear_frametype() { + if (frametype_ != &::google::protobuf::internal::kEmptyString) { + frametype_->clear(); + } + clear_has_frametype(); +} +inline const ::std::string& TimeLine::frametype() const { + return *frametype_; +} +inline void TimeLine::set_frametype(const ::std::string& value) { + set_has_frametype(); + if (frametype_ == &::google::protobuf::internal::kEmptyString) { + frametype_ = new ::std::string; + } + frametype_->assign(value); +} +inline void TimeLine::set_frametype(const char* value) { + set_has_frametype(); + if (frametype_ == &::google::protobuf::internal::kEmptyString) { + frametype_ = new ::std::string; + } + frametype_->assign(value); +} +inline void TimeLine::set_frametype(const char* value, size_t size) { + set_has_frametype(); + if (frametype_ == &::google::protobuf::internal::kEmptyString) { + frametype_ = new ::std::string; + } + frametype_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLine::mutable_frametype() { + set_has_frametype(); + if (frametype_ == &::google::protobuf::internal::kEmptyString) { + frametype_ = new ::std::string; + } + return frametype_; +} +inline ::std::string* TimeLine::release_frametype() { + clear_has_frametype(); + if (frametype_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = frametype_; + frametype_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLine::set_allocated_frametype(::std::string* frametype) { + if (frametype_ != &::google::protobuf::internal::kEmptyString) { + delete frametype_; + } + if (frametype) { + set_has_frametype(); + frametype_ = frametype; + } else { + clear_has_frametype(); + frametype_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 actionTag = 4; +inline bool TimeLine::has_actiontag() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void TimeLine::set_has_actiontag() { + _has_bits_[0] |= 0x00000008u; +} +inline void TimeLine::clear_has_actiontag() { + _has_bits_[0] &= ~0x00000008u; +} +inline void TimeLine::clear_actiontag() { + actiontag_ = 0; + clear_has_actiontag(); +} +inline ::google::protobuf::int32 TimeLine::actiontag() const { + return actiontag_; +} +inline void TimeLine::set_actiontag(::google::protobuf::int32 value) { + set_has_actiontag(); + actiontag_ = value; +} + +// repeated .protocolbuffers.Frame frames = 5; +inline int TimeLine::frames_size() const { + return frames_.size(); +} +inline void TimeLine::clear_frames() { + frames_.Clear(); +} +inline const ::protocolbuffers::Frame& TimeLine::frames(int index) const { + return frames_.Get(index); +} +inline ::protocolbuffers::Frame* TimeLine::mutable_frames(int index) { + return frames_.Mutable(index); +} +inline ::protocolbuffers::Frame* TimeLine::add_frames() { + return frames_.Add(); +} +inline const ::google::protobuf::RepeatedPtrField< ::protocolbuffers::Frame >& +TimeLine::frames() const { + return frames_; +} +inline ::google::protobuf::RepeatedPtrField< ::protocolbuffers::Frame >* +TimeLine::mutable_frames() { + return &frames_; +} + +// ------------------------------------------------------------------- + +// Frame + +// optional .protocolbuffers.TimeLineBoolFrame visibleFrame = 5; +inline bool Frame::has_visibleframe() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void Frame::set_has_visibleframe() { + _has_bits_[0] |= 0x00000001u; +} +inline void Frame::clear_has_visibleframe() { + _has_bits_[0] &= ~0x00000001u; +} +inline void Frame::clear_visibleframe() { + if (visibleframe_ != NULL) visibleframe_->::protocolbuffers::TimeLineBoolFrame::Clear(); + clear_has_visibleframe(); +} +inline const ::protocolbuffers::TimeLineBoolFrame& Frame::visibleframe() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return visibleframe_ != NULL ? *visibleframe_ : *default_instance().visibleframe_; +#else + return visibleframe_ != NULL ? *visibleframe_ : *default_instance_->visibleframe_; +#endif +} +inline ::protocolbuffers::TimeLineBoolFrame* Frame::mutable_visibleframe() { + set_has_visibleframe(); + if (visibleframe_ == NULL) visibleframe_ = new ::protocolbuffers::TimeLineBoolFrame; + return visibleframe_; +} +inline ::protocolbuffers::TimeLineBoolFrame* Frame::release_visibleframe() { + clear_has_visibleframe(); + ::protocolbuffers::TimeLineBoolFrame* temp = visibleframe_; + visibleframe_ = NULL; + return temp; +} +inline void Frame::set_allocated_visibleframe(::protocolbuffers::TimeLineBoolFrame* visibleframe) { + delete visibleframe_; + visibleframe_ = visibleframe; + if (visibleframe) { + set_has_visibleframe(); + } else { + clear_has_visibleframe(); + } +} + +// optional .protocolbuffers.TimeLineIntFrame zOrderFrame = 6; +inline bool Frame::has_zorderframe() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void Frame::set_has_zorderframe() { + _has_bits_[0] |= 0x00000002u; +} +inline void Frame::clear_has_zorderframe() { + _has_bits_[0] &= ~0x00000002u; +} +inline void Frame::clear_zorderframe() { + if (zorderframe_ != NULL) zorderframe_->::protocolbuffers::TimeLineIntFrame::Clear(); + clear_has_zorderframe(); +} +inline const ::protocolbuffers::TimeLineIntFrame& Frame::zorderframe() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return zorderframe_ != NULL ? *zorderframe_ : *default_instance().zorderframe_; +#else + return zorderframe_ != NULL ? *zorderframe_ : *default_instance_->zorderframe_; +#endif +} +inline ::protocolbuffers::TimeLineIntFrame* Frame::mutable_zorderframe() { + set_has_zorderframe(); + if (zorderframe_ == NULL) zorderframe_ = new ::protocolbuffers::TimeLineIntFrame; + return zorderframe_; +} +inline ::protocolbuffers::TimeLineIntFrame* Frame::release_zorderframe() { + clear_has_zorderframe(); + ::protocolbuffers::TimeLineIntFrame* temp = zorderframe_; + zorderframe_ = NULL; + return temp; +} +inline void Frame::set_allocated_zorderframe(::protocolbuffers::TimeLineIntFrame* zorderframe) { + delete zorderframe_; + zorderframe_ = zorderframe; + if (zorderframe) { + set_has_zorderframe(); + } else { + clear_has_zorderframe(); + } +} + +// optional .protocolbuffers.TimeLinePointFrame rotationSkewFrame = 7; +inline bool Frame::has_rotationskewframe() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void Frame::set_has_rotationskewframe() { + _has_bits_[0] |= 0x00000004u; +} +inline void Frame::clear_has_rotationskewframe() { + _has_bits_[0] &= ~0x00000004u; +} +inline void Frame::clear_rotationskewframe() { + if (rotationskewframe_ != NULL) rotationskewframe_->::protocolbuffers::TimeLinePointFrame::Clear(); + clear_has_rotationskewframe(); +} +inline const ::protocolbuffers::TimeLinePointFrame& Frame::rotationskewframe() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return rotationskewframe_ != NULL ? *rotationskewframe_ : *default_instance().rotationskewframe_; +#else + return rotationskewframe_ != NULL ? *rotationskewframe_ : *default_instance_->rotationskewframe_; +#endif +} +inline ::protocolbuffers::TimeLinePointFrame* Frame::mutable_rotationskewframe() { + set_has_rotationskewframe(); + if (rotationskewframe_ == NULL) rotationskewframe_ = new ::protocolbuffers::TimeLinePointFrame; + return rotationskewframe_; +} +inline ::protocolbuffers::TimeLinePointFrame* Frame::release_rotationskewframe() { + clear_has_rotationskewframe(); + ::protocolbuffers::TimeLinePointFrame* temp = rotationskewframe_; + rotationskewframe_ = NULL; + return temp; +} +inline void Frame::set_allocated_rotationskewframe(::protocolbuffers::TimeLinePointFrame* rotationskewframe) { + delete rotationskewframe_; + rotationskewframe_ = rotationskewframe; + if (rotationskewframe) { + set_has_rotationskewframe(); + } else { + clear_has_rotationskewframe(); + } +} + +// optional .protocolbuffers.TimeLineStringFrame eventFrame = 8; +inline bool Frame::has_eventframe() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void Frame::set_has_eventframe() { + _has_bits_[0] |= 0x00000008u; +} +inline void Frame::clear_has_eventframe() { + _has_bits_[0] &= ~0x00000008u; +} +inline void Frame::clear_eventframe() { + if (eventframe_ != NULL) eventframe_->::protocolbuffers::TimeLineStringFrame::Clear(); + clear_has_eventframe(); +} +inline const ::protocolbuffers::TimeLineStringFrame& Frame::eventframe() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return eventframe_ != NULL ? *eventframe_ : *default_instance().eventframe_; +#else + return eventframe_ != NULL ? *eventframe_ : *default_instance_->eventframe_; +#endif +} +inline ::protocolbuffers::TimeLineStringFrame* Frame::mutable_eventframe() { + set_has_eventframe(); + if (eventframe_ == NULL) eventframe_ = new ::protocolbuffers::TimeLineStringFrame; + return eventframe_; +} +inline ::protocolbuffers::TimeLineStringFrame* Frame::release_eventframe() { + clear_has_eventframe(); + ::protocolbuffers::TimeLineStringFrame* temp = eventframe_; + eventframe_ = NULL; + return temp; +} +inline void Frame::set_allocated_eventframe(::protocolbuffers::TimeLineStringFrame* eventframe) { + delete eventframe_; + eventframe_ = eventframe; + if (eventframe) { + set_has_eventframe(); + } else { + clear_has_eventframe(); + } +} + +// optional .protocolbuffers.TimeLinePointFrame anchorPointFrame = 9; +inline bool Frame::has_anchorpointframe() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void Frame::set_has_anchorpointframe() { + _has_bits_[0] |= 0x00000010u; +} +inline void Frame::clear_has_anchorpointframe() { + _has_bits_[0] &= ~0x00000010u; +} +inline void Frame::clear_anchorpointframe() { + if (anchorpointframe_ != NULL) anchorpointframe_->::protocolbuffers::TimeLinePointFrame::Clear(); + clear_has_anchorpointframe(); +} +inline const ::protocolbuffers::TimeLinePointFrame& Frame::anchorpointframe() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return anchorpointframe_ != NULL ? *anchorpointframe_ : *default_instance().anchorpointframe_; +#else + return anchorpointframe_ != NULL ? *anchorpointframe_ : *default_instance_->anchorpointframe_; +#endif +} +inline ::protocolbuffers::TimeLinePointFrame* Frame::mutable_anchorpointframe() { + set_has_anchorpointframe(); + if (anchorpointframe_ == NULL) anchorpointframe_ = new ::protocolbuffers::TimeLinePointFrame; + return anchorpointframe_; +} +inline ::protocolbuffers::TimeLinePointFrame* Frame::release_anchorpointframe() { + clear_has_anchorpointframe(); + ::protocolbuffers::TimeLinePointFrame* temp = anchorpointframe_; + anchorpointframe_ = NULL; + return temp; +} +inline void Frame::set_allocated_anchorpointframe(::protocolbuffers::TimeLinePointFrame* anchorpointframe) { + delete anchorpointframe_; + anchorpointframe_ = anchorpointframe; + if (anchorpointframe) { + set_has_anchorpointframe(); + } else { + clear_has_anchorpointframe(); + } +} + +// optional .protocolbuffers.TimeLinePointFrame positionFrame = 10; +inline bool Frame::has_positionframe() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void Frame::set_has_positionframe() { + _has_bits_[0] |= 0x00000020u; +} +inline void Frame::clear_has_positionframe() { + _has_bits_[0] &= ~0x00000020u; +} +inline void Frame::clear_positionframe() { + if (positionframe_ != NULL) positionframe_->::protocolbuffers::TimeLinePointFrame::Clear(); + clear_has_positionframe(); +} +inline const ::protocolbuffers::TimeLinePointFrame& Frame::positionframe() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return positionframe_ != NULL ? *positionframe_ : *default_instance().positionframe_; +#else + return positionframe_ != NULL ? *positionframe_ : *default_instance_->positionframe_; +#endif +} +inline ::protocolbuffers::TimeLinePointFrame* Frame::mutable_positionframe() { + set_has_positionframe(); + if (positionframe_ == NULL) positionframe_ = new ::protocolbuffers::TimeLinePointFrame; + return positionframe_; +} +inline ::protocolbuffers::TimeLinePointFrame* Frame::release_positionframe() { + clear_has_positionframe(); + ::protocolbuffers::TimeLinePointFrame* temp = positionframe_; + positionframe_ = NULL; + return temp; +} +inline void Frame::set_allocated_positionframe(::protocolbuffers::TimeLinePointFrame* positionframe) { + delete positionframe_; + positionframe_ = positionframe; + if (positionframe) { + set_has_positionframe(); + } else { + clear_has_positionframe(); + } +} + +// optional .protocolbuffers.TimeLinePointFrame scaleFrame = 11; +inline bool Frame::has_scaleframe() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void Frame::set_has_scaleframe() { + _has_bits_[0] |= 0x00000040u; +} +inline void Frame::clear_has_scaleframe() { + _has_bits_[0] &= ~0x00000040u; +} +inline void Frame::clear_scaleframe() { + if (scaleframe_ != NULL) scaleframe_->::protocolbuffers::TimeLinePointFrame::Clear(); + clear_has_scaleframe(); +} +inline const ::protocolbuffers::TimeLinePointFrame& Frame::scaleframe() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return scaleframe_ != NULL ? *scaleframe_ : *default_instance().scaleframe_; +#else + return scaleframe_ != NULL ? *scaleframe_ : *default_instance_->scaleframe_; +#endif +} +inline ::protocolbuffers::TimeLinePointFrame* Frame::mutable_scaleframe() { + set_has_scaleframe(); + if (scaleframe_ == NULL) scaleframe_ = new ::protocolbuffers::TimeLinePointFrame; + return scaleframe_; +} +inline ::protocolbuffers::TimeLinePointFrame* Frame::release_scaleframe() { + clear_has_scaleframe(); + ::protocolbuffers::TimeLinePointFrame* temp = scaleframe_; + scaleframe_ = NULL; + return temp; +} +inline void Frame::set_allocated_scaleframe(::protocolbuffers::TimeLinePointFrame* scaleframe) { + delete scaleframe_; + scaleframe_ = scaleframe; + if (scaleframe) { + set_has_scaleframe(); + } else { + clear_has_scaleframe(); + } +} + +// optional .protocolbuffers.TimeLineColorFrame colorFrame = 12; +inline bool Frame::has_colorframe() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void Frame::set_has_colorframe() { + _has_bits_[0] |= 0x00000080u; +} +inline void Frame::clear_has_colorframe() { + _has_bits_[0] &= ~0x00000080u; +} +inline void Frame::clear_colorframe() { + if (colorframe_ != NULL) colorframe_->::protocolbuffers::TimeLineColorFrame::Clear(); + clear_has_colorframe(); +} +inline const ::protocolbuffers::TimeLineColorFrame& Frame::colorframe() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return colorframe_ != NULL ? *colorframe_ : *default_instance().colorframe_; +#else + return colorframe_ != NULL ? *colorframe_ : *default_instance_->colorframe_; +#endif +} +inline ::protocolbuffers::TimeLineColorFrame* Frame::mutable_colorframe() { + set_has_colorframe(); + if (colorframe_ == NULL) colorframe_ = new ::protocolbuffers::TimeLineColorFrame; + return colorframe_; +} +inline ::protocolbuffers::TimeLineColorFrame* Frame::release_colorframe() { + clear_has_colorframe(); + ::protocolbuffers::TimeLineColorFrame* temp = colorframe_; + colorframe_ = NULL; + return temp; +} +inline void Frame::set_allocated_colorframe(::protocolbuffers::TimeLineColorFrame* colorframe) { + delete colorframe_; + colorframe_ = colorframe; + if (colorframe) { + set_has_colorframe(); + } else { + clear_has_colorframe(); + } +} + +// optional .protocolbuffers.TimeLineTextureFrame textureFrame = 13; +inline bool Frame::has_textureframe() const { + return (_has_bits_[0] & 0x00000100u) != 0; +} +inline void Frame::set_has_textureframe() { + _has_bits_[0] |= 0x00000100u; +} +inline void Frame::clear_has_textureframe() { + _has_bits_[0] &= ~0x00000100u; +} +inline void Frame::clear_textureframe() { + if (textureframe_ != NULL) textureframe_->::protocolbuffers::TimeLineTextureFrame::Clear(); + clear_has_textureframe(); +} +inline const ::protocolbuffers::TimeLineTextureFrame& Frame::textureframe() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return textureframe_ != NULL ? *textureframe_ : *default_instance().textureframe_; +#else + return textureframe_ != NULL ? *textureframe_ : *default_instance_->textureframe_; +#endif +} +inline ::protocolbuffers::TimeLineTextureFrame* Frame::mutable_textureframe() { + set_has_textureframe(); + if (textureframe_ == NULL) textureframe_ = new ::protocolbuffers::TimeLineTextureFrame; + return textureframe_; +} +inline ::protocolbuffers::TimeLineTextureFrame* Frame::release_textureframe() { + clear_has_textureframe(); + ::protocolbuffers::TimeLineTextureFrame* temp = textureframe_; + textureframe_ = NULL; + return temp; +} +inline void Frame::set_allocated_textureframe(::protocolbuffers::TimeLineTextureFrame* textureframe) { + delete textureframe_; + textureframe_ = textureframe; + if (textureframe) { + set_has_textureframe(); + } else { + clear_has_textureframe(); + } +} + +// ------------------------------------------------------------------- + +// TimeLineBoolFrame + +// optional string name = 1; +inline bool TimeLineBoolFrame::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void TimeLineBoolFrame::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void TimeLineBoolFrame::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void TimeLineBoolFrame::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& TimeLineBoolFrame::name() const { + return *name_; +} +inline void TimeLineBoolFrame::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLineBoolFrame::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLineBoolFrame::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLineBoolFrame::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* TimeLineBoolFrame::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLineBoolFrame::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool TimeLineBoolFrame::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void TimeLineBoolFrame::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void TimeLineBoolFrame::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void TimeLineBoolFrame::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& TimeLineBoolFrame::classname() const { + return *classname_; +} +inline void TimeLineBoolFrame::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLineBoolFrame::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLineBoolFrame::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLineBoolFrame::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* TimeLineBoolFrame::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLineBoolFrame::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 frameIndex = 3; +inline bool TimeLineBoolFrame::has_frameindex() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void TimeLineBoolFrame::set_has_frameindex() { + _has_bits_[0] |= 0x00000004u; +} +inline void TimeLineBoolFrame::clear_has_frameindex() { + _has_bits_[0] &= ~0x00000004u; +} +inline void TimeLineBoolFrame::clear_frameindex() { + frameindex_ = 0; + clear_has_frameindex(); +} +inline ::google::protobuf::int32 TimeLineBoolFrame::frameindex() const { + return frameindex_; +} +inline void TimeLineBoolFrame::set_frameindex(::google::protobuf::int32 value) { + set_has_frameindex(); + frameindex_ = value; +} + +// optional bool tween = 4; +inline bool TimeLineBoolFrame::has_tween() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void TimeLineBoolFrame::set_has_tween() { + _has_bits_[0] |= 0x00000008u; +} +inline void TimeLineBoolFrame::clear_has_tween() { + _has_bits_[0] &= ~0x00000008u; +} +inline void TimeLineBoolFrame::clear_tween() { + tween_ = false; + clear_has_tween(); +} +inline bool TimeLineBoolFrame::tween() const { + return tween_; +} +inline void TimeLineBoolFrame::set_tween(bool value) { + set_has_tween(); + tween_ = value; +} + +// optional bool value = 5; +inline bool TimeLineBoolFrame::has_value() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void TimeLineBoolFrame::set_has_value() { + _has_bits_[0] |= 0x00000010u; +} +inline void TimeLineBoolFrame::clear_has_value() { + _has_bits_[0] &= ~0x00000010u; +} +inline void TimeLineBoolFrame::clear_value() { + value_ = false; + clear_has_value(); +} +inline bool TimeLineBoolFrame::value() const { + return value_; +} +inline void TimeLineBoolFrame::set_value(bool value) { + set_has_value(); + value_ = value; +} + +// ------------------------------------------------------------------- + +// TimeLineIntFrame + +// optional string name = 1; +inline bool TimeLineIntFrame::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void TimeLineIntFrame::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void TimeLineIntFrame::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void TimeLineIntFrame::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& TimeLineIntFrame::name() const { + return *name_; +} +inline void TimeLineIntFrame::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLineIntFrame::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLineIntFrame::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLineIntFrame::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* TimeLineIntFrame::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLineIntFrame::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool TimeLineIntFrame::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void TimeLineIntFrame::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void TimeLineIntFrame::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void TimeLineIntFrame::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& TimeLineIntFrame::classname() const { + return *classname_; +} +inline void TimeLineIntFrame::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLineIntFrame::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLineIntFrame::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLineIntFrame::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* TimeLineIntFrame::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLineIntFrame::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 frameIndex = 3; +inline bool TimeLineIntFrame::has_frameindex() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void TimeLineIntFrame::set_has_frameindex() { + _has_bits_[0] |= 0x00000004u; +} +inline void TimeLineIntFrame::clear_has_frameindex() { + _has_bits_[0] &= ~0x00000004u; +} +inline void TimeLineIntFrame::clear_frameindex() { + frameindex_ = 0; + clear_has_frameindex(); +} +inline ::google::protobuf::int32 TimeLineIntFrame::frameindex() const { + return frameindex_; +} +inline void TimeLineIntFrame::set_frameindex(::google::protobuf::int32 value) { + set_has_frameindex(); + frameindex_ = value; +} + +// optional bool tween = 4; +inline bool TimeLineIntFrame::has_tween() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void TimeLineIntFrame::set_has_tween() { + _has_bits_[0] |= 0x00000008u; +} +inline void TimeLineIntFrame::clear_has_tween() { + _has_bits_[0] &= ~0x00000008u; +} +inline void TimeLineIntFrame::clear_tween() { + tween_ = false; + clear_has_tween(); +} +inline bool TimeLineIntFrame::tween() const { + return tween_; +} +inline void TimeLineIntFrame::set_tween(bool value) { + set_has_tween(); + tween_ = value; +} + +// optional int32 value = 5; +inline bool TimeLineIntFrame::has_value() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void TimeLineIntFrame::set_has_value() { + _has_bits_[0] |= 0x00000010u; +} +inline void TimeLineIntFrame::clear_has_value() { + _has_bits_[0] &= ~0x00000010u; +} +inline void TimeLineIntFrame::clear_value() { + value_ = 0; + clear_has_value(); +} +inline ::google::protobuf::int32 TimeLineIntFrame::value() const { + return value_; +} +inline void TimeLineIntFrame::set_value(::google::protobuf::int32 value) { + set_has_value(); + value_ = value; +} + +// ------------------------------------------------------------------- + +// TimeLineStringFrame + +// optional string name = 1; +inline bool TimeLineStringFrame::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void TimeLineStringFrame::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void TimeLineStringFrame::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void TimeLineStringFrame::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& TimeLineStringFrame::name() const { + return *name_; +} +inline void TimeLineStringFrame::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLineStringFrame::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLineStringFrame::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLineStringFrame::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* TimeLineStringFrame::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLineStringFrame::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool TimeLineStringFrame::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void TimeLineStringFrame::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void TimeLineStringFrame::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void TimeLineStringFrame::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& TimeLineStringFrame::classname() const { + return *classname_; +} +inline void TimeLineStringFrame::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLineStringFrame::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLineStringFrame::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLineStringFrame::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* TimeLineStringFrame::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLineStringFrame::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 frameIndex = 3; +inline bool TimeLineStringFrame::has_frameindex() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void TimeLineStringFrame::set_has_frameindex() { + _has_bits_[0] |= 0x00000004u; +} +inline void TimeLineStringFrame::clear_has_frameindex() { + _has_bits_[0] &= ~0x00000004u; +} +inline void TimeLineStringFrame::clear_frameindex() { + frameindex_ = 0; + clear_has_frameindex(); +} +inline ::google::protobuf::int32 TimeLineStringFrame::frameindex() const { + return frameindex_; +} +inline void TimeLineStringFrame::set_frameindex(::google::protobuf::int32 value) { + set_has_frameindex(); + frameindex_ = value; +} + +// optional bool tween = 4; +inline bool TimeLineStringFrame::has_tween() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void TimeLineStringFrame::set_has_tween() { + _has_bits_[0] |= 0x00000008u; +} +inline void TimeLineStringFrame::clear_has_tween() { + _has_bits_[0] &= ~0x00000008u; +} +inline void TimeLineStringFrame::clear_tween() { + tween_ = false; + clear_has_tween(); +} +inline bool TimeLineStringFrame::tween() const { + return tween_; +} +inline void TimeLineStringFrame::set_tween(bool value) { + set_has_tween(); + tween_ = value; +} + +// optional string value = 5; +inline bool TimeLineStringFrame::has_value() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void TimeLineStringFrame::set_has_value() { + _has_bits_[0] |= 0x00000010u; +} +inline void TimeLineStringFrame::clear_has_value() { + _has_bits_[0] &= ~0x00000010u; +} +inline void TimeLineStringFrame::clear_value() { + if (value_ != &::google::protobuf::internal::kEmptyString) { + value_->clear(); + } + clear_has_value(); +} +inline const ::std::string& TimeLineStringFrame::value() const { + return *value_; +} +inline void TimeLineStringFrame::set_value(const ::std::string& value) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { + value_ = new ::std::string; + } + value_->assign(value); +} +inline void TimeLineStringFrame::set_value(const char* value) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { + value_ = new ::std::string; + } + value_->assign(value); +} +inline void TimeLineStringFrame::set_value(const char* value, size_t size) { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { + value_ = new ::std::string; + } + value_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLineStringFrame::mutable_value() { + set_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { + value_ = new ::std::string; + } + return value_; +} +inline ::std::string* TimeLineStringFrame::release_value() { + clear_has_value(); + if (value_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = value_; + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLineStringFrame::set_allocated_value(::std::string* value) { + if (value_ != &::google::protobuf::internal::kEmptyString) { + delete value_; + } + if (value) { + set_has_value(); + value_ = value; + } else { + clear_has_value(); + value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// ------------------------------------------------------------------- + +// TimeLinePointFrame + +// optional string name = 1; +inline bool TimeLinePointFrame::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void TimeLinePointFrame::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void TimeLinePointFrame::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void TimeLinePointFrame::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& TimeLinePointFrame::name() const { + return *name_; +} +inline void TimeLinePointFrame::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLinePointFrame::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLinePointFrame::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLinePointFrame::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* TimeLinePointFrame::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLinePointFrame::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool TimeLinePointFrame::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void TimeLinePointFrame::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void TimeLinePointFrame::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void TimeLinePointFrame::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& TimeLinePointFrame::classname() const { + return *classname_; +} +inline void TimeLinePointFrame::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLinePointFrame::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLinePointFrame::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLinePointFrame::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* TimeLinePointFrame::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLinePointFrame::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 frameIndex = 3; +inline bool TimeLinePointFrame::has_frameindex() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void TimeLinePointFrame::set_has_frameindex() { + _has_bits_[0] |= 0x00000004u; +} +inline void TimeLinePointFrame::clear_has_frameindex() { + _has_bits_[0] &= ~0x00000004u; +} +inline void TimeLinePointFrame::clear_frameindex() { + frameindex_ = 0; + clear_has_frameindex(); +} +inline ::google::protobuf::int32 TimeLinePointFrame::frameindex() const { + return frameindex_; +} +inline void TimeLinePointFrame::set_frameindex(::google::protobuf::int32 value) { + set_has_frameindex(); + frameindex_ = value; +} + +// optional bool tween = 4; +inline bool TimeLinePointFrame::has_tween() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void TimeLinePointFrame::set_has_tween() { + _has_bits_[0] |= 0x00000008u; +} +inline void TimeLinePointFrame::clear_has_tween() { + _has_bits_[0] &= ~0x00000008u; +} +inline void TimeLinePointFrame::clear_tween() { + tween_ = false; + clear_has_tween(); +} +inline bool TimeLinePointFrame::tween() const { + return tween_; +} +inline void TimeLinePointFrame::set_tween(bool value) { + set_has_tween(); + tween_ = value; +} + +// optional float x = 5; +inline bool TimeLinePointFrame::has_x() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void TimeLinePointFrame::set_has_x() { + _has_bits_[0] |= 0x00000010u; +} +inline void TimeLinePointFrame::clear_has_x() { + _has_bits_[0] &= ~0x00000010u; +} +inline void TimeLinePointFrame::clear_x() { + x_ = 0; + clear_has_x(); +} +inline float TimeLinePointFrame::x() const { + return x_; +} +inline void TimeLinePointFrame::set_x(float value) { + set_has_x(); + x_ = value; +} + +// optional float y = 6; +inline bool TimeLinePointFrame::has_y() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void TimeLinePointFrame::set_has_y() { + _has_bits_[0] |= 0x00000020u; +} +inline void TimeLinePointFrame::clear_has_y() { + _has_bits_[0] &= ~0x00000020u; +} +inline void TimeLinePointFrame::clear_y() { + y_ = 0; + clear_has_y(); +} +inline float TimeLinePointFrame::y() const { + return y_; +} +inline void TimeLinePointFrame::set_y(float value) { + set_has_y(); + y_ = value; +} + +// ------------------------------------------------------------------- + +// TimeLineColorFrame + +// optional string name = 1; +inline bool TimeLineColorFrame::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void TimeLineColorFrame::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void TimeLineColorFrame::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void TimeLineColorFrame::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& TimeLineColorFrame::name() const { + return *name_; +} +inline void TimeLineColorFrame::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLineColorFrame::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLineColorFrame::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLineColorFrame::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* TimeLineColorFrame::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLineColorFrame::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool TimeLineColorFrame::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void TimeLineColorFrame::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void TimeLineColorFrame::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void TimeLineColorFrame::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& TimeLineColorFrame::classname() const { + return *classname_; +} +inline void TimeLineColorFrame::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLineColorFrame::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLineColorFrame::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLineColorFrame::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* TimeLineColorFrame::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLineColorFrame::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 frameIndex = 3; +inline bool TimeLineColorFrame::has_frameindex() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void TimeLineColorFrame::set_has_frameindex() { + _has_bits_[0] |= 0x00000004u; +} +inline void TimeLineColorFrame::clear_has_frameindex() { + _has_bits_[0] &= ~0x00000004u; +} +inline void TimeLineColorFrame::clear_frameindex() { + frameindex_ = 0; + clear_has_frameindex(); +} +inline ::google::protobuf::int32 TimeLineColorFrame::frameindex() const { + return frameindex_; +} +inline void TimeLineColorFrame::set_frameindex(::google::protobuf::int32 value) { + set_has_frameindex(); + frameindex_ = value; +} + +// optional bool tween = 4; +inline bool TimeLineColorFrame::has_tween() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void TimeLineColorFrame::set_has_tween() { + _has_bits_[0] |= 0x00000008u; +} +inline void TimeLineColorFrame::clear_has_tween() { + _has_bits_[0] &= ~0x00000008u; +} +inline void TimeLineColorFrame::clear_tween() { + tween_ = false; + clear_has_tween(); +} +inline bool TimeLineColorFrame::tween() const { + return tween_; +} +inline void TimeLineColorFrame::set_tween(bool value) { + set_has_tween(); + tween_ = value; +} + +// optional int32 alpha = 5; +inline bool TimeLineColorFrame::has_alpha() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void TimeLineColorFrame::set_has_alpha() { + _has_bits_[0] |= 0x00000010u; +} +inline void TimeLineColorFrame::clear_has_alpha() { + _has_bits_[0] &= ~0x00000010u; +} +inline void TimeLineColorFrame::clear_alpha() { + alpha_ = 0; + clear_has_alpha(); +} +inline ::google::protobuf::int32 TimeLineColorFrame::alpha() const { + return alpha_; +} +inline void TimeLineColorFrame::set_alpha(::google::protobuf::int32 value) { + set_has_alpha(); + alpha_ = value; +} + +// optional int32 red = 6; +inline bool TimeLineColorFrame::has_red() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void TimeLineColorFrame::set_has_red() { + _has_bits_[0] |= 0x00000020u; +} +inline void TimeLineColorFrame::clear_has_red() { + _has_bits_[0] &= ~0x00000020u; +} +inline void TimeLineColorFrame::clear_red() { + red_ = 0; + clear_has_red(); +} +inline ::google::protobuf::int32 TimeLineColorFrame::red() const { + return red_; +} +inline void TimeLineColorFrame::set_red(::google::protobuf::int32 value) { + set_has_red(); + red_ = value; +} + +// optional int32 green = 7; +inline bool TimeLineColorFrame::has_green() const { + return (_has_bits_[0] & 0x00000040u) != 0; +} +inline void TimeLineColorFrame::set_has_green() { + _has_bits_[0] |= 0x00000040u; +} +inline void TimeLineColorFrame::clear_has_green() { + _has_bits_[0] &= ~0x00000040u; +} +inline void TimeLineColorFrame::clear_green() { + green_ = 0; + clear_has_green(); +} +inline ::google::protobuf::int32 TimeLineColorFrame::green() const { + return green_; +} +inline void TimeLineColorFrame::set_green(::google::protobuf::int32 value) { + set_has_green(); + green_ = value; +} + +// optional int32 blue = 8; +inline bool TimeLineColorFrame::has_blue() const { + return (_has_bits_[0] & 0x00000080u) != 0; +} +inline void TimeLineColorFrame::set_has_blue() { + _has_bits_[0] |= 0x00000080u; +} +inline void TimeLineColorFrame::clear_has_blue() { + _has_bits_[0] &= ~0x00000080u; +} +inline void TimeLineColorFrame::clear_blue() { + blue_ = 0; + clear_has_blue(); +} +inline ::google::protobuf::int32 TimeLineColorFrame::blue() const { + return blue_; +} +inline void TimeLineColorFrame::set_blue(::google::protobuf::int32 value) { + set_has_blue(); + blue_ = value; +} + +// ------------------------------------------------------------------- + +// TimeLineTextureFrame + +// optional string name = 1; +inline bool TimeLineTextureFrame::has_name() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void TimeLineTextureFrame::set_has_name() { + _has_bits_[0] |= 0x00000001u; +} +inline void TimeLineTextureFrame::clear_has_name() { + _has_bits_[0] &= ~0x00000001u; +} +inline void TimeLineTextureFrame::clear_name() { + if (name_ != &::google::protobuf::internal::kEmptyString) { + name_->clear(); + } + clear_has_name(); +} +inline const ::std::string& TimeLineTextureFrame::name() const { + return *name_; +} +inline void TimeLineTextureFrame::set_name(const ::std::string& value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLineTextureFrame::set_name(const char* value) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(value); +} +inline void TimeLineTextureFrame::set_name(const char* value, size_t size) { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + name_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLineTextureFrame::mutable_name() { + set_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + name_ = new ::std::string; + } + return name_; +} +inline ::std::string* TimeLineTextureFrame::release_name() { + clear_has_name(); + if (name_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = name_; + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLineTextureFrame::set_allocated_name(::std::string* name) { + if (name_ != &::google::protobuf::internal::kEmptyString) { + delete name_; + } + if (name) { + set_has_name(); + name_ = name; + } else { + clear_has_name(); + name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string classname = 2; +inline bool TimeLineTextureFrame::has_classname() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void TimeLineTextureFrame::set_has_classname() { + _has_bits_[0] |= 0x00000002u; +} +inline void TimeLineTextureFrame::clear_has_classname() { + _has_bits_[0] &= ~0x00000002u; +} +inline void TimeLineTextureFrame::clear_classname() { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + classname_->clear(); + } + clear_has_classname(); +} +inline const ::std::string& TimeLineTextureFrame::classname() const { + return *classname_; +} +inline void TimeLineTextureFrame::set_classname(const ::std::string& value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLineTextureFrame::set_classname(const char* value) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(value); +} +inline void TimeLineTextureFrame::set_classname(const char* value, size_t size) { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + classname_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLineTextureFrame::mutable_classname() { + set_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + classname_ = new ::std::string; + } + return classname_; +} +inline ::std::string* TimeLineTextureFrame::release_classname() { + clear_has_classname(); + if (classname_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = classname_; + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLineTextureFrame::set_allocated_classname(::std::string* classname) { + if (classname_ != &::google::protobuf::internal::kEmptyString) { + delete classname_; + } + if (classname) { + set_has_classname(); + classname_ = classname; + } else { + clear_has_classname(); + classname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional int32 frameIndex = 3; +inline bool TimeLineTextureFrame::has_frameindex() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void TimeLineTextureFrame::set_has_frameindex() { + _has_bits_[0] |= 0x00000004u; +} +inline void TimeLineTextureFrame::clear_has_frameindex() { + _has_bits_[0] &= ~0x00000004u; +} +inline void TimeLineTextureFrame::clear_frameindex() { + frameindex_ = 0; + clear_has_frameindex(); +} +inline ::google::protobuf::int32 TimeLineTextureFrame::frameindex() const { + return frameindex_; +} +inline void TimeLineTextureFrame::set_frameindex(::google::protobuf::int32 value) { + set_has_frameindex(); + frameindex_ = value; +} + +// optional bool tween = 4; +inline bool TimeLineTextureFrame::has_tween() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void TimeLineTextureFrame::set_has_tween() { + _has_bits_[0] |= 0x00000008u; +} +inline void TimeLineTextureFrame::clear_has_tween() { + _has_bits_[0] &= ~0x00000008u; +} +inline void TimeLineTextureFrame::clear_tween() { + tween_ = false; + clear_has_tween(); +} +inline bool TimeLineTextureFrame::tween() const { + return tween_; +} +inline void TimeLineTextureFrame::set_tween(bool value) { + set_has_tween(); + tween_ = value; +} + +// optional string filePath = 5; +inline bool TimeLineTextureFrame::has_filepath() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void TimeLineTextureFrame::set_has_filepath() { + _has_bits_[0] |= 0x00000010u; +} +inline void TimeLineTextureFrame::clear_has_filepath() { + _has_bits_[0] &= ~0x00000010u; +} +inline void TimeLineTextureFrame::clear_filepath() { + if (filepath_ != &::google::protobuf::internal::kEmptyString) { + filepath_->clear(); + } + clear_has_filepath(); +} +inline const ::std::string& TimeLineTextureFrame::filepath() const { + return *filepath_; +} +inline void TimeLineTextureFrame::set_filepath(const ::std::string& value) { + set_has_filepath(); + if (filepath_ == &::google::protobuf::internal::kEmptyString) { + filepath_ = new ::std::string; + } + filepath_->assign(value); +} +inline void TimeLineTextureFrame::set_filepath(const char* value) { + set_has_filepath(); + if (filepath_ == &::google::protobuf::internal::kEmptyString) { + filepath_ = new ::std::string; + } + filepath_->assign(value); +} +inline void TimeLineTextureFrame::set_filepath(const char* value, size_t size) { + set_has_filepath(); + if (filepath_ == &::google::protobuf::internal::kEmptyString) { + filepath_ = new ::std::string; + } + filepath_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLineTextureFrame::mutable_filepath() { + set_has_filepath(); + if (filepath_ == &::google::protobuf::internal::kEmptyString) { + filepath_ = new ::std::string; + } + return filepath_; +} +inline ::std::string* TimeLineTextureFrame::release_filepath() { + clear_has_filepath(); + if (filepath_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = filepath_; + filepath_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLineTextureFrame::set_allocated_filepath(::std::string* filepath) { + if (filepath_ != &::google::protobuf::internal::kEmptyString) { + delete filepath_; + } + if (filepath) { + set_has_filepath(); + filepath_ = filepath; + } else { + clear_has_filepath(); + filepath_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// optional string plistFile = 6; +inline bool TimeLineTextureFrame::has_plistfile() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void TimeLineTextureFrame::set_has_plistfile() { + _has_bits_[0] |= 0x00000020u; +} +inline void TimeLineTextureFrame::clear_has_plistfile() { + _has_bits_[0] &= ~0x00000020u; +} +inline void TimeLineTextureFrame::clear_plistfile() { + if (plistfile_ != &::google::protobuf::internal::kEmptyString) { + plistfile_->clear(); + } + clear_has_plistfile(); +} +inline const ::std::string& TimeLineTextureFrame::plistfile() const { + return *plistfile_; +} +inline void TimeLineTextureFrame::set_plistfile(const ::std::string& value) { + set_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + plistfile_ = new ::std::string; + } + plistfile_->assign(value); +} +inline void TimeLineTextureFrame::set_plistfile(const char* value) { + set_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + plistfile_ = new ::std::string; + } + plistfile_->assign(value); +} +inline void TimeLineTextureFrame::set_plistfile(const char* value, size_t size) { + set_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + plistfile_ = new ::std::string; + } + plistfile_->assign(reinterpret_cast(value), size); +} +inline ::std::string* TimeLineTextureFrame::mutable_plistfile() { + set_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + plistfile_ = new ::std::string; + } + return plistfile_; +} +inline ::std::string* TimeLineTextureFrame::release_plistfile() { + clear_has_plistfile(); + if (plistfile_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = plistfile_; + plistfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void TimeLineTextureFrame::set_allocated_plistfile(::std::string* plistfile) { + if (plistfile_ != &::google::protobuf::internal::kEmptyString) { + delete plistfile_; + } + if (plistfile) { + set_has_plistfile(); + plistfile_ = plistfile; + } else { + clear_has_plistfile(); + plistfile_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + + +// @@protoc_insertion_point(namespace_scope) + +} // namespace protocolbuffers + +// @@protoc_insertion_point(global_scope) + +#endif // PROTOBUF_CSParseBinary_2eproto__INCLUDED diff --git a/cocos/editor-support/cocostudio/CocoStudio.h b/cocos/editor-support/cocostudio/CocoStudio.h index ea49115db8..ba61c83d17 100644 --- a/cocos/editor-support/cocostudio/CocoStudio.h +++ b/cocos/editor-support/cocostudio/CocoStudio.h @@ -58,11 +58,11 @@ THE SOFTWARE. #include "cocostudio/CCSGUIReader.h" #include "cocostudio/CCSSceneReader.h" #include "cocostudio/TriggerBase.h" -#include "cocostudio/ActionTimeline/CCNodeReader.h" #include "cocostudio/ActionTimeline/CCActionTimelineCache.h" #include "cocostudio/ActionTimeline/CCFrame.h" #include "cocostudio/ActionTimeline/CCTimeLine.h" #include "cocostudio/ActionTimeline/CCActionTimeline.h" #include "cocostudio/CocosStudioExport.h" +#include "cocostudio/ActionTimeline/CSLoader.h" #endif diff --git a/cocos/editor-support/cocostudio/CocosStudioExport.h b/cocos/editor-support/cocostudio/CocosStudioExport.h index ed5d79d622..062566fb64 100644 --- a/cocos/editor-support/cocostudio/CocosStudioExport.h +++ b/cocos/editor-support/cocostudio/CocosStudioExport.h @@ -1,7 +1,7 @@ #ifndef __CCCOCOSSTUDIO_H__ #define __CCCOCOSSTUDIO_H__ -#if defined(WIN32) && defined(_WINDOWS) +#if (defined(WIN32) && defined(_WINDOWS)) || defined(WINRT) || defined(WP8) #ifdef __MINGW32__ #include #endif diff --git a/cocos/editor-support/cocostudio/WidgetReader/ButtonReader/ButtonReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/ButtonReader/ButtonReader.cpp index 5b9cdac2af..a0d3ef8a69 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/ButtonReader/ButtonReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/ButtonReader/ButtonReader.cpp @@ -3,6 +3,8 @@ #include "ButtonReader.h" #include "ui/UIButton.h" #include "cocostudio/CocoLoader.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" USING_NS_CC; using namespace ui; @@ -73,7 +75,6 @@ namespace cocostudio for (int i = 0; i < cocoNode->GetChildNum(); ++i) { std::string key = stChildArray[i].GetName(cocoLoader); std::string value = stChildArray[i].GetValue(cocoLoader); -// CCLOG("Button: key = %s, value = %d", key.c_str(), i); //read all basic properties of widget CC_BASIC_PROPERTY_BINARY_READER @@ -232,4 +233,460 @@ namespace cocostudio WidgetReader::setColorPropsFromJsonDictionary(widget, options); } + + void ButtonReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); + + Button* button = static_cast(widget); + const protocolbuffers::ButtonOptions& options = nodeTree.buttonoptions(); + + std::string protocolBuffersPath = GUIReader::getInstance()->getFilePath();; + + bool scale9Enable = options.scale9enable(); + button->setScale9Enabled(scale9Enable); + + + const protocolbuffers::ResourceData& normalDic = options.normaldata(); + int normalType = normalDic.resourcetype(); + if (normalType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + normalDic.plistfile()); + } + std::string normalTexturePath = this->getResourcePath(normalDic.path(), (Widget::TextureResType)normalType); + button->loadTextureNormal(normalTexturePath, (Widget::TextureResType)normalType); + + + const protocolbuffers::ResourceData& pressedDic = options.presseddata(); + int pressedType = pressedDic.resourcetype(); + if (pressedType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + pressedDic.plistfile()); + } + std::string pressedTexturePath = this->getResourcePath(pressedDic.path(), (Widget::TextureResType)pressedType); + button->loadTexturePressed(pressedTexturePath, (Widget::TextureResType)pressedType); + + + const protocolbuffers::ResourceData& disabledDic = options.disableddata(); + int disabledType = disabledDic.resourcetype(); + if (disabledType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + disabledDic.plistfile()); + } + std::string disabledTexturePath = this->getResourcePath(disabledDic.path(), (Widget::TextureResType)disabledType); + button->loadTextureDisabled(disabledTexturePath, (Widget::TextureResType)disabledType); + + if (scale9Enable) + { + button->setUnifySizeEnabled(false); + button->ignoreContentAdaptWithSize(false); + + float cx = options.capinsetsx(); + float cy = options.capinsetsy(); + float cw = options.capinsetswidth(); + float ch = options.capinsetsheight(); + + button->setCapInsets(Rect(cx, cy, cw, ch)); + bool sw = options.has_scale9width(); + bool sh = options.has_scale9height(); + if (sw && sh) + { + float swf = options.scale9width(); + float shf = options.scale9height(); + button->setContentSize(Size(swf, shf)); + } + } + bool tt = options.has_text(); + if (tt) + { + const char* text = options.text().c_str(); + if (text) + { + button->setTitleText(text); + } + } + + + int cri = options.has_textcolorr() ? options.textcolorr() : 255; + int cgi = options.has_textcolorg() ? options.textcolorg() : 255; + int cbi = options.has_textcolorb() ? options.textcolorb() : 255; + button->setTitleColor(Color3B(cri,cgi,cbi)); + + + int fontSize = options.has_fontsize() ? options.fontsize() : 14; + button->setTitleFontSize(fontSize); + + bool displaystate = true; + if(options.has_displaystate()) + { + displaystate = options.displaystate(); + } + button->setBright(displaystate); + + const char* fontName = options.has_fontname() ? options.fontname().c_str() : "微软雅黑"; + button->setTitleFontName(fontName); + + if (options.has_fontresource()) + { + const protocolbuffers::ResourceData& resourceData = options.fontresource(); + button->setTitleFontName(protocolBuffersPath + resourceData.path()); + } + + const protocolbuffers::WidgetOptions& widgetOption = nodeTree.widgetoptions(); + button->setColor(Color3B(widgetOption.colorr(), widgetOption.colorg(), widgetOption.colorb())); + button->setOpacity(widgetOption.has_alpha() ? widgetOption.alpha() : 255); + + + // other commonly protperties + WidgetReader::setColorPropsFromProtocolBuffers(widget, nodeTree); + } + + void ButtonReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + WidgetReader::setPropsFromXML(widget, objectData); + + Button* button = static_cast(widget); + + std::string xmlPath = GUIReader::getInstance()->getFilePath(); + + bool scale9Enabled = false; + float cx = 0.0f, cy = 0.0f, cw = 0.0f, ch = 0.0f; + float swf = 0.0f, shf = 0.0f; + std::string text = ""; + std::string fontName = "微软雅黑"; + int fontSize = 0; + int title_color_red = 255, title_color_green = 255, title_color_blue = 255; + int cri = 255, cgi = 255, cbi = 255; + int opacity = 255; + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Scale9Enable") + { + if (value == "True") + { + scale9Enabled = true; + } + } + else if (name == "Scale9OriginX") + { + cx = atof(value.c_str()); + } + else if (name == "Scale9OriginY") + { + cy = atof(value.c_str()); + } + else if (name == "Scale9Width") + { + cw = atof(value.c_str()); + } + else if (name == "Scale9Height") + { + ch = atof(value.c_str()); + } + else if (name == "ButtonText") + { + text = value; + } + else if (name == "FontSize") + { + fontSize = atoi(value.c_str()); + } + else if (name == "FontName") + { + fontName = value; + } + else if (name == "Alpha") + { + opacity = atoi(value.c_str()); + } + else if (name == "DisplayState") + { + button->setBright((value == "True") ? true : false); + } + + attribute = attribute->Next(); + } + + // child elements + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "Size" && scale9Enabled) + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + swf = atof(value.c_str()); + } + else if (name == "Y") + { + shf = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "CColor") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + cri = atoi(value.c_str()); + } + else if (name == "G") + { + cgi = atoi(value.c_str()); + } + else if (name == "B") + { + cbi = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "TextColor") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + title_color_red = atoi(value.c_str()); + } + else if (name == "G") + { + title_color_green = atoi(value.c_str()); + } + else if (name == "B") + { + title_color_blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "DisabledFileData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + button->loadTextureDisabled(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + button->loadTextureDisabled(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + else if (name == "PressedFileData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + button->loadTexturePressed(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + button->loadTexturePressed(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + else if (name == "NormalFileData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + button->loadTextureNormal(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + button->loadTextureNormal(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + else if (name == "FontResource") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + fontName = xmlPath + path; + break; + } + + default: + break; + } + } + + child = child->NextSiblingElement(); + } + + button->setScale9Enabled(scale9Enabled); + + + if (scale9Enabled) + { + button->setUnifySizeEnabled(false); + button->ignoreContentAdaptWithSize(false); + + button->setCapInsets(Rect(cx, cy, cw, ch)); + button->setContentSize(Size(swf, shf)); + } + + button->setTitleText(text); + button->setTitleColor(Color3B(title_color_red, title_color_green, title_color_blue)); + button->setTitleFontSize(fontSize); + button->setTitleFontName(fontName); + + button->setColor(Color3B(cri,cgi,cbi)); + button->setOpacity(opacity); + } } diff --git a/cocos/editor-support/cocostudio/WidgetReader/ButtonReader/ButtonReader.h b/cocos/editor-support/cocostudio/WidgetReader/ButtonReader/ButtonReader.h index 4b9bb4f91d..f2723b3992 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/ButtonReader/ButtonReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/ButtonReader/ButtonReader.h @@ -45,6 +45,10 @@ namespace cocostudio const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode); + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); + }; } diff --git a/cocos/editor-support/cocostudio/WidgetReader/CheckBoxReader/CheckBoxReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/CheckBoxReader/CheckBoxReader.cpp index 3a21d32862..58c1e2a781 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/CheckBoxReader/CheckBoxReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/CheckBoxReader/CheckBoxReader.cpp @@ -3,6 +3,8 @@ #include "CheckBoxReader.h" #include "ui/UICheckBox.h" #include "cocostudio/CocoLoader.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" USING_NS_CC; using namespace ui; @@ -150,4 +152,362 @@ namespace cocostudio WidgetReader::setColorPropsFromJsonDictionary(widget, options); } + + void CheckBoxReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); + + CheckBox* checkBox = static_cast(widget); + const protocolbuffers::CheckBoxOptions& options = nodeTree.checkboxoptions(); + + std::string protocolBuffersPath = GUIReader::getInstance()->getFilePath(); + + //load background image + const protocolbuffers::ResourceData& backGroundDic = options.backgroundboxdata(); + int backGroundType = backGroundDic.resourcetype(); + if (backGroundType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + backGroundDic.plistfile()); + } + std::string backGroundTexturePath = this->getResourcePath(backGroundDic.path(), (Widget::TextureResType)backGroundType); + checkBox->loadTextureBackGround(backGroundTexturePath, (Widget::TextureResType)backGroundType); + + //load background selected image + const protocolbuffers::ResourceData& backGroundSelectedDic = options.backgroundboxselecteddata(); + int backGroundSelectedType = backGroundSelectedDic.resourcetype(); + if (backGroundSelectedType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + backGroundSelectedDic.plistfile()); + } + std::string backGroundSelectedTexturePath = this->getResourcePath(backGroundSelectedDic.path(), (Widget::TextureResType)backGroundSelectedType); + checkBox->loadTextureBackGroundSelected(backGroundSelectedTexturePath, (Widget::TextureResType)backGroundSelectedType); + + //load frontCross image + const protocolbuffers::ResourceData& frontCrossDic = options.frontcrossdata(); + int frontCrossType = frontCrossDic.resourcetype(); + if (frontCrossType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + frontCrossDic.plistfile()); + } + std::string frontCrossFileName = this->getResourcePath(frontCrossDic.path(), (Widget::TextureResType)frontCrossType); + checkBox->loadTextureFrontCross(frontCrossFileName, (Widget::TextureResType)frontCrossType); + + //load backGroundBoxDisabledData + const protocolbuffers::ResourceData& backGroundDisabledDic = options.backgroundboxdisableddata(); + int backGroundDisabledType = backGroundDisabledDic.resourcetype(); + if (backGroundDisabledType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + backGroundDisabledDic.plistfile()); + } + std::string backGroundDisabledFileName = this->getResourcePath(backGroundDisabledDic.path(), (Widget::TextureResType)backGroundDisabledType); + checkBox->loadTextureBackGroundDisabled(backGroundDisabledFileName, (Widget::TextureResType)backGroundDisabledType); + + ///load frontCrossDisabledData + const protocolbuffers::ResourceData& frontCrossDisabledDic = options.frontcrossdisableddata(); + int frontCrossDisabledType = frontCrossDisabledDic.resourcetype(); + if (frontCrossDisabledType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + frontCrossDisabledDic.plistfile()); + } + std::string frontCrossDisabledFileName = this->getResourcePath(frontCrossDisabledDic.path(), (Widget::TextureResType)frontCrossDisabledType); + checkBox->loadTextureFrontCrossDisabled(frontCrossDisabledFileName, (Widget::TextureResType)frontCrossDisabledType); + + checkBox->setSelected(options.selectedstate()); + + bool displaystate = true; + if(options.has_displaystate()) + { + displaystate = options.displaystate(); + } + checkBox->setBright(displaystate); + + // other commonly protperties + WidgetReader::setColorPropsFromProtocolBuffers(widget, nodeTree); + } + + void CheckBoxReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + WidgetReader::setPropsFromXML(widget, objectData); + + CheckBox* checkBox = static_cast(widget); + + std::string xmlPath = GUIReader::getInstance()->getFilePath(); + + int opacity = 255; + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "CheckedState") + { + checkBox->setSelected((value == "True") ? true : false); + } + else if (name == "DisplayState") + { + checkBox->setBright((value == "True") ? true : false); + } + else if (name == "Alpha") + { + opacity = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + + // child elements + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "NormalBackFileData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = getResourceType(value); + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + checkBox->loadTextureBackGround(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + checkBox->loadTextureBackGround(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + else if (name == "PressedBackFileData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = getResourceType(value); + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + checkBox->loadTextureBackGroundSelected(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + checkBox->loadTextureBackGroundSelected(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + else if (name == "NodeNormalFileData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = getResourceType(value); + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + checkBox->loadTextureFrontCross(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + checkBox->loadTextureFrontCross(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + else if (name == "DisableBackFileData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = getResourceType(value); + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + checkBox->loadTextureBackGroundDisabled(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + checkBox->loadTextureBackGroundDisabled(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + else if (name == "NodeDisableFileData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = getResourceType(value); + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + checkBox->loadTextureFrontCrossDisabled(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + checkBox->loadTextureFrontCrossDisabled(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + + child = child->NextSiblingElement(); + } + + checkBox->setOpacity(opacity); + } + + int CheckBoxReader::getResourceType(std::string key) + { + if(key == "Normal" || key == "Default" || key == "MarkedSubImage") + { + return 0; + } + + return 1; + } } diff --git a/cocos/editor-support/cocostudio/WidgetReader/CheckBoxReader/CheckBoxReader.h b/cocos/editor-support/cocostudio/WidgetReader/CheckBoxReader/CheckBoxReader.h index f512b08b2d..51a96ab1e7 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/CheckBoxReader/CheckBoxReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/CheckBoxReader/CheckBoxReader.h @@ -43,6 +43,9 @@ namespace cocostudio virtual void setPropsFromJsonDictionary(cocos2d::ui::Widget* widget, const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode); + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); + virtual int getResourceType(std::string key); }; } diff --git a/cocos/editor-support/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp index eca95d8eb0..b02961a27f 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.cpp @@ -3,6 +3,8 @@ #include "ImageViewReader.h" #include "ui/UIImageView.h" #include "cocostudio/CocoLoader.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" USING_NS_CC; using namespace ui; @@ -147,4 +149,196 @@ namespace cocostudio WidgetReader::setColorPropsFromJsonDictionary(widget, options); } + + void ImageViewReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); + + const protocolbuffers::ImageViewOptions& options = nodeTree.imageviewoptions(); + ImageView* imageView = static_cast(widget); + + std::string protocolBuffersPath = GUIReader::getInstance()->getFilePath(); + + const protocolbuffers::ResourceData& imageFileNameDic = options.filenamedata(); + int imageFileNameType = imageFileNameDic.resourcetype(); + if (imageFileNameType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + imageFileNameDic.plistfile()); + } + std::string imageFileName = this->getResourcePath(imageFileNameDic.path(), (Widget::TextureResType)imageFileNameType); + imageView->loadTexture(imageFileName, (Widget::TextureResType)imageFileNameType); + + + bool scale9EnableExist = options.has_scale9enable(); + bool scale9Enable = false; + if (scale9EnableExist) + { + scale9Enable = options.scale9enable(); + } + imageView->setScale9Enabled(scale9Enable); + + + if (scale9Enable) + { + imageView->setUnifySizeEnabled(false); + imageView->ignoreContentAdaptWithSize(false); + + float swf = options.has_scale9width() ? options.scale9width() : 80.0f; + float shf = options.has_scale9height() ? options.scale9height() : 80.0f; + imageView->setContentSize(Size(swf, shf)); + + + float cx = options.capinsetsx(); + float cy = options.capinsetsy(); + float cw = options.has_capinsetswidth() ? options.capinsetswidth() : 1.0; + float ch = options.has_capinsetsheight() ? options.capinsetsheight() : 1.0; + + imageView->setCapInsets(Rect(cx, cy, cw, ch)); + + } + + // other commonly protperties + WidgetReader::setColorPropsFromProtocolBuffers(widget, nodeTree); + } + + void ImageViewReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + WidgetReader::setPropsFromXML(widget, objectData); + + ImageView* imageView = static_cast(widget); + + std::string xmlPath = GUIReader::getInstance()->getFilePath(); + + bool scale9Enabled = false; + float cx = 0.0f, cy = 0.0f, cw = 0.0f, ch = 0.0f; + float swf = 0.0f, shf = 0.0f; + + int opacity = 255; + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Scale9Enable") + { + if (value == "True") + { + scale9Enabled = true; + } + } + else if (name == "Scale9OriginX") + { + cx = atof(value.c_str()); + } + else if (name == "Scale9OriginY") + { + cy = atof(value.c_str()); + } + else if (name == "Scale9Width") + { + cw = atof(value.c_str()); + } + else if (name == "Scale9Height") + { + ch = atof(value.c_str()); + } + else if (name == "Alpha") + { + opacity = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + + // child elements + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "Size" && scale9Enabled) + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + swf = atof(value.c_str()); + } + else if (name == "Y") + { + shf = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "FileData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + imageView->loadTexture(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + imageView->loadTexture(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + + child = child->NextSiblingElement(); + } + + imageView->setScale9Enabled(scale9Enabled); + + if (scale9Enabled) + { + imageView->setCapInsets(Rect(cx, cy, cw, ch)); + imageView->setContentSize(Size(swf, shf)); + } + + imageView->setOpacity(opacity); + } + } diff --git a/cocos/editor-support/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.h b/cocos/editor-support/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.h index 2d890eaf14..5cbebb0a8d 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/ImageViewReader/ImageViewReader.h @@ -43,6 +43,8 @@ namespace cocostudio virtual void setPropsFromJsonDictionary(cocos2d::ui::Widget* widget, const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode); + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); }; } diff --git a/cocos/editor-support/cocostudio/WidgetReader/LayoutReader/LayoutReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/LayoutReader/LayoutReader.cpp index 4fed304abc..7f3ab5d083 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/LayoutReader/LayoutReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/LayoutReader/LayoutReader.cpp @@ -6,6 +6,8 @@ #include "ui/UIScrollView.h" #include "ui/UIPageView.h" #include "ui/UIListView.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" USING_NS_CC; using namespace ui; @@ -301,4 +303,468 @@ namespace cocostudio WidgetReader::setColorPropsFromJsonDictionary(widget, options); } + + + void LayoutReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); + + Layout* panel = static_cast(widget); + const protocolbuffers::PanelOptions& options = nodeTree.paneloptions(); + + std::string protocolBuffersPath = GUIReader::getInstance()->getFilePath(); + + panel->setClippingEnabled(options.clipable()); + + bool backGroundScale9Enable = options.backgroundscale9enable(); + panel->setBackGroundImageScale9Enabled(backGroundScale9Enable); + + + int cr; + int cg; + int cb; + int scr; + int scg; + int scb; + int ecr; + int ecg; + int ecb; + + if (dynamic_cast(widget)) + { + cr = options.has_bgcolorr() ? options.bgcolorr() : 150; + cg = options.has_bgcolorg() ? options.bgcolorg() : 150; + cb = options.has_bgcolorb() ? options.bgcolorb() : 150; + + scr = options.has_bgstartcolorr() ? options.bgstartcolorr() : 255; + scg = options.has_bgstartcolorg() ? options.bgstartcolorg() : 255; + scb = options.has_bgstartcolorb() ? options.bgstartcolorb() : 255; + + ecr = options.has_bgendcolorr() ? options.bgendcolorr() : 255; + ecg = options.has_bgendcolorg() ? options.bgendcolorg() : 150; + ecb = options.has_bgendcolorb() ? options.bgendcolorb() : 100; + } + else if(dynamic_cast(widget)) + { + cr = options.has_bgcolorr() ? options.bgcolorr() : 150; + cg = options.has_bgcolorg() ? options.bgcolorg() : 150; + cb = options.has_bgcolorb() ? options.bgcolorb() : 255; + + scr = options.has_bgstartcolorr() ? options.bgstartcolorr() : 255; + scg = options.has_bgstartcolorg() ? options.bgstartcolorg() : 255; + scb = options.has_bgstartcolorb() ? options.bgstartcolorb() : 255; + + ecr = options.has_bgendcolorr() ? options.bgendcolorr() : 150; + ecg = options.has_bgendcolorg() ? options.bgendcolorg() : 150; + ecb = options.has_bgendcolorb() ? options.bgendcolorb() : 255; + } + else if(dynamic_cast(widget)) + { + cr = options.has_bgcolorr() ? options.bgcolorr() : 255; + cg = options.has_bgcolorg() ? options.bgcolorg() : 150; + cb = options.has_bgcolorb() ? options.bgcolorb() : 100; + + scr = options.has_bgstartcolorr() ? options.bgstartcolorr() : 255; + scg = options.has_bgstartcolorg() ? options.bgstartcolorg() : 255; + scb = options.has_bgstartcolorb() ? options.bgstartcolorb() : 255; + + ecr = options.has_bgendcolorr() ? options.bgendcolorr() : 255; + ecg = options.has_bgendcolorg() ? options.bgendcolorg() : 150; + ecb = options.has_bgendcolorb() ? options.bgendcolorb() : 100; + } + else + { + cr = options.has_bgcolorr() ? options.bgcolorr() : 150; + cg = options.has_bgcolorg() ? options.bgcolorg() : 200; + cb = options.has_bgcolorb() ? options.bgcolorb() : 255; + + scr = options.has_bgstartcolorr() ? options.bgstartcolorr() : 255; + scg = options.has_bgstartcolorg() ? options.bgstartcolorg() : 255; + scb = options.has_bgstartcolorb() ? options.bgstartcolorb() : 255; + + ecr = options.has_bgendcolorr() ? options.bgendcolorr() : 150; + ecg = options.has_bgendcolorg() ? options.bgendcolorg() : 200; + ecb = options.has_bgendcolorb() ? options.bgendcolorb() : 255; + } + + float bgcv1 = 0.0f; + float bgcv2 = -0.5f; + if(options.has_vectorx()) + { + bgcv1 = options.vectorx(); + } + if(options.has_vectory()) + { + bgcv2 = options.vectory(); + } + panel->setBackGroundColorVector(Vec2(bgcv1, bgcv2)); + + int co = options.has_bgcoloropacity() ? options.bgcoloropacity() : 100; + + int colorType = options.has_colortype() ? options.colortype() : 1; + panel->setBackGroundColorType(Layout::BackGroundColorType(colorType)); + + panel->setBackGroundColor(Color3B(scr, scg, scb),Color3B(ecr, ecg, ecb)); + panel->setBackGroundColor(Color3B(cr, cg, cb)); + panel->setBackGroundColorOpacity(co); + + + const protocolbuffers::ResourceData& imageFileNameDic = options.backgroundimagedata(); + int imageFileNameType = imageFileNameDic.resourcetype(); + if (imageFileNameType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + imageFileNameDic.plistfile()); + } + std::string imageFileName = this->getResourcePath(imageFileNameDic.path(), (Widget::TextureResType)imageFileNameType); + panel->setBackGroundImage(imageFileName, (Widget::TextureResType)imageFileNameType); + + + if (backGroundScale9Enable) + { + float cx = options.capinsetsx(); + float cy = options.capinsetsy(); + float cw = options.has_capinsetswidth() ? options.capinsetswidth() : 1; + float ch = options.has_capinsetsheight() ? options.capinsetsheight() : 1; + panel->setBackGroundImageCapInsets(Rect(cx, cy, cw, ch)); + + bool sw = options.has_scale9width(); + bool sh = options.has_scale9height(); + if (sw && sh) + { + float swf = options.scale9width(); + float shf = options.scale9height(); + panel->setContentSize(Size(swf, shf)); + } + } + + panel->setLayoutType((Layout::Type)options.layouttype()); + + const protocolbuffers::WidgetOptions& widgetOptions = nodeTree.widgetoptions(); + + int red = widgetOptions.has_colorr() ? widgetOptions.colorr() : 255; + int green = widgetOptions.has_colorg() ? widgetOptions.colorg() : 255; + int blue = widgetOptions.has_colorb() ? widgetOptions.colorb() : 255; + panel->setColor(Color3B(red, green, blue)); + + int opacity = widgetOptions.has_alpha() ? widgetOptions.alpha() : 255; + panel->setOpacity(opacity); + + + // other commonly protperties + setAnchorPointForWidget(widget, nodeTree); + + bool flipX = widgetOptions.flipx(); + bool flipY = widgetOptions.flipy(); + if (flipX) + { + widget->setFlippedX(flipX); + } + if (flipY) + { + widget->setFlippedY(flipY); + } + } + + void LayoutReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + WidgetReader::setPropsFromXML(widget, objectData); + + Layout* panel = static_cast(widget); + + std::string xmlPath = GUIReader::getInstance()->getFilePath(); + + bool scale9Enabled = false; + float width = 0.0f, height = 0.0f; + float cx = 0.0f, cy = 0.0f, cw = 0.0f, ch = 0.0f; + + Layout::BackGroundColorType colorType = Layout::BackGroundColorType::NONE; + int color_opacity = 255, bgimg_opacity = 255, opacity = 255; + int red = 255, green = 255, blue = 255; + int bgimg_red = 255, bgimg_green = 255, bgimg_blue = 255; + int singleRed = 255, singleGreen = 255, singleBlue = 255; + int start_red = 255, start_green = 255, start_blue = 255; + int end_red = 255, end_green = 255, end_blue = 255; + float vector_color_x = 0.0f, vector_color_y = -0.5f; + + int resourceType = 0; + std::string path = "", plistFile = ""; + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ClipAble") + { + panel->setClippingEnabled((value == "True") ? true : false); + } + else if (name == "ComboBoxIndex") + { + colorType = (Layout::BackGroundColorType)atoi(value.c_str()); + } + else if (name == "BackColorAlpha") + { + color_opacity = atoi(value.c_str()); + } + else if (name == "Alpha") + { + opacity = atoi(value.c_str()); + bgimg_opacity = atoi(value.c_str()); + } + else if (name == "Scale9Enable") + { + scale9Enabled = (value == "True") ? true : false; + } + else if (name == "Scale9OriginX") + { + cx = atof(value.c_str()); + } + else if (name == "Scale9OriginY") + { + cy = atof(value.c_str()); + } + else if (name == "Scale9Width") + { + cw = atof(value.c_str()); + } + else if (name == "Scale9Height") + { + ch = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + + // child elements + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "Size") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + width = atof(value.c_str()); + } + else if (name == "Y") + { + height = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "CColor") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + red = atoi(value.c_str()); + bgimg_red = atoi(value.c_str()); + } + else if (name == "G") + { + green = atoi(value.c_str()); + bgimg_green = atoi(value.c_str()); + } + else if (name == "B") + { + blue = atoi(value.c_str()); + bgimg_blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "SingleColor") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + singleRed = atoi(value.c_str()); + } + else if (name == "G") + { + singleGreen = atoi(value.c_str()); + } + else if (name == "B") + { + singleBlue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "EndColor") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + end_red = atoi(value.c_str()); + } + else if (name == "G") + { + end_green = atoi(value.c_str()); + } + else if (name == "B") + { + end_blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "FirstColor") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + start_red = atoi(value.c_str()); + } + else if (name == "G") + { + start_green = atoi(value.c_str()); + } + else if (name == "B") + { + start_blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "ColorVector") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ScaleX") + { + vector_color_x = atof(value.c_str()); + } + else if (name == "ScaleY") + { + vector_color_y = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "FileData") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + } + + child = child->NextSiblingElement(); + } + + panel->setBackGroundColorType(colorType); + switch (colorType) + { + case Layout::BackGroundColorType::SOLID: + panel->setBackGroundColor(Color3B(singleRed, singleGreen, singleBlue)); + break; + + case Layout::BackGroundColorType::GRADIENT: + panel->setBackGroundColor(Color3B(start_red, start_green, start_blue), + Color3B(end_red, end_green, end_blue)); + panel->setBackGroundColorVector(Vec2(vector_color_x, vector_color_y)); + break; + + default: + break; + } + + panel->setColor(Color3B(red, green, blue)); + panel->setOpacity(opacity); + + panel->setBackGroundColorOpacity(color_opacity); + + switch (resourceType) + { + case 0: + { + panel->setBackGroundImage(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + panel->setBackGroundImage(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + + if (path != "") + { + if (scale9Enabled) + { + panel->setBackGroundImageScale9Enabled(scale9Enabled); + panel->setBackGroundImageCapInsets(Rect(cx, cy, cw, ch)); + panel->setContentSize(Size(width, height)); + } + } + + } } diff --git a/cocos/editor-support/cocostudio/WidgetReader/LayoutReader/LayoutReader.h b/cocos/editor-support/cocostudio/WidgetReader/LayoutReader/LayoutReader.h index 3b39a6a106..36aadf3c71 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/LayoutReader/LayoutReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/LayoutReader/LayoutReader.h @@ -43,6 +43,8 @@ namespace cocostudio virtual void setPropsFromJsonDictionary(cocos2d::ui::Widget* widget, const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode) ; + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); }; } diff --git a/cocos/editor-support/cocostudio/WidgetReader/ListViewReader/ListViewReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/ListViewReader/ListViewReader.cpp index 2e86460e24..4f727e425a 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/ListViewReader/ListViewReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/ListViewReader/ListViewReader.cpp @@ -3,6 +3,8 @@ #include "ListViewReader.h" #include "ui/UIListView.h" #include "cocostudio/CocoLoader.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" USING_NS_CC; using namespace ui; @@ -75,5 +77,527 @@ namespace cocostudio float itemMargin = DICTOOL->getFloatValue_json(options, P_ItemMargin); listView->setItemsMargin(itemMargin); } + + void ListViewReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); + + + + ListView* listView = static_cast(widget); + const protocolbuffers::ListViewOptions& options = nodeTree.listviewoptions(); + + std::string protocolBuffersPath = GUIReader::getInstance()->getFilePath(); + + listView->setClippingEnabled(options.clipable()); + + bool backGroundScale9Enable = options.backgroundscale9enable(); + listView->setBackGroundImageScale9Enabled(backGroundScale9Enable); + + + int cr; + int cg; + int cb; + int scr; + int scg; + int scb; + int ecr; + int ecg; + int ecb; + + + + cr = options.has_bgcolorr() ? options.bgcolorr() : 150; + cg = options.has_bgcolorg() ? options.bgcolorg() : 150; + cb = options.has_bgcolorb() ? options.bgcolorb() : 255; + + scr = options.has_bgstartcolorr() ? options.bgstartcolorr() : 255; + scg = options.has_bgstartcolorg() ? options.bgstartcolorg() : 255; + scb = options.has_bgstartcolorb() ? options.bgstartcolorb() : 255; + + ecr = options.has_bgendcolorr() ? options.bgendcolorr() : 150; + ecg = options.has_bgendcolorg() ? options.bgendcolorg() : 150; + ecb = options.has_bgendcolorb() ? options.bgendcolorb() : 255; + + float bgcv1 = options.vectorx(); + float bgcv2 = options.has_vectory() ? options.vectory() : -0.5f; + listView->setBackGroundColorVector(Vec2(bgcv1, bgcv2)); + + int co = options.has_bgcoloropacity() ? options.bgcoloropacity() : 100; + + int colorType = options.has_colortype() ? options.colortype() : 1; + listView->setBackGroundColorType(Layout::BackGroundColorType(colorType)); + + listView->setBackGroundColor(Color3B(scr, scg, scb),Color3B(ecr, ecg, ecb)); + listView->setBackGroundColor(Color3B(cr, cg, cb)); + listView->setBackGroundColorOpacity(co); + + + const protocolbuffers::ResourceData& imageFileNameDic = options.backgroundimagedata(); + int imageFileNameType = imageFileNameDic.resourcetype(); + if (imageFileNameType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + imageFileNameDic.plistfile()); + } + std::string imageFileName = this->getResourcePath(imageFileNameDic.path(), (Widget::TextureResType)imageFileNameType); + listView->setBackGroundImage(imageFileName, (Widget::TextureResType)imageFileNameType); + + + if (backGroundScale9Enable) + { + float cx = options.capinsetsx(); + float cy = options.capinsetsy(); + float cw = options.has_capinsetswidth() ? options.capinsetswidth() : 1; + float ch = options.has_capinsetsheight() ? options.capinsetsheight() : 1; + listView->setBackGroundImageCapInsets(Rect(cx, cy, cw, ch)); + + bool sw = options.has_scale9width(); + bool sh = options.has_scale9height(); + if (sw && sh) + { + float swf = options.scale9width(); + float shf = options.scale9height(); + listView->setContentSize(Size(swf, shf)); + } + } + + const protocolbuffers::WidgetOptions& widgetOptions = nodeTree.widgetoptions(); + + int red = widgetOptions.has_colorr() ? widgetOptions.colorr() : 255; + int green = widgetOptions.has_colorg() ? widgetOptions.colorg() : 255; + int blue = widgetOptions.has_colorb() ? widgetOptions.colorb() : 255; + listView->setColor(Color3B(red, green, blue)); + + int opacity = widgetOptions.has_alpha() ? widgetOptions.alpha() : 255; + listView->setOpacity(opacity); + + + + + float innerWidth = options.has_innerwidth() ? options.innerwidth() : 200; + float innerHeight = options.has_innerheight() ? options.innerheight() : 200; + listView->setInnerContainerSize(Size(innerWidth, innerHeight)); + listView->setBounceEnabled(options.bounceenable()); + + int direction = options.has_direction() ? options.direction() : 2; + listView->setDirection((ScrollView::Direction)direction); + + int gravityValue = options.has_gravity() ? options.gravity() : 3; + ListView::Gravity gravity = (ListView::Gravity)gravityValue; + listView->setGravity(gravity); + + float itemMargin = options.itemmargin(); + listView->setItemsMargin(itemMargin); + + + // other commonly protperties + setAnchorPointForWidget(widget, nodeTree); + + bool flipX = widgetOptions.flipx(); + bool flipY = widgetOptions.flipy(); + if (flipX) + { + widget->setFlippedX(flipX); + } + if (flipY) + { + widget->setFlippedY(flipY); + } + } + + void ListViewReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + WidgetReader::setPropsFromXML(widget, objectData); + + ListView* listView = static_cast(widget); + + std::string xmlPath = GUIReader::getInstance()->getFilePath(); + + bool scale9Enabled = false; + float width = 0.0f, height = 0.0f; + float cx = 0.0f, cy = 0.0f, cw = 0.0f, ch = 0.0f; + + Layout::BackGroundColorType colorType = Layout::BackGroundColorType::NONE; + int color_opacity = 255, bgimg_opacity = 255, opacity = 255; + int red = 255, green = 255, blue = 255; + int bgimg_red = 255, bgimg_green = 255, bgimg_blue = 255; + int singleRed = 255, singleGreen = 255, singleBlue = 255; + int start_red = 255, start_green = 255, start_blue = 255; + int end_red = 255, end_green = 255, end_blue = 255; + float vector_color_x = 0.0f, vector_color_y = -0.5f; + + int resourceType = 0; + std::string path = "", plistFile = ""; + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ClipAble") + { + listView->setClippingEnabled((value == "True") ? true : false); + } + else if (name == "ComboBoxIndex") + { + colorType = (Layout::BackGroundColorType)atoi(value.c_str()); + } + else if (name == "BackColorAlpha") + { + color_opacity = atoi(value.c_str()); + } + else if (name == "Alpha") + { + opacity = atoi(value.c_str()); + bgimg_opacity = atoi(value.c_str()); + } + else if (name == "Scale9Enable") + { + scale9Enabled = (value == "True") ? true : false; + } + else if (name == "Scale9OriginX") + { + cx = atof(value.c_str()); + } + else if (name == "Scale9OriginY") + { + cy = atof(value.c_str()); + } + else if (name == "Scale9Width") + { + cw = atof(value.c_str()); + } + else if (name == "Scale9Height") + { + ch = atof(value.c_str()); + } + else if (name == "DirectionType") + { + if (value == "Vertical") + { + listView->setDirection(ScrollView::Direction::VERTICAL); + + attribute = objectData->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + value = attribute->Value(); + + if (name == "HorizontalType") + { + if (value == "HORIZONTAL_LEFT") + { + listView->setGravity(ListView::Gravity::LEFT); + } + else if (value == "HORIZONTAL_RIGHT") + { + listView->setGravity(ListView::Gravity::RIGHT); + } + else if (value == "HORIZONTAL_CENTER") + { + listView->setGravity(ListView::Gravity::CENTER_HORIZONTAL); + } + } + + attribute = attribute->Next(); + } + } + else if (value == "Horizontal") + { + listView->setDirection(ScrollView::Direction::HORIZONTAL); + + attribute = objectData->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + value = attribute->Value(); + + if (name == "VerticalType") + { + if (value == "VERTICAL_TOP") + { + listView->setGravity(ListView::Gravity::TOP); + } + else if (value == "VERTICAL_BOTTOM") + { + listView->setGravity(ListView::Gravity::BOTTOM); + } + else if (value == "VERTICAL_CENTER") + { + listView->setGravity(ListView::Gravity::CENTER_VERTICAL); + } + } + + attribute = attribute->Next(); + } + } + } + else if (name == "IsBounceEnabled") + { + listView->setBounceEnabled((value == "True") ? true : false); + } + else if (name == "ItemMargin") + { + listView->setItemsMargin(atoi(value.c_str())); + } + + attribute = attribute->Next(); + } + + // child elements + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "InnerNodeSize") + { + attribute = child->FirstAttribute(); + width = 0.0f; height = 0.0f; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Width") + { + width = atof(value.c_str()); + } + else if (name == "Height") + { + height = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + + listView->setInnerContainerSize(Size(width, height)); + } + else if (name == "Size") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + width = atof(value.c_str()); + } + else if (name == "Y") + { + height = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "CColor") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + red = atoi(value.c_str()); + bgimg_red = atoi(value.c_str()); + } + else if (name == "G") + { + green = atoi(value.c_str()); + bgimg_green = atoi(value.c_str()); + } + else if (name == "B") + { + blue = atoi(value.c_str()); + bgimg_blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "SingleColor") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + singleRed = atoi(value.c_str()); + } + else if (name == "G") + { + singleGreen = atoi(value.c_str()); + } + else if (name == "B") + { + singleBlue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "EndColor") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + end_red = atoi(value.c_str()); + } + else if (name == "G") + { + end_green = atoi(value.c_str()); + } + else if (name == "B") + { + end_blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "FirstColor") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + start_red = atoi(value.c_str()); + } + else if (name == "G") + { + start_green = atoi(value.c_str()); + } + else if (name == "B") + { + start_blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "ColorVector") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ScaleX") + { + vector_color_x = atof(value.c_str()); + } + else if (name == "ScaleY") + { + vector_color_y = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "FileData") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + } + + child = child->NextSiblingElement(); + } + + listView->setColor(Color3B(red, green, blue)); + listView->setOpacity(opacity); + + listView->setBackGroundColorType(colorType); + switch (colorType) + { + case Layout::BackGroundColorType::SOLID: + listView->setBackGroundColor(Color3B(singleRed, singleGreen, singleBlue)); + break; + + case Layout::BackGroundColorType::GRADIENT: + listView->setBackGroundColor(Color3B(start_red, start_green, start_blue), + Color3B(end_red, end_green, end_blue)); + listView->setBackGroundColorVector(Vec2(vector_color_x, vector_color_y)); + break; + + default: + break; + } + + listView->setBackGroundColorOpacity(color_opacity); + + switch (resourceType) + { + case 0: + { + listView->setBackGroundImage(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + listView->setBackGroundImage(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + + if (path != "") + { + if (scale9Enabled) + { + listView->setBackGroundImageScale9Enabled(scale9Enabled); + listView->setBackGroundImageCapInsets(Rect(cx, cy, cw, ch)); + listView->setContentSize(Size(width, height)); + } + } + + } + } diff --git a/cocos/editor-support/cocostudio/WidgetReader/ListViewReader/ListViewReader.h b/cocos/editor-support/cocostudio/WidgetReader/ListViewReader/ListViewReader.h index 97564e614a..e726d04d85 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/ListViewReader/ListViewReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/ListViewReader/ListViewReader.h @@ -43,6 +43,9 @@ namespace cocostudio virtual void setPropsFromJsonDictionary(cocos2d::ui::Widget* widget, const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode) ; + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); + }; } diff --git a/cocos/editor-support/cocostudio/WidgetReader/LoadingBarReader/LoadingBarReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/LoadingBarReader/LoadingBarReader.cpp index 00b93df0db..82489d8ec5 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/LoadingBarReader/LoadingBarReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/LoadingBarReader/LoadingBarReader.cpp @@ -3,6 +3,8 @@ #include "LoadingBarReader.h" #include "ui/UILoadingBar.h" #include "cocostudio/CocoLoader.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" USING_NS_CC; using namespace ui; @@ -140,4 +142,179 @@ namespace cocostudio WidgetReader::setColorPropsFromJsonDictionary(widget, options); } + + void LoadingBarReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); + + LoadingBar* loadingBar = static_cast(widget); + const protocolbuffers::LoadingBarOptions& options = nodeTree.loadingbaroptions(); + + std::string protocolBuffersPath = GUIReader::getInstance()->getFilePath(); + + const protocolbuffers::ResourceData& imageFileNameDic = options.texturedata(); + int imageFileNameType = imageFileNameDic.resourcetype(); + if (imageFileNameType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + imageFileNameDic.plistfile()); + } + std::string imageFileName = this->getResourcePath(imageFileNameDic.path(), (Widget::TextureResType)imageFileNameType); + loadingBar->loadTexture(imageFileName, (Widget::TextureResType)imageFileNameType); + + + /* gui mark add load bar scale9 parse */ + bool scale9Enable = options.scale9enable(); + loadingBar->setScale9Enabled(scale9Enable); + + + float cx = options.capinsetsx(); + float cy = options.capinsetsy(); + float cw = options.has_capinsetswidth() ? options.capinsetswidth() : 1; + float ch = options.has_capinsetsheight() ? options.capinsetsheight() : 1; + + if (scale9Enable) { + loadingBar->setCapInsets(Rect(cx, cy, cw, ch)); + + } + + const protocolbuffers::WidgetOptions& widgetOptions = nodeTree.widgetoptions(); + float width = widgetOptions.width(); + float height = widgetOptions.height(); + loadingBar->setContentSize(Size(width, height)); + + /**/ + + loadingBar->setDirection(LoadingBar::Direction(options.direction())); + int percent = options.has_percent() ? options.percent() : 100; + loadingBar->setPercent(percent); + + + // other commonly protperties + WidgetReader::setColorPropsFromProtocolBuffers(widget, nodeTree); + } + + void LoadingBarReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + WidgetReader::setPropsFromXML(widget, objectData); + + LoadingBar* loadingBar = static_cast(widget); + + std::string xmlPath = GUIReader::getInstance()->getFilePath(); + + bool scale9Enabled = false; + float cx = 0.0f, cy = 0.0f, cw = 0.0f, ch = 0.0f; + int direction = 0; + + int percent = 0; + + int opacity = 255; + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ProgressType") + { + direction = (value == "Left_To_Right") ? 0 : 1; + } + else if (name == "ProgressInfo") + { + percent = atoi(value.c_str()); + } + else if (name == "Scale9Enable") + { + if (value == "True") + { + scale9Enabled = true; + } + } + else if (name == "Scale9OriginX") + { + cx = atof(value.c_str()); + } + else if (name == "Scale9OriginY") + { + cy = atof(value.c_str()); + } + else if (name == "Scale9Width") + { + cw = atof(value.c_str()); + } + else if (name == "Scale9Height") + { + ch = atof(value.c_str()); + } + else if (name == "Alpha") + { + opacity = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + + // child elements + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "ImageFileData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + loadingBar->loadTexture(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + loadingBar->loadTexture(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + + child = child->NextSiblingElement(); + } + + loadingBar->setDirection((LoadingBar::Direction)direction); + loadingBar->setPercent(percent); + + loadingBar->setOpacity(opacity); + } + } diff --git a/cocos/editor-support/cocostudio/WidgetReader/LoadingBarReader/LoadingBarReader.h b/cocos/editor-support/cocostudio/WidgetReader/LoadingBarReader/LoadingBarReader.h index e77beb22ab..d0788ca0aa 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/LoadingBarReader/LoadingBarReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/LoadingBarReader/LoadingBarReader.h @@ -43,6 +43,9 @@ namespace cocostudio virtual void setPropsFromJsonDictionary(cocos2d::ui::Widget* widget, const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode) ; + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); + }; } diff --git a/cocos/editor-support/cocostudio/WidgetReader/PageViewReader/PageViewReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/PageViewReader/PageViewReader.cpp index 9fcb5acb6e..bf620219d4 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/PageViewReader/PageViewReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/PageViewReader/PageViewReader.cpp @@ -4,6 +4,8 @@ #include "ui/UIPageView.h" #include "ui/UILayout.h" #include "cocostudio/CocoLoader.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" USING_NS_CC; using namespace ui; @@ -42,4 +44,420 @@ namespace cocostudio { LayoutReader::setPropsFromJsonDictionary(widget, options); } + + void PageViewReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); + + + PageView* pageView = static_cast(widget); + const protocolbuffers::PageViewOptions& options = nodeTree.pageviewoptions(); + + std::string protocolBuffersPath = GUIReader::getInstance()->getFilePath(); + + CCLOG("options.clipable() = %d", options.clipable()); + pageView->setClippingEnabled(options.clipable()); + + bool backGroundScale9Enable = options.backgroundscale9enable(); + pageView->setBackGroundImageScale9Enabled(backGroundScale9Enable); + + + int cr; + int cg; + int cb; + int scr; + int scg; + int scb; + int ecr; + int ecg; + int ecb; + + cr = options.has_bgcolorr() ? options.bgcolorr() : 150; + cg = options.has_bgcolorg() ? options.bgcolorg() : 150; + cb = options.has_bgcolorb() ? options.bgcolorb() : 150; + + scr = options.has_bgstartcolorr() ? options.bgstartcolorr() : 255; + scg = options.has_bgstartcolorg() ? options.bgstartcolorg() : 255; + scb = options.has_bgstartcolorb() ? options.bgstartcolorb() : 255; + + ecr = options.has_bgendcolorr() ? options.bgendcolorr() : 255; + ecg = options.has_bgendcolorg() ? options.bgendcolorg() : 150; + ecb = options.has_bgendcolorb() ? options.bgendcolorb() : 100; + + float bgcv1 = 0.0f; + float bgcv2 = -0.5f; + if(options.has_vectorx()) + { + bgcv1 = options.vectorx(); + } + if(options.has_vectory()) + { + bgcv2 = options.vectory(); + } + pageView->setBackGroundColorVector(Vec2(bgcv1, bgcv2)); + + int co = options.has_bgcoloropacity() ? options.bgcoloropacity() : 100; + + int colorType = options.has_colortype() ? options.colortype() : 1; + pageView->setBackGroundColorType(Layout::BackGroundColorType(colorType)); + + pageView->setBackGroundColor(Color3B(scr, scg, scb),Color3B(ecr, ecg, ecb)); + pageView->setBackGroundColor(Color3B(cr, cg, cb)); + pageView->setBackGroundColorOpacity(co); + + + const protocolbuffers::ResourceData& imageFileNameDic = options.backgroundimagedata(); + int imageFileNameType = imageFileNameDic.resourcetype(); + if (imageFileNameType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + imageFileNameDic.plistfile()); + } + std::string imageFileName = this->getResourcePath(imageFileNameDic.path(), (Widget::TextureResType)imageFileNameType); + pageView->setBackGroundImage(imageFileName, (Widget::TextureResType)imageFileNameType); + + + if (backGroundScale9Enable) + { + float cx = options.capinsetsx(); + float cy = options.capinsetsy(); + float cw = options.has_capinsetswidth() ? options.capinsetswidth() : 1; + float ch = options.has_capinsetsheight() ? options.capinsetsheight() : 1; + pageView->setBackGroundImageCapInsets(Rect(cx, cy, cw, ch)); + bool sw = options.has_scale9width(); + bool sh = options.has_scale9height(); + if (sw && sh) + { + float swf = options.scale9width(); + float shf = options.scale9height(); + pageView->setContentSize(Size(swf, shf)); + } + } + + const protocolbuffers::WidgetOptions& widgetOptions = nodeTree.widgetoptions(); + + int red = widgetOptions.has_colorr() ? widgetOptions.colorr() : 255; + int green = widgetOptions.has_colorg() ? widgetOptions.colorg() : 255; + int blue = widgetOptions.has_colorb() ? widgetOptions.colorb() : 255; + pageView->setColor(Color3B(red, green, blue)); + + int opacity = widgetOptions.has_alpha() ? widgetOptions.alpha() : 255; + pageView->setOpacity(opacity); + + + // other commonly protperties + setAnchorPointForWidget(widget, nodeTree); + + bool flipX = widgetOptions.flipx(); + bool flipY = widgetOptions.flipy(); + if (flipX) + { + widget->setFlippedX(flipX); + } + if (flipY) + { + widget->setFlippedY(flipY); + } + } + + void PageViewReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + WidgetReader::setPropsFromXML(widget, objectData); + + PageView* pageView = static_cast(widget); + + std::string xmlPath = GUIReader::getInstance()->getFilePath(); + + bool scale9Enabled = false; + float width = 0.0f, height = 0.0f; + float cx = 0.0f, cy = 0.0f, cw = 0.0f, ch = 0.0f; + + Layout::BackGroundColorType colorType = Layout::BackGroundColorType::NONE; + int color_opacity = 255, bgimg_opacity = 255, opacity = 255; + int red = 255, green = 255, blue = 255; + int bgimg_red = 255, bgimg_green = 255, bgimg_blue = 255; + int singleRed = 255, singleGreen = 255, singleBlue = 255; + int start_red = 255, start_green = 255, start_blue = 255; + int end_red = 255, end_green = 255, end_blue = 255; + float vector_color_x = 0.0f, vector_color_y = -0.5f; + + int resourceType = 0; + std::string path = "", plistFile = ""; + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ClipAble") + { + pageView->setClippingEnabled((value == "True") ? true : false); + } + else if (name == "ComboBoxIndex") + { + colorType = (Layout::BackGroundColorType)atoi(value.c_str()); + } + else if (name == "BackColorAlpha") + { + color_opacity = atoi(value.c_str()); + } + else if (name == "Alpha") + { + opacity = atoi(value.c_str()); + bgimg_opacity = atoi(value.c_str()); + } + else if (name == "Scale9Enable") + { + scale9Enabled = (value == "True") ? true : false; + } + else if (name == "Scale9OriginX") + { + cx = atof(value.c_str()); + } + else if (name == "Scale9OriginY") + { + cy = atof(value.c_str()); + } + else if (name == "Scale9Width") + { + cw = atof(value.c_str()); + } + else if (name == "Scale9Height") + { + ch = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + + // child elements + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "Size") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + width = atof(value.c_str()); + } + else if (name == "Y") + { + height = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "CColor") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + red = atoi(value.c_str()); + bgimg_red = atoi(value.c_str()); + } + else if (name == "G") + { + green = atoi(value.c_str()); + bgimg_green = atoi(value.c_str()); + } + else if (name == "B") + { + blue = atoi(value.c_str()); + bgimg_blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "SingleColor") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + singleRed = atoi(value.c_str()); + } + else if (name == "G") + { + singleGreen = atoi(value.c_str()); + } + else if (name == "B") + { + singleBlue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "EndColor") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + end_red = atoi(value.c_str()); + } + else if (name == "G") + { + end_green = atoi(value.c_str()); + } + else if (name == "B") + { + end_blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "FirstColor") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + start_red = atoi(value.c_str()); + } + else if (name == "G") + { + start_green = atoi(value.c_str()); + } + else if (name == "B") + { + start_blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "ColorVector") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ScaleX") + { + vector_color_x = atof(value.c_str()); + } + else if (name == "ScaleY") + { + vector_color_y = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "FileData") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + } + + child = child->NextSiblingElement(); + } + + pageView->setColor(Color3B(red, green, blue)); + pageView->setOpacity(opacity); + + pageView->setBackGroundColorType(colorType); + switch (colorType) + { + case Layout::BackGroundColorType::SOLID: + pageView->setBackGroundColor(Color3B(singleRed, singleGreen, singleBlue)); + break; + + case Layout::BackGroundColorType::GRADIENT: + pageView->setBackGroundColor(Color3B(start_red, start_green, start_blue), + Color3B(end_red, end_green, end_blue)); + pageView->setBackGroundColorVector(Vec2(vector_color_x, vector_color_y)); + break; + + default: + break; + } + + pageView->setBackGroundColorOpacity(color_opacity); + + switch (resourceType) + { + case 0: + { + pageView->setBackGroundImage(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + pageView->setBackGroundImage(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + + if (path != "") + { + if (scale9Enabled) + { + pageView->setBackGroundImageScale9Enabled(scale9Enabled); + pageView->setBackGroundImageCapInsets(Rect(cx, cy, cw, ch)); + pageView->setContentSize(Size(width, height)); + } + } + + } + } diff --git a/cocos/editor-support/cocostudio/WidgetReader/PageViewReader/PageViewReader.h b/cocos/editor-support/cocostudio/WidgetReader/PageViewReader/PageViewReader.h index 975049bd1a..4850ae44b6 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/PageViewReader/PageViewReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/PageViewReader/PageViewReader.h @@ -43,7 +43,8 @@ namespace cocostudio virtual void setPropsFromJsonDictionary(cocos2d::ui::Widget* widget, const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* cocoNode) ; - + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); }; } diff --git a/cocos/editor-support/cocostudio/WidgetReader/ScrollViewReader/ScrollViewReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/ScrollViewReader/ScrollViewReader.cpp index 1fb4bccc36..32f2638daa 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/ScrollViewReader/ScrollViewReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/ScrollViewReader/ScrollViewReader.cpp @@ -3,6 +3,8 @@ #include "ScrollViewReader.h" #include "ui/UIScrollView.h" #include "cocostudio/CocoLoader.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" USING_NS_CC; using namespace ui; @@ -82,4 +84,479 @@ namespace cocostudio LayoutReader::setColorPropsFromJsonDictionary(widget, options); } + + void ScrollViewReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); + + + ScrollView* scrollView = static_cast(widget); + const protocolbuffers::ScrollViewOptions& options = nodeTree.scrollviewoptions(); + + std::string protocolBuffersPath = GUIReader::getInstance()->getFilePath(); + + scrollView->setClippingEnabled(options.clipable()); + + bool backGroundScale9Enable = options.backgroundscale9enable(); + scrollView->setBackGroundImageScale9Enabled(backGroundScale9Enable); + + + int cr; + int cg; + int cb; + int scr; + int scg; + int scb; + int ecr; + int ecg; + int ecb; + + + + cr = options.has_bgcolorr() ? options.bgcolorr() : 255; + cg = options.has_bgcolorg() ? options.bgcolorg() : 150; + cb = options.has_bgcolorb() ? options.bgcolorb() : 100; + + scr = options.has_bgstartcolorr() ? options.bgstartcolorr() : 255; + scg = options.has_bgstartcolorg() ? options.bgstartcolorg() : 255; + scb = options.has_bgstartcolorb() ? options.bgstartcolorb() : 255; + + ecr = options.has_bgendcolorr() ? options.bgendcolorr() : 255; + ecg = options.has_bgendcolorg() ? options.bgendcolorg() : 150; + ecb = options.has_bgendcolorb() ? options.bgendcolorb() : 100; + + float bgcv1 = 0.0f; + float bgcv2 = -0.5f; + if(options.has_vectorx()) + { + bgcv1 = options.vectorx(); + } + if(options.has_vectory()) + { + bgcv2 = options.vectory(); + } + scrollView->setBackGroundColorVector(Vec2(bgcv1, bgcv2)); + + int co = options.has_bgcoloropacity() ? options.bgcoloropacity() : 100; + + int colorType = options.has_colortype() ? options.colortype() : 1; + scrollView->setBackGroundColorType(Layout::BackGroundColorType(colorType)); + + scrollView->setBackGroundColor(Color3B(scr, scg, scb),Color3B(ecr, ecg, ecb)); + scrollView->setBackGroundColor(Color3B(cr, cg, cb)); + scrollView->setBackGroundColorOpacity(co); + + + const protocolbuffers::ResourceData& imageFileNameDic = options.backgroundimagedata(); + int imageFileNameType = imageFileNameDic.resourcetype(); + if (imageFileNameType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + imageFileNameDic.plistfile()); + } + std::string imageFileName = this->getResourcePath(imageFileNameDic.path(), (Widget::TextureResType)imageFileNameType); + scrollView->setBackGroundImage(imageFileName, (Widget::TextureResType)imageFileNameType); + + + if (backGroundScale9Enable) + { + float cx = options.capinsetsx(); + float cy = options.capinsetsy(); + float cw = options.has_capinsetswidth() ? options.capinsetswidth() : 1; + float ch = options.has_capinsetsheight() ? options.capinsetsheight() : 1; + scrollView->setBackGroundImageCapInsets(Rect(cx, cy, cw, ch)); + bool sw = options.has_scale9width(); + bool sh = options.has_scale9height(); + if (sw && sh) + { + float swf = options.scale9width(); + float shf = options.scale9height(); + scrollView->setContentSize(Size(swf, shf)); + } + } + + scrollView->setLayoutType((Layout::Type)options.layouttype()); + + const protocolbuffers::WidgetOptions& widgetOptions = nodeTree.widgetoptions(); + + int red = widgetOptions.has_colorr() ? widgetOptions.colorr() : 255; + int green = widgetOptions.has_colorg() ? widgetOptions.colorg() : 255; + int blue = widgetOptions.has_colorb() ? widgetOptions.colorb() : 255; + scrollView->setColor(Color3B(red, green, blue)); + + int opacity = widgetOptions.has_alpha() ? widgetOptions.alpha() : 255; + scrollView->setOpacity(opacity); + + + + float innerWidth = options.has_innerwidth() ? options.innerwidth() : 200; + float innerHeight = options.has_innerheight() ? options.innerheight() : 200; + scrollView->setInnerContainerSize(Size(innerWidth, innerHeight)); + int direction = options.has_direction() ? options.direction() : 1; + scrollView->setDirection((ScrollView::Direction)direction); + scrollView->setBounceEnabled(options.bounceenable()); + + + // other commonly protperties + setAnchorPointForWidget(widget, nodeTree); + + bool flipX = widgetOptions.flipx(); + bool flipY = widgetOptions.flipy(); + if (flipX) + { + widget->setFlippedX(flipX); + } + if (flipY) + { + widget->setFlippedY(flipY); + } + } + + void ScrollViewReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + WidgetReader::setPropsFromXML(widget, objectData); + + ScrollView* scrollView = static_cast(widget); + + std::string xmlPath = GUIReader::getInstance()->getFilePath(); + + bool scale9Enabled = false; + float width = 0.0f, height = 0.0f; + float cx = 0.0f, cy = 0.0f, cw = 0.0f, ch = 0.0f; + + Layout::BackGroundColorType colorType = Layout::BackGroundColorType::NONE; + int color_opacity = 255, bgimg_opacity = 255, opacity = 255; + int red = 255, green = 255, blue = 255; + int bgimg_red = 255, bgimg_green = 255, bgimg_blue = 255; + int singleRed = 255, singleGreen = 255, singleBlue = 255; + int start_red = 255, start_green = 255, start_blue = 255; + int end_red = 255, end_green = 255, end_blue = 255; + float vector_color_x = 0.0f, vector_color_y = -0.5f; + + int direction = 1; + + int resourceType = 0; + std::string path = "", plistFile = ""; + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ClipAble") + { + scrollView->setClippingEnabled((value == "True") ? true : false); + } + else if (name == "ComboBoxIndex") + { + colorType = (Layout::BackGroundColorType)atoi(value.c_str()); + } + else if (name == "BackColorAlpha") + { + color_opacity = atoi(value.c_str()); + } + else if (name == "Alpha") + { + opacity = atoi(value.c_str()); + bgimg_opacity = atoi(value.c_str()); + } + else if (name == "Scale9Enable") + { + scale9Enabled = (value == "True") ? true : false; + } + else if (name == "Scale9OriginX") + { + cx = atof(value.c_str()); + } + else if (name == "Scale9OriginY") + { + cy = atof(value.c_str()); + } + else if (name == "Scale9Width") + { + cw = atof(value.c_str()); + } + else if (name == "Scale9Height") + { + ch = atof(value.c_str()); + } + else if (name == "ScrollDirectionType") + { + if (value == "Vertical") + { + direction = 1; + } + else if (value == "Horizontal") + { + direction = 2; + } + else if (value == "Vertical_Horizontal") + { + direction = 3; + } + } + else if (name == "IsBounceEnabled") + { + scrollView->setBounceEnabled((value == "True") ? true : false); + } + + attribute = attribute->Next(); + } + + // child elements + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "InnerNodeSize") + { + attribute = child->FirstAttribute(); + width = 0.0f; height = 0.0f; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Width") + { + width = atof(value.c_str()); + } + else if (name == "Height") + { + height = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + + scrollView->setInnerContainerSize(Size(width, height)); + } + else if (name == "Size") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + width = atof(value.c_str()); + } + else if (name == "Y") + { + height = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "CColor") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + red = atoi(value.c_str()); + bgimg_red = atoi(value.c_str()); + } + else if (name == "G") + { + green = atoi(value.c_str()); + bgimg_green = atoi(value.c_str()); + } + else if (name == "B") + { + blue = atoi(value.c_str()); + bgimg_blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "SingleColor") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + singleRed = atoi(value.c_str()); + } + else if (name == "G") + { + singleGreen = atoi(value.c_str()); + } + else if (name == "B") + { + singleBlue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "EndColor") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + end_red = atoi(value.c_str()); + } + else if (name == "G") + { + end_green = atoi(value.c_str()); + } + else if (name == "B") + { + end_blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "FirstColor") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "R") + { + start_red = atoi(value.c_str()); + } + else if (name == "G") + { + start_green = atoi(value.c_str()); + } + else if (name == "B") + { + start_blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "ColorVector") + { + attribute = child->FirstAttribute(); + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ScaleX") + { + vector_color_x = atof(value.c_str()); + } + else if (name == "ScaleY") + { + vector_color_y = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "FileData") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + } + + child = child->NextSiblingElement(); + } + + scrollView->setColor(Color3B(red, green, blue)); + scrollView->setOpacity(opacity); + + scrollView->setBackGroundColorType(colorType); + switch (colorType) + { + case Layout::BackGroundColorType::SOLID: + scrollView->setBackGroundColor(Color3B(singleRed, singleGreen, singleBlue)); + break; + + case Layout::BackGroundColorType::GRADIENT: + scrollView->setBackGroundColor(Color3B(start_red, start_green, start_blue), + Color3B(end_red, end_green, end_blue)); + scrollView->setBackGroundColorVector(Vec2(vector_color_x, vector_color_y)); + break; + + default: + break; + } + + scrollView->setBackGroundColorOpacity(color_opacity); + + switch (resourceType) + { + case 0: + { + scrollView->setBackGroundImage(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + scrollView->setBackGroundImage(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + + if (path != "") + { + if (scale9Enabled) + { + scrollView->setBackGroundImageScale9Enabled(scale9Enabled); + scrollView->setBackGroundImageCapInsets(Rect(cx, cy, cw, ch)); + scrollView->setContentSize(Size(width, height)); + } + } + + scrollView->setDirection((ScrollView::Direction)direction); + + } + } diff --git a/cocos/editor-support/cocostudio/WidgetReader/ScrollViewReader/ScrollViewReader.h b/cocos/editor-support/cocostudio/WidgetReader/ScrollViewReader/ScrollViewReader.h index a50d45d8b2..4f4860a051 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/ScrollViewReader/ScrollViewReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/ScrollViewReader/ScrollViewReader.h @@ -43,6 +43,8 @@ namespace cocostudio virtual void setPropsFromJsonDictionary(cocos2d::ui::Widget* widget, const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode) ; + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); }; } diff --git a/cocos/editor-support/cocostudio/WidgetReader/SliderReader/SliderReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/SliderReader/SliderReader.cpp index 2834fd8f96..26ab11485c 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/SliderReader/SliderReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/SliderReader/SliderReader.cpp @@ -3,6 +3,8 @@ #include "SliderReader.h" #include "ui/UISlider.h" #include "cocostudio/CocoLoader.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" USING_NS_CC; using namespace ui; @@ -186,4 +188,414 @@ namespace cocostudio WidgetReader::setColorPropsFromJsonDictionary(widget, options); } + + void SliderReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); + + Slider* slider = static_cast(widget); + const protocolbuffers::SliderOptions& options = nodeTree.slideroptions(); + + std::string protocolBuffersPath = GUIReader::getInstance()->getFilePath(); + + bool barTextureScale9Enable = options.scale9enable(); + slider->setScale9Enabled(barTextureScale9Enable); + + slider->setPercent(options.percent()); + + + // bool bt = DICTOOL->checkObjectExist_json(options, P_BarFileName); + float barLength = options.has_length() ? options.length() : 290; + + const protocolbuffers::ResourceData& imageFileNameDic = options.barfilenamedata(); + int imageFileNameType = imageFileNameDic.resourcetype(); + if (imageFileNameType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + imageFileNameDic.plistfile()); + } + std::string imageFileName = this->getResourcePath(imageFileNameDic.path(), (Widget::TextureResType)imageFileNameType); + slider->loadBarTexture(imageFileName, (Widget::TextureResType)imageFileNameType); + + + + if (barTextureScale9Enable) + { + slider->setContentSize(Size(barLength, slider->getContentSize().height)); + } + + //loading normal slider ball texture + const protocolbuffers::ResourceData& normalDic = options.ballnormaldata(); + int normalType = normalDic.resourcetype(); + if (normalType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + normalDic.plistfile()); + } + imageFileName = this->getResourcePath(normalDic.path(), (Widget::TextureResType)normalType); + slider->loadSlidBallTextureNormal(imageFileName, (Widget::TextureResType)normalType); + + + //loading slider ball press texture + const protocolbuffers::ResourceData& pressedDic = options.ballpresseddata(); + int pressedType = pressedDic.resourcetype(); + if (pressedType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + pressedDic.plistfile()); + } + std::string pressedFileName = this->getResourcePath(pressedDic.path(), (Widget::TextureResType)pressedType); + slider->loadSlidBallTexturePressed(pressedFileName, (Widget::TextureResType)pressedType); + + //loading silder ball disable texture + const protocolbuffers::ResourceData& disabledDic = options.balldisableddata(); + int disabledType = disabledDic.resourcetype(); + if (disabledType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + disabledDic.plistfile()); + } + std::string disabledFileName = this->getResourcePath(disabledDic.path(), (Widget::TextureResType)disabledType); + slider->loadSlidBallTextureDisabled(disabledFileName, (Widget::TextureResType)disabledType); + + //load slider progress texture + const protocolbuffers::ResourceData& progressBarDic = options.progressbardata(); + int progressBarType = progressBarDic.resourcetype(); + if (progressBarType == 1) + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(protocolBuffersPath + progressBarDic.plistfile()); + } + std::string progressBarFileName = this->getResourcePath(progressBarDic.path(), (Widget::TextureResType)progressBarType); + slider->loadProgressBarTexture(progressBarFileName, (Widget::TextureResType)progressBarType); + + bool displaystate = true; + if(options.has_displaystate()) + { + displaystate = options.displaystate(); + } + slider->setBright(displaystate); + + // other commonly protperties + WidgetReader::setColorPropsFromProtocolBuffers(widget, nodeTree); + } + + void SliderReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + WidgetReader::setPropsFromXML(widget, objectData); + + Slider* slider = static_cast(widget); + + std::string xmlPath = GUIReader::getInstance()->getFilePath(); + + bool scale9Enabled = false; + float cx = 0.0f, cy = 0.0f, cw = 0.0f, ch = 0.0f; + float swf = 0.0f, shf = 0.0f; + + int percent = 0; + + int opacity = 255; + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Scale9Enable") + { + if (value == "True") + { + scale9Enabled = true; + } + } + else if (name == "Scale9OriginX") + { + cx = atof(value.c_str()); + } + else if (name == "Scale9OriginY") + { + cy = atof(value.c_str()); + } + else if (name == "Scale9Width") + { + cw = atof(value.c_str()); + } + else if (name == "Scale9Height") + { + ch = atof(value.c_str()); + } + else if (name == "Length") + { + + } + else if (name == "PercentInfo") + { + percent = atoi(value.c_str()); + } + else if (name == "DisplayState") + { + slider->setBright((value == "True") ? true : false); + if (value == "False") + { + slider->setTouchEnabled(false); + } + } + else if (name == "Alpha") + { + opacity = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + + // child elements + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "BackGroundData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + slider->loadBarTexture(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + slider->loadBarTexture(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + else if (name == "BallNormalData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + slider->loadSlidBallTextureNormal(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + slider->loadSlidBallTextureNormal(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + else if (name == "BallPressedData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + slider->loadSlidBallTexturePressed(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + slider->loadSlidBallTexturePressed(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + else if (name == "BallDisabledData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + slider->loadSlidBallTextureDisabled(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + slider->loadSlidBallTextureDisabled(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + else if (name == "ProgressBarData") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + slider->loadProgressBarTexture(xmlPath + path, Widget::TextureResType::LOCAL); + break; + } + + case 1: + { + SpriteFrameCache::getInstance()->addSpriteFramesWithFile(xmlPath + plistFile); + slider->loadProgressBarTexture(path, Widget::TextureResType::PLIST); + break; + } + + default: + break; + } + } + + child = child->NextSiblingElement(); + } + + slider->setScale9Enabled(scale9Enabled); + + if (scale9Enabled) + { + slider->setCapInsets(Rect(cx, cy, cw, ch)); + slider->setContentSize(Size(swf, shf)); + } + + slider->setPercent(percent); + + slider->setOpacity(opacity); + } + } diff --git a/cocos/editor-support/cocostudio/WidgetReader/SliderReader/SliderReader.h b/cocos/editor-support/cocostudio/WidgetReader/SliderReader/SliderReader.h index ab025eb87d..6b121a9ba9 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/SliderReader/SliderReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/SliderReader/SliderReader.h @@ -43,6 +43,8 @@ namespace cocostudio virtual void setPropsFromJsonDictionary(cocos2d::ui::Widget* widget, const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode) ; + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); }; } diff --git a/cocos/editor-support/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp index da7ef0c39a..3bf7b446e4 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.cpp @@ -3,6 +3,8 @@ #include "TextAtlasReader.h" #include "ui/UITextAtlas.h" #include "cocostudio/CocoLoader.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" USING_NS_CC; using namespace ui; @@ -131,4 +133,133 @@ namespace cocostudio WidgetReader::setColorPropsFromJsonDictionary(widget, options); } + + void TextAtlasReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); + + std::string jsonPath = GUIReader::getInstance()->getFilePath(); + + TextAtlas* labelAtlas = static_cast(widget); + const protocolbuffers::TextAtlasOptions& options = nodeTree.textatlasoptions(); + + + const protocolbuffers::ResourceData& cmftDic = options.charmapfiledata(); + int cmfType = cmftDic.resourcetype(); + switch (cmfType) + { + case 0: + { + std::string tp_c = jsonPath; + const char* cmfPath = cmftDic.path().c_str(); + const char* cmf_tp = tp_c.append(cmfPath).c_str(); + std::string stringValue = options.has_stringvalue() ? options.stringvalue() : "12345678"; + int itemWidth = options.has_itemwidth() ? options.itemwidth() : 24; + int itemHeight = options.has_itemheight() ? options.itemheight() : 32; + labelAtlas->setProperty(stringValue, + cmf_tp, + itemWidth, + itemHeight, + options.startcharmap().c_str()); + break; + } + case 1: + CCLOG("Wrong res type of LabelAtlas!"); + break; + default: + break; + } + + + // other commonly protperties + WidgetReader::setColorPropsFromProtocolBuffers(widget, nodeTree); + } + + void TextAtlasReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + WidgetReader::setPropsFromXML(widget, objectData); + + TextAtlas* labelAtlas = static_cast(widget); + + std::string xmlPath = GUIReader::getInstance()->getFilePath(); + + std::string stringValue = "", startChar = ""; + int itemWidth = 0, itemHeight = 0; + int resourceType = 0; + std::string path = "", plistFile = ""; + + int opacity = 255; + + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "LabelText") + { + stringValue = value; + } + else if (name == "CharWidth") + { + itemWidth = atoi(value.c_str()); + } + else if (name == "CharHeight") + { + itemHeight = atoi(value.c_str()); + } + else if (name == "StartChar") + { + startChar = value; + } + else if (name == "Alpha") + { + opacity = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + + // child elements + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "LabelAtlasFileImage_CNB") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + } + + child = child->NextSiblingElement(); + } + + labelAtlas->setProperty(stringValue, xmlPath + path, itemWidth, itemHeight, startChar); + + labelAtlas->setOpacity(opacity); + } + } diff --git a/cocos/editor-support/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.h b/cocos/editor-support/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.h index b104fb8af1..e581aea47e 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/TextAtlasReader/TextAtlasReader.h @@ -42,6 +42,8 @@ namespace cocostudio virtual void setPropsFromJsonDictionary(cocos2d::ui::Widget* widget, const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode) ; + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); }; } diff --git a/cocos/editor-support/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp index 22d73c8eff..81c5a2a4f8 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.cpp @@ -3,6 +3,8 @@ #include "TextBMFontReader.h" #include "ui/UITextBMFont.h" #include "cocostudio/CocoLoader.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" USING_NS_CC; using namespace ui; @@ -104,4 +106,128 @@ namespace cocostudio WidgetReader::setColorPropsFromJsonDictionary(widget, options); } + + void TextBMFontReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); + + std::string jsonPath = GUIReader::getInstance()->getFilePath(); + + TextBMFont* labelBMFont = static_cast(widget); + const protocolbuffers::TextBMFontOptions& options = nodeTree.textbmfontoptions(); + + + const protocolbuffers::ResourceData& cmftDic = options.filenamedata(); + int cmfType = cmftDic.resourcetype(); + switch (cmfType) + { + case 0: + { + std::string tp_c = jsonPath; + const char* cmfPath = cmftDic.path().c_str(); + const char* cmf_tp = tp_c.append(cmfPath).c_str(); + labelBMFont->setFntFile(cmf_tp); + break; + } + case 1: + CCLOG("Wrong res type of LabelAtlas!"); + break; + default: + break; + } + + const char* text = (options.has_text()) ? options.text().c_str() : "Text Label"; + labelBMFont->setString(text); + + + // other commonly protperties + WidgetReader::setColorPropsFromProtocolBuffers(widget, nodeTree); + } + + void TextBMFontReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + WidgetReader::setPropsFromXML(widget, objectData); + + TextBMFont* labelBMFont = static_cast(widget); + + std::string xmlPath = GUIReader::getInstance()->getFilePath(); + + std::string text = ""; + + int opacity = 255; + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "LabelText") + { + text = value; + } + else if (name == "Alpha") + { + opacity = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + + + // child elements + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "LabelBMFontFile_CNB") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + labelBMFont->setFntFile(xmlPath + path); + break; + } + + default: + break; + } + } + + child = child->NextSiblingElement(); + } + + labelBMFont->setString(text); + + labelBMFont->setOpacity(opacity); + } + } diff --git a/cocos/editor-support/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.h b/cocos/editor-support/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.h index a08f39876d..f8e6d1b3cf 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/TextBMFontReader/TextBMFontReader.h @@ -43,6 +43,8 @@ namespace cocostudio virtual void setPropsFromJsonDictionary(cocos2d::ui::Widget* widget, const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode) ; + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); }; } diff --git a/cocos/editor-support/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp index e1ae0b29c0..85115bf89d 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.cpp @@ -3,6 +3,8 @@ #include "TextFieldReader.h" #include "ui/UITextField.h" #include "cocostudio/CocoLoader.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" USING_NS_CC; using namespace ui; @@ -134,4 +136,217 @@ namespace cocostudio WidgetReader::setColorPropsFromJsonDictionary(widget, options); } + + void TextFieldReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + TextField* textField = static_cast(widget); + const protocolbuffers::TextFieldOptions& options = nodeTree.textfieldoptions(); + + std::string protocolBuffersPath = GUIReader::getInstance()->getFilePath(); + + bool IsCustomSize = options.iscustomsize(); + widget->ignoreContentAdaptWithSize(!IsCustomSize); + + if (IsCustomSize) + { + const protocolbuffers::WidgetOptions& widgetOptions = nodeTree.widgetoptions(); + textField->setContentSize(Size(widgetOptions.width(), widgetOptions.height())); + } + + WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); + WidgetReader::setAnchorPointForWidget(widget, nodeTree); + + textField->setUnifySizeEnabled(false); + + bool ph = options.has_placeholder(); + if (ph) + { + std::string placeholder = options.has_placeholder() ? options.placeholder() : "inputs words here"; + textField->setPlaceHolder(placeholder); + } + std::string text = options.has_text() ? options.text() : "Text Field"; + textField->setString(text); + + int fontSize = options.has_fontsize() ? options.fontsize() : 20; + textField->setFontSize(fontSize); + + + std::string fontName = options.has_fontname() ? options.fontname() : "微软雅黑"; + textField->setFontName(fontName); + + + bool maxLengthEnable = options.maxlengthenable(); + textField->setMaxLengthEnabled(maxLengthEnable); + + if (maxLengthEnable) + { + int maxLength = options.has_maxlength() ? options.maxlength() : 10; + textField->setMaxLength(maxLength); + } + bool passwordEnable = options.passwordenable(); + textField->setPasswordEnabled(passwordEnable); + if (passwordEnable) + { + std::string passwordStyleText = options.has_passwordstyletext() ? options.passwordstyletext() : "*"; + textField->setPasswordStyleText(passwordStyleText.c_str()); + } + + if (options.has_fontresource()) + { + const protocolbuffers::ResourceData& resourceData = options.fontresource(); + textField->setFontName(protocolBuffersPath + resourceData.path()); + } + + // other commonly protperties + WidgetReader::setColorPropsFromProtocolBuffers(widget, nodeTree); + + } + + void TextFieldReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + WidgetReader::setPropsFromXML(widget, objectData); + + TextField* textField = static_cast(widget); + + std::string xmlPath = GUIReader::getInstance()->getFilePath(); + + bool isCustomSize = false; + float width = 0.0f, height = 0.0f; + + int opacity = 255; + + textField->setUnifySizeEnabled(false); + + textField->setFontName("微软雅黑"); + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "PlaceHolderText") + { + textField->setPlaceHolder(value); + } + else if (name == "LabelText") + { + textField->setString(value); + } + else if (name == "FontSize") + { + textField->setFontSize(atoi(value.c_str())); + } + else if (name == "FontName") + { + textField->setFontName(value); + } + else if (name == "MaxLengthEnable") + { + textField->setMaxLengthEnabled((value == "True") ? true : false); + } + else if (name == "MaxLengthText") + { + textField->setMaxLength(atoi(value.c_str())); + } + else if (name == "PasswordEnable") + { + textField->setPasswordEnabled((value == "True") ? true : false); + } + else if (name == "PasswordStyleText") + { + textField->setPasswordStyleText(value.c_str()); + } + else if (name == "IsCustomSize") + { + isCustomSize = ((value == "True") ? true : false); + } + else if (name == "Alpha") + { + opacity = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + + // child elements + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "Size") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + width = atof(value.c_str()); + } + else if (name == "Y") + { + height = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + } + else if (name == "FontResource") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + textField->setFontName(xmlPath + path); + break; + } + + default: + break; + } + } + + child = child->NextSiblingElement(); + } + + if (isCustomSize) + { + textField->ignoreContentAdaptWithSize(!isCustomSize); + textField->setContentSize(Size(width, height)); + } + + textField->setOpacity(opacity); + } + } diff --git a/cocos/editor-support/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.h b/cocos/editor-support/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.h index d8b96f5a8e..f2090ee92c 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/TextFieldReader/TextFieldReader.h @@ -43,6 +43,8 @@ namespace cocostudio virtual void setPropsFromJsonDictionary(cocos2d::ui::Widget* widget, const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode) ; + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); }; } diff --git a/cocos/editor-support/cocostudio/WidgetReader/TextReader/TextReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/TextReader/TextReader.cpp index 1e148c270e..2e2fa468d0 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/TextReader/TextReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/TextReader/TextReader.cpp @@ -3,6 +3,8 @@ #include "TextReader.h" #include "ui/UIText.h" #include "cocostudio/CocoLoader.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" USING_NS_CC; using namespace ui; @@ -137,4 +139,239 @@ namespace cocostudio WidgetReader::setColorPropsFromJsonDictionary(widget, options); } + + void TextReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + Text* label = static_cast(widget); + const protocolbuffers::TextOptions& options = nodeTree.textoptions(); + + bool IsCustomSize = options.iscustomsize(); + label->ignoreContentAdaptWithSize(!IsCustomSize); + + WidgetReader::setPropsFromProtocolBuffers(widget, nodeTree); + + label->setUnifySizeEnabled(false); + + std::string protocolBuffersPath = GUIReader::getInstance()->getFilePath(); + + bool touchScaleChangeAble = options.touchscaleenable(); + label->setTouchScaleChangeEnabled(touchScaleChangeAble); + const char* text = options.has_text() ? options.text().c_str() : "Text Label"; + label->setString(text); + + int fontSize = options.has_fontsize() ? options.fontsize() : 20; + label->setFontSize(fontSize); + + std::string fontName = options.has_fontname() ? options.fontname() : "微软雅黑"; + + std::string fontFilePath = protocolBuffersPath.append(fontName); + if (FileUtils::getInstance()->isFileExist(fontFilePath)) + { + label->setFontName(fontFilePath); + } + else{ + label->setFontName(fontName); + } + + bool aw = options.has_areawidth(); + bool ah = options.has_areaheight(); + if (aw && ah) + { + Size size = Size(options.areawidth(), options.areaheight()); + label->setTextAreaSize(size); + } + bool ha = options.has_halignment(); + if (ha) + { + label->setTextHorizontalAlignment((TextHAlignment)options.halignment()); + } + bool va = options.has_valignment(); + if (va) + { + label->setTextVerticalAlignment((TextVAlignment)options.valignment()); + } + + if (options.has_fontresource()) + { + const protocolbuffers::ResourceData& resourceData = options.fontresource(); + label->setFontName(protocolBuffersPath + resourceData.path()); + } + + + + // other commonly protperties + WidgetReader::setColorPropsFromProtocolBuffers(widget, nodeTree); + } + + void TextReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + WidgetReader::setPropsFromXML(widget, objectData); + + Text* label = static_cast(widget); + + std::string xmlPath = GUIReader::getInstance()->getFilePath(); + + float areaWidth = 0.0f, areaHeight = 0.0f; + int halignment = 0, valignment = 0; + + int opacity = 255; + + label->setUnifySizeEnabled(false); + + label->setFontName("微软雅黑"); + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "TouchScaleChangeAble") + { + label->setTouchScaleChangeEnabled((value == "True") ? true : false); + } + else if (name == "LabelText") + { + label->setString(value); + } + else if (name == "FontSize") + { + label->setFontSize(atoi(value.c_str())); + } + else if (name == "FontName") + { + label->setFontName(value); + } + else if (name == "AreaWidth") + { + areaWidth = atoi(value.c_str()); + } + else if (name == "AreaHeight") + { + areaHeight = atoi(value.c_str()); + } + else if (name == "HorizontalAlignmentType") + { + if (value == "HT_Left") + { + halignment = 0; + } + else if (value == "HT_Center") + { + halignment = 1; + } + else if (value == "HT_Right") + { + halignment = 2; + } + } + else if (name == "VerticalAlignmentType") + { + if (value == "VT_Top") + { + valignment = 0; + } + else if (value == "VT_Center") + { + valignment = 1; + } + else if (value == "VT_Bottom") + { + valignment = 2; + } + } + else if (name == "Alpha") + { + opacity = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + + // child elements + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + + if (name == "Size") + { + attribute = child->FirstAttribute(); + float width = 0.0f, height = 0.0f; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + width = atof(value.c_str()); + } + else if (name == "Y") + { + height = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + + label->ignoreContentAdaptWithSize(false); + label->setContentSize(Size(width, height)); + } + else if (name == "FontResource") + { + attribute = child->FirstAttribute(); + int resourceType = 0; + std::string path = "", plistFile = ""; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Path") + { + path = value; + } + else if (name == "Type") + { + resourceType = (value == "Normal" || value == "Default" || value == "MarkedSubImage") ? 0 : 1; + } + else if (name == "Plist") + { + plistFile = value; + } + + attribute = attribute->Next(); + } + + switch (resourceType) + { + case 0: + { + label->setFontName(xmlPath + path); + break; + } + + default: + break; + } + } + + child = child->NextSiblingElement(); + } + + if (areaWidth != 0 || areaHeight != 0) + { + label->setTextAreaSize(Size(areaWidth, areaHeight)); + } + + label->setTextHorizontalAlignment((TextHAlignment)halignment); + label->setTextVerticalAlignment((TextVAlignment)valignment); + + label->setOpacity(opacity); + } + } diff --git a/cocos/editor-support/cocostudio/WidgetReader/TextReader/TextReader.h b/cocos/editor-support/cocostudio/WidgetReader/TextReader/TextReader.h index 0f7337360a..2dae454727 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/TextReader/TextReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/TextReader/TextReader.h @@ -43,6 +43,8 @@ namespace cocostudio virtual void setPropsFromJsonDictionary(cocos2d::ui::Widget* widget, const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode); + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); }; } diff --git a/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.cpp b/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.cpp index 1e2afd361e..00b8dce09f 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.cpp +++ b/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.cpp @@ -3,6 +3,9 @@ #include "WidgetReader.h" #include "cocostudio/CocoLoader.h" #include "ui/UIButton.h" +#include "cocostudio/CSParseBinary.pb.h" +#include "tinyxml2/tinyxml2.h" +#include "../ActionTimeline/CCActionTimeline.h" USING_NS_CC; using namespace ui; @@ -354,6 +357,407 @@ namespace cocostudio this->endSetBasicProperties(widget); } + void WidgetReader::setPropsFromProtocolBuffers(ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + + const protocolbuffers::WidgetOptions& options = nodeTree.widgetoptions(); + + widget->setCascadeColorEnabled(true); + widget->setCascadeOpacityEnabled(true); + widget->setAnchorPoint(Vec2::ZERO); + + widget->setUnifySizeEnabled(true); + + bool ignoreSizeExsit = options.has_ignoresize(); + if (ignoreSizeExsit) + { + widget->ignoreContentAdaptWithSize(options.ignoresize()); + } + + widget->setSizeType((Widget::SizeType)options.sizetype()); + widget->setPositionType((Widget::PositionType)options.positiontype()); + + widget->setSizePercent(Vec2(options.sizepercentx(), options.sizepercenty())); + widget->setPositionPercent(Vec2(options.positionpercentx(), options.positionpercenty())); + + float w = options.width(); + float h = options.height(); + widget->setContentSize(Size(w, h)); + + widget->setTag(options.tag()); + widget->setActionTag(options.actiontag()); + widget->setTouchEnabled(options.touchable()); + const char* name = options.name().c_str(); + const char* widgetName = name ? name : "default"; + widget->setName(widgetName); + + float x = options.x(); + float y = options.y(); + widget->setPosition(Vec2(x, y)); + + if(options.has_alpha()) + { + widget->setOpacity(options.alpha()); + } + + widget->setScaleX(options.has_scalex() ? options.scalex() : 1.0); + + + widget->setScaleY(options.has_scaley() ? options.scaley() : 1.0); + + widget->setRotationSkewX(options.has_rotationskewx() ? options.rotationskewx() : 0.0); + + widget->setRotationSkewY(options.has_rotationskewy() ? options.rotationskewy() : 0.0); + + bool vb = options.has_visible(); + if (vb) + { + widget->setVisible(options.visible()); + } + + int z = options.zorder(); + widget->setLocalZOrder(z); + + + bool layout = options.has_layoutparameter(); + if (layout) + { + + const protocolbuffers::LayoutParameter& layoutParameterDic = options.layoutparameter();; + int paramType = layoutParameterDic.type(); + + LayoutParameter* parameter = nullptr; + switch (paramType) + { + case 0: + break; + case 1: + { + parameter = LinearLayoutParameter::create(); + int gravity = layoutParameterDic.gravity(); + ((LinearLayoutParameter*)parameter)->setGravity((cocos2d::ui::LinearLayoutParameter::LinearGravity)gravity); + break; + } + case 2: + { + parameter = RelativeLayoutParameter::create(); + RelativeLayoutParameter* rParameter = (RelativeLayoutParameter*)parameter; + const char* relativeName = layoutParameterDic.relativename().c_str(); + rParameter->setRelativeName(relativeName); + const char* relativeToName = layoutParameterDic.relativetoname().c_str(); + rParameter->setRelativeToWidgetName(relativeToName); + int align = layoutParameterDic.align(); + rParameter->setAlign((cocos2d::ui::RelativeLayoutParameter::RelativeAlign)align); + break; + } + default: + break; + } + if (parameter) + { + float mgl = layoutParameterDic.marginleft(); + float mgt = layoutParameterDic.margintop(); + float mgr = layoutParameterDic.marginright(); + float mgb = layoutParameterDic.margindown(); + parameter->setMargin(Margin(mgl, mgt, mgr, mgb)); + widget->setLayoutParameter(parameter); + } + } + + } + + void WidgetReader::setColorPropsFromProtocolBuffers(cocos2d::ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + const protocolbuffers::WidgetOptions& options = nodeTree.widgetoptions(); + + + bool isColorRExists = options.has_colorr(); + bool isColorGExists = options.has_colorg(); + bool isColorBExists = options.has_colorb(); + + int colorR = options.colorr(); + int colorG = options.colorg(); + int colorB = options.colorb(); + + if (isColorRExists && isColorGExists && isColorBExists) + { + widget->setColor(Color3B(colorR, colorG, colorB)); + } + + setAnchorPointForWidget(widget, nodeTree); + + bool flipX = options.flipx(); + bool flipY = options.flipy(); + if (flipX) + { + widget->setFlippedX(flipX); + } + if (flipY) + { + widget->setFlippedY(flipY); + } + } + + void WidgetReader::setPropsFromXML(cocos2d::ui::Widget *widget, const tinyxml2::XMLElement *objectData) + { + widget->setTouchEnabled(false); + + widget->setCascadeColorEnabled(true); + widget->setCascadeOpacityEnabled(true); + + widget->setUnifySizeEnabled(true); + + widget->setScale(0.0f, 0.0f); + + // attributes + const tinyxml2::XMLAttribute* attribute = objectData->FirstAttribute(); + while (attribute) + { + std::string name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "Name") + { + const char* widgetName = value.c_str() ? value.c_str() :"default"; + widget->setName(widgetName); + } + else if (name == "ActionTag") + { + int actionTag = atoi(value.c_str()); + widget->setUserObject(timeline::ActionTimelineData::create(actionTag)); + } + else if (name == "RotationSkewX") + { + widget->setRotationSkewX(atof(value.c_str())); + } + else if (name == "RotationSkewY") + { + widget->setRotationSkewY(atof(value.c_str())); + } + else if (name == "ZOrder") + { + widget->setLocalZOrder(atoi(value.c_str())); + } + else if (name == "VisibleForFrame") + { + widget->setVisible((value == "True") ? true : false); + } + else if (name == "Alpha") + { + widget->setOpacity(atoi(value.c_str())); + } + else if (name == "Tag") + { + widget->setTag(atoi(value.c_str())); + } + else if (name == "FlipX") + { + widget->setFlippedX((value == "True") ? true : false); + } + else if (name == "FlipY") + { + widget->setFlippedY((value == "True") ? true : false); + } + else if (name == "TouchEnable") + { + widget->setTouchEnabled((value == "True") ? true : false); + } + else if (name == "ControlSizeType") + { + widget->ignoreContentAdaptWithSize((value == "Auto") ? true : false); + } + + attribute = attribute->Next(); + } + + const tinyxml2::XMLElement* child = objectData->FirstChildElement(); + while (child) + { + std::string name = child->Name(); + if (name == "Children") + { + break; + } + else if (name == "Position") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + widget->setPositionX(atof(value.c_str())); + } + else if (name == "Y") + { + widget->setPositionY(atof(value.c_str())); + } + + attribute = attribute->Next(); + } + } + else if (name == "Scale") + { + attribute = child->FirstAttribute(); + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ScaleX") + { + widget->setScaleX(atof(value.c_str())); + } + else if (name == "ScaleY") + { + widget->setScaleY(atof(value.c_str())); + } + + attribute = attribute->Next(); + } + } + else if (name == "AnchorPoint") + { + attribute = child->FirstAttribute(); + float anchor_x = 0.0f, anchor_y = 0.0f; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "ScaleX") + { + anchor_x = atof(value.c_str()); + } + else if (name == "ScaleY") + { + anchor_y = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + + widget->setAnchorPoint(Vec2(anchor_x, anchor_y)); + } + else if (name == "CColor") + { + attribute = child->FirstAttribute(); + int red = 255, green = 255, blue = 255; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "A") + { + widget->setOpacity(atoi(value.c_str())); + } + else if (name == "R") + { + red = atoi(value.c_str()); + } + else if (name == "G") + { + green = atoi(value.c_str()); + } + else if (name == "B") + { + blue = atoi(value.c_str()); + } + + attribute = attribute->Next(); + } + + widget->setColor(Color3B(red, green, blue)); + } + else if (name == "Size") + { + attribute = child->FirstAttribute(); + float width = 0.0f, height = 0.0f; + + while (attribute) + { + name = attribute->Name(); + std::string value = attribute->Value(); + + if (name == "X") + { + width = atof(value.c_str()); + } + else if (name == "Y") + { + height = atof(value.c_str()); + } + + attribute = attribute->Next(); + } + + widget->setContentSize(Size(width, height)); + } + + child = child->NextSiblingElement(); + } + + } + + void WidgetReader::setAnchorPointForWidget(cocos2d::ui::Widget *widget, const protocolbuffers::NodeTree &nodeTree) + { + const protocolbuffers::WidgetOptions& options = nodeTree.widgetoptions(); + + bool isAnchorPointXExists = options.has_anchorpointx(); + float anchorPointXInFile; + if (isAnchorPointXExists) + { + anchorPointXInFile = options.anchorpointx(); + } + else + { + anchorPointXInFile = widget->getAnchorPoint().x; + } + + bool isAnchorPointYExists = options.has_anchorpointy(); + float anchorPointYInFile; + if (isAnchorPointYExists) + { + anchorPointYInFile = options.anchorpointy(); + } + else + { + anchorPointYInFile = widget->getAnchorPoint().y; + } + + if (isAnchorPointXExists || isAnchorPointYExists) + { + widget->setAnchorPoint(Vec2(anchorPointXInFile, anchorPointYInFile)); + } + } + + std::string WidgetReader::getResourcePath(const std::string &path, cocos2d::ui::Widget::TextureResType texType) + { + std::string filePath = GUIReader::getInstance()->getFilePath(); + const char* imageFileName = path.c_str(); + std::string imageFileName_tp; + if (nullptr != imageFileName && 0 != strcmp("", imageFileName)) + { + if (texType == ui::Widget::TextureResType::LOCAL) { + imageFileName_tp = filePath + imageFileName; + } + else if(texType == ui::Widget::TextureResType::PLIST){ + imageFileName_tp = imageFileName; + } + else{ + CCASSERT(0, "invalid TextureResType!!!"); + } + } + return imageFileName_tp; + } + } diff --git a/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.h b/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.h index 31dc939da2..958908a94e 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.h +++ b/cocos/editor-support/cocostudio/WidgetReader/WidgetReader.h @@ -54,6 +54,12 @@ namespace cocostudio const rapidjson::Value& options); virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode); + + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + virtual void setColorPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, + const protocolbuffers::NodeTree& nodeTree); + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData); + protected: std::string getResourcePath(const rapidjson::Value& dict, const std::string& key, @@ -64,6 +70,11 @@ namespace cocostudio std::string getResourcePath(CocoLoader* cocoLoader, stExpCocoNode* pCocoNode, cocos2d::ui::Widget::TextureResType texType); + + void setAnchorPointForWidget(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree); + + std::string getResourcePath(const std::string& path, + cocos2d::ui::Widget::TextureResType texType); void beginSetBasicProperties(cocos2d::ui::Widget *widget); void endSetBasicProperties(cocos2d::ui::Widget *widget); diff --git a/cocos/editor-support/cocostudio/WidgetReader/WidgetReaderProtocol.h b/cocos/editor-support/cocostudio/WidgetReader/WidgetReaderProtocol.h index c663ae3535..3e0e76dbab 100644 --- a/cocos/editor-support/cocostudio/WidgetReader/WidgetReaderProtocol.h +++ b/cocos/editor-support/cocostudio/WidgetReader/WidgetReaderProtocol.h @@ -29,6 +29,16 @@ #include "cocostudio/DictionaryHelper.h" #include "cocostudio/CocosStudioExport.h" +namespace protocolbuffers +{ + class NodeTree; +} + +namespace tinyxml2 +{ + class XMLElement; +} + namespace cocos2d { namespace ui @@ -48,6 +58,8 @@ namespace cocostudio virtual ~WidgetReaderProtocol() {}; virtual void setPropsFromJsonDictionary(cocos2d::ui::Widget* widget, const rapidjson::Value& options) = 0; virtual void setPropsFromBinary(cocos2d::ui::Widget* widget, CocoLoader* cocoLoader, stExpCocoNode* pCocoNode) = 0; + virtual void setPropsFromProtocolBuffers(cocos2d::ui::Widget* widget, const protocolbuffers::NodeTree& nodeTree) = 0; + virtual void setPropsFromXML(cocos2d::ui::Widget* widget, const tinyxml2::XMLElement* objectData) = 0; }; } diff --git a/cocos/editor-support/cocostudio/proj.wp8/libCocosStudio.vcxproj b/cocos/editor-support/cocostudio/proj.wp8/libCocosStudio.vcxproj deleted file mode 100644 index 59d5f78ee6..0000000000 --- a/cocos/editor-support/cocostudio/proj.wp8/libCocosStudio.vcxproj +++ /dev/null @@ -1,297 +0,0 @@ - - - - - Debug - Win32 - - - Debug - ARM - - - Release - Win32 - - - Release - ARM - - - - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E} - libCocosStudio - en-US - 11.0 - - - - StaticLibrary - true - v110_wp80 - - - StaticLibrary - true - v110_wp80 - - - StaticLibrary - false - true - v110_wp80 - - - StaticLibrary - false - true - v110_wp80 - - - - - - - - - - - - - - - - - - - - - - - - false - - - - _LIB;%(PreprocessorDefinitions) - Use - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) - /Zm200 %(AdditionalOptions) - pch.h - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;NDEBUG;%(PreprocessorDefinitions) - Use - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WP8;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - /Zm200 %(AdditionalOptions) - pch.h - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;%(PreprocessorDefinitions) - Use - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) - /Zm200 %(AdditionalOptions) - pch.h - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;NDEBUG;%(PreprocessorDefinitions) - Use - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;$(EngineRoot)external\tinyxml2;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WP8;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - /Zm200 %(AdditionalOptions) - pch.h - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - true - - - true - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - Create - Create - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cocos/editor-support/cocostudio/proj.wp8/libCocosStudio.vcxproj.filters b/cocos/editor-support/cocostudio/proj.wp8/libCocosStudio.vcxproj.filters deleted file mode 100644 index cdbf324158..0000000000 --- a/cocos/editor-support/cocostudio/proj.wp8/libCocosStudio.vcxproj.filters +++ /dev/null @@ -1,458 +0,0 @@ - - - - - {d793b86c-0905-4c9b-b6bc-161e351c9eb2} - - - {855f2366-3429-4f77-a080-a41a39c99270} - - - {1a8c6b14-fb28-4485-8417-9b6838fbc4ef} - - - {42f1ce3f-46ab-4a16-a96e-9eb076c873f7} - - - {f8271f80-1663-4425-91c8-7365ec3af017} - - - {48f28446-ffe4-4aa1-a34c-8968c3367ae6} - - - {ad9b4fd1-dc17-4704-9c60-7709eb916f13} - - - {55c682b3-7a48-4fab-ad5a-eb979f3c305e} - - - {c6464479-e0ab-4afc-96fc-1ffc73e40232} - - - {023e3440-1259-4981-ba54-24390d1df447} - - - {f1f20817-9232-4967-a4dd-77550e84e39b} - - - {5149f922-cf29-4a4b-b604-f15c6e8856b0} - - - {59eee6d9-bbfd-4193-be1d-6c18fc38f896} - - - {e30e7bb0-8b73-431a-8461-2c388dfc68cc} - - - {96dd2db1-898a-4598-8001-72601e5665c3} - - - {04e763fc-669f-4440-b3da-2714bb653c75} - - - {053ab44f-ac1f-43ed-8d18-3642f3f57df1} - - - {f1888260-467c-446c-a866-882d67815bb3} - - - {193f7228-6f8c-40ae-916d-811ebb25fa5e} - - - {2413c186-a78b-484d-899d-0c000ca685d7} - - - {d6e0aa43-c62f-4b05-87b0-6b2a6bd00de4} - - - {15bcf867-facd-4e74-a1fe-375b5126d97c} - - - {1d49f0ff-ed53-4181-ace7-6cd2e77cfc76} - - - {a795a46f-a9d7-44c0-9818-edb59b2f0794} - - - {38d21f2e-d189-47e8-b244-6a07dcc0a692} - - - {315e19a3-2ad5-4ffa-93cd-e5ce9812ab76} - - - {695e45cf-2af5-4bdb-84a2-f0e9f3d77f11} - - - {5f5a98dd-657c-4a9b-8862-c11555ad1293} - - - - - components - - - components - - - components - - - components - - - components - - - json - - - reader - - - reader - - - armature\animation - - - armature\animation - - - armature\animation - - - armature\datas - - - armature\display - - - armature\display - - - armature\display - - - armature\display - - - armature\display - - - armature\utils - - - armature\utils - - - armature\utils - - - armature\utils - - - armature\utils - - - armature\utils - - - armature\physics - - - armature - - - armature - - - action - - - action - - - action - - - action - - - action - - - trigger - - - trigger - - - trigger - - - reader\WidgetReader - - - reader\WidgetReader\ButtonReader - - - reader\WidgetReader\CheckBoxReader - - - reader\WidgetReader\ImageViewReader - - - reader\WidgetReader\LayoutReader - - - reader\WidgetReader\ListViewReader - - - reader\WidgetReader\LoadingBarReader - - - reader\WidgetReader\TextReader - - - reader\WidgetReader\TextFieldReader - - - reader\WidgetReader\TextBMFontReader - - - reader\WidgetReader\TextAtlasReader - - - reader\WidgetReader\SliderReader - - - reader\WidgetReader\ScrollViewReader - - - reader\WidgetReader\PageViewReader - - - - TimelineAction - - - TimelineAction - - - TimelineAction - - - TimelineAction - - - TimelineAction - - - json - - - - - components - - - components - - - components - - - components - - - components - - - json - - - reader - - - reader - - - armature\animation - - - armature\animation - - - armature\animation - - - armature\datas - - - armature\display - - - armature\display - - - armature\display - - - armature\display - - - armature\display - - - armature\utils - - - armature\utils - - - armature\utils - - - armature\utils - - - armature\utils - - - armature\utils - - - armature\physics - - - armature - - - armature - - - json\rapidjson - - - json\rapidjson - - - json\rapidjson - - - json\rapidjson - - - json\rapidjson - - - json\rapidjson - - - json\rapidjson - - - json\rapidjson\internal - - - json\rapidjson\internal - - - json\rapidjson\internal - - - action - - - action - - - action - - - action - - - action - - - trigger - - - trigger - - - trigger - - - components - - - reader\WidgetReader - - - reader\WidgetReader - - - reader\WidgetReader\ButtonReader - - - reader\WidgetReader\CheckBoxReader - - - reader\WidgetReader\ImageViewReader - - - reader\WidgetReader\LayoutReader - - - reader\WidgetReader\ListViewReader - - - reader\WidgetReader\LoadingBarReader - - - reader\WidgetReader\TextReader - - - reader\WidgetReader\TextFieldReader - - - reader\WidgetReader\TextBMFontReader - - - reader\WidgetReader\TextAtlasReader - - - reader\WidgetReader\SliderReader - - - reader\WidgetReader\ScrollViewReader - - - reader\WidgetReader\PageViewReader - - - - TimelineAction - - - TimelineAction - - - TimelineAction - - - TimelineAction - - - TimelineAction - - - TimelineAction - - - json - - - \ No newline at end of file diff --git a/cocos/editor-support/cocostudio/proj.wp8/libCocosStudio.vcxproj.user b/cocos/editor-support/cocostudio/proj.wp8/libCocosStudio.vcxproj.user deleted file mode 100644 index 17f726ed50..0000000000 --- a/cocos/editor-support/cocostudio/proj.wp8/libCocosStudio.vcxproj.user +++ /dev/null @@ -1,6 +0,0 @@ - - - - true - - \ No newline at end of file diff --git a/cocos/editor-support/cocostudio/proj.wp8/pch.h b/cocos/editor-support/cocostudio/proj.wp8/pch.h deleted file mode 100644 index 4c3b8cde28..0000000000 --- a/cocos/editor-support/cocostudio/proj.wp8/pch.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include "cocos2d.h" -#include "cocos-ext.h" -#include "ExtensionMacros.h" diff --git a/cocos/editor-support/spine/Android.mk b/cocos/editor-support/spine/Android.mk index 118f45c52e..cfc8769eb4 100644 --- a/cocos/editor-support/spine/Android.mk +++ b/cocos/editor-support/spine/Android.mk @@ -5,37 +5,40 @@ LOCAL_MODULE := spine_static LOCAL_MODULE_FILENAME := libspine -LOCAL_SRC_FILES := Animation.cpp \ -AnimationState.cpp \ -AnimationStateData.cpp \ -Atlas.cpp \ -AtlasAttachmentLoader.cpp \ -Attachment.cpp \ -AttachmentLoader.cpp \ -Bone.cpp \ -BoneData.cpp \ -CCSkeleton.cpp \ -CCSkeletonAnimation.cpp \ -Json.cpp \ -RegionAttachment.cpp \ -Skeleton.cpp \ -SkeletonData.cpp \ -SkeletonJson.cpp \ -Skin.cpp \ -Slot.cpp \ -SlotData.cpp \ -BoundingBoxAttachment.cpp \ -Event.cpp \ -EventData.cpp \ -SkeletonBounds.cpp \ -extension.cpp \ +LOCAL_SRC_FILES := Animation.c \ +AnimationState.c \ +AnimationStateData.c \ +Atlas.c \ +AtlasAttachmentLoader.c \ +Attachment.c \ +AttachmentLoader.c \ +Bone.c \ +BoneData.c \ +BoundingBoxAttachment.c \ +Event.c \ +EventData.c \ +extension.c \ +IkConstraint.c \ +IkConstraintData.c \ +Json.c \ +MeshAttachment.c \ +PolygonBatch.cpp \ +RegionAttachment.c \ +Skeleton.c \ +SkeletonAnimation.cpp \ +SkeletonBounds.c \ +SkeletonData.c \ +SkeletonJson.c \ +SkeletonRenderer.cpp \ +Skin.c \ +SkinnedMeshAttachment.c \ +Slot.c \ +SlotData.c \ spine-cocos2dx.cpp LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/.. -LOCAL_C_INCLUDES := $(LOCAL_PATH)/../.. \ -$(LOCAL_PATH)/.. \ -$(LOCAL_PATH)/../../platform/android +LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. LOCAL_STATIC_LIBRARIES := cocos2dx_internal_static diff --git a/cocos/editor-support/spine/Animation.c b/cocos/editor-support/spine/Animation.c new file mode 100644 index 0000000000..e4f261eedf --- /dev/null +++ b/cocos/editor-support/spine/Animation.c @@ -0,0 +1,791 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include +#include +#include + +spAnimation* spAnimation_create (const char* name, int timelinesCount) { + spAnimation* self = NEW(spAnimation); + MALLOC_STR(self->name, name); + self->timelinesCount = timelinesCount; + self->timelines = MALLOC(spTimeline*, timelinesCount); + return self; +} + +void spAnimation_dispose (spAnimation* self) { + int i; + for (i = 0; i < self->timelinesCount; ++i) + spTimeline_dispose(self->timelines[i]); + FREE(self->timelines); + FREE(self->name); + FREE(self); +} + +void spAnimation_apply (const spAnimation* self, spSkeleton* skeleton, float lastTime, float time, int loop, spEvent** events, + int* eventsCount) { + int i, n = self->timelinesCount; + + if (loop && self->duration) { + time = FMOD(time, self->duration); + lastTime = FMOD(lastTime, self->duration); + } + + for (i = 0; i < n; ++i) + spTimeline_apply(self->timelines[i], skeleton, lastTime, time, events, eventsCount, 1); +} + +void spAnimation_mix (const spAnimation* self, spSkeleton* skeleton, float lastTime, float time, int loop, spEvent** events, + int* eventsCount, float alpha) { + int i, n = self->timelinesCount; + + if (loop && self->duration) { + time = FMOD(time, self->duration); + lastTime = FMOD(lastTime, self->duration); + } + + for (i = 0; i < n; ++i) + spTimeline_apply(self->timelines[i], skeleton, lastTime, time, events, eventsCount, alpha); +} + +/**/ + +typedef struct _spTimelineVtable { + void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, + int* eventsCount, float alpha); + void (*dispose) (spTimeline* self); +} _spTimelineVtable; + +void _spTimeline_init (spTimeline* self, spTimelineType type, /**/ +void (*dispose) (spTimeline* self), /**/ + void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, + int* eventsCount, float alpha)) { + CONST_CAST(spTimelineType, self->type) = type; + CONST_CAST(_spTimelineVtable*, self->vtable) = NEW(_spTimelineVtable); + VTABLE(spTimeline, self)->dispose = dispose; + VTABLE(spTimeline, self)->apply = apply; +} + +void _spTimeline_deinit (spTimeline* self) { + FREE(self->vtable); +} + +void spTimeline_dispose (spTimeline* self) { + VTABLE(spTimeline, self)->dispose(self); +} + +void spTimeline_apply (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, + int* eventsCount, float alpha) { + VTABLE(spTimeline, self)->apply(self, skeleton, lastTime, time, firedEvents, eventsCount, alpha); +} + +/**/ + +static const float CURVE_LINEAR = 0, CURVE_STEPPED = 1, CURVE_BEZIER = 2; +static const int BEZIER_SEGMENTS = 10, BEZIER_SIZE = 10 * 2 - 1; + +void _spCurveTimeline_init (spCurveTimeline* self, spTimelineType type, int framesCount, /**/ +void (*dispose) (spTimeline* self), /**/ + void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, + int* eventsCount, float alpha)) { + _spTimeline_init(SUPER(self), type, dispose, apply); + self->curves = CALLOC(float, (framesCount - 1) * BEZIER_SIZE); +} + +void _spCurveTimeline_deinit (spCurveTimeline* self) { + _spTimeline_deinit(SUPER(self)); + FREE(self->curves); +} + +void spCurveTimeline_setLinear (spCurveTimeline* self, int frameIndex) { + self->curves[frameIndex * BEZIER_SIZE] = CURVE_LINEAR; +} + +void spCurveTimeline_setStepped (spCurveTimeline* self, int frameIndex) { + self->curves[frameIndex * BEZIER_SIZE] = CURVE_STEPPED; +} + +void spCurveTimeline_setCurve (spCurveTimeline* self, int frameIndex, float cx1, float cy1, float cx2, float cy2) { + float subdiv1 = 1.0f / BEZIER_SEGMENTS, subdiv2 = subdiv1 * subdiv1, subdiv3 = subdiv2 * subdiv1; + float pre1 = 3 * subdiv1, pre2 = 3 * subdiv2, pre4 = 6 * subdiv2, pre5 = 6 * subdiv3; + float tmp1x = -cx1 * 2 + cx2, tmp1y = -cy1 * 2 + cy2, tmp2x = (cx1 - cx2) * 3 + 1, tmp2y = (cy1 - cy2) * 3 + 1; + float dfx = cx1 * pre1 + tmp1x * pre2 + tmp2x * subdiv3, dfy = cy1 * pre1 + tmp1y * pre2 + tmp2y * subdiv3; + float ddfx = tmp1x * pre4 + tmp2x * pre5, ddfy = tmp1y * pre4 + tmp2y * pre5; + float dddfx = tmp2x * pre5, dddfy = tmp2y * pre5; + float x = dfx, y = dfy; + + int i = frameIndex * BEZIER_SIZE, n = i + BEZIER_SIZE - 1; + self->curves[i++] = CURVE_BEZIER; + + for (; i < n; i += 2) { + self->curves[i] = x; + self->curves[i + 1] = y; + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + x += dfx; + y += dfy; + } +} + +float spCurveTimeline_getCurvePercent (const spCurveTimeline* self, int frameIndex, float percent) { + float x, y; + int i = frameIndex * BEZIER_SIZE, start, n; + float type = self->curves[i]; + if (type == CURVE_LINEAR) return percent; + if (type == CURVE_STEPPED) return 0; + i++; + x = 0; + for (start = i, n = i + BEZIER_SIZE - 1; i < n; i += 2) { + x = self->curves[i]; + if (x >= percent) { + float prevX, prevY; + if (i == start) { + prevX = 0; + prevY = 0; + } else { + prevX = self->curves[i - 2]; + prevY = self->curves[i - 1]; + } + return prevY + (self->curves[i + 1] - prevY) * (percent - prevX) / (x - prevX); + } + } + y = self->curves[i - 1]; + return y + (1 - y) * (percent - x) / (1 - x); /* Last point is 1,1. */ +} + +/* @param target After the first and before the last entry. */ +static int binarySearch (float *values, int valuesLength, float target, int step) { + int low = 0, current; + int high = valuesLength / step - 2; + if (high == 0) return step; + current = high >> 1; + while (1) { + if (values[(current + 1) * step] <= target) + low = current + 1; + else + high = current; + if (low == high) return (low + 1) * step; + current = (low + high) >> 1; + } + return 0; +} + +/* @param target After the first and before the last entry. */ +static int binarySearch1 (float *values, int valuesLength, float target) { + int low = 0, current; + int high = valuesLength - 2; + if (high == 0) return 1; + current = high >> 1; + while (1) { + if (values[(current + 1)] <= target) + low = current + 1; + else + high = current; + if (low == high) return low + 1; + current = (low + high) >> 1; + } + return 0; +} + +/*static int linearSearch (float *values, int valuesLength, float target, int step) { + int i, last = valuesLength - step; + for (i = 0; i <= last; i += step) { + if (values[i] <= target) continue; + return i; + } + return -1; + }*/ + +/**/ + +void _spBaseTimeline_dispose (spTimeline* timeline) { + struct spBaseTimeline* self = SUB_CAST(struct spBaseTimeline, timeline); + _spCurveTimeline_deinit(SUPER(self)); + FREE(self->frames); + FREE(self); +} + +/* Many timelines have structure identical to struct spBaseTimeline and extend spCurveTimeline. **/ +struct spBaseTimeline* _spBaseTimeline_create (int framesCount, spTimelineType type, int frameSize, /**/ + void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, + int* eventsCount, float alpha)) { + struct spBaseTimeline* self = NEW(struct spBaseTimeline); + _spCurveTimeline_init(SUPER(self), type, framesCount, _spBaseTimeline_dispose, apply); + + CONST_CAST(int, self->framesCount) = framesCount * frameSize; + CONST_CAST(float*, self->frames) = CALLOC(float, self->framesCount); + + return self; +} + +/**/ + +static const int ROTATE_PREV_FRAME_TIME = -2; +static const int ROTATE_FRAME_VALUE = 1; + +void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, + int* eventsCount, float alpha) { + spBone *bone; + int frameIndex; + float prevFrameValue, frameTime, percent, amount; + + spRotateTimeline* self = SUB_CAST(spRotateTimeline, timeline); + + if (time < self->frames[0]) return; /* Time is before first frame. */ + + bone = skeleton->bones[self->boneIndex]; + + if (time >= self->frames[self->framesCount - 2]) { /* Time is after last frame. */ + float amount = bone->data->rotation + self->frames[self->framesCount - 1] - bone->rotation; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + bone->rotation += amount * alpha; + return; + } + + /* Interpolate between the previous frame and the current frame. */ + frameIndex = binarySearch(self->frames, self->framesCount, time, 2); + prevFrameValue = self->frames[frameIndex - 1]; + frameTime = self->frames[frameIndex]; + percent = 1 - (time - frameTime) / (self->frames[frameIndex + ROTATE_PREV_FRAME_TIME] - frameTime); + percent = spCurveTimeline_getCurvePercent(SUPER(self), (frameIndex >> 1) - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + + amount = self->frames[frameIndex + ROTATE_FRAME_VALUE] - prevFrameValue; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + amount = bone->data->rotation + (prevFrameValue + amount * percent) - bone->rotation; + while (amount > 180) + amount -= 360; + while (amount < -180) + amount += 360; + bone->rotation += amount * alpha; +} + +spRotateTimeline* spRotateTimeline_create (int framesCount) { + return _spBaseTimeline_create(framesCount, SP_TIMELINE_ROTATE, 2, _spRotateTimeline_apply); +} + +void spRotateTimeline_setFrame (spRotateTimeline* self, int frameIndex, float time, float angle) { + frameIndex *= 2; + self->frames[frameIndex] = time; + self->frames[frameIndex + 1] = angle; +} + +/**/ + +static const int TRANSLATE_PREV_FRAME_TIME = -3; +static const int TRANSLATE_FRAME_X = 1; +static const int TRANSLATE_FRAME_Y = 2; + +void _spTranslateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, + spEvent** firedEvents, int* eventsCount, float alpha) { + spBone *bone; + int frameIndex; + float prevFrameX, prevFrameY, frameTime, percent; + + spTranslateTimeline* self = SUB_CAST(spTranslateTimeline, timeline); + + if (time < self->frames[0]) return; /* Time is before first frame. */ + + bone = skeleton->bones[self->boneIndex]; + + if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */ + bone->x += (bone->data->x + self->frames[self->framesCount - 2] - bone->x) * alpha; + bone->y += (bone->data->y + self->frames[self->framesCount - 1] - bone->y) * alpha; + return; + } + + /* Interpolate between the previous frame and the current frame. */ + frameIndex = binarySearch(self->frames, self->framesCount, time, 3); + prevFrameX = self->frames[frameIndex - 2]; + prevFrameY = self->frames[frameIndex - 1]; + frameTime = self->frames[frameIndex]; + percent = 1 - (time - frameTime) / (self->frames[frameIndex + TRANSLATE_PREV_FRAME_TIME] - frameTime); + percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + + bone->x += (bone->data->x + prevFrameX + (self->frames[frameIndex + TRANSLATE_FRAME_X] - prevFrameX) * percent - bone->x) + * alpha; + bone->y += (bone->data->y + prevFrameY + (self->frames[frameIndex + TRANSLATE_FRAME_Y] - prevFrameY) * percent - bone->y) + * alpha; +} + +spTranslateTimeline* spTranslateTimeline_create (int framesCount) { + return _spBaseTimeline_create(framesCount, SP_TIMELINE_TRANSLATE, 3, _spTranslateTimeline_apply); +} + +void spTranslateTimeline_setFrame (spTranslateTimeline* self, int frameIndex, float time, float x, float y) { + frameIndex *= 3; + self->frames[frameIndex] = time; + self->frames[frameIndex + 1] = x; + self->frames[frameIndex + 2] = y; +} + +/**/ + +void _spScaleTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, + int* eventsCount, float alpha) { + spBone *bone; + int frameIndex; + float prevFrameX, prevFrameY, frameTime, percent; + + spScaleTimeline* self = SUB_CAST(spScaleTimeline, timeline); + + if (time < self->frames[0]) return; /* Time is before first frame. */ + + bone = skeleton->bones[self->boneIndex]; + if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */ + bone->scaleX += (bone->data->scaleX * self->frames[self->framesCount - 2] - bone->scaleX) * alpha; + bone->scaleY += (bone->data->scaleY * self->frames[self->framesCount - 1] - bone->scaleY) * alpha; + return; + } + + /* Interpolate between the previous frame and the current frame. */ + frameIndex = binarySearch(self->frames, self->framesCount, time, 3); + prevFrameX = self->frames[frameIndex - 2]; + prevFrameY = self->frames[frameIndex - 1]; + frameTime = self->frames[frameIndex]; + percent = 1 - (time - frameTime) / (self->frames[frameIndex + TRANSLATE_PREV_FRAME_TIME] - frameTime); + percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + + bone->scaleX += (bone->data->scaleX * (prevFrameX + (self->frames[frameIndex + TRANSLATE_FRAME_X] - prevFrameX) * percent) + - bone->scaleX) * alpha; + bone->scaleY += (bone->data->scaleY * (prevFrameY + (self->frames[frameIndex + TRANSLATE_FRAME_Y] - prevFrameY) * percent) + - bone->scaleY) * alpha; +} + +spScaleTimeline* spScaleTimeline_create (int framesCount) { + return _spBaseTimeline_create(framesCount, SP_TIMELINE_SCALE, 3, _spScaleTimeline_apply); +} + +void spScaleTimeline_setFrame (spScaleTimeline* self, int frameIndex, float time, float x, float y) { + spTranslateTimeline_setFrame(self, frameIndex, time, x, y); +} + +/**/ + +static const int COLOR_PREV_FRAME_TIME = -5; +static const int COLOR_FRAME_R = 1; +static const int COLOR_FRAME_G = 2; +static const int COLOR_FRAME_B = 3; +static const int COLOR_FRAME_A = 4; + +void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, + int* eventsCount, float alpha) { + spSlot *slot; + int frameIndex; + float prevFrameR, prevFrameG, prevFrameB, prevFrameA, percent, frameTime; + float r, g, b, a; + spColorTimeline* self = (spColorTimeline*)timeline; + + if (time < self->frames[0]) return; /* Time is before first frame. */ + + if (time >= self->frames[self->framesCount - 5]) { + /* Time is after last frame. */ + int i = self->framesCount - 1; + r = self->frames[i - 3]; + g = self->frames[i - 2]; + b = self->frames[i - 1]; + a = self->frames[i]; + } else { + /* Interpolate between the previous frame and the current frame. */ + frameIndex = binarySearch(self->frames, self->framesCount, time, 5); + prevFrameR = self->frames[frameIndex - 4]; + prevFrameG = self->frames[frameIndex - 3]; + prevFrameB = self->frames[frameIndex - 2]; + prevFrameA = self->frames[frameIndex - 1]; + frameTime = self->frames[frameIndex]; + percent = 1 - (time - frameTime) / (self->frames[frameIndex + COLOR_PREV_FRAME_TIME] - frameTime); + percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 5 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + + r = prevFrameR + (self->frames[frameIndex + COLOR_FRAME_R] - prevFrameR) * percent; + g = prevFrameG + (self->frames[frameIndex + COLOR_FRAME_G] - prevFrameG) * percent; + b = prevFrameB + (self->frames[frameIndex + COLOR_FRAME_B] - prevFrameB) * percent; + a = prevFrameA + (self->frames[frameIndex + COLOR_FRAME_A] - prevFrameA) * percent; + } + slot = skeleton->slots[self->slotIndex]; + if (alpha < 1) { + slot->r += (r - slot->r) * alpha; + slot->g += (g - slot->g) * alpha; + slot->b += (b - slot->b) * alpha; + slot->a += (a - slot->a) * alpha; + } else { + slot->r = r; + slot->g = g; + slot->b = b; + slot->a = a; + } +} + +spColorTimeline* spColorTimeline_create (int framesCount) { + return (spColorTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_COLOR, 5, _spColorTimeline_apply); +} + +void spColorTimeline_setFrame (spColorTimeline* self, int frameIndex, float time, float r, float g, float b, float a) { + frameIndex *= 5; + self->frames[frameIndex] = time; + self->frames[frameIndex + 1] = r; + self->frames[frameIndex + 2] = g; + self->frames[frameIndex + 3] = b; + self->frames[frameIndex + 4] = a; +} + +/**/ + +void _spAttachmentTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, + spEvent** firedEvents, int* eventsCount, float alpha) { + int frameIndex; + const char* attachmentName; + spAttachmentTimeline* self = (spAttachmentTimeline*)timeline; + + if (time < self->frames[0]) { + if (lastTime > time) _spAttachmentTimeline_apply(timeline, skeleton, lastTime, (float)INT_MAX, 0, 0, 0); + return; + } else if (lastTime > time) /**/ + lastTime = -1; + + frameIndex = time >= self->frames[self->framesCount - 1] ? + self->framesCount - 1 : binarySearch1(self->frames, self->framesCount, time) - 1; + if (self->frames[frameIndex] < lastTime) return; + + attachmentName = self->attachmentNames[frameIndex]; + spSlot_setAttachment(skeleton->slots[self->slotIndex], + attachmentName ? spSkeleton_getAttachmentForSlotIndex(skeleton, self->slotIndex, attachmentName) : 0); +} + +void _spAttachmentTimeline_dispose (spTimeline* timeline) { + spAttachmentTimeline* self = SUB_CAST(spAttachmentTimeline, timeline); + int i; + + _spTimeline_deinit(timeline); + + for (i = 0; i < self->framesCount; ++i) + FREE(self->attachmentNames[i]); + FREE(self->attachmentNames); + FREE(self->frames); + FREE(self); +} + +spAttachmentTimeline* spAttachmentTimeline_create (int framesCount) { + spAttachmentTimeline* self = NEW(spAttachmentTimeline); + _spTimeline_init(SUPER(self), SP_TIMELINE_ATTACHMENT, _spAttachmentTimeline_dispose, _spAttachmentTimeline_apply); + + CONST_CAST(int, self->framesCount) = framesCount; + CONST_CAST(float*, self->frames) = CALLOC(float, framesCount); + CONST_CAST(char**, self->attachmentNames) = CALLOC(char*, framesCount); + + return self; +} + +void spAttachmentTimeline_setFrame (spAttachmentTimeline* self, int frameIndex, float time, const char* attachmentName) { + self->frames[frameIndex] = time; + + FREE(self->attachmentNames[frameIndex]); + if (attachmentName) + MALLOC_STR(self->attachmentNames[frameIndex], attachmentName); + else + self->attachmentNames[frameIndex] = 0; +} + +/**/ + +/** Fires events for frames > lastTime and <= time. */ +void _spEventTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, + int* eventsCount, float alpha) { + spEventTimeline* self = (spEventTimeline*)timeline; + int frameIndex; + if (!firedEvents) return; + + if (lastTime > time) { /* Fire events after last time for looped animations. */ + _spEventTimeline_apply(timeline, skeleton, lastTime, (float)INT_MAX, firedEvents, eventsCount, alpha); + lastTime = -1; + } else if (lastTime >= self->frames[self->framesCount - 1]) /* Last time is after last frame. */ + return; + if (time < self->frames[0]) return; /* Time is before first frame. */ + + if (lastTime < self->frames[0]) + frameIndex = 0; + else { + float frame; + frameIndex = binarySearch1(self->frames, self->framesCount, lastTime); + frame = self->frames[frameIndex]; + while (frameIndex > 0) { /* Fire multiple events with the same frame. */ + if (self->frames[frameIndex - 1] != frame) break; + frameIndex--; + } + } + for (; frameIndex < self->framesCount && time >= self->frames[frameIndex]; ++frameIndex) { + firedEvents[*eventsCount] = self->events[frameIndex]; + (*eventsCount)++; + } +} + +void _spEventTimeline_dispose (spTimeline* timeline) { + spEventTimeline* self = SUB_CAST(spEventTimeline, timeline); + int i; + + _spTimeline_deinit(timeline); + + for (i = 0; i < self->framesCount; ++i) + spEvent_dispose(self->events[i]); + FREE(self->events); + FREE(self->frames); + FREE(self); +} + +spEventTimeline* spEventTimeline_create (int framesCount) { + spEventTimeline* self = NEW(spEventTimeline); + _spTimeline_init(SUPER(self), SP_TIMELINE_EVENT, _spEventTimeline_dispose, _spEventTimeline_apply); + + CONST_CAST(int, self->framesCount) = framesCount; + CONST_CAST(float*, self->frames) = CALLOC(float, framesCount); + CONST_CAST(spEvent**, self->events) = CALLOC(spEvent*, framesCount); + + return self; +} + +void spEventTimeline_setFrame (spEventTimeline* self, int frameIndex, float time, spEvent* event) { + self->frames[frameIndex] = time; + + FREE(self->events[frameIndex]); + self->events[frameIndex] = event; +} + +/**/ + +void _spDrawOrderTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, + spEvent** firedEvents, int* eventsCount, float alpha) { + int i; + int frameIndex; + const int* drawOrderToSetupIndex; + spDrawOrderTimeline* self = (spDrawOrderTimeline*)timeline; + + if (time < self->frames[0]) return; /* Time is before first frame. */ + + if (time >= self->frames[self->framesCount - 1]) /* Time is after last frame. */ + frameIndex = self->framesCount - 1; + else + frameIndex = binarySearch1(self->frames, self->framesCount, time) - 1; + + drawOrderToSetupIndex = self->drawOrders[frameIndex]; + if (!drawOrderToSetupIndex) + memcpy(skeleton->drawOrder, skeleton->slots, self->slotsCount * sizeof(int)); + else { + for (i = 0; i < self->slotsCount; ++i) + skeleton->drawOrder[i] = skeleton->slots[drawOrderToSetupIndex[i]]; + } +} + +void _spDrawOrderTimeline_dispose (spTimeline* timeline) { + spDrawOrderTimeline* self = SUB_CAST(spDrawOrderTimeline, timeline); + int i; + + _spTimeline_deinit(timeline); + + for (i = 0; i < self->framesCount; ++i) + FREE(self->drawOrders[i]); + FREE(self->drawOrders); + FREE(self->frames); + FREE(self); +} + +spDrawOrderTimeline* spDrawOrderTimeline_create (int framesCount, int slotsCount) { + spDrawOrderTimeline* self = NEW(spDrawOrderTimeline); + _spTimeline_init(SUPER(self), SP_TIMELINE_DRAWORDER, _spDrawOrderTimeline_dispose, _spDrawOrderTimeline_apply); + + CONST_CAST(int, self->framesCount) = framesCount; + CONST_CAST(float*, self->frames) = CALLOC(float, framesCount); + CONST_CAST(int**, self->drawOrders) = CALLOC(int*, framesCount); + CONST_CAST(int, self->slotsCount) = slotsCount; + + return self; +} + +void spDrawOrderTimeline_setFrame (spDrawOrderTimeline* self, int frameIndex, float time, const int* drawOrder) { + self->frames[frameIndex] = time; + + FREE(self->drawOrders[frameIndex]); + if (!drawOrder) + self->drawOrders[frameIndex] = 0; + else { + self->drawOrders[frameIndex] = MALLOC(int, self->slotsCount); + memcpy(CONST_CAST(int*, self->drawOrders[frameIndex]), drawOrder, self->slotsCount * sizeof(int)); + } +} + +/**/ + +void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, + int* eventsCount, float alpha) { + int frameIndex, i; + float percent, frameTime; + const float* prevVertices; + const float* nextVertices; + spFFDTimeline* self = (spFFDTimeline*)timeline; + + spSlot *slot = skeleton->slots[self->slotIndex]; + if (slot->attachment != self->attachment) return; + + if (time < self->frames[0]) { + slot->attachmentVerticesCount = 0; + return; /* Time is before first frame. */ + } + + if (slot->attachmentVerticesCount != self->frameVerticesCount) alpha = 1; // Don't mix from uninitialized slot vertices. + if (slot->attachmentVerticesCount < self->frameVerticesCount) { + if (slot->attachmentVerticesCapacity < self->frameVerticesCount) { + FREE(slot->attachmentVertices); + slot->attachmentVertices = MALLOC(float, self->frameVerticesCount); + slot->attachmentVerticesCapacity = self->frameVerticesCount; + } + } + slot->attachmentVerticesCount = self->frameVerticesCount; + + if (time >= self->frames[self->framesCount - 1]) { + /* Time is after last frame. */ + const float* lastVertices = self->frameVertices[self->framesCount - 1]; + if (alpha < 1) { + for (i = 0; i < self->frameVerticesCount; ++i) + slot->attachmentVertices[i] += (lastVertices[i] - slot->attachmentVertices[i]) * alpha; + } else + memcpy(slot->attachmentVertices, lastVertices, self->frameVerticesCount * sizeof(float)); + return; + } + + /* Interpolate between the previous frame and the current frame. */ + frameIndex = binarySearch1(self->frames, self->framesCount, time); + frameTime = self->frames[frameIndex]; + percent = 1 - (time - frameTime) / (self->frames[frameIndex - 1] - frameTime); + percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + + prevVertices = self->frameVertices[frameIndex - 1]; + nextVertices = self->frameVertices[frameIndex]; + + if (alpha < 1) { + for (i = 0; i < self->frameVerticesCount; ++i) { + float prev = prevVertices[i]; + slot->attachmentVertices[i] += (prev + (nextVertices[i] - prev) * percent - slot->attachmentVertices[i]) * alpha; + } + } else { + for (i = 0; i < self->frameVerticesCount; ++i) { + float prev = prevVertices[i]; + slot->attachmentVertices[i] = prev + (nextVertices[i] - prev) * percent; + } + } +} + +void _spFFDTimeline_dispose (spTimeline* timeline) { + spFFDTimeline* self = SUB_CAST(spFFDTimeline, timeline); + int i; + + _spCurveTimeline_deinit(SUPER(self)); + + for (i = 0; i < self->framesCount; ++i) + FREE(self->frameVertices[i]); + FREE(self->frameVertices); + FREE(self->frames); + FREE(self); +} + +spFFDTimeline* spFFDTimeline_create (int framesCount, int frameVerticesCount) { + spFFDTimeline* self = NEW(spFFDTimeline); + _spCurveTimeline_init(SUPER(self), SP_TIMELINE_FFD, framesCount, _spFFDTimeline_dispose, _spFFDTimeline_apply); + CONST_CAST(int, self->framesCount) = framesCount; + CONST_CAST(float*, self->frames) = CALLOC(float, self->framesCount); + CONST_CAST(float**, self->frameVertices) = CALLOC(float*, framesCount); + CONST_CAST(int, self->frameVerticesCount) = frameVerticesCount; + return self; +} + +void spFFDTimeline_setFrame (spFFDTimeline* self, int frameIndex, float time, float* vertices) { + self->frames[frameIndex] = time; + + FREE(self->frameVertices[frameIndex]); + if (!vertices) + self->frameVertices[frameIndex] = 0; + else { + self->frameVertices[frameIndex] = MALLOC(float, self->frameVerticesCount); + memcpy(CONST_CAST(float*, self->frameVertices[frameIndex]), vertices, self->frameVerticesCount * sizeof(float)); + } +} + + +/**/ + +static const int IKCONSTRAINT_PREV_FRAME_TIME = -3; +static const int IKCONSTRAINT_PREV_FRAME_MIX = -2; +static const int IKCONSTRAINT_PREV_FRAME_BEND_DIRECTION = -1; +static const int IKCONSTRAINT_FRAME_MIX = 1; + +void _spIkConstraintTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, + spEvent** firedEvents, int* eventsCount, float alpha) { + int frameIndex; + float prevFrameMix, frameTime, percent, mix; + spIkConstraint* ikConstraint; + spIkConstraintTimeline* self = (spIkConstraintTimeline*)timeline; + + if (time < self->frames[0]) return; /* Time is before first frame. */ + + ikConstraint = skeleton->ikConstraints[self->ikConstraintIndex]; + + if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */ + ikConstraint->mix += (self->frames[self->framesCount - 2] - ikConstraint->mix) * alpha; + ikConstraint->bendDirection = (int)self->frames[self->framesCount - 1]; + return; + } + + /* Interpolate between the previous frame and the current frame. */ + frameIndex = binarySearch(self->frames, self->framesCount, time, 3); + prevFrameMix = self->frames[frameIndex + IKCONSTRAINT_PREV_FRAME_MIX]; + frameTime = self->frames[frameIndex]; + percent = 1 - (time - frameTime) / (self->frames[frameIndex + IKCONSTRAINT_PREV_FRAME_TIME] - frameTime); + percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + + mix = prevFrameMix + (self->frames[frameIndex + IKCONSTRAINT_FRAME_MIX] - prevFrameMix) * percent; + ikConstraint->mix += (mix - ikConstraint->mix) * alpha; + ikConstraint->bendDirection = (int)self->frames[frameIndex + IKCONSTRAINT_PREV_FRAME_BEND_DIRECTION]; +} + +spIkConstraintTimeline* spIkConstraintTimeline_create (int framesCount) { + return (spIkConstraintTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_IKCONSTRAINT, 3, _spIkConstraintTimeline_apply); +} + +void spIkConstraintTimeline_setFrame (spIkConstraintTimeline* self, int frameIndex, float time, float mix, int bendDirection) { + frameIndex *= 3; + self->frames[frameIndex] = time; + self->frames[frameIndex + 1] = mix; + self->frames[frameIndex + 2] = (float)bendDirection; +} diff --git a/cocos/editor-support/spine/Animation.cpp b/cocos/editor-support/spine/Animation.cpp deleted file mode 100644 index cb8daf14f8..0000000000 --- a/cocos/editor-support/spine/Animation.cpp +++ /dev/null @@ -1,639 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include -#include - -spAnimation* spAnimation_create (const char* name, int timelineCount) { - spAnimation* self = NEW(spAnimation); - MALLOC_STR(self->name, name); - self->timelineCount = timelineCount; - self->timelines = MALLOC(spTimeline*, timelineCount); - return self; -} - -void spAnimation_dispose (spAnimation* self) { - int i; - for (i = 0; i < self->timelineCount; ++i) - spTimeline_dispose(self->timelines[i]); - FREE(self->timelines); - FREE(self->name); - FREE(self); -} - -void spAnimation_apply (const spAnimation* self, spSkeleton* skeleton, float lastTime, float time, int loop, spEvent** events, - int* eventCount) { - int i, n = self->timelineCount; - - if (loop && self->duration) { - time = FMOD(time, self->duration); - lastTime = FMOD(lastTime, self->duration); - } - - for (i = 0; i < n; ++i) - spTimeline_apply(self->timelines[i], skeleton, lastTime, time, events, eventCount, 1); -} - -void spAnimation_mix (const spAnimation* self, spSkeleton* skeleton, float lastTime, float time, int loop, spEvent** events, - int* eventCount, float alpha) { - int i, n = self->timelineCount; - - if (loop && self->duration) { - time = FMOD(time, self->duration); - lastTime = FMOD(lastTime, self->duration); - } - - for (i = 0; i < n; ++i) - spTimeline_apply(self->timelines[i], skeleton, lastTime, time, events, eventCount, alpha); -} - -/**/ - -typedef struct _spTimelineVtable { - void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha); - void (*dispose) (spTimeline* self); -} _spTimelineVtable; - -void _spTimeline_init (spTimeline* self, spTimelineType type, /**/ -void (*dispose) (spTimeline* self), /**/ - void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha)) { - CONST_CAST(spTimelineType, self->type) = type; - CONST_CAST(_spTimelineVtable*, self->vtable) = NEW(_spTimelineVtable); - VTABLE(spTimeline, self)->dispose = dispose; - VTABLE(spTimeline, self)->apply = apply; -} - -void _spTimeline_deinit (spTimeline* self) { - FREE(self->vtable); -} - -void spTimeline_dispose (spTimeline* self) { - VTABLE(spTimeline, self)->dispose(self); -} - -void spTimeline_apply (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha) { - VTABLE(spTimeline, self)->apply(self, skeleton, lastTime, time, firedEvents, eventCount, alpha); -} - -/**/ - -static const float CURVE_LINEAR = 0; -static const float CURVE_STEPPED = -1; -static const int CURVE_SEGMENTS = 10; - -void _spCurveTimeline_init (spCurveTimeline* self, spTimelineType type, int frameCount, /**/ -void (*dispose) (spTimeline* self), /**/ - void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha)) { - _spTimeline_init(SUPER(self), type, dispose, apply); - self->curves = CALLOC(float, (frameCount - 1) * 6); -} - -void _spCurveTimeline_deinit (spCurveTimeline* self) { - _spTimeline_deinit(SUPER(self)); - FREE(self->curves); -} - -void spCurveTimeline_setLinear (spCurveTimeline* self, int frameIndex) { - self->curves[frameIndex * 6] = CURVE_LINEAR; -} - -void spCurveTimeline_setStepped (spCurveTimeline* self, int frameIndex) { - self->curves[frameIndex * 6] = CURVE_STEPPED; -} - -void spCurveTimeline_setCurve (spCurveTimeline* self, int frameIndex, float cx1, float cy1, float cx2, float cy2) { - float subdiv_step = 1.0f / CURVE_SEGMENTS; - float subdiv_step2 = subdiv_step * subdiv_step; - float subdiv_step3 = subdiv_step2 * subdiv_step; - float pre1 = 3 * subdiv_step; - float pre2 = 3 * subdiv_step2; - float pre4 = 6 * subdiv_step2; - float pre5 = 6 * subdiv_step3; - float tmp1x = -cx1 * 2 + cx2; - float tmp1y = -cy1 * 2 + cy2; - float tmp2x = (cx1 - cx2) * 3 + 1; - float tmp2y = (cy1 - cy2) * 3 + 1; - int i = frameIndex * 6; - self->curves[i] = cx1 * pre1 + tmp1x * pre2 + tmp2x * subdiv_step3; - self->curves[i + 1] = cy1 * pre1 + tmp1y * pre2 + tmp2y * subdiv_step3; - self->curves[i + 2] = tmp1x * pre4 + tmp2x * pre5; - self->curves[i + 3] = tmp1y * pre4 + tmp2y * pre5; - self->curves[i + 4] = tmp2x * pre5; - self->curves[i + 5] = tmp2y * pre5; -} - -float spCurveTimeline_getCurvePercent (const spCurveTimeline* self, int frameIndex, float percent) { - float dfy; - float ddfx; - float ddfy; - float dddfx; - float dddfy; - float x, y; - int i; - int curveIndex = frameIndex * 6; - float dfx = self->curves[curveIndex]; - if (dfx == CURVE_LINEAR) return percent; - if (dfx == CURVE_STEPPED) return 0; - dfy = self->curves[curveIndex + 1]; - ddfx = self->curves[curveIndex + 2]; - ddfy = self->curves[curveIndex + 3]; - dddfx = self->curves[curveIndex + 4]; - dddfy = self->curves[curveIndex + 5]; - x = dfx, y = dfy; - i = CURVE_SEGMENTS - 2; - while (1) { - if (x >= percent) { - float lastX = x - dfx; - float lastY = y - dfy; - return lastY + (y - lastY) * (percent - lastX) / (x - lastX); - } - if (i == 0) break; - i--; - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - x += dfx; - y += dfy; - } - return y + (1 - y) * (percent - x) / (1 - x); /* Last point is 1,1. */ -} - -/* @param target After the first and before the last entry. */ -static int binarySearch (float *values, int valuesLength, float target, int step) { - int low = 0, current; - int high = valuesLength / step - 2; - if (high == 0) return step; - current = high >> 1; - while (1) { - if (values[(current + 1) * step] <= target) - low = current + 1; - else - high = current; - if (low == high) return (low + 1) * step; - current = (low + high) >> 1; - } - return 0; -} - -/*static int linearSearch (float *values, int valuesLength, float target, int step) { - int i, last = valuesLength - step; - for (i = 0; i <= last; i += step) { - if (values[i] <= target) continue; - return i; - } - return -1; - }*/ - -/**/ - -void _spBaseTimeline_dispose (spTimeline* timeline) { - struct spBaseTimeline* self = SUB_CAST(struct spBaseTimeline, timeline); - _spCurveTimeline_deinit(SUPER(self)); - FREE(self->frames); - FREE(self); -} - -/* Many timelines have structure identical to struct spBaseTimeline and extend spCurveTimeline. **/ -struct spBaseTimeline* _spBaseTimeline_create (int frameCount, spTimelineType type, int frameSize, /**/ - void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha)) { - struct spBaseTimeline* self = NEW(struct spBaseTimeline); - _spCurveTimeline_init(SUPER(self), type, frameCount, _spBaseTimeline_dispose, apply); - - CONST_CAST(int, self->framesLength) = frameCount * frameSize; - CONST_CAST(float*, self->frames) = CALLOC(float, self->framesLength); - - return self; -} - -/**/ - -static const int ROTATE_LAST_FRAME_TIME = -2; -static const int ROTATE_FRAME_VALUE = 1; - -void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha) { - spBone *bone; - int frameIndex; - float lastFrameValue, frameTime, percent, amount; - - spRotateTimeline* self = SUB_CAST(spRotateTimeline, timeline); - - if (time < self->frames[0]) return; /* Time is before first frame. */ - - bone = skeleton->bones[self->boneIndex]; - - if (time >= self->frames[self->framesLength - 2]) { /* Time is after last frame. */ - amount = bone->data->rotation + self->frames[self->framesLength - 1] - bone->rotation; - while (amount > 180) - amount -= 360; - while (amount < -180) - amount += 360; - bone->rotation += amount * alpha; - return; - } - - /* Interpolate between the last frame and the current frame. */ - frameIndex = binarySearch(self->frames, self->framesLength, time, 2); - lastFrameValue = self->frames[frameIndex - 1]; - frameTime = self->frames[frameIndex]; - percent = 1 - (time - frameTime) / (self->frames[frameIndex + ROTATE_LAST_FRAME_TIME] - frameTime); - percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 2 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); - - amount = self->frames[frameIndex + ROTATE_FRAME_VALUE] - lastFrameValue; - while (amount > 180) - amount -= 360; - while (amount < -180) - amount += 360; - amount = bone->data->rotation + (lastFrameValue + amount * percent) - bone->rotation; - while (amount > 180) - amount -= 360; - while (amount < -180) - amount += 360; - bone->rotation += amount * alpha; -} - -spRotateTimeline* spRotateTimeline_create (int frameCount) { - return _spBaseTimeline_create(frameCount, TIMELINE_ROTATE, 2, _spRotateTimeline_apply); -} - -void spRotateTimeline_setFrame (spRotateTimeline* self, int frameIndex, float time, float angle) { - frameIndex *= 2; - self->frames[frameIndex] = time; - self->frames[frameIndex + 1] = angle; -} - -/**/ - -static const int TRANSLATE_LAST_FRAME_TIME = -3; -static const int TRANSLATE_FRAME_X = 1; -static const int TRANSLATE_FRAME_Y = 2; - -void _spTranslateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, - spEvent** firedEvents, int* eventCount, float alpha) { - spBone *bone; - int frameIndex; - float lastFrameX, lastFrameY, frameTime, percent; - - spTranslateTimeline* self = SUB_CAST(spTranslateTimeline, timeline); - - if (time < self->frames[0]) return; /* Time is before first frame. */ - - bone = skeleton->bones[self->boneIndex]; - - if (time >= self->frames[self->framesLength - 3]) { /* Time is after last frame. */ - bone->x += (bone->data->x + self->frames[self->framesLength - 2] - bone->x) * alpha; - bone->y += (bone->data->y + self->frames[self->framesLength - 1] - bone->y) * alpha; - return; - } - - /* Interpolate between the last frame and the current frame. */ - frameIndex = binarySearch(self->frames, self->framesLength, time, 3); - lastFrameX = self->frames[frameIndex - 2]; - lastFrameY = self->frames[frameIndex - 1]; - frameTime = self->frames[frameIndex]; - percent = 1 - (time - frameTime) / (self->frames[frameIndex + TRANSLATE_LAST_FRAME_TIME] - frameTime); - percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); - - bone->x += (bone->data->x + lastFrameX + (self->frames[frameIndex + TRANSLATE_FRAME_X] - lastFrameX) * percent - bone->x) - * alpha; - bone->y += (bone->data->y + lastFrameY + (self->frames[frameIndex + TRANSLATE_FRAME_Y] - lastFrameY) * percent - bone->y) - * alpha; -} - -spTranslateTimeline* spTranslateTimeline_create (int frameCount) { - return _spBaseTimeline_create(frameCount, TIMELINE_TRANLATE, 3, _spTranslateTimeline_apply); -} - -void spTranslateTimeline_setFrame (spTranslateTimeline* self, int frameIndex, float time, float x, float y) { - frameIndex *= 3; - self->frames[frameIndex] = time; - self->frames[frameIndex + 1] = x; - self->frames[frameIndex + 2] = y; -} - -/**/ - -void _spScaleTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha) { - spBone *bone; - int frameIndex; - float lastFrameX, lastFrameY, frameTime, percent; - - spScaleTimeline* self = SUB_CAST(spScaleTimeline, timeline); - - if (time < self->frames[0]) return; /* Time is before first frame. */ - - bone = skeleton->bones[self->boneIndex]; - if (time >= self->frames[self->framesLength - 3]) { /* Time is after last frame. */ - bone->scaleX += (bone->data->scaleX - 1 + self->frames[self->framesLength - 2] - bone->scaleX) * alpha; - bone->scaleY += (bone->data->scaleY - 1 + self->frames[self->framesLength - 1] - bone->scaleY) * alpha; - return; - } - - /* Interpolate between the last frame and the current frame. */ - frameIndex = binarySearch(self->frames, self->framesLength, time, 3); - lastFrameX = self->frames[frameIndex - 2]; - lastFrameY = self->frames[frameIndex - 1]; - frameTime = self->frames[frameIndex]; - percent = 1 - (time - frameTime) / (self->frames[frameIndex + TRANSLATE_LAST_FRAME_TIME] - frameTime); - percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); - - bone->scaleX += (bone->data->scaleX - 1 + lastFrameX + (self->frames[frameIndex + TRANSLATE_FRAME_X] - lastFrameX) * percent - - bone->scaleX) * alpha; - bone->scaleY += (bone->data->scaleY - 1 + lastFrameY + (self->frames[frameIndex + TRANSLATE_FRAME_Y] - lastFrameY) * percent - - bone->scaleY) * alpha; -} - -spScaleTimeline* spScaleTimeline_create (int frameCount) { - return _spBaseTimeline_create(frameCount, TIMELINE_SCALE, 3, _spScaleTimeline_apply); -} - -void spScaleTimeline_setFrame (spScaleTimeline* self, int frameIndex, float time, float x, float y) { - spTranslateTimeline_setFrame(self, frameIndex, time, x, y); -} - -/**/ - -static const int COLOR_LAST_FRAME_TIME = -5; -static const int COLOR_FRAME_R = 1; -static const int COLOR_FRAME_G = 2; -static const int COLOR_FRAME_B = 3; -static const int COLOR_FRAME_A = 4; - -void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha) { - spSlot *slot; - int frameIndex; - float lastFrameR, lastFrameG, lastFrameB, lastFrameA, percent, frameTime; - float r, g, b, a; - spColorTimeline* self = (spColorTimeline*)timeline; - - if (time < self->frames[0]) return; /* Time is before first frame. */ - - slot = skeleton->slots[self->slotIndex]; - - if (time >= self->frames[self->framesLength - 5]) { /* Time is after last frame. */ - int i = self->framesLength - 1; - slot->r = self->frames[i - 3]; - slot->g = self->frames[i - 2]; - slot->b = self->frames[i - 1]; - slot->a = self->frames[i]; - return; - } - - /* Interpolate between the last frame and the current frame. */ - frameIndex = binarySearch(self->frames, self->framesLength, time, 5); - lastFrameR = self->frames[frameIndex - 4]; - lastFrameG = self->frames[frameIndex - 3]; - lastFrameB = self->frames[frameIndex - 2]; - lastFrameA = self->frames[frameIndex - 1]; - frameTime = self->frames[frameIndex]; - percent = 1 - (time - frameTime) / (self->frames[frameIndex + COLOR_LAST_FRAME_TIME] - frameTime); - percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 5 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); - - r = lastFrameR + (self->frames[frameIndex + COLOR_FRAME_R] - lastFrameR) * percent; - g = lastFrameG + (self->frames[frameIndex + COLOR_FRAME_G] - lastFrameG) * percent; - b = lastFrameB + (self->frames[frameIndex + COLOR_FRAME_B] - lastFrameB) * percent; - a = lastFrameA + (self->frames[frameIndex + COLOR_FRAME_A] - lastFrameA) * percent; - if (alpha < 1) { - slot->r += (r - slot->r) * alpha; - slot->g += (g - slot->g) * alpha; - slot->b += (b - slot->b) * alpha; - slot->a += (a - slot->a) * alpha; - } else { - slot->r = r; - slot->g = g; - slot->b = b; - slot->a = a; - } -} - -spColorTimeline* spColorTimeline_create (int frameCount) { - return (spColorTimeline*)_spBaseTimeline_create(frameCount, TIMELINE_COLOR, 5, _spColorTimeline_apply); -} - -void spColorTimeline_setFrame (spColorTimeline* self, int frameIndex, float time, float r, float g, float b, float a) { - frameIndex *= 5; - self->frames[frameIndex] = time; - self->frames[frameIndex + 1] = r; - self->frames[frameIndex + 2] = g; - self->frames[frameIndex + 3] = b; - self->frames[frameIndex + 4] = a; -} - -/**/ - -void _spAttachmentTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, - spEvent** firedEvents, int* eventCount, float alpha) { - int frameIndex; - const char* attachmentName; - spAttachmentTimeline* self = (spAttachmentTimeline*)timeline; - - if (time < self->frames[0]) return; /* Time is before first frame. */ - - if (time >= self->frames[self->framesLength - 1]) /* Time is after last frame. */ - frameIndex = self->framesLength - 1; - else - frameIndex = binarySearch(self->frames, self->framesLength, time, 1) - 1; - - attachmentName = self->attachmentNames[frameIndex]; - spSlot_setAttachment(skeleton->slots[self->slotIndex], - attachmentName ? spSkeleton_getAttachmentForSlotIndex(skeleton, self->slotIndex, attachmentName) : 0); -} - -void _spAttachmentTimeline_dispose (spTimeline* timeline) { - spAttachmentTimeline* self = SUB_CAST(spAttachmentTimeline, timeline); - int i; - - _spTimeline_deinit(timeline); - - for (i = 0; i < self->framesLength; ++i) - FREE(self->attachmentNames[i]); - FREE(self->attachmentNames); - FREE(self->frames); - FREE(self); -} - -spAttachmentTimeline* spAttachmentTimeline_create (int frameCount) { - spAttachmentTimeline* self = NEW(spAttachmentTimeline); - _spTimeline_init(SUPER(self), TIMELINE_ATTACHMENT, _spAttachmentTimeline_dispose, _spAttachmentTimeline_apply); - - CONST_CAST(int, self->framesLength) = frameCount; - CONST_CAST(float*, self->frames) = CALLOC(float, frameCount); - CONST_CAST(char**, self->attachmentNames) = CALLOC(char*, frameCount); - - return self; -} - -void spAttachmentTimeline_setFrame (spAttachmentTimeline* self, int frameIndex, float time, const char* attachmentName) { - self->frames[frameIndex] = time; - - FREE(self->attachmentNames[frameIndex]); - if (attachmentName) - MALLOC_STR(self->attachmentNames[frameIndex], attachmentName); - else - self->attachmentNames[frameIndex] = 0; -} - -/**/ - -/** Fires events for frames > lastTime and <= time. */ -void _spEventTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha) { - spEventTimeline* self = (spEventTimeline*)timeline; - int frameIndex; - if (!firedEvents) return; - - if (lastTime > time) { /* Fire events after last time for looped animations. */ - _spEventTimeline_apply(timeline, skeleton, lastTime, (float)INT_MAX, firedEvents, eventCount, alpha); - lastTime = -1; - } else if (lastTime >= self->frames[self->framesLength - 1]) /* Last time is after last frame. */ - return; - if (time < self->frames[0]) return; /* Time is before first frame. */ - - if (lastTime < self->frames[0]) - frameIndex = 0; - else { - float frame; - frameIndex = binarySearch(self->frames, self->framesLength, lastTime, 1); - frame = self->frames[frameIndex]; - while (frameIndex > 0) { /* Fire multiple events with the same frame. */ - if (self->frames[frameIndex - 1] != frame) break; - frameIndex--; - } - } - for (; frameIndex < self->framesLength && time >= self->frames[frameIndex]; frameIndex++) { - firedEvents[*eventCount] = self->events[frameIndex]; - (*eventCount)++; - } -} - -void _spEventTimeline_dispose (spTimeline* timeline) { - spEventTimeline* self = SUB_CAST(spEventTimeline, timeline); - int i; - - _spTimeline_deinit(timeline); - - for (i = 0; i < self->framesLength; ++i) - spEvent_dispose(self->events[i]); - FREE(self->events); - FREE(self->frames); - FREE(self); -} - -spEventTimeline* spEventTimeline_create (int frameCount) { - spEventTimeline* self = NEW(spEventTimeline); - _spTimeline_init(SUPER(self), TIMELINE_EVENT, _spEventTimeline_dispose, _spEventTimeline_apply); - - CONST_CAST(int, self->framesLength) = frameCount; - CONST_CAST(float*, self->frames) = CALLOC(float, frameCount); - CONST_CAST(spEvent**, self->events) = CALLOC(spEvent*, frameCount); - - return self; -} - -void spEventTimeline_setFrame (spEventTimeline* self, int frameIndex, float time, spEvent* event) { - self->frames[frameIndex] = time; - - FREE(self->events[frameIndex]); - self->events[frameIndex] = event; -} - -/**/ - -void _spDrawOrderTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, - spEvent** firedEvents, int* eventCount, float alpha) { - int i; - int frameIndex; - const int* drawOrderToSetupIndex; - spDrawOrderTimeline* self = (spDrawOrderTimeline*)timeline; - - if (time < self->frames[0]) return; /* Time is before first frame. */ - - if (time >= self->frames[self->framesLength - 1]) /* Time is after last frame. */ - frameIndex = self->framesLength - 1; - else - frameIndex = binarySearch(self->frames, self->framesLength, time, 1) - 1; - - drawOrderToSetupIndex = self->drawOrders[frameIndex]; - if (!drawOrderToSetupIndex) - memcpy(skeleton->drawOrder, skeleton->slots, self->slotCount * sizeof(int)); - else { - for (i = 0; i < self->slotCount; i++) - skeleton->drawOrder[i] = skeleton->slots[drawOrderToSetupIndex[i]]; - } -} - -void _spDrawOrderTimeline_dispose (spTimeline* timeline) { - spDrawOrderTimeline* self = SUB_CAST(spDrawOrderTimeline, timeline); - int i; - - _spTimeline_deinit(timeline); - - for (i = 0; i < self->framesLength; ++i) - FREE(self->drawOrders[i]); - FREE(self->drawOrders); - FREE(self->frames); - FREE(self); -} - -spDrawOrderTimeline* spDrawOrderTimeline_create (int frameCount, int slotCount) { - spDrawOrderTimeline* self = NEW(spDrawOrderTimeline); - _spTimeline_init(SUPER(self), TIMELINE_DRAWORDER, _spDrawOrderTimeline_dispose, _spDrawOrderTimeline_apply); - - CONST_CAST(int, self->framesLength) = frameCount; - CONST_CAST(float*, self->frames) = CALLOC(float, frameCount); - CONST_CAST(int**, self->drawOrders) = CALLOC(int*, frameCount); - CONST_CAST(int, self->slotCount) = slotCount; - - return self; -} - -void spDrawOrderTimeline_setFrame (spDrawOrderTimeline* self, int frameIndex, float time, const int* drawOrder) { - self->frames[frameIndex] = time; - - FREE(self->drawOrders[frameIndex]); - if (!drawOrder) - self->drawOrders[frameIndex] = 0; - else { - self->drawOrders[frameIndex] = MALLOC(int, self->slotCount); - memcpy(CONST_CAST(int*, self->drawOrders[frameIndex]), drawOrder, self->slotCount * sizeof(int)); - } -} diff --git a/cocos/editor-support/spine/Animation.h b/cocos/editor-support/spine/Animation.h index f6e8f76c57..576fcefe9a 100644 --- a/cocos/editor-support/spine/Animation.h +++ b/cocos/editor-support/spine/Animation.h @@ -1,40 +1,38 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_ANIMATION_H_ #define SPINE_ANIMATION_H_ #include +#include #ifdef __cplusplus extern "C" { @@ -47,25 +45,25 @@ typedef struct { const char* const name; float duration; - int timelineCount; + int timelinesCount; spTimeline** timelines; } spAnimation; -spAnimation* spAnimation_create (const char* name, int timelineCount); +spAnimation* spAnimation_create (const char* name, int timelinesCount); void spAnimation_dispose (spAnimation* self); /** Poses the skeleton at the specified time for this animation. * @param lastTime The last time the animation was applied. * @param events Any triggered events are added. */ void spAnimation_apply (const spAnimation* self, struct spSkeleton* skeleton, float lastTime, float time, int loop, - spEvent** events, int* eventCount); + spEvent** events, int* eventsCount); /** Poses the skeleton at the specified time for this animation mixed with the current pose. * @param lastTime The last time the animation was applied. * @param events Any triggered events are added. * @param alpha The amount of this animation that affects the current pose. */ void spAnimation_mix (const spAnimation* self, struct spSkeleton* skeleton, float lastTime, float time, int loop, - spEvent** events, int* eventCount, float alpha); + spEvent** events, int* eventsCount, float alpha); #ifdef SPINE_SHORT_NAMES typedef spAnimation Animation; @@ -78,7 +76,15 @@ typedef spAnimation Animation; /**/ typedef enum { - TIMELINE_SCALE, TIMELINE_ROTATE, TIMELINE_TRANLATE, TIMELINE_COLOR, TIMELINE_ATTACHMENT, TIMELINE_EVENT, TIMELINE_DRAWORDER + SP_TIMELINE_SCALE, + SP_TIMELINE_ROTATE, + SP_TIMELINE_TRANSLATE, + SP_TIMELINE_COLOR, + SP_TIMELINE_ATTACHMENT, + SP_TIMELINE_EVENT, + SP_TIMELINE_DRAWORDER, + SP_TIMELINE_FFD, + SP_TIMELINE_IKCONSTRAINT } spTimelineType; struct spTimeline { @@ -89,10 +95,17 @@ struct spTimeline { void spTimeline_dispose (spTimeline* self); void spTimeline_apply (const spTimeline* self, struct spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha); + int* eventsCount, float alpha); #ifdef SPINE_SHORT_NAMES typedef spTimeline Timeline; +#define TIMELINE_SCALE SP_TIMELINE_SCALE +#define TIMELINE_ROTATE SP_TIMELINE_ROTATE +#define TIMELINE_TRANSLATE SP_TIMELINE_TRANSLATE +#define TIMELINE_COLOR SP_TIMELINE_COLOR +#define TIMELINE_ATTACHMENT SP_TIMELINE_ATTACHMENT +#define TIMELINE_EVENT SP_TIMELINE_EVENT +#define TIMELINE_DRAWORDER SP_TIMELINE_DRAWORDER #define Timeline_dispose(...) spTimeline_dispose(__VA_ARGS__) #define Timeline_apply(...) spTimeline_apply(__VA_ARGS__) #endif @@ -101,7 +114,7 @@ typedef spTimeline Timeline; typedef struct { spTimeline super; - float* curves; /* dfx, dfy, ddfx, ddfy, dddfx, dddfy, ... */ + float* curves; /* type, x, y, ... */ } spCurveTimeline; void spCurveTimeline_setLinear (spCurveTimeline* self, int frameIndex); @@ -125,12 +138,12 @@ typedef spCurveTimeline CurveTimeline; typedef struct spBaseTimeline { spCurveTimeline super; - int const framesLength; + int const framesCount; float* const frames; /* time, angle, ... for rotate. time, x, y, ... for translate and scale. */ int boneIndex; } spRotateTimeline; -spRotateTimeline* spRotateTimeline_create (int frameCount); +spRotateTimeline* spRotateTimeline_create (int framesCount); void spRotateTimeline_setFrame (spRotateTimeline* self, int frameIndex, float time, float angle); @@ -144,7 +157,7 @@ typedef spRotateTimeline RotateTimeline; typedef struct spBaseTimeline spTranslateTimeline; -spTranslateTimeline* spTranslateTimeline_create (int frameCount); +spTranslateTimeline* spTranslateTimeline_create (int framesCount); void spTranslateTimeline_setFrame (spTranslateTimeline* self, int frameIndex, float time, float x, float y); @@ -158,7 +171,7 @@ typedef spTranslateTimeline TranslateTimeline; typedef struct spBaseTimeline spScaleTimeline; -spScaleTimeline* spScaleTimeline_create (int frameCount); +spScaleTimeline* spScaleTimeline_create (int framesCount); void spScaleTimeline_setFrame (spScaleTimeline* self, int frameIndex, float time, float x, float y); @@ -172,12 +185,12 @@ typedef spScaleTimeline ScaleTimeline; typedef struct { spCurveTimeline super; - int const framesLength; + int const framesCount; float* const frames; /* time, r, g, b, a, ... */ int slotIndex; } spColorTimeline; -spColorTimeline* spColorTimeline_create (int frameCount); +spColorTimeline* spColorTimeline_create (int framesCount); void spColorTimeline_setFrame (spColorTimeline* self, int frameIndex, float time, float r, float g, float b, float a); @@ -191,13 +204,13 @@ typedef spColorTimeline ColorTimeline; typedef struct { spTimeline super; - int const framesLength; + int const framesCount; float* const frames; /* time, ... */ int slotIndex; const char** const attachmentNames; } spAttachmentTimeline; -spAttachmentTimeline* spAttachmentTimeline_create (int frameCount); +spAttachmentTimeline* spAttachmentTimeline_create (int framesCount); /* @param attachmentName May be 0. */ void spAttachmentTimeline_setFrame (spAttachmentTimeline* self, int frameIndex, float time, const char* attachmentName); @@ -212,12 +225,12 @@ typedef spAttachmentTimeline AttachmentTimeline; typedef struct { spTimeline super; - int const framesLength; + int const framesCount; float* const frames; /* time, ... */ spEvent** const events; } spEventTimeline; -spEventTimeline* spEventTimeline_create (int frameCount); +spEventTimeline* spEventTimeline_create (int framesCount); void spEventTimeline_setFrame (spEventTimeline* self, int frameIndex, float time, spEvent* event); @@ -231,13 +244,13 @@ typedef spEventTimeline EventTimeline; typedef struct { spTimeline super; - int const framesLength; + int const framesCount; float* const frames; /* time, ... */ const int** const drawOrders; - int const slotCount; + int const slotsCount; } spDrawOrderTimeline; -spDrawOrderTimeline* spDrawOrderTimeline_create (int frameCount, int slotCount); +spDrawOrderTimeline* spDrawOrderTimeline_create (int framesCount, int slotsCount); void spDrawOrderTimeline_setFrame (spDrawOrderTimeline* self, int frameIndex, float time, const int* drawOrder); @@ -247,6 +260,50 @@ typedef spDrawOrderTimeline DrawOrderTimeline; #define DrawOrderTimeline_setFrame(...) spDrawOrderTimeline_setFrame(__VA_ARGS__) #endif +/**/ + +typedef struct { + spCurveTimeline super; + int const framesCount; + float* const frames; /* time, ... */ + int const frameVerticesCount; + const float** const frameVertices; + int slotIndex; + spAttachment* attachment; +} spFFDTimeline; + +spFFDTimeline* spFFDTimeline_create (int framesCount, int frameVerticesCount); + +void spFFDTimeline_setFrame (spFFDTimeline* self, int frameIndex, float time, float* vertices); + +#ifdef SPINE_SHORT_NAMES +typedef spFFDTimeline FFDTimeline; +#define FFDTimeline_create(...) spFFDTimeline_create(__VA_ARGS__) +#define FFDTimeline_setFrame(...) spFFDTimeline_setFrame(__VA_ARGS__) +#endif + +/**/ + +typedef struct { + spCurveTimeline super; + int const framesCount; + float* const frames; /* time, mix, bendDirection, ... */ + int ikConstraintIndex; +} spIkConstraintTimeline; + +spIkConstraintTimeline* spIkConstraintTimeline_create (int framesCount); + +/* @param attachmentName May be 0. */ +void spIkConstraintTimeline_setFrame (spIkConstraintTimeline* self, int frameIndex, float time, float mix, int bendDirection); + +#ifdef SPINE_SHORT_NAMES +typedef spIkConstraintTimeline IkConstraintTimeline; +#define IkConstraintTimeline_create(...) spIkConstraintTimeline_create(__VA_ARGS__) +#define IkConstraintTimeline_setFrame(...) spIkConstraintTimeline_setFrame(__VA_ARGS__) +#endif + +/**/ + #ifdef __cplusplus } #endif diff --git a/cocos/editor-support/spine/AnimationState.c b/cocos/editor-support/spine/AnimationState.c new file mode 100644 index 0000000000..419c4594fc --- /dev/null +++ b/cocos/editor-support/spine/AnimationState.c @@ -0,0 +1,322 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include +#include + +spTrackEntry* _spTrackEntry_create (spAnimationState* state) { + spTrackEntry* self = NEW(spTrackEntry); + CONST_CAST(spAnimationState*, self->state) = state; + self->timeScale = 1; + self->lastTime = -1; + self->mix = 1; + return self; +} + +void _spTrackEntry_dispose (spTrackEntry* self) { + if (self->previous) SUB_CAST(_spAnimationState, self->state)->disposeTrackEntry(self->previous); + FREE(self); +} + +/**/ + +spTrackEntry* _spAnimationState_createTrackEntry (spAnimationState* self) { + return _spTrackEntry_create(self); +} + +void _spAnimationState_disposeTrackEntry (spTrackEntry* entry) { + _spTrackEntry_dispose(entry); +} + +spAnimationState* spAnimationState_create (spAnimationStateData* data) { + _spAnimationState* internal = NEW(_spAnimationState); + spAnimationState* self = SUPER(internal); + internal->events = MALLOC(spEvent*, 64); + self->timeScale = 1; + CONST_CAST(spAnimationStateData*, self->data) = data; + internal->createTrackEntry = _spAnimationState_createTrackEntry; + internal->disposeTrackEntry = _spAnimationState_disposeTrackEntry; + return self; +} + +void _spAnimationState_disposeAllEntries (spAnimationState* self, spTrackEntry* entry) { + _spAnimationState* internal = SUB_CAST(_spAnimationState, self); + while (entry) { + spTrackEntry* next = entry->next; + internal->disposeTrackEntry(entry); + entry = next; + } +} + +void spAnimationState_dispose (spAnimationState* self) { + int i; + _spAnimationState* internal = SUB_CAST(_spAnimationState, self); + FREE(internal->events); + for (i = 0; i < self->tracksCount; ++i) + _spAnimationState_disposeAllEntries(self, self->tracks[i]); + FREE(self->tracks); + FREE(self); +} + +void _spAnimationState_setCurrent (spAnimationState* self, int index, spTrackEntry* entry); + +void spAnimationState_update (spAnimationState* self, float delta) { + int i; + float previousDelta; + delta *= self->timeScale; + for (i = 0; i < self->tracksCount; ++i) { + spTrackEntry* current = self->tracks[i]; + if (!current) continue; + + current->time += delta * current->timeScale; + if (current->previous) { + previousDelta = delta * current->previous->timeScale; + current->previous->time += previousDelta; + current->mixTime += previousDelta; + } + + if (current->next) { + current->next->time = current->lastTime - current->next->delay; + if (current->next->time >= 0) _spAnimationState_setCurrent(self, i, current->next); + } else { + /* End non-looping animation when it reaches its end time and there is no next entry. */ + if (!current->loop && current->lastTime >= current->endTime) spAnimationState_clearTrack(self, i); + } + } +} + +void spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) { + _spAnimationState* internal = SUB_CAST(_spAnimationState, self); + + int i, ii; + int eventsCount; + int entryChanged; + float time; + spTrackEntry* previous; + for (i = 0; i < self->tracksCount; ++i) { + spTrackEntry* current = self->tracks[i]; + if (!current) continue; + + eventsCount = 0; + + time = current->time; + if (!current->loop && time > current->endTime) time = current->endTime; + + previous = current->previous; + if (!previous) { + if (current->mix == 1) { + spAnimation_apply(current->animation, skeleton, current->lastTime, time, + current->loop, internal->events, &eventsCount); + } else { + spAnimation_mix(current->animation, skeleton, current->lastTime, time, + current->loop, internal->events, &eventsCount, current->mix); + } + } else { + float alpha = current->mixTime / current->mixDuration * current->mix; + + float previousTime = previous->time; + if (!previous->loop && previousTime > previous->endTime) previousTime = previous->endTime; + spAnimation_apply(previous->animation, skeleton, previousTime, previousTime, previous->loop, 0, 0); + + if (alpha >= 1) { + alpha = 1; + internal->disposeTrackEntry(current->previous); + current->previous = 0; + } + spAnimation_mix(current->animation, skeleton, current->lastTime, time, + current->loop, internal->events, &eventsCount, alpha); + } + + entryChanged = 0; + for (ii = 0; ii < eventsCount; ++ii) { + spEvent* event = internal->events[ii]; + if (current->listener) { + current->listener(self, i, SP_ANIMATION_EVENT, event, 0); + if (self->tracks[i] != current) { + entryChanged = 1; + break; + } + } + if (self->listener) { + self->listener(self, i, SP_ANIMATION_EVENT, event, 0); + if (self->tracks[i] != current) { + entryChanged = 1; + break; + } + } + } + if (entryChanged) continue; + + /* Check if completed the animation or a loop iteration. */ + if (current->loop ? (FMOD(current->lastTime, current->endTime) > FMOD(time, current->endTime)) + : (current->lastTime < current->endTime && time >= current->endTime)) { + int count = (int)(time / current->endTime); + if (current->listener) { + current->listener(self, i, SP_ANIMATION_COMPLETE, 0, count); + if (self->tracks[i] != current) continue; + } + if (self->listener) { + self->listener(self, i, SP_ANIMATION_COMPLETE, 0, count); + if (self->tracks[i] != current) continue; + } + } + + current->lastTime = current->time; + } +} + +void spAnimationState_clearTracks (spAnimationState* self) { + int i; + for (i = 0; i < self->tracksCount; ++i) + spAnimationState_clearTrack(self, i); + self->tracksCount = 0; +} + +void spAnimationState_clearTrack (spAnimationState* self, int trackIndex) { + spTrackEntry* current; + if (trackIndex >= self->tracksCount) return; + current = self->tracks[trackIndex]; + if (!current) return; + + if (current->listener) current->listener(self, trackIndex, SP_ANIMATION_END, 0, 0); + if (self->listener) self->listener(self, trackIndex, SP_ANIMATION_END, 0, 0); + + self->tracks[trackIndex] = 0; + + _spAnimationState_disposeAllEntries(self, current); +} + +spTrackEntry* _spAnimationState_expandToIndex (spAnimationState* self, int index) { + spTrackEntry** newTracks; + if (index < self->tracksCount) return self->tracks[index]; + newTracks = CALLOC(spTrackEntry*, index + 1); + memcpy(newTracks, self->tracks, self->tracksCount * sizeof(spTrackEntry*)); + FREE(self->tracks); + self->tracks = newTracks; + self->tracksCount = index + 1; + return 0; +} + +void _spAnimationState_setCurrent (spAnimationState* self, int index, spTrackEntry* entry) { + _spAnimationState* internal = SUB_CAST(_spAnimationState, self); + + spTrackEntry* current = _spAnimationState_expandToIndex(self, index); + if (current) { + spTrackEntry* previous = current->previous; + current->previous = 0; + + if (current->listener) current->listener(self, index, SP_ANIMATION_END, 0, 0); + if (self->listener) self->listener(self, index, SP_ANIMATION_END, 0, 0); + + entry->mixDuration = spAnimationStateData_getMix(self->data, current->animation, entry->animation); + if (entry->mixDuration > 0) { + entry->mixTime = 0; + /* If a mix is in progress, mix from the closest animation. */ + if (previous && current->mixTime / current->mixDuration < 0.5f) { + entry->previous = previous; + previous = current; + } else + entry->previous = current; + } else + internal->disposeTrackEntry(current); + + if (previous) internal->disposeTrackEntry(previous); + } + + self->tracks[index] = entry; + + if (entry->listener) { + entry->listener(self, index, SP_ANIMATION_START, 0, 0); + if (self->tracks[index] != entry) return; + } + if (self->listener) self->listener(self, index, SP_ANIMATION_START, 0, 0); +} + +spTrackEntry* spAnimationState_setAnimationByName (spAnimationState* self, int trackIndex, const char* animationName, + int/*bool*/loop) { + spAnimation* animation = spSkeletonData_findAnimation(self->data->skeletonData, animationName); + return spAnimationState_setAnimation(self, trackIndex, animation, loop); +} + +spTrackEntry* spAnimationState_setAnimation (spAnimationState* self, int trackIndex, spAnimation* animation, int/*bool*/loop) { + _spAnimationState* internal = SUB_CAST(_spAnimationState, self); + + spTrackEntry* entry; + spTrackEntry* current = _spAnimationState_expandToIndex(self, trackIndex); + if (current) _spAnimationState_disposeAllEntries(self, current->next); + + entry = internal->createTrackEntry(self); + entry->animation = animation; + entry->loop = loop; + entry->endTime = animation->duration; + _spAnimationState_setCurrent(self, trackIndex, entry); + return entry; +} + +spTrackEntry* spAnimationState_addAnimationByName (spAnimationState* self, int trackIndex, const char* animationName, + int/*bool*/loop, float delay) { + spAnimation* animation = spSkeletonData_findAnimation(self->data->skeletonData, animationName); + return spAnimationState_addAnimation(self, trackIndex, animation, loop, delay); +} + +spTrackEntry* spAnimationState_addAnimation (spAnimationState* self, int trackIndex, spAnimation* animation, int/*bool*/loop, + float delay) { + _spAnimationState* internal = SUB_CAST(_spAnimationState, self); + spTrackEntry* last; + + spTrackEntry* entry = internal->createTrackEntry(self); + entry->animation = animation; + entry->loop = loop; + entry->endTime = animation->duration; + + last = _spAnimationState_expandToIndex(self, trackIndex); + if (last) { + while (last->next) + last = last->next; + last->next = entry; + } else + self->tracks[trackIndex] = entry; + + if (delay <= 0) { + if (last) + delay += last->endTime - spAnimationStateData_getMix(self->data, last->animation, animation); + else + delay = 0; + } + entry->delay = delay; + + return entry; +} + +spTrackEntry* spAnimationState_getCurrent (spAnimationState* self, int trackIndex) { + if (trackIndex >= self->tracksCount) return 0; + return self->tracks[trackIndex]; +} diff --git a/cocos/editor-support/spine/AnimationState.cpp b/cocos/editor-support/spine/AnimationState.cpp deleted file mode 100644 index 2e30fd871d..0000000000 --- a/cocos/editor-support/spine/AnimationState.cpp +++ /dev/null @@ -1,282 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include - -spTrackEntry* _spTrackEntry_create () { - spTrackEntry* entry = NEW(spTrackEntry); - entry->timeScale = 1; - entry->lastTime = -1; - return entry; -} - -void _spTrackEntry_dispose (spTrackEntry* entry) { - FREE(entry); -} - -void _spTrackEntry_disposeAll (spTrackEntry* entry) { - while (entry) { - spTrackEntry* next = entry->next; - _spTrackEntry_dispose(entry); - entry = next; - } -} - -/**/ - -typedef struct { - spAnimationState super; - spEvent** events; -} _spAnimationState; - -void _spAnimationState_setCurrent (spAnimationState* self, int index, spTrackEntry* entry); - -spAnimationState* spAnimationState_create (spAnimationStateData* data) { - _spAnimationState* internal = NEW(_spAnimationState); - spAnimationState* self = SUPER(internal); - internal->events = MALLOC(spEvent*, 64); - self->timeScale = 1; - CONST_CAST(spAnimationStateData*, self->data) = data; - return self; -} - -void spAnimationState_dispose (spAnimationState* self) { - int i; - _spAnimationState* internal = SUB_CAST(_spAnimationState, self); - FREE(internal->events); - for (i = 0; i < self->trackCount; i++) - _spTrackEntry_disposeAll(self->tracks[i]); - FREE(self->tracks); - FREE(self); -} - -void spAnimationState_update (spAnimationState* self, float delta) { - int i; - float trackDelta; - delta *= self->timeScale; - for (i = 0; i < self->trackCount; i++) { - spTrackEntry* current = self->tracks[i]; - if (!current) continue; - - trackDelta = delta * current->timeScale; - current->time += trackDelta; - if (current->previous) { - current->previous->time += trackDelta; - current->mixTime += trackDelta; - } - - if (current->next) { - if (current->lastTime >= current->next->delay) _spAnimationState_setCurrent(self, i, current->next); - } else { - /* End non-looping animation when it reaches its end time and there is no next entry. */ - if (!current->loop && current->lastTime >= current->endTime) spAnimationState_clearTrack(self, i); - } - } -} - -void spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) { - _spAnimationState* internal = SUB_CAST(_spAnimationState, self); - - int i, ii; - int eventCount; - float time; - spTrackEntry* previous; - for (i = 0; i < self->trackCount; i++) { - spTrackEntry* current = self->tracks[i]; - if (!current) continue; - - eventCount = 0; - - time = current->time; - if (!current->loop && time > current->endTime) time = current->endTime; - - previous = current->previous; - if (!previous) { - spAnimation_apply(current->animation, skeleton, current->lastTime, time, current->loop, internal->events, &eventCount); - } else { - float alpha = current->mixTime / current->mixDuration; - - float previousTime = previous->time; - if (!previous->loop && previousTime > previous->endTime) previousTime = previous->endTime; - spAnimation_apply(previous->animation, skeleton, previousTime, previousTime, previous->loop, 0, 0); - - if (alpha >= 1) { - alpha = 1; - _spTrackEntry_dispose(current->previous); - current->previous = 0; - } - spAnimation_mix(current->animation, skeleton, current->lastTime, time, current->loop, internal->events, &eventCount, - alpha); - } - - for (ii = 0; ii < eventCount; ii++) { - spEvent* event = internal->events[ii]; - if (current->listener) current->listener(self, i, ANIMATION_EVENT, event, 0); - if (self->listener) self->listener(self, i, ANIMATION_EVENT, event, 0); - } - - /* Check if completed the animation or a loop iteration. */ - if (current->loop ? (FMOD(current->lastTime, current->endTime) > FMOD(time, current->endTime)) // - : (current->lastTime < current->endTime && time >= current->endTime)) { - int count = (int)(time / current->endTime); - if (current->listener) current->listener(self, i, ANIMATION_COMPLETE, 0, count); - if (self->listener) self->listener(self, i, ANIMATION_COMPLETE, 0, count); - if (i >= self->trackCount || self->tracks[i] != current) continue; - } - - if (i >= self->trackCount || self->tracks[i] != current) continue; - current->lastTime = current->time; - } -} - -void spAnimationState_clearTracks (spAnimationState* self) { - int i; - for (i = 0; i < self->trackCount; i++) - spAnimationState_clearTrack(self, i); - self->trackCount = 0; -} - -void spAnimationState_clearTrack (spAnimationState* self, int trackIndex) { - spTrackEntry* current; - if (trackIndex >= self->trackCount) return; - current = self->tracks[trackIndex]; - if (!current) return; - - if (current->listener) current->listener(self, trackIndex, ANIMATION_END, 0, 0); - if (self->listener) self->listener(self, trackIndex, ANIMATION_END, 0, 0); - - self->tracks[trackIndex] = 0; - if (current->previous) _spTrackEntry_dispose(current->previous); - _spTrackEntry_disposeAll(current); -} - -spTrackEntry* _spAnimationState_expandToIndex (spAnimationState* self, int index) { - spTrackEntry** newTracks; - if (index < self->trackCount) return self->tracks[index]; - newTracks = CALLOC(spTrackEntry*, index + 1); - memcpy(newTracks, self->tracks, self->trackCount * sizeof(spTrackEntry*)); - FREE(self->tracks); - self->tracks = newTracks; - self->trackCount = index + 1; - return 0; -} - -void _spAnimationState_setCurrent (spAnimationState* self, int index, spTrackEntry* entry) { - spTrackEntry* current = _spAnimationState_expandToIndex(self, index); - if (current) { - if (current->previous) { - _spTrackEntry_dispose(current->previous); - current->previous = 0; - } - - if (current->listener) current->listener(self, index, ANIMATION_END, 0, 0); - if (self->listener) self->listener(self, index, ANIMATION_END, 0, 0); - - entry->mixDuration = spAnimationStateData_getMix(self->data, current->animation, entry->animation); - if (entry->mixDuration > 0) { - entry->mixTime = 0; - entry->previous = current; - } else - _spTrackEntry_dispose(current); - } - - self->tracks[index] = entry; - - if (entry->listener) current->listener(self, index, ANIMATION_START, 0, 0); - if (self->listener) self->listener(self, index, ANIMATION_START, 0, 0); -} - -spTrackEntry* spAnimationState_setAnimationByName (spAnimationState* self, int trackIndex, const char* animationName, - int/*bool*/loop) { - spAnimation* animation = spSkeletonData_findAnimation(self->data->skeletonData, animationName); - return spAnimationState_setAnimation(self, trackIndex, animation, loop); -} - -spTrackEntry* spAnimationState_setAnimation (spAnimationState* self, int trackIndex, spAnimation* animation, int/*bool*/loop) { - spTrackEntry* entry; - spTrackEntry* current = _spAnimationState_expandToIndex(self, trackIndex); - if (current) _spTrackEntry_disposeAll(current->next); - - entry = _spTrackEntry_create(); - entry->animation = animation; - entry->loop = loop; - entry->endTime = animation->duration; - _spAnimationState_setCurrent(self, trackIndex, entry); - return entry; -} - -spTrackEntry* spAnimationState_addAnimationByName (spAnimationState* self, int trackIndex, const char* animationName, - int/*bool*/loop, float delay) { - spAnimation* animation = spSkeletonData_findAnimation(self->data->skeletonData, animationName); - return spAnimationState_addAnimation(self, trackIndex, animation, loop, delay); -} - -spTrackEntry* spAnimationState_addAnimation (spAnimationState* self, int trackIndex, spAnimation* animation, int/*bool*/loop, - float delay) { - spTrackEntry* last; - - spTrackEntry* entry = _spTrackEntry_create(); - entry->animation = animation; - entry->loop = loop; - entry->endTime = animation->duration; - - last = _spAnimationState_expandToIndex(self, trackIndex); - if (last) { - while (last->next) - last = last->next; - last->next = entry; - } else - self->tracks[trackIndex] = entry; - - if (delay <= 0) { - if (last) - delay += last->endTime - spAnimationStateData_getMix(self->data, last->animation, animation); - else - delay = 0; - } - entry->delay = delay; - - return entry; -} - -spTrackEntry* spAnimationState_getCurrent (spAnimationState* self, int trackIndex) { - if (trackIndex >= self->trackCount) return 0; - return self->tracks[trackIndex]; -} diff --git a/cocos/editor-support/spine/AnimationState.h b/cocos/editor-support/spine/AnimationState.h index 990dbe75e7..7952bc80b1 100644 --- a/cocos/editor-support/spine/AnimationState.h +++ b/cocos/editor-support/spine/AnimationState.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_ANIMATIONSTATE_H_ @@ -43,7 +40,7 @@ extern "C" { #endif typedef enum { - ANIMATION_START, ANIMATION_END, ANIMATION_COMPLETE, ANIMATION_EVENT + SP_ANIMATION_START, SP_ANIMATION_END, SP_ANIMATION_COMPLETE, SP_ANIMATION_EVENT } spEventType; typedef struct spAnimationState spAnimationState; @@ -53,23 +50,27 @@ typedef void (*spAnimationStateListener) (spAnimationState* state, int trackInde typedef struct spTrackEntry spTrackEntry; struct spTrackEntry { + spAnimationState* const state; spTrackEntry* next; spTrackEntry* previous; spAnimation* animation; int/*bool*/loop; float delay, time, lastTime, endTime, timeScale; spAnimationStateListener listener; - float mixTime, mixDuration; + float mixTime, mixDuration, mix; + + void* rendererObject; }; struct spAnimationState { spAnimationStateData* const data; float timeScale; spAnimationStateListener listener; - void* context; - int trackCount; + int tracksCount; spTrackEntry** tracks; + + void* rendererObject; }; /* @param data May be 0 for no mixing. */ @@ -98,6 +99,10 @@ spTrackEntry* spAnimationState_getCurrent (spAnimationState* self, int trackInde #ifdef SPINE_SHORT_NAMES typedef spEventType EventType; +#define ANIMATION_START SP_ANIMATION_START +#define ANIMATION_END SP_ANIMATION_END +#define ANIMATION_COMPLETE SP_ANIMATION_COMPLETE +#define ANIMATION_EVENT SP_ANIMATION_EVENT typedef spAnimationStateListener AnimationStateListener; typedef spTrackEntry TrackEntry; typedef spAnimationState AnimationState; diff --git a/cocos/editor-support/spine/AnimationStateData.cpp b/cocos/editor-support/spine/AnimationStateData.c similarity index 67% rename from cocos/editor-support/spine/AnimationStateData.cpp rename to cocos/editor-support/spine/AnimationStateData.c index d479dbf5f5..0a5fbf4ca7 100644 --- a/cocos/editor-support/spine/AnimationStateData.cpp +++ b/cocos/editor-support/spine/AnimationStateData.c @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #include diff --git a/cocos/editor-support/spine/AnimationStateData.h b/cocos/editor-support/spine/AnimationStateData.h index aed1754299..ba1c386620 100644 --- a/cocos/editor-support/spine/AnimationStateData.h +++ b/cocos/editor-support/spine/AnimationStateData.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_ANIMATIONSTATEDATA_H_ diff --git a/cocos/editor-support/spine/Atlas.cpp b/cocos/editor-support/spine/Atlas.c similarity index 71% rename from cocos/editor-support/spine/Atlas.cpp rename to cocos/editor-support/spine/Atlas.c index 8addbc11d5..f202c5dacc 100644 --- a/cocos/editor-support/spine/Atlas.cpp +++ b/cocos/editor-support/spine/Atlas.c @@ -1,42 +1,40 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #include #include #include -spAtlasPage* spAtlasPage_create (const char* name) { +spAtlasPage* spAtlasPage_create (spAtlas* atlas, const char* name) { spAtlasPage* self = NEW(spAtlasPage); + CONST_CAST(spAtlas*, self->atlas) = atlas; MALLOC_STR(self->name, name); return self; } @@ -50,7 +48,7 @@ void spAtlasPage_dispose (spAtlasPage* self) { /**/ spAtlasRegion* spAtlasRegion_create () { - return NEW(spAtlasRegion) ; + return NEW(spAtlasRegion); } void spAtlasRegion_dispose (spAtlasRegion* self) { @@ -119,7 +117,7 @@ static int readValue (const char* end, Str* str) { return 1; } -/* Returns the number of tuple values read (2, 4, or 0 for failure). */ +/* Returns the number of tuple values read (1, 2, 4, or 0 for failure). */ static int readTuple (const char* end, Str tuple[]) { int i; Str str; @@ -128,10 +126,7 @@ static int readTuple (const char* end, Str tuple[]) { for (i = 0; i < 3; ++i) { tuple[i].begin = str.begin; - if (!beginPast(&str, ',')) { - if (i == 0) return 0; - break; - } + if (!beginPast(&str, ',')) break; tuple[i].end = str.begin - 2; trim(&tuple[i]); } @@ -142,7 +137,7 @@ static int readTuple (const char* end, Str tuple[]) { } static char* mallocString (Str* str) { - long length = str->end - str->begin; + int length = (int)(str->end - str->begin); char* string = MALLOC(char, length + 1); memcpy(string, str->begin, length); string[length] = '\0'; @@ -150,7 +145,7 @@ static char* mallocString (Str* str) { } static int indexOf (const char** array, int count, Str* str) { - long length = str->end - str->begin; + int length = (int)(str->end - str->begin); int i; for (i = count - 1; i >= 0; i--) if (strncmp(array[i], str->begin, length) == 0) return i; @@ -162,7 +157,7 @@ static int equals (Str* str, const char* other) { } static int toInt (Str* str) { - return static_cast(strtol(str->begin, (char**)&str->end, 10)); + return (int)strtol(str->begin, (char**)&str->end, 10); } static spAtlas* abortAtlas (spAtlas* self) { @@ -174,19 +169,23 @@ static const char* formatNames[] = {"Alpha", "Intensity", "LuminanceAlpha", "RGB static const char* textureFilterNames[] = {"Nearest", "Linear", "MipMap", "MipMapNearestNearest", "MipMapLinearNearest", "MipMapNearestLinear", "MipMapLinearLinear"}; -spAtlas* spAtlas_readAtlas (const char* begin, int length, const char* dir) { +spAtlas* spAtlas_create (const char* begin, int length, const char* dir, void* rendererObject) { + spAtlas* self; + int count; const char* end = begin + length; - size_t dirLength = strlen(dir); + int dirLength = (int)strlen(dir); int needsSlash = dirLength > 0 && dir[dirLength - 1] != '/' && dir[dirLength - 1] != '\\'; - spAtlas* self = NEW(spAtlas); - spAtlasPage *page = 0; spAtlasPage *lastPage = 0; spAtlasRegion *lastRegion = 0; Str str; Str tuple[4]; + + self = NEW(spAtlas); + self->rendererObject = rendererObject; + readLine(begin, 0, 0); while (readLine(0, end, &str)) { if (str.end - str.begin == 0) { @@ -198,7 +197,7 @@ spAtlas* spAtlas_readAtlas (const char* begin, int length, const char* dir) { if (needsSlash) path[dirLength] = '/'; strcpy(path + dirLength + needsSlash, name); - page = spAtlasPage_create(name); + page = spAtlasPage_create(self, name); FREE(name); if (lastPage) lastPage->next = page; @@ -206,8 +205,15 @@ spAtlas* spAtlas_readAtlas (const char* begin, int length, const char* dir) { self->pages = page; lastPage = page; - if (!readValue(end, &str)) return abortAtlas(self); - page->format = (spAtlasFormat)indexOf(formatNames, 7, &str); + switch (readTuple(end, tuple)) { + case 0: + return abortAtlas(self); + case 2: /* size is only optional for an atlas packed with an old TexturePacker. */ + page->width = toInt(tuple); + page->height = toInt(tuple + 1); + if (!readTuple(end, tuple)) return abortAtlas(self); + } + page->format = (spAtlasFormat)indexOf(formatNames, 7, tuple); if (!readTuple(end, tuple)) return abortAtlas(self); page->minFilter = (spAtlasFilter)indexOf(textureFilterNames, 7, tuple); @@ -215,8 +221,8 @@ spAtlas* spAtlas_readAtlas (const char* begin, int length, const char* dir) { if (!readValue(end, &str)) return abortAtlas(self); if (!equals(&str, "none")) { - page->uWrap = *str.begin == 'x' ? ATLAS_REPEAT : (*str.begin == 'y' ? ATLAS_CLAMPTOEDGE : ATLAS_REPEAT); - page->vWrap = *str.begin == 'x' ? ATLAS_CLAMPTOEDGE : (*str.begin == 'y' ? ATLAS_REPEAT : ATLAS_REPEAT); + page->uWrap = *str.begin == 'x' ? SP_ATLAS_REPEAT : (*str.begin == 'y' ? SP_ATLAS_CLAMPTOEDGE : SP_ATLAS_REPEAT); + page->vWrap = *str.begin == 'x' ? SP_ATLAS_CLAMPTOEDGE : (*str.begin == 'y' ? SP_ATLAS_REPEAT : SP_ATLAS_REPEAT); } _spAtlasPage_createTexture(page, path); @@ -288,8 +294,8 @@ spAtlas* spAtlas_readAtlas (const char* begin, int length, const char* dir) { return self; } -spAtlas* spAtlas_readAtlasFile (const char* path) { - long dirLength; +spAtlas* spAtlas_createFromFile (const char* path, void* rendererObject) { + int dirLength; char *dir; int length; const char* data; @@ -301,13 +307,13 @@ spAtlas* spAtlas_readAtlasFile (const char* path) { const char* lastBackwardSlash = strrchr(path, '\\'); const char* lastSlash = lastForwardSlash > lastBackwardSlash ? lastForwardSlash : lastBackwardSlash; if (lastSlash == path) lastSlash++; /* Never drop starting slash. */ - dirLength = lastSlash ? lastSlash - path : 0; + dirLength = (int)(lastSlash ? lastSlash - path : 0); dir = MALLOC(char, dirLength + 1); memcpy(dir, path, dirLength); dir[dirLength] = '\0'; data = _spUtil_readFile(path, &length); - if (data) atlas = spAtlas_readAtlas(data, length, dir); + if (data) atlas = spAtlas_create(data, length, dir, rendererObject); FREE(data); FREE(dir); diff --git a/cocos/editor-support/spine/Atlas.h b/cocos/editor-support/spine/Atlas.h index 77da6d147e..60e3ab7c6c 100644 --- a/cocos/editor-support/spine/Atlas.h +++ b/cocos/editor-support/spine/Atlas.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_ATLAS_H_ @@ -38,26 +35,35 @@ extern "C" { #endif +typedef struct spAtlas spAtlas; + typedef enum { - ATLAS_ALPHA, ATLAS_INTENSITY, ATLAS_LUMINANCE_ALPHA, ATLAS_RGB565, ATLAS_RGBA4444, ATLAS_RGB888, ATLAS_RGBA8888 + SP_ATLAS_ALPHA, + SP_ATLAS_INTENSITY, + SP_ATLAS_LUMINANCE_ALPHA, + SP_ATLAS_RGB565, + SP_ATLAS_RGBA4444, + SP_ATLAS_RGB888, + SP_ATLAS_RGBA8888 } spAtlasFormat; typedef enum { - ATLAS_NEAREST, - ATLAS_LINEAR, - ATLAS_MIPMAP, - ATLAS_MIPMAP_NEAREST_NEAREST, - ATLAS_MIPMAP_LINEAR_NEAREST, - ATLAS_MIPMAP_NEAREST_LINEAR, - ATLAS_MIPMAP_LINEAR_LINEAR + SP_ATLAS_NEAREST, + SP_ATLAS_LINEAR, + SP_ATLAS_MIPMAP, + SP_ATLAS_MIPMAP_NEAREST_NEAREST, + SP_ATLAS_MIPMAP_LINEAR_NEAREST, + SP_ATLAS_MIPMAP_NEAREST_LINEAR, + SP_ATLAS_MIPMAP_LINEAR_LINEAR } spAtlasFilter; typedef enum { - ATLAS_MIRROREDREPEAT, ATLAS_CLAMPTOEDGE, ATLAS_REPEAT + SP_ATLAS_MIRROREDREPEAT, SP_ATLAS_CLAMPTOEDGE, SP_ATLAS_REPEAT } spAtlasWrap; typedef struct spAtlasPage spAtlasPage; struct spAtlasPage { + const spAtlas* atlas; const char* name; spAtlasFormat format; spAtlasFilter minFilter, magFilter; @@ -69,13 +75,30 @@ struct spAtlasPage { spAtlasPage* next; }; -spAtlasPage* spAtlasPage_create (const char* name); +spAtlasPage* spAtlasPage_create (spAtlas* atlas, const char* name); void spAtlasPage_dispose (spAtlasPage* self); #ifdef SPINE_SHORT_NAMES typedef spAtlasFormat AtlasFormat; +#define ATLAS_ALPHA SP_ATLAS_ALPHA +#define ATLAS_INTENSITY SP_ATLAS_INTENSITY +#define ATLAS_LUMINANCE_ALPHA SP_ATLAS_LUMINANCE_ALPHA +#define ATLAS_RGB565 SP_ATLAS_RGB565 +#define ATLAS_RGBA4444 SP_ATLAS_RGBA4444 +#define ATLAS_RGB888 SP_ATLAS_RGB888 +#define ATLAS_RGBA8888 SP_ATLAS_RGBA8888 typedef spAtlasFilter AtlasFilter; +#define ATLAS_NEAREST SP_ATLAS_NEAREST +#define ATLAS_LINEAR SP_ATLAS_LINEAR +#define ATLAS_MIPMAP SP_ATLAS_MIPMAP +#define ATLAS_MIPMAP_NEAREST_NEAREST SP_ATLAS_MIPMAP_NEAREST_NEAREST +#define ATLAS_MIPMAP_LINEAR_NEAREST SP_ATLAS_MIPMAP_LINEAR_NEAREST +#define ATLAS_MIPMAP_NEAREST_LINEAR SP_ATLAS_MIPMAP_NEAREST_LINEAR +#define ATLAS_MIPMAP_LINEAR_LINEAR SP_ATLAS_MIPMAP_LINEAR_LINEAR typedef spAtlasWrap AtlasWrap; +#define ATLAS_MIRROREDREPEAT SP_ATLAS_MIRROREDREPEAT +#define ATLAS_CLAMPTOEDGE SP_ATLAS_CLAMPTOEDGE +#define ATLAS_REPEAT SP_ATLAS_REPEAT typedef spAtlasPage AtlasPage; #define AtlasPage_create(...) spAtlasPage_create(__VA_ARGS__) #define AtlasPage_dispose(...) spAtlasPage_dispose(__VA_ARGS__) @@ -112,15 +135,17 @@ typedef spAtlasRegion AtlasRegion; /**/ -typedef struct { +struct spAtlas { spAtlasPage* pages; spAtlasRegion* regions; -} spAtlas; + + void* rendererObject; +}; /* Image files referenced in the atlas file will be prefixed with dir. */ -spAtlas* spAtlas_readAtlas (const char* data, int length, const char* dir); +spAtlas* spAtlas_create (const char* data, int length, const char* dir, void* rendererObject); /* Image files referenced in the atlas file will be prefixed with the directory containing the atlas file. */ -spAtlas* spAtlas_readAtlasFile (const char* path); +spAtlas* spAtlas_createFromFile (const char* path, void* rendererObject); void spAtlas_dispose (spAtlas* atlas); /* Returns 0 if the region was not found. */ @@ -128,8 +153,8 @@ spAtlasRegion* spAtlas_findRegion (const spAtlas* self, const char* name); #ifdef SPINE_SHORT_NAMES typedef spAtlas Atlas; -#define Atlas_readAtlas(...) spAtlas_readAtlas(__VA_ARGS__) -#define Atlas_readAtlasFile(...) spAtlas_readAtlasFile(__VA_ARGS__) +#define Atlas_create(...) spAtlas_create(__VA_ARGS__) +#define Atlas_createFromFile(...) spAtlas_createFromFile(__VA_ARGS__) #define Atlas_dispose(...) spAtlas_dispose(__VA_ARGS__) #define Atlas_findRegion(...) spAtlas_findRegion(__VA_ARGS__) #endif diff --git a/cocos/editor-support/spine/AtlasAttachmentLoader.c b/cocos/editor-support/spine/AtlasAttachmentLoader.c new file mode 100644 index 0000000000..0867cd23ed --- /dev/null +++ b/cocos/editor-support/spine/AtlasAttachmentLoader.c @@ -0,0 +1,113 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +spAttachment* _spAtlasAttachmentLoader_newAttachment (spAttachmentLoader* loader, spSkin* skin, spAttachmentType type, + const char* name, const char* path) { + spAtlasAttachmentLoader* self = SUB_CAST(spAtlasAttachmentLoader, loader); + switch (type) { + case SP_ATTACHMENT_REGION: { + spRegionAttachment* attachment; + spAtlasRegion* region = spAtlas_findRegion(self->atlas, path); + if (!region) { + _spAttachmentLoader_setError(loader, "Region not found: ", path); + return 0; + } + attachment = spRegionAttachment_create(name); + attachment->rendererObject = region; + spRegionAttachment_setUVs(attachment, region->u, region->v, region->u2, region->v2, region->rotate); + attachment->regionOffsetX = region->offsetX; + attachment->regionOffsetY = region->offsetY; + attachment->regionWidth = region->width; + attachment->regionHeight = region->height; + attachment->regionOriginalWidth = region->originalWidth; + attachment->regionOriginalHeight = region->originalHeight; + return SUPER(attachment); + } + case SP_ATTACHMENT_MESH: { + spMeshAttachment* attachment; + spAtlasRegion* region = spAtlas_findRegion(self->atlas, path); + if (!region) { + _spAttachmentLoader_setError(loader, "Region not found: ", path); + return 0; + } + attachment = spMeshAttachment_create(name); + attachment->rendererObject = region; + attachment->regionU = region->u; + attachment->regionV = region->v; + attachment->regionU2 = region->u2; + attachment->regionV2 = region->v2; + attachment->regionRotate = region->rotate; + attachment->regionOffsetX = region->offsetX; + attachment->regionOffsetY = region->offsetY; + attachment->regionWidth = region->width; + attachment->regionHeight = region->height; + attachment->regionOriginalWidth = region->originalWidth; + attachment->regionOriginalHeight = region->originalHeight; + return SUPER(attachment); + } + case SP_ATTACHMENT_SKINNED_MESH: { + spSkinnedMeshAttachment* attachment; + spAtlasRegion* region = spAtlas_findRegion(self->atlas, path); + if (!region) { + _spAttachmentLoader_setError(loader, "Region not found: ", path); + return 0; + } + attachment = spSkinnedMeshAttachment_create(name); + attachment->rendererObject = region; + attachment->regionU = region->u; + attachment->regionV = region->v; + attachment->regionU2 = region->u2; + attachment->regionV2 = region->v2; + attachment->regionRotate = region->rotate; + attachment->regionOffsetX = region->offsetX; + attachment->regionOffsetY = region->offsetY; + attachment->regionWidth = region->width; + attachment->regionHeight = region->height; + attachment->regionOriginalWidth = region->originalWidth; + attachment->regionOriginalHeight = region->originalHeight; + return SUPER(attachment); + } + case SP_ATTACHMENT_BOUNDING_BOX: + return SUPER(spBoundingBoxAttachment_create(name)); + default: + _spAttachmentLoader_setUnknownTypeError(loader, type); + return 0; + } +} + +spAtlasAttachmentLoader* spAtlasAttachmentLoader_create (spAtlas* atlas) { + spAtlasAttachmentLoader* self = NEW(spAtlasAttachmentLoader); + _spAttachmentLoader_init(SUPER(self), _spAttachmentLoader_deinit, _spAtlasAttachmentLoader_newAttachment); + self->atlas = atlas; + return self; +} diff --git a/cocos/editor-support/spine/AtlasAttachmentLoader.cpp b/cocos/editor-support/spine/AtlasAttachmentLoader.cpp deleted file mode 100644 index 23b9171a85..0000000000 --- a/cocos/editor-support/spine/AtlasAttachmentLoader.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include - -spAttachment* _spAtlasAttachmentLoader_newAttachment (spAttachmentLoader* loader, spSkin* skin, spAttachmentType type, - const char* name) { - spAtlasAttachmentLoader* self = SUB_CAST(spAtlasAttachmentLoader, loader); - switch (type) { - case ATTACHMENT_REGION: { - spRegionAttachment* attachment; - spAtlasRegion* region = spAtlas_findRegion(self->atlas, name); - if (!region) { - _spAttachmentLoader_setError(loader, "Region not found: ", name); - return 0; - } - attachment = spRegionAttachment_create(name); - attachment->rendererObject = region; - spRegionAttachment_setUVs(attachment, region->u, region->v, region->u2, region->v2, region->rotate); - attachment->regionOffsetX = region->offsetX; - attachment->regionOffsetY = region->offsetY; - attachment->regionWidth = region->width; - attachment->regionHeight = region->height; - attachment->regionOriginalWidth = region->originalWidth; - attachment->regionOriginalHeight = region->originalHeight; - return SUPER(attachment); - } - case ATTACHMENT_BOUNDING_BOX: - return SUPER(spBoundingBoxAttachment_create(name)); - default: - _spAttachmentLoader_setUnknownTypeError(loader, type); - return 0; - } -} - -spAtlasAttachmentLoader* spAtlasAttachmentLoader_create (spAtlas* atlas) { - spAtlasAttachmentLoader* self = NEW(spAtlasAttachmentLoader); - _spAttachmentLoader_init(SUPER(self), _spAttachmentLoader_deinit, _spAtlasAttachmentLoader_newAttachment); - self->atlas = atlas; - return self; -} diff --git a/cocos/editor-support/spine/AtlasAttachmentLoader.h b/cocos/editor-support/spine/AtlasAttachmentLoader.h index 09303f567e..bd36afb335 100644 --- a/cocos/editor-support/spine/AtlasAttachmentLoader.h +++ b/cocos/editor-support/spine/AtlasAttachmentLoader.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_ATLASATTACHMENTLOADER_H_ diff --git a/cocos/editor-support/spine/Attachment.c b/cocos/editor-support/spine/Attachment.c new file mode 100644 index 0000000000..3918837f00 --- /dev/null +++ b/cocos/editor-support/spine/Attachment.c @@ -0,0 +1,56 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include +#include + +typedef struct _spAttachmentVtable { + void (*dispose) (spAttachment* self); +} _spAttachmentVtable; + +void _spAttachment_init (spAttachment* self, const char* name, spAttachmentType type, /**/ + void (*dispose) (spAttachment* self)) { + + CONST_CAST(_spAttachmentVtable*, self->vtable) = NEW(_spAttachmentVtable); + VTABLE(spAttachment, self) ->dispose = dispose; + + MALLOC_STR(self->name, name); + CONST_CAST(spAttachmentType, self->type) = type; +} + +void _spAttachment_deinit (spAttachment* self) { + FREE(self->vtable); + FREE(self->name); +} + +void spAttachment_dispose (spAttachment* self) { + VTABLE(spAttachment, self) ->dispose(self); +} diff --git a/cocos/editor-support/spine/Attachment.cpp b/cocos/editor-support/spine/Attachment.cpp deleted file mode 100644 index b5ce849875..0000000000 --- a/cocos/editor-support/spine/Attachment.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include -#include - -typedef struct _spAttachmentVtable { - void (*dispose) (spAttachment* self); -} _spAttachmentVtable; - -void _spAttachment_init (spAttachment* self, const char* name, spAttachmentType type, /**/ - void (*dispose) (spAttachment* self)) { - - CONST_CAST(_spAttachmentVtable*, self->vtable) = NEW(_spAttachmentVtable); - VTABLE(spAttachment, self) ->dispose = dispose; - - MALLOC_STR(self->name, name); - self->type = type; -} - -void _spAttachment_deinit (spAttachment* self) { - FREE(self->vtable); - FREE(self->name); -} - -void spAttachment_dispose (spAttachment* self) { - VTABLE(spAttachment, self) ->dispose(self); -} diff --git a/cocos/editor-support/spine/Attachment.h b/cocos/editor-support/spine/Attachment.h index 8ef9d64bb4..9b516b04f9 100644 --- a/cocos/editor-support/spine/Attachment.h +++ b/cocos/editor-support/spine/Attachment.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_ATTACHMENT_H_ @@ -41,13 +38,13 @@ extern "C" { struct spSlot; typedef enum { - ATTACHMENT_REGION, ATTACHMENT_REGION_SEQUENCE, ATTACHMENT_BOUNDING_BOX + SP_ATTACHMENT_REGION, SP_ATTACHMENT_BOUNDING_BOX, SP_ATTACHMENT_MESH, SP_ATTACHMENT_SKINNED_MESH } spAttachmentType; typedef struct spAttachment spAttachment; struct spAttachment { const char* const name; - spAttachmentType type; + const spAttachmentType type; const void* const vtable; }; @@ -56,6 +53,10 @@ void spAttachment_dispose (spAttachment* self); #ifdef SPINE_SHORT_NAMES typedef spAttachmentType AttachmentType; +#define ATTACHMENT_REGION SP_ATTACHMENT_REGION +#define ATTACHMENT_BOUNDING_BOX SP_ATTACHMENT_BOUNDING_BOX +#define ATTACHMENT_MESH SP_ATTACHMENT_MESH +#define ATTACHMENT_SKINNED_MESH SP_ATTACHMENT_SKINNED_MESH typedef spAttachment Attachment; #define Attachment_dispose(...) spAttachment_dispose(__VA_ARGS__) #endif diff --git a/cocos/editor-support/spine/AttachmentLoader.c b/cocos/editor-support/spine/AttachmentLoader.c new file mode 100644 index 0000000000..ab0c04c366 --- /dev/null +++ b/cocos/editor-support/spine/AttachmentLoader.c @@ -0,0 +1,81 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include +#include + +typedef struct _spAttachmentLoaderVtable { + spAttachment* (*newAttachment) (spAttachmentLoader* self, spSkin* skin, spAttachmentType type, const char* name, + const char* path); + void (*dispose) (spAttachmentLoader* self); +} _spAttachmentLoaderVtable; + +void _spAttachmentLoader_init (spAttachmentLoader* self, /**/ +void (*dispose) (spAttachmentLoader* self), /**/ + spAttachment* (*newAttachment) (spAttachmentLoader* self, spSkin* skin, spAttachmentType type, const char* name, + const char* path)) { + CONST_CAST(_spAttachmentLoaderVtable*, self->vtable) = NEW(_spAttachmentLoaderVtable); + VTABLE(spAttachmentLoader, self)->dispose = dispose; + VTABLE(spAttachmentLoader, self)->newAttachment = newAttachment; +} + +void _spAttachmentLoader_deinit (spAttachmentLoader* self) { + FREE(self->vtable); + FREE(self->error1); + FREE(self->error2); +} + +void spAttachmentLoader_dispose (spAttachmentLoader* self) { + VTABLE(spAttachmentLoader, self)->dispose(self); + FREE(self); +} + +spAttachment* spAttachmentLoader_newAttachment (spAttachmentLoader* self, spSkin* skin, spAttachmentType type, const char* name, + const char* path) { + FREE(self->error1); + FREE(self->error2); + self->error1 = 0; + self->error2 = 0; + return VTABLE(spAttachmentLoader, self)->newAttachment(self, skin, type, name, path); +} + +void _spAttachmentLoader_setError (spAttachmentLoader* self, const char* error1, const char* error2) { + FREE(self->error1); + FREE(self->error2); + MALLOC_STR(self->error1, error1); + MALLOC_STR(self->error2, error2); +} + +void _spAttachmentLoader_setUnknownTypeError (spAttachmentLoader* self, spAttachmentType type) { + char buffer[16]; + sprintf(buffer, "%d", type); + _spAttachmentLoader_setError(self, "Unknown attachment type: ", buffer); +} diff --git a/cocos/editor-support/spine/AttachmentLoader.cpp b/cocos/editor-support/spine/AttachmentLoader.cpp deleted file mode 100644 index 18fad267c5..0000000000 --- a/cocos/editor-support/spine/AttachmentLoader.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include -#include - -typedef struct _spAttachmentLoaderVtable { - spAttachment* (*newAttachment) (spAttachmentLoader* self, spSkin* skin, spAttachmentType type, const char* name); - void (*dispose) (spAttachmentLoader* self); -} _spAttachmentLoaderVtable; - -void _spAttachmentLoader_init (spAttachmentLoader* self, /**/ -void (*dispose) (spAttachmentLoader* self), /**/ -spAttachment* (*newAttachment) (spAttachmentLoader* self, spSkin* skin, spAttachmentType type, const char* name)) { - CONST_CAST(_spAttachmentLoaderVtable*, self->vtable) = NEW(_spAttachmentLoaderVtable); - VTABLE(spAttachmentLoader, self)->dispose = dispose; - VTABLE(spAttachmentLoader, self)->newAttachment = newAttachment; -} - -void _spAttachmentLoader_deinit (spAttachmentLoader* self) { - FREE(self->vtable); - FREE(self->error1); - FREE(self->error2); -} - -void spAttachmentLoader_dispose (spAttachmentLoader* self) { - VTABLE(spAttachmentLoader, self)->dispose(self); - FREE(self); -} - -spAttachment* spAttachmentLoader_newAttachment (spAttachmentLoader* self, spSkin* skin, spAttachmentType type, const char* name) { - FREE(self->error1); - FREE(self->error2); - self->error1 = 0; - self->error2 = 0; - return VTABLE(spAttachmentLoader, self)->newAttachment(self, skin, type, name); -} - -void _spAttachmentLoader_setError (spAttachmentLoader* self, const char* error1, const char* error2) { - FREE(self->error1); - FREE(self->error2); - MALLOC_STR(self->error1, error1); - MALLOC_STR(self->error2, error2); -} - -void _spAttachmentLoader_setUnknownTypeError (spAttachmentLoader* self, spAttachmentType type) { - char buffer[16]; - sprintf(buffer, "%d", type); - _spAttachmentLoader_setError(self, "Unknown attachment type: ", buffer); -} diff --git a/cocos/editor-support/spine/AttachmentLoader.h b/cocos/editor-support/spine/AttachmentLoader.h index fdea26df79..4088e0c47a 100644 --- a/cocos/editor-support/spine/AttachmentLoader.h +++ b/cocos/editor-support/spine/AttachmentLoader.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_ATTACHMENTLOADER_H_ @@ -59,7 +56,8 @@ struct spAttachmentLoader { void spAttachmentLoader_dispose (spAttachmentLoader* self); /* Returns 0 to not load an attachment. If 0 is returned and spAttachmentLoader.error1 is set, an error occurred. */ -spAttachment* spAttachmentLoader_newAttachment (spAttachmentLoader* self, spSkin* skin, spAttachmentType type, const char* name); +spAttachment* spAttachmentLoader_newAttachment (spAttachmentLoader* self, spSkin* skin, spAttachmentType type, const char* name, + const char* path); #ifdef SPINE_SHORT_NAMES typedef spAttachmentLoader AttachmentLoader; diff --git a/cocos/editor-support/spine/Bone.c b/cocos/editor-support/spine/Bone.c new file mode 100644 index 0000000000..0e91facc5a --- /dev/null +++ b/cocos/editor-support/spine/Bone.c @@ -0,0 +1,118 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +static int yDown; + +void spBone_setYDown (int value) { + yDown = value; +} + +spBone* spBone_create (spBoneData* data, spSkeleton* skeleton, spBone* parent) { + spBone* self = NEW(spBone); + CONST_CAST(spBoneData*, self->data) = data; + CONST_CAST(spSkeleton*, self->skeleton) = skeleton; + CONST_CAST(spBone*, self->parent) = parent; + spBone_setToSetupPose(self); + return self; +} + +void spBone_dispose (spBone* self) { + FREE(self); +} + +void spBone_updateWorldTransform (spBone* self) { + float radians, cosine, sine; + if (self->parent) { + CONST_CAST(float, self->worldX) = self->x * self->parent->m00 + self->y * self->parent->m01 + self->parent->worldX; + CONST_CAST(float, self->worldY) = self->x * self->parent->m10 + self->y * self->parent->m11 + self->parent->worldY; + if (self->data->inheritScale) { + CONST_CAST(float, self->worldScaleX) = self->parent->worldScaleX * self->scaleX; + CONST_CAST(float, self->worldScaleY) = self->parent->worldScaleY * self->scaleY; + } else { + CONST_CAST(float, self->worldScaleX) = self->scaleX; + CONST_CAST(float, self->worldScaleY) = self->scaleY; + } + CONST_CAST(float, self->worldRotation) = + self->data->inheritRotation ? self->parent->worldRotation + self->rotationIK : self->rotationIK; + } else { + CONST_CAST(float, self->worldX) = self->skeleton->flipX ? -self->x : self->x; + CONST_CAST(float, self->worldY) = self->skeleton->flipY != yDown ? -self->y : self->y; + CONST_CAST(float, self->worldScaleX) = self->scaleX; + CONST_CAST(float, self->worldScaleY) = self->scaleY; + CONST_CAST(float, self->worldRotation) = self->rotationIK; + } + radians = self->worldRotation * DEG_RAD; + cosine = COS(radians); + sine = SIN(radians); + if (self->skeleton->flipX) { + CONST_CAST(float, self->m00) = -cosine * self->worldScaleX; + CONST_CAST(float, self->m01) = sine * self->worldScaleY; + } else { + CONST_CAST(float, self->m00) = cosine * self->worldScaleX; + CONST_CAST(float, self->m01) = -sine * self->worldScaleY; + } + if (self->skeleton->flipY != yDown) { + CONST_CAST(float, self->m10) = -sine * self->worldScaleX; + CONST_CAST(float, self->m11) = -cosine * self->worldScaleY; + } else { + CONST_CAST(float, self->m10) = sine * self->worldScaleX; + CONST_CAST(float, self->m11) = cosine * self->worldScaleY; + } +} + +void spBone_setToSetupPose (spBone* self) { + self->x = self->data->x; + self->y = self->data->y; + self->rotation = self->data->rotation; + self->rotationIK = self->rotation; + self->scaleX = self->data->scaleX; + self->scaleY = self->data->scaleY; +} + +void spBone_worldToLocal (spBone* self, float worldX, float worldY, float* localX, float* localY) { + float invDet; + float dx = worldX - self->worldX, dy = worldY - self->worldY; + float m00 = self->m00, m11 = self->m11; + if (self->skeleton->flipX != (self->skeleton->flipY != yDown)) { + m00 *= -1; + m11 *= -1; + } + invDet = 1 / (m00 * m11 - self->m01 * self->m10); + *localX = (dx * m00 * invDet - dy * self->m01 * invDet); + *localY = (dy * m11 * invDet - dx * self->m10 * invDet); +} + +void spBone_localToWorld (spBone* self, float localX, float localY, float* worldX, float* worldY) { + *worldX = localX * self->m00 + localY * self->m01 + self->worldX; + *worldY = localX * self->m10 + localY * self->m11 + self->worldY; +} diff --git a/cocos/editor-support/spine/Bone.cpp b/cocos/editor-support/spine/Bone.cpp deleted file mode 100644 index 61eda10881..0000000000 --- a/cocos/editor-support/spine/Bone.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include - -static int yDown; - -void spBone_setYDown (int value) { - yDown = value; -} - -spBone* spBone_create (spBoneData* data, spBone* parent) { - spBone* self = NEW(spBone); - CONST_CAST(spBoneData*, self->data) = data; - CONST_CAST(spBone*, self->parent) = parent; - spBone_setToSetupPose(self); - return self; -} - -void spBone_dispose (spBone* self) { - FREE(self); -} - -void spBone_setToSetupPose (spBone* self) { - self->x = self->data->x; - self->y = self->data->y; - self->rotation = self->data->rotation; - self->scaleX = self->data->scaleX; - self->scaleY = self->data->scaleY; -} - -void spBone_updateWorldTransform (spBone* self, int flipX, int flipY) { - float radians, cosine, sine; - if (self->parent) { - CONST_CAST(float, self->worldX) = self->x * self->parent->m00 + self->y * self->parent->m01 + self->parent->worldX; - CONST_CAST(float, self->worldY) = self->x * self->parent->m10 + self->y * self->parent->m11 + self->parent->worldY; - if (self->data->inheritScale) { - CONST_CAST(float, self->worldScaleX) = self->parent->worldScaleX * self->scaleX; - CONST_CAST(float, self->worldScaleY) = self->parent->worldScaleY * self->scaleY; - } else { - CONST_CAST(float, self->worldScaleX) = self->scaleX; - CONST_CAST(float, self->worldScaleY) = self->scaleY; - } - CONST_CAST(float, self->worldRotation) = - self->data->inheritRotation ? self->parent->worldRotation + self->rotation : self->rotation; - } else { - CONST_CAST(float, self->worldX) = flipX ? -self->x : self->x; - CONST_CAST(float, self->worldY) = (flipY && flipY != yDown) ? -self->y : self->y; - CONST_CAST(float, self->worldScaleX) = self->scaleX; - CONST_CAST(float, self->worldScaleY) = self->scaleY; - CONST_CAST(float, self->worldRotation) = self->rotation; - } - radians = (float)(self->worldRotation * 3.1415926535897932385 / 180); -#ifdef __STDC_VERSION__ - cosine = cosf(radians); - sine = sinf(radians); -#else - cosine = (float)cos(radians); - sine = (float)sin(radians); -#endif - CONST_CAST(float, self->m00) = cosine * self->worldScaleX; - CONST_CAST(float, self->m10) = sine * self->worldScaleX; - CONST_CAST(float, self->m01) = -sine * self->worldScaleY; - CONST_CAST(float, self->m11) = cosine * self->worldScaleY; - if (flipX) { - CONST_CAST(float, self->m00) = -self->m00; - CONST_CAST(float, self->m01) = -self->m01; - } - if (flipY != yDown) { - CONST_CAST(float, self->m10) = -self->m10; - CONST_CAST(float, self->m11) = -self->m11; - } -} diff --git a/cocos/editor-support/spine/Bone.h b/cocos/editor-support/spine/Bone.h index 844eeebd8d..5e8b1f7bff 100644 --- a/cocos/editor-support/spine/Bone.h +++ b/cocos/editor-support/spine/Bone.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_BONE_H_ @@ -40,12 +37,15 @@ extern "C" { #endif +struct spSkeleton; + typedef struct spBone spBone; struct spBone { spBoneData* const data; + struct spSkeleton* const skeleton; spBone* const parent; float x, y; - float rotation; + float rotation, rotationIK; float scaleX, scaleY; float const m00, m01, worldX; /* a b x */ @@ -57,12 +57,15 @@ struct spBone { void spBone_setYDown (int/*bool*/yDown); /* @param parent May be 0. */ -spBone* spBone_create (spBoneData* data, spBone* parent); +spBone* spBone_create (spBoneData* data, struct spSkeleton* skeleton, spBone* parent); void spBone_dispose (spBone* self); void spBone_setToSetupPose (spBone* self); -void spBone_updateWorldTransform (spBone* self, int/*bool*/flipX, int/*bool*/flipY); +void spBone_updateWorldTransform (spBone* self); + +void spBone_worldToLocal (spBone* self, float worldX, float worldY, float* localX, float* localY); +void spBone_localToWorld (spBone* self, float localX, float localY, float* worldX, float* worldY); #ifdef SPINE_SHORT_NAMES typedef spBone Bone; @@ -71,6 +74,8 @@ typedef spBone Bone; #define Bone_dispose(...) spBone_dispose(__VA_ARGS__) #define Bone_setToSetupPose(...) spBone_setToSetupPose(__VA_ARGS__) #define Bone_updateWorldTransform(...) spBone_updateWorldTransform(__VA_ARGS__) +#define Bone_worldToLocal(...) spBone_worldToLocal(__VA_ARGS__) +#define Bone_localToWorld(...) spBone_localToWorld(__VA_ARGS__) #endif #ifdef __cplusplus diff --git a/cocos/editor-support/spine/BoneData.c b/cocos/editor-support/spine/BoneData.c new file mode 100644 index 0000000000..00a0a88e4f --- /dev/null +++ b/cocos/editor-support/spine/BoneData.c @@ -0,0 +1,48 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +spBoneData* spBoneData_create (const char* name, spBoneData* parent) { + spBoneData* self = NEW(spBoneData); + MALLOC_STR(self->name, name); + CONST_CAST(spBoneData*, self->parent) = parent; + self->scaleX = 1; + self->scaleY = 1; + self->inheritScale = 1; + self->inheritRotation = 1; + return self; +} + +void spBoneData_dispose (spBoneData* self) { + FREE(self->name); + FREE(self); +} diff --git a/cocos/editor-support/spine/BoneData.cpp b/cocos/editor-support/spine/BoneData.cpp deleted file mode 100644 index 8a17348d06..0000000000 --- a/cocos/editor-support/spine/BoneData.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include - -spBoneData* spBoneData_create (const char* name, spBoneData* parent) { - spBoneData* self = NEW(spBoneData); - MALLOC_STR(self->name, name); - CONST_CAST(spBoneData*, self->parent) = parent; - self->scaleX = 1; - self->scaleY = 1; - self->inheritScale = 1; - self->inheritRotation = 1; - return self; -} - -void spBoneData_dispose (spBoneData* self) { - FREE(self->name); - FREE(self); -} diff --git a/cocos/editor-support/spine/BoneData.h b/cocos/editor-support/spine/BoneData.h index 1af8b56c47..77cb90937b 100644 --- a/cocos/editor-support/spine/BoneData.h +++ b/cocos/editor-support/spine/BoneData.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_BONEDATA_H_ diff --git a/cocos/editor-support/spine/BoundingBoxAttachment.c b/cocos/editor-support/spine/BoundingBoxAttachment.c new file mode 100644 index 0000000000..6df38ed32b --- /dev/null +++ b/cocos/editor-support/spine/BoundingBoxAttachment.c @@ -0,0 +1,60 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +void _spBoundingBoxAttachment_dispose (spAttachment* attachment) { + spBoundingBoxAttachment* self = SUB_CAST(spBoundingBoxAttachment, attachment); + + _spAttachment_deinit(attachment); + + FREE(self->vertices); + FREE(self); +} + +spBoundingBoxAttachment* spBoundingBoxAttachment_create (const char* name) { + spBoundingBoxAttachment* self = NEW(spBoundingBoxAttachment); + _spAttachment_init(SUPER(self), name, SP_ATTACHMENT_BOUNDING_BOX, _spBoundingBoxAttachment_dispose); + return self; +} + +void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spBone* bone, float* worldVertices) { + int i; + float px, py; + float* vertices = self->vertices; + float x = bone->skeleton->x + bone->worldX, y = bone->skeleton->y + bone->worldY; + for (i = 0; i < self->verticesCount; i += 2) { + px = vertices[i]; + py = vertices[i + 1]; + worldVertices[i] = px * bone->m00 + py * bone->m01 + x; + worldVertices[i + 1] = px * bone->m10 + py * bone->m11 + y; + } +} diff --git a/cocos/editor-support/spine/BoundingBoxAttachment.cpp b/cocos/editor-support/spine/BoundingBoxAttachment.cpp deleted file mode 100644 index f0f47f5935..0000000000 --- a/cocos/editor-support/spine/BoundingBoxAttachment.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include - -void _spBoundingBoxAttachment_dispose (spAttachment* attachment) { - spBoundingBoxAttachment* self = SUB_CAST(spBoundingBoxAttachment, attachment); - - _spAttachment_deinit(attachment); - - FREE(self->vertices); - FREE(self); -} - -spBoundingBoxAttachment* spBoundingBoxAttachment_create (const char* name) { - spBoundingBoxAttachment* self = NEW(spBoundingBoxAttachment); - _spAttachment_init(SUPER(self), name, ATTACHMENT_BOUNDING_BOX, _spBoundingBoxAttachment_dispose); - return self; -} - -void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, float x, float y, spBone* bone, float* worldVertices) { - int i; - float px, py; - float* vertices = self->vertices; - - x += bone->worldX; - y += bone->worldY; - for (i = 0; i < self->verticesCount; i += 2) { - px = vertices[i]; - py = vertices[i + 1]; - worldVertices[i] = px * bone->m00 + py * bone->m01 + x; - worldVertices[i + 1] = px * bone->m10 + py * bone->m11 + y; - } -} diff --git a/cocos/editor-support/spine/BoundingBoxAttachment.h b/cocos/editor-support/spine/BoundingBoxAttachment.h index 606089389b..e67db6c77a 100644 --- a/cocos/editor-support/spine/BoundingBoxAttachment.h +++ b/cocos/editor-support/spine/BoundingBoxAttachment.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_BOUNDINGBOXATTACHMENT_H_ @@ -50,7 +47,7 @@ struct spBoundingBoxAttachment { }; spBoundingBoxAttachment* spBoundingBoxAttachment_create (const char* name); -void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, float x, float y, spBone* bone, float* vertices); +void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spBone* bone, float* vertices); #ifdef SPINE_SHORT_NAMES typedef spBoundingBoxAttachment BoundingBoxAttachment; diff --git a/cocos/editor-support/spine/CCSkeleton.cpp b/cocos/editor-support/spine/CCSkeleton.cpp deleted file mode 100644 index 8a83795284..0000000000 --- a/cocos/editor-support/spine/CCSkeleton.cpp +++ /dev/null @@ -1,353 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include - -USING_NS_CC; -using std::min; -using std::max; - -namespace spine { - -Skeleton* Skeleton::createWithData (spSkeletonData* skeletonData, bool isOwnsSkeletonData) { - Skeleton* node = new (std::nothrow) Skeleton(skeletonData, isOwnsSkeletonData); - node->autorelease(); - return node; -} - -Skeleton* Skeleton::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) { - Skeleton* node = new (std::nothrow) Skeleton(skeletonDataFile, atlas, scale); - node->autorelease(); - return node; -} - -Skeleton* Skeleton::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) { - Skeleton* node = new (std::nothrow) Skeleton(skeletonDataFile, atlasFile, scale); - node->autorelease(); - return node; -} - -void Skeleton::initialize () { - atlas = 0; - debugSlots = false; - debugBones = false; - timeScale = 1; - - blendFunc.src = BlendFunc::ALPHA_PREMULTIPLIED.src; - blendFunc.dst = BlendFunc::ALPHA_PREMULTIPLIED.dst; - - setOpacityModifyRGB(true); - - setGLProgramState(GLProgramState::getOrCreateWithGLProgramName(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR)); -} - -void Skeleton::setSkeletonData (spSkeletonData *skeletonData, bool isOwnsSkeletonData) { - skeleton = spSkeleton_create(skeletonData); - rootBone = skeleton->bones[0]; - this->ownsSkeletonData = isOwnsSkeletonData; -} - -Skeleton::Skeleton () { - initialize(); -} - -Skeleton::Skeleton (spSkeletonData *skeletonData, bool isOwnsSkeletonData) { - initialize(); - - setSkeletonData(skeletonData, isOwnsSkeletonData); -} - -Skeleton::Skeleton (const char* skeletonDataFile, spAtlas* aAtlas, float scale) { - initialize(); - - spSkeletonJson* json = spSkeletonJson_create(aAtlas); - json->scale = scale == 0 ? (1 / Director::getInstance()->getContentScaleFactor()) : scale; - spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile); - CCAssert(skeletonData, json->error ? json->error : "Error reading skeleton data."); - spSkeletonJson_dispose(json); - - setSkeletonData(skeletonData, true); -} - -Skeleton::Skeleton (const char* skeletonDataFile, const char* atlasFile, float scale) { - initialize(); - - atlas = spAtlas_readAtlasFile(atlasFile); - CCAssert(atlas, "Error reading atlas file."); - - spSkeletonJson* json = spSkeletonJson_create(atlas); - json->scale = scale == 0 ? (1 / Director::getInstance()->getContentScaleFactor()) : scale; - spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile); - CCAssert(skeletonData, json->error ? json->error : "Error reading skeleton data file."); - spSkeletonJson_dispose(json); - - setSkeletonData(skeletonData, true); -} - -Skeleton::~Skeleton () { - if (ownsSkeletonData) spSkeletonData_dispose(skeleton->data); - if (atlas) spAtlas_dispose(atlas); - spSkeleton_dispose(skeleton); -} - -void Skeleton::update (float deltaTime) { - spSkeleton_update(skeleton, deltaTime * timeScale); -} - -void Skeleton::draw(cocos2d::Renderer *renderer, const Mat4 &transform, uint32_t flags) -{ - - _customCommand.init(_globalZOrder); - _customCommand.func = CC_CALLBACK_0(Skeleton::onDraw, this, transform, flags); - renderer->addCommand(&_customCommand); -} - -void Skeleton::onDraw(const Mat4 &transform, uint32_t flags) -{ - getGLProgram()->use(); - getGLProgram()->setUniformsForBuiltins(transform); - - GL::blendFunc(blendFunc.src, blendFunc.dst); - Color3B color = getColor(); - skeleton->r = color.r / (float)255; - skeleton->g = color.g / (float)255; - skeleton->b = color.b / (float)255; - skeleton->a = getOpacity() / (float)255; - if (premultipliedAlpha) { - skeleton->r *= skeleton->a; - skeleton->g *= skeleton->a; - skeleton->b *= skeleton->a; - } - - int additive = 0; - TextureAtlas* textureAtlas = 0; - V3F_C4B_T2F_Quad quad; - quad.tl.vertices.z = 0; - quad.tr.vertices.z = 0; - quad.bl.vertices.z = 0; - quad.br.vertices.z = 0; - for (int i = 0, n = skeleton->slotCount; i < n; i++) { - spSlot* slot = skeleton->drawOrder[i]; - if (!slot->attachment || slot->attachment->type != ATTACHMENT_REGION) continue; - spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - TextureAtlas* regionTextureAtlas = getTextureAtlas(attachment); - - if (slot->data->additiveBlending != additive) { - if (textureAtlas) { - textureAtlas->drawQuads(); - textureAtlas->removeAllQuads(); - } - additive = !additive; - GL::blendFunc(blendFunc.src, additive ? GL_ONE : blendFunc.dst); - } else if (regionTextureAtlas != textureAtlas && textureAtlas) { - textureAtlas->drawQuads(); - textureAtlas->removeAllQuads(); - } - textureAtlas = regionTextureAtlas; - setFittedBlendingFunc(textureAtlas); - - ssize_t quadCount = textureAtlas->getTotalQuads(); - if (textureAtlas->getCapacity() == quadCount) { - textureAtlas->drawQuads(); - textureAtlas->removeAllQuads(); - if (!textureAtlas->resizeCapacity(textureAtlas->getCapacity() * 2)) return; - } - - spRegionAttachment_updateQuad(attachment, slot, &quad, premultipliedAlpha); - textureAtlas->updateQuad(&quad, quadCount); - } - if (textureAtlas) { - textureAtlas->drawQuads(); - textureAtlas->removeAllQuads(); - } - - if(debugBones || debugSlots) { - Director* director = Director::getInstance(); - CCASSERT(nullptr != director, "Director is null when seting matrix stack"); - director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); - director->loadMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW, transform); - - if (debugSlots) { - // Slots. - DrawPrimitives::setDrawColor4B(0, 0, 255, 255); - glLineWidth(1); - Vec2 points[4]; - V3F_C4B_T2F_Quad tmpQuad; - for (int i = 0, n = skeleton->slotCount; i < n; i++) { - spSlot* slot = skeleton->drawOrder[i]; - if (!slot->attachment || slot->attachment->type != ATTACHMENT_REGION) continue; - spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_updateQuad(attachment, slot, &tmpQuad); - points[0] = Vec2(tmpQuad.bl.vertices.x, tmpQuad.bl.vertices.y); - points[1] = Vec2(tmpQuad.br.vertices.x, tmpQuad.br.vertices.y); - points[2] = Vec2(tmpQuad.tr.vertices.x, tmpQuad.tr.vertices.y); - points[3] = Vec2(tmpQuad.tl.vertices.x, tmpQuad.tl.vertices.y); - DrawPrimitives::drawPoly(points, 4, true); - } - } - if (debugBones) { - // Bone lengths. - glLineWidth(2); - DrawPrimitives::setDrawColor4B(255, 0, 0, 255); - for (int i = 0, n = skeleton->boneCount; i < n; i++) { - spBone *bone = skeleton->bones[i]; - float x = bone->data->length * bone->m00 + bone->worldX; - float y = bone->data->length * bone->m10 + bone->worldY; - DrawPrimitives::drawLine(Vec2(bone->worldX, bone->worldY), Vec2(x, y)); - } - // Bone origins. - DrawPrimitives::setPointSize(4); - DrawPrimitives::setDrawColor4B(0, 0, 255, 255); // Root bone is blue. - for (int i = 0, n = skeleton->boneCount; i < n; i++) { - spBone *bone = skeleton->bones[i]; - DrawPrimitives::drawPoint(Vec2(bone->worldX, bone->worldY)); - if (i == 0) DrawPrimitives::setDrawColor4B(0, 255, 0, 255); - } - } - - director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); - } -} - -TextureAtlas* Skeleton::getTextureAtlas (spRegionAttachment* regionAttachment) const { - return (TextureAtlas*)((spAtlasRegion*)regionAttachment->rendererObject)->page->rendererObject; -} - -Rect Skeleton::getBoundingBox () const { - float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN; - float scaleX = getScaleX(); - float scaleY = getScaleY(); - float vertices[8]; - for (int i = 0; i < skeleton->slotCount; ++i) { - spSlot* slot = skeleton->slots[i]; - if (!slot->attachment || slot->attachment->type != ATTACHMENT_REGION) continue; - spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, vertices); - minX = min(minX, vertices[VERTEX_X1] * scaleX); - minY = min(minY, vertices[VERTEX_Y1] * scaleY); - maxX = max(maxX, vertices[VERTEX_X1] * scaleX); - maxY = max(maxY, vertices[VERTEX_Y1] * scaleY); - minX = min(minX, vertices[VERTEX_X4] * scaleX); - minY = min(minY, vertices[VERTEX_Y4] * scaleY); - maxX = max(maxX, vertices[VERTEX_X4] * scaleX); - maxY = max(maxY, vertices[VERTEX_Y4] * scaleY); - minX = min(minX, vertices[VERTEX_X2] * scaleX); - minY = min(minY, vertices[VERTEX_Y2] * scaleY); - maxX = max(maxX, vertices[VERTEX_X2] * scaleX); - maxY = max(maxY, vertices[VERTEX_Y2] * scaleY); - minX = min(minX, vertices[VERTEX_X3] * scaleX); - minY = min(minY, vertices[VERTEX_Y3] * scaleY); - maxX = max(maxX, vertices[VERTEX_X3] * scaleX); - maxY = max(maxY, vertices[VERTEX_Y3] * scaleY); - } - Vec2 position = getPosition(); - return Rect(position.x + minX, position.y + minY, maxX - minX, maxY - minY); -} - -void Skeleton::onEnter() { -#if CC_ENABLE_SCRIPT_BINDING - if (_scriptType == kScriptTypeJavascript) - { - if (ScriptEngineManager::sendNodeEventToJSExtended(this, kNodeOnEnter)) - return; - } -#endif - - Node::onEnter(); - scheduleUpdate(); -} - -void Skeleton::onExit() { - Node::onExit(); - unscheduleUpdate(); -} - -// --- Convenience methods for Skeleton_* functions. - -void Skeleton::updateWorldTransform () { - spSkeleton_updateWorldTransform(skeleton); -} - -void Skeleton::setToSetupPose () { - spSkeleton_setToSetupPose(skeleton); -} -void Skeleton::setBonesToSetupPose () { - spSkeleton_setBonesToSetupPose(skeleton); -} -void Skeleton::setSlotsToSetupPose () { - spSkeleton_setSlotsToSetupPose(skeleton); -} - -spBone* Skeleton::findBone (const char* boneName) const { - return spSkeleton_findBone(skeleton, boneName); -} - -spSlot* Skeleton::findSlot (const char* slotName) const { - return spSkeleton_findSlot(skeleton, slotName); -} - -bool Skeleton::setSkin (const char* skinName) { - return spSkeleton_setSkinByName(skeleton, skinName) ? true : false; -} - -spAttachment* Skeleton::getAttachment (const char* slotName, const char* attachmentName) const { - return spSkeleton_getAttachmentForSlotName(skeleton, slotName, attachmentName); -} -bool Skeleton::setAttachment (const char* slotName, const char* attachmentName) { - return spSkeleton_setAttachment(skeleton, slotName, attachmentName) ? true : false; -} - -// --- CCBlendProtocol - -const cocos2d::BlendFunc& Skeleton::getBlendFunc () const { - return blendFunc; -} - -void Skeleton::setBlendFunc (const cocos2d::BlendFunc& aBlendFunc) { - this->blendFunc = aBlendFunc; -} - -void Skeleton::setFittedBlendingFunc(cocos2d::TextureAtlas * nextRenderedTexture) -{ - if(nextRenderedTexture->getTexture() && nextRenderedTexture->getTexture()->hasPremultipliedAlpha()) - { - GL::blendFunc(BlendFunc::ALPHA_PREMULTIPLIED.src, BlendFunc::ALPHA_PREMULTIPLIED.dst); - } - else - { - GL::blendFunc(BlendFunc::ALPHA_NON_PREMULTIPLIED.src, BlendFunc::ALPHA_NON_PREMULTIPLIED.dst); - } -} - -} diff --git a/cocos/editor-support/spine/CCSkeleton.h b/cocos/editor-support/spine/CCSkeleton.h deleted file mode 100644 index fa468e9880..0000000000 --- a/cocos/editor-support/spine/CCSkeleton.h +++ /dev/null @@ -1,119 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#ifndef SPINE_CCSKELETON_H_ -#define SPINE_CCSKELETON_H_ - -#include - -#include "2d/CCNode.h" -#include "base/CCProtocols.h" -#include "renderer/CCTextureAtlas.h" -#include "renderer/CCCustomCommand.h" - -namespace spine { - -/** -Draws a skeleton. -*/ -class Skeleton: public cocos2d::Node, public cocos2d::BlendProtocol { -public: - spSkeleton* skeleton; - spBone* rootBone; - float timeScale; - bool debugSlots; - bool debugBones; - bool premultipliedAlpha; - cocos2d::BlendFunc blendFunc; - - static Skeleton* createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData = false); - static Skeleton* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); - static Skeleton* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0); - - Skeleton (spSkeletonData* skeletonData, bool ownsSkeletonData = false); - Skeleton (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); - Skeleton (const char* skeletonDataFile, const char* atlasFile, float scale = 0); - - virtual ~Skeleton (); - - virtual void update (float deltaTime) override; - virtual void draw(cocos2d::Renderer *renderer, const cocos2d::Mat4 &transform, uint32_t flags) override; - void onDraw(const cocos2d::Mat4 &transform, uint32_t flags); - void onEnter() override; - void onExit() override; - virtual cocos2d::Rect getBoundingBox () const override; - - // --- Convenience methods for common Skeleton_* functions. - void updateWorldTransform (); - - void setToSetupPose (); - void setBonesToSetupPose (); - void setSlotsToSetupPose (); - - /* Returns 0 if the bone was not found. */ - spBone* findBone (const char* boneName) const; - /* Returns 0 if the slot was not found. */ - spSlot* findSlot (const char* slotName) const; - - /* Sets the skin used to look up attachments not found in the SkeletonData defaultSkin. Attachments from the new skin are - * attached if the corresponding attachment from the old skin was attached. Returns false if the skin was not found. - * @param skin May be 0.*/ - bool setSkin (const char* skinName); - - /* Returns 0 if the slot or attachment was not found. */ - spAttachment* getAttachment (const char* slotName, const char* attachmentName) const; - /* Returns false if the slot or attachment was not found. */ - bool setAttachment (const char* slotName, const char* attachmentName); - - // --- CCBlendProtocol - virtual const cocos2d::BlendFunc& getBlendFunc() const override; - virtual void setBlendFunc(const cocos2d::BlendFunc& func) override; - -protected: - Skeleton (); - void setSkeletonData (spSkeletonData* skeletonData, bool ownsSkeletonData); - virtual cocos2d::TextureAtlas* getTextureAtlas (spRegionAttachment* regionAttachment) const; - -private: - bool ownsSkeletonData; - spAtlas* atlas; - void initialize (); - // Util function that setting blend-function by nextRenderedTexture's premultiplied flag - void setFittedBlendingFunc(cocos2d::TextureAtlas * nextRenderedTexture); - - cocos2d::CustomCommand _customCommand; -}; - -} - -#endif /* SPINE_CCSKELETON_H_ */ diff --git a/cocos/editor-support/spine/CCSkeletonAnimation.cpp b/cocos/editor-support/spine/CCSkeletonAnimation.cpp deleted file mode 100644 index e3f5b170fa..0000000000 --- a/cocos/editor-support/spine/CCSkeletonAnimation.cpp +++ /dev/null @@ -1,161 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include -#include - -USING_NS_CC; -using std::min; -using std::max; -using std::vector; - -namespace spine { - -static void callback (spAnimationState* state, int trackIndex, spEventType type, spEvent* event, int loopCount) { - ((SkeletonAnimation*)state->context)->onAnimationStateEvent(trackIndex, type, event, loopCount); -} - -SkeletonAnimation* SkeletonAnimation::createWithData (spSkeletonData* skeletonData) { - SkeletonAnimation* node = new (std::nothrow) SkeletonAnimation(skeletonData); - node->autorelease(); - return node; -} - -SkeletonAnimation* SkeletonAnimation::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) { - SkeletonAnimation* node = new (std::nothrow) SkeletonAnimation(skeletonDataFile, atlas, scale); - node->autorelease(); - return node; -} - -SkeletonAnimation* SkeletonAnimation::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) { - SkeletonAnimation* node = new (std::nothrow) SkeletonAnimation(skeletonDataFile, atlasFile, scale); - node->autorelease(); - return node; -} - -void SkeletonAnimation::initialize () { - listenerInstance = 0; - listenerMethod = 0; - - ownsAnimationStateData = true; - state = spAnimationState_create(spAnimationStateData_create(skeleton->data)); - state->context = this; - state->listener = callback; -} - -SkeletonAnimation::SkeletonAnimation (spSkeletonData *skeletonData) - : Skeleton(skeletonData) { - initialize(); -} - -SkeletonAnimation::SkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale) - : Skeleton(skeletonDataFile, atlas, scale) { - initialize(); -} - -SkeletonAnimation::SkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale) - : Skeleton(skeletonDataFile, atlasFile, scale) { - initialize(); -} - -SkeletonAnimation::~SkeletonAnimation () { - if (ownsAnimationStateData) spAnimationStateData_dispose(state->data); - spAnimationState_dispose(state); -} - -void SkeletonAnimation::update (float deltaTime) { - super::update(deltaTime); - - deltaTime *= timeScale; - spAnimationState_update(state, deltaTime); - spAnimationState_apply(state, skeleton); - spSkeleton_updateWorldTransform(skeleton); -} - -void SkeletonAnimation::setAnimationStateData (spAnimationStateData* stateData) { - CCAssert(stateData, "stateData cannot be null."); - - if (ownsAnimationStateData) spAnimationStateData_dispose(state->data); - spAnimationState_dispose(state); - - ownsAnimationStateData = false; - state = spAnimationState_create(stateData); - state->context = this; - state->listener = callback; -} - -void SkeletonAnimation::setMix (const char* fromAnimation, const char* toAnimation, float duration) { - spAnimationStateData_setMixByName(state->data, fromAnimation, toAnimation, duration); -} - -void SkeletonAnimation::setAnimationListener (Ref* instance, SEL_AnimationStateEvent method) { - listenerInstance = instance; - listenerMethod = method; -} - -spTrackEntry* SkeletonAnimation::setAnimation (int trackIndex, const char* name, bool loop) { - spAnimation* animation = spSkeletonData_findAnimation(skeleton->data, name); - if (!animation) { - log("Spine: Animation not found: %s", name); - return 0; - } - return spAnimationState_setAnimation(state, trackIndex, animation, loop); -} - -spTrackEntry* SkeletonAnimation::addAnimation (int trackIndex, const char* name, bool loop, float delay) { - spAnimation* animation = spSkeletonData_findAnimation(skeleton->data, name); - if (!animation) { - log("Spine: Animation not found: %s", name); - return 0; - } - return spAnimationState_addAnimation(state, trackIndex, animation, loop, delay); -} - -spTrackEntry* SkeletonAnimation::getCurrent (int trackIndex) { - return spAnimationState_getCurrent(state, trackIndex); -} - -void SkeletonAnimation::clearTracks () { - spAnimationState_clearTracks(state); -} - -void SkeletonAnimation::clearTrack (int trackIndex) { - spAnimationState_clearTrack(state, trackIndex); -} - -void SkeletonAnimation::onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount) { - if (listenerInstance) (listenerInstance->*listenerMethod)(this, trackIndex, type, event, loopCount); -} - -} diff --git a/cocos/editor-support/spine/CCSkeletonAnimation.h b/cocos/editor-support/spine/CCSkeletonAnimation.h deleted file mode 100644 index 295cd74095..0000000000 --- a/cocos/editor-support/spine/CCSkeletonAnimation.h +++ /dev/null @@ -1,90 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#ifndef SPINE_CCSKELETONANIMATION_H_ -#define SPINE_CCSKELETONANIMATION_H_ - -#include -#include - -namespace spine { - -class SkeletonAnimation; -typedef void (cocos2d::Ref::*SEL_AnimationStateEvent)(spine::SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount); -#define animationStateEvent_selector(_SELECTOR) (SEL_AnimationStateEvent)(&_SELECTOR) - -/** Draws an animated skeleton, providing an AnimationState for applying one or more animations and queuing animations to be - * played later. */ -class SkeletonAnimation: public Skeleton { -public: - spAnimationState* state; - - static SkeletonAnimation* createWithData (spSkeletonData* skeletonData); - static SkeletonAnimation* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); - static SkeletonAnimation* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0); - - SkeletonAnimation (spSkeletonData* skeletonData); - SkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); - SkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale = 0); - - virtual ~SkeletonAnimation (); - - virtual void update (float deltaTime); - - void setAnimationStateData (spAnimationStateData* stateData); - void setMix (const char* fromAnimation, const char* toAnimation, float duration); - - void setAnimationListener (cocos2d::Ref* instance, SEL_AnimationStateEvent method); - spTrackEntry* setAnimation (int trackIndex, const char* name, bool loop); - spTrackEntry* addAnimation (int trackIndex, const char* name, bool loop, float delay = 0); - spTrackEntry* getCurrent (int trackIndex = 0); - void clearTracks (); - void clearTrack (int trackIndex = 0); - - virtual void onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount); - -protected: - SkeletonAnimation (); - -private: - typedef Skeleton super; - cocos2d::Ref* listenerInstance; - SEL_AnimationStateEvent listenerMethod; - bool ownsAnimationStateData; - - void initialize (); -}; - -} - -#endif /* SPINE_CCSKELETONANIMATION_H_ */ diff --git a/cocos/editor-support/spine/CMakeLists.txt b/cocos/editor-support/spine/CMakeLists.txt index 2e9c3b75dd..956d6836b4 100644 --- a/cocos/editor-support/spine/CMakeLists.txt +++ b/cocos/editor-support/spine/CMakeLists.txt @@ -1,32 +1,36 @@ set(COCOS_SPINE_SRC - editor-support/spine/Animation.cpp - editor-support/spine/AnimationState.cpp - editor-support/spine/AnimationStateData.cpp - editor-support/spine/Atlas.cpp - editor-support/spine/AtlasAttachmentLoader.cpp - editor-support/spine/Attachment.cpp - editor-support/spine/AttachmentLoader.cpp - editor-support/spine/Bone.cpp - editor-support/spine/BoneData.cpp - editor-support/spine/BoundingBoxAttachment.cpp - editor-support/spine/CCSkeleton.cpp - editor-support/spine/CCSkeletonAnimation.cpp - editor-support/spine/Event.cpp - editor-support/spine/EventData.cpp - editor-support/spine/Json.cpp - editor-support/spine/RegionAttachment.cpp - editor-support/spine/Skeleton.cpp - editor-support/spine/SkeletonBounds.cpp - editor-support/spine/SkeletonData.cpp - editor-support/spine/SkeletonJson.cpp - editor-support/spine/Skin.cpp - editor-support/spine/Slot.cpp - editor-support/spine/SlotData.cpp - editor-support/spine/extension.cpp + editor-support/spine/Animation.c + editor-support/spine/AnimationState.c + editor-support/spine/AnimationStateData.c + editor-support/spine/Atlas.c + editor-support/spine/AtlasAttachmentLoader.c + editor-support/spine/Attachment.c + editor-support/spine/AttachmentLoader.c + editor-support/spine/Bone.c + editor-support/spine/BoneData.c + editor-support/spine/BoundingBoxAttachment.c + editor-support/spine/Event.c + editor-support/spine/EventData.c + editor-support/spine/extension.c + editor-support/spine/IkConstraint.c + editor-support/spine/IkConstraintData.c + editor-support/spine/Json.c + editor-support/spine/MeshAttachment.c + editor-support/spine/PolygonBatch.cpp + editor-support/spine/RegionAttachment.c + editor-support/spine/Skeleton.c + editor-support/spine/SkeletonAnimation.cpp + editor-support/spine/SkeletonBounds.c + editor-support/spine/SkeletonData.c + editor-support/spine/SkeletonJson.c + editor-support/spine/SkeletonRenderer.cpp + editor-support/spine/Skin.c + editor-support/spine/SkinnedMeshAttachment.c + editor-support/spine/Slot.c + editor-support/spine/SlotData.c editor-support/spine/spine-cocos2dx.cpp - ) include_directories( editor-support ) diff --git a/cocos/editor-support/spine/Event.c b/cocos/editor-support/spine/Event.c new file mode 100644 index 0000000000..bff59b8669 --- /dev/null +++ b/cocos/editor-support/spine/Event.c @@ -0,0 +1,43 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +spEvent* spEvent_create (spEventData* data) { + spEvent* self = NEW(spEvent); + CONST_CAST(spEventData*, self->data) = data; + return self; +} + +void spEvent_dispose (spEvent* self) { + FREE(self->stringValue); + FREE(self); +} diff --git a/cocos/editor-support/spine/Event.cpp b/cocos/editor-support/spine/Event.cpp deleted file mode 100644 index 0f77b6506c..0000000000 --- a/cocos/editor-support/spine/Event.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include - -spEvent* spEvent_create (spEventData* data) { - spEvent* self = NEW(spEvent); - CONST_CAST(spEventData*, self->data) = data; - return self; -} - -void spEvent_dispose (spEvent* self) { - FREE(self->stringValue); - FREE(self); -} diff --git a/cocos/editor-support/spine/Event.h b/cocos/editor-support/spine/Event.h index 147457fe4f..dabdd24a0c 100644 --- a/cocos/editor-support/spine/Event.h +++ b/cocos/editor-support/spine/Event.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_EVENT_H_ diff --git a/cocos/editor-support/spine/EventData.c b/cocos/editor-support/spine/EventData.c new file mode 100644 index 0000000000..0567a95b9f --- /dev/null +++ b/cocos/editor-support/spine/EventData.c @@ -0,0 +1,44 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +spEventData* spEventData_create (const char* name) { + spEventData* self = NEW(spEventData); + MALLOC_STR(self->name, name); + return self; +} + +void spEventData_dispose (spEventData* self) { + FREE(self->stringValue); + FREE(self->name); + FREE(self); +} diff --git a/cocos/editor-support/spine/EventData.cpp b/cocos/editor-support/spine/EventData.cpp deleted file mode 100644 index 85d3044107..0000000000 --- a/cocos/editor-support/spine/EventData.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include - -spEventData* spEventData_create (const char* name) { - spEventData* self = NEW(spEventData); - MALLOC_STR(self->name, name); - return self; -} - -void spEventData_dispose (spEventData* self) { - FREE(self->stringValue); - FREE(self->name); - FREE(self); -} diff --git a/cocos/editor-support/spine/EventData.h b/cocos/editor-support/spine/EventData.h index 3672de7b46..bbbb65462e 100644 --- a/cocos/editor-support/spine/EventData.h +++ b/cocos/editor-support/spine/EventData.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_EVENTDATA_H_ diff --git a/cocos/editor-support/spine/IkConstraint.c b/cocos/editor-support/spine/IkConstraint.c new file mode 100644 index 0000000000..d23ada807b --- /dev/null +++ b/cocos/editor-support/spine/IkConstraint.c @@ -0,0 +1,133 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include +#include + +spIkConstraint* spIkConstraint_create (spIkConstraintData* data, const spSkeleton* skeleton) { + int i; + + spIkConstraint* self = NEW(spIkConstraint); + CONST_CAST(spIkConstraintData*, self->data) = data; + self->bendDirection = data->bendDirection; + self->mix = data->mix; + + self->bonesCount = self->data->bonesCount; + self->bones = MALLOC(spBone*, self->bonesCount); + for (i = 0; i < self->bonesCount; ++i) + self->bones[i] = spSkeleton_findBone(skeleton, self->data->bones[i]->name); + self->target = spSkeleton_findBone(skeleton, self->data->target->name); + + return self; +} + +void spIkConstraint_dispose (spIkConstraint* self) { + FREE(self->bones); + FREE(self); +} + +void spIkConstraint_apply (spIkConstraint* self) { + switch (self->bonesCount) { + case 1: + spIkConstraint_apply1(self->bones[0], self->target->worldX, self->target->worldY, self->mix); + break; + case 2: + spIkConstraint_apply2(self->bones[0], self->bones[1], self->target->worldX, self->target->worldY, self->bendDirection, + self->mix); + break; + } +} + +void spIkConstraint_apply1 (spBone* bone, float targetX, float targetY, float alpha) { + float parentRotation = (!bone->data->inheritRotation || !bone->parent) ? 0 : bone->parent->worldRotation; + float rotation = bone->rotation; + float rotationIK = ATAN2(targetY - bone->worldY, targetX - bone->worldX) * RAD_DEG - parentRotation; + bone->rotationIK = rotation + (rotationIK - rotation) * alpha; +} + +void spIkConstraint_apply2 (spBone* parent, spBone* child, float targetX, float targetY, int bendDirection, float alpha) { + float positionX, positionY, childX, childY, offset, len1, len2, cosDenom, cos, childAngle, adjacent, opposite, parentAngle, rotation; + spBone* parentParent; + float childRotation = child->rotation, parentRotation = parent->rotation; + if (alpha == 0) { + child->rotationIK = childRotation; + parent->rotationIK = parentRotation; + return; + } + parentParent = parent->parent; + if (parentParent) { + spBone_worldToLocal(parentParent, targetX, targetY, &positionX, &positionY); + targetX = (positionX - parent->x) * parentParent->worldScaleX; + targetY = (positionY - parent->y) * parentParent->worldScaleY; + } else { + targetX -= parent->x; + targetY -= parent->y; + } + if (child->parent == parent) { + positionX = child->x; + positionY = child->y; + } else { + spBone_localToWorld(child->parent, child->x, child->y, &positionX, &positionY); + spBone_worldToLocal(parent, positionX, positionY, &positionX, &positionY); + } + childX = positionX * parent->worldScaleX; + childY = positionY * parent->worldScaleY; + offset = ATAN2(childY, childX); + len1 = SQRT(childX * childX + childY * childY); + len2 = child->data->length * child->worldScaleX; + /* Based on code by Ryan Juckett with permission: Copyright (c) 2008-2009 Ryan Juckett, http://www.ryanjuckett.com/ */ + cosDenom = 2 * len1 * len2; + if (cosDenom < 0.0001f) { + child->rotationIK = childRotation + (ATAN2(targetY, targetX) * RAD_DEG - parentRotation - childRotation) * alpha; + return; + } + cos = (targetX * targetX + targetY * targetY - len1 * len1 - len2 * len2) / cosDenom; + if (cos < -1) + cos = -1; + else if (cos > 1) /**/ + cos = 1; + childAngle = ACOS(cos) * bendDirection; + adjacent = len1 + len2 * cos; + opposite = len2 * SIN(childAngle); + parentAngle = ATAN2(targetY * adjacent - targetX * opposite, targetX * adjacent + targetY * opposite); + rotation = (parentAngle - offset) * RAD_DEG - parentRotation; + if (rotation > 180) + rotation -= 360; + else if (rotation < -180) /**/ + rotation += 360; + parent->rotationIK = parentRotation + rotation * alpha; + rotation = (childAngle + offset) * RAD_DEG - childRotation; + if (rotation > 180) + rotation -= 360; + else if (rotation < -180) /**/ + rotation += 360; + child->rotationIK = childRotation + (rotation + parent->worldRotation - child->parent->worldRotation) * alpha; +} diff --git a/cocos/editor-support/spine/IkConstraint.h b/cocos/editor-support/spine/IkConstraint.h new file mode 100644 index 0000000000..b5cd89b599 --- /dev/null +++ b/cocos/editor-support/spine/IkConstraint.h @@ -0,0 +1,73 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#ifndef SPINE_IKCONSTRAINT_H_ +#define SPINE_IKCONSTRAINT_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct spSkeleton; + +typedef struct spIkConstraint spIkConstraint; +struct spIkConstraint { + spIkConstraintData* const data; + + int bonesCount; + spBone** bones; + + spBone* target; + int bendDirection; + float mix; +}; + +spIkConstraint* spIkConstraint_create (spIkConstraintData* data, const struct spSkeleton* skeleton); +void spIkConstraint_dispose (spIkConstraint* self); + +void spIkConstraint_apply (spIkConstraint* self); + +void spIkConstraint_apply1 (spBone* bone, float targetX, float targetY, float alpha); +void spIkConstraint_apply2 (spBone* parent, spBone* child, float targetX, float targetY, int bendDirection, float alpha); + +#ifdef SPINE_SHORT_NAMES +typedef spIkConstraint IkConstraint; +#define IkConstraint_create(...) spIkConstraint_create(__VA_ARGS__) +#define IkConstraint_dispose(...) spIkConstraint_dispose(__VA_ARGS__) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* SPINE_IKCONSTRAINT_H_ */ diff --git a/cocos/editor-support/spine/IkConstraintData.c b/cocos/editor-support/spine/IkConstraintData.c new file mode 100644 index 0000000000..f25b6eb30b --- /dev/null +++ b/cocos/editor-support/spine/IkConstraintData.c @@ -0,0 +1,46 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +spIkConstraintData* spIkConstraintData_create (const char* name) { + spIkConstraintData* self = NEW(spIkConstraintData); + MALLOC_STR(self->name, name); + self->bendDirection = 1; + self->mix = 1; + return self; +} + +void spIkConstraintData_dispose (spIkConstraintData* self) { + FREE(self->name); + FREE(self->bones); + FREE(self); +} diff --git a/cocos/editor-support/spine/IkConstraintData.h b/cocos/editor-support/spine/IkConstraintData.h new file mode 100644 index 0000000000..7cacd369dc --- /dev/null +++ b/cocos/editor-support/spine/IkConstraintData.h @@ -0,0 +1,65 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#ifndef SPINE_IKCONSTRAINTDATA_H_ +#define SPINE_IKCONSTRAINTDATA_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct spIkConstraintData spIkConstraintData; +struct spIkConstraintData { + const char* const name; + + int bonesCount; + spBoneData** bones; + + spBoneData* target; + int bendDirection; + float mix; +}; + +spIkConstraintData* spIkConstraintData_create (const char* name); +void spIkConstraintData_dispose (spIkConstraintData* self); + +#ifdef SPINE_SHORT_NAMES +typedef spIkConstraintData IkConstraintData; +#define IkConstraintData_create(...) spIkConstraintData_create(__VA_ARGS__) +#define IkConstraintData_dispose(...) spIkConstraintData_dispose(__VA_ARGS__) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* SPINE_IKCONSTRAINTDATA_H_ */ diff --git a/cocos/editor-support/spine/Json.cpp b/cocos/editor-support/spine/Json.c similarity index 65% rename from cocos/editor-support/spine/Json.cpp rename to cocos/editor-support/spine/Json.c index 941d807d66..6225ff00cc 100644 --- a/cocos/editor-support/spine/Json.cpp +++ b/cocos/editor-support/spine/Json.c @@ -1,5 +1,6 @@ /* - Copyright (c) 2009 Dave Gamble + Copyright (c) 2009, Dave Gamble + Copyright (c) 2013, Esoteric Software Permission is hereby granted, dispose of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -23,11 +24,28 @@ /* Json */ /* JSON parser in C. */ +#ifndef _DEFAULT_SOURCE +/* Bring strings.h definitions into string.h, where appropriate */ +#define _DEFAULT_SOURCE +#endif + +#ifndef _BSD_SOURCE +/* Bring strings.h definitions into string.h, where appropriate */ +#define _BSD_SOURCE +#endif + #include "Json.h" #include #include +#include /* strtod (C89), strtof (C99) */ +#include /* strcasecmp (4.4BSD - compatibility), _stricmp (_WIN32) */ #include +#ifndef SPINE_JSON_DEBUG +/* Define this to do extra NULL and expected-character checking */ +#define SPINE_JSON_DEBUG 0 +#endif + static const char* ep; const char* Json_getError (void) { @@ -35,11 +53,23 @@ const char* Json_getError (void) { } static int Json_strcasecmp (const char* s1, const char* s2) { - if (!s1) return (s1 == s2) ? 0 : 1; - if (!s2) return 1; - for (; tolower(*s1) == tolower(*s2); ++s1, ++s2) - if (*s1 == 0) return 0; - return tolower(*(const unsigned char*)s1) - tolower(*(const unsigned char*)s2); + /* TODO we may be able to elide these NULL checks if we can prove + * the graph and input (only callsite is Json_getItem) should not have NULLs + */ + if (s1 && s2) { +#if defined(_WIN32) + return _stricmp(s1, s2); +#else + return strcasecmp( s1, s2 ); +#endif + } else { + if (s1 < s2) + return -1; /* s1 is null, s2 is not */ + else if (s1 == s2) + return 0; /* both are null */ + else + return 1; /* s2 is nul s1 is not */ + } } /* Internal constructor. */ @@ -62,37 +92,34 @@ void Json_dispose (Json *c) { /* Parse the input text to generate a number, and populate the result into item. */ static const char* parse_number (Json *item, const char* num) { - float n = 0, sign = 1, scale = 0; - int subscale = 0, signsubscale = 1; + char * endptr; + float n; - /* Could use sscanf for this? */ - if (*num == '-') sign = -1, num++; /* Has sign? */ - if (*num == '0') num++; /* is zero */ - if (*num >= '1' && *num <= '9') do - n = (n * 10.0f) + (*num++ - '0'); - while (*num >= '0' && *num <= '9'); /* Number? */ - if (*num == '.' && num[1] >= '0' && num[1] <= '9') { - num++; - do - n = (n * 10.0f) + (*num++ - '0'), scale--; - while (*num >= '0' && *num <= '9'); - } /* Fractional part? */ - if (*num == 'e' || *num == 'E') /* Exponent? */ - { - num++; - if (*num == '+') - num++; - else if (*num == '-') signsubscale = -1, num++; /* With sign? */ - while (*num >= '0' && *num <= '9') - subscale = (subscale * 10) + (*num++ - '0'); /* Number? */ + /* Using strtod and strtof is slightly more permissive than RFC4627, + * accepting for example hex-encoded floating point, but either + * is often leagues faster than any manual implementation. + * + * We also already know that this starts with [-0-9] from parse_value. + */ +#if __STDC_VERSION__ >= 199901L + n = strtof(num, &endptr); +#else + n = (float)strtod( num, &endptr ); +#endif + /* ignore errno's ERANGE, which returns +/-HUGE_VAL */ + /* n is 0 on any other error */ + + if (endptr != num) { + /* Parse success, number found. */ + item->valueFloat = n; + item->valueInt = (int)n; + item->type = Json_Number; + return endptr; + } else { + /* Parse failure, ep is set. */ + ep = num; + return 0; } - - n = sign * n * (float)pow(10.0f, (scale + subscale * signsubscale)); /* number = +/- number.fraction * 10^+/- exponent */ - - item->valueFloat = n; - item->valueInt = (int)n; - item->type = Json_Number; - return num; } /* Parse the input text into an unescaped cstring, and populate item. */ @@ -103,7 +130,7 @@ static const char* parse_string (Json *item, const char* str) { char* out; int len = 0; unsigned uc, uc2; - if (*str != '\"') { + if (*str != '\"') { /* TODO: don't need this check when called from parse_value, but do need from parse_object */ ep = str; return 0; } /* not a string! */ @@ -111,7 +138,7 @@ static const char* parse_string (Json *item, const char* str) { while (*ptr != '\"' && *ptr && ++len) if (*ptr++ == '\\') ptr++; /* Skip escaped quotes. */ - out = (char*)malloc(len + 1); /* This is how long we need for the string, roughly. */ + out = MALLOC(char, len + 1); /* The length needed for the string, roughly. */ if (!out) return 0; ptr = str + 1; @@ -143,6 +170,7 @@ static const char* parse_string (Json *item, const char* str) { if ((uc >= 0xDC00 && uc <= 0xDFFF) || uc == 0) break; /* check for invalid. */ + /* TODO provide an option to ignore surrogates, use unicode replacement character? */ if (uc >= 0xD800 && uc <= 0xDBFF) /* UTF16 surrogate pairs. */ { if (ptr[1] != '\\' || ptr[2] != 'u') break; /* missing second-half of surrogate. */ @@ -164,12 +192,15 @@ static const char* parse_string (Json *item, const char* str) { case 4: *--ptr2 = ((uc | 0x80) & 0xBF); uc >>= 6; + /* fallthrough */ case 3: *--ptr2 = ((uc | 0x80) & 0xBF); uc >>= 6; + /* fallthrough */ case 2: *--ptr2 = ((uc | 0x80) & 0xBF); uc >>= 6; + /* fallthrough */ case 1: *--ptr2 = (uc | firstByteMark[len]); } @@ -183,7 +214,7 @@ static const char* parse_string (Json *item, const char* str) { } } *ptr2 = 0; - if (*ptr == '\"') ptr++; + if (*ptr == '\"') ptr++; /* TODO error handling if not \" or \0 ? */ item->valueString = out; item->type = Json_String; return ptr; @@ -196,20 +227,22 @@ static const char* parse_object (Json *item, const char* value); /* Utility to jump whitespace and cr/lf */ static const char* skip (const char* in) { - while (in && *in && (unsigned char)*in <= 32) + if (!in) return 0; /* must propagate NULL since it's often called in skip(f(...)) form */ + while (*in && (unsigned char)*in <= 32) in++; return in; } /* Parse an object - create a new root, and populate. */ Json *Json_create (const char* value) { - const char* end = 0; - Json *c = Json_new(); + Json *c; ep = 0; + if (!value) return 0; /* only place we check for NULL other than skip() */ + c = Json_new(); if (!c) return 0; /* memory fail */ - end = parse_value(c, skip(value)); - if (!end) { + value = parse_value(c, skip(value)); + if (!value) { Json_dispose(c); return 0; } /* parse failure. ep is set. */ @@ -219,31 +252,56 @@ Json *Json_create (const char* value) { /* Parser core - when encountering text, process appropriately. */ static const char* parse_value (Json *item, const char* value) { + /* Referenced by Json_create(), parse_array(), and parse_object(). */ + /* Always called with the result of skip(). */ +#if SPINE_JSON_DEBUG /* Checked at entry to graph, Json_create, and after every parse_ call. */ if (!value) return 0; /* Fail on null. */ - if (!strncmp(value, "null", 4)) { - item->type = Json_NULL; - return value + 4; +#endif + + switch (*value) { + case 'n': { + if (!strncmp(value + 1, "ull", 3)) { + item->type = Json_NULL; + return value + 4; + } + break; } - if (!strncmp(value, "false", 5)) { - item->type = Json_False; - return value + 5; + case 'f': { + if (!strncmp(value + 1, "alse", 4)) { + item->type = Json_False; + /* calloc prevents us needing item->type = Json_False or valueInt = 0 here */ + return value + 5; + } + break; } - if (!strncmp(value, "true", 4)) { - item->type = Json_True; - item->valueInt = 1; - return value + 4; + case 't': { + if (!strncmp(value + 1, "rue", 3)) { + item->type = Json_True; + item->valueInt = 1; + return value + 4; + } + break; } - if (*value == '\"') { + case '\"': return parse_string(item, value); - } - if (*value == '-' || (*value >= '0' && *value <= '9')) { - return parse_number(item, value); - } - if (*value == '[') { + case '[': return parse_array(item, value); - } - if (*value == '{') { + case '{': return parse_object(item, value); + case '-': /* fallthrough */ + case '0': /* fallthrough */ + case '1': /* fallthrough */ + case '2': /* fallthrough */ + case '3': /* fallthrough */ + case '4': /* fallthrough */ + case '5': /* fallthrough */ + case '6': /* fallthrough */ + case '7': /* fallthrough */ + case '8': /* fallthrough */ + case '9': + return parse_number(item, value); + default: + break; } ep = value; @@ -253,10 +311,13 @@ static const char* parse_value (Json *item, const char* value) { /* Build an array from input text. */ static const char* parse_array (Json *item, const char* value) { Json *child; + +#if SPINE_JSON_DEBUG /* unnecessary, only callsite (parse_value) verifies this */ if (*value != '[') { ep = value; return 0; } /* not an array! */ +#endif item->type = Json_Array; value = skip(value + 1); @@ -269,13 +330,15 @@ static const char* parse_array (Json *item, const char* value) { item->size = 1; while (*value == ',') { - Json *new_item; - if (!(new_item = Json_new())) return 0; /* memory fail */ + Json *new_item = Json_new(); + if (!new_item) return 0; /* memory fail */ child->next = new_item; +#if SPINE_JSON_HAVE_PREV new_item->prev = child; +#endif child = new_item; value = skip(parse_value(child, skip(value + 1))); - if (!value) return 0; /* memory fail */ + if (!value) return 0; /* parse fail */ item->size++; } @@ -287,10 +350,13 @@ static const char* parse_array (Json *item, const char* value) { /* Build an object from the text. */ static const char* parse_object (Json *item, const char* value) { Json *child; + +#if SPINE_JSON_DEBUG /* unnecessary, only callsite (parse_value) verifies this */ if (*value != '{') { ep = value; return 0; } /* not an object! */ +#endif item->type = Json_Object; value = skip(value + 1); @@ -311,10 +377,12 @@ static const char* parse_object (Json *item, const char* value) { item->size = 1; while (*value == ',') { - Json *new_item; - if (!(new_item = Json_new())) return 0; /* memory fail */ + Json *new_item = Json_new(); + if (!new_item) return 0; /* memory fail */ child->next = new_item; +#if SPINE_JSON_HAVE_PREV new_item->prev = child; +#endif child = new_item; value = skip(parse_string(child, skip(value + 1))); if (!value) return 0; diff --git a/cocos/editor-support/spine/Json.h b/cocos/editor-support/spine/Json.h index bc11a81ac0..078a5a7158 100644 --- a/cocos/editor-support/spine/Json.h +++ b/cocos/editor-support/spine/Json.h @@ -38,10 +38,17 @@ extern "C" { #define Json_Array 5 #define Json_Object 6 +#ifndef SPINE_JSON_HAVE_PREV +/* Spine doesn't use the "prev" link in the Json sibling lists. */ +#define SPINE_JSON_HAVE_PREV 0 +#endif + /* The Json structure: */ typedef struct Json { struct Json* next; +#if SPINE_JSON_HAVE_PREV struct Json* prev; /* next/prev allow you to walk array/object chains. Alternatively, use getSize/getItem */ +#endif struct Json* child; /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */ int type; /* The type of the item, as above. */ diff --git a/cocos/editor-support/spine/MeshAttachment.c b/cocos/editor-support/spine/MeshAttachment.c new file mode 100644 index 0000000000..0ca41fbc06 --- /dev/null +++ b/cocos/editor-support/spine/MeshAttachment.c @@ -0,0 +1,85 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +void _spMeshAttachment_dispose (spAttachment* attachment) { + spMeshAttachment* self = SUB_CAST(spMeshAttachment, attachment); + _spAttachment_deinit(attachment); + FREE(self->path); + FREE(self->vertices); + FREE(self->regionUVs); + FREE(self->uvs); + FREE(self->triangles); + FREE(self->edges); + FREE(self); +} + +spMeshAttachment* spMeshAttachment_create (const char* name) { + spMeshAttachment* self = NEW(spMeshAttachment); + self->r = 1; + self->g = 1; + self->b = 1; + self->a = 1; + _spAttachment_init(SUPER(self), name, SP_ATTACHMENT_MESH, _spMeshAttachment_dispose); + return self; +} + +void spMeshAttachment_updateUVs (spMeshAttachment* self) { + int i; + float width = self->regionU2 - self->regionU, height = self->regionV2 - self->regionV; + FREE(self->uvs); + self->uvs = MALLOC(float, self->verticesCount); + if (self->regionRotate) { + for (i = 0; i < self->verticesCount; i += 2) { + self->uvs[i] = self->regionU + self->regionUVs[i + 1] * width; + self->uvs[i + 1] = self->regionV + height - self->regionUVs[i] * height; + } + } else { + for (i = 0; i < self->verticesCount; i += 2) { + self->uvs[i] = self->regionU + self->regionUVs[i] * width; + self->uvs[i + 1] = self->regionV + self->regionUVs[i + 1] * height; + } + } +} + +void spMeshAttachment_computeWorldVertices (spMeshAttachment* self, spSlot* slot, float* worldVertices) { + int i; + float* vertices = self->vertices; + const spBone* bone = slot->bone; + float x = bone->skeleton->x + bone->worldX, y = bone->skeleton->y + bone->worldY; + if (slot->attachmentVerticesCount == self->verticesCount) vertices = slot->attachmentVertices; + for (i = 0; i < self->verticesCount; i += 2) { + const float vx = vertices[i], vy = vertices[i + 1]; + worldVertices[i] = vx * bone->m00 + vy * bone->m01 + x; + worldVertices[i + 1] = vx * bone->m10 + vy * bone->m11 + y; + } +} diff --git a/cocos/editor-support/spine/MeshAttachment.h b/cocos/editor-support/spine/MeshAttachment.h new file mode 100644 index 0000000000..5948d84ae5 --- /dev/null +++ b/cocos/editor-support/spine/MeshAttachment.h @@ -0,0 +1,87 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#ifndef SPINE_MESHATTACHMENT_H_ +#define SPINE_MESHATTACHMENT_H_ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct spMeshAttachment spMeshAttachment; +struct spMeshAttachment { + spAttachment super; + const char* path; + + int verticesCount; + float* vertices; + int hullLength; + + float* regionUVs; + float* uvs; + + int trianglesCount; + int* triangles; + + float r, g, b, a; + + void* rendererObject; + int regionOffsetX, regionOffsetY; /* Pixels stripped from the bottom left, unrotated. */ + int regionWidth, regionHeight; /* Unrotated, stripped pixel size. */ + int regionOriginalWidth, regionOriginalHeight; /* Unrotated, unstripped pixel size. */ + float regionU, regionV, regionU2, regionV2; + int/*bool*/regionRotate; + + /* Nonessential. */ + int edgesCount; + int* edges; + float width, height; +}; + +spMeshAttachment* spMeshAttachment_create (const char* name); +void spMeshAttachment_updateUVs (spMeshAttachment* self); +void spMeshAttachment_computeWorldVertices (spMeshAttachment* self, spSlot* slot, float* worldVertices); + +#ifdef SPINE_SHORT_NAMES +typedef spMeshAttachment MeshAttachment; +#define MeshAttachment_create(...) spMeshAttachment_create(__VA_ARGS__) +#define MeshAttachment_updateUVs(...) spMeshAttachment_updateUVs(__VA_ARGS__) +#define MeshAttachment_computeWorldVertices(...) spMeshAttachment_computeWorldVertices(__VA_ARGS__) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* SPINE_MESHATTACHMENT_H_ */ diff --git a/cocos/editor-support/spine/PolygonBatch.cpp b/cocos/editor-support/spine/PolygonBatch.cpp new file mode 100644 index 0000000000..26e35a77d4 --- /dev/null +++ b/cocos/editor-support/spine/PolygonBatch.cpp @@ -0,0 +1,115 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +USING_NS_CC; + +namespace spine { + +PolygonBatch* PolygonBatch::createWithCapacity (ssize_t capacity) { + PolygonBatch* batch = new PolygonBatch(); + batch->initWithCapacity(capacity); + batch->autorelease(); + return batch; +} + +PolygonBatch::PolygonBatch () : + _capacity(0), + _vertices(nullptr), _verticesCount(0), + _triangles(nullptr), _trianglesCount(0), + _texture(nullptr) +{} + +bool PolygonBatch::initWithCapacity (ssize_t capacity) { + // 32767 is max index, so 32767 / 3 - (32767 / 3 % 3) = 10920. + CCASSERT(capacity <= 10920, "capacity cannot be > 10920"); + CCASSERT(capacity >= 0, "capacity cannot be < 0"); + _capacity = capacity; + _vertices = MALLOC(V2F_C4B_T2F, capacity); + _triangles = MALLOC(GLushort, capacity * 3); + return true; +} + +PolygonBatch::~PolygonBatch () { + FREE(_vertices); + FREE(_triangles); +} + +void PolygonBatch::add (const Texture2D* addTexture, + const float* addVertices, const float* uvs, int addVerticesCount, + const int* addTriangles, int addTrianglesCount, + Color4B* color) { + + if ( + addTexture != _texture + || _verticesCount + (addVerticesCount >> 1) > _capacity + || _trianglesCount + addTrianglesCount > _capacity * 3) { + this->flush(); + _texture = addTexture; + } + + for (int i = 0; i < addTrianglesCount; ++i, ++_trianglesCount) + _triangles[_trianglesCount] = addTriangles[i] + _verticesCount; + + for (int i = 0; i < addVerticesCount; i += 2, ++_verticesCount) { + V2F_C4B_T2F* vertex = _vertices + _verticesCount; + vertex->vertices.x = addVertices[i]; + vertex->vertices.y = addVertices[i + 1]; + vertex->colors = *color; + vertex->texCoords.u = uvs[i]; + vertex->texCoords.v = uvs[i + 1]; + } +} + +void PolygonBatch::flush () { + if (!_verticesCount) return; + + GL::bindTexture2D(_texture->getName()); + GL::bindVAO(0); + glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_POSITION); + glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_COLOR); + glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_TEX_COORDS); + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 2, GL_FLOAT, GL_FALSE, sizeof(V2F_C4B_T2F), &_vertices[0].vertices); + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(V2F_C4B_T2F), &_vertices[0].colors); + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_TEX_COORDS, 2, GL_FLOAT, GL_FALSE, sizeof(V2F_C4B_T2F), &_vertices[0].texCoords); + + glDrawElements(GL_TRIANGLES, _trianglesCount, GL_UNSIGNED_SHORT, _triangles); + + CC_INCREMENT_GL_DRAWN_BATCHES_AND_VERTICES(1, _verticesCount); + + _verticesCount = 0; + _trianglesCount = 0; + + CHECK_GL_ERROR_DEBUG(); +} + +} diff --git a/cocos/editor-support/spine/PolygonBatch.h b/cocos/editor-support/spine/PolygonBatch.h new file mode 100644 index 0000000000..78bd22f236 --- /dev/null +++ b/cocos/editor-support/spine/PolygonBatch.h @@ -0,0 +1,63 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#ifndef SPINE_POLYGONBATCH_H_ +#define SPINE_POLYGONBATCH_H_ + +#include "cocos2d.h" + +namespace spine { + +class PolygonBatch : public cocos2d::Ref { +public: + static PolygonBatch* createWithCapacity (ssize_t capacity); + + void add (const cocos2d::Texture2D* texture, + const float* vertices, const float* uvs, int verticesCount, + const int* triangles, int trianglesCount, + cocos2d::Color4B* color); + void flush (); + +protected: + PolygonBatch(); + virtual ~PolygonBatch(); + bool initWithCapacity (ssize_t capacity); + + ssize_t _capacity; + cocos2d::V2F_C4B_T2F* _vertices; + int _verticesCount; + GLushort* _triangles; + int _trianglesCount; + const cocos2d::Texture2D* _texture; +}; + +} + +#endif // SPINE_POLYGONBATCH_H_ diff --git a/cocos/editor-support/spine/RegionAttachment.c b/cocos/editor-support/spine/RegionAttachment.c new file mode 100644 index 0000000000..6b1030518a --- /dev/null +++ b/cocos/editor-support/spine/RegionAttachment.c @@ -0,0 +1,113 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +void _spRegionAttachment_dispose (spAttachment* attachment) { + spRegionAttachment* self = SUB_CAST(spRegionAttachment, attachment); + _spAttachment_deinit(attachment); + FREE(self->path); + FREE(self); +} + +spRegionAttachment* spRegionAttachment_create (const char* name) { + spRegionAttachment* self = NEW(spRegionAttachment); + self->scaleX = 1; + self->scaleY = 1; + self->r = 1; + self->g = 1; + self->b = 1; + self->a = 1; + _spAttachment_init(SUPER(self), name, SP_ATTACHMENT_REGION, _spRegionAttachment_dispose); + return self; +} + +void spRegionAttachment_setUVs (spRegionAttachment* self, float u, float v, float u2, float v2, int/*bool*/rotate) { + if (rotate) { + self->uvs[SP_VERTEX_X2] = u; + self->uvs[SP_VERTEX_Y2] = v2; + self->uvs[SP_VERTEX_X3] = u; + self->uvs[SP_VERTEX_Y3] = v; + self->uvs[SP_VERTEX_X4] = u2; + self->uvs[SP_VERTEX_Y4] = v; + self->uvs[SP_VERTEX_X1] = u2; + self->uvs[SP_VERTEX_Y1] = v2; + } else { + self->uvs[SP_VERTEX_X1] = u; + self->uvs[SP_VERTEX_Y1] = v2; + self->uvs[SP_VERTEX_X2] = u; + self->uvs[SP_VERTEX_Y2] = v; + self->uvs[SP_VERTEX_X3] = u2; + self->uvs[SP_VERTEX_Y3] = v; + self->uvs[SP_VERTEX_X4] = u2; + self->uvs[SP_VERTEX_Y4] = v2; + } +} + +void spRegionAttachment_updateOffset (spRegionAttachment* self) { + float regionScaleX = self->width / self->regionOriginalWidth * self->scaleX; + float regionScaleY = self->height / self->regionOriginalHeight * self->scaleY; + float localX = -self->width / 2 * self->scaleX + self->regionOffsetX * regionScaleX; + float localY = -self->height / 2 * self->scaleY + self->regionOffsetY * regionScaleY; + float localX2 = localX + self->regionWidth * regionScaleX; + float localY2 = localY + self->regionHeight * regionScaleY; + float radians = self->rotation * DEG_RAD; + float cosine = COS(radians), sine = SIN(radians); + float localXCos = localX * cosine + self->x; + float localXSin = localX * sine; + float localYCos = localY * cosine + self->y; + float localYSin = localY * sine; + float localX2Cos = localX2 * cosine + self->x; + float localX2Sin = localX2 * sine; + float localY2Cos = localY2 * cosine + self->y; + float localY2Sin = localY2 * sine; + self->offset[SP_VERTEX_X1] = localXCos - localYSin; + self->offset[SP_VERTEX_Y1] = localYCos + localXSin; + self->offset[SP_VERTEX_X2] = localXCos - localY2Sin; + self->offset[SP_VERTEX_Y2] = localY2Cos + localXSin; + self->offset[SP_VERTEX_X3] = localX2Cos - localY2Sin; + self->offset[SP_VERTEX_Y3] = localY2Cos + localX2Sin; + self->offset[SP_VERTEX_X4] = localX2Cos - localYSin; + self->offset[SP_VERTEX_Y4] = localYCos + localX2Sin; +} + +void spRegionAttachment_computeWorldVertices (spRegionAttachment* self, spBone* bone, float* vertices) { + const float* offset = self->offset; + float x = bone->skeleton->x + bone->worldX, y = bone->skeleton->y + bone->worldY; + vertices[SP_VERTEX_X1] = offset[SP_VERTEX_X1] * bone->m00 + offset[SP_VERTEX_Y1] * bone->m01 + x; + vertices[SP_VERTEX_Y1] = offset[SP_VERTEX_X1] * bone->m10 + offset[SP_VERTEX_Y1] * bone->m11 + y; + vertices[SP_VERTEX_X2] = offset[SP_VERTEX_X2] * bone->m00 + offset[SP_VERTEX_Y2] * bone->m01 + x; + vertices[SP_VERTEX_Y2] = offset[SP_VERTEX_X2] * bone->m10 + offset[SP_VERTEX_Y2] * bone->m11 + y; + vertices[SP_VERTEX_X3] = offset[SP_VERTEX_X3] * bone->m00 + offset[SP_VERTEX_Y3] * bone->m01 + x; + vertices[SP_VERTEX_Y3] = offset[SP_VERTEX_X3] * bone->m10 + offset[SP_VERTEX_Y3] * bone->m11 + y; + vertices[SP_VERTEX_X4] = offset[SP_VERTEX_X4] * bone->m00 + offset[SP_VERTEX_Y4] * bone->m01 + x; + vertices[SP_VERTEX_Y4] = offset[SP_VERTEX_X4] * bone->m10 + offset[SP_VERTEX_Y4] * bone->m11 + y; +} diff --git a/cocos/editor-support/spine/RegionAttachment.cpp b/cocos/editor-support/spine/RegionAttachment.cpp deleted file mode 100644 index d3b283f2f6..0000000000 --- a/cocos/editor-support/spine/RegionAttachment.cpp +++ /dev/null @@ -1,120 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include - -void _spRegionAttachment_dispose (spAttachment* attachment) { - spRegionAttachment* self = SUB_CAST(spRegionAttachment, attachment); - - _spAttachment_deinit(attachment); - - FREE(self); -} - -spRegionAttachment* spRegionAttachment_create (const char* name) { - spRegionAttachment* self = NEW(spRegionAttachment); - self->scaleX = 1; - self->scaleY = 1; - _spAttachment_init(SUPER(self), name, ATTACHMENT_REGION, _spRegionAttachment_dispose); - return self; -} - -void spRegionAttachment_setUVs (spRegionAttachment* self, float u, float v, float u2, float v2, int/*bool*/rotate) { - if (rotate) { - self->uvs[VERTEX_X2] = u; - self->uvs[VERTEX_Y2] = v2; - self->uvs[VERTEX_X3] = u; - self->uvs[VERTEX_Y3] = v; - self->uvs[VERTEX_X4] = u2; - self->uvs[VERTEX_Y4] = v; - self->uvs[VERTEX_X1] = u2; - self->uvs[VERTEX_Y1] = v2; - } else { - self->uvs[VERTEX_X1] = u; - self->uvs[VERTEX_Y1] = v2; - self->uvs[VERTEX_X2] = u; - self->uvs[VERTEX_Y2] = v; - self->uvs[VERTEX_X3] = u2; - self->uvs[VERTEX_Y3] = v; - self->uvs[VERTEX_X4] = u2; - self->uvs[VERTEX_Y4] = v2; - } -} - -void spRegionAttachment_updateOffset (spRegionAttachment* self) { - float regionScaleX = self->width / self->regionOriginalWidth * self->scaleX; - float regionScaleY = self->height / self->regionOriginalHeight * self->scaleY; - float localX = -self->width / 2 * self->scaleX + self->regionOffsetX * regionScaleX; - float localY = -self->height / 2 * self->scaleY + self->regionOffsetY * regionScaleY; - float localX2 = localX + self->regionWidth * regionScaleX; - float localY2 = localY + self->regionHeight * regionScaleY; - float radians = (float)(self->rotation * 3.1415926535897932385 / 180); -#ifdef __STDC_VERSION__ - float cosine = cosf(radians); - float sine = sinf(radians); -#else - float cosine = (float)cos(radians); - float sine = (float)sin(radians); -#endif - float localXCos = localX * cosine + self->x; - float localXSin = localX * sine; - float localYCos = localY * cosine + self->y; - float localYSin = localY * sine; - float localX2Cos = localX2 * cosine + self->x; - float localX2Sin = localX2 * sine; - float localY2Cos = localY2 * cosine + self->y; - float localY2Sin = localY2 * sine; - self->offset[VERTEX_X1] = localXCos - localYSin; - self->offset[VERTEX_Y1] = localYCos + localXSin; - self->offset[VERTEX_X2] = localXCos - localY2Sin; - self->offset[VERTEX_Y2] = localY2Cos + localXSin; - self->offset[VERTEX_X3] = localX2Cos - localY2Sin; - self->offset[VERTEX_Y3] = localY2Cos + localX2Sin; - self->offset[VERTEX_X4] = localX2Cos - localYSin; - self->offset[VERTEX_Y4] = localYCos + localX2Sin; -} - -void spRegionAttachment_computeWorldVertices (spRegionAttachment* self, float x, float y, spBone* bone, float* vertices) { - float* offset = self->offset; - x += bone->worldX; - y += bone->worldY; - vertices[VERTEX_X1] = offset[VERTEX_X1] * bone->m00 + offset[VERTEX_Y1] * bone->m01 + x; - vertices[VERTEX_Y1] = offset[VERTEX_X1] * bone->m10 + offset[VERTEX_Y1] * bone->m11 + y; - vertices[VERTEX_X2] = offset[VERTEX_X2] * bone->m00 + offset[VERTEX_Y2] * bone->m01 + x; - vertices[VERTEX_Y2] = offset[VERTEX_X2] * bone->m10 + offset[VERTEX_Y2] * bone->m11 + y; - vertices[VERTEX_X3] = offset[VERTEX_X3] * bone->m00 + offset[VERTEX_Y3] * bone->m01 + x; - vertices[VERTEX_Y3] = offset[VERTEX_X3] * bone->m10 + offset[VERTEX_Y3] * bone->m11 + y; - vertices[VERTEX_X4] = offset[VERTEX_X4] * bone->m00 + offset[VERTEX_Y4] * bone->m01 + x; - vertices[VERTEX_Y4] = offset[VERTEX_X4] * bone->m10 + offset[VERTEX_Y4] * bone->m11 + y; -} diff --git a/cocos/editor-support/spine/RegionAttachment.h b/cocos/editor-support/spine/RegionAttachment.h index 6f1e96b3de..22def94862 100644 --- a/cocos/editor-support/spine/RegionAttachment.h +++ b/cocos/editor-support/spine/RegionAttachment.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_REGIONATTACHMENT_H_ @@ -43,13 +40,15 @@ extern "C" { #endif typedef enum { - VERTEX_X1 = 0, VERTEX_Y1, VERTEX_X2, VERTEX_Y2, VERTEX_X3, VERTEX_Y3, VERTEX_X4, VERTEX_Y4 + SP_VERTEX_X1 = 0, SP_VERTEX_Y1, SP_VERTEX_X2, SP_VERTEX_Y2, SP_VERTEX_X3, SP_VERTEX_Y3, SP_VERTEX_X4, SP_VERTEX_Y4 } spVertexIndex; typedef struct spRegionAttachment spRegionAttachment; struct spRegionAttachment { spAttachment super; + const char* path; float x, y, scaleX, scaleY, rotation, width, height; + float r, g, b, a; void* rendererObject; int regionOffsetX, regionOffsetY; /* Pixels stripped from the bottom left, unrotated. */ @@ -63,10 +62,18 @@ struct spRegionAttachment { spRegionAttachment* spRegionAttachment_create (const char* name); void spRegionAttachment_setUVs (spRegionAttachment* self, float u, float v, float u2, float v2, int/*bool*/rotate); void spRegionAttachment_updateOffset (spRegionAttachment* self); -void spRegionAttachment_computeWorldVertices (spRegionAttachment* self, float x, float y, spBone* bone, float* vertices); +void spRegionAttachment_computeWorldVertices (spRegionAttachment* self, spBone* bone, float* vertices); #ifdef SPINE_SHORT_NAMES typedef spVertexIndex VertexIndex; +#define VERTEX_X1 SP_VERTEX_X1 +#define VERTEX_Y1 SP_VERTEX_Y1 +#define VERTEX_X2 SP_VERTEX_X2 +#define VERTEX_Y2 SP_VERTEX_Y2 +#define VERTEX_X3 SP_VERTEX_X3 +#define VERTEX_Y3 SP_VERTEX_Y3 +#define VERTEX_X4 SP_VERTEX_X4 +#define VERTEX_Y4 SP_VERTEX_Y4 typedef spRegionAttachment RegionAttachment; #define RegionAttachment_create(...) spRegionAttachment_create(__VA_ARGS__) #define RegionAttachment_setUVs(...) spRegionAttachment_setUVs(__VA_ARGS__) diff --git a/cocos/editor-support/spine/Skeleton.c b/cocos/editor-support/spine/Skeleton.c new file mode 100644 index 0000000000..d8835db72f --- /dev/null +++ b/cocos/editor-support/spine/Skeleton.c @@ -0,0 +1,341 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include +#include + +typedef struct { + spSkeleton super; + + int boneCacheCount; + int* boneCacheCounts; + spBone*** boneCache; +} _spSkeleton; + +spSkeleton* spSkeleton_create (spSkeletonData* data) { + int i, ii; + + _spSkeleton* internal = NEW(_spSkeleton); + spSkeleton* self = SUPER(internal); + CONST_CAST(spSkeletonData*, self->data) = data; + + self->bonesCount = self->data->bonesCount; + self->bones = MALLOC(spBone*, self->bonesCount); + + for (i = 0; i < self->bonesCount; ++i) { + spBoneData* boneData = self->data->bones[i]; + spBone* parent = 0; + if (boneData->parent) { + /* Find parent bone. */ + for (ii = 0; ii < self->bonesCount; ++ii) { + if (data->bones[ii] == boneData->parent) { + parent = self->bones[ii]; + break; + } + } + } + self->bones[i] = spBone_create(boneData, self, parent); + } + CONST_CAST(spBone*, self->root) = self->bones[0]; + + self->slotsCount = data->slotsCount; + self->slots = MALLOC(spSlot*, self->slotsCount); + for (i = 0; i < self->slotsCount; ++i) { + spSlotData *slotData = data->slots[i]; + + /* Find bone for the slotData's boneData. */ + spBone* bone = 0; + for (ii = 0; ii < self->bonesCount; ++ii) { + if (data->bones[ii] == slotData->boneData) { + bone = self->bones[ii]; + break; + } + } + self->slots[i] = spSlot_create(slotData, bone); + } + + self->drawOrder = MALLOC(spSlot*, self->slotsCount); + memcpy(self->drawOrder, self->slots, sizeof(spSlot*) * self->slotsCount); + + self->r = 1; + self->g = 1; + self->b = 1; + self->a = 1; + + self->ikConstraintsCount = data->ikConstraintsCount; + self->ikConstraints = MALLOC(spIkConstraint*, self->ikConstraintsCount); + for (i = 0; i < self->data->ikConstraintsCount; ++i) + self->ikConstraints[i] = spIkConstraint_create(self->data->ikConstraints[i], self); + + spSkeleton_updateCache(self); + + return self; +} + +void spSkeleton_dispose (spSkeleton* self) { + int i; + _spSkeleton* internal = SUB_CAST(_spSkeleton, self); + + for (i = 0; i < internal->boneCacheCount; ++i) + FREE(internal->boneCache[i]); + FREE(internal->boneCache); + FREE(internal->boneCacheCounts); + + for (i = 0; i < self->bonesCount; ++i) + spBone_dispose(self->bones[i]); + FREE(self->bones); + + for (i = 0; i < self->slotsCount; ++i) + spSlot_dispose(self->slots[i]); + FREE(self->slots); + + for (i = 0; i < self->ikConstraintsCount; ++i) + spIkConstraint_dispose(self->ikConstraints[i]); + FREE(self->ikConstraints); + + FREE(self->drawOrder); + FREE(self); +} + +void spSkeleton_updateCache (const spSkeleton* self) { + int i, ii; + _spSkeleton* internal = SUB_CAST(_spSkeleton, self); + + for (i = 0; i < internal->boneCacheCount; ++i) + FREE(internal->boneCache[i]); + FREE(internal->boneCache); + FREE(internal->boneCacheCounts); + + internal->boneCacheCount = self->ikConstraintsCount + 1; + internal->boneCache = MALLOC(spBone**, internal->boneCacheCount); + internal->boneCacheCounts = CALLOC(int, internal->boneCacheCount); + + /* Compute array sizes. */ + for (i = 0; i < self->bonesCount; ++i) { + spBone* current = self->bones[i]; + do { + for (ii = 0; ii < self->ikConstraintsCount; ++ii) { + spIkConstraint* ikConstraint = self->ikConstraints[ii]; + spBone* parent = ikConstraint->bones[0]; + spBone* child = ikConstraint->bones[ikConstraint->bonesCount - 1]; + while (1) { + if (current == child) { + internal->boneCacheCounts[ii]++; + internal->boneCacheCounts[ii + 1]++; + goto outer1; + } + if (child == parent) break; + child = child->parent; + } + } + current = current->parent; + } while (current); + internal->boneCacheCounts[0]++; + outer1: {} + } + + for (i = 0; i < internal->boneCacheCount; ++i) + internal->boneCache[i] = MALLOC(spBone*, internal->boneCacheCounts[i]); + memset(internal->boneCacheCounts, 0, internal->boneCacheCount * sizeof(int)); + + /* Populate arrays. */ + for (i = 0; i < self->bonesCount; ++i) { + spBone* bone = self->bones[i]; + spBone* current = bone; + do { + for (ii = 0; ii < self->ikConstraintsCount; ++ii) { + spIkConstraint* ikConstraint = self->ikConstraints[ii]; + spBone* parent = ikConstraint->bones[0]; + spBone* child = ikConstraint->bones[ikConstraint->bonesCount - 1]; + while (1) { + if (current == child) { + internal->boneCache[ii][internal->boneCacheCounts[ii]++] = bone; + internal->boneCache[ii + 1][internal->boneCacheCounts[ii + 1]++] = bone; + goto outer2; + } + if (child == parent) break; + child = child->parent; + } + } + current = current->parent; + } while (current); + internal->boneCache[0][internal->boneCacheCounts[0]++] = bone; + outer2: {} + } +} + +void spSkeleton_updateWorldTransform (const spSkeleton* self) { + int i, ii, nn, last; + _spSkeleton* internal = SUB_CAST(_spSkeleton, self); + + for (i = 0; i < self->bonesCount; ++i) + self->bones[i]->rotationIK = self->bones[i]->rotation; + + i = 0; + last = internal->boneCacheCount - 1; + while (1) { + for (ii = 0, nn = internal->boneCacheCounts[i]; ii < nn; ++ii) + spBone_updateWorldTransform(internal->boneCache[i][ii]); + if (i == last) break; + spIkConstraint_apply(self->ikConstraints[i]); + i++; + } +} + +void spSkeleton_setToSetupPose (const spSkeleton* self) { + spSkeleton_setBonesToSetupPose(self); + spSkeleton_setSlotsToSetupPose(self); +} + +void spSkeleton_setBonesToSetupPose (const spSkeleton* self) { + int i; + for (i = 0; i < self->bonesCount; ++i) + spBone_setToSetupPose(self->bones[i]); + + for (i = 0; i < self->ikConstraintsCount; ++i) { + spIkConstraint* ikConstraint = self->ikConstraints[i]; + ikConstraint->bendDirection = ikConstraint->data->bendDirection; + ikConstraint->mix = ikConstraint->data->mix; + } +} + +void spSkeleton_setSlotsToSetupPose (const spSkeleton* self) { + int i; + memcpy(self->drawOrder, self->slots, self->slotsCount * sizeof(spSlot*)); + for (i = 0; i < self->slotsCount; ++i) + spSlot_setToSetupPose(self->slots[i]); +} + +spBone* spSkeleton_findBone (const spSkeleton* self, const char* boneName) { + int i; + for (i = 0; i < self->bonesCount; ++i) + if (strcmp(self->data->bones[i]->name, boneName) == 0) return self->bones[i]; + return 0; +} + +int spSkeleton_findBoneIndex (const spSkeleton* self, const char* boneName) { + int i; + for (i = 0; i < self->bonesCount; ++i) + if (strcmp(self->data->bones[i]->name, boneName) == 0) return i; + return -1; +} + +spSlot* spSkeleton_findSlot (const spSkeleton* self, const char* slotName) { + int i; + for (i = 0; i < self->slotsCount; ++i) + if (strcmp(self->data->slots[i]->name, slotName) == 0) return self->slots[i]; + return 0; +} + +int spSkeleton_findSlotIndex (const spSkeleton* self, const char* slotName) { + int i; + for (i = 0; i < self->slotsCount; ++i) + if (strcmp(self->data->slots[i]->name, slotName) == 0) return i; + return -1; +} + +int spSkeleton_setSkinByName (spSkeleton* self, const char* skinName) { + spSkin *skin; + if (!skinName) { + spSkeleton_setSkin(self, 0); + return 1; + } + skin = spSkeletonData_findSkin(self->data, skinName); + if (!skin) return 0; + spSkeleton_setSkin(self, skin); + return 1; +} + +void spSkeleton_setSkin (spSkeleton* self, spSkin* newSkin) { + if (newSkin) { + if (self->skin) + spSkin_attachAll(newSkin, self, self->skin); + else { + /* No previous skin, attach setup pose attachments. */ + int i; + for (i = 0; i < self->slotsCount; ++i) { + spSlot* slot = self->slots[i]; + if (slot->data->attachmentName) { + spAttachment* attachment = spSkin_getAttachment(newSkin, i, slot->data->attachmentName); + if (attachment) spSlot_setAttachment(slot, attachment); + } + } + } + } + CONST_CAST(spSkin*, self->skin) = newSkin; +} + +spAttachment* spSkeleton_getAttachmentForSlotName (const spSkeleton* self, const char* slotName, const char* attachmentName) { + int slotIndex = spSkeletonData_findSlotIndex(self->data, slotName); + return spSkeleton_getAttachmentForSlotIndex(self, slotIndex, attachmentName); +} + +spAttachment* spSkeleton_getAttachmentForSlotIndex (const spSkeleton* self, int slotIndex, const char* attachmentName) { + if (slotIndex == -1) return 0; + if (self->skin) { + spAttachment *attachment = spSkin_getAttachment(self->skin, slotIndex, attachmentName); + if (attachment) return attachment; + } + if (self->data->defaultSkin) { + spAttachment *attachment = spSkin_getAttachment(self->data->defaultSkin, slotIndex, attachmentName); + if (attachment) return attachment; + } + return 0; +} + +int spSkeleton_setAttachment (spSkeleton* self, const char* slotName, const char* attachmentName) { + int i; + for (i = 0; i < self->slotsCount; ++i) { + spSlot *slot = self->slots[i]; + if (strcmp(slot->data->name, slotName) == 0) { + if (!attachmentName) + spSlot_setAttachment(slot, 0); + else { + spAttachment* attachment = spSkeleton_getAttachmentForSlotIndex(self, i, attachmentName); + if (!attachment) return 0; + spSlot_setAttachment(slot, attachment); + } + return 1; + } + } + return 0; +} + +spIkConstraint* spSkeleton_findIkConstraint (const spSkeleton* self, const char* ikConstraintName) { + int i; + for (i = 0; i < self->ikConstraintsCount; ++i) + if (strcmp(self->ikConstraints[i]->data->name, ikConstraintName) == 0) return self->ikConstraints[i]; + return 0; +} + +void spSkeleton_update (spSkeleton* self, float deltaTime) { + self->time += deltaTime; +} diff --git a/cocos/editor-support/spine/Skeleton.cpp b/cocos/editor-support/spine/Skeleton.cpp deleted file mode 100644 index 9c6ea30758..0000000000 --- a/cocos/editor-support/spine/Skeleton.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include -#include - -spSkeleton* spSkeleton_create (spSkeletonData* data) { - int i, ii; - - spSkeleton* self = NEW(spSkeleton); - CONST_CAST(spSkeletonData*, self->data) = data; - - self->boneCount = self->data->boneCount; - self->bones = MALLOC(spBone*, self->boneCount); - - for (i = 0; i < self->boneCount; ++i) { - spBoneData* boneData = self->data->bones[i]; - spBone* parent = 0; - if (boneData->parent) { - /* Find parent bone. */ - for (ii = 0; ii < self->boneCount; ++ii) { - if (data->bones[ii] == boneData->parent) { - parent = self->bones[ii]; - break; - } - } - } - self->bones[i] = spBone_create(boneData, parent); - } - CONST_CAST(spBone*, self->root) = self->bones[0]; - - self->slotCount = data->slotCount; - self->slots = MALLOC(spSlot*, self->slotCount); - for (i = 0; i < self->slotCount; ++i) { - spSlotData *slotData = data->slots[i]; - - /* Find bone for the slotData's boneData. */ - spBone* bone = 0; - for (ii = 0; ii < self->boneCount; ++ii) { - if (data->bones[ii] == slotData->boneData) { - bone = self->bones[ii]; - break; - } - } - self->slots[i] = spSlot_create(slotData, self, bone); - } - - self->drawOrder = MALLOC(spSlot*, self->slotCount); - memcpy(self->drawOrder, self->slots, sizeof(spSlot*) * self->slotCount); - - self->r = 1; - self->g = 1; - self->b = 1; - self->a = 1; - - return self; -} - -void spSkeleton_dispose (spSkeleton* self) { - int i; - for (i = 0; i < self->boneCount; ++i) - spBone_dispose(self->bones[i]); - FREE(self->bones); - - for (i = 0; i < self->slotCount; ++i) - spSlot_dispose(self->slots[i]); - FREE(self->slots); - - FREE(self->drawOrder); - FREE(self); -} - -void spSkeleton_updateWorldTransform (const spSkeleton* self) { - int i; - for (i = 0; i < self->boneCount; ++i) - spBone_updateWorldTransform(self->bones[i], self->flipX, self->flipY); -} - -void spSkeleton_setToSetupPose (const spSkeleton* self) { - spSkeleton_setBonesToSetupPose(self); - spSkeleton_setSlotsToSetupPose(self); -} - -void spSkeleton_setBonesToSetupPose (const spSkeleton* self) { - int i; - for (i = 0; i < self->boneCount; ++i) - spBone_setToSetupPose(self->bones[i]); -} - -void spSkeleton_setSlotsToSetupPose (const spSkeleton* self) { - int i; - memcpy(self->drawOrder, self->slots, self->slotCount * sizeof(int)); - for (i = 0; i < self->slotCount; ++i) - spSlot_setToSetupPose(self->slots[i]); -} - -spBone* spSkeleton_findBone (const spSkeleton* self, const char* boneName) { - int i; - for (i = 0; i < self->boneCount; ++i) - if (strcmp(self->data->bones[i]->name, boneName) == 0) return self->bones[i]; - return 0; -} - -int spSkeleton_findBoneIndex (const spSkeleton* self, const char* boneName) { - int i; - for (i = 0; i < self->boneCount; ++i) - if (strcmp(self->data->bones[i]->name, boneName) == 0) return i; - return -1; -} - -spSlot* spSkeleton_findSlot (const spSkeleton* self, const char* slotName) { - int i; - for (i = 0; i < self->slotCount; ++i) - if (strcmp(self->data->slots[i]->name, slotName) == 0) return self->slots[i]; - return 0; -} - -int spSkeleton_findSlotIndex (const spSkeleton* self, const char* slotName) { - int i; - for (i = 0; i < self->slotCount; ++i) - if (strcmp(self->data->slots[i]->name, slotName) == 0) return i; - return -1; -} - -int spSkeleton_setSkinByName (spSkeleton* self, const char* skinName) { - spSkin *skin; - if (!skinName) { - spSkeleton_setSkin(self, 0); - return 1; - } - skin = spSkeletonData_findSkin(self->data, skinName); - if (!skin) return 0; - spSkeleton_setSkin(self, skin); - return 1; -} - -void spSkeleton_setSkin (spSkeleton* self, spSkin* newSkin) { - if (self->skin && newSkin) spSkin_attachAll(newSkin, self, self->skin); - CONST_CAST(spSkin*, self->skin) = newSkin; -} - -spAttachment* spSkeleton_getAttachmentForSlotName (const spSkeleton* self, const char* slotName, const char* attachmentName) { - int slotIndex = spSkeletonData_findSlotIndex(self->data, slotName); - return spSkeleton_getAttachmentForSlotIndex(self, slotIndex, attachmentName); -} - -spAttachment* spSkeleton_getAttachmentForSlotIndex (const spSkeleton* self, int slotIndex, const char* attachmentName) { - if (slotIndex == -1) return 0; - if (self->skin) { - spAttachment *attachment = spSkin_getAttachment(self->skin, slotIndex, attachmentName); - if (attachment) return attachment; - } - if (self->data->defaultSkin) { - spAttachment *attachment = spSkin_getAttachment(self->data->defaultSkin, slotIndex, attachmentName); - if (attachment) return attachment; - } - return 0; -} - -int spSkeleton_setAttachment (spSkeleton* self, const char* slotName, const char* attachmentName) { - int i; - for (i = 0; i < self->slotCount; ++i) { - spSlot *slot = self->slots[i]; - if (strcmp(slot->data->name, slotName) == 0) { - if (!attachmentName) - spSlot_setAttachment(slot, 0); - else { - spAttachment* attachment = spSkeleton_getAttachmentForSlotIndex(self, i, attachmentName); - if (!attachment) return 0; - spSlot_setAttachment(slot, attachment); - } - return 1; - } - } - return 0; -} - -void spSkeleton_update (spSkeleton* self, float deltaTime) { - self->time += deltaTime; -} diff --git a/cocos/editor-support/spine/Skeleton.h b/cocos/editor-support/spine/Skeleton.h index 070d4b0fe2..34517c8ffb 100644 --- a/cocos/editor-support/spine/Skeleton.h +++ b/cocos/editor-support/spine/Skeleton.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_SKELETON_H_ @@ -37,6 +34,7 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { @@ -46,14 +44,17 @@ typedef struct spSkeleton spSkeleton; struct spSkeleton { spSkeletonData* const data; - int boneCount; + int bonesCount; spBone** bones; spBone* const root; - int slotCount; + int slotsCount; spSlot** slots; spSlot** drawOrder; + int ikConstraintsCount; + spIkConstraint** ikConstraints; + spSkin* const skin; float r, g, b, a; float time; @@ -64,6 +65,8 @@ struct spSkeleton { spSkeleton* spSkeleton_create (spSkeletonData* data); void spSkeleton_dispose (spSkeleton* self); +/* Caches information about bones and IK constraints. Must be called if bones or IK constraints are added or removed. */ +void spSkeleton_updateCache (const spSkeleton* self); void spSkeleton_updateWorldTransform (const spSkeleton* self); void spSkeleton_setToSetupPose (const spSkeleton* self); @@ -95,6 +98,9 @@ spAttachment* spSkeleton_getAttachmentForSlotIndex (const spSkeleton* self, int /* Returns 0 if the slot or attachment was not found. */ int spSkeleton_setAttachment (spSkeleton* self, const char* slotName, const char* attachmentName); +/* Returns 0 if the IK constraint was not found. */ +spIkConstraint* spSkeleton_findIkConstraint (const spSkeleton* self, const char* ikConstraintName); + void spSkeleton_update (spSkeleton* self, float deltaTime); #ifdef SPINE_SHORT_NAMES diff --git a/cocos/editor-support/spine/SkeletonAnimation.cpp b/cocos/editor-support/spine/SkeletonAnimation.cpp new file mode 100644 index 0000000000..48ce80d67e --- /dev/null +++ b/cocos/editor-support/spine/SkeletonAnimation.cpp @@ -0,0 +1,249 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include +#include +#include + +USING_NS_CC; +using std::min; +using std::max; +using std::vector; + +namespace spine { + +void animationCallback (spAnimationState* state, int trackIndex, spEventType type, spEvent* event, int loopCount) { + ((SkeletonAnimation*)state->rendererObject)->onAnimationStateEvent(trackIndex, type, event, loopCount); +} + +void trackEntryCallback (spAnimationState* state, int trackIndex, spEventType type, spEvent* event, int loopCount) { + ((SkeletonAnimation*)state->rendererObject)->onTrackEntryEvent(trackIndex, type, event, loopCount); +} + +typedef struct _TrackEntryListeners { + StartListener startListener; + EndListener endListener; + CompleteListener completeListener; + EventListener eventListener; +} _TrackEntryListeners; + +static _TrackEntryListeners* getListeners (spTrackEntry* entry) { + if (!entry->rendererObject) { + entry->rendererObject = NEW(spine::_TrackEntryListeners); + entry->listener = trackEntryCallback; + } + return (_TrackEntryListeners*)entry->rendererObject; +} + +void disposeTrackEntry (spTrackEntry* entry) { + if (entry->rendererObject) FREE(entry->rendererObject); + _spTrackEntry_dispose(entry); +} + +// + +SkeletonAnimation* SkeletonAnimation::createWithData (spSkeletonData* skeletonData) { + SkeletonAnimation* node = new SkeletonAnimation(skeletonData); + node->autorelease(); + return node; +} + +SkeletonAnimation* SkeletonAnimation::createWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale) { + SkeletonAnimation* node = new SkeletonAnimation(skeletonDataFile, atlas, scale); + node->autorelease(); + return node; +} + +SkeletonAnimation* SkeletonAnimation::createWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) { + SkeletonAnimation* node = new SkeletonAnimation(skeletonDataFile, atlasFile, scale); + node->autorelease(); + return node; +} + +void SkeletonAnimation::initialize () { + _ownsAnimationStateData = true; + _state = spAnimationState_create(spAnimationStateData_create(_skeleton->data)); + _state->rendererObject = this; + _state->listener = animationCallback; + + _spAnimationState* stateInternal = (_spAnimationState*)_state; + stateInternal->disposeTrackEntry = disposeTrackEntry; +} + +SkeletonAnimation::SkeletonAnimation (spSkeletonData *skeletonData) + : SkeletonRenderer(skeletonData) { + initialize(); +} + +SkeletonAnimation::SkeletonAnimation (const std::string& skeletonDataFile, spAtlas* atlas, float scale) + : SkeletonRenderer(skeletonDataFile, atlas, scale) { + initialize(); +} + +SkeletonAnimation::SkeletonAnimation (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) + : SkeletonRenderer(skeletonDataFile, atlasFile, scale) { + initialize(); +} + +SkeletonAnimation::~SkeletonAnimation () { + if (_ownsAnimationStateData) spAnimationStateData_dispose(_state->data); + spAnimationState_dispose(_state); +} + +void SkeletonAnimation::update (float deltaTime) { + super::update(deltaTime); + + deltaTime *= _timeScale; + spAnimationState_update(_state, deltaTime); + spAnimationState_apply(_state, _skeleton); + spSkeleton_updateWorldTransform(_skeleton); +} + +void SkeletonAnimation::setAnimationStateData (spAnimationStateData* stateData) { + CCASSERT(stateData, "stateData cannot be null."); + + if (_ownsAnimationStateData) spAnimationStateData_dispose(_state->data); + spAnimationState_dispose(_state); + + _ownsAnimationStateData = false; + _state = spAnimationState_create(stateData); + _state->rendererObject = this; + _state->listener = animationCallback; +} + +void SkeletonAnimation::setMix (const std::string& fromAnimation, const std::string& toAnimation, float duration) { + spAnimationStateData_setMixByName(_state->data, fromAnimation.c_str(), toAnimation.c_str(), duration); +} + +spTrackEntry* SkeletonAnimation::setAnimation (int trackIndex, const std::string& name, bool loop) { + spAnimation* animation = spSkeletonData_findAnimation(_skeleton->data, name.c_str()); + if (!animation) { + log("Spine: Animation not found: %s", name.c_str()); + return 0; + } + return spAnimationState_setAnimation(_state, trackIndex, animation, loop); +} + +spTrackEntry* SkeletonAnimation::addAnimation (int trackIndex, const std::string& name, bool loop, float delay) { + spAnimation* animation = spSkeletonData_findAnimation(_skeleton->data, name.c_str()); + if (!animation) { + log("Spine: Animation not found: %s", name.c_str()); + return 0; + } + return spAnimationState_addAnimation(_state, trackIndex, animation, loop, delay); +} + +spTrackEntry* SkeletonAnimation::getCurrent (int trackIndex) { + return spAnimationState_getCurrent(_state, trackIndex); +} + +void SkeletonAnimation::clearTracks () { + spAnimationState_clearTracks(_state); +} + +void SkeletonAnimation::clearTrack (int trackIndex) { + spAnimationState_clearTrack(_state, trackIndex); +} + +void SkeletonAnimation::onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount) { + switch (type) { + case SP_ANIMATION_START: + if (_startListener) _startListener(trackIndex); + break; + case SP_ANIMATION_END: + if (_endListener) _endListener(trackIndex); + break; + case SP_ANIMATION_COMPLETE: + if (_completeListener) _completeListener(trackIndex, loopCount); + break; + case SP_ANIMATION_EVENT: + if (_eventListener) _eventListener(trackIndex, event); + break; + } +} + +void SkeletonAnimation::onTrackEntryEvent (int trackIndex, spEventType type, spEvent* event, int loopCount) { + spTrackEntry* entry = spAnimationState_getCurrent(_state, trackIndex); + if (!entry->rendererObject) return; + _TrackEntryListeners* listeners = (_TrackEntryListeners*)entry->rendererObject; + switch (type) { + case SP_ANIMATION_START: + if (listeners->startListener) listeners->startListener(trackIndex); + break; + case SP_ANIMATION_END: + if (listeners->endListener) listeners->endListener(trackIndex); + break; + case SP_ANIMATION_COMPLETE: + if (listeners->completeListener) listeners->completeListener(trackIndex, loopCount); + break; + case SP_ANIMATION_EVENT: + if (listeners->eventListener) listeners->eventListener(trackIndex, event); + break; + } +} + +void SkeletonAnimation::setStartListener (const StartListener& listener) { + _startListener = listener; +} + +void SkeletonAnimation::setEndListener (const EndListener& listener) { + _endListener = listener; +} + +void SkeletonAnimation::setCompleteListener (const CompleteListener& listener) { + _completeListener = listener; +} + +void SkeletonAnimation::setEventListener (const EventListener& listener) { + _eventListener = listener; +} + +void SkeletonAnimation::setTrackStartListener (spTrackEntry* entry, const StartListener& listener) { + getListeners(entry)->startListener = listener; +} + +void SkeletonAnimation::setTrackEndListener (spTrackEntry* entry, const EndListener& listener) { + getListeners(entry)->endListener = listener; +} + +void SkeletonAnimation::setTrackCompleteListener (spTrackEntry* entry, const CompleteListener& listener) { + getListeners(entry)->completeListener = listener; +} + +void SkeletonAnimation::setTrackEventListener (spTrackEntry* entry, const EventListener& listener) { + getListeners(entry)->eventListener = listener; +} + +spAnimationState* SkeletonAnimation::getState() const { + return _state; +} + +} diff --git a/cocos/editor-support/spine/SkeletonAnimation.h b/cocos/editor-support/spine/SkeletonAnimation.h new file mode 100644 index 0000000000..b9a37e0d17 --- /dev/null +++ b/cocos/editor-support/spine/SkeletonAnimation.h @@ -0,0 +1,102 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#ifndef SPINE_SKELETONANIMATION_H_ +#define SPINE_SKELETONANIMATION_H_ + +#include +#include +#include "cocos2d.h" + +namespace spine { + +typedef std::function StartListener; +typedef std::function EndListener; +typedef std::function CompleteListener; +typedef std::function EventListener; + +/** Draws an animated skeleton, providing an AnimationState for applying one or more animations and queuing animations to be + * played later. */ +class SkeletonAnimation: public SkeletonRenderer { +public: + static SkeletonAnimation* createWithData (spSkeletonData* skeletonData); + static SkeletonAnimation* createWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 1); + static SkeletonAnimation* createWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); + + virtual void update (float deltaTime); + + void setAnimationStateData (spAnimationStateData* stateData); + void setMix (const std::string& fromAnimation, const std::string& toAnimation, float duration); + + spTrackEntry* setAnimation (int trackIndex, const std::string& name, bool loop); + spTrackEntry* addAnimation (int trackIndex, const std::string& name, bool loop, float delay = 0); + spTrackEntry* getCurrent (int trackIndex = 0); + void clearTracks (); + void clearTrack (int trackIndex = 0); + + void setStartListener (const StartListener& listener); + void setEndListener (const EndListener& listener); + void setCompleteListener (const CompleteListener& listener); + void setEventListener (const EventListener& listener); + + void setTrackStartListener (spTrackEntry* entry, const StartListener& listener); + void setTrackEndListener (spTrackEntry* entry, const EndListener& listener); + void setTrackCompleteListener (spTrackEntry* entry, const CompleteListener& listener); + void setTrackEventListener (spTrackEntry* entry, const EventListener& listener); + + virtual void onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount); + virtual void onTrackEntryEvent (int trackIndex, spEventType type, spEvent* event, int loopCount); + + spAnimationState* getState() const; + +protected: + SkeletonAnimation (); + SkeletonAnimation (spSkeletonData* skeletonData); + SkeletonAnimation (const std::string&skeletonDataFile, spAtlas* atlas, float scale = 1); + SkeletonAnimation (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); + virtual ~SkeletonAnimation (); + void initialize (); + + spAnimationState* _state; + + bool _ownsAnimationStateData; + + StartListener _startListener; + EndListener _endListener; + CompleteListener _completeListener; + EventListener _eventListener; + +private: + typedef SkeletonRenderer super; +}; + +} + +#endif /* SPINE_SKELETONANIMATION_H_ */ diff --git a/cocos/editor-support/spine/SkeletonBounds.cpp b/cocos/editor-support/spine/SkeletonBounds.c similarity index 73% rename from cocos/editor-support/spine/SkeletonBounds.cpp rename to cocos/editor-support/spine/SkeletonBounds.c index 054639fbdf..16c35faccc 100644 --- a/cocos/editor-support/spine/SkeletonBounds.cpp +++ b/cocos/editor-support/spine/SkeletonBounds.c @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #include @@ -108,18 +105,18 @@ void spSkeletonBounds_update (spSkeletonBounds* self, spSkeleton* skeleton, int/ int i; _spSkeletonBounds* internal = SUB_CAST(_spSkeletonBounds, self); - if (internal->capacity < skeleton->slotCount) { + if (internal->capacity < skeleton->slotsCount) { spPolygon** newPolygons; FREE(self->boundingBoxes); - self->boundingBoxes = MALLOC(spBoundingBoxAttachment*, skeleton->slotCount); + self->boundingBoxes = MALLOC(spBoundingBoxAttachment*, skeleton->slotsCount); - newPolygons = CALLOC(spPolygon*, skeleton->slotCount); + newPolygons = CALLOC(spPolygon*, skeleton->slotsCount); memcpy(newPolygons, self->polygons, internal->capacity); FREE(self->polygons); self->polygons = newPolygons; - internal->capacity = skeleton->slotCount; + internal->capacity = skeleton->slotsCount; } self->minX = (float)INT_MAX; @@ -128,13 +125,13 @@ void spSkeletonBounds_update (spSkeletonBounds* self, spSkeleton* skeleton, int/ self->maxY = (float)INT_MIN; self->count = 0; - for (i = 0; i < skeleton->slotCount; ++i) { + for (i = 0; i < skeleton->slotsCount; ++i) { spPolygon* polygon; spBoundingBoxAttachment* boundingBox; spSlot* slot = skeleton->slots[i]; spAttachment* attachment = slot->attachment; - if (!attachment || attachment->type != ATTACHMENT_BOUNDING_BOX) continue; + if (!attachment || attachment->type != SP_ATTACHMENT_BOUNDING_BOX) continue; boundingBox = (spBoundingBoxAttachment*)attachment; self->boundingBoxes[self->count] = boundingBox; @@ -144,7 +141,7 @@ void spSkeletonBounds_update (spSkeletonBounds* self, spSkeleton* skeleton, int/ self->polygons[self->count] = polygon = spPolygon_create(boundingBox->verticesCount); } polygon->count = boundingBox->verticesCount; - spBoundingBoxAttachment_computeWorldVertices(boundingBox, skeleton->x, skeleton->y, slot->bone, polygon->vertices); + spBoundingBoxAttachment_computeWorldVertices(boundingBox, slot->bone, polygon->vertices); if (updateAabb) { int ii = 0; @@ -158,7 +155,7 @@ void spSkeletonBounds_update (spSkeletonBounds* self, spSkeleton* skeleton, int/ } } - ++self->count; + self->count++; } } diff --git a/cocos/editor-support/spine/SkeletonBounds.h b/cocos/editor-support/spine/SkeletonBounds.h index 500bd861af..9767dacf42 100644 --- a/cocos/editor-support/spine/SkeletonBounds.h +++ b/cocos/editor-support/spine/SkeletonBounds.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_SKELETONBOUNDS_H_ diff --git a/cocos/editor-support/spine/SkeletonData.c b/cocos/editor-support/spine/SkeletonData.c new file mode 100644 index 0000000000..d586415b77 --- /dev/null +++ b/cocos/editor-support/spine/SkeletonData.c @@ -0,0 +1,122 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include +#include + +spSkeletonData* spSkeletonData_create () { + return NEW(spSkeletonData); +} + +void spSkeletonData_dispose (spSkeletonData* self) { + int i; + for (i = 0; i < self->bonesCount; ++i) + spBoneData_dispose(self->bones[i]); + FREE(self->bones); + + for (i = 0; i < self->slotsCount; ++i) + spSlotData_dispose(self->slots[i]); + FREE(self->slots); + + for (i = 0; i < self->skinsCount; ++i) + spSkin_dispose(self->skins[i]); + FREE(self->skins); + + for (i = 0; i < self->eventsCount; ++i) + spEventData_dispose(self->events[i]); + FREE(self->events); + + for (i = 0; i < self->animationsCount; ++i) + spAnimation_dispose(self->animations[i]); + FREE(self->animations); + + for (i = 0; i < self->ikConstraintsCount; ++i) + spIkConstraintData_dispose(self->ikConstraints[i]); + FREE(self->ikConstraints); + + FREE(self); +} + +spBoneData* spSkeletonData_findBone (const spSkeletonData* self, const char* boneName) { + int i; + for (i = 0; i < self->bonesCount; ++i) + if (strcmp(self->bones[i]->name, boneName) == 0) return self->bones[i]; + return 0; +} + +int spSkeletonData_findBoneIndex (const spSkeletonData* self, const char* boneName) { + int i; + for (i = 0; i < self->bonesCount; ++i) + if (strcmp(self->bones[i]->name, boneName) == 0) return i; + return -1; +} + +spSlotData* spSkeletonData_findSlot (const spSkeletonData* self, const char* slotName) { + int i; + for (i = 0; i < self->slotsCount; ++i) + if (strcmp(self->slots[i]->name, slotName) == 0) return self->slots[i]; + return 0; +} + +int spSkeletonData_findSlotIndex (const spSkeletonData* self, const char* slotName) { + int i; + for (i = 0; i < self->slotsCount; ++i) + if (strcmp(self->slots[i]->name, slotName) == 0) return i; + return -1; +} + +spSkin* spSkeletonData_findSkin (const spSkeletonData* self, const char* skinName) { + int i; + for (i = 0; i < self->skinsCount; ++i) + if (strcmp(self->skins[i]->name, skinName) == 0) return self->skins[i]; + return 0; +} + +spEventData* spSkeletonData_findEvent (const spSkeletonData* self, const char* eventName) { + int i; + for (i = 0; i < self->eventsCount; ++i) + if (strcmp(self->events[i]->name, eventName) == 0) return self->events[i]; + return 0; +} + +spAnimation* spSkeletonData_findAnimation (const spSkeletonData* self, const char* animationName) { + int i; + for (i = 0; i < self->animationsCount; ++i) + if (strcmp(self->animations[i]->name, animationName) == 0) return self->animations[i]; + return 0; +} + +spIkConstraintData* spSkeletonData_findIkConstraint (const spSkeletonData* self, const char* ikConstraintName) { + int i; + for (i = 0; i < self->ikConstraintsCount; ++i) + if (strcmp(self->ikConstraints[i]->name, ikConstraintName) == 0) return self->ikConstraints[i]; + return 0; +} diff --git a/cocos/editor-support/spine/SkeletonData.cpp b/cocos/editor-support/spine/SkeletonData.cpp deleted file mode 100644 index 184e1ced31..0000000000 --- a/cocos/editor-support/spine/SkeletonData.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include -#include - -spSkeletonData* spSkeletonData_create () { - return NEW(spSkeletonData); -} - -void spSkeletonData_dispose (spSkeletonData* self) { - int i; - for (i = 0; i < self->boneCount; ++i) - spBoneData_dispose(self->bones[i]); - FREE(self->bones); - - for (i = 0; i < self->slotCount; ++i) - spSlotData_dispose(self->slots[i]); - FREE(self->slots); - - for (i = 0; i < self->skinCount; ++i) - spSkin_dispose(self->skins[i]); - FREE(self->skins); - - for (i = 0; i < self->animationCount; ++i) - spAnimation_dispose(self->animations[i]); - FREE(self->animations); - - for (i = 0; i < self->eventCount; ++i) - spEventData_dispose(self->events[i]); - FREE(self->events); - - FREE(self); -} - -spBoneData* spSkeletonData_findBone (const spSkeletonData* self, const char* boneName) { - int i; - for (i = 0; i < self->boneCount; ++i) - if (strcmp(self->bones[i]->name, boneName) == 0) return self->bones[i]; - return 0; -} - -int spSkeletonData_findBoneIndex (const spSkeletonData* self, const char* boneName) { - int i; - for (i = 0; i < self->boneCount; ++i) - if (strcmp(self->bones[i]->name, boneName) == 0) return i; - return -1; -} - -spSlotData* spSkeletonData_findSlot (const spSkeletonData* self, const char* slotName) { - int i; - for (i = 0; i < self->slotCount; ++i) - if (strcmp(self->slots[i]->name, slotName) == 0) return self->slots[i]; - return 0; -} - -int spSkeletonData_findSlotIndex (const spSkeletonData* self, const char* slotName) { - int i; - for (i = 0; i < self->slotCount; ++i) - if (strcmp(self->slots[i]->name, slotName) == 0) return i; - return -1; -} - -spSkin* spSkeletonData_findSkin (const spSkeletonData* self, const char* skinName) { - int i; - for (i = 0; i < self->skinCount; ++i) - if (strcmp(self->skins[i]->name, skinName) == 0) return self->skins[i]; - return 0; -} - -spEventData* spSkeletonData_findEvent (const spSkeletonData* self, const char* eventName) { - int i; - for (i = 0; i < self->eventCount; ++i) - if (strcmp(self->events[i]->name, eventName) == 0) return self->events[i]; - return 0; -} - -spAnimation* spSkeletonData_findAnimation (const spSkeletonData* self, const char* animationName) { - int i; - for (i = 0; i < self->animationCount; ++i) - if (strcmp(self->animations[i]->name, animationName) == 0) return self->animations[i]; - return 0; -} diff --git a/cocos/editor-support/spine/SkeletonData.h b/cocos/editor-support/spine/SkeletonData.h index c23879efb4..1c9822fe46 100644 --- a/cocos/editor-support/spine/SkeletonData.h +++ b/cocos/editor-support/spine/SkeletonData.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_SKELETONDATA_H_ @@ -39,27 +36,35 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { #endif typedef struct { - int boneCount; + const char* version; + const char* hash; + float width, height; + + int bonesCount; spBoneData** bones; - int slotCount; + int slotsCount; spSlotData** slots; - int skinCount; + int skinsCount; spSkin** skins; spSkin* defaultSkin; - int eventCount; + int eventsCount; spEventData** events; - int animationCount; + int animationsCount; spAnimation** animations; + + int ikConstraintsCount; + spIkConstraintData** ikConstraints; } spSkeletonData; spSkeletonData* spSkeletonData_create (); @@ -77,6 +82,8 @@ spEventData* spSkeletonData_findEvent (const spSkeletonData* self, const char* e spAnimation* spSkeletonData_findAnimation (const spSkeletonData* self, const char* animationName); +spIkConstraintData* spSkeletonData_findIkConstraint (const spSkeletonData* self, const char* ikConstraintName); + #ifdef SPINE_SHORT_NAMES typedef spSkeletonData SkeletonData; #define SkeletonData_create(...) spSkeletonData_create(__VA_ARGS__) diff --git a/cocos/editor-support/spine/SkeletonJson.c b/cocos/editor-support/spine/SkeletonJson.c new file mode 100644 index 0000000000..4fd5615cd6 --- /dev/null +++ b/cocos/editor-support/spine/SkeletonJson.c @@ -0,0 +1,770 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include +#include "Json.h" +#include +#include + +typedef struct { + spSkeletonJson super; + int ownsLoader; +} _spSkeletonJson; + +spSkeletonJson* spSkeletonJson_createWithLoader (spAttachmentLoader* attachmentLoader) { + spSkeletonJson* self = SUPER(NEW(_spSkeletonJson)); + self->scale = 1; + self->attachmentLoader = attachmentLoader; + return self; +} + +spSkeletonJson* spSkeletonJson_create (spAtlas* atlas) { + spAtlasAttachmentLoader* attachmentLoader = spAtlasAttachmentLoader_create(atlas); + spSkeletonJson* self = spSkeletonJson_createWithLoader(SUPER(attachmentLoader)); + SUB_CAST(_spSkeletonJson, self)->ownsLoader = 1; + return self; +} + +void spSkeletonJson_dispose (spSkeletonJson* self) { + if (SUB_CAST(_spSkeletonJson, self)->ownsLoader) spAttachmentLoader_dispose(self->attachmentLoader); + FREE(self->error); + FREE(self); +} + +void _spSkeletonJson_setError (spSkeletonJson* self, Json* root, const char* value1, const char* value2) { + char message[256]; + int length; + FREE(self->error); + strcpy(message, value1); + length = (int)strlen(value1); + if (value2) strncat(message + length, value2, 256 - length); + MALLOC_STR(self->error, message); + if (root) Json_dispose(root); +} + +static float toColor (const char* value, int index) { + char digits[3]; + char *error; + int color; + + if (strlen(value) != 8) return -1; + value += index * 2; + + digits[0] = *value; + digits[1] = *(value + 1); + digits[2] = '\0'; + color = (int)strtoul(digits, &error, 16); + if (*error != 0) return -1; + return color / (float)255; +} + +static void readCurve (spCurveTimeline* timeline, int frameIndex, Json* frame) { + Json* curve = Json_getItem(frame, "curve"); + if (!curve) return; + if (curve->type == Json_String && strcmp(curve->valueString, "stepped") == 0) + spCurveTimeline_setStepped(timeline, frameIndex); + else if (curve->type == Json_Array) { + Json* child0 = curve->child; + Json* child1 = child0->next; + Json* child2 = child1->next; + Json* child3 = child2->next; + spCurveTimeline_setCurve(timeline, frameIndex, child0->valueFloat, child1->valueFloat, child2->valueFloat, + child3->valueFloat); + } +} + +static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* root, spSkeletonData *skeletonData) { + int i; + spAnimation* animation; + Json* frame; + float duration; + + Json* bones = Json_getItem(root, "bones"); + Json* slots = Json_getItem(root, "slots"); + Json* ik = Json_getItem(root, "ik"); + Json* ffd = Json_getItem(root, "ffd"); + Json* drawOrder = Json_getItem(root, "draworder"); + Json* events = Json_getItem(root, "events"); + Json *boneMap, *slotMap, *ikMap, *ffdMap; + + int timelinesCount = 0; + for (boneMap = bones ? bones->child : 0; boneMap; boneMap = boneMap->next) + timelinesCount += boneMap->size; + for (slotMap = slots ? slots->child : 0; slotMap; slotMap = slotMap->next) + timelinesCount += slotMap->size; + timelinesCount += ik ? ik->size : 0; + for (ffdMap = ffd ? ffd->child : 0; ffdMap; ffdMap = ffdMap->next) + for (slotMap = ffdMap->child; slotMap; slotMap = slotMap->next) + timelinesCount += slotMap->size; + if (events) ++timelinesCount; + if (drawOrder) ++timelinesCount; + + animation = spAnimation_create(root->name, timelinesCount); + animation->timelinesCount = 0; + skeletonData->animations[skeletonData->animationsCount++] = animation; + + /* Slot timelines. */ + for (slotMap = slots ? slots->child : 0; slotMap; slotMap = slotMap->next) { + Json *timelineArray; + + int slotIndex = spSkeletonData_findSlotIndex(skeletonData, slotMap->name); + if (slotIndex == -1) { + spAnimation_dispose(animation); + _spSkeletonJson_setError(self, root, "Slot not found: ", slotMap->name); + return 0; + } + + for (timelineArray = slotMap->child; timelineArray; timelineArray = timelineArray->next) { + if (strcmp(timelineArray->name, "color") == 0) { + spColorTimeline *timeline = spColorTimeline_create(timelineArray->size); + timeline->slotIndex = slotIndex; + for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { + const char* s = Json_getString(frame, "color", 0); + spColorTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), toColor(s, 0), toColor(s, 1), toColor(s, 2), + toColor(s, 3)); + readCurve(SUPER(timeline), i, frame); + } + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); + duration = timeline->frames[timelineArray->size * 5 - 5]; + if (duration > animation->duration) animation->duration = duration; + + } else if (strcmp(timelineArray->name, "attachment") == 0) { + spAttachmentTimeline *timeline = spAttachmentTimeline_create(timelineArray->size); + timeline->slotIndex = slotIndex; + for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { + Json* name = Json_getItem(frame, "name"); + spAttachmentTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), + name->type == Json_NULL ? 0 : name->valueString); + } + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); + duration = timeline->frames[timelineArray->size - 1]; + if (duration > animation->duration) animation->duration = duration; + + } else { + spAnimation_dispose(animation); + _spSkeletonJson_setError(self, 0, "Invalid timeline type for a slot: ", timelineArray->name); + return 0; + } + } + } + + /* Bone timelines. */ + for (boneMap = bones ? bones->child : 0; boneMap; boneMap = boneMap->next) { + Json *timelineArray; + + int boneIndex = spSkeletonData_findBoneIndex(skeletonData, boneMap->name); + if (boneIndex == -1) { + spAnimation_dispose(animation); + _spSkeletonJson_setError(self, root, "Bone not found: ", boneMap->name); + return 0; + } + + for (timelineArray = boneMap->child; timelineArray; timelineArray = timelineArray->next) { + if (strcmp(timelineArray->name, "rotate") == 0) { + spRotateTimeline *timeline = spRotateTimeline_create(timelineArray->size); + timeline->boneIndex = boneIndex; + for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { + spRotateTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "angle", 0)); + readCurve(SUPER(timeline), i, frame); + } + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); + duration = timeline->frames[timelineArray->size * 2 - 2]; + if (duration > animation->duration) animation->duration = duration; + + } else { + int isScale = strcmp(timelineArray->name, "scale") == 0; + if (isScale || strcmp(timelineArray->name, "translate") == 0) { + float scale = isScale ? 1 : self->scale; + spTranslateTimeline *timeline = + isScale ? spScaleTimeline_create(timelineArray->size) : spTranslateTimeline_create(timelineArray->size); + timeline->boneIndex = boneIndex; + for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { + spTranslateTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "x", 0) * scale, + Json_getFloat(frame, "y", 0) * scale); + readCurve(SUPER(timeline), i, frame); + } + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); + duration = timeline->frames[timelineArray->size * 3 - 3]; + if (duration > animation->duration) animation->duration = duration; + } else { + spAnimation_dispose(animation); + _spSkeletonJson_setError(self, 0, "Invalid timeline type for a bone: ", timelineArray->name); + return 0; + } + } + } + } + + /* IK timelines. */ + for (ikMap = ik ? ik->child : 0; ikMap; ikMap = ikMap->next) { + spIkConstraintData* ikConstraint = spSkeletonData_findIkConstraint(skeletonData, ikMap->name); + spIkConstraintTimeline* timeline = spIkConstraintTimeline_create(ikMap->size); + for (i = 0; i < skeletonData->ikConstraintsCount; ++i) { + if (ikConstraint == skeletonData->ikConstraints[i]) { + timeline->ikConstraintIndex = i; + break; + } + } + for (frame = ikMap->child, i = 0; frame; frame = frame->next, ++i) { + spIkConstraintTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "mix", 0), + Json_getInt(frame, "bendPositive", 1) ? 1 : -1); + readCurve(SUPER(timeline), i, frame); + } + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); + duration = timeline->frames[ikMap->size * 3 - 3]; + if (duration > animation->duration) animation->duration = duration; + } + + /* FFD timelines. */ + for (ffdMap = ffd ? ffd->child : 0; ffdMap; ffdMap = ffdMap->next) { + spSkin* skin = spSkeletonData_findSkin(skeletonData, ffdMap->name); + for (slotMap = ffdMap->child; slotMap; slotMap = slotMap->next) { + int slotIndex = spSkeletonData_findSlotIndex(skeletonData, slotMap->name); + Json* timelineArray; + for (timelineArray = slotMap->child; timelineArray; timelineArray = timelineArray->next) { + Json* frame; + int verticesCount = 0; + float* tempVertices; + spFFDTimeline *timeline; + + spAttachment* attachment = spSkin_getAttachment(skin, slotIndex, timelineArray->name); + if (!attachment) { + spAnimation_dispose(animation); + _spSkeletonJson_setError(self, 0, "Attachment not found: ", timelineArray->name); + return 0; + } + if (attachment->type == SP_ATTACHMENT_MESH) + verticesCount = SUB_CAST(spMeshAttachment, attachment)->verticesCount; + else if (attachment->type == SP_ATTACHMENT_SKINNED_MESH) + verticesCount = SUB_CAST(spSkinnedMeshAttachment, attachment)->weightsCount / 3 * 2; + + timeline = spFFDTimeline_create(timelineArray->size, verticesCount); + timeline->slotIndex = slotIndex; + timeline->attachment = attachment; + + tempVertices = MALLOC(float, verticesCount); + for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { + Json* vertices = Json_getItem(frame, "vertices"); + float* frameVertices; + if (!vertices) { + if (attachment->type == SP_ATTACHMENT_MESH) + frameVertices = SUB_CAST(spMeshAttachment, attachment)->vertices; + else { + frameVertices = tempVertices; + memset(frameVertices, 0, sizeof(float) * verticesCount); + } + } else { + int v, start = Json_getInt(frame, "offset", 0); + Json* vertex; + frameVertices = tempVertices; + memset(frameVertices, 0, sizeof(float) * start); + if (self->scale == 1) { + for (vertex = vertices->child, v = start; vertex; vertex = vertex->next, ++v) + frameVertices[v] = vertex->valueFloat; + } else { + for (vertex = vertices->child, v = start; vertex; vertex = vertex->next, ++v) + frameVertices[v] = vertex->valueFloat * self->scale; + } + memset(frameVertices + v, 0, sizeof(float) * (verticesCount - v)); + if (attachment->type == SP_ATTACHMENT_MESH) { + float* meshVertices = SUB_CAST(spMeshAttachment, attachment)->vertices; + for (v = 0; v < verticesCount; ++v) + frameVertices[v] += meshVertices[v]; + } + } + spFFDTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), frameVertices); + readCurve(SUPER(timeline), i, frame); + } + FREE(tempVertices); + + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); + duration = timeline->frames[timelineArray->size - 1]; + if (duration > animation->duration) animation->duration = duration; + } + } + } + + /* Draw order timeline. */ + if (drawOrder) { + spDrawOrderTimeline* timeline = spDrawOrderTimeline_create(drawOrder->size, skeletonData->slotsCount); + for (frame = drawOrder->child, i = 0; frame; frame = frame->next, ++i) { + int ii; + int* drawOrder = 0; + Json* offsets = Json_getItem(frame, "offsets"); + if (offsets) { + Json* offsetMap; + int* unchanged = MALLOC(int, skeletonData->slotsCount - offsets->size); + int originalIndex = 0, unchangedIndex = 0; + + drawOrder = MALLOC(int, skeletonData->slotsCount); + for (ii = skeletonData->slotsCount - 1; ii >= 0; --ii) + drawOrder[ii] = -1; + + for (offsetMap = offsets->child; offsetMap; offsetMap = offsetMap->next) { + int slotIndex = spSkeletonData_findSlotIndex(skeletonData, Json_getString(offsetMap, "slot", 0)); + if (slotIndex == -1) { + spAnimation_dispose(animation); + _spSkeletonJson_setError(self, 0, "Slot not found: ", Json_getString(offsetMap, "slot", 0)); + return 0; + } + /* Collect unchanged items. */ + while (originalIndex != slotIndex) + unchanged[unchangedIndex++] = originalIndex++; + /* Set changed items. */ + drawOrder[originalIndex + Json_getInt(offsetMap, "offset", 0)] = originalIndex; + originalIndex++; + } + /* Collect remaining unchanged items. */ + while (originalIndex < skeletonData->slotsCount) + unchanged[unchangedIndex++] = originalIndex++; + /* Fill in unchanged items. */ + for (ii = skeletonData->slotsCount - 1; ii >= 0; ii--) + if (drawOrder[ii] == -1) drawOrder[ii] = unchanged[--unchangedIndex]; + FREE(unchanged); + } + spDrawOrderTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), drawOrder); + FREE(drawOrder); + } + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); + duration = timeline->frames[drawOrder->size - 1]; + if (duration > animation->duration) animation->duration = duration; + } + + /* Event timeline. */ + if (events) { + Json* frame; + + spEventTimeline* timeline = spEventTimeline_create(events->size); + for (frame = events->child, i = 0; frame; frame = frame->next, ++i) { + spEvent* event; + const char* stringValue; + spEventData* eventData = spSkeletonData_findEvent(skeletonData, Json_getString(frame, "name", 0)); + if (!eventData) { + spAnimation_dispose(animation); + _spSkeletonJson_setError(self, 0, "Event not found: ", Json_getString(frame, "name", 0)); + return 0; + } + event = spEvent_create(eventData); + event->intValue = Json_getInt(frame, "int", eventData->intValue); + event->floatValue = Json_getFloat(frame, "float", eventData->floatValue); + stringValue = Json_getString(frame, "string", eventData->stringValue); + if (stringValue) MALLOC_STR(event->stringValue, stringValue); + spEventTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), event); + } + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); + duration = timeline->frames[events->size - 1]; + if (duration > animation->duration) animation->duration = duration; + } + + return animation; +} + +spSkeletonData* spSkeletonJson_readSkeletonDataFile (spSkeletonJson* self, const char* path) { + int length; + spSkeletonData* skeletonData; + const char* json = _spUtil_readFile(path, &length); + if (!json) { + _spSkeletonJson_setError(self, 0, "Unable to read skeleton file: ", path); + return 0; + } + skeletonData = spSkeletonJson_readSkeletonData(self, json); + FREE(json); + return skeletonData; +} + +spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const char* json) { + int i, ii; + spSkeletonData* skeletonData; + Json *root, *skeleton, *bones, *boneMap, *ik, *slots, *skins, *animations, *events; + + FREE(self->error); + CONST_CAST(char*, self->error) = 0; + + root = Json_create(json); + if (!root) { + _spSkeletonJson_setError(self, 0, "Invalid skeleton JSON: ", Json_getError()); + return 0; + } + + skeletonData = spSkeletonData_create(); + + skeleton = Json_getItem(root, "skeleton"); + if (skeleton) { + skeletonData->hash = Json_getString(skeleton, "hash", 0); + skeletonData->version = Json_getString(skeleton, "spine", 0); + skeletonData->width = Json_getFloat(skeleton, "width", 0); + skeletonData->height = Json_getFloat(skeleton, "height", 0); + } + + /* Bones. */ + bones = Json_getItem(root, "bones"); + skeletonData->bones = MALLOC(spBoneData*, bones->size); + for (boneMap = bones->child, i = 0; boneMap; boneMap = boneMap->next, ++i) { + spBoneData* boneData; + + spBoneData* parent = 0; + const char* parentName = Json_getString(boneMap, "parent", 0); + if (parentName) { + parent = spSkeletonData_findBone(skeletonData, parentName); + if (!parent) { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError(self, root, "Parent bone not found: ", parentName); + return 0; + } + } + + boneData = spBoneData_create(Json_getString(boneMap, "name", 0), parent); + boneData->length = Json_getFloat(boneMap, "length", 0) * self->scale; + boneData->x = Json_getFloat(boneMap, "x", 0) * self->scale; + boneData->y = Json_getFloat(boneMap, "y", 0) * self->scale; + boneData->rotation = Json_getFloat(boneMap, "rotation", 0); + boneData->scaleX = Json_getFloat(boneMap, "scaleX", 1); + boneData->scaleY = Json_getFloat(boneMap, "scaleY", 1); + boneData->inheritScale = Json_getInt(boneMap, "inheritScale", 1); + boneData->inheritRotation = Json_getInt(boneMap, "inheritRotation", 1); + + skeletonData->bones[i] = boneData; + skeletonData->bonesCount++; + } + + /* IK constraints. */ + ik = Json_getItem(root, "ik"); + if (ik) { + Json *ikMap; + skeletonData->ikConstraintsCount = ik->size; + skeletonData->ikConstraints = MALLOC(spIkConstraintData*, ik->size); + for (ikMap = ik->child, i = 0; ikMap; ikMap = ikMap->next, ++i) { + const char* targetName; + + spIkConstraintData* ikConstraintData = spIkConstraintData_create(Json_getString(ikMap, "name", 0)); + boneMap = Json_getItem(ikMap, "bones"); + ikConstraintData->bonesCount = boneMap->size; + ikConstraintData->bones = MALLOC(spBoneData*, boneMap->size); + for (boneMap = boneMap->child, ii = 0; boneMap; boneMap = boneMap->next, ++ii) { + ikConstraintData->bones[ii] = spSkeletonData_findBone(skeletonData, boneMap->valueString); + if (!ikConstraintData->bones[ii]) { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError(self, root, "IK bone not found: ", boneMap->valueString); + return 0; + } + } + + targetName = Json_getString(ikMap, "target", 0); + ikConstraintData->target = spSkeletonData_findBone(skeletonData, targetName); + if (!ikConstraintData->target) { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError(self, root, "Target bone not found: ", boneMap->name); + return 0; + } + + ikConstraintData->bendDirection = Json_getInt(ikMap, "bendPositive", 1) ? 1 : -1; + ikConstraintData->mix = Json_getFloat(ikMap, "mix", 1); + + skeletonData->ikConstraints[i] = ikConstraintData; + } + } + + /* Slots. */ + slots = Json_getItem(root, "slots"); + if (slots) { + Json *slotMap; + skeletonData->slotsCount = slots->size; + skeletonData->slots = MALLOC(spSlotData*, slots->size); + for (slotMap = slots->child, i = 0; slotMap; slotMap = slotMap->next, ++i) { + spSlotData* slotData; + const char* color; + Json *attachmentItem; + + const char* boneName = Json_getString(slotMap, "bone", 0); + spBoneData* boneData = spSkeletonData_findBone(skeletonData, boneName); + if (!boneData) { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError(self, root, "Slot bone not found: ", boneName); + return 0; + } + + slotData = spSlotData_create(Json_getString(slotMap, "name", 0), boneData); + + color = Json_getString(slotMap, "color", 0); + if (color) { + slotData->r = toColor(color, 0); + slotData->g = toColor(color, 1); + slotData->b = toColor(color, 2); + slotData->a = toColor(color, 3); + } + + attachmentItem = Json_getItem(slotMap, "attachment"); + if (attachmentItem) spSlotData_setAttachmentName(slotData, attachmentItem->valueString); + + slotData->additiveBlending = Json_getInt(slotMap, "additive", 0); + + skeletonData->slots[i] = slotData; + } + } + + /* Skins. */ + skins = Json_getItem(root, "skins"); + if (skins) { + Json *slotMap; + skeletonData->skinsCount = skins->size; + skeletonData->skins = MALLOC(spSkin*, skins->size); + for (slotMap = skins->child, i = 0; slotMap; slotMap = slotMap->next, ++i) { + Json *attachmentsMap; + spSkin *skin = spSkin_create(slotMap->name); + + skeletonData->skins[i] = skin; + if (strcmp(slotMap->name, "default") == 0) skeletonData->defaultSkin = skin; + + for (attachmentsMap = slotMap->child; attachmentsMap; attachmentsMap = attachmentsMap->next) { + int slotIndex = spSkeletonData_findSlotIndex(skeletonData, attachmentsMap->name); + Json *attachmentMap; + + for (attachmentMap = attachmentsMap->child; attachmentMap; attachmentMap = attachmentMap->next) { + spAttachment* attachment; + const char* skinAttachmentName = attachmentMap->name; + const char* attachmentName = Json_getString(attachmentMap, "name", skinAttachmentName); + const char* path = Json_getString(attachmentMap, "path", attachmentName); + const char* color; + int i; + Json* entry; + + const char* typeString = Json_getString(attachmentMap, "type", "region"); + spAttachmentType type; + if (strcmp(typeString, "region") == 0) + type = SP_ATTACHMENT_REGION; + else if (strcmp(typeString, "mesh") == 0) + type = SP_ATTACHMENT_MESH; + else if (strcmp(typeString, "skinnedmesh") == 0) + type = SP_ATTACHMENT_SKINNED_MESH; + else if (strcmp(typeString, "boundingbox") == 0) + type = SP_ATTACHMENT_BOUNDING_BOX; + else { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError(self, root, "Unknown attachment type: ", typeString); + return 0; + } + + attachment = spAttachmentLoader_newAttachment(self->attachmentLoader, skin, type, attachmentName, path); + if (!attachment) { + if (self->attachmentLoader->error1) { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError(self, root, self->attachmentLoader->error1, self->attachmentLoader->error2); + return 0; + } + continue; + } + + switch (attachment->type) { + case SP_ATTACHMENT_REGION: { + spRegionAttachment* region = SUB_CAST(spRegionAttachment, attachment); + if (path) MALLOC_STR(region->path, path); + region->x = Json_getFloat(attachmentMap, "x", 0) * self->scale; + region->y = Json_getFloat(attachmentMap, "y", 0) * self->scale; + region->scaleX = Json_getFloat(attachmentMap, "scaleX", 1); + region->scaleY = Json_getFloat(attachmentMap, "scaleY", 1); + region->rotation = Json_getFloat(attachmentMap, "rotation", 0); + region->width = Json_getFloat(attachmentMap, "width", 32) * self->scale; + region->height = Json_getFloat(attachmentMap, "height", 32) * self->scale; + + color = Json_getString(attachmentMap, "color", 0); + if (color) { + region->r = toColor(color, 0); + region->g = toColor(color, 1); + region->b = toColor(color, 2); + region->a = toColor(color, 3); + } + + spRegionAttachment_updateOffset(region); + break; + } + case SP_ATTACHMENT_MESH: { + spMeshAttachment* mesh = SUB_CAST(spMeshAttachment, attachment); + + MALLOC_STR(mesh->path, path); + + entry = Json_getItem(attachmentMap, "vertices"); + mesh->verticesCount = entry->size; + mesh->vertices = MALLOC(float, entry->size); + for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) + mesh->vertices[i] = entry->valueFloat * self->scale; + + entry = Json_getItem(attachmentMap, "triangles"); + mesh->trianglesCount = entry->size; + mesh->triangles = MALLOC(int, entry->size); + for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) + mesh->triangles[i] = entry->valueInt; + + entry = Json_getItem(attachmentMap, "uvs"); + mesh->regionUVs = MALLOC(float, entry->size); + for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) + mesh->regionUVs[i] = entry->valueFloat; + + spMeshAttachment_updateUVs(mesh); + + color = Json_getString(attachmentMap, "color", 0); + if (color) { + mesh->r = toColor(color, 0); + mesh->g = toColor(color, 1); + mesh->b = toColor(color, 2); + mesh->a = toColor(color, 3); + } + + mesh->hullLength = Json_getInt(attachmentMap, "hull", 0); + + entry = Json_getItem(attachmentMap, "edges"); + if (entry) { + mesh->edgesCount = entry->size; + mesh->edges = MALLOC(int, entry->size); + for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) + mesh->edges[i] = entry->valueInt; + } + + mesh->width = Json_getFloat(attachmentMap, "width", 32) * self->scale; + mesh->height = Json_getFloat(attachmentMap, "height", 32) * self->scale; + break; + } + case SP_ATTACHMENT_SKINNED_MESH: { + spSkinnedMeshAttachment* mesh = SUB_CAST(spSkinnedMeshAttachment, attachment); + int verticesCount, b, w, nn; + float* vertices; + + MALLOC_STR(mesh->path, path); + + entry = Json_getItem(attachmentMap, "uvs"); + mesh->uvsCount = entry->size; + mesh->regionUVs = MALLOC(float, entry->size); + for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) + mesh->regionUVs[i] = entry->valueFloat; + + entry = Json_getItem(attachmentMap, "vertices"); + verticesCount = entry->size; + vertices = MALLOC(float, entry->size); + for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) + vertices[i] = entry->valueFloat; + + for (i = 0; i < verticesCount;) { + int bonesCount = (int)vertices[i]; + mesh->bonesCount += bonesCount + 1; + mesh->weightsCount += bonesCount * 3; + i += 1 + bonesCount * 4; + } + mesh->bones = MALLOC(int, mesh->bonesCount); + mesh->weights = MALLOC(float, mesh->weightsCount); + + for (i = 0, b = 0, w = 0; i < verticesCount;) { + int bonesCount = (int)vertices[i++]; + mesh->bones[b++] = bonesCount; + for (nn = i + bonesCount * 4; i < nn; i += 4, ++b, w += 3) { + mesh->bones[b] = (int)vertices[i]; + mesh->weights[w] = vertices[i + 1] * self->scale; + mesh->weights[w + 1] = vertices[i + 2] * self->scale; + mesh->weights[w + 2] = vertices[i + 3]; + } + } + + FREE(vertices); + + entry = Json_getItem(attachmentMap, "triangles"); + mesh->trianglesCount = entry->size; + mesh->triangles = MALLOC(int, entry->size); + for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) + mesh->triangles[i] = entry->valueInt; + + spSkinnedMeshAttachment_updateUVs(mesh); + + color = Json_getString(attachmentMap, "color", 0); + if (color) { + mesh->r = toColor(color, 0); + mesh->g = toColor(color, 1); + mesh->b = toColor(color, 2); + mesh->a = toColor(color, 3); + } + + mesh->hullLength = Json_getInt(attachmentMap, "hull", 0); + + entry = Json_getItem(attachmentMap, "edges"); + if (entry) { + mesh->edgesCount = entry->size; + mesh->edges = MALLOC(int, entry->size); + for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) + mesh->edges[i] = entry->valueInt; + } + + mesh->width = Json_getFloat(attachmentMap, "width", 32) * self->scale; + mesh->height = Json_getFloat(attachmentMap, "height", 32) * self->scale; + break; + } + case SP_ATTACHMENT_BOUNDING_BOX: { + spBoundingBoxAttachment* box = SUB_CAST(spBoundingBoxAttachment, attachment); + entry = Json_getItem(attachmentMap, "vertices"); + box->verticesCount = entry->size; + box->vertices = MALLOC(float, entry->size); + for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) + box->vertices[i] = entry->valueFloat * self->scale; + break; + } + } + + spSkin_addAttachment(skin, slotIndex, skinAttachmentName, attachment); + } + } + } + } + + /* Events. */ + events = Json_getItem(root, "events"); + if (events) { + Json *eventMap; + const char* stringValue; + skeletonData->eventsCount = events->size; + skeletonData->events = MALLOC(spEventData*, events->size); + for (eventMap = events->child, i = 0; eventMap; eventMap = eventMap->next, ++i) { + spEventData* eventData = spEventData_create(eventMap->name); + eventData->intValue = Json_getInt(eventMap, "int", 0); + eventData->floatValue = Json_getFloat(eventMap, "float", 0); + stringValue = Json_getString(eventMap, "string", 0); + if (stringValue) MALLOC_STR(eventData->stringValue, stringValue); + skeletonData->events[i] = eventData; + } + } + + /* Animations. */ + animations = Json_getItem(root, "animations"); + if (animations) { + Json *animationMap; + skeletonData->animations = MALLOC(spAnimation*, animations->size); + for (animationMap = animations->child; animationMap; animationMap = animationMap->next) + _spSkeletonJson_readAnimation(self, animationMap, skeletonData); + } + + Json_dispose(root); + return skeletonData; +} diff --git a/cocos/editor-support/spine/SkeletonJson.cpp b/cocos/editor-support/spine/SkeletonJson.cpp deleted file mode 100644 index ddcdd538eb..0000000000 --- a/cocos/editor-support/spine/SkeletonJson.cpp +++ /dev/null @@ -1,504 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include -#include "Json.h" -#include -#include -#include - -typedef struct { - spSkeletonJson super; - int ownsLoader; -} _spSkeletonJson; - -spSkeletonJson* spSkeletonJson_createWithLoader (spAttachmentLoader* attachmentLoader) { - spSkeletonJson* self = SUPER(NEW(_spSkeletonJson)); - self->scale = 1; - self->attachmentLoader = attachmentLoader; - return self; -} - -spSkeletonJson* spSkeletonJson_create (spAtlas* atlas) { - spAtlasAttachmentLoader* attachmentLoader = spAtlasAttachmentLoader_create(atlas); - spSkeletonJson* self = spSkeletonJson_createWithLoader(SUPER(attachmentLoader)); - SUB_CAST(_spSkeletonJson, self)->ownsLoader = 1; - return self; -} - -void spSkeletonJson_dispose (spSkeletonJson* self) { - if (SUB_CAST(_spSkeletonJson, self)->ownsLoader) spAttachmentLoader_dispose(self->attachmentLoader); - FREE(self->error); - FREE(self); -} - -void _spSkeletonJson_setError (spSkeletonJson* self, Json* root, const char* value1, const char* value2) { - char message[256]; - size_t length = 0; - FREE(self->error); - strcpy(message, value1); - length = strlen(value1); - if (value2) strncat(message + length, value2, 256 - length); - MALLOC_STR(self->error, message); - if (root) Json_dispose(root); -} - -static float toColor (const char* value, int index) { - char digits[3]; - char *error; - - if (strlen(value) != 8) return -1; - value += index * 2; - - digits[0] = *value; - digits[1] = *(value + 1); - digits[2] = '\0'; - auto color = strtoul(digits, &error, 16); - if (*error != 0) return -1; - return color / (float)255; -} - -static void readCurve (spCurveTimeline* timeline, int frameIndex, Json* frame) { - Json* curve = Json_getItem(frame, "curve"); - if (!curve) return; - if (curve->type == Json_String && strcmp(curve->valueString, "stepped") == 0) - spCurveTimeline_setStepped(timeline, frameIndex); - else if (curve->type == Json_Array) { - Json* child0 = curve->child; - Json* child1 = child0->next; - Json* child2 = child1->next; - Json* child3 = child2->next; - spCurveTimeline_setCurve(timeline, frameIndex, child0->valueFloat, child1->valueFloat, child2->valueFloat, - child3->valueFloat); - } -} - -static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* root, spSkeletonData *skeletonData) { - int i; - spAnimation* animation; - - Json* bones = Json_getItem(root, "bones"); - Json* slots = Json_getItem(root, "slots"); - Json* drawOrder = Json_getItem(root, "draworder"); - Json* events = Json_getItem(root, "events"); - Json *boneMap, *slotMap; - - int timelineCount = 0; - for (boneMap = bones ? bones->child : 0; boneMap; boneMap = boneMap->next) - timelineCount += boneMap->size; - for (slotMap = slots ? slots->child : 0; slotMap; slotMap = slotMap->next) - timelineCount += slotMap->size; - if (events) ++timelineCount; - if (drawOrder) ++timelineCount; - - animation = spAnimation_create(root->name, timelineCount); - animation->timelineCount = 0; - skeletonData->animations[skeletonData->animationCount] = animation; - ++skeletonData->animationCount; - - for (boneMap = bones ? bones->child : 0; boneMap; boneMap = boneMap->next) { - Json *timelineArray; - - int boneIndex = spSkeletonData_findBoneIndex(skeletonData, boneMap->name); - if (boneIndex == -1) { - spAnimation_dispose(animation); - _spSkeletonJson_setError(self, root, "spBone not found: ", boneMap->name); - return 0; - } - - for (timelineArray = boneMap->child; timelineArray; timelineArray = timelineArray->next) { - Json* frame; - float duration; - - if (strcmp(timelineArray->name, "rotate") == 0) { - spRotateTimeline *timeline = spRotateTimeline_create(timelineArray->size); - timeline->boneIndex = boneIndex; - for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { - spRotateTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "angle", 0)); - readCurve(SUPER(timeline), i, frame); - } - animation->timelines[animation->timelineCount++] = (spTimeline*)timeline; - duration = timeline->frames[timelineArray->size * 2 - 2]; - if (duration > animation->duration) animation->duration = duration; - - } else { - int isScale = strcmp(timelineArray->name, "scale") == 0; - if (isScale || strcmp(timelineArray->name, "translate") == 0) { - float scale = isScale ? 1 : self->scale; - spTranslateTimeline *timeline = - isScale ? spScaleTimeline_create(timelineArray->size) : spTranslateTimeline_create(timelineArray->size); - timeline->boneIndex = boneIndex; - for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { - spTranslateTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "x", 0) * scale, - Json_getFloat(frame, "y", 0) * scale); - readCurve(SUPER(timeline), i, frame); - } - animation->timelines[animation->timelineCount++] = (spTimeline*)timeline; - duration = timeline->frames[timelineArray->size * 3 - 3]; - if (duration > animation->duration) animation->duration = duration; - } else { - spAnimation_dispose(animation); - _spSkeletonJson_setError(self, 0, "Invalid timeline type for a bone: ", timelineArray->name); - return 0; - } - } - } - } - - for (slotMap = slots ? slots->child : 0; slotMap; slotMap = slotMap->next) { - Json *timelineArray; - - int slotIndex = spSkeletonData_findSlotIndex(skeletonData, slotMap->name); - if (slotIndex == -1) { - spAnimation_dispose(animation); - _spSkeletonJson_setError(self, root, "Slot not found: ", slotMap->name); - return 0; - } - - for (timelineArray = slotMap->child; timelineArray; timelineArray = timelineArray->next) { - Json* frame; - float duration; - - if (strcmp(timelineArray->name, "color") == 0) { - spColorTimeline *timeline = spColorTimeline_create(timelineArray->size); - timeline->slotIndex = slotIndex; - for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { - const char* s = Json_getString(frame, "color", 0); - spColorTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), toColor(s, 0), toColor(s, 1), toColor(s, 2), - toColor(s, 3)); - readCurve(SUPER(timeline), i, frame); - } - animation->timelines[animation->timelineCount++] = (spTimeline*)timeline; - duration = timeline->frames[timelineArray->size * 5 - 5]; - if (duration > animation->duration) animation->duration = duration; - - } else if (strcmp(timelineArray->name, "attachment") == 0) { - spAttachmentTimeline *timeline = spAttachmentTimeline_create(timelineArray->size); - timeline->slotIndex = slotIndex; - for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { - Json* name = Json_getItem(frame, "name"); - spAttachmentTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), - name->type == Json_NULL ? 0 : name->valueString); - } - animation->timelines[animation->timelineCount++] = (spTimeline*)timeline; - duration = timeline->frames[timelineArray->size - 1]; - if (duration > animation->duration) animation->duration = duration; - - } else { - spAnimation_dispose(animation); - _spSkeletonJson_setError(self, 0, "Invalid timeline type for a slot: ", timelineArray->name); - return 0; - } - } - } - - if (events) { - Json* frame; - float duration; - - spEventTimeline* timeline = spEventTimeline_create(events->size); - for (frame = events->child, i = 0; frame; frame = frame->next, ++i) { - spEvent* event; - const char* stringValue; - spEventData* eventData = spSkeletonData_findEvent(skeletonData, Json_getString(frame, "name", 0)); - if (!eventData) { - spAnimation_dispose(animation); - _spSkeletonJson_setError(self, 0, "Event not found: ", Json_getString(frame, "name", 0)); - return 0; - } - event = spEvent_create(eventData); - event->intValue = Json_getInt(frame, "int", eventData->intValue); - event->floatValue = Json_getFloat(frame, "float", eventData->floatValue); - stringValue = Json_getString(frame, "string", eventData->stringValue); - if (stringValue) MALLOC_STR(event->stringValue, stringValue); - spEventTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), event); - } - animation->timelines[animation->timelineCount++] = (spTimeline*)timeline; - duration = timeline->frames[events->size - 1]; - if (duration > animation->duration) animation->duration = duration; - } - - if (drawOrder) { - Json* frame; - float duration; - - spDrawOrderTimeline* timeline = spDrawOrderTimeline_create(drawOrder->size, skeletonData->slotCount); - for (frame = drawOrder->child, i = 0; frame; frame = frame->next, ++i) { - int ii; - int* drawOrderArray = 0; - Json* offsets = Json_getItem(frame, "offsets"); - if (offsets) { - Json* offsetMap; - int* unchanged = MALLOC(int, skeletonData->slotCount - offsets->size); - int originalIndex = 0, unchangedIndex = 0; - - drawOrderArray = MALLOC(int, skeletonData->slotCount); - for (ii = skeletonData->slotCount - 1; ii >= 0; --ii) - drawOrderArray[ii] = -1; - - for (offsetMap = offsets->child; offsetMap; offsetMap = offsetMap->next) { - int slotIndex = spSkeletonData_findSlotIndex(skeletonData, Json_getString(offsetMap, "slot", 0)); - if (slotIndex == -1) { - spAnimation_dispose(animation); - _spSkeletonJson_setError(self, 0, "Slot not found: ", Json_getString(offsetMap, "slot", 0)); - return 0; - } - /* Collect unchanged items. */ - while (originalIndex != slotIndex) - unchanged[unchangedIndex++] = originalIndex++; - /* Set changed items. */ - drawOrderArray[originalIndex + Json_getInt(offsetMap, "offset", 0)] = originalIndex; - ++originalIndex; - } - /* Collect remaining unchanged items. */ - while (originalIndex < skeletonData->slotCount) - unchanged[unchangedIndex++] = originalIndex++; - /* Fill in unchanged items. */ - for (ii = skeletonData->slotCount - 1; ii >= 0; ii--) - if (drawOrderArray[ii] == -1) drawOrderArray[ii] = unchanged[--unchangedIndex]; - FREE(unchanged); - } - spDrawOrderTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), drawOrderArray); - FREE(drawOrderArray); - } - animation->timelines[animation->timelineCount++] = (spTimeline*)timeline; - duration = timeline->frames[drawOrder->size - 1]; - if (duration > animation->duration) animation->duration = duration; - } - - return animation; -} - -spSkeletonData* spSkeletonJson_readSkeletonDataFile (spSkeletonJson* self, const char* path) { - int length; - spSkeletonData* skeletonData; - const char* json = _spUtil_readFile(path, &length); - if (!json) { - _spSkeletonJson_setError(self, 0, "Unable to read skeleton file: ", path); - return 0; - } - skeletonData = spSkeletonJson_readSkeletonData(self, json); - FREE(json); - return skeletonData; -} - -spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const char* json) { - int i; - spSkeletonData* skeletonData; - Json *root, *bones, *boneMap, *slots, *skins, *animations, *events; - - FREE(self->error); - CONST_CAST(char*, self->error) = 0; - - root = Json_create(json); - if (!root) { - _spSkeletonJson_setError(self, 0, "Invalid skeleton JSON: ", Json_getError()); - return 0; - } - - skeletonData = spSkeletonData_create(); - - bones = Json_getItem(root, "bones"); - skeletonData->bones = MALLOC(spBoneData*, bones->size); - for (boneMap = bones->child, i = 0; boneMap; boneMap = boneMap->next, ++i) { - spBoneData* boneData; - - spBoneData* parent = 0; - const char* parentName = Json_getString(boneMap, "parent", 0); - if (parentName) { - parent = spSkeletonData_findBone(skeletonData, parentName); - if (!parent) { - spSkeletonData_dispose(skeletonData); - _spSkeletonJson_setError(self, root, "Parent bone not found: ", parentName); - return 0; - } - } - - boneData = spBoneData_create(Json_getString(boneMap, "name", 0), parent); - boneData->length = Json_getFloat(boneMap, "length", 0) * self->scale; - boneData->x = Json_getFloat(boneMap, "x", 0) * self->scale; - boneData->y = Json_getFloat(boneMap, "y", 0) * self->scale; - boneData->rotation = Json_getFloat(boneMap, "rotation", 0); - boneData->scaleX = Json_getFloat(boneMap, "scaleX", 1); - boneData->scaleY = Json_getFloat(boneMap, "scaleY", 1); - boneData->inheritScale = Json_getInt(boneMap, "inheritScale", 1); - boneData->inheritRotation = Json_getInt(boneMap, "inheritRotation", 1); - - skeletonData->bones[i] = boneData; - ++skeletonData->boneCount; - } - - slots = Json_getItem(root, "slots"); - if (slots) { - Json *slotMap; - skeletonData->slots = MALLOC(spSlotData*, slots->size); - for (slotMap = slots->child, i = 0; slotMap; slotMap = slotMap->next, ++i) { - spSlotData* slotData; - const char* color; - Json *attachmentItem; - - const char* boneName = Json_getString(slotMap, "bone", 0); - spBoneData* boneData = spSkeletonData_findBone(skeletonData, boneName); - if (!boneData) { - spSkeletonData_dispose(skeletonData); - _spSkeletonJson_setError(self, root, "spSlot bone not found: ", boneName); - return 0; - } - - slotData = spSlotData_create(Json_getString(slotMap, "name", 0), boneData); - - color = Json_getString(slotMap, "color", 0); - if (color) { - slotData->r = toColor(color, 0); - slotData->g = toColor(color, 1); - slotData->b = toColor(color, 2); - slotData->a = toColor(color, 3); - } - - attachmentItem = Json_getItem(slotMap, "attachment"); - if (attachmentItem) spSlotData_setAttachmentName(slotData, attachmentItem->valueString); - - slotData->additiveBlending = Json_getInt(slotMap, "additive", 0); - - skeletonData->slots[i] = slotData; - ++skeletonData->slotCount; - } - } - - skins = Json_getItem(root, "skins"); - if (skins) { - Json *slotMap; - skeletonData->skins = MALLOC(spSkin*, skins->size); - for (slotMap = skins->child, i = 0; slotMap; slotMap = slotMap->next, ++i) { - Json *attachmentsMap; - spSkin *skin = spSkin_create(slotMap->name); - - skeletonData->skins[i] = skin; - ++skeletonData->skinCount; - if (strcmp(slotMap->name, "default") == 0) skeletonData->defaultSkin = skin; - - for (attachmentsMap = slotMap->child; attachmentsMap; attachmentsMap = attachmentsMap->next) { - int slotIndex = spSkeletonData_findSlotIndex(skeletonData, attachmentsMap->name); - Json *attachmentMap; - - for (attachmentMap = attachmentsMap->child; attachmentMap; attachmentMap = attachmentMap->next) { - spAttachment* attachment; - const char* skinAttachmentName = attachmentMap->name; - const char* attachmentName = Json_getString(attachmentMap, "name", skinAttachmentName); - - const char* typeString = Json_getString(attachmentMap, "type", "region"); - spAttachmentType type; - if (strcmp(typeString, "region") == 0) - type = ATTACHMENT_REGION; - else if (strcmp(typeString, "boundingbox") == 0) - type = ATTACHMENT_BOUNDING_BOX; - else if (strcmp(typeString, "regionsequence") == 0) - type = ATTACHMENT_REGION_SEQUENCE; - else { - spSkeletonData_dispose(skeletonData); - _spSkeletonJson_setError(self, root, "Unknown attachment type: ", typeString); - return 0; - } - - attachment = spAttachmentLoader_newAttachment(self->attachmentLoader, skin, type, attachmentName); - if (!attachment) { - if (self->attachmentLoader->error1) { - spSkeletonData_dispose(skeletonData); - _spSkeletonJson_setError(self, root, self->attachmentLoader->error1, self->attachmentLoader->error2); - return 0; - } - continue; - } - - switch (attachment->type) { - case ATTACHMENT_REGION: - case ATTACHMENT_REGION_SEQUENCE: { - spRegionAttachment* regionAttachment = (spRegionAttachment*)attachment; - regionAttachment->x = Json_getFloat(attachmentMap, "x", 0) * self->scale; - regionAttachment->y = Json_getFloat(attachmentMap, "y", 0) * self->scale; - regionAttachment->scaleX = Json_getFloat(attachmentMap, "scaleX", 1); - regionAttachment->scaleY = Json_getFloat(attachmentMap, "scaleY", 1); - regionAttachment->rotation = Json_getFloat(attachmentMap, "rotation", 0); - regionAttachment->width = Json_getFloat(attachmentMap, "width", 32) * self->scale; - regionAttachment->height = Json_getFloat(attachmentMap, "height", 32) * self->scale; - spRegionAttachment_updateOffset(regionAttachment); - break; - } - case ATTACHMENT_BOUNDING_BOX: { - spBoundingBoxAttachment* box = (spBoundingBoxAttachment*)attachment; - Json* verticesArray = Json_getItem(attachmentMap, "vertices"); - Json* vertex; - int j = 0; - box->verticesCount = verticesArray->size; - box->vertices = MALLOC(float, verticesArray->size); - for (vertex = verticesArray->child, j = 0; vertex; vertex = vertex->next, ++j) - box->vertices[j] = vertex->valueFloat * self->scale; - break; - } - } - - spSkin_addAttachment(skin, slotIndex, skinAttachmentName, attachment); - } - } - } - } - - /* Events. */ - events = Json_getItem(root, "events"); - if (events) { - Json *eventMap; - const char* stringValue; - skeletonData->events = MALLOC(spEventData*, events->size); - for (eventMap = events->child; eventMap; eventMap = eventMap->next) { - spEventData* eventData = spEventData_create(eventMap->name); - eventData->intValue = Json_getInt(eventMap, "int", 0); - eventData->floatValue = Json_getFloat(eventMap, "float", 0); - stringValue = Json_getString(eventMap, "string", 0); - if (stringValue) MALLOC_STR(eventData->stringValue, stringValue); - skeletonData->events[skeletonData->eventCount++] = eventData; - } - } - - /* Animations. */ - animations = Json_getItem(root, "animations"); - if (animations) { - Json *animationMap; - skeletonData->animations = MALLOC(spAnimation*, animations->size); - for (animationMap = animations->child; animationMap; animationMap = animationMap->next) - _spSkeletonJson_readAnimation(self, animationMap, skeletonData); - } - - Json_dispose(root); - return skeletonData; -} diff --git a/cocos/editor-support/spine/SkeletonJson.h b/cocos/editor-support/spine/SkeletonJson.h index 672f8d72a4..ba2bef5227 100644 --- a/cocos/editor-support/spine/SkeletonJson.h +++ b/cocos/editor-support/spine/SkeletonJson.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_SKELETONJSON_H_ diff --git a/cocos/editor-support/spine/SkeletonRenderer.cpp b/cocos/editor-support/spine/SkeletonRenderer.cpp new file mode 100644 index 0000000000..5a062086dc --- /dev/null +++ b/cocos/editor-support/spine/SkeletonRenderer.cpp @@ -0,0 +1,391 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include +#include +#include +#include + +USING_NS_CC; +using std::min; +using std::max; + +namespace spine { + +static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; + +SkeletonRenderer* SkeletonRenderer::createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData) { + SkeletonRenderer* node = new SkeletonRenderer(skeletonData, ownsSkeletonData); + node->autorelease(); + return node; +} + +SkeletonRenderer* SkeletonRenderer::createWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale) { + SkeletonRenderer* node = new SkeletonRenderer(skeletonDataFile, atlas, scale); + node->autorelease(); + return node; +} + +SkeletonRenderer* SkeletonRenderer::createWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) { + SkeletonRenderer* node = new SkeletonRenderer(skeletonDataFile, atlasFile, scale); + node->autorelease(); + return node; +} + +void SkeletonRenderer::initialize () { + _atlas = 0; + _debugSlots = false; + _debugBones = false; + _timeScale = 1; + + _worldVertices = MALLOC(float, 1000); // Max number of vertices per mesh. + + _batch = PolygonBatch::createWithCapacity(2000); // Max number of vertices and triangles per batch. + _batch->retain(); + + _blendFunc = BlendFunc::ALPHA_PREMULTIPLIED; + setOpacityModifyRGB(true); + + setGLProgram(ShaderCache::getInstance()->getGLProgram(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR)); + scheduleUpdate(); +} + +void SkeletonRenderer::setSkeletonData (spSkeletonData *skeletonData, bool ownsSkeletonData) { + _skeleton = spSkeleton_create(skeletonData); + _ownsSkeletonData = ownsSkeletonData; +} + +SkeletonRenderer::SkeletonRenderer () { + initialize(); +} + +SkeletonRenderer::SkeletonRenderer (spSkeletonData *skeletonData, bool ownsSkeletonData) { + initialize(); + + setSkeletonData(skeletonData, ownsSkeletonData); +} + +SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, spAtlas* atlas, float scale) { + initialize(); + + spSkeletonJson* json = spSkeletonJson_create(atlas); + json->scale = scale; + spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile.c_str()); + CCASSERT(skeletonData, json->error ? json->error : "Error reading skeleton data."); + spSkeletonJson_dispose(json); + + setSkeletonData(skeletonData, true); +} + +SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) { + initialize(); + + _atlas = spAtlas_createFromFile(atlasFile.c_str(), 0); + CCASSERT(_atlas, "Error reading atlas file."); + + spSkeletonJson* json = spSkeletonJson_create(_atlas); + json->scale = scale; + spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile.c_str()); + CCASSERT(skeletonData, json->error ? json->error : "Error reading skeleton data file."); + spSkeletonJson_dispose(json); + + setSkeletonData(skeletonData, true); +} + +SkeletonRenderer::~SkeletonRenderer () { + if (_ownsSkeletonData) spSkeletonData_dispose(_skeleton->data); + if (_atlas) spAtlas_dispose(_atlas); + spSkeleton_dispose(_skeleton); + _batch->release(); + FREE(_worldVertices); +} + +void SkeletonRenderer::update (float deltaTime) { + spSkeleton_update(_skeleton, deltaTime * _timeScale); +} + +void SkeletonRenderer::draw (Renderer* renderer, const Mat4& transform, uint32_t transformFlags) { + _drawCommand.init(_globalZOrder); + _drawCommand.func = CC_CALLBACK_0(SkeletonRenderer::drawSkeleton, this, transform, transformFlags); + renderer->addCommand(&_drawCommand); +} + +void SkeletonRenderer::drawSkeleton (const Mat4 &transform, uint32_t transformFlags) { + getGLProgramState()->apply(transform); + + Color3B nodeColor = getColor(); + _skeleton->r = nodeColor.r / (float)255; + _skeleton->g = nodeColor.g / (float)255; + _skeleton->b = nodeColor.b / (float)255; + _skeleton->a = getDisplayedOpacity() / (float)255; + + int additive = -1; + Color4B color; + const float* uvs = nullptr; + int verticesCount = 0; + const int* triangles = nullptr; + int trianglesCount = 0; + float r = 0, g = 0, b = 0, a = 0; + for (int i = 0, n = _skeleton->slotsCount; i < n; i++) { + spSlot* slot = _skeleton->drawOrder[i]; + if (!slot->attachment) continue; + Texture2D *texture = nullptr; + switch (slot->attachment->type) { + case SP_ATTACHMENT_REGION: { + spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; + spRegionAttachment_computeWorldVertices(attachment, slot->bone, _worldVertices); + texture = getTexture(attachment); + uvs = attachment->uvs; + verticesCount = 8; + triangles = quadTriangles; + trianglesCount = 6; + r = attachment->r; + g = attachment->g; + b = attachment->b; + a = attachment->a; + break; + } + case SP_ATTACHMENT_MESH: { + spMeshAttachment* attachment = (spMeshAttachment*)slot->attachment; + spMeshAttachment_computeWorldVertices(attachment, slot, _worldVertices); + texture = getTexture(attachment); + uvs = attachment->uvs; + verticesCount = attachment->verticesCount; + triangles = attachment->triangles; + trianglesCount = attachment->trianglesCount; + r = attachment->r; + g = attachment->g; + b = attachment->b; + a = attachment->a; + break; + } + case SP_ATTACHMENT_SKINNED_MESH: { + spSkinnedMeshAttachment* attachment = (spSkinnedMeshAttachment*)slot->attachment; + spSkinnedMeshAttachment_computeWorldVertices(attachment, slot, _worldVertices); + texture = getTexture(attachment); + uvs = attachment->uvs; + verticesCount = attachment->uvsCount; + triangles = attachment->triangles; + trianglesCount = attachment->trianglesCount; + r = attachment->r; + g = attachment->g; + b = attachment->b; + a = attachment->a; + break; + } + default: ; + } + if (texture) { + if (slot->data->additiveBlending != additive) { + _batch->flush(); + GL::blendFunc(_blendFunc.src, slot->data->additiveBlending ? GL_ONE : _blendFunc.dst); + additive = slot->data->additiveBlending; + } + color.a = _skeleton->a * slot->a * a * 255; + float multiplier = _premultipliedAlpha ? color.a : 255; + color.r = _skeleton->r * slot->r * r * multiplier; + color.g = _skeleton->g * slot->g * g * multiplier; + color.b = _skeleton->b * slot->b * b * multiplier; + _batch->add(texture, _worldVertices, uvs, verticesCount, triangles, trianglesCount, &color); + } + } + _batch->flush(); + + if (_debugSlots || _debugBones) { + Director* director = Director::getInstance(); + director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); + director->loadMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW, transform); + + if (_debugSlots) { + // Slots. + DrawPrimitives::setDrawColor4B(0, 0, 255, 255); + glLineWidth(1); + Vec2 points[4]; + V3F_C4B_T2F_Quad quad; + for (int i = 0, n = _skeleton->slotsCount; i < n; i++) { + spSlot* slot = _skeleton->drawOrder[i]; + if (!slot->attachment || slot->attachment->type != SP_ATTACHMENT_REGION) continue; + spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; + spRegionAttachment_computeWorldVertices(attachment, slot->bone, _worldVertices); + points[0] = Vec2(_worldVertices[0], _worldVertices[1]); + points[1] = Vec2(_worldVertices[2], _worldVertices[3]); + points[2] = Vec2(_worldVertices[4], _worldVertices[5]); + points[3] = Vec2(_worldVertices[6], _worldVertices[7]); + DrawPrimitives::drawPoly(points, 4, true); + } + } + if (_debugBones) { + // Bone lengths. + glLineWidth(2); + DrawPrimitives::setDrawColor4B(255, 0, 0, 255); + for (int i = 0, n = _skeleton->bonesCount; i < n; i++) { + spBone *bone = _skeleton->bones[i]; + float x = bone->data->length * bone->m00 + bone->worldX; + float y = bone->data->length * bone->m10 + bone->worldY; + DrawPrimitives::drawLine(Vec2(bone->worldX, bone->worldY), Vec2(x, y)); + } + // Bone origins. + DrawPrimitives::setPointSize(4); + DrawPrimitives::setDrawColor4B(0, 0, 255, 255); // Root bone is blue. + for (int i = 0, n = _skeleton->bonesCount; i < n; i++) { + spBone *bone = _skeleton->bones[i]; + DrawPrimitives::drawPoint(Vec2(bone->worldX, bone->worldY)); + if (i == 0) DrawPrimitives::setDrawColor4B(0, 255, 0, 255); + } + } + director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); + } +} + +Texture2D* SkeletonRenderer::getTexture (spRegionAttachment* attachment) const { + return (Texture2D*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject; +} + +Texture2D* SkeletonRenderer::getTexture (spMeshAttachment* attachment) const { + return (Texture2D*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject; +} + +Texture2D* SkeletonRenderer::getTexture (spSkinnedMeshAttachment* attachment) const { + return (Texture2D*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject; +} + +Rect SkeletonRenderer::getBoundingBox () const { + float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN; + float scaleX = getScaleX(), scaleY = getScaleY(); + for (int i = 0; i < _skeleton->slotsCount; ++i) { + spSlot* slot = _skeleton->slots[i]; + if (!slot->attachment) continue; + int verticesCount; + if (slot->attachment->type == SP_ATTACHMENT_REGION) { + spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; + spRegionAttachment_computeWorldVertices(attachment, slot->bone, _worldVertices); + verticesCount = 8; + } else if (slot->attachment->type == SP_ATTACHMENT_MESH) { + spMeshAttachment* mesh = (spMeshAttachment*)slot->attachment; + spMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices); + verticesCount = mesh->verticesCount; + } else if (slot->attachment->type == SP_ATTACHMENT_SKINNED_MESH) { + spSkinnedMeshAttachment* mesh = (spSkinnedMeshAttachment*)slot->attachment; + spSkinnedMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices); + verticesCount = mesh->uvsCount; + } else + continue; + for (int ii = 0; ii < verticesCount; ii += 2) { + float x = _worldVertices[ii] * scaleX, y = _worldVertices[ii + 1] * scaleY; + minX = min(minX, x); + minY = min(minY, y); + maxX = max(maxX, x); + maxY = max(maxY, y); + } + } + Vec2 position = getPosition(); + return Rect(position.x + minX, position.y + minY, maxX - minX, maxY - minY); +} + +// --- Convenience methods for Skeleton_* functions. + +void SkeletonRenderer::updateWorldTransform () { + spSkeleton_updateWorldTransform(_skeleton); +} + +void SkeletonRenderer::setToSetupPose () { + spSkeleton_setToSetupPose(_skeleton); +} +void SkeletonRenderer::setBonesToSetupPose () { + spSkeleton_setBonesToSetupPose(_skeleton); +} +void SkeletonRenderer::setSlotsToSetupPose () { + spSkeleton_setSlotsToSetupPose(_skeleton); +} + +spBone* SkeletonRenderer::findBone (const std::string& boneName) const { + return spSkeleton_findBone(_skeleton, boneName.c_str()); +} + +spSlot* SkeletonRenderer::findSlot (const std::string& slotName) const { + return spSkeleton_findSlot(_skeleton, slotName.c_str()); +} + +bool SkeletonRenderer::setSkin (const std::string& skinName) { + return spSkeleton_setSkinByName(_skeleton, skinName.c_str()) ? true : false; +} + +spAttachment* SkeletonRenderer::getAttachment (const std::string& slotName, const std::string& attachmentName) const { + return spSkeleton_getAttachmentForSlotName(_skeleton, slotName.c_str(), attachmentName.c_str()); +} +bool SkeletonRenderer::setAttachment (const std::string& slotName, const std::string& attachmentName) { + return spSkeleton_setAttachment(_skeleton, slotName.c_str(), attachmentName.c_str()) ? true : false; +} + +spSkeleton* SkeletonRenderer::getSkeleton () { + return _skeleton; +} + +void SkeletonRenderer::setTimeScale (float scale) { + _timeScale = scale; +} +float SkeletonRenderer::getTimeScale () const { + return _timeScale; +} + +void SkeletonRenderer::setDebugSlotsEnabled (bool enabled) { + _debugSlots = enabled; +} +bool SkeletonRenderer::getDebugSlotsEnabled () const { + return _debugSlots; +} + +void SkeletonRenderer::setDebugBonesEnabled (bool enabled) { + _debugBones = enabled; +} +bool SkeletonRenderer::getDebugBonesEnabled () const { + return _debugBones; +} + +// --- CCBlendProtocol + +const BlendFunc& SkeletonRenderer::getBlendFunc () const { + return _blendFunc; +} + +void SkeletonRenderer::setBlendFunc (const BlendFunc &blendFunc) { + _blendFunc = blendFunc; +} + +void SkeletonRenderer::setOpacityModifyRGB (bool value) { + _premultipliedAlpha = value; +} + +bool SkeletonRenderer::isOpacityModifyRGB () const { + return _premultipliedAlpha; +} + +} diff --git a/cocos/editor-support/spine/SkeletonRenderer.h b/cocos/editor-support/spine/SkeletonRenderer.h new file mode 100644 index 0000000000..13ea00f871 --- /dev/null +++ b/cocos/editor-support/spine/SkeletonRenderer.h @@ -0,0 +1,120 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#ifndef SPINE_SKELETONRENDERER_H_ +#define SPINE_SKELETONRENDERER_H_ + +#include +#include "cocos2d.h" + +namespace spine { + +class PolygonBatch; + +/** Draws a skeleton. */ +class SkeletonRenderer: public cocos2d::Node, public cocos2d::BlendProtocol { +public: + static SkeletonRenderer* createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData = false); + static SkeletonRenderer* createWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 1); + static SkeletonRenderer* createWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); + + virtual void update (float deltaTime) override; + virtual void draw (cocos2d::Renderer* renderer, const cocos2d::Mat4& transform, uint32_t transformFlags) override; + virtual void drawSkeleton (const cocos2d::Mat4& transform, uint32_t transformFlags); + virtual cocos2d::Rect getBoundingBox () const override; + + spSkeleton* getSkeleton(); + + void setTimeScale(float scale); + float getTimeScale() const; + + void setDebugSlotsEnabled(bool enabled); + bool getDebugSlotsEnabled() const; + + void setDebugBonesEnabled(bool enabled); + bool getDebugBonesEnabled() const; + + // --- Convenience methods for common Skeleton_* functions. + void updateWorldTransform (); + + void setToSetupPose (); + void setBonesToSetupPose (); + void setSlotsToSetupPose (); + + /* Returns 0 if the bone was not found. */ + spBone* findBone (const std::string& boneName) const; + /* Returns 0 if the slot was not found. */ + spSlot* findSlot (const std::string& slotName) const; + + /* Sets the skin used to look up attachments not found in the SkeletonData defaultSkin. Attachments from the new skin are + * attached if the corresponding attachment from the old skin was attached. Returns false if the skin was not found. + * @param skin May be 0.*/ + bool setSkin (const std::string& skinName); + + /* Returns 0 if the slot or attachment was not found. */ + spAttachment* getAttachment (const std::string& slotName, const std::string& attachmentName) const; + /* Returns false if the slot or attachment was not found. */ + bool setAttachment (const std::string& slotName, const std::string& attachmentName); + + // --- BlendProtocol + virtual void setBlendFunc (const cocos2d::BlendFunc& blendFunc); + virtual const cocos2d::BlendFunc& getBlendFunc () const; + virtual void setOpacityModifyRGB (bool value); + virtual bool isOpacityModifyRGB () const; + +protected: + SkeletonRenderer (); + SkeletonRenderer (spSkeletonData* skeletonData, bool ownsSkeletonData = false); + SkeletonRenderer (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 1); + SkeletonRenderer (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); + virtual ~SkeletonRenderer (); + void initialize (); + + void setSkeletonData (spSkeletonData* skeletonData, bool ownsSkeletonData); + virtual cocos2d::Texture2D* getTexture (spRegionAttachment* attachment) const; + virtual cocos2d::Texture2D* getTexture (spMeshAttachment* attachment) const; + virtual cocos2d::Texture2D* getTexture (spSkinnedMeshAttachment* attachment) const; + + bool _ownsSkeletonData; + spAtlas* _atlas; + cocos2d::CustomCommand _drawCommand; + cocos2d::BlendFunc _blendFunc; + PolygonBatch* _batch; + float* _worldVertices; + bool _premultipliedAlpha; + spSkeleton* _skeleton; + float _timeScale; + bool _debugSlots; + bool _debugBones; +}; + +} + +#endif /* SPINE_SKELETONRENDERER_H_ */ diff --git a/cocos/editor-support/spine/Skin.cpp b/cocos/editor-support/spine/Skin.c similarity index 60% rename from cocos/editor-support/spine/Skin.cpp rename to cocos/editor-support/spine/Skin.c index 0812888271..d2f2e27e30 100644 --- a/cocos/editor-support/spine/Skin.cpp +++ b/cocos/editor-support/spine/Skin.c @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #include diff --git a/cocos/editor-support/spine/Skin.h b/cocos/editor-support/spine/Skin.h index da40803409..22d56fe9cc 100644 --- a/cocos/editor-support/spine/Skin.h +++ b/cocos/editor-support/spine/Skin.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_SKIN_H_ diff --git a/cocos/editor-support/spine/SkinnedMeshAttachment.c b/cocos/editor-support/spine/SkinnedMeshAttachment.c new file mode 100644 index 0000000000..1697d7948e --- /dev/null +++ b/cocos/editor-support/spine/SkinnedMeshAttachment.c @@ -0,0 +1,109 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +void _spSkinnedMeshAttachment_dispose (spAttachment* attachment) { + spSkinnedMeshAttachment* self = SUB_CAST(spSkinnedMeshAttachment, attachment); + _spAttachment_deinit(attachment); + FREE(self->path); + FREE(self->bones); + FREE(self->weights); + FREE(self->regionUVs); + FREE(self->uvs); + FREE(self->triangles); + FREE(self->edges); + FREE(self); +} + +spSkinnedMeshAttachment* spSkinnedMeshAttachment_create (const char* name) { + spSkinnedMeshAttachment* self = NEW(spSkinnedMeshAttachment); + self->r = 1; + self->g = 1; + self->b = 1; + self->a = 1; + _spAttachment_init(SUPER(self), name, SP_ATTACHMENT_SKINNED_MESH, _spSkinnedMeshAttachment_dispose); + return self; +} + +void spSkinnedMeshAttachment_updateUVs (spSkinnedMeshAttachment* self) { + int i; + float width = self->regionU2 - self->regionU, height = self->regionV2 - self->regionV; + FREE(self->uvs); + self->uvs = MALLOC(float, self->uvsCount); + if (self->regionRotate) { + for (i = 0; i < self->uvsCount; i += 2) { + self->uvs[i] = self->regionU + self->regionUVs[i + 1] * width; + self->uvs[i + 1] = self->regionV + height - self->regionUVs[i] * height; + } + } else { + for (i = 0; i < self->uvsCount; i += 2) { + self->uvs[i] = self->regionU + self->regionUVs[i] * width; + self->uvs[i + 1] = self->regionV + self->regionUVs[i + 1] * height; + } + } +} + +void spSkinnedMeshAttachment_computeWorldVertices (spSkinnedMeshAttachment* self, spSlot* slot, float* worldVertices) { + int w = 0, v = 0, b = 0, f = 0; + float x = slot->bone->skeleton->x, y = slot->bone->skeleton->y; + spBone** skeletonBones = slot->bone->skeleton->bones; + if (slot->attachmentVerticesCount == 0) { + for (; v < self->bonesCount; w += 2) { + float wx = 0, wy = 0; + const int nn = self->bones[v] + v; + v++; + for (; v <= nn; v++, b += 3) { + const spBone* bone = skeletonBones[self->bones[v]]; + const float vx = self->weights[b], vy = self->weights[b + 1], weight = self->weights[b + 2]; + wx += (vx * bone->m00 + vy * bone->m01 + bone->worldX) * weight; + wy += (vx * bone->m10 + vy * bone->m11 + bone->worldY) * weight; + } + worldVertices[w] = wx + x; + worldVertices[w + 1] = wy + y; + } + } else { + const float* ffd = slot->attachmentVertices; + for (; v < self->bonesCount; w += 2) { + float wx = 0, wy = 0; + const int nn = self->bones[v] + v; + v++; + for (; v <= nn; v++, b += 3, f += 2) { + const spBone* bone = skeletonBones[self->bones[v]]; + const float vx = self->weights[b] + ffd[f], vy = self->weights[b + 1] + ffd[f + 1], weight = self->weights[b + 2]; + wx += (vx * bone->m00 + vy * bone->m01 + bone->worldX) * weight; + wy += (vx * bone->m10 + vy * bone->m11 + bone->worldY) * weight; + } + worldVertices[w] = wx + x; + worldVertices[w + 1] = wy + y; + } + } +} diff --git a/cocos/editor-support/spine/SkinnedMeshAttachment.h b/cocos/editor-support/spine/SkinnedMeshAttachment.h new file mode 100644 index 0000000000..9d60565e65 --- /dev/null +++ b/cocos/editor-support/spine/SkinnedMeshAttachment.h @@ -0,0 +1,90 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#ifndef SPINE_SKINNEDMESHATTACHMENT_H_ +#define SPINE_SKINNEDMESHATTACHMENT_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct spSkinnedMeshAttachment spSkinnedMeshAttachment; +struct spSkinnedMeshAttachment { + spAttachment super; + const char* path; + + int bonesCount; + int* bones; + + int weightsCount; + float* weights; + + int trianglesCount; + int* triangles; + + int uvsCount; + float* regionUVs; + float* uvs; + int hullLength; + + float r, g, b, a; + + void* rendererObject; + int regionOffsetX, regionOffsetY; /* Pixels stripped from the bottom left, unrotated. */ + int regionWidth, regionHeight; /* Unrotated, stripped pixel size. */ + int regionOriginalWidth, regionOriginalHeight; /* Unrotated, unstripped pixel size. */ + float regionU, regionV, regionU2, regionV2; + int/*bool*/regionRotate; + + /* Nonessential. */ + int edgesCount; + int* edges; + float width, height; +}; + +spSkinnedMeshAttachment* spSkinnedMeshAttachment_create (const char* name); +void spSkinnedMeshAttachment_updateUVs (spSkinnedMeshAttachment* self); +void spSkinnedMeshAttachment_computeWorldVertices (spSkinnedMeshAttachment* self, spSlot* slot, float* worldVertices); + +#ifdef SPINE_SHORT_NAMES +typedef spSkinnedMeshAttachment SkinnedMeshAttachment; +#define SkinnedMeshAttachment_create(...) spSkinnedMeshAttachment_create(__VA_ARGS__) +#define SkinnedMeshAttachment_updateUVs(...) spSkinnedMeshAttachment_updateUVs(__VA_ARGS__) +#define SkinnedMeshAttachment_computeWorldVertices(...) spSkinnedMeshAttachment_computeWorldVertices(__VA_ARGS__) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* SPINE_SKINNEDMESHATTACHMENT_H_ */ diff --git a/cocos/editor-support/spine/Slot.c b/cocos/editor-support/spine/Slot.c new file mode 100644 index 0000000000..8e4fcbf659 --- /dev/null +++ b/cocos/editor-support/spine/Slot.c @@ -0,0 +1,85 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +typedef struct { + spSlot super; + float attachmentTime; +} _spSlot; + +spSlot* spSlot_create (spSlotData* data, spBone* bone) { + spSlot* self = SUPER(NEW(_spSlot)); + CONST_CAST(spSlotData*, self->data) = data; + CONST_CAST(spBone*, self->bone) = bone; + spSlot_setToSetupPose(self); + return self; +} + +void spSlot_dispose (spSlot* self) { + FREE(self->attachmentVertices); + FREE(self); +} + +void spSlot_setAttachment (spSlot* self, spAttachment* attachment) { + CONST_CAST(spAttachment*, self->attachment) = attachment; + SUB_CAST(_spSlot, self)->attachmentTime = self->bone->skeleton->time; + self->attachmentVerticesCount = 0; +} + +void spSlot_setAttachmentTime (spSlot* self, float time) { + SUB_CAST(_spSlot, self)->attachmentTime = self->bone->skeleton->time - time; +} + +float spSlot_getAttachmentTime (const spSlot* self) { + return self->bone->skeleton->time - SUB_CAST(_spSlot, self) ->attachmentTime; +} + +void spSlot_setToSetupPose (spSlot* self) { + spAttachment* attachment = 0; + + self->r = self->data->r; + self->g = self->data->g; + self->b = self->data->b; + self->a = self->data->a; + + if (self->data->attachmentName) { + /* Find slot index. */ + int i; + for (i = 0; i < self->bone->skeleton->data->slotsCount; ++i) { + if (self->data == self->bone->skeleton->data->slots[i]) { + attachment = spSkeleton_getAttachmentForSlotIndex(self->bone->skeleton, i, self->data->attachmentName); + break; + } + } + } + spSlot_setAttachment(self, attachment); +} diff --git a/cocos/editor-support/spine/Slot.cpp b/cocos/editor-support/spine/Slot.cpp deleted file mode 100644 index 3dd5724464..0000000000 --- a/cocos/editor-support/spine/Slot.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include -#include - -typedef struct { - spSlot super; - float attachmentTime; -} _spSlot; - -spSlot* spSlot_create (spSlotData* data, spSkeleton* skeleton, spBone* bone) { - spSlot* self = SUPER(NEW(_spSlot)); - CONST_CAST(spSlotData*, self->data) = data; - CONST_CAST(spSkeleton*, self->skeleton) = skeleton; - CONST_CAST(spBone*, self->bone) = bone; - spSlot_setToSetupPose(self); - return self; -} - -void spSlot_dispose (spSlot* self) { - FREE(self); -} - -void spSlot_setAttachment (spSlot* self, spAttachment* attachment) { - CONST_CAST(spAttachment*, self->attachment) = attachment; - SUB_CAST(_spSlot, self) ->attachmentTime = self->skeleton->time; -} - -void spSlot_setAttachmentTime (spSlot* self, float time) { - SUB_CAST(_spSlot, self) ->attachmentTime = self->skeleton->time - time; -} - -float spSlot_getAttachmentTime (const spSlot* self) { - return self->skeleton->time - SUB_CAST(_spSlot, self) ->attachmentTime; -} - -void spSlot_setToSetupPose (spSlot* self) { - spAttachment* attachment = 0; - self->r = self->data->r; - self->g = self->data->g; - self->b = self->data->b; - self->a = self->data->a; - - if (self->data->attachmentName) { - /* Find slot index. */ - int i; - for (i = 0; i < self->skeleton->data->slotCount; ++i) { - if (self->data == self->skeleton->data->slots[i]) { - attachment = spSkeleton_getAttachmentForSlotIndex(self->skeleton, i, self->data->attachmentName); - break; - } - } - } - spSlot_setAttachment(self, attachment); -} diff --git a/cocos/editor-support/spine/Slot.h b/cocos/editor-support/spine/Slot.h index 9f7094db1b..9e5c66da4e 100644 --- a/cocos/editor-support/spine/Slot.h +++ b/cocos/editor-support/spine/Slot.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_SLOT_H_ @@ -42,17 +39,18 @@ extern "C" { #endif -struct spSkeleton; - typedef struct spSlot { spSlotData* const data; - struct spSkeleton* const skeleton; spBone* const bone; float r, g, b, a; spAttachment* const attachment; + + int attachmentVerticesCapacity; + int attachmentVerticesCount; + float* attachmentVertices; } spSlot; -spSlot* spSlot_create (spSlotData* data, struct spSkeleton* skeleton, spBone* bone); +spSlot* spSlot_create (spSlotData* data, spBone* bone); void spSlot_dispose (spSlot* self); /* @param attachment May be 0 to clear the attachment for the slot. */ diff --git a/cocos/editor-support/spine/SlotData.c b/cocos/editor-support/spine/SlotData.c new file mode 100644 index 0000000000..a6ee840390 --- /dev/null +++ b/cocos/editor-support/spine/SlotData.c @@ -0,0 +1,57 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +spSlotData* spSlotData_create (const char* name, spBoneData* boneData) { + spSlotData* self = NEW(spSlotData); + MALLOC_STR(self->name, name); + CONST_CAST(spBoneData*, self->boneData) = boneData; + self->r = 1; + self->g = 1; + self->b = 1; + self->a = 1; + return self; +} + +void spSlotData_dispose (spSlotData* self) { + FREE(self->name); + FREE(self->attachmentName); + FREE(self); +} + +void spSlotData_setAttachmentName (spSlotData* self, const char* attachmentName) { + FREE(self->attachmentName); + if (attachmentName) + MALLOC_STR(self->attachmentName, attachmentName); + else + CONST_CAST(char*, self->attachmentName) = 0; +} diff --git a/cocos/editor-support/spine/SlotData.cpp b/cocos/editor-support/spine/SlotData.cpp deleted file mode 100644 index 15d7a4ab0e..0000000000 --- a/cocos/editor-support/spine/SlotData.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include - -spSlotData* spSlotData_create (const char* name, spBoneData* boneData) { - spSlotData* self = NEW(spSlotData); - MALLOC_STR(self->name, name); - CONST_CAST(spBoneData*, self->boneData) = boneData; - self->r = 1; - self->g = 1; - self->b = 1; - self->a = 1; - return self; -} - -void spSlotData_dispose (spSlotData* self) { - FREE(self->name); - FREE(self->attachmentName); - FREE(self); -} - -void spSlotData_setAttachmentName (spSlotData* self, const char* attachmentName) { - FREE(self->attachmentName); - if (attachmentName) - MALLOC_STR(self->attachmentName, attachmentName); - else - CONST_CAST(char*, self->attachmentName) = 0; -} diff --git a/cocos/editor-support/spine/SlotData.h b/cocos/editor-support/spine/SlotData.h index 7f00bfed39..f471326384 100644 --- a/cocos/editor-support/spine/SlotData.h +++ b/cocos/editor-support/spine/SlotData.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_SLOTDATA_H_ @@ -43,7 +40,7 @@ extern "C" { typedef struct { const char* const name; const spBoneData* const boneData; - const char* const attachmentName; + const char* attachmentName; float r, g, b, a; int/*bool*/additiveBlending; } spSlotData; diff --git a/cocos/editor-support/spine/extension.c b/cocos/editor-support/spine/extension.c new file mode 100644 index 0000000000..f45bb2d268 --- /dev/null +++ b/cocos/editor-support/spine/extension.c @@ -0,0 +1,78 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#include +#include + +static void* (*mallocFunc) (size_t size) = malloc; +static void* (*debugMallocFunc) (size_t size, const char* file, int line) = NULL; +static void (*freeFunc) (void* ptr) = free; + +void* _malloc (size_t size, const char* file, int line) { + if(debugMallocFunc) + return debugMallocFunc(size, file, line); + + return mallocFunc(size); +} +void* _calloc (size_t num, size_t size, const char* file, int line) { + void* ptr = _malloc(num * size, file, line); + if (ptr) memset(ptr, 0, num * size); + return ptr; +} +void _free (void* ptr) { + freeFunc(ptr); +} + +void _setDebugMalloc(void* (*malloc) (size_t size, const char* file, int line)) { + debugMallocFunc = malloc; +} + +void _setMalloc (void* (*malloc) (size_t size)) { + mallocFunc = malloc; +} +void _setFree (void (*free) (void* ptr)) { + freeFunc = free; +} + +char* _readFile (const char* path, int* length) { + char *data; + FILE *file = fopen(path, "rb"); + if (!file) return 0; + + fseek(file, 0, SEEK_END); + *length = (int)ftell(file); + fseek(file, 0, SEEK_SET); + + data = MALLOC(char, *length); + fread(data, 1, *length, file); + fclose(file); + + return data; +} diff --git a/cocos/editor-support/spine/extension.cpp b/cocos/editor-support/spine/extension.cpp deleted file mode 100644 index 2a5ca375e1..0000000000 --- a/cocos/editor-support/spine/extension.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#include -#include - -static void* (*mallocFunc) (size_t size) = malloc; -static void (*freeFunc) (void* ptr) = free; - -void* _malloc (size_t size) { - return mallocFunc(size); -} -void* _calloc (size_t num, size_t size) { - void* ptr = mallocFunc(num * size); - if (ptr) memset(ptr, 0, num * size); - return ptr; -} -void _free (void* ptr) { - freeFunc(ptr); -} - -void _setMalloc (void* (*malloc) (size_t size)) { - mallocFunc = malloc; -} -void _setFree (void (*free) (void* ptr)) { - freeFunc = free; -} - -char* _readFile (const char* path, int* length) { - char *data; - FILE *file = fopen(path, "rb"); - if (!file) return 0; - - fseek(file, 0, SEEK_END); - *length = (int)ftell(file); - fseek(file, 0, SEEK_SET); - - data = MALLOC(char, *length); - fread(data, 1, *length, file); - fclose(file); - - return data; -} diff --git a/cocos/editor-support/spine/extension.h b/cocos/editor-support/spine/extension.h index 193c22fda4..281d632123 100644 --- a/cocos/editor-support/spine/extension.h +++ b/cocos/editor-support/spine/extension.h @@ -32,8 +32,8 @@ #define SPINE_EXTENSION_H_ /* All allocation uses these. */ -#define MALLOC(TYPE,COUNT) ((TYPE*)_malloc(sizeof(TYPE) * COUNT)) -#define CALLOC(TYPE,COUNT) ((TYPE*)_calloc(COUNT, sizeof(TYPE))) +#define MALLOC(TYPE,COUNT) ((TYPE*)_malloc(sizeof(TYPE) * COUNT, __FILE__, __LINE__)) +#define CALLOC(TYPE,COUNT) ((TYPE*)_calloc(COUNT, sizeof(TYPE), __FILE__, __LINE__)) #define NEW(TYPE) CALLOC(TYPE,1) /* Gets the direct super class. Type safe. */ @@ -55,23 +55,40 @@ #define FREE(VALUE) _free((void*)VALUE) /* Allocates a new char[], assigns it to TO, and copies FROM to it. Can be used on const types. */ -#define MALLOC_STR(TO,FROM) strcpy(CONST_CAST(char*, TO) = (char*)malloc(strlen(FROM) + 1), FROM) +#define MALLOC_STR(TO,FROM) strcpy(CONST_CAST(char*, TO) = (char*)MALLOC(char, strlen(FROM) + 1), FROM) + +#define PI 3.1415926535897932385f +#define DEG_RAD (PI / 180) +#define RAD_DEG (180 / PI) #ifdef __STDC_VERSION__ #define FMOD(A,B) fmodf(A, B) +#define ATAN2(A,B) atan2f(A, B) +#define SIN(A) sinf(A) +#define COS(A) cosf(A) +#define SQRT(A) sqrtf(A) +#define ACOS(A) acosf(A) #else #define FMOD(A,B) (float)fmod(A, B) +#define ATAN2(A,B) (float)atan2(A, B) +#define COS(A) (float)cos(A) +#define SIN(A) (float)sin(A) +#define SQRT(A) (float)sqrt(A) +#define ACOS(A) (float)acos(A) #endif #include #include #include #include -#include -#include #include #include #include +#include +#include +#include +#include +#include #ifdef __cplusplus extern "C" { @@ -95,20 +112,35 @@ char* _spUtil_readFile (const char* path, int* length); * Internal API available for extension: */ -void* _malloc (size_t size); -void* _calloc (size_t num, size_t size); +void* _malloc (size_t size, const char* file, int line); +void* _calloc (size_t num, size_t size, const char* file, int line); void _free (void* ptr); void _setMalloc (void* (*_malloc) (size_t size)); +void _setDebugMalloc (void* (*_malloc) (size_t size, const char* file, int line)); void _setFree (void (*_free) (void* ptr)); char* _readFile (const char* path, int* length); /**/ +typedef struct { + spAnimationState super; + spEvent** events; + + spTrackEntry* (*createTrackEntry) (spAnimationState* self); + void (*disposeTrackEntry) (spTrackEntry* entry); +} _spAnimationState; + +spTrackEntry* _spTrackEntry_create (spAnimationState* self); +void _spTrackEntry_dispose (spTrackEntry* self); + +/**/ + void _spAttachmentLoader_init (spAttachmentLoader* self, /**/ void (*dispose) (spAttachmentLoader* self), /**/ -spAttachment* (*newAttachment) (spAttachmentLoader* self, spSkin* skin, spAttachmentType type, const char* name)); + spAttachment* (*newAttachment) (spAttachmentLoader* self, spSkin* skin, spAttachmentType type, const char* name, + const char* path)); void _spAttachmentLoader_deinit (spAttachmentLoader* self); void _spAttachmentLoader_setError (spAttachmentLoader* self, const char* error1, const char* error2); void _spAttachmentLoader_setUnknownTypeError (spAttachmentLoader* self, spAttachmentType type); @@ -136,7 +168,7 @@ void _spAttachment_deinit (spAttachment* self); void _spTimeline_init (spTimeline* self, spTimelineType type, /**/ void (*dispose) (spTimeline* self), /**/ void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha)); + int* eventsCount, float alpha)); void _spTimeline_deinit (spTimeline* self); #ifdef SPINE_SHORT_NAMES @@ -146,10 +178,10 @@ void _spTimeline_deinit (spTimeline* self); /**/ -void _spCurveTimeline_init (spCurveTimeline* self, spTimelineType type, int frameCount, /**/ +void _spCurveTimeline_init (spCurveTimeline* self, spTimelineType type, int framesCount, /**/ void (*dispose) (spTimeline* self), /**/ void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha)); + int* eventsCount, float alpha)); void _spCurveTimeline_deinit (spCurveTimeline* self); #ifdef SPINE_SHORT_NAMES diff --git a/cocos/editor-support/spine/proj.win32/libSpine.vcxproj b/cocos/editor-support/spine/proj.win32/libSpine.vcxproj old mode 100644 new mode 100755 index 2f033657b8..fe1ae21064 --- a/cocos/editor-support/spine/proj.win32/libSpine.vcxproj +++ b/cocos/editor-support/spine/proj.win32/libSpine.vcxproj @@ -21,48 +21,58 @@ - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cocos/editor-support/spine/proj.win32/libSpine.vcxproj.filters b/cocos/editor-support/spine/proj.win32/libSpine.vcxproj.filters old mode 100644 new mode 100755 index a6f105d4bc..a39c62298a --- a/cocos/editor-support/spine/proj.win32/libSpine.vcxproj.filters +++ b/cocos/editor-support/spine/proj.win32/libSpine.vcxproj.filters @@ -11,15 +11,6 @@ - - Header Files - - - Header Files - - - Header Files - Header Files @@ -56,115 +47,154 @@ Header Files - - Header Files - - - Header Files - Header Files + + Header Files + + + Header Files + Header Files + + Header Files + + + Header Files + Header Files Header Files - + Header Files Header Files + + Header Files + Header Files + + Header Files + Header Files + + Header Files + Header Files + + Header Files + + + Header Files + + + Header Files + - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + Source Files Source Files - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - \ No newline at end of file diff --git a/cocos/editor-support/spine/proj.win8.1-universal/libSpine.Shared/libSpine.Shared.vcxitems b/cocos/editor-support/spine/proj.win8.1-universal/libSpine.Shared/libSpine.Shared.vcxitems new file mode 100644 index 0000000000..9a1fd46146 --- /dev/null +++ b/cocos/editor-support/spine/proj.win8.1-universal/libSpine.Shared/libSpine.Shared.vcxitems @@ -0,0 +1,139 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + {adafd00d-a0d6-46ef-9f0b-ea2880bfe1de} + libSpine + libSpine.Shared + 248F659F-DAC5-46E8-AC09-60EC9FC95053 + + + + %(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory) + + + + + + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + + false + + + false + + + + false + + + false + + + false + + + + false + + + false + + + false + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cocos/editor-support/spine/proj.win8.1-universal/libSpine.Shared/libSpine.Shared.vcxitems.filters b/cocos/editor-support/spine/proj.win8.1-universal/libSpine.Shared/libSpine.Shared.vcxitems.filters new file mode 100644 index 0000000000..06321d9f79 --- /dev/null +++ b/cocos/editor-support/spine/proj.win8.1-universal/libSpine.Shared/libSpine.Shared.vcxitems.filters @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cocos/editor-support/spine/proj.win8.1-universal/libSpine.Windows/libSpine.Windows.vcxproj b/cocos/editor-support/spine/proj.win8.1-universal/libSpine.Windows/libSpine.Windows.vcxproj new file mode 100644 index 0000000000..dad17f335d --- /dev/null +++ b/cocos/editor-support/spine/proj.win8.1-universal/libSpine.Windows/libSpine.Windows.vcxproj @@ -0,0 +1,229 @@ + + + + + Debug + ARM + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + Win32 + + + Release + x64 + + + + {f3550fe0-c795-44f6-8feb-093eb68143ae} + libSpine + en-US + 12.0 + true + Windows Store + 8.1 + CodeSharingStaticLibrary + + + + StaticLibrary + true + v120 + + + StaticLibrary + true + v120 + + + StaticLibrary + true + v120 + + + StaticLibrary + false + true + v120 + + + StaticLibrary + false + true + v120 + + + StaticLibrary + false + true + v120 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + false + + + false + + + false + + + false + + + false + + + + NotUsing + true + true + WIN32;_DEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(EngineRoot)external\winrt_8.1-specific\angle\include;%(AdditionalIncludeDirectories) + + + Console + false + false + + + /IGNORE:4264 %(AdditionalOptions) + + + + + NotUsing + true + true + WIN32;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(EngineRoot)external\winrt_8.1-specific\angle\include;%(AdditionalIncludeDirectories) + + + Console + false + false + + + /IGNORE:4264 %(AdditionalOptions) + + + + + NotUsing + true + true + WIN32;_DEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(EngineRoot)external\winrt_8.1-specific\angle\include;%(AdditionalIncludeDirectories) + + + Console + false + false + + + /IGNORE:4264 %(AdditionalOptions) + + + + + NotUsing + true + true + WIN32;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(EngineRoot)external\winrt_8.1-specific\angle\include;%(AdditionalIncludeDirectories) + + + Console + false + false + + + /IGNORE:4264 %(AdditionalOptions) + + + + + NotUsing + true + true + WIN32;_DEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(EngineRoot)external\winrt_8.1-specific\angle\include;%(AdditionalIncludeDirectories) + + + Console + false + false + + + /IGNORE:4264 %(AdditionalOptions) + + + + + NotUsing + true + true + WIN32;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(EngineRoot)external\winrt_8.1-specific\angle\include;%(AdditionalIncludeDirectories) + + + Console + false + false + + + /IGNORE:4264 %(AdditionalOptions) + + + + + + \ No newline at end of file diff --git a/cocos/editor-support/spine/proj.win8.1-universal/libSpine.Windows/libSpine.Windows.vcxproj.filters b/cocos/editor-support/spine/proj.win8.1-universal/libSpine.Windows/libSpine.Windows.vcxproj.filters new file mode 100644 index 0000000000..a7761ab018 --- /dev/null +++ b/cocos/editor-support/spine/proj.win8.1-universal/libSpine.Windows/libSpine.Windows.vcxproj.filters @@ -0,0 +1,5 @@ + + + + + diff --git a/cocos/audio/proj.wp8/CocosDenshion.vcxproj b/cocos/editor-support/spine/proj.win8.1-universal/libSpine.WindowsPhone/libSpine.WindowsPhone.vcxproj similarity index 50% rename from cocos/audio/proj.wp8/CocosDenshion.vcxproj rename to cocos/editor-support/spine/proj.win8.1-universal/libSpine.WindowsPhone/libSpine.WindowsPhone.vcxproj index 65cc59fcec..29792e4c2d 100644 --- a/cocos/audio/proj.wp8/CocosDenshion.vcxproj +++ b/cocos/editor-support/spine/proj.win8.1-universal/libSpine.WindowsPhone/libSpine.WindowsPhone.vcxproj @@ -1,89 +1,103 @@  - + - - Debug - Win32 - Debug ARM - - Release + + Debug Win32 Release ARM + + Release + Win32 + - {DF125891-EEE9-4466-B903-F828FD272158} - CocosDenshion.win32 + {cc1da216-a80d-4be4-b309-acb6af313aff} + libSpine en-US - 11.0 + 12.0 + true + Windows Phone + 8.1 + CodeSharingStaticLibrary StaticLibrary true - v110_wp80 + v120_wp81 StaticLibrary true - v110_wp80 + v120_wp81 StaticLibrary false true - v110_wp80 + v120_wp81 StaticLibrary false true - v110_wp80 + v120_wp81 - - - + - - - - - - + + + - - + + + + + + + + - - + + + - + + false + + + false + + + false + + false - _LIB;%(PreprocessorDefinitions) NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - ..\Include;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_CRT_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4251 + true + true + WIN32;_DEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(EngineRoot)external\wp_8.1-specific\angle\include;%(AdditionalIncludeDirectories) Console false + false /IGNORE:4264 %(AdditionalOptions) @@ -91,80 +105,56 @@ - _LIB;NDEBUG;%(PreprocessorDefinitions) NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - ..\Include;%(AdditionalIncludeDirectories) - WP8;NDEBUG;_CRT_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4251 + true + true + WIN32;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(EngineRoot)external\wp_8.1-specific\angle\include;%(AdditionalIncludeDirectories) Console false + false /IGNORE:4264 %(AdditionalOptions) - + - _LIB;%(PreprocessorDefinitions) NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - ..\Include;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_CRT_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4251 + true + true + WIN32;_DEBUG;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(EngineRoot)external\wp_8.1-specific\angle\include;%(AdditionalIncludeDirectories) Console false + false /IGNORE:4264 %(AdditionalOptions) - + - _LIB;NDEBUG;%(PreprocessorDefinitions) NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - ..\Include;%(AdditionalIncludeDirectories) - WP8;NDEBUG;_CRT_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4251 + true + true + WIN32;_WINDOWS;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + $(EngineRoot)external\wp_8.1-specific\angle\include;%(AdditionalIncludeDirectories) Console false + false /IGNORE:4264 %(AdditionalOptions) - - - true - - - true - false - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cocos/editor-support/spine/proj.win8.1-universal/libSpine.WindowsPhone/libSpine.WindowsPhone.vcxproj.filters b/cocos/editor-support/spine/proj.win8.1-universal/libSpine.WindowsPhone/libSpine.WindowsPhone.vcxproj.filters new file mode 100644 index 0000000000..a7761ab018 --- /dev/null +++ b/cocos/editor-support/spine/proj.win8.1-universal/libSpine.WindowsPhone/libSpine.WindowsPhone.vcxproj.filters @@ -0,0 +1,5 @@ + + + + + diff --git a/cocos/editor-support/spine/proj.wp8/libSpine.vcxproj b/cocos/editor-support/spine/proj.wp8/libSpine.vcxproj index 25bdccc1b9..d0693d06dc 100644 --- a/cocos/editor-support/spine/proj.wp8/libSpine.vcxproj +++ b/cocos/editor-support/spine/proj.wp8/libSpine.vcxproj @@ -52,20 +52,16 @@ - - + - - + - - + - - + @@ -74,13 +70,14 @@ _LIB;%(PreprocessorDefinitions) - Use + NotUsing pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) $(EngineRoot);$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) + WP8;_DEBUG;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) 4267;4251;4244;%(DisableSpecificWarnings) - pch.h + + /Zm200 %(AdditionalOptions) @@ -94,12 +91,13 @@ _LIB;NDEBUG;%(PreprocessorDefinitions) - Use + NotUsing pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) $(EngineRoot);$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WP8;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - pch.h + WP8;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + /Zm200 %(AdditionalOptions) @@ -113,13 +111,14 @@ _LIB;%(PreprocessorDefinitions) - Use + NotUsing pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) $(EngineRoot);$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) + WP8;_DEBUG;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) 4267;4251;4244;%(DisableSpecificWarnings) - pch.h + + /Zm200 %(AdditionalOptions) @@ -133,12 +132,13 @@ _LIB;NDEBUG;%(PreprocessorDefinitions) - Use + NotUsing pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) $(EngineRoot);$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WP8;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - pch.h + WP8;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + + /Zm200 %(AdditionalOptions) @@ -158,10 +158,6 @@ false - - - - @@ -173,55 +169,192 @@ - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - Create - Create + + false + false + false + false + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + + false + false + false + false + + + false + false + false + false + + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + false + false + false + false + + + + + + \ No newline at end of file diff --git a/cocos/editor-support/spine/proj.wp8/libSpine.vcxproj.filters b/cocos/editor-support/spine/proj.wp8/libSpine.vcxproj.filters index b1f53f5b14..90ccad4969 100644 --- a/cocos/editor-support/spine/proj.wp8/libSpine.vcxproj.filters +++ b/cocos/editor-support/spine/proj.wp8/libSpine.vcxproj.filters @@ -11,15 +11,6 @@ - - Header Files - - - Header Files - - - Header Files - Header Files @@ -56,121 +47,154 @@ Header Files - - Header Files - - - Header Files - Header Files + + Header Files + + + Header Files + Header Files + + Header Files + + + Header Files + Header Files Header Files - + Header Files Header Files + + Header Files + Header Files + + Header Files + Header Files + + Header Files + Header Files - + + Header Files + + + Header Files + + Header Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + Source Files - + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + Source Files Source Files - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - \ No newline at end of file diff --git a/cocos/editor-support/spine/proj.wp8/pch.cpp b/cocos/editor-support/spine/proj.wp8/pch.cpp deleted file mode 100644 index bcb5590be1..0000000000 --- a/cocos/editor-support/spine/proj.wp8/pch.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "pch.h" diff --git a/cocos/editor-support/spine/proj.wp8/pch.h b/cocos/editor-support/spine/proj.wp8/pch.h deleted file mode 100644 index 4c3b8cde28..0000000000 --- a/cocos/editor-support/spine/proj.wp8/pch.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include "cocos2d.h" -#include "cocos-ext.h" -#include "ExtensionMacros.h" diff --git a/cocos/editor-support/spine/spine-cocos2dx.cpp b/cocos/editor-support/spine/spine-cocos2dx.cpp index 486e244ac0..5ab0c1d71c 100644 --- a/cocos/editor-support/spine/spine-cocos2dx.cpp +++ b/cocos/editor-support/spine/spine-cocos2dx.cpp @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #include @@ -37,88 +34,22 @@ USING_NS_CC; void _spAtlasPage_createTexture (spAtlasPage* self, const char* path) { - Texture2D* texture = Director::getInstance()->getTextureCache()->addImage(path); - TextureAtlas* textureAtlas = TextureAtlas::createWithTexture(texture, 4); - textureAtlas->retain(); - self->rendererObject = textureAtlas; - // Using getContentSize to make it supports the strategy of loading resources in cocos2d-x. - self->width = texture->getPixelsWide(); - self->height = texture->getPixelsHigh(); -// self->width = texture->getContentSize().width; -// self->height = texture->getContentSize().height; + Texture2D* texture = Director::getInstance()->getTextureCache()->addImage(path); + texture->retain(); + self->rendererObject = texture; + self->width = texture->getPixelsWide(); + self->height = texture->getPixelsHigh(); } void _spAtlasPage_disposeTexture (spAtlasPage* self) { - ((TextureAtlas*)self->rendererObject)->release(); + ((Texture2D*)self->rendererObject)->release(); } -char* _spUtil_readFile (const char* path, int* length) -{ - char* ret = nullptr; - int size = 0; - Data data = FileUtils::getInstance()->getDataFromFile(path); - - if (!data.isNull()) - { - size = static_cast(data.getSize()); - *length = size; - // Allocates one more byte for string terminal, it will be safe when parsing JSON file in Spine runtime. - ret = (char*)malloc(size + 1); - ret[size] = '\0'; - memcpy(ret, data.getBytes(), size); - } - - return ret; -} - -/**/ - -void spRegionAttachment_updateQuad (spRegionAttachment* self, spSlot* slot, V3F_C4B_T2F_Quad* quad, bool premultipliedAlpha) { - float vertices[8]; - spRegionAttachment_computeWorldVertices(self, slot->skeleton->x, slot->skeleton->y, slot->bone, vertices); - - GLubyte r = slot->skeleton->r * slot->r * 255; - GLubyte g = slot->skeleton->g * slot->g * 255; - GLubyte b = slot->skeleton->b * slot->b * 255; - float normalizedAlpha = slot->skeleton->a * slot->a; - if (premultipliedAlpha) { - r *= normalizedAlpha; - g *= normalizedAlpha; - b *= normalizedAlpha; - } - GLubyte a = normalizedAlpha * 255; - quad->bl.colors.r = r; - quad->bl.colors.g = g; - quad->bl.colors.b = b; - quad->bl.colors.a = a; - quad->tl.colors.r = r; - quad->tl.colors.g = g; - quad->tl.colors.b = b; - quad->tl.colors.a = a; - quad->tr.colors.r = r; - quad->tr.colors.g = g; - quad->tr.colors.b = b; - quad->tr.colors.a = a; - quad->br.colors.r = r; - quad->br.colors.g = g; - quad->br.colors.b = b; - quad->br.colors.a = a; - - quad->bl.vertices.x = vertices[VERTEX_X1]; - quad->bl.vertices.y = vertices[VERTEX_Y1]; - quad->tl.vertices.x = vertices[VERTEX_X2]; - quad->tl.vertices.y = vertices[VERTEX_Y2]; - quad->tr.vertices.x = vertices[VERTEX_X3]; - quad->tr.vertices.y = vertices[VERTEX_Y3]; - quad->br.vertices.x = vertices[VERTEX_X4]; - quad->br.vertices.y = vertices[VERTEX_Y4]; - - quad->bl.texCoords.u = self->uvs[VERTEX_X1]; - quad->bl.texCoords.v = self->uvs[VERTEX_Y1]; - quad->tl.texCoords.u = self->uvs[VERTEX_X2]; - quad->tl.texCoords.v = self->uvs[VERTEX_Y2]; - quad->tr.texCoords.u = self->uvs[VERTEX_X3]; - quad->tr.texCoords.v = self->uvs[VERTEX_Y3]; - quad->br.texCoords.u = self->uvs[VERTEX_X4]; - quad->br.texCoords.v = self->uvs[VERTEX_Y4]; +char* _spUtil_readFile (const char* path, int* length) { + Data data = FileUtils::getInstance()->getDataFromFile( + FileUtils::getInstance()->fullPathForFilename(path).c_str()); + *length = data.getSize(); + char* bytes = MALLOC(char, *length); + memcpy(bytes, data.getBytes(), *length); + return bytes; } diff --git a/cocos/editor-support/spine/spine-cocos2dx.h b/cocos/editor-support/spine/spine-cocos2dx.h index 51d6f689ac..3409012f31 100644 --- a/cocos/editor-support/spine/spine-cocos2dx.h +++ b/cocos/editor-support/spine/spine-cocos2dx.h @@ -1,44 +1,39 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_COCOS2DX_H_ #define SPINE_COCOS2DX_H_ -#include "cocos2d.h" #include -#include -#include - -void spRegionAttachment_updateQuad (spRegionAttachment* self, spSlot* slot, cocos2d::V3F_C4B_T2F_Quad* quad, bool premultiplied = false); +#include "cocos2d.h" +#include +#include #endif /* SPINE_COCOS2DX_H_ */ diff --git a/cocos/editor-support/spine/spine.h b/cocos/editor-support/spine/spine.h index 2ec61481cc..54f42419d7 100644 --- a/cocos/editor-support/spine/spine.h +++ b/cocos/editor-support/spine/spine.h @@ -1,34 +1,31 @@ /****************************************************************************** - * Spine Runtime Software License - Version 1.1 + * Spine Runtimes Software License + * Version 2.1 * * Copyright (c) 2013, Esoteric Software * All rights reserved. * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), you + * may not (a) modify, translate, adapt or otherwise create derivative works, + * improvements of the Software or develop new applications using the Software + * or (b) remove, delete, alter or obscure any trademarks or any copyright, + * trademark, patent or other intellectual property or proprietary rights + * notices on or in the Software, including any copy thereof. Redistributions + * in binary or source form must include this license and terms. * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ #ifndef SPINE_SPINE_H_ @@ -44,6 +41,8 @@ #include #include #include +#include +#include #include #include #include diff --git a/cocos/network/Android.mk b/cocos/network/Android.mk index e056ad41c5..0e5fa5254f 100644 --- a/cocos/network/Android.mk +++ b/cocos/network/Android.mk @@ -9,14 +9,10 @@ LOCAL_SRC_FILES := HttpClient.cpp \ SocketIO.cpp \ WebSocket.cpp +LOCAL_EXPORT_C_INCLUDES := -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/.. - -LOCAL_C_INCLUDES := $(LOCAL_PATH)/../.. \ -$(LOCAL_PATH)/.. \ -$(LOCAL_PATH)/../platform/android \ -$(LOCAL_PATH)/../../external/curl/include/android \ -$(LOCAL_PATH)/../../external/websockets/include/android +LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../external/curl/include/android \ + $(LOCAL_PATH)/../../external/websockets/include/android LOCAL_STATIC_LIBRARIES := cocos2dx_internal_static LOCAL_STATIC_LIBRARIES += cocos_curl_static diff --git a/cocos/network/proj.wp8/libNetwork.vcxproj b/cocos/network/proj.wp8/libNetwork.vcxproj deleted file mode 100644 index 5f3328d874..0000000000 --- a/cocos/network/proj.wp8/libNetwork.vcxproj +++ /dev/null @@ -1,163 +0,0 @@ - - - - - Debug - Win32 - - - Debug - ARM - - - Release - Win32 - - - Release - ARM - - - - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E} - network.win32 - en-US - 11.0 - - - - StaticLibrary - true - v110_wp80 - - - StaticLibrary - true - v110_wp80 - - - StaticLibrary - false - true - v110_wp80 - - - StaticLibrary - false - true - v110_wp80 - - - - - - - - - - - - - - - - - - - - - - - - false - - - - _LIB;%(PreprocessorDefinitions) - NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - ..\Include;$(EngineRoot)cocos;$(EngineRoot)external\websockets\include\wp8;$(EngineRoot)external\curl\include\wp8;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_CRT_SECURE_NO_WARNINGS;COCOS2D_DEBUG=1;CC_STATIC;%(PreprocessorDefinitions) - 4251 - false - - - Console - false - - - - - _LIB;NDEBUG;%(PreprocessorDefinitions) - NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - ..\Include;$(EngineRoot)cocos;$(EngineRoot)external\websockets\include\wp8;$(EngineRoot)external\curl\include\wp8;%(AdditionalIncludeDirectories) - WP8;NDEBUG;_CRT_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4251 - false - - - Console - false - - - - - _LIB;%(PreprocessorDefinitions) - NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - ..\Include;$(EngineRoot)cocos;$(EngineRoot)external\websockets\include\wp8;$(EngineRoot)external\curl\include\wp8;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_CRT_SECURE_NO_WARNINGS;COCOS2D_DEBUG=1;CC_STATIC;%(PreprocessorDefinitions) - 4251 - false - - - Console - false - - - - - _LIB;NDEBUG;%(PreprocessorDefinitions) - NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - ..\Include;$(EngineRoot)cocos;$(EngineRoot)external\websockets\include\wp8;$(EngineRoot)external\curl\include\wp8;%(AdditionalIncludeDirectories) - WP8;NDEBUG;_CRT_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4251 - false - - - Console - false - - - - - true - - - true - false - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cocos/network/proj.wp8/libNetwork.vcxproj.filters b/cocos/network/proj.wp8/libNetwork.vcxproj.filters deleted file mode 100644 index f3ad86ae8c..0000000000 --- a/cocos/network/proj.wp8/libNetwork.vcxproj.filters +++ /dev/null @@ -1,41 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - Source Files - - - \ No newline at end of file diff --git a/cocos/physics/chipmunk/CCPhysicsShapeInfo_chipmunk.cpp b/cocos/physics/chipmunk/CCPhysicsShapeInfo_chipmunk.cpp index 450745f7d3..c1b8693259 100644 --- a/cocos/physics/chipmunk/CCPhysicsShapeInfo_chipmunk.cpp +++ b/cocos/physics/chipmunk/CCPhysicsShapeInfo_chipmunk.cpp @@ -26,7 +26,6 @@ #if CC_USE_PHYSICS #include #include -#include "chipmunk.h" NS_CC_BEGIN diff --git a/cocos/physics/chipmunk/CCPhysicsShapeInfo_chipmunk.h b/cocos/physics/chipmunk/CCPhysicsShapeInfo_chipmunk.h index 4167211051..ecde537a0a 100644 --- a/cocos/physics/chipmunk/CCPhysicsShapeInfo_chipmunk.h +++ b/cocos/physics/chipmunk/CCPhysicsShapeInfo_chipmunk.h @@ -31,10 +31,7 @@ #include #include #include "platform/CCPlatformMacros.h" - -typedef uintptr_t cpGroup; -struct cpShape; -struct cpBody; +#include "chipmunk.h" NS_CC_BEGIN diff --git a/cocos/platform/CCFileUtils.cpp b/cocos/platform/CCFileUtils.cpp index ddc162c22c..e137e32df8 100644 --- a/cocos/platform/CCFileUtils.cpp +++ b/cocos/platform/CCFileUtils.cpp @@ -37,6 +37,14 @@ THE SOFTWARE. #include "unzip.h" #include +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) +#include +#endif + +#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) +#include +#endif + #if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) && (CC_TARGET_PLATFORM != CC_PLATFORM_WP8) && (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) #include #include @@ -644,7 +652,12 @@ unsigned char* FileUtils::getFileDataFromZip(const std::string& zipFilePath, con file = unzOpen(zipFilePath.c_str()); CC_BREAK_IF(!file); + // FIXME: Other platforms should use upstream minizip like mingw-w64 + #ifdef __MINGW32__ + int ret = unzLocateFile(file, filename.c_str(), NULL); + #else int ret = unzLocateFile(file, filename.c_str(), 1); + #endif CC_BREAK_IF(UNZ_OK != ret); char filePathA[260]; @@ -1103,6 +1116,18 @@ bool FileUtils::createDirectory(const std::string& path) #endif } +#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) +static int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf) +{ + auto ret = remove(fpath); + if (ret) { + log("Fail to remove:%s ",fpath); + } + + return ret; +} +#endif + bool FileUtils::removeDirectory(const std::string& path) { if (path.size() > 0 && path[path.size() - 1] != '/') @@ -1155,6 +1180,11 @@ bool FileUtils::removeDirectory(const std::string& path) return true; else return false; +#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) + if (nftw(path.c_str(),unlink_cb, 64, FTW_DEPTH | FTW_PHYS)) + return false; + else + return true; #else std::string command = "rm -r "; // Path may include space. @@ -1195,48 +1225,46 @@ bool FileUtils::removeFile(const std::string &path) else return false; #else - std::string command = "rm -f "; - // Path may include space. - command += "\"" + path + "\""; - if (system(command.c_str()) >= 0) - return true; - else + if (remove(path.c_str())) { return false; + } else { + return true; + } #endif } bool FileUtils::renameFile(const std::string &path, const std::string &oldname, const std::string &name) { CCASSERT(!path.empty(), "Invalid path"); + std::string oldPath = path + oldname; + std::string newPath = path + name; // Rename a file #if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) - std::string oldPath = path + oldname; - std::string newPath = path + name; - if (rename(oldPath.c_str(), newPath.c_str()) != 0) + int errorCode = rename(oldPath.c_str(), newPath.c_str()); + + if (0 != errorCode) { - CCLOGERROR("Fail to rename file %s to %s !", oldPath.c_str(), newPath.c_str()); + CCLOGERROR("Fail to rename file %s to %s !Error code is %d", oldPath.c_str(), newPath.c_str(), errorCode); return false; } return true; #else - std::string command = "cmd /c ren "; - std::string win32path = path; - int len = win32path.length(); - for (int i = 0; i < len; ++i) - { - if (win32path[i] == '/') - { - win32path[i] = '\\'; - } - } - // Path may include space. - command += win32path + oldname + " " + name; - - if (WinExec(command.c_str(), SW_HIDE) > 31) - return true; - else - return false; + std::regex pat("\/"); + std::string _old = std::regex_replace(oldPath, pat, "\\"); + std::string _new = std::regex_replace(newPath, pat, "\\"); + + if(FileUtils::getInstance()->isFileExist(_new)) + { + DeleteFileA(_new.c_str()); + } + + MoveFileA(_old.c_str(), _new.c_str()); + + if(0 == GetLastError()) + return true; + else + return false; #endif } diff --git a/cocos/platform/CCPlatformConfig.h b/cocos/platform/CCPlatformConfig.h index c3545df2da..dee092326c 100644 --- a/cocos/platform/CCPlatformConfig.h +++ b/cocos/platform/CCPlatformConfig.h @@ -57,7 +57,7 @@ THE SOFTWARE. #define CC_TARGET_PLATFORM CC_PLATFORM_UNKNOWN // mac -#if defined(CC_TARGET_OS_MAC) +#if defined(CC_TARGET_OS_MAC) || defined(__APPLE__) #undef CC_TARGET_PLATFORM #define CC_TARGET_PLATFORM CC_PLATFORM_MAC #endif @@ -81,7 +81,7 @@ THE SOFTWARE. #endif // linux -#if defined(LINUX) +#if defined(LINUX) && !defined(__APPLE__) #undef CC_TARGET_PLATFORM #define CC_TARGET_PLATFORM CC_PLATFORM_LINUX #endif diff --git a/cocos/platform/CCPlatformDefine.h b/cocos/platform/CCPlatformDefine.h index 0422c24c21..4a581ddb8a 100644 --- a/cocos/platform/CCPlatformDefine.h +++ b/cocos/platform/CCPlatformDefine.h @@ -37,7 +37,7 @@ THE SOFTWARE. #elif CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 #include "platform/win32/CCPlatformDefine-win32.h" #elif CC_TARGET_PLATFORM == CC_PLATFORM_WP8 || CC_TARGET_PLATFORM == CC_PLATFORM_WINRT -#include "platform/winrt/CCPlatformDefine.h" +#include "platform/winrt/CCPlatformDefine-winrt.h" #elif CC_TARGET_PLATFORM == CC_PLATFORM_LINUX #include "platform/linux/CCPlatformDefine-linux.h" #endif diff --git a/cocos/platform/CMakeLists.txt b/cocos/platform/CMakeLists.txt index f9ff5a3c3d..c9d4cb9a89 100644 --- a/cocos/platform/CMakeLists.txt +++ b/cocos/platform/CMakeLists.txt @@ -10,7 +10,7 @@ set(COCOS_PLATFORM_SPECIFIC_SRC platform/desktop/CCGLViewImpl-desktop.cpp ) -elseif(MACOSX) +elseif(MACOSX OR APPLE) set(COCOS_PLATFORM_SPECIFIC_SRC platform/mac/CCApplication-mac.mm diff --git a/cocos/platform/android/Android.mk b/cocos/platform/android/Android.mk index 415449727e..123e4fb7e8 100644 --- a/cocos/platform/android/Android.mk +++ b/cocos/platform/android/Android.mk @@ -35,4 +35,8 @@ LOCAL_EXPORT_LDLIBS := -lGLESv1_CM \ -lz \ -landroid +LOCAL_CPPFLAGS := -Wno-extern-c-compat + +LOCAL_EXPORT_CPPFLAGS := -Wno-extern-c-compat + include $(BUILD_STATIC_LIBRARY) diff --git a/cocos/platform/android/CCFileUtils-android.cpp b/cocos/platform/android/CCFileUtils-android.cpp index 6045c1f371..a196626c9c 100644 --- a/cocos/platform/android/CCFileUtils-android.cpp +++ b/cocos/platform/android/CCFileUtils-android.cpp @@ -81,6 +81,58 @@ bool FileUtilsAndroid::init() return FileUtils::init(); } +std::string FileUtilsAndroid::getNewFilename(const std::string &filename) const +{ + std::string newFileName = FileUtils::getNewFilename(filename); + // ../xxx do not fix this path + auto pos = newFileName.find("../"); + if (pos == std::string::npos || pos == 0) + { + return newFileName; + } + + std::vector v(3); + v.resize(0); + auto change = false; + size_t size = newFileName.size(); + size_t idx = 0; + bool noexit = true; + while (noexit) + { + pos = newFileName.find('/', idx); + std::string tmp; + if (pos == std::string::npos) + { + tmp = newFileName.substr(idx, size - idx); + noexit = false; + }else + { + tmp = newFileName.substr(idx, pos - idx + 1); + } + auto t = v.size(); + if (t > 0 && v[t-1].compare("../") != 0 && + (tmp.compare("../") == 0 || tmp.compare("..") == 0)) + { + v.pop_back(); + change = true; + }else + { + v.push_back(tmp); + } + idx = pos + 1; + } + + if (change) + { + newFileName.clear(); + for (auto &s : v) + { + newFileName.append(s); + } + } + return newFileName; +} + bool FileUtilsAndroid::isFileExistInternal(const std::string& strFilePath) const { if (strFilePath.empty()) @@ -156,7 +208,7 @@ Data FileUtilsAndroid::getData(const std::string& filename, bool forString) } else { relativePath += fullPath; } - LOGD("relative path = %s", relativePath.c_str()); + CCLOGINFO("relative path = %s", relativePath.c_str()); if (nullptr == FileUtilsAndroid::assetmanager) { LOGD("... FileUtilsAndroid::assetmanager is nullptr"); diff --git a/cocos/platform/android/CCFileUtils-android.h b/cocos/platform/android/CCFileUtils-android.h index d2415da2f7..7f65d4aa8e 100644 --- a/cocos/platform/android/CCFileUtils-android.h +++ b/cocos/platform/android/CCFileUtils-android.h @@ -61,6 +61,8 @@ public: /* override funtions */ bool init(); + virtual std::string getNewFilename(const std::string &filename) const override; + /** @deprecated Please use FileUtils::getDataFromFile or FileUtils::getStringFromFile instead. */ CC_DEPRECATED_ATTRIBUTE virtual unsigned char* getFileData(const std::string& filename, const char* mode, ssize_t * size) override; diff --git a/cocos/platform/android/jni/JniHelper.cpp b/cocos/platform/android/jni/JniHelper.cpp index 3029b156ae..c8ec46c546 100644 --- a/cocos/platform/android/jni/JniHelper.cpp +++ b/cocos/platform/android/jni/JniHelper.cpp @@ -56,6 +56,10 @@ jclass _getClassID(const char *className) { return _clazz; } +void _detachCurrentThread(void* a) { + cocos2d::JniHelper::getJavaVM()->DetachCurrentThread(); +} + namespace cocos2d { JavaVM* JniHelper::_psJavaVM = nullptr; @@ -73,7 +77,7 @@ namespace cocos2d { LOGD("JniHelper::setJavaVM(%p), pthread_self() = %ld", javaVM, thisthread); _psJavaVM = javaVM; - pthread_key_create(&g_key, nullptr); + pthread_key_create(&g_key, _detachCurrentThread); } JNIEnv* JniHelper::cacheEnv(JavaVM* jvm) { @@ -89,11 +93,6 @@ namespace cocos2d { case JNI_EDETACHED : // Thread not attached - - // TODO : If calling AttachCurrentThread() on a native thread - // must call DetachCurrentThread() in future. - // see: http://developer.android.com/guide/practices/design/jni.html - if (jvm->AttachCurrentThread(&_env, nullptr) < 0) { LOGE("Failed to get the environment using AttachCurrentThread()"); diff --git a/cocos/platform/ios/CCApplication-ios.mm b/cocos/platform/ios/CCApplication-ios.mm index d1c69ff83c..279b23ceba 100644 --- a/cocos/platform/ios/CCApplication-ios.mm +++ b/cocos/platform/ios/CCApplication-ios.mm @@ -88,7 +88,7 @@ const char * Application::getCurrentLanguageCode() // get the current language code.(such as English is "en", Chinese is "zh" and so on) NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage]; NSString * languageCode = [temp objectForKey:NSLocaleLanguageCode]; - [languageCode getCString:code maxLength:2 encoding:NSASCIIStringEncoding]; + [languageCode getCString:code maxLength:3 encoding:NSASCIIStringEncoding]; code[2]='\0'; return code; } diff --git a/cocos/platform/mac/CCApplication-mac.mm b/cocos/platform/mac/CCApplication-mac.mm index c767948e09..131c6cb0b2 100644 --- a/cocos/platform/mac/CCApplication-mac.mm +++ b/cocos/platform/mac/CCApplication-mac.mm @@ -144,7 +144,7 @@ const char * Application::getCurrentLanguageCode() // get the current language code.(such as English is "en", Chinese is "zh" and so on) NSDictionary* temp = [NSLocale componentsFromLocaleIdentifier:currentLanguage]; NSString * languageCode = [temp objectForKey:NSLocaleLanguageCode]; - [languageCode getCString:code maxLength:2 encoding:NSASCIIStringEncoding]; + [languageCode getCString:code maxLength:3 encoding:NSASCIIStringEncoding]; code[2]='\0'; return code; } diff --git a/cocos/platform/win32/CCApplication-win32.cpp b/cocos/platform/win32/CCApplication-win32.cpp index ab3fb7f150..f42301bfa1 100644 --- a/cocos/platform/win32/CCApplication-win32.cpp +++ b/cocos/platform/win32/CCApplication-win32.cpp @@ -213,7 +213,7 @@ bool Application::openURL(const std::string &url) int wchars_num = MultiByteToWideChar(CP_UTF8, 0, url.c_str(), url.size() + 1, temp, url.size() + 1); HINSTANCE r = ShellExecuteW(NULL, L"open", temp, NULL, NULL, SW_SHOWNORMAL); delete[] temp; - return (int)r>32; + return (size_t)r>32; } void Application::setResourceRootPath(const std::string& rootResDir) diff --git a/cocos/platform/winrt/CCApplication.cpp b/cocos/platform/winrt/CCApplication.cpp index 009e1a06b9..caa182f877 100644 --- a/cocos/platform/winrt/CCApplication.cpp +++ b/cocos/platform/winrt/CCApplication.cpp @@ -24,7 +24,7 @@ THE SOFTWARE. ****************************************************************************/ #include "platform/CCPlatformConfig.h" #if CC_TARGET_PLATFORM == CC_PLATFORM_WINRT -#include "platform/winrt/CCGLViewImpl.h" +#include "platform/winrt/CCGLViewImpl-winrt.h" #else #include "platform/wp8/CCGLViewImpl-wp8.h" #endif diff --git a/cocos/platform/winrt/CCDevice.cpp b/cocos/platform/winrt/CCDevice.cpp index 253d838fd0..2fd9823ef6 100644 --- a/cocos/platform/winrt/CCDevice.cpp +++ b/cocos/platform/winrt/CCDevice.cpp @@ -122,8 +122,11 @@ void Device::setAccelerometerEnabled(bool isEnabled) break; } #endif + +#ifndef WP8_SHADER_COMPILER std::shared_ptr event(new AccelerometerEvent(acc)); cocos2d::GLViewImpl::sharedOpenGLView()->QueueEvent(event); +#endif }); } } diff --git a/cocos/platform/winrt/CCGL.h b/cocos/platform/winrt/CCGL.h index 91f91495d5..2b39255fed 100644 --- a/cocos/platform/winrt/CCGL.h +++ b/cocos/platform/winrt/CCGL.h @@ -26,6 +26,25 @@ THE SOFTWARE. #ifndef __CCGL_H__ #define __CCGL_H__ +#define GL_BGRA GL_BGRA_EXT +#define glClearDepth glClearDepthf +#define GL_WRITE_ONLY GL_WRITE_ONLY_OES + +#if CC_TARGET_PLATFORM == CC_PLATFORM_WINRT && !defined(WP8_SHADER_COMPILER) +#include "EGL/egl.h" +#include "EGL/eglext.h" +#include "EGL/eglplatform.h" +#include "GLES2/gl2.h" +#include "GLES2/gl2ext.h" +#include "GLES3/gl3.h" +#include "GLES3/gl3ext.h" + +#define glMapBuffer glMapBufferOES + +#else #include "CCGL_Angle.h" +#endif + + #endif // __CCGL_H__ diff --git a/cocos/platform/winrt/CCGLViewImpl-winrt.cpp b/cocos/platform/winrt/CCGLViewImpl-winrt.cpp new file mode 100644 index 0000000000..d5ecc8e138 --- /dev/null +++ b/cocos/platform/winrt/CCGLViewImpl-winrt.cpp @@ -0,0 +1,552 @@ +/**************************************************************************** +Copyright (c) 2013 cocos2d-x.org +Copyright (c) Microsoft Open Technologies, Inc. + +http://www.cocos2d-x.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +****************************************************************************/ + +#include "CCGLViewImpl-winrt.h" +#include "deprecated/CCSet.h" +#include "base/ccMacros.h" +#include "base/CCDirector.h" +#include "base/CCTouch.h" +#include "base/CCIMEDispatcher.h" +#include "CCApplication.h" +#include "CCWinRTUtils.h" +#include "deprecated/CCNotificationCenter.h" + +using namespace Platform; +using namespace Windows::Foundation; +using namespace Windows::Foundation::Collections; +using namespace Windows::Graphics::Display; +using namespace Windows::UI::Input; +using namespace Windows::UI::Core; +using namespace Windows::UI::Xaml; +using namespace Windows::UI::Xaml::Media; +using namespace Windows::System; +using namespace Windows::UI::ViewManagement; +using namespace Windows::ApplicationModel; +using namespace Windows::ApplicationModel::Core; +using namespace Windows::ApplicationModel::Activation; +using namespace Platform; +using namespace Microsoft::WRL; +using namespace PhoneDirect3DXamlAppComponent; + + +NS_CC_BEGIN + +static GLViewImpl* s_pEglView = NULL; + +GLViewImpl* GLViewImpl::create(const std::string& viewName) +{ + auto ret = new GLViewImpl; + if(ret && ret->initWithFullScreen(viewName)) + { + ret->autorelease(); + return ret; + } + + return nullptr; +} + + +GLViewImpl::GLViewImpl() + : _frameZoomFactor(1.0f) + , _supportTouch(true) + , _isRetina(false) + , m_lastPointValid(false) + , m_running(false) + , m_initialized(false) + , m_windowClosed(false) + , m_windowVisible(true) + , m_width(0) + , m_height(0) + , m_delegate(nullptr) + , m_messageBoxDelegate(nullptr) + , m_orientation(DisplayOrientations::Landscape) +{ + s_pEglView = this; + _viewName = "cocos2dx"; +} + +GLViewImpl::~GLViewImpl() +{ + CC_ASSERT(this == s_pEglView); + s_pEglView = NULL; + + // TODO: cleanup +} + +bool GLViewImpl::initWithRect(const std::string& viewName, Rect rect, float frameZoomFactor) +{ + setViewName(viewName); + setFrameSize(rect.size.width, rect.size.height); + setFrameZoomFactor(frameZoomFactor); + return true; +} + +bool GLViewImpl::initWithFullScreen(const std::string& viewName) +{ + return initWithRect(viewName, Rect(0, 0, m_width, m_height), 1.0f); +} + + +bool GLViewImpl::Create(float width, float height, DisplayOrientations orientation) +{ + m_orientation = orientation; + UpdateForWindowSizeChange(width, height); + return true; +} + + + +void GLViewImpl::setIMEKeyboardState(bool bOpen) +{ + std::string str; + setIMEKeyboardState(bOpen, str); +} + +void GLViewImpl::setIMEKeyboardState(bool bOpen, std::string str) +{ + if(m_delegate) + { + if(bOpen) + { + m_delegate->Invoke(Cocos2dEvent::ShowKeyboard, stringToPlatformString(str)); + } + else + { + m_delegate->Invoke(Cocos2dEvent::HideKeyboard, stringToPlatformString(str)); + } + } +} + +Platform::String^ GLViewImpl::stringToPlatformString(std::string strSrc) +{ + // to wide char + int strLen = MultiByteToWideChar(CP_UTF8, 0, strSrc.c_str(), -1, NULL, 0); + wchar_t* wstr = new wchar_t[strLen + 1]; + memset(wstr, 0, strLen + 1); + MultiByteToWideChar(CP_UTF8, 0, strSrc.c_str(), -1, wstr, strLen); + Platform::String^ strDst = ref new Platform::String(wstr); + delete[] wstr; + return strDst; +} + +void GLViewImpl::swapBuffers() +{ + //eglSwapBuffers(m_eglDisplay, m_eglSurface); +} + + +bool GLViewImpl::isOpenGLReady() +{ + return true; + // TODO: need to revisit this + //return (m_eglDisplay && m_orientation != DisplayOrientations::None); +} + +void GLViewImpl::end() +{ + m_windowClosed = true; +} + + +void GLViewImpl::OnSuspending(Platform::Object^ sender, SuspendingEventArgs^ args) +{ +} + +void GLViewImpl::OnResuming(Platform::Object^ sender, Platform::Object^ args) +{ +} + +// user pressed the Back Key on the phone +void GLViewImpl::OnBackKeyPress() +{ + std::string str; + if(m_delegate) + { + m_delegate->Invoke(Cocos2dEvent::TerminateApp, stringToPlatformString(str)); + } +} + +void GLViewImpl::OnPointerPressed(CoreWindow^ sender, PointerEventArgs^ args) +{ + OnPointerPressed(args); +} + +void GLViewImpl::OnPointerPressed(PointerEventArgs^ args) +{ + int id = args->CurrentPoint->PointerId; + Vec2 pt = GetPoint(args); + handleTouchesBegin(1, &id, &pt.x, &pt.y); +} + + +void GLViewImpl::OnPointerWheelChanged(CoreWindow^ sender, PointerEventArgs^ args) +{ + float direction = (float)args->CurrentPoint->Properties->MouseWheelDelta; + int id = 0; + Vec2 p(0.0f,0.0f); + handleTouchesBegin(1, &id, &p.x, &p.y); + p.y += direction; + handleTouchesMove(1, &id, &p.x, &p.y); + handleTouchesEnd(1, &id, &p.x, &p.y); +} + +void GLViewImpl::OnVisibilityChanged(CoreWindow^ sender, VisibilityChangedEventArgs^ args) +{ + m_windowVisible = args->Visible; +} + +void GLViewImpl::OnWindowClosed(CoreWindow^ sender, CoreWindowEventArgs^ args) +{ + m_windowClosed = true; +} + +void GLViewImpl::OnPointerMoved(CoreWindow^ sender, PointerEventArgs^ args) +{ + OnPointerMoved(args); +} + +void GLViewImpl::OnPointerMoved( PointerEventArgs^ args) +{ + auto currentPoint = args->CurrentPoint; + if (currentPoint->IsInContact) + { + if (m_lastPointValid) + { + int id = args->CurrentPoint->PointerId; + Vec2 p = GetPoint(args); + handleTouchesMove(1, &id, &p.x, &p.y); + } + m_lastPoint = currentPoint->Position; + m_lastPointValid = true; + } + else + { + m_lastPointValid = false; + } +} + +void GLViewImpl::OnPointerReleased(CoreWindow^ sender, PointerEventArgs^ args) +{ + OnPointerReleased(args); +} + +void GLViewImpl::OnPointerReleased(PointerEventArgs^ args) +{ + int id = args->CurrentPoint->PointerId; + Vec2 pt = GetPoint(args); + handleTouchesEnd(1, &id, &pt.x, &pt.y); +} + + + +void GLViewImpl::resize(int width, int height) +{ + +} + +void GLViewImpl::setFrameZoomFactor(float fZoomFactor) +{ + _frameZoomFactor = fZoomFactor; + Director::getInstance()->setProjection(Director::getInstance()->getProjection()); + //resize(m_obScreenSize.width * fZoomFactor, m_obScreenSize.height * fZoomFactor); +} + +float GLViewImpl::getFrameZoomFactor() +{ + return _frameZoomFactor; +} + +void GLViewImpl::centerWindow() +{ + // not implemented in WinRT. Window is always full screen +} + +GLViewImpl* GLViewImpl::sharedOpenGLView() +{ + return s_pEglView; +} + +int GLViewImpl::Run() +{ + // XAML version does not have a run loop + m_running = true; + return 0; +}; + +void GLViewImpl::Render() +{ + OnRendering(); +} + +void GLViewImpl::OnRendering() +{ + if(m_running && m_initialized) + { + Director::getInstance()->mainLoop(); + } +} + + + +bool GLViewImpl::ShowMessageBox(Platform::String^ title, Platform::String^ message) +{ + if(m_messageBoxDelegate) + { + m_messageBoxDelegate->Invoke(title, message); + return true; + } + return false; +} + +bool GLViewImpl::OpenXamlEditBox(Platform::String^ strPlaceHolder, Platform::String^ strText, int maxLength, int inputMode, int inputFlag, Windows::Foundation::EventHandler^ receiveHandler) +{ + if(m_editBoxDelegate) + { + m_editBoxDelegate->Invoke(strPlaceHolder, strText, maxLength, inputMode, inputFlag, receiveHandler); + return true; + } + return false; +} + + + +// called by orientation change from WP8 XAML +void GLViewImpl::UpdateOrientation(DisplayOrientations orientation) +{ + if(m_orientation != orientation) + { + m_orientation = orientation; + UpdateWindowSize(); + } +} + +// called by size change from WP8 XAML +void GLViewImpl::UpdateForWindowSizeChange(float width, float height) +{ + m_width = width; + m_height = height; + UpdateWindowSize(); +} + +#if 0 +win32 version + +void GLViewEventHandler::OnGLFWWindowSizeFunCallback(GLFWwindow *windows, int width, int height) +{ + auto view = Director::getInstance()->getOpenGLView(); + if(view && view->getResolutionPolicy() != ResolutionPolicy::UNKNOWN) + { + Size resSize=view->getDesignResolutionSize(); + ResolutionPolicy resPolicy=view->getResolutionPolicy(); + view->setFrameSize(width, height); + view->setDesignResolutionSize(resSize.width, resSize.height, resPolicy); + Director::getInstance()->setViewport(); + } +} +#endif + +void GLViewImpl::UpdateWindowSize() +{ + float width, height; + + if(m_orientation == DisplayOrientations::Landscape || m_orientation == DisplayOrientations::LandscapeFlipped) + { + width = m_height; + height = m_width; + } + else + { + width = m_width; + height = m_height; + } + + UpdateOrientationMatrix(); + + //CCSize designSize = getDesignResolutionSize(); + if(!m_initialized) + { + m_initialized = true; + GLView::setFrameSize(width, height); + } + + auto view = Director::getInstance()->getOpenGLView(); + if(view && view->getResolutionPolicy() != ResolutionPolicy::UNKNOWN) + { + Size resSize=view->getDesignResolutionSize(); + ResolutionPolicy resPolicy=view->getResolutionPolicy(); + view->setFrameSize(width, height); + view->setDesignResolutionSize(resSize.width, resSize.height, resPolicy); + Director::getInstance()->setViewport(); + Director::sharedDirector()->setProjection(Director::sharedDirector()->getProjection()); + } +} + +const Mat4& GLViewImpl::getOrientationMatrix() const +{ + return m_orientationMatrix; +}; + + +void GLViewImpl::UpdateOrientationMatrix() +{ + kmMat4Identity(&m_orientationMatrix); + kmMat4Identity(&m_reverseOrientationMatrix); + switch(m_orientation) + { + case Windows::Graphics::Display::DisplayOrientations::PortraitFlipped: + kmMat4RotationZ(&m_orientationMatrix, static_cast(M_PI)); + kmMat4RotationZ(&m_reverseOrientationMatrix, static_cast(-M_PI)); + break; + + case Windows::Graphics::Display::DisplayOrientations::Landscape: + kmMat4RotationZ(&m_orientationMatrix, static_cast(-M_PI_2)); + kmMat4RotationZ(&m_reverseOrientationMatrix, static_cast(M_PI_2)); + break; + + case Windows::Graphics::Display::DisplayOrientations::LandscapeFlipped: + kmMat4RotationZ(&m_orientationMatrix, static_cast(M_PI_2)); + kmMat4RotationZ(&m_reverseOrientationMatrix, static_cast(-M_PI_2)); + break; + + default: + break; + } +} + +cocos2d::Vec2 GLViewImpl::TransformToOrientation(Windows::Foundation::Point p) +{ + cocos2d::Vec2 returnValue; + + float x = p.X; + float y = p.Y; + + switch (m_orientation) + { + case DisplayOrientations::Portrait: + default: + returnValue = Vec2(x, y); + break; + case DisplayOrientations::Landscape: + returnValue = Vec2(y, m_width - x); + break; + case DisplayOrientations::PortraitFlipped: + returnValue = Vec2(m_width - x, m_height - y); + break; + case DisplayOrientations::LandscapeFlipped: + returnValue = Vec2(m_height - y, x); + break; + } + + float zoomFactor = GLViewImpl::sharedOpenGLView()->getFrameZoomFactor(); + if(zoomFactor > 0.0f) { + returnValue.x /= zoomFactor; + returnValue.y /= zoomFactor; + } + + // CCLOG("%.2f %.2f : %.2f %.2f", p.X, p.Y,returnValue.x, returnValue.y); + + return returnValue; +} + +Vec2 GLViewImpl::GetPoint(PointerEventArgs^ args) { + + return TransformToOrientation(args->CurrentPoint->Position); + +} + + +void GLViewImpl::setViewPortInPoints(float x , float y , float w , float h) +{ + switch(m_orientation) + { + case DisplayOrientations::Landscape: + case DisplayOrientations::LandscapeFlipped: + glViewport((GLint)(y * _scaleY + _viewPortRect.origin.y), + (GLint)(x * _scaleX + _viewPortRect.origin.x), + (GLsizei)(h * _scaleY), + (GLsizei)(w * _scaleX)); + break; + + default: + glViewport((GLint)(x * _scaleX + _viewPortRect.origin.x), + (GLint)(y * _scaleY + _viewPortRect.origin.y), + (GLsizei)(w * _scaleX), + (GLsizei)(h * _scaleY)); + } +} + +void GLViewImpl::setScissorInPoints(float x , float y , float w , float h) +{ + switch(m_orientation) + { + case DisplayOrientations::Landscape: + case DisplayOrientations::LandscapeFlipped: + glScissor((GLint)(y * _scaleX + _viewPortRect.origin.y), + (GLint)((_viewPortRect.size.width - ((x + w) * _scaleX)) + _viewPortRect.origin.x), + (GLsizei)(h * _scaleY), + (GLsizei)(w * _scaleX)); + break; + + default: + glScissor((GLint)(x * _scaleX + _viewPortRect.origin.x), + (GLint)(y * _scaleY + _viewPortRect.origin.y), + (GLsizei)(w * _scaleX), + (GLsizei)(h * _scaleY)); + } +} + +void GLViewImpl::QueueBackKeyPress() +{ + std::lock_guard guard(mMutex); + std::shared_ptr e(new BackButtonEvent()); + mInputEvents.push(e); +} + +void GLViewImpl::QueuePointerEvent(PointerEventType type, PointerEventArgs^ args) +{ + std::lock_guard guard(mMutex); + std::shared_ptr e(new PointerEvent(type, args)); + mInputEvents.push(e); +} + +void GLViewImpl::QueueEvent(std::shared_ptr& event) +{ + std::lock_guard guard(mMutex); + mInputEvents.push(event); +} + +void GLViewImpl::ProcessEvents() +{ + std::lock_guard guard(mMutex); + + while (!mInputEvents.empty()) + { + InputEvent* e = mInputEvents.front().get(); + e->execute(); + mInputEvents.pop(); + } +} + +NS_CC_END diff --git a/cocos/platform/winrt/CCGLViewImpl-winrt.h b/cocos/platform/winrt/CCGLViewImpl-winrt.h new file mode 100644 index 0000000000..e30672fb2a --- /dev/null +++ b/cocos/platform/winrt/CCGLViewImpl-winrt.h @@ -0,0 +1,183 @@ +/**************************************************************************** +Copyright (c) 2010 cocos2d-x.org +Copyright (c) Microsoft Open Technologies, Inc. + +http://www.cocos2d-x.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +****************************************************************************/ + +#ifndef __CC_EGLVIEWIMPL_WINRT_H__ +#define __CC_EGLVIEWIMPL_WINRT_H__ + +#include "CCStdC.h" +#include "platform/CCCommon.h" +#include "platform/CCGLView.h" +#include "InputEvent.h" + + +#include + +#include +#include +#include +#include + +#include +#include + + +NS_CC_BEGIN + +class GLViewImpl; + + +class CC_DLL GLViewImpl : public GLView +{ +public: + static GLViewImpl* create(const std::string& viewName); + + /* override functions */ + virtual bool isOpenGLReady(); + virtual void end(); + virtual void swapBuffers(); + virtual void setViewPortInPoints(float x , float y , float w , float h); + virtual void setScissorInPoints(float x , float y , float w , float h); + const Mat4& getOrientationMatrix() const; + const Mat4& getReverseOrientationMatrix () const {return m_reverseOrientationMatrix;}; + + Windows::Graphics::Display::DisplayOrientations getDeviceOrientation() {return m_orientation;}; + Size getRenerTargetSize() const { return Size(m_width, m_height); } + + virtual void setIMEKeyboardState(bool bOpen); + virtual void setIMEKeyboardState(bool bOpen, std::string str); + Platform::String^ stringToPlatformString(std::string strSrc); + void ShowKeyboard(Windows::Foundation::Rect r); + void HideKeyboard(Windows::Foundation::Rect r); + + // WP8 XAML app + virtual bool Create(float width, float height, Windows::Graphics::Display::DisplayOrientations orientation); + + void OnPointerPressed(Windows::UI::Core::PointerEventArgs^ args); + void OnPointerMoved(Windows::UI::Core::PointerEventArgs^ args); + void OnPointerReleased(Windows::UI::Core::PointerEventArgs^ args); + void OnPointerPressed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args); + void OnPointerWheelChanged(Windows::UI::Core::CoreWindow^, Windows::UI::Core::PointerEventArgs^ args); + void OnPointerMoved(Windows::UI::Core::CoreWindow^, Windows::UI::Core::PointerEventArgs^ args); + void OnPointerReleased(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args); + void OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args); + void OnWindowClosed(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CoreWindowEventArgs^ args); + void OnResuming(Platform::Object^ sender, Platform::Object^ args); + void OnSuspending(Platform::Object^ sender, Windows::ApplicationModel::SuspendingEventArgs^ args); + void OnBackKeyPress(); + + void QueueBackKeyPress(); + void QueuePointerEvent(PointerEventType type, Windows::UI::Core::PointerEventArgs^ args); + void GLViewImpl::QueueEvent(std::shared_ptr& event); + + void SetXamlEventDelegate(PhoneDirect3DXamlAppComponent::Cocos2dEventDelegate^ delegate) { m_delegate = delegate; }; + void SetXamlMessageBoxDelegate(PhoneDirect3DXamlAppComponent::Cocos2dMessageBoxDelegate^ delegate) { m_messageBoxDelegate = delegate; }; + void SetXamlEditBoxDelegate(PhoneDirect3DXamlAppComponent::Cocos2dEditBoxDelegate^ delegate) { m_editBoxDelegate = delegate; }; + + bool ShowMessageBox(Platform::String^ title, Platform::String^ message); + bool OpenXamlEditBox(Platform::String^ strPlaceHolder, Platform::String^ strText, int maxLength, int inputMode, int inputFlag, Windows::Foundation::EventHandler^ receiveHandler); + + int Run(); + void Render(); + + void resize(int width, int height); + + float getFrameZoomFactor(); + void centerWindow(); + + void UpdateOrientation(Windows::Graphics::Display::DisplayOrientations orientation); + void UpdateForWindowSizeChange(float width, float height); + + // static function + /** + @brief get the shared main open gl window + */ + static GLViewImpl* sharedOpenGLView(); + + void ProcessEvents(); + void AddPointerEvent(PointerEventType type, Windows::UI::Core::PointerEventArgs^ args); + + + +protected: + GLViewImpl(); + virtual ~GLViewImpl(); + + bool initWithRect(const std::string& viewName, Rect rect, float frameZoomFactor); + bool initWithFullScreen(const std::string& viewName); + + /* + * Set zoom factor for frame. This method is for debugging big resolution (e.g.new ipad) app on desktop. + */ + void setFrameZoomFactor(float zoomFactor); + + inline bool isRetina() { return _isRetina; }; + + float _frameZoomFactor; + bool _supportTouch; + bool _isRetina; + + +private: + CC_DISALLOW_COPY_AND_ASSIGN(GLViewImpl); + + void OnRendering(); + void UpdateWindowSize(); + void UpdateOrientationMatrix(); + + cocos2d::Vec2 TransformToOrientation(Windows::Foundation::Point point); + cocos2d::Vec2 GetPoint(Windows::UI::Core::PointerEventArgs^ args); + + Windows::Foundation::Rect m_windowBounds; + Windows::Foundation::EventRegistrationToken m_eventToken; + Windows::Foundation::Point m_lastPoint; + + float m_width; + float m_height; + + Windows::Graphics::Display::DisplayOrientations m_orientation; + Windows::Foundation::Rect m_keyboardRect; + + bool m_lastPointValid; + bool m_windowClosed; + bool m_windowVisible; + Mat4 m_orientationMatrix; + Mat4 m_reverseOrientationMatrix; + + + bool m_running; + bool m_initialized; + + PhoneDirect3DXamlAppComponent::Cocos2dEventDelegate^ m_delegate; + PhoneDirect3DXamlAppComponent::Cocos2dMessageBoxDelegate^ m_messageBoxDelegate; + PhoneDirect3DXamlAppComponent::Cocos2dEditBoxDelegate^ m_editBoxDelegate; + + std::queue> mInputEvents; + std::mutex mMutex; + +}; + +NS_CC_END + +#endif // end of __CC_EGLVIEWIMPL_WINRT_H__ diff --git a/cocos/platform/winrt/CCGL_Angle.h b/cocos/platform/winrt/CCGL_Angle.h index 888eaeb930..04c8e88cd4 100644 --- a/cocos/platform/winrt/CCGL_Angle.h +++ b/cocos/platform/winrt/CCGL_Angle.h @@ -37,16 +37,13 @@ THE SOFTWARE. #include "GLES2/gl2ext.h" #include "winrtangle.h" #include "esUtil.h" -#include "ccMacros.h" +#include "base/ccMacros.h" #define GL_WRITE_ONLY_OES 0x88B9 #define GL_BUFFER_ACCESS_OES 0x88BB #define GL_BUFFER_MAPPED_OES 0x88BC #define GL_BUFFER_MAP_POINTER_OES 0x88BD -#define GL_BGRA GL_BGRA_EXT - -#define glClearDepth glClearDepthf inline void glGenVertexArrays(GLsizei n, GLuint *arrays) @@ -77,6 +74,5 @@ inline GLboolean glUnmapBuffer(GLenum targets) } #define GL_DEPTH24_STENCIL8 GL_DEPTH24_STENCIL8_OES -#define GL_WRITE_ONLY GL_WRITE_ONLY_OES #endif // __CCGL_ANGLE_H__ diff --git a/cocos/platform/winrt/CCPlatformDefine-winrt.h b/cocos/platform/winrt/CCPlatformDefine-winrt.h new file mode 100644 index 0000000000..81bf7cfd55 --- /dev/null +++ b/cocos/platform/winrt/CCPlatformDefine-winrt.h @@ -0,0 +1,50 @@ +/**************************************************************************** +Copyright (c) 2010-2013 cocos2d-x.org +Copyright (c) Microsoft Open Technologies, Inc. + +http://www.cocos2d-x.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +****************************************************************************/ +#ifndef __CCPLATFORMDEFINE_H__ +#define __CCPLATFORMDEFINE_H__ + +#if defined(CC_STATIC) +#define CC_DLL +#else +#if defined(_USRDLL) +#define CC_DLL __declspec(dllexport) +#else /* use a DLL library */ +#define CC_DLL __declspec(dllimport) +#endif +#endif + + + +#include + +#if CC_DISABLE_ASSERT > 0 +#define CC_ASSERT(cond) +#else +#define CC_ASSERT(cond) assert(cond) +#endif +#define CC_UNUSED_PARAM(unusedparam) (void)unusedparam + + +#endif /* __CCPLATFORMDEFINE_H__*/ diff --git a/cocos/platform/winrt/CCStdC.h b/cocos/platform/winrt/CCStdC.h index f86549779b..ebb6375854 100644 --- a/cocos/platform/winrt/CCStdC.h +++ b/cocos/platform/winrt/CCStdC.h @@ -83,17 +83,6 @@ typedef SSIZE_T ssize_t; #include -// Structure timeval has define in winsock.h, include windows.h for it. -#if CC_TARGET_PLATFORM == CC_PLATFORM_WP8 -#define _WINSOCKAPI_ -#include -#elif CC_TARGET_PLATFORM == CC_PLATFORM_WINRT -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN 1 -#endif - -#include - #ifdef WINRT_NO_WINSOCK #undef timeval struct timeval @@ -101,8 +90,15 @@ struct timeval long tv_sec; // seconds long tv_usec; // microSeconds }; -#endif // WINRT_NO_WINSOCK -#endif // CC_TARGET_PLATFORM == CC_PLATFORM_WP8 +#else +// Structure timeval has define in winsock.h, include windows.h for it. +#define _WINSOCKAPI_ +#include +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#include +#endif +#endif struct timezone { diff --git a/cocos/platform/winrt/CCWinRTUtils.cpp b/cocos/platform/winrt/CCWinRTUtils.cpp index c025fbb9ef..c4fb52b0b9 100644 --- a/cocos/platform/winrt/CCWinRTUtils.cpp +++ b/cocos/platform/winrt/CCWinRTUtils.cpp @@ -101,6 +101,7 @@ Platform::String^ PlatformStringFromString(const std::string& s) return ref new Platform::String(ws.data(), ws.length()); } +#if CC_TARGET_PLATFORM == CC_PLATFORM_WP8 // Method to convert a length in device-independent pixels (DIPs) to a length in physical pixels. float ConvertDipsToPixels(float dips) { @@ -112,9 +113,12 @@ float getScaledDPIValue(float v) { auto dipFactor = DisplayProperties::LogicalDpi / 96.0f; return v * dipFactor; } +#endif + void CC_DLL CCLogIPAddresses() { +#ifndef WP8_SHADER_COMPILER auto hostnames = NetworkInformation::GetHostNames(); int length = hostnames->Size; @@ -127,6 +131,7 @@ void CC_DLL CCLogIPAddresses() CCLog("IP Address: %s:", s.c_str()); } } +#endif } std::string CC_DLL getDeviceIPAddresses() diff --git a/cocos/platform/winrt/CCWinRTUtils.h b/cocos/platform/winrt/CCWinRTUtils.h index 75b4225bda..7d06c9d04f 100644 --- a/cocos/platform/winrt/CCWinRTUtils.h +++ b/cocos/platform/winrt/CCWinRTUtils.h @@ -43,9 +43,11 @@ std::string CC_DLL CCUnicodeToUtf8(const wchar_t* pwszStr); std::string PlatformStringToString(Platform::String^ s); Platform::String^ PlatformStringFromString(const std::string& s); +#if CC_TARGET_PLATFORM == CC_PLATFORM_WP8 // Method to convert a length in device-independent pixels (DIPs) to a length in physical pixels. float ConvertDipsToPixels(float dips); float getScaledDPIValue(float v); +#endif Concurrency::task^> ReadDataAsync(Platform::String^ path); diff --git a/cocos/platform/winrt/InputEvent.cpp b/cocos/platform/winrt/InputEvent.cpp index 2389dbd28d..1c647538a0 100644 --- a/cocos/platform/winrt/InputEvent.cpp +++ b/cocos/platform/winrt/InputEvent.cpp @@ -24,7 +24,13 @@ THE SOFTWARE. ****************************************************************************/ #include "InputEvent.h" -#include "CCGLViewImpl.h" + +#if CC_TARGET_PLATFORM == CC_PLATFORM_WP8 +#include "CCGLViewImpl-wp8.h" +#else +#include "CCGLViewImpl-winrt.h" +#endif + #include "base/CCEventAcceleration.h" NS_CC_BEGIN diff --git a/cocos/platform/winrt/InputEvent.h b/cocos/platform/winrt/InputEvent.h index f8cbcdf664..ed22daf21f 100644 --- a/cocos/platform/winrt/InputEvent.h +++ b/cocos/platform/winrt/InputEvent.h @@ -48,7 +48,7 @@ enum PointerEventType PointerReleased, }; -class InputEvent +class CC_DLL InputEvent { public: InputEvent() {}; @@ -57,7 +57,7 @@ public: }; -class AccelerometerEvent : public InputEvent +class CC_DLL AccelerometerEvent : public InputEvent { public: AccelerometerEvent(const cocos2d::Acceleration& event); @@ -67,7 +67,7 @@ private: cocos2d::Acceleration m_event; }; -class PointerEvent : public InputEvent +class CC_DLL PointerEvent : public InputEvent { public: PointerEvent(PointerEventType type, Windows::UI::Core::PointerEventArgs^ args); @@ -79,7 +79,7 @@ private: Platform::Agile m_args; }; -class KeyboardEvent : public InputEvent +class CC_DLL KeyboardEvent : public InputEvent { public: @@ -92,14 +92,14 @@ private: Platform::Agile m_text; }; -class BackButtonEvent : public InputEvent +class CC_DLL BackButtonEvent : public InputEvent { public: BackButtonEvent(); virtual void execute(); }; -class CustomInputEvent : public InputEvent +class CC_DLL CustomInputEvent : public InputEvent { public: CustomInputEvent(const std::function&); diff --git a/cocos/platform/winrt/pch.h b/cocos/platform/winrt/pch.h index 5e0bbb907c..5dbe96eb9f 100644 --- a/cocos/platform/winrt/pch.h +++ b/cocos/platform/winrt/pch.h @@ -1,3 +1,11 @@ #pragma once +#include "targetver.h" + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif + +#include #include "cocos2d.h" +#include "cocos-ext.h" \ No newline at end of file diff --git a/cocos/platform/winrt/targetver.h b/cocos/platform/winrt/targetver.h new file mode 100644 index 0000000000..a66ecb00f1 --- /dev/null +++ b/cocos/platform/winrt/targetver.h @@ -0,0 +1,8 @@ +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include diff --git a/cocos/platform/wp8-xaml/cpp/Cocos2dRenderer.cpp b/cocos/platform/wp8-xaml/cpp/Cocos2dRenderer.cpp index 608cc6f828..d0d5a5f61c 100644 --- a/cocos/platform/wp8-xaml/cpp/Cocos2dRenderer.cpp +++ b/cocos/platform/wp8-xaml/cpp/Cocos2dRenderer.cpp @@ -26,7 +26,7 @@ THE SOFTWARE. #include "Cocos2dRenderer.h" #include "cocos2d.h" #include "CCApplication.h" -#include "CCGLViewImpl.h" +#include "CCGLViewImpl-wp8.h" #include "AppDelegate.h" #include @@ -56,11 +56,11 @@ void Cocos2dRenderer::CreateGLResources() GLViewImpl* glview = GLViewImpl::create("Test Cpp"); glview->Create(m_eglDisplay, m_eglContext, m_eglSurface, m_renderTargetSize.Width, m_renderTargetSize.Height,m_orientation); director->setOpenGLView(glview); - CCApplication::getInstance()->run(); glview->SetXamlEventDelegate(m_delegate); glview->SetXamlMessageBoxDelegate(m_messageBoxDelegate); glview->SetXamlEditBoxDelegate(m_editBoxDelegate); - } + CCApplication::getInstance()->run(); + } else { cocos2d::GL::invalidateStateCache(); @@ -71,7 +71,7 @@ void Cocos2dRenderer::CreateGLResources() director->getEventDispatcher()->dispatchEvent(&recreatedEvent); cocos2d::Application::getInstance()->applicationWillEnterForeground(); director->setGLDefaultValues(); - } + } m_loadingComplete = true; } diff --git a/cocos/platform/wp8/CCGLViewImpl-wp8.cpp b/cocos/platform/wp8/CCGLViewImpl-wp8.cpp index 8eaa3f7314..1f4ef9d887 100644 --- a/cocos/platform/wp8/CCGLViewImpl-wp8.cpp +++ b/cocos/platform/wp8/CCGLViewImpl-wp8.cpp @@ -23,7 +23,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/ -#include "CCGLViewImpl.h" +#include "CCGLViewImpl-wp8.h" #include "deprecated/CCSet.h" #include "base/ccMacros.h" #include "base/CCDirector.h" diff --git a/cocos/platform/wp8/pch.cpp b/cocos/platform/wp8/pch.cpp deleted file mode 100644 index bcb5590be1..0000000000 --- a/cocos/platform/wp8/pch.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "pch.h" diff --git a/cocos/platform/wp8/pch.h b/cocos/platform/wp8/pch.h deleted file mode 100644 index 5e0bbb907c..0000000000 --- a/cocos/platform/wp8/pch.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#include "cocos2d.h" diff --git a/cocos/platform/wp8/shaders/precompiledshaders.h b/cocos/platform/wp8/shaders/precompiledshaders.h index 51da7437e0..27483e863c 100644 --- a/cocos/platform/wp8/shaders/precompiledshaders.h +++ b/cocos/platform/wp8/shaders/precompiledshaders.h @@ -86,7 +86,7 @@ const unsigned char s_133478C5A874C1E6F59B418CE6C7C39F1AE0F873[] = { 120, 116, 117, 114, 101, 48, 0, 0, 0, 0, 1, 0, 0, 0, 248, 3, 0, 0, 4, 5, 0, 0, 0, 0, - 0, 0, 194, 137, 0, 0, 0, 0, + 0, 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 11, 95, 74, 206, 145, 124, 32, 219, 67, 19, @@ -456,7 +456,7 @@ const unsigned char s_13E33F532157A58EC77EDE3B3112560A89D272B2[] = { 116, 114, 105, 120, 0, 0, 0, 0, 0, 0, 0, 0, 204, 2, 0, 0, 164, 4, 0, 0, 0, 0, 0, 0, -194, 137, 0, 0, 0, 0, 0, 0, +107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 127, 145, 81, 72, 216, 190, 16, 61, 245, 231, 235, 249, @@ -800,7 +800,7 @@ const unsigned char s_1A69A7CC77C7C8FC62799B0513816EA41FBF3BFE[] = { 116, 67, 111, 108, 111, 114, 0, 0, 0, 0, 3, 0, 0, 0, 208, 7, 0, 0, 4, 5, 0, 0, 0, 0, - 0, 0, 194, 137, 0, 0, 0, 0, + 0, 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 65, 106, 69, 173, 111, 248, 97, 165, 186, 90, @@ -1215,6 +1215,1135 @@ const unsigned char s_1A69A7CC77C7C8FC62799B0513816EA41FBF3BFE[] = { 111, 110, 0, 171, 171, 171, }; +const unsigned char s_2CF9793879165058483EFB4AD6FA9746ECD7DD2A[] = { + +166, 147, 0, 0, 142, 9, 2, 1, + 0, 128, 0, 0, 82, 139, 0, 0, + 10, 0, 0, 0, 97, 95, 112, 111, +115, 105, 116, 105, 111, 110, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, 80, 139, + 0, 0, 10, 0, 0, 0, 97, 95, +116, 101, 120, 67, 111, 111, 114, 100, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, +255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 81, 139, 0, 0, 8, 0, 0, 0, + 97, 95, 110, 111, 114, 109, 97, 108, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, +255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, +255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, +255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, +255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, + 0, 17, 0, 0, 0, 92, 139, 0, + 0, 242, 141, 0, 0, 11, 0, 0, + 0, 67, 67, 95, 77, 86, 77, 97, +116, 114, 105, 120, 0, 0, 0, 0, +255, 255, 255, 255, 0, 0, 0, 0, + 4, 0, 0, 0, 91, 139, 0, 0, +242, 141, 0, 0, 15, 0, 0, 0, + 67, 67, 95, 78, 111, 114, 109, 97, +108, 77, 97, 116, 114, 105, 120, 0, + 0, 0, 0, 255, 255, 255, 255, 4, + 0, 0, 0, 3, 0, 0, 0, 92, +139, 0, 0, 242, 141, 0, 0, 10, + 0, 0, 0, 67, 67, 95, 80, 77, + 97, 116, 114, 105, 120, 0, 0, 0, + 0, 255, 255, 255, 255, 7, 0, 0, + 0, 4, 0, 0, 0, 81, 139, 0, + 0, 242, 141, 0, 0, 26, 0, 0, + 0, 117, 95, 80, 111, 105, 110, 116, + 76, 105, 103, 104, 116, 83, 111, 117, +114, 99, 101, 80, 111, 115, 105, 116, +105, 111, 110, 1, 0, 0, 0, 255, +255, 255, 255, 11, 0, 0, 0, 1, + 0, 0, 0, 81, 139, 0, 0, 242, +141, 0, 0, 25, 0, 0, 0, 117, + 95, 83, 112, 111, 116, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 80, 111, 115, 105, 116, 105, 111, 110, + 1, 0, 0, 0, 255, 255, 255, 255, + 12, 0, 0, 0, 1, 0, 0, 0, + 94, 139, 0, 0, 0, 0, 0, 0, + 11, 0, 0, 0, 67, 67, 95, 84, +101, 120, 116, 117, 114, 101, 48, 0, + 0, 0, 0, 0, 0, 0, 0, 255, +255, 255, 255, 1, 0, 0, 0, 81, +139, 0, 0, 241, 141, 0, 0, 25, + 0, 0, 0, 117, 95, 65, 109, 98, +105, 101, 110, 116, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 67, +111, 108, 111, 114, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 1, 0, 0, 0, 81, 139, 0, 0, +241, 141, 0, 0, 21, 0, 0, 0, +117, 95, 68, 105, 114, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 67, 111, 108, 111, 114, 1, 0, 0, + 0, 1, 0, 0, 0, 255, 255, 255, +255, 1, 0, 0, 0, 81, 139, 0, + 0, 241, 141, 0, 0, 25, 0, 0, + 0, 117, 95, 68, 105, 114, 76, 105, +103, 104, 116, 83, 111, 117, 114, 99, +101, 68, 105, 114, 101, 99, 116, 105, +111, 110, 1, 0, 0, 0, 2, 0, + 0, 0, 255, 255, 255, 255, 1, 0, + 0, 0, 81, 139, 0, 0, 241, 141, + 0, 0, 23, 0, 0, 0, 117, 95, + 80, 111, 105, 110, 116, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 67, 111, 108, 111, 114, 1, 0, 0, + 0, 3, 0, 0, 0, 255, 255, 255, +255, 1, 0, 0, 0, 6, 20, 0, + 0, 241, 141, 0, 0, 30, 0, 0, + 0, 117, 95, 80, 111, 105, 110, 116, + 76, 105, 103, 104, 116, 83, 111, 117, +114, 99, 101, 82, 97, 110, 103, 101, + 73, 110, 118, 101, 114, 115, 101, 1, + 0, 0, 0, 4, 0, 0, 0, 255, +255, 255, 255, 1, 0, 0, 0, 81, +139, 0, 0, 241, 141, 0, 0, 22, + 0, 0, 0, 117, 95, 83, 112, 111, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 67, 111, 108, 111, +114, 1, 0, 0, 0, 5, 0, 0, + 0, 255, 255, 255, 255, 1, 0, 0, + 0, 81, 139, 0, 0, 241, 141, 0, + 0, 26, 0, 0, 0, 117, 95, 83, +112, 111, 116, 76, 105, 103, 104, 116, + 83, 111, 117, 114, 99, 101, 68, 105, +114, 101, 99, 116, 105, 111, 110, 1, + 0, 0, 0, 6, 0, 0, 0, 255, +255, 255, 255, 1, 0, 0, 0, 6, + 20, 0, 0, 241, 141, 0, 0, 30, + 0, 0, 0, 117, 95, 83, 112, 111, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 73, 110, 110, 101, +114, 65, 110, 103, 108, 101, 67, 111, +115, 1, 0, 0, 0, 7, 0, 0, + 0, 255, 255, 255, 255, 1, 0, 0, + 0, 6, 20, 0, 0, 241, 141, 0, + 0, 30, 0, 0, 0, 117, 95, 83, +112, 111, 116, 76, 105, 103, 104, 116, + 83, 111, 117, 114, 99, 101, 79, 117, +116, 101, 114, 65, 110, 103, 108, 101, + 67, 111, 115, 1, 0, 0, 0, 8, + 0, 0, 0, 255, 255, 255, 255, 1, + 0, 0, 0, 6, 20, 0, 0, 241, +141, 0, 0, 29, 0, 0, 0, 117, + 95, 83, 112, 111, 116, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 82, 97, 110, 103, 101, 73, 110, 118, +101, 114, 115, 101, 1, 0, 0, 0, + 9, 0, 0, 0, 255, 255, 255, 255, + 1, 0, 0, 0, 82, 139, 0, 0, +241, 141, 0, 0, 7, 0, 0, 0, +117, 95, 99, 111, 108, 111, 114, 0, + 0, 0, 0, 10, 0, 0, 0, 255, +255, 255, 255, 1, 0, 0, 0, 17, + 0, 0, 0, 11, 0, 0, 0, 67, + 67, 95, 77, 86, 77, 97, 116, 114, +105, 120, 0, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, 67, 67, + 95, 78, 111, 114, 109, 97, 108, 77, + 97, 116, 114, 105, 120, 0, 0, 0, + 0, 1, 0, 0, 0, 10, 0, 0, + 0, 67, 67, 95, 80, 77, 97, 116, +114, 105, 120, 0, 0, 0, 0, 2, + 0, 0, 0, 26, 0, 0, 0, 117, + 95, 80, 111, 105, 110, 116, 76, 105, +103, 104, 116, 83, 111, 117, 114, 99, +101, 80, 111, 115, 105, 116, 105, 111, +110, 0, 0, 0, 0, 3, 0, 0, + 0, 25, 0, 0, 0, 117, 95, 83, +112, 111, 116, 76, 105, 103, 104, 116, + 83, 111, 117, 114, 99, 101, 80, 111, +115, 105, 116, 105, 111, 110, 0, 0, + 0, 0, 4, 0, 0, 0, 11, 0, + 0, 0, 67, 67, 95, 84, 101, 120, +116, 117, 114, 101, 48, 0, 0, 0, + 0, 5, 0, 0, 0, 25, 0, 0, + 0, 117, 95, 65, 109, 98, 105, 101, +110, 116, 76, 105, 103, 104, 116, 83, +111, 117, 114, 99, 101, 67, 111, 108, +111, 114, 0, 0, 0, 0, 6, 0, + 0, 0, 21, 0, 0, 0, 117, 95, + 68, 105, 114, 76, 105, 103, 104, 116, + 83, 111, 117, 114, 99, 101, 67, 111, +108, 111, 114, 0, 0, 0, 0, 7, + 0, 0, 0, 25, 0, 0, 0, 117, + 95, 68, 105, 114, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 68, +105, 114, 101, 99, 116, 105, 111, 110, + 0, 0, 0, 0, 8, 0, 0, 0, + 23, 0, 0, 0, 117, 95, 80, 111, +105, 110, 116, 76, 105, 103, 104, 116, + 83, 111, 117, 114, 99, 101, 67, 111, +108, 111, 114, 0, 0, 0, 0, 9, + 0, 0, 0, 30, 0, 0, 0, 117, + 95, 80, 111, 105, 110, 116, 76, 105, +103, 104, 116, 83, 111, 117, 114, 99, +101, 82, 97, 110, 103, 101, 73, 110, +118, 101, 114, 115, 101, 0, 0, 0, + 0, 10, 0, 0, 0, 22, 0, 0, + 0, 117, 95, 83, 112, 111, 116, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 67, 111, 108, 111, 114, 0, + 0, 0, 0, 11, 0, 0, 0, 26, + 0, 0, 0, 117, 95, 83, 112, 111, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 68, 105, 114, 101, + 99, 116, 105, 111, 110, 0, 0, 0, + 0, 12, 0, 0, 0, 30, 0, 0, + 0, 117, 95, 83, 112, 111, 116, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 73, 110, 110, 101, 114, 65, +110, 103, 108, 101, 67, 111, 115, 0, + 0, 0, 0, 13, 0, 0, 0, 30, + 0, 0, 0, 117, 95, 83, 112, 111, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 79, 117, 116, 101, +114, 65, 110, 103, 108, 101, 67, 111, +115, 0, 0, 0, 0, 14, 0, 0, + 0, 29, 0, 0, 0, 117, 95, 83, +112, 111, 116, 76, 105, 103, 104, 116, + 83, 111, 117, 114, 99, 101, 82, 97, +110, 103, 101, 73, 110, 118, 101, 114, +115, 101, 0, 0, 0, 0, 15, 0, + 0, 0, 7, 0, 0, 0, 117, 95, + 99, 111, 108, 111, 114, 0, 0, 0, + 0, 16, 0, 0, 0, 236, 16, 0, + 0, 124, 10, 0, 0, 0, 0, 0, + 0, 107, 155, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 68, 88, 66, 67, 39, 224, 169, +185, 116, 156, 41, 157, 187, 9, 222, +142, 94, 217, 160, 100, 1, 0, 0, + 0, 236, 16, 0, 0, 6, 0, 0, + 0, 56, 0, 0, 0, 140, 3, 0, + 0, 144, 11, 0, 0, 12, 12, 0, + 0, 244, 15, 0, 0, 112, 16, 0, + 0, 65, 111, 110, 57, 76, 3, 0, + 0, 76, 3, 0, 0, 0, 2, 255, +255, 24, 3, 0, 0, 52, 0, 0, + 0, 1, 0, 40, 0, 0, 0, 52, + 0, 0, 0, 52, 0, 1, 0, 36, + 0, 0, 0, 52, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 255, +255, 81, 0, 0, 5, 11, 0, 15, +160, 0, 0, 0, 0, 0, 0, 128, + 63, 0, 0, 0, 192, 0, 0, 64, + 64, 31, 0, 0, 2, 0, 0, 0, +128, 0, 0, 7, 176, 31, 0, 0, + 2, 0, 0, 0, 128, 1, 0, 7, +176, 31, 0, 0, 2, 0, 0, 0, +128, 2, 0, 7, 176, 31, 0, 0, + 2, 0, 0, 0, 128, 3, 0, 3, +176, 31, 0, 0, 2, 0, 0, 0, +144, 0, 8, 15, 160, 5, 0, 0, + 3, 0, 0, 7, 128, 1, 0, 228, +176, 4, 0, 0, 160, 8, 0, 0, + 3, 0, 0, 1, 128, 0, 0, 228, +128, 0, 0, 228, 128, 2, 0, 0, + 3, 0, 0, 1, 128, 0, 0, 0, +129, 11, 0, 85, 160, 11, 0, 0, + 3, 1, 0, 8, 128, 0, 0, 0, +128, 11, 0, 0, 160, 2, 0, 0, + 3, 0, 0, 7, 128, 2, 0, 228, +160, 2, 0, 228, 160, 36, 0, 0, + 2, 1, 0, 7, 128, 0, 0, 228, +128, 36, 0, 0, 2, 0, 0, 7, +128, 0, 0, 228, 176, 8, 0, 0, + 3, 0, 0, 8, 128, 0, 0, 228, +128, 1, 0, 228, 129, 5, 0, 0, + 3, 1, 0, 7, 128, 0, 0, 255, +128, 1, 0, 228, 160, 88, 0, 0, + 4, 1, 0, 7, 128, 0, 0, 255, +128, 1, 0, 228, 128, 11, 0, 0, +160, 2, 0, 0, 3, 1, 0, 7, +128, 1, 0, 228, 128, 0, 0, 228, +160, 36, 0, 0, 2, 2, 0, 7, +128, 1, 0, 228, 176, 8, 0, 0, + 3, 0, 0, 8, 128, 0, 0, 228, +128, 2, 0, 228, 128, 5, 0, 0, + 3, 2, 0, 7, 128, 0, 0, 255, +128, 3, 0, 228, 160, 88, 0, 0, + 4, 2, 0, 7, 128, 0, 0, 255, +128, 2, 0, 228, 128, 11, 0, 0, +160, 4, 0, 0, 4, 1, 0, 7, +128, 2, 0, 228, 128, 1, 0, 255, +128, 1, 0, 228, 128, 2, 0, 0, + 3, 2, 0, 7, 128, 6, 0, 228, +160, 6, 0, 228, 160, 36, 0, 0, + 2, 3, 0, 7, 128, 2, 0, 228, +128, 36, 0, 0, 2, 2, 0, 7, +128, 2, 0, 228, 176, 8, 0, 0, + 3, 0, 0, 8, 128, 3, 0, 228, +128, 2, 0, 228, 129, 8, 0, 0, + 3, 1, 0, 8, 128, 0, 0, 228, +128, 2, 0, 228, 128, 2, 0, 0, + 3, 0, 0, 1, 128, 0, 0, 255, +128, 8, 0, 0, 161, 1, 0, 0, + 2, 2, 0, 1, 128, 8, 0, 0, +160, 2, 0, 0, 3, 0, 0, 2, +128, 2, 0, 0, 129, 7, 0, 0, +160, 6, 0, 0, 2, 0, 0, 2, +128, 0, 0, 85, 128, 5, 0, 0, + 3, 0, 0, 17, 128, 0, 0, 85, +128, 0, 0, 0, 128, 4, 0, 0, + 4, 0, 0, 2, 128, 0, 0, 0, +128, 11, 0, 170, 160, 11, 0, 255, +160, 5, 0, 0, 3, 0, 0, 1, +128, 0, 0, 0, 128, 0, 0, 0, +128, 5, 0, 0, 3, 0, 0, 1, +128, 0, 0, 0, 128, 0, 0, 85, +128, 5, 0, 0, 3, 0, 0, 14, +128, 2, 0, 144, 176, 9, 0, 0, +160, 8, 0, 0, 3, 0, 0, 2, +128, 0, 0, 249, 128, 0, 0, 249, +128, 2, 0, 0, 3, 0, 0, 2, +128, 0, 0, 85, 129, 11, 0, 85, +160, 5, 0, 0, 3, 0, 0, 1, +128, 0, 0, 0, 128, 0, 0, 85, +128, 88, 0, 0, 4, 0, 0, 1, +128, 0, 0, 85, 128, 0, 0, 0, +128, 11, 0, 0, 160, 5, 0, 0, + 3, 0, 0, 14, 128, 1, 0, 255, +128, 5, 0, 144, 160, 88, 0, 0, + 4, 0, 0, 14, 128, 1, 0, 255, +128, 0, 0, 228, 128, 11, 0, 0, +160, 4, 0, 0, 4, 0, 0, 7, +128, 0, 0, 249, 128, 0, 0, 0, +128, 1, 0, 228, 128, 66, 0, 0, + 3, 1, 0, 15, 128, 3, 0, 228, +176, 0, 8, 228, 160, 5, 0, 0, + 3, 1, 0, 15, 128, 1, 0, 228, +128, 10, 0, 228, 160, 1, 0, 0, + 2, 0, 0, 8, 128, 11, 0, 85, +160, 5, 0, 0, 3, 0, 0, 15, +128, 0, 0, 228, 128, 1, 0, 228, +128, 1, 0, 0, 2, 0, 8, 15, +128, 0, 0, 228, 128, 1, 0, 0, + 2, 1, 8, 15, 128, 0, 0, 228, +128, 1, 0, 0, 2, 2, 8, 15, +128, 0, 0, 228, 128, 1, 0, 0, + 2, 3, 8, 15, 128, 0, 0, 228, +128, 255, 255, 0, 0, 83, 72, 68, + 82, 252, 7, 0, 0, 64, 0, 0, + 0, 255, 1, 0, 0, 89, 0, 0, + 4, 70, 142, 32, 0, 0, 0, 0, + 0, 11, 0, 0, 0, 90, 0, 0, + 3, 0, 96, 16, 0, 0, 0, 0, + 0, 88, 24, 0, 4, 0, 112, 16, + 0, 0, 0, 0, 0, 85, 85, 0, + 0, 98, 16, 0, 3, 114, 16, 16, + 0, 0, 0, 0, 0, 98, 16, 0, + 3, 114, 16, 16, 0, 1, 0, 0, + 0, 98, 16, 0, 3, 114, 16, 16, + 0, 2, 0, 0, 0, 98, 16, 0, + 3, 50, 16, 16, 0, 3, 0, 0, + 0, 101, 0, 0, 3, 242, 32, 16, + 0, 0, 0, 0, 0, 101, 0, 0, + 3, 242, 32, 16, 0, 1, 0, 0, + 0, 101, 0, 0, 3, 242, 32, 16, + 0, 2, 0, 0, 0, 101, 0, 0, + 3, 242, 32, 16, 0, 3, 0, 0, + 0, 104, 0, 0, 2, 4, 0, 0, + 0, 16, 0, 0, 7, 18, 0, 16, + 0, 0, 0, 0, 0, 70, 18, 16, + 0, 0, 0, 0, 0, 70, 18, 16, + 0, 0, 0, 0, 0, 68, 0, 0, + 5, 18, 0, 16, 0, 0, 0, 0, + 0, 10, 0, 16, 0, 0, 0, 0, + 0, 56, 0, 0, 7, 114, 0, 16, + 0, 0, 0, 0, 0, 6, 0, 16, + 0, 0, 0, 0, 0, 70, 18, 16, + 0, 0, 0, 0, 0, 0, 0, 0, + 9, 114, 0, 16, 0, 1, 0, 0, + 0, 70, 130, 32, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 2, 0, 0, + 0, 16, 0, 0, 7, 130, 0, 16, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 1, 0, 0, 0, 70, 2, 16, + 0, 1, 0, 0, 0, 68, 0, 0, + 5, 130, 0, 16, 0, 0, 0, 0, + 0, 58, 0, 16, 0, 0, 0, 0, + 0, 56, 0, 0, 7, 114, 0, 16, + 0, 1, 0, 0, 0, 246, 15, 16, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 1, 0, 0, 0, 16, 0, 0, + 8, 130, 0, 16, 0, 0, 0, 0, + 0, 70, 2, 16, 0, 0, 0, 0, + 0, 70, 2, 16, 128, 65, 0, 0, + 0, 1, 0, 0, 0, 52, 0, 0, + 7, 130, 0, 16, 0, 0, 0, 0, + 0, 58, 0, 16, 0, 0, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 0, + 0, 54, 0, 0, 6, 114, 0, 16, + 0, 1, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 0, 0, 5, 130, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 0, 48, 0, 0, + 1, 33, 0, 0, 7, 18, 0, 16, + 0, 2, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 1, 0, 0, 0, 3, 0, 4, + 3, 10, 0, 16, 0, 2, 0, 0, + 0, 50, 0, 0, 10, 114, 0, 16, + 0, 1, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 246, 15, 16, 0, 0, 0, 0, + 0, 70, 2, 16, 0, 1, 0, 0, + 0, 30, 0, 0, 7, 130, 0, 16, + 0, 1, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 1, 0, 0, 0, 22, 0, 0, + 1, 56, 0, 0, 8, 114, 0, 16, + 0, 2, 0, 0, 0, 70, 18, 16, + 0, 1, 0, 0, 0, 6, 128, 32, + 0, 0, 0, 0, 0, 4, 0, 0, + 0, 16, 0, 0, 7, 130, 0, 16, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 2, 0, 0, 0, 70, 2, 16, + 0, 2, 0, 0, 0, 0, 0, 0, + 8, 130, 0, 16, 0, 0, 0, 0, + 0, 58, 0, 16, 128, 65, 0, 0, + 0, 0, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 128, 63, 52, 0, 0, + 7, 130, 0, 16, 0, 0, 0, 0, + 0, 58, 0, 16, 0, 0, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 7, 130, 0, 16, + 0, 1, 0, 0, 0, 70, 18, 16, + 0, 1, 0, 0, 0, 70, 18, 16, + 0, 1, 0, 0, 0, 68, 0, 0, + 5, 130, 0, 16, 0, 1, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 56, 0, 0, 7, 114, 0, 16, + 0, 2, 0, 0, 0, 246, 15, 16, + 0, 1, 0, 0, 0, 70, 18, 16, + 0, 1, 0, 0, 0, 16, 0, 0, + 7, 130, 0, 16, 0, 1, 0, 0, + 0, 70, 2, 16, 0, 0, 0, 0, + 0, 70, 2, 16, 0, 2, 0, 0, + 0, 52, 0, 0, 7, 130, 0, 16, + 0, 1, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 0, 56, 0, 0, + 8, 114, 0, 16, 0, 2, 0, 0, + 0, 246, 15, 16, 0, 1, 0, 0, + 0, 70, 130, 32, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 54, 0, 0, + 5, 114, 0, 16, 0, 3, 0, 0, + 0, 70, 2, 16, 0, 1, 0, 0, + 0, 54, 0, 0, 5, 130, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 0, 48, 0, 0, + 1, 33, 0, 0, 7, 130, 0, 16, + 0, 2, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 1, 0, 0, 0, 3, 0, 4, + 3, 58, 0, 16, 0, 2, 0, 0, + 0, 50, 0, 0, 9, 114, 0, 16, + 0, 3, 0, 0, 0, 70, 2, 16, + 0, 2, 0, 0, 0, 246, 15, 16, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 3, 0, 0, 0, 30, 0, 0, + 7, 130, 0, 16, 0, 1, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 1, 64, 0, 0, 1, 0, 0, + 0, 22, 0, 0, 1, 56, 0, 0, + 8, 114, 0, 16, 0, 1, 0, 0, + 0, 70, 18, 16, 0, 2, 0, 0, + 0, 6, 128, 32, 0, 0, 0, 0, + 0, 9, 0, 0, 0, 16, 0, 0, + 7, 130, 0, 16, 0, 0, 0, 0, + 0, 70, 2, 16, 0, 1, 0, 0, + 0, 70, 2, 16, 0, 1, 0, 0, + 0, 0, 0, 0, 8, 130, 0, 16, + 0, 0, 0, 0, 0, 58, 0, 16, +128, 65, 0, 0, 0, 0, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 128, + 63, 52, 0, 0, 7, 130, 0, 16, + 0, 0, 0, 0, 0, 58, 0, 16, + 0, 0, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 0, 16, 0, 0, + 7, 18, 0, 16, 0, 1, 0, 0, + 0, 70, 18, 16, 0, 2, 0, 0, + 0, 70, 18, 16, 0, 2, 0, 0, + 0, 68, 0, 0, 5, 18, 0, 16, + 0, 1, 0, 0, 0, 10, 0, 16, + 0, 1, 0, 0, 0, 56, 0, 0, + 7, 114, 0, 16, 0, 1, 0, 0, + 0, 6, 0, 16, 0, 1, 0, 0, + 0, 70, 18, 16, 0, 2, 0, 0, + 0, 0, 0, 0, 9, 114, 0, 16, + 0, 2, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 6, 0, 0, + 0, 70, 130, 32, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 16, 0, 0, + 7, 130, 0, 16, 0, 1, 0, 0, + 0, 70, 2, 16, 0, 2, 0, 0, + 0, 70, 2, 16, 0, 2, 0, 0, + 0, 68, 0, 0, 5, 130, 0, 16, + 0, 1, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 56, 0, 0, + 7, 114, 0, 16, 0, 2, 0, 0, + 0, 246, 15, 16, 0, 1, 0, 0, + 0, 70, 2, 16, 0, 2, 0, 0, + 0, 16, 0, 0, 8, 130, 0, 16, + 0, 1, 0, 0, 0, 70, 2, 16, + 0, 2, 0, 0, 0, 70, 2, 16, +128, 65, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 10, 18, 0, 16, + 0, 2, 0, 0, 0, 10, 128, 32, + 0, 0, 0, 0, 0, 7, 0, 0, + 0, 10, 128, 32, 128, 65, 0, 0, + 0, 0, 0, 0, 0, 8, 0, 0, + 0, 0, 0, 0, 9, 130, 0, 16, + 0, 1, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 10, 128, 32, +128, 65, 0, 0, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 14, 0, 0, + 10, 18, 0, 16, 0, 2, 0, 0, + 0, 2, 64, 0, 0, 0, 0, 128, + 63, 0, 0, 128, 63, 0, 0, 128, + 63, 0, 0, 128, 63, 10, 0, 16, + 0, 2, 0, 0, 0, 56, 32, 0, + 7, 130, 0, 16, 0, 1, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 10, 0, 16, 0, 2, 0, 0, + 0, 50, 0, 0, 9, 18, 0, 16, + 0, 2, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 192, 1, 64, 0, + 0, 0, 0, 64, 64, 56, 0, 0, + 7, 130, 0, 16, 0, 1, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 56, 0, 0, 7, 130, 0, 16, + 0, 1, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 10, 0, 16, + 0, 2, 0, 0, 0, 56, 0, 0, + 7, 130, 0, 16, 0, 0, 0, 0, + 0, 58, 0, 16, 0, 0, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 16, 0, 0, 7, 18, 0, 16, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 1, 0, 0, 0, 52, 0, 0, + 7, 18, 0, 16, 0, 0, 0, 0, + 0, 10, 0, 16, 0, 0, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 0, + 0, 56, 0, 0, 8, 114, 0, 16, + 0, 0, 0, 0, 0, 6, 0, 16, + 0, 0, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 5, 0, 0, + 0, 54, 0, 0, 5, 114, 0, 16, + 0, 1, 0, 0, 0, 70, 2, 16, + 0, 3, 0, 0, 0, 54, 0, 0, + 5, 18, 0, 16, 0, 2, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 0, + 0, 48, 0, 0, 1, 33, 0, 0, + 7, 34, 0, 16, 0, 2, 0, 0, + 0, 10, 0, 16, 0, 2, 0, 0, + 0, 1, 64, 0, 0, 1, 0, 0, + 0, 3, 0, 4, 3, 26, 0, 16, + 0, 2, 0, 0, 0, 50, 0, 0, + 9, 114, 0, 16, 0, 1, 0, 0, + 0, 70, 2, 16, 0, 0, 0, 0, + 0, 246, 15, 16, 0, 0, 0, 0, + 0, 70, 2, 16, 0, 1, 0, 0, + 0, 30, 0, 0, 7, 18, 0, 16, + 0, 2, 0, 0, 0, 10, 0, 16, + 0, 2, 0, 0, 0, 1, 64, 0, + 0, 1, 0, 0, 0, 22, 0, 0, + 1, 69, 0, 0, 9, 242, 0, 16, + 0, 0, 0, 0, 0, 70, 16, 16, + 0, 3, 0, 0, 0, 70, 126, 16, + 0, 0, 0, 0, 0, 0, 96, 16, + 0, 0, 0, 0, 0, 56, 0, 0, + 8, 242, 0, 16, 0, 0, 0, 0, + 0, 70, 14, 16, 0, 0, 0, 0, + 0, 70, 142, 32, 0, 0, 0, 0, + 0, 10, 0, 0, 0, 54, 0, 0, + 5, 130, 0, 16, 0, 1, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 128, + 63, 56, 0, 0, 7, 242, 0, 16, + 0, 0, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 70, 14, 16, + 0, 1, 0, 0, 0, 54, 0, 0, + 5, 242, 32, 16, 0, 0, 0, 0, + 0, 70, 14, 16, 0, 0, 0, 0, + 0, 54, 0, 0, 5, 242, 32, 16, + 0, 1, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 54, 0, 0, + 5, 242, 32, 16, 0, 2, 0, 0, + 0, 70, 14, 16, 0, 0, 0, 0, + 0, 54, 0, 0, 5, 242, 32, 16, + 0, 3, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 62, 0, 0, + 1, 83, 84, 65, 84, 116, 0, 0, + 0, 75, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 8, 0, 0, + 0, 47, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 82, 68, 69, + 70, 224, 3, 0, 0, 1, 0, 0, + 0, 176, 0, 0, 0, 3, 0, 0, + 0, 28, 0, 0, 0, 0, 4, 255, +255, 0, 65, 0, 0, 172, 3, 0, + 0, 124, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 1, 0, 0, + 0, 145, 0, 0, 0, 2, 0, 0, + 0, 5, 0, 0, 0, 4, 0, 0, + 0, 255, 255, 255, 255, 0, 0, 0, + 0, 1, 0, 0, 0, 13, 0, 0, + 0, 166, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 115, 97, 109, 112, 108, 101, 114, + 95, 95, 67, 67, 95, 84, 101, 120, +116, 117, 114, 101, 48, 0, 116, 101, +120, 116, 117, 114, 101, 95, 95, 67, + 67, 95, 84, 101, 120, 116, 117, 114, +101, 48, 0, 36, 71, 108, 111, 98, + 97, 108, 115, 0, 171, 166, 0, 0, + 0, 11, 0, 0, 0, 200, 0, 0, + 0, 176, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 208, 1, 0, + 0, 0, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 236, 1, 0, + 0, 0, 0, 0, 0, 252, 1, 0, + 0, 16, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 20, 2, 0, + 0, 0, 0, 0, 0, 36, 2, 0, + 0, 32, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 64, 2, 0, + 0, 0, 0, 0, 0, 80, 2, 0, + 0, 48, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 108, 2, 0, + 0, 0, 0, 0, 0, 124, 2, 0, + 0, 64, 0, 0, 0, 4, 0, 0, + 0, 2, 0, 0, 0, 156, 2, 0, + 0, 0, 0, 0, 0, 172, 2, 0, + 0, 80, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 196, 2, 0, + 0, 0, 0, 0, 0, 212, 2, 0, + 0, 96, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 240, 2, 0, + 0, 0, 0, 0, 0, 0, 3, 0, + 0, 112, 0, 0, 0, 4, 0, 0, + 0, 2, 0, 0, 0, 32, 3, 0, + 0, 0, 0, 0, 0, 48, 3, 0, + 0, 128, 0, 0, 0, 4, 0, 0, + 0, 2, 0, 0, 0, 80, 3, 0, + 0, 0, 0, 0, 0, 96, 3, 0, + 0, 144, 0, 0, 0, 4, 0, 0, + 0, 2, 0, 0, 0, 128, 3, 0, + 0, 0, 0, 0, 0, 144, 3, 0, + 0, 160, 0, 0, 0, 16, 0, 0, + 0, 2, 0, 0, 0, 156, 3, 0, + 0, 0, 0, 0, 0, 95, 117, 95, + 65, 109, 98, 105, 101, 110, 116, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 67, 111, 108, 111, 114, 0, +171, 1, 0, 3, 0, 1, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 95, 117, 95, 68, 105, 114, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 67, 111, 108, 111, 114, 0, +171, 1, 0, 3, 0, 1, 0, 3, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 95, 117, 95, 68, 105, 114, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 68, 105, 114, 101, 99, 116, +105, 111, 110, 0, 171, 1, 0, 3, + 0, 1, 0, 3, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 95, 117, 95, + 80, 111, 105, 110, 116, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 67, 111, 108, 111, 114, 0, 171, 171, +171, 1, 0, 3, 0, 1, 0, 3, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 95, 117, 95, 80, 111, 105, 110, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 82, 97, 110, 103, +101, 73, 110, 118, 101, 114, 115, 101, + 0, 0, 0, 3, 0, 1, 0, 1, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 95, 117, 95, 83, 112, 111, 116, + 76, 105, 103, 104, 116, 83, 111, 117, +114, 99, 101, 67, 111, 108, 111, 114, + 0, 1, 0, 3, 0, 1, 0, 3, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 95, 117, 95, 83, 112, 111, 116, + 76, 105, 103, 104, 116, 83, 111, 117, +114, 99, 101, 68, 105, 114, 101, 99, +116, 105, 111, 110, 0, 1, 0, 3, + 0, 1, 0, 3, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 95, 117, 95, + 83, 112, 111, 116, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 73, +110, 110, 101, 114, 65, 110, 103, 108, +101, 67, 111, 115, 0, 0, 0, 3, + 0, 1, 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 95, 117, 95, + 83, 112, 111, 116, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 79, +117, 116, 101, 114, 65, 110, 103, 108, +101, 67, 111, 115, 0, 0, 0, 3, + 0, 1, 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 95, 117, 95, + 83, 112, 111, 116, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 82, + 97, 110, 103, 101, 73, 110, 118, 101, +114, 115, 101, 0, 171, 0, 0, 3, + 0, 1, 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 95, 117, 95, + 99, 111, 108, 111, 114, 0, 171, 171, +171, 1, 0, 3, 0, 1, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 77, 105, 99, 114, 111, 115, 111, +102, 116, 32, 40, 82, 41, 32, 72, + 76, 83, 76, 32, 83, 104, 97, 100, +101, 114, 32, 67, 111, 109, 112, 105, +108, 101, 114, 32, 54, 46, 51, 46, + 57, 54, 48, 48, 46, 49, 54, 51, + 56, 52, 0, 171, 171, 73, 83, 71, + 78, 116, 0, 0, 0, 4, 0, 0, + 0, 8, 0, 0, 0, 104, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 7, 7, 0, 0, 104, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 1, 0, 0, + 0, 7, 7, 0, 0, 104, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 2, 0, 0, + 0, 7, 7, 0, 0, 104, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 3, 0, 0, + 0, 3, 3, 0, 0, 84, 69, 88, + 67, 79, 79, 82, 68, 0, 171, 171, +171, 79, 83, 71, 78, 116, 0, 0, + 0, 4, 0, 0, 0, 8, 0, 0, + 0, 104, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, + 0, 104, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 1, 0, 0, 0, 15, 0, 0, + 0, 104, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 2, 0, 0, 0, 15, 0, 0, + 0, 104, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 3, 0, 0, 0, 15, 0, 0, + 0, 83, 86, 95, 84, 97, 114, 103, +101, 116, 0, 171, 171, 68, 88, 66, + 67, 106, 130, 90, 239, 10, 84, 211, + 59, 203, 2, 21, 174, 163, 154, 53, +193, 1, 0, 0, 0, 124, 10, 0, + 0, 6, 0, 0, 0, 56, 0, 0, + 0, 224, 2, 0, 0, 64, 7, 0, + 0, 188, 7, 0, 0, 120, 9, 0, + 0, 220, 9, 0, 0, 65, 111, 110, + 57, 160, 2, 0, 0, 160, 2, 0, + 0, 0, 2, 254, 255, 108, 2, 0, + 0, 52, 0, 0, 0, 1, 0, 36, + 0, 0, 0, 48, 0, 0, 0, 48, + 0, 0, 0, 36, 0, 1, 0, 48, + 0, 0, 0, 0, 0, 13, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 2, 254, 255, 81, 0, 0, + 5, 0, 0, 15, 160, 0, 0, 125, + 67, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 0, + 5, 14, 0, 15, 160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 128, + 63, 0, 0, 0, 63, 81, 0, 0, + 5, 15, 0, 15, 160, 0, 0, 128, + 63, 0, 0, 128, 191, 0, 0, 0, + 0, 0, 0, 0, 0, 48, 0, 0, + 5, 0, 0, 15, 240, 253, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 0, 0, + 2, 5, 0, 0, 128, 0, 0, 15, +144, 31, 0, 0, 2, 5, 0, 1, +128, 1, 0, 15, 144, 31, 0, 0, + 2, 5, 0, 2, 128, 2, 0, 15, +144, 9, 0, 0, 3, 0, 0, 1, +128, 1, 0, 228, 160, 1, 0, 228, +144, 9, 0, 0, 3, 0, 0, 2, +128, 2, 0, 228, 160, 1, 0, 228, +144, 9, 0, 0, 3, 0, 0, 4, +128, 3, 0, 228, 160, 1, 0, 228, +144, 9, 0, 0, 3, 0, 0, 8, +128, 4, 0, 228, 160, 1, 0, 228, +144, 2, 0, 0, 3, 1, 0, 7, +128, 0, 0, 228, 129, 12, 0, 228, +160, 1, 0, 0, 2, 2, 0, 7, +128, 14, 0, 85, 160, 1, 0, 0, + 2, 1, 0, 8, 128, 14, 0, 85, +160, 38, 0, 0, 1, 0, 0, 228, +240, 45, 0, 3, 2, 1, 0, 255, +128, 14, 0, 170, 160, 2, 0, 0, + 3, 1, 0, 8, 128, 1, 0, 255, +128, 14, 0, 170, 160, 1, 0, 0, + 2, 2, 0, 7, 128, 1, 0, 228, +128, 39, 0, 0, 0, 1, 0, 0, + 2, 1, 0, 7, 224, 2, 0, 228, +128, 2, 0, 0, 3, 1, 0, 7, +128, 0, 0, 228, 129, 13, 0, 228, +160, 1, 0, 0, 2, 2, 0, 7, +128, 14, 0, 85, 160, 1, 0, 0, + 2, 1, 0, 8, 128, 14, 0, 85, +160, 38, 0, 0, 1, 0, 0, 228, +240, 45, 0, 3, 2, 1, 0, 255, +128, 14, 0, 170, 160, 2, 0, 0, + 3, 1, 0, 8, 128, 1, 0, 255, +128, 14, 0, 170, 160, 1, 0, 0, + 2, 2, 0, 7, 128, 1, 0, 228, +128, 39, 0, 0, 0, 1, 0, 0, + 2, 2, 0, 7, 224, 2, 0, 228, +128, 8, 0, 0, 3, 0, 0, 1, +224, 5, 0, 228, 160, 0, 0, 228, +144, 8, 0, 0, 3, 0, 0, 2, +224, 6, 0, 228, 160, 0, 0, 228, +144, 8, 0, 0, 3, 0, 0, 4, +224, 7, 0, 228, 160, 0, 0, 228, +144, 9, 0, 0, 3, 1, 0, 1, +128, 8, 0, 228, 160, 0, 0, 228, +128, 9, 0, 0, 3, 1, 0, 4, +128, 9, 0, 228, 160, 0, 0, 228, +128, 9, 0, 0, 3, 1, 0, 8, +128, 10, 0, 228, 160, 0, 0, 228, +128, 9, 0, 0, 3, 0, 0, 1, +128, 11, 0, 228, 160, 0, 0, 228, +128, 1, 0, 0, 2, 1, 0, 2, +128, 1, 0, 170, 129, 2, 0, 0, + 3, 0, 0, 2, 128, 0, 0, 0, +128, 1, 0, 255, 128, 5, 0, 0, + 3, 0, 0, 4, 192, 0, 0, 85, +128, 14, 0, 255, 160, 4, 0, 0, + 4, 0, 0, 3, 192, 0, 0, 0, +128, 0, 0, 228, 160, 1, 0, 228, +128, 4, 0, 0, 4, 3, 0, 3, +224, 2, 0, 228, 144, 15, 0, 228, +160, 15, 0, 226, 160, 1, 0, 0, + 2, 0, 0, 8, 192, 0, 0, 0, +128, 255, 255, 0, 0, 83, 72, 68, + 82, 88, 4, 0, 0, 64, 0, 1, + 0, 22, 1, 0, 0, 89, 0, 0, + 4, 70, 142, 32, 0, 0, 0, 0, + 0, 13, 0, 0, 0, 95, 0, 0, + 3, 114, 16, 16, 0, 0, 0, 0, + 0, 95, 0, 0, 3, 242, 16, 16, + 0, 1, 0, 0, 0, 95, 0, 0, + 3, 50, 16, 16, 0, 2, 0, 0, + 0, 101, 0, 0, 3, 114, 32, 16, + 0, 0, 0, 0, 0, 101, 0, 0, + 3, 114, 32, 16, 0, 1, 0, 0, + 0, 101, 0, 0, 3, 114, 32, 16, + 0, 2, 0, 0, 0, 101, 0, 0, + 3, 50, 32, 16, 0, 3, 0, 0, + 0, 103, 0, 0, 4, 242, 32, 16, + 0, 4, 0, 0, 0, 1, 0, 0, + 0, 104, 0, 0, 2, 3, 0, 0, + 0, 105, 0, 0, 4, 0, 0, 0, + 0, 1, 0, 0, 0, 4, 0, 0, + 0, 105, 0, 0, 4, 1, 0, 0, + 0, 1, 0, 0, 0, 4, 0, 0, + 0, 54, 0, 0, 9, 114, 48, 32, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 64, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, + 9, 114, 48, 32, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 2, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 8, 18, 0, 16, + 0, 0, 0, 0, 0, 70, 142, 32, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 70, 30, 16, 0, 1, 0, 0, + 0, 17, 0, 0, 8, 34, 0, 16, + 0, 0, 0, 0, 0, 70, 142, 32, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 70, 30, 16, 0, 1, 0, 0, + 0, 17, 0, 0, 8, 66, 0, 16, + 0, 0, 0, 0, 0, 70, 142, 32, + 0, 0, 0, 0, 0, 2, 0, 0, + 0, 70, 30, 16, 0, 1, 0, 0, + 0, 17, 0, 0, 8, 130, 0, 16, + 0, 0, 0, 0, 0, 70, 142, 32, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 70, 30, 16, 0, 1, 0, 0, + 0, 0, 0, 0, 9, 114, 0, 16, + 0, 1, 0, 0, 0, 70, 2, 16, +128, 65, 0, 0, 0, 0, 0, 0, + 0, 70, 130, 32, 0, 0, 0, 0, + 0, 11, 0, 0, 0, 54, 0, 0, + 5, 130, 0, 16, 0, 1, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 0, + 0, 48, 0, 0, 1, 33, 0, 0, + 7, 18, 0, 16, 0, 2, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 1, 64, 0, 0, 1, 0, 0, + 0, 3, 0, 4, 3, 10, 0, 16, + 0, 2, 0, 0, 0, 54, 0, 0, + 6, 114, 48, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 1, 0, 0, 0, 30, 0, 0, + 7, 130, 0, 16, 0, 1, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 1, 64, 0, 0, 1, 0, 0, + 0, 22, 0, 0, 1, 0, 0, 0, + 9, 114, 0, 16, 0, 1, 0, 0, + 0, 70, 2, 16, 128, 65, 0, 0, + 0, 0, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 12, 0, 0, + 0, 54, 0, 0, 5, 130, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 0, 48, 0, 0, + 1, 33, 0, 0, 7, 18, 0, 16, + 0, 2, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 1, 0, 0, 0, 3, 0, 4, + 3, 10, 0, 16, 0, 2, 0, 0, + 0, 54, 0, 0, 6, 114, 48, 32, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 70, 2, 16, 0, 1, 0, 0, + 0, 30, 0, 0, 7, 130, 0, 16, + 0, 1, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 1, 0, 0, 0, 22, 0, 0, + 1, 16, 0, 0, 8, 18, 32, 16, + 0, 0, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 4, 0, 0, + 0, 70, 18, 16, 0, 0, 0, 0, + 0, 16, 0, 0, 8, 34, 32, 16, + 0, 0, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 5, 0, 0, + 0, 70, 18, 16, 0, 0, 0, 0, + 0, 16, 0, 0, 8, 66, 32, 16, + 0, 0, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 6, 0, 0, + 0, 70, 18, 16, 0, 0, 0, 0, + 0, 17, 0, 0, 8, 18, 32, 16, + 0, 4, 0, 0, 0, 70, 142, 32, + 0, 0, 0, 0, 0, 7, 0, 0, + 0, 70, 14, 16, 0, 0, 0, 0, + 0, 17, 0, 0, 8, 18, 0, 16, + 0, 1, 0, 0, 0, 70, 142, 32, + 0, 0, 0, 0, 0, 8, 0, 0, + 0, 70, 14, 16, 0, 0, 0, 0, + 0, 17, 0, 0, 8, 34, 0, 16, + 0, 1, 0, 0, 0, 70, 142, 32, + 0, 0, 0, 0, 0, 9, 0, 0, + 0, 70, 14, 16, 0, 0, 0, 0, + 0, 17, 0, 0, 8, 18, 0, 16, + 0, 0, 0, 0, 0, 70, 142, 32, + 0, 0, 0, 0, 0, 10, 0, 0, + 0, 70, 14, 16, 0, 0, 0, 0, + 0, 54, 0, 0, 6, 34, 32, 16, + 0, 4, 0, 0, 0, 10, 0, 16, +128, 65, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 7, 34, 0, 16, + 0, 0, 0, 0, 0, 10, 0, 16, + 0, 0, 0, 0, 0, 26, 0, 16, + 0, 1, 0, 0, 0, 56, 0, 0, + 7, 66, 32, 16, 0, 4, 0, 0, + 0, 26, 0, 16, 0, 0, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 0, + 63, 54, 0, 0, 6, 114, 32, 16, + 0, 1, 0, 0, 0, 70, 50, 32, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 0, 0, 6, 114, 32, 16, + 0, 2, 0, 0, 0, 70, 50, 32, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 54, 0, 0, 5, 130, 32, 16, + 0, 4, 0, 0, 0, 10, 0, 16, + 0, 0, 0, 0, 0, 50, 0, 0, + 15, 50, 32, 16, 0, 3, 0, 0, + 0, 70, 16, 16, 0, 2, 0, 0, + 0, 2, 64, 0, 0, 0, 0, 128, + 63, 0, 0, 128, 191, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 128, + 63, 0, 0, 0, 0, 0, 0, 0, + 0, 62, 0, 0, 1, 83, 84, 65, + 84, 116, 0, 0, 0, 37, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 17, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 82, 68, 69, 70, 180, 1, 0, + 0, 1, 0, 0, 0, 72, 0, 0, + 0, 1, 0, 0, 0, 28, 0, 0, + 0, 0, 4, 254, 255, 0, 65, 0, + 0, 128, 1, 0, 0, 60, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 36, 71, 108, +111, 98, 97, 108, 115, 0, 171, 171, +171, 60, 0, 0, 0, 5, 0, 0, + 0, 96, 0, 0, 0, 208, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 216, 0, 0, 0, 0, 0, 0, + 0, 64, 0, 0, 0, 2, 0, 0, + 0, 232, 0, 0, 0, 0, 0, 0, + 0, 248, 0, 0, 0, 64, 0, 0, + 0, 44, 0, 0, 0, 2, 0, 0, + 0, 12, 1, 0, 0, 0, 0, 0, + 0, 28, 1, 0, 0, 112, 0, 0, + 0, 64, 0, 0, 0, 2, 0, 0, + 0, 232, 0, 0, 0, 0, 0, 0, + 0, 40, 1, 0, 0, 176, 0, 0, + 0, 12, 0, 0, 0, 2, 0, 0, + 0, 68, 1, 0, 0, 0, 0, 0, + 0, 84, 1, 0, 0, 192, 0, 0, + 0, 12, 0, 0, 0, 2, 0, 0, + 0, 112, 1, 0, 0, 0, 0, 0, + 0, 95, 67, 67, 95, 77, 86, 77, + 97, 116, 114, 105, 120, 0, 171, 171, +171, 3, 0, 3, 0, 4, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 95, 67, 67, 95, 78, 111, 114, +109, 97, 108, 77, 97, 116, 114, 105, +120, 0, 171, 171, 171, 3, 0, 3, + 0, 3, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 95, 67, 67, + 95, 80, 77, 97, 116, 114, 105, 120, + 0, 95, 117, 95, 80, 111, 105, 110, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 80, 111, 115, 105, +116, 105, 111, 110, 0, 1, 0, 3, + 0, 1, 0, 3, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 95, 117, 95, + 83, 112, 111, 116, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 80, +111, 115, 105, 116, 105, 111, 110, 0, +171, 1, 0, 3, 0, 1, 0, 3, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 77, 105, 99, 114, 111, 115, 111, +102, 116, 32, 40, 82, 41, 32, 72, + 76, 83, 76, 32, 83, 104, 97, 100, +101, 114, 32, 67, 111, 109, 112, 105, +108, 101, 114, 32, 54, 46, 51, 46, + 57, 54, 48, 48, 46, 49, 54, 51, + 56, 52, 0, 171, 171, 73, 83, 71, + 78, 92, 0, 0, 0, 3, 0, 0, + 0, 8, 0, 0, 0, 80, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 7, 7, 0, 0, 80, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 1, 0, 0, + 0, 15, 15, 0, 0, 80, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 2, 0, 0, + 0, 3, 3, 0, 0, 84, 69, 88, + 67, 79, 79, 82, 68, 0, 171, 171, +171, 79, 83, 71, 78, 152, 0, 0, + 0, 5, 0, 0, 0, 8, 0, 0, + 0, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 7, 8, 0, + 0, 128, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 1, 0, 0, 0, 7, 8, 0, + 0, 128, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 2, 0, 0, 0, 7, 8, 0, + 0, 128, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 3, 0, 0, 0, 3, 12, 0, + 0, 137, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 3, 0, 0, + 0, 4, 0, 0, 0, 15, 0, 0, + 0, 84, 69, 88, 67, 79, 79, 82, + 68, 0, 83, 86, 95, 80, 111, 115, +105, 116, 105, 111, 110, 0, 171, 171, +171, +}; + const unsigned char s_53938AB67AD93ABA0DDB87F3C9889304284E011E[] = { 166, 147, 0, 0, 142, 9, 2, 1, @@ -1301,7 +2430,7 @@ const unsigned char s_53938AB67AD93ABA0DDB87F3C9889304284E011E[] = { 120, 116, 117, 114, 101, 48, 0, 0, 0, 0, 1, 0, 0, 0, 24, 4, 0, 0, 4, 5, 0, 0, 0, 0, - 0, 0, 194, 137, 0, 0, 0, 0, + 0, 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 200, 5, 103, 205, 248, 30, 69, 65, 32, 117, @@ -1675,7 +2804,7 @@ const unsigned char s_67837675F2BB48C0E926316F505FC1538228E0FA[] = { 86, 80, 77, 97, 116, 114, 105, 120, 0, 0, 0, 0, 0, 0, 0, 0, 16, 4, 0, 0, 48, 5, 0, 0, - 0, 0, 0, 0, 194, 137, 0, 0, + 0, 0, 0, 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 79, 226, 72, 124, 94, 252, 37, 157, @@ -2070,7 +3199,7 @@ const unsigned char s_78250E25D1929D4A842050738140787BE42541C6[] = { 108, 112, 104, 97, 95, 118, 97, 108, 117, 101, 0, 0, 0, 0, 2, 0, 0, 0, 36, 5, 0, 0, 4, 5, - 0, 0, 0, 0, 0, 0, 194, 137, + 0, 0, 0, 0, 0, 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 100, 113, 175, 29, 164, 71, @@ -2485,7 +3614,7 @@ const unsigned char s_7B67DD242152D35ACC079265FAD9D03DC98182DE[] = { 67, 95, 84, 101, 120, 116, 117, 114, 101, 48, 0, 0, 0, 0, 1, 0, 0, 0, 248, 3, 0, 0, 0, 5, - 0, 0, 0, 0, 0, 0, 194, 137, + 0, 0, 0, 0, 0, 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 11, 95, 74, 206, 145, 124, @@ -2869,7 +3998,7 @@ const unsigned char s_7CE5EE84ACB6110F7FA29152ECE3344CB6D6620D[] = { 99, 111, 108, 111, 114, 0, 0, 0, 0, 2, 0, 0, 0, 96, 4, 0, 0, 192, 4, 0, 0, 0, 0, 0, - 0, 194, 137, 0, 0, 0, 0, 0, + 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 157, 116, 105, 89, 118, 135, 249, 239, 42, 226, 184, @@ -3250,7 +4379,7 @@ const unsigned char s_7E1EEF397305D0BC2DCDBA4F2DAFBCBA1534E45C[] = { 117, 95, 99, 111, 108, 111, 114, 0, 0, 0, 0, 1, 0, 0, 0, 52, 3, 0, 0, 40, 4, 0, 0, 0, - 0, 0, 0, 194, 137, 0, 0, 0, + 0, 0, 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 153, 8, 62, 201, 202, 170, 111, 182, 149, @@ -3584,7 +4713,7 @@ const unsigned char s_847DBFDDA6EC09C57E4ED43012AE2FB5CAC7D8D5[] = { 111, 108, 111, 114, 0, 0, 0, 0, 2, 0, 0, 0, 240, 4, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, -194, 137, 0, 0, 0, 0, 0, 0, +107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 134, 66, 128, 226, 107, 172, 247, 161, 241, 207, 89, 240, @@ -4001,7 +5130,7 @@ const unsigned char s_92BE325B516F887D2C928EDE20ADF428DB01C038[] = { 95, 118, 97, 108, 117, 101, 0, 0, 0, 0, 2, 0, 0, 0, 36, 5, 0, 0, 0, 5, 0, 0, 0, 0, - 0, 0, 194, 137, 0, 0, 0, 0, + 0, 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 100, 113, 175, 29, 164, 71, 177, 78, 120, 99, @@ -4330,6 +5459,1070 @@ const unsigned char s_92BE325B516F887D2C928EDE20ADF428DB01C038[] = { 111, 110, 0, 171, 171, 171, }; +const unsigned char s_93D31E1668075AE4941C53441D7A9D0DE8F76331[] = { + +166, 147, 0, 0, 142, 9, 2, 1, + 0, 128, 0, 0, 82, 139, 0, 0, + 10, 0, 0, 0, 97, 95, 112, 111, +115, 105, 116, 105, 111, 110, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 255, 255, 255, 255, 80, 139, + 0, 0, 10, 0, 0, 0, 97, 95, +116, 101, 120, 67, 111, 111, 114, 100, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, +255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 81, 139, 0, 0, 8, 0, 0, 0, + 97, 95, 110, 111, 114, 109, 97, 108, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, +255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, +255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, +255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, +255, 255, 255, 255, 0, 0, 0, 0, + 0, 0, 0, 0, 255, 255, 255, 255, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 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, 16, 0, 0, 0, 92, 139, 0, + 0, 242, 141, 0, 0, 11, 0, 0, + 0, 67, 67, 95, 77, 86, 77, 97, +116, 114, 105, 120, 0, 0, 0, 0, +255, 255, 255, 255, 0, 0, 0, 0, + 4, 0, 0, 0, 91, 139, 0, 0, +242, 141, 0, 0, 15, 0, 0, 0, + 67, 67, 95, 78, 111, 114, 109, 97, +108, 77, 97, 116, 114, 105, 120, 0, + 0, 0, 0, 255, 255, 255, 255, 4, + 0, 0, 0, 3, 0, 0, 0, 92, +139, 0, 0, 242, 141, 0, 0, 10, + 0, 0, 0, 67, 67, 95, 80, 77, + 97, 116, 114, 105, 120, 0, 0, 0, + 0, 255, 255, 255, 255, 7, 0, 0, + 0, 4, 0, 0, 0, 81, 139, 0, + 0, 242, 141, 0, 0, 26, 0, 0, + 0, 117, 95, 80, 111, 105, 110, 116, + 76, 105, 103, 104, 116, 83, 111, 117, +114, 99, 101, 80, 111, 115, 105, 116, +105, 111, 110, 1, 0, 0, 0, 255, +255, 255, 255, 11, 0, 0, 0, 1, + 0, 0, 0, 81, 139, 0, 0, 242, +141, 0, 0, 25, 0, 0, 0, 117, + 95, 83, 112, 111, 116, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 80, 111, 115, 105, 116, 105, 111, 110, + 1, 0, 0, 0, 255, 255, 255, 255, + 12, 0, 0, 0, 1, 0, 0, 0, + 81, 139, 0, 0, 241, 141, 0, 0, + 25, 0, 0, 0, 117, 95, 65, 109, + 98, 105, 101, 110, 116, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 67, 111, 108, 111, 114, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 255, 255, +255, 1, 0, 0, 0, 81, 139, 0, + 0, 241, 141, 0, 0, 21, 0, 0, + 0, 117, 95, 68, 105, 114, 76, 105, +103, 104, 116, 83, 111, 117, 114, 99, +101, 67, 111, 108, 111, 114, 1, 0, + 0, 0, 1, 0, 0, 0, 255, 255, +255, 255, 1, 0, 0, 0, 81, 139, + 0, 0, 241, 141, 0, 0, 25, 0, + 0, 0, 117, 95, 68, 105, 114, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 68, 105, 114, 101, 99, 116, +105, 111, 110, 1, 0, 0, 0, 2, + 0, 0, 0, 255, 255, 255, 255, 1, + 0, 0, 0, 81, 139, 0, 0, 241, +141, 0, 0, 23, 0, 0, 0, 117, + 95, 80, 111, 105, 110, 116, 76, 105, +103, 104, 116, 83, 111, 117, 114, 99, +101, 67, 111, 108, 111, 114, 1, 0, + 0, 0, 3, 0, 0, 0, 255, 255, +255, 255, 1, 0, 0, 0, 6, 20, + 0, 0, 241, 141, 0, 0, 30, 0, + 0, 0, 117, 95, 80, 111, 105, 110, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 82, 97, 110, 103, +101, 73, 110, 118, 101, 114, 115, 101, + 1, 0, 0, 0, 4, 0, 0, 0, +255, 255, 255, 255, 1, 0, 0, 0, + 81, 139, 0, 0, 241, 141, 0, 0, + 22, 0, 0, 0, 117, 95, 83, 112, +111, 116, 76, 105, 103, 104, 116, 83, +111, 117, 114, 99, 101, 67, 111, 108, +111, 114, 1, 0, 0, 0, 5, 0, + 0, 0, 255, 255, 255, 255, 1, 0, + 0, 0, 81, 139, 0, 0, 241, 141, + 0, 0, 26, 0, 0, 0, 117, 95, + 83, 112, 111, 116, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 68, +105, 114, 101, 99, 116, 105, 111, 110, + 1, 0, 0, 0, 6, 0, 0, 0, +255, 255, 255, 255, 1, 0, 0, 0, + 6, 20, 0, 0, 241, 141, 0, 0, + 30, 0, 0, 0, 117, 95, 83, 112, +111, 116, 76, 105, 103, 104, 116, 83, +111, 117, 114, 99, 101, 73, 110, 110, +101, 114, 65, 110, 103, 108, 101, 67, +111, 115, 1, 0, 0, 0, 7, 0, + 0, 0, 255, 255, 255, 255, 1, 0, + 0, 0, 6, 20, 0, 0, 241, 141, + 0, 0, 30, 0, 0, 0, 117, 95, + 83, 112, 111, 116, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 79, +117, 116, 101, 114, 65, 110, 103, 108, +101, 67, 111, 115, 1, 0, 0, 0, + 8, 0, 0, 0, 255, 255, 255, 255, + 1, 0, 0, 0, 6, 20, 0, 0, +241, 141, 0, 0, 29, 0, 0, 0, +117, 95, 83, 112, 111, 116, 76, 105, +103, 104, 116, 83, 111, 117, 114, 99, +101, 82, 97, 110, 103, 101, 73, 110, +118, 101, 114, 115, 101, 1, 0, 0, + 0, 9, 0, 0, 0, 255, 255, 255, +255, 1, 0, 0, 0, 82, 139, 0, + 0, 241, 141, 0, 0, 7, 0, 0, + 0, 117, 95, 99, 111, 108, 111, 114, + 0, 0, 0, 0, 10, 0, 0, 0, +255, 255, 255, 255, 1, 0, 0, 0, + 16, 0, 0, 0, 11, 0, 0, 0, + 67, 67, 95, 77, 86, 77, 97, 116, +114, 105, 120, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 67, + 67, 95, 78, 111, 114, 109, 97, 108, + 77, 97, 116, 114, 105, 120, 0, 0, + 0, 0, 1, 0, 0, 0, 10, 0, + 0, 0, 67, 67, 95, 80, 77, 97, +116, 114, 105, 120, 0, 0, 0, 0, + 2, 0, 0, 0, 26, 0, 0, 0, +117, 95, 80, 111, 105, 110, 116, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 80, 111, 115, 105, 116, 105, +111, 110, 0, 0, 0, 0, 3, 0, + 0, 0, 25, 0, 0, 0, 117, 95, + 83, 112, 111, 116, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 80, +111, 115, 105, 116, 105, 111, 110, 0, + 0, 0, 0, 4, 0, 0, 0, 25, + 0, 0, 0, 117, 95, 65, 109, 98, +105, 101, 110, 116, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 67, +111, 108, 111, 114, 0, 0, 0, 0, + 5, 0, 0, 0, 21, 0, 0, 0, +117, 95, 68, 105, 114, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 67, 111, 108, 111, 114, 0, 0, 0, + 0, 6, 0, 0, 0, 25, 0, 0, + 0, 117, 95, 68, 105, 114, 76, 105, +103, 104, 116, 83, 111, 117, 114, 99, +101, 68, 105, 114, 101, 99, 116, 105, +111, 110, 0, 0, 0, 0, 7, 0, + 0, 0, 23, 0, 0, 0, 117, 95, + 80, 111, 105, 110, 116, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 67, 111, 108, 111, 114, 0, 0, 0, + 0, 8, 0, 0, 0, 30, 0, 0, + 0, 117, 95, 80, 111, 105, 110, 116, + 76, 105, 103, 104, 116, 83, 111, 117, +114, 99, 101, 82, 97, 110, 103, 101, + 73, 110, 118, 101, 114, 115, 101, 0, + 0, 0, 0, 9, 0, 0, 0, 22, + 0, 0, 0, 117, 95, 83, 112, 111, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 67, 111, 108, 111, +114, 0, 0, 0, 0, 10, 0, 0, + 0, 26, 0, 0, 0, 117, 95, 83, +112, 111, 116, 76, 105, 103, 104, 116, + 83, 111, 117, 114, 99, 101, 68, 105, +114, 101, 99, 116, 105, 111, 110, 0, + 0, 0, 0, 11, 0, 0, 0, 30, + 0, 0, 0, 117, 95, 83, 112, 111, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 73, 110, 110, 101, +114, 65, 110, 103, 108, 101, 67, 111, +115, 0, 0, 0, 0, 12, 0, 0, + 0, 30, 0, 0, 0, 117, 95, 83, +112, 111, 116, 76, 105, 103, 104, 116, + 83, 111, 117, 114, 99, 101, 79, 117, +116, 101, 114, 65, 110, 103, 108, 101, + 67, 111, 115, 0, 0, 0, 0, 13, + 0, 0, 0, 29, 0, 0, 0, 117, + 95, 83, 112, 111, 116, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 82, 97, 110, 103, 101, 73, 110, 118, +101, 114, 115, 101, 0, 0, 0, 0, + 14, 0, 0, 0, 7, 0, 0, 0, +117, 95, 99, 111, 108, 111, 114, 0, + 0, 0, 0, 15, 0, 0, 0, 200, + 15, 0, 0, 216, 9, 0, 0, 0, + 0, 0, 0, 107, 155, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 68, 88, 66, 67, 136, +158, 207, 210, 174, 144, 71, 116, 248, +243, 16, 127, 98, 212, 174, 233, 1, + 0, 0, 0, 200, 15, 0, 0, 6, + 0, 0, 0, 56, 0, 0, 0, 80, + 3, 0, 0, 236, 10, 0, 0, 104, + 11, 0, 0, 232, 14, 0, 0, 76, + 15, 0, 0, 65, 111, 110, 57, 16, + 3, 0, 0, 16, 3, 0, 0, 0, + 2, 255, 255, 224, 2, 0, 0, 48, + 0, 0, 0, 1, 0, 36, 0, 0, + 0, 48, 0, 0, 0, 48, 0, 0, + 0, 36, 0, 0, 0, 48, 0, 0, + 0, 0, 0, 11, 0, 0, 0, 0, + 0, 0, 0, 1, 2, 255, 255, 81, + 0, 0, 5, 11, 0, 15, 160, 0, + 0, 0, 0, 0, 0, 128, 63, 0, + 0, 0, 192, 0, 0, 64, 64, 31, + 0, 0, 2, 0, 0, 0, 128, 0, + 0, 7, 176, 31, 0, 0, 2, 0, + 0, 0, 128, 1, 0, 7, 176, 31, + 0, 0, 2, 0, 0, 0, 128, 2, + 0, 7, 176, 5, 0, 0, 3, 0, + 0, 7, 128, 1, 0, 228, 176, 4, + 0, 0, 160, 8, 0, 0, 3, 0, + 0, 1, 128, 0, 0, 228, 128, 0, + 0, 228, 128, 2, 0, 0, 3, 0, + 0, 1, 128, 0, 0, 0, 129, 11, + 0, 85, 160, 11, 0, 0, 3, 1, + 0, 8, 128, 0, 0, 0, 128, 11, + 0, 0, 160, 2, 0, 0, 3, 0, + 0, 7, 128, 2, 0, 228, 160, 2, + 0, 228, 160, 36, 0, 0, 2, 1, + 0, 7, 128, 0, 0, 228, 128, 36, + 0, 0, 2, 0, 0, 7, 128, 0, + 0, 228, 176, 8, 0, 0, 3, 0, + 0, 8, 128, 0, 0, 228, 128, 1, + 0, 228, 129, 5, 0, 0, 3, 1, + 0, 7, 128, 0, 0, 255, 128, 1, + 0, 228, 160, 88, 0, 0, 4, 1, + 0, 7, 128, 0, 0, 255, 128, 1, + 0, 228, 128, 11, 0, 0, 160, 2, + 0, 0, 3, 1, 0, 7, 128, 1, + 0, 228, 128, 0, 0, 228, 160, 36, + 0, 0, 2, 2, 0, 7, 128, 1, + 0, 228, 176, 8, 0, 0, 3, 0, + 0, 8, 128, 0, 0, 228, 128, 2, + 0, 228, 128, 5, 0, 0, 3, 2, + 0, 7, 128, 0, 0, 255, 128, 3, + 0, 228, 160, 88, 0, 0, 4, 2, + 0, 7, 128, 0, 0, 255, 128, 2, + 0, 228, 128, 11, 0, 0, 160, 4, + 0, 0, 4, 1, 0, 7, 128, 2, + 0, 228, 128, 1, 0, 255, 128, 1, + 0, 228, 128, 2, 0, 0, 3, 2, + 0, 7, 128, 6, 0, 228, 160, 6, + 0, 228, 160, 36, 0, 0, 2, 3, + 0, 7, 128, 2, 0, 228, 128, 36, + 0, 0, 2, 2, 0, 7, 128, 2, + 0, 228, 176, 8, 0, 0, 3, 0, + 0, 8, 128, 3, 0, 228, 128, 2, + 0, 228, 129, 8, 0, 0, 3, 1, + 0, 8, 128, 0, 0, 228, 128, 2, + 0, 228, 128, 2, 0, 0, 3, 0, + 0, 1, 128, 0, 0, 255, 128, 8, + 0, 0, 161, 1, 0, 0, 2, 2, + 0, 1, 128, 8, 0, 0, 160, 2, + 0, 0, 3, 0, 0, 2, 128, 2, + 0, 0, 129, 7, 0, 0, 160, 6, + 0, 0, 2, 0, 0, 2, 128, 0, + 0, 85, 128, 5, 0, 0, 3, 0, + 0, 17, 128, 0, 0, 85, 128, 0, + 0, 0, 128, 4, 0, 0, 4, 0, + 0, 2, 128, 0, 0, 0, 128, 11, + 0, 170, 160, 11, 0, 255, 160, 5, + 0, 0, 3, 0, 0, 1, 128, 0, + 0, 0, 128, 0, 0, 0, 128, 5, + 0, 0, 3, 0, 0, 1, 128, 0, + 0, 0, 128, 0, 0, 85, 128, 5, + 0, 0, 3, 0, 0, 14, 128, 2, + 0, 144, 176, 9, 0, 0, 160, 8, + 0, 0, 3, 0, 0, 2, 128, 0, + 0, 249, 128, 0, 0, 249, 128, 2, + 0, 0, 3, 0, 0, 2, 128, 0, + 0, 85, 129, 11, 0, 85, 160, 5, + 0, 0, 3, 0, 0, 1, 128, 0, + 0, 0, 128, 0, 0, 85, 128, 88, + 0, 0, 4, 0, 0, 1, 128, 0, + 0, 85, 128, 0, 0, 0, 128, 11, + 0, 0, 160, 5, 0, 0, 3, 0, + 0, 14, 128, 1, 0, 255, 128, 5, + 0, 144, 160, 88, 0, 0, 4, 0, + 0, 14, 128, 1, 0, 255, 128, 0, + 0, 228, 128, 11, 0, 0, 160, 4, + 0, 0, 4, 0, 0, 7, 128, 0, + 0, 249, 128, 0, 0, 0, 128, 1, + 0, 228, 128, 1, 0, 0, 2, 0, + 0, 8, 128, 11, 0, 85, 160, 5, + 0, 0, 3, 0, 0, 15, 128, 0, + 0, 228, 128, 10, 0, 228, 160, 1, + 0, 0, 2, 0, 8, 15, 128, 0, + 0, 228, 128, 1, 0, 0, 2, 1, + 8, 15, 128, 0, 0, 228, 128, 1, + 0, 0, 2, 2, 8, 15, 128, 0, + 0, 228, 128, 1, 0, 0, 2, 3, + 8, 15, 128, 0, 0, 228, 128, 255, +255, 0, 0, 83, 72, 68, 82, 148, + 7, 0, 0, 64, 0, 0, 0, 229, + 1, 0, 0, 89, 0, 0, 4, 70, +142, 32, 0, 0, 0, 0, 0, 11, + 0, 0, 0, 98, 16, 0, 3, 114, + 16, 16, 0, 0, 0, 0, 0, 98, + 16, 0, 3, 114, 16, 16, 0, 1, + 0, 0, 0, 98, 16, 0, 3, 114, + 16, 16, 0, 2, 0, 0, 0, 101, + 0, 0, 3, 242, 32, 16, 0, 0, + 0, 0, 0, 101, 0, 0, 3, 242, + 32, 16, 0, 1, 0, 0, 0, 101, + 0, 0, 3, 242, 32, 16, 0, 2, + 0, 0, 0, 101, 0, 0, 3, 242, + 32, 16, 0, 3, 0, 0, 0, 104, + 0, 0, 2, 4, 0, 0, 0, 16, + 0, 0, 7, 18, 0, 16, 0, 0, + 0, 0, 0, 70, 18, 16, 0, 0, + 0, 0, 0, 70, 18, 16, 0, 0, + 0, 0, 0, 68, 0, 0, 5, 18, + 0, 16, 0, 0, 0, 0, 0, 10, + 0, 16, 0, 0, 0, 0, 0, 56, + 0, 0, 7, 114, 0, 16, 0, 0, + 0, 0, 0, 6, 0, 16, 0, 0, + 0, 0, 0, 70, 18, 16, 0, 0, + 0, 0, 0, 0, 0, 0, 9, 114, + 0, 16, 0, 1, 0, 0, 0, 70, +130, 32, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 70, 130, 32, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 16, + 0, 0, 7, 130, 0, 16, 0, 0, + 0, 0, 0, 70, 2, 16, 0, 1, + 0, 0, 0, 70, 2, 16, 0, 1, + 0, 0, 0, 68, 0, 0, 5, 130, + 0, 16, 0, 0, 0, 0, 0, 58, + 0, 16, 0, 0, 0, 0, 0, 56, + 0, 0, 7, 114, 0, 16, 0, 1, + 0, 0, 0, 246, 15, 16, 0, 0, + 0, 0, 0, 70, 2, 16, 0, 1, + 0, 0, 0, 16, 0, 0, 8, 130, + 0, 16, 0, 0, 0, 0, 0, 70, + 2, 16, 0, 0, 0, 0, 0, 70, + 2, 16, 128, 65, 0, 0, 0, 1, + 0, 0, 0, 52, 0, 0, 7, 130, + 0, 16, 0, 0, 0, 0, 0, 58, + 0, 16, 0, 0, 0, 0, 0, 1, + 64, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 6, 114, 0, 16, 0, 1, + 0, 0, 0, 70, 130, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 5, 130, 0, 16, 0, 1, + 0, 0, 0, 1, 64, 0, 0, 0, + 0, 0, 0, 48, 0, 0, 1, 33, + 0, 0, 7, 18, 0, 16, 0, 2, + 0, 0, 0, 58, 0, 16, 0, 1, + 0, 0, 0, 1, 64, 0, 0, 1, + 0, 0, 0, 3, 0, 4, 3, 10, + 0, 16, 0, 2, 0, 0, 0, 50, + 0, 0, 10, 114, 0, 16, 0, 1, + 0, 0, 0, 70, 130, 32, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 246, + 15, 16, 0, 0, 0, 0, 0, 70, + 2, 16, 0, 1, 0, 0, 0, 30, + 0, 0, 7, 130, 0, 16, 0, 1, + 0, 0, 0, 58, 0, 16, 0, 1, + 0, 0, 0, 1, 64, 0, 0, 1, + 0, 0, 0, 22, 0, 0, 1, 56, + 0, 0, 8, 114, 0, 16, 0, 2, + 0, 0, 0, 70, 18, 16, 0, 1, + 0, 0, 0, 6, 128, 32, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 16, + 0, 0, 7, 130, 0, 16, 0, 0, + 0, 0, 0, 70, 2, 16, 0, 2, + 0, 0, 0, 70, 2, 16, 0, 2, + 0, 0, 0, 0, 0, 0, 8, 130, + 0, 16, 0, 0, 0, 0, 0, 58, + 0, 16, 128, 65, 0, 0, 0, 0, + 0, 0, 0, 1, 64, 0, 0, 0, + 0, 128, 63, 52, 0, 0, 7, 130, + 0, 16, 0, 0, 0, 0, 0, 58, + 0, 16, 0, 0, 0, 0, 0, 1, + 64, 0, 0, 0, 0, 0, 0, 16, + 0, 0, 7, 130, 0, 16, 0, 1, + 0, 0, 0, 70, 18, 16, 0, 1, + 0, 0, 0, 70, 18, 16, 0, 1, + 0, 0, 0, 68, 0, 0, 5, 130, + 0, 16, 0, 1, 0, 0, 0, 58, + 0, 16, 0, 1, 0, 0, 0, 56, + 0, 0, 7, 114, 0, 16, 0, 2, + 0, 0, 0, 246, 15, 16, 0, 1, + 0, 0, 0, 70, 18, 16, 0, 1, + 0, 0, 0, 16, 0, 0, 7, 130, + 0, 16, 0, 1, 0, 0, 0, 70, + 2, 16, 0, 0, 0, 0, 0, 70, + 2, 16, 0, 2, 0, 0, 0, 52, + 0, 0, 7, 130, 0, 16, 0, 1, + 0, 0, 0, 58, 0, 16, 0, 1, + 0, 0, 0, 1, 64, 0, 0, 0, + 0, 0, 0, 56, 0, 0, 8, 114, + 0, 16, 0, 2, 0, 0, 0, 246, + 15, 16, 0, 1, 0, 0, 0, 70, +130, 32, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 54, 0, 0, 5, 114, + 0, 16, 0, 3, 0, 0, 0, 70, + 2, 16, 0, 1, 0, 0, 0, 54, + 0, 0, 5, 130, 0, 16, 0, 1, + 0, 0, 0, 1, 64, 0, 0, 0, + 0, 0, 0, 48, 0, 0, 1, 33, + 0, 0, 7, 130, 0, 16, 0, 2, + 0, 0, 0, 58, 0, 16, 0, 1, + 0, 0, 0, 1, 64, 0, 0, 1, + 0, 0, 0, 3, 0, 4, 3, 58, + 0, 16, 0, 2, 0, 0, 0, 50, + 0, 0, 9, 114, 0, 16, 0, 3, + 0, 0, 0, 70, 2, 16, 0, 2, + 0, 0, 0, 246, 15, 16, 0, 0, + 0, 0, 0, 70, 2, 16, 0, 3, + 0, 0, 0, 30, 0, 0, 7, 130, + 0, 16, 0, 1, 0, 0, 0, 58, + 0, 16, 0, 1, 0, 0, 0, 1, + 64, 0, 0, 1, 0, 0, 0, 22, + 0, 0, 1, 56, 0, 0, 8, 114, + 0, 16, 0, 1, 0, 0, 0, 70, + 18, 16, 0, 2, 0, 0, 0, 6, +128, 32, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 16, 0, 0, 7, 130, + 0, 16, 0, 0, 0, 0, 0, 70, + 2, 16, 0, 1, 0, 0, 0, 70, + 2, 16, 0, 1, 0, 0, 0, 0, + 0, 0, 8, 130, 0, 16, 0, 0, + 0, 0, 0, 58, 0, 16, 128, 65, + 0, 0, 0, 0, 0, 0, 0, 1, + 64, 0, 0, 0, 0, 128, 63, 52, + 0, 0, 7, 130, 0, 16, 0, 0, + 0, 0, 0, 58, 0, 16, 0, 0, + 0, 0, 0, 1, 64, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 7, 18, + 0, 16, 0, 1, 0, 0, 0, 70, + 18, 16, 0, 2, 0, 0, 0, 70, + 18, 16, 0, 2, 0, 0, 0, 68, + 0, 0, 5, 18, 0, 16, 0, 1, + 0, 0, 0, 10, 0, 16, 0, 1, + 0, 0, 0, 56, 0, 0, 7, 114, + 0, 16, 0, 1, 0, 0, 0, 6, + 0, 16, 0, 1, 0, 0, 0, 70, + 18, 16, 0, 2, 0, 0, 0, 0, + 0, 0, 9, 114, 0, 16, 0, 2, + 0, 0, 0, 70, 130, 32, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 70, +130, 32, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 16, 0, 0, 7, 130, + 0, 16, 0, 1, 0, 0, 0, 70, + 2, 16, 0, 2, 0, 0, 0, 70, + 2, 16, 0, 2, 0, 0, 0, 68, + 0, 0, 5, 130, 0, 16, 0, 1, + 0, 0, 0, 58, 0, 16, 0, 1, + 0, 0, 0, 56, 0, 0, 7, 114, + 0, 16, 0, 2, 0, 0, 0, 246, + 15, 16, 0, 1, 0, 0, 0, 70, + 2, 16, 0, 2, 0, 0, 0, 16, + 0, 0, 8, 130, 0, 16, 0, 1, + 0, 0, 0, 70, 2, 16, 0, 2, + 0, 0, 0, 70, 2, 16, 128, 65, + 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 10, 18, 0, 16, 0, 2, + 0, 0, 0, 10, 128, 32, 0, 0, + 0, 0, 0, 7, 0, 0, 0, 10, +128, 32, 128, 65, 0, 0, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 0, + 0, 0, 9, 130, 0, 16, 0, 1, + 0, 0, 0, 58, 0, 16, 0, 1, + 0, 0, 0, 10, 128, 32, 128, 65, + 0, 0, 0, 0, 0, 0, 0, 8, + 0, 0, 0, 14, 0, 0, 10, 18, + 0, 16, 0, 2, 0, 0, 0, 2, + 64, 0, 0, 0, 0, 128, 63, 0, + 0, 128, 63, 0, 0, 128, 63, 0, + 0, 128, 63, 10, 0, 16, 0, 2, + 0, 0, 0, 56, 32, 0, 7, 130, + 0, 16, 0, 1, 0, 0, 0, 58, + 0, 16, 0, 1, 0, 0, 0, 10, + 0, 16, 0, 2, 0, 0, 0, 50, + 0, 0, 9, 18, 0, 16, 0, 2, + 0, 0, 0, 58, 0, 16, 0, 1, + 0, 0, 0, 1, 64, 0, 0, 0, + 0, 0, 192, 1, 64, 0, 0, 0, + 0, 64, 64, 56, 0, 0, 7, 130, + 0, 16, 0, 1, 0, 0, 0, 58, + 0, 16, 0, 1, 0, 0, 0, 58, + 0, 16, 0, 1, 0, 0, 0, 56, + 0, 0, 7, 130, 0, 16, 0, 1, + 0, 0, 0, 58, 0, 16, 0, 1, + 0, 0, 0, 10, 0, 16, 0, 2, + 0, 0, 0, 56, 0, 0, 7, 130, + 0, 16, 0, 0, 0, 0, 0, 58, + 0, 16, 0, 0, 0, 0, 0, 58, + 0, 16, 0, 1, 0, 0, 0, 16, + 0, 0, 7, 18, 0, 16, 0, 0, + 0, 0, 0, 70, 2, 16, 0, 0, + 0, 0, 0, 70, 2, 16, 0, 1, + 0, 0, 0, 52, 0, 0, 7, 18, + 0, 16, 0, 0, 0, 0, 0, 10, + 0, 16, 0, 0, 0, 0, 0, 1, + 64, 0, 0, 0, 0, 0, 0, 56, + 0, 0, 8, 114, 0, 16, 0, 0, + 0, 0, 0, 6, 0, 16, 0, 0, + 0, 0, 0, 70, 130, 32, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 54, + 0, 0, 5, 114, 0, 16, 0, 1, + 0, 0, 0, 70, 2, 16, 0, 3, + 0, 0, 0, 54, 0, 0, 5, 18, + 0, 16, 0, 2, 0, 0, 0, 1, + 64, 0, 0, 0, 0, 0, 0, 48, + 0, 0, 1, 33, 0, 0, 7, 34, + 0, 16, 0, 2, 0, 0, 0, 10, + 0, 16, 0, 2, 0, 0, 0, 1, + 64, 0, 0, 1, 0, 0, 0, 3, + 0, 4, 3, 26, 0, 16, 0, 2, + 0, 0, 0, 50, 0, 0, 9, 114, + 0, 16, 0, 1, 0, 0, 0, 70, + 2, 16, 0, 0, 0, 0, 0, 246, + 15, 16, 0, 0, 0, 0, 0, 70, + 2, 16, 0, 1, 0, 0, 0, 30, + 0, 0, 7, 18, 0, 16, 0, 2, + 0, 0, 0, 10, 0, 16, 0, 2, + 0, 0, 0, 1, 64, 0, 0, 1, + 0, 0, 0, 22, 0, 0, 1, 54, + 0, 0, 5, 130, 0, 16, 0, 1, + 0, 0, 0, 1, 64, 0, 0, 0, + 0, 128, 63, 56, 0, 0, 8, 242, + 0, 16, 0, 0, 0, 0, 0, 70, + 14, 16, 0, 1, 0, 0, 0, 70, +142, 32, 0, 0, 0, 0, 0, 10, + 0, 0, 0, 54, 0, 0, 5, 242, + 32, 16, 0, 0, 0, 0, 0, 70, + 14, 16, 0, 0, 0, 0, 0, 54, + 0, 0, 5, 242, 32, 16, 0, 1, + 0, 0, 0, 70, 14, 16, 0, 0, + 0, 0, 0, 54, 0, 0, 5, 242, + 32, 16, 0, 2, 0, 0, 0, 70, + 14, 16, 0, 0, 0, 0, 0, 54, + 0, 0, 5, 242, 32, 16, 0, 3, + 0, 0, 0, 70, 14, 16, 0, 0, + 0, 0, 0, 62, 0, 0, 1, 83, + 84, 65, 84, 116, 0, 0, 0, 73, + 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 7, 0, 0, 0, 46, + 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 11, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 82, 68, 69, 70, 120, + 3, 0, 0, 1, 0, 0, 0, 72, + 0, 0, 0, 1, 0, 0, 0, 28, + 0, 0, 0, 0, 4, 255, 255, 0, + 65, 0, 0, 68, 3, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 36, + 71, 108, 111, 98, 97, 108, 115, 0, +171, 171, 171, 60, 0, 0, 0, 11, + 0, 0, 0, 96, 0, 0, 0, 176, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 104, 1, 0, 0, 0, + 0, 0, 0, 12, 0, 0, 0, 2, + 0, 0, 0, 132, 1, 0, 0, 0, + 0, 0, 0, 148, 1, 0, 0, 16, + 0, 0, 0, 12, 0, 0, 0, 2, + 0, 0, 0, 172, 1, 0, 0, 0, + 0, 0, 0, 188, 1, 0, 0, 32, + 0, 0, 0, 12, 0, 0, 0, 2, + 0, 0, 0, 216, 1, 0, 0, 0, + 0, 0, 0, 232, 1, 0, 0, 48, + 0, 0, 0, 12, 0, 0, 0, 2, + 0, 0, 0, 4, 2, 0, 0, 0, + 0, 0, 0, 20, 2, 0, 0, 64, + 0, 0, 0, 4, 0, 0, 0, 2, + 0, 0, 0, 52, 2, 0, 0, 0, + 0, 0, 0, 68, 2, 0, 0, 80, + 0, 0, 0, 12, 0, 0, 0, 2, + 0, 0, 0, 92, 2, 0, 0, 0, + 0, 0, 0, 108, 2, 0, 0, 96, + 0, 0, 0, 12, 0, 0, 0, 2, + 0, 0, 0, 136, 2, 0, 0, 0, + 0, 0, 0, 152, 2, 0, 0, 112, + 0, 0, 0, 4, 0, 0, 0, 2, + 0, 0, 0, 184, 2, 0, 0, 0, + 0, 0, 0, 200, 2, 0, 0, 128, + 0, 0, 0, 4, 0, 0, 0, 2, + 0, 0, 0, 232, 2, 0, 0, 0, + 0, 0, 0, 248, 2, 0, 0, 144, + 0, 0, 0, 4, 0, 0, 0, 2, + 0, 0, 0, 24, 3, 0, 0, 0, + 0, 0, 0, 40, 3, 0, 0, 160, + 0, 0, 0, 16, 0, 0, 0, 2, + 0, 0, 0, 52, 3, 0, 0, 0, + 0, 0, 0, 95, 117, 95, 65, 109, + 98, 105, 101, 110, 116, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 67, 111, 108, 111, 114, 0, 171, 1, + 0, 3, 0, 1, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 95, +117, 95, 68, 105, 114, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 67, 111, 108, 111, 114, 0, 171, 1, + 0, 3, 0, 1, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 95, +117, 95, 68, 105, 114, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 68, 105, 114, 101, 99, 116, 105, 111, +110, 0, 171, 1, 0, 3, 0, 1, + 0, 3, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 95, 117, 95, 80, 111, +105, 110, 116, 76, 105, 103, 104, 116, + 83, 111, 117, 114, 99, 101, 67, 111, +108, 111, 114, 0, 171, 171, 171, 1, + 0, 3, 0, 1, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 95, +117, 95, 80, 111, 105, 110, 116, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 82, 97, 110, 103, 101, 73, +110, 118, 101, 114, 115, 101, 0, 0, + 0, 3, 0, 1, 0, 1, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 95, +117, 95, 83, 112, 111, 116, 76, 105, +103, 104, 116, 83, 111, 117, 114, 99, +101, 67, 111, 108, 111, 114, 0, 1, + 0, 3, 0, 1, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 95, +117, 95, 83, 112, 111, 116, 76, 105, +103, 104, 116, 83, 111, 117, 114, 99, +101, 68, 105, 114, 101, 99, 116, 105, +111, 110, 0, 1, 0, 3, 0, 1, + 0, 3, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 95, 117, 95, 83, 112, +111, 116, 76, 105, 103, 104, 116, 83, +111, 117, 114, 99, 101, 73, 110, 110, +101, 114, 65, 110, 103, 108, 101, 67, +111, 115, 0, 0, 0, 3, 0, 1, + 0, 1, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 95, 117, 95, 83, 112, +111, 116, 76, 105, 103, 104, 116, 83, +111, 117, 114, 99, 101, 79, 117, 116, +101, 114, 65, 110, 103, 108, 101, 67, +111, 115, 0, 0, 0, 3, 0, 1, + 0, 1, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 95, 117, 95, 83, 112, +111, 116, 76, 105, 103, 104, 116, 83, +111, 117, 114, 99, 101, 82, 97, 110, +103, 101, 73, 110, 118, 101, 114, 115, +101, 0, 171, 0, 0, 3, 0, 1, + 0, 1, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 95, 117, 95, 99, 111, +108, 111, 114, 0, 171, 171, 171, 1, + 0, 3, 0, 1, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 77, +105, 99, 114, 111, 115, 111, 102, 116, + 32, 40, 82, 41, 32, 72, 76, 83, + 76, 32, 83, 104, 97, 100, 101, 114, + 32, 67, 111, 109, 112, 105, 108, 101, +114, 32, 54, 46, 51, 46, 57, 54, + 48, 48, 46, 49, 54, 51, 56, 52, + 0, 171, 171, 73, 83, 71, 78, 92, + 0, 0, 0, 3, 0, 0, 0, 8, + 0, 0, 0, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 7, + 7, 0, 0, 80, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 1, 0, 0, 0, 7, + 7, 0, 0, 80, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 2, 0, 0, 0, 7, + 7, 0, 0, 84, 69, 88, 67, 79, + 79, 82, 68, 0, 171, 171, 171, 79, + 83, 71, 78, 116, 0, 0, 0, 4, + 0, 0, 0, 8, 0, 0, 0, 104, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 0, 104, + 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 1, + 0, 0, 0, 15, 0, 0, 0, 104, + 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 2, + 0, 0, 0, 15, 0, 0, 0, 104, + 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 3, + 0, 0, 0, 15, 0, 0, 0, 83, + 86, 95, 84, 97, 114, 103, 101, 116, + 0, 171, 171, 68, 88, 66, 67, 9, +253, 39, 252, 253, 184, 163, 130, 180, + 90, 250, 242, 115, 30, 39, 35, 1, + 0, 0, 0, 216, 9, 0, 0, 6, + 0, 0, 0, 56, 0, 0, 0, 168, + 2, 0, 0, 180, 6, 0, 0, 48, + 7, 0, 0, 236, 8, 0, 0, 80, + 9, 0, 0, 65, 111, 110, 57, 104, + 2, 0, 0, 104, 2, 0, 0, 0, + 2, 254, 255, 52, 2, 0, 0, 52, + 0, 0, 0, 1, 0, 36, 0, 0, + 0, 48, 0, 0, 0, 48, 0, 0, + 0, 36, 0, 1, 0, 48, 0, 0, + 0, 0, 0, 13, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, + 2, 254, 255, 81, 0, 0, 5, 0, + 0, 15, 160, 0, 0, 125, 67, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 81, 0, 0, 5, 14, + 0, 15, 160, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, 63, 0, + 0, 0, 63, 48, 0, 0, 5, 0, + 0, 15, 240, 253, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 0, 0, 2, 5, + 0, 0, 128, 0, 0, 15, 144, 31, + 0, 0, 2, 5, 0, 1, 128, 1, + 0, 15, 144, 9, 0, 0, 3, 0, + 0, 1, 128, 1, 0, 228, 160, 1, + 0, 228, 144, 9, 0, 0, 3, 0, + 0, 2, 128, 2, 0, 228, 160, 1, + 0, 228, 144, 9, 0, 0, 3, 0, + 0, 4, 128, 3, 0, 228, 160, 1, + 0, 228, 144, 9, 0, 0, 3, 0, + 0, 8, 128, 4, 0, 228, 160, 1, + 0, 228, 144, 2, 0, 0, 3, 1, + 0, 7, 128, 0, 0, 228, 129, 12, + 0, 228, 160, 1, 0, 0, 2, 2, + 0, 7, 128, 14, 0, 85, 160, 1, + 0, 0, 2, 1, 0, 8, 128, 14, + 0, 85, 160, 38, 0, 0, 1, 0, + 0, 228, 240, 45, 0, 3, 2, 1, + 0, 255, 128, 14, 0, 170, 160, 2, + 0, 0, 3, 1, 0, 8, 128, 1, + 0, 255, 128, 14, 0, 170, 160, 1, + 0, 0, 2, 2, 0, 7, 128, 1, + 0, 228, 128, 39, 0, 0, 0, 1, + 0, 0, 2, 1, 0, 7, 224, 2, + 0, 228, 128, 2, 0, 0, 3, 1, + 0, 7, 128, 0, 0, 228, 129, 13, + 0, 228, 160, 1, 0, 0, 2, 2, + 0, 7, 128, 14, 0, 85, 160, 1, + 0, 0, 2, 1, 0, 8, 128, 14, + 0, 85, 160, 38, 0, 0, 1, 0, + 0, 228, 240, 45, 0, 3, 2, 1, + 0, 255, 128, 14, 0, 170, 160, 2, + 0, 0, 3, 1, 0, 8, 128, 1, + 0, 255, 128, 14, 0, 170, 160, 1, + 0, 0, 2, 2, 0, 7, 128, 1, + 0, 228, 128, 39, 0, 0, 0, 1, + 0, 0, 2, 2, 0, 7, 224, 2, + 0, 228, 128, 8, 0, 0, 3, 0, + 0, 1, 224, 5, 0, 228, 160, 0, + 0, 228, 144, 8, 0, 0, 3, 0, + 0, 2, 224, 6, 0, 228, 160, 0, + 0, 228, 144, 8, 0, 0, 3, 0, + 0, 4, 224, 7, 0, 228, 160, 0, + 0, 228, 144, 9, 0, 0, 3, 1, + 0, 1, 128, 8, 0, 228, 160, 0, + 0, 228, 128, 9, 0, 0, 3, 1, + 0, 4, 128, 9, 0, 228, 160, 0, + 0, 228, 128, 9, 0, 0, 3, 1, + 0, 8, 128, 10, 0, 228, 160, 0, + 0, 228, 128, 9, 0, 0, 3, 0, + 0, 1, 128, 11, 0, 228, 160, 0, + 0, 228, 128, 1, 0, 0, 2, 1, + 0, 2, 128, 1, 0, 170, 129, 2, + 0, 0, 3, 0, 0, 2, 128, 0, + 0, 0, 128, 1, 0, 255, 128, 5, + 0, 0, 3, 0, 0, 4, 192, 0, + 0, 85, 128, 14, 0, 255, 160, 4, + 0, 0, 4, 0, 0, 3, 192, 0, + 0, 0, 128, 0, 0, 228, 160, 1, + 0, 228, 128, 1, 0, 0, 2, 0, + 0, 8, 192, 0, 0, 0, 128, 255, +255, 0, 0, 83, 72, 68, 82, 4, + 4, 0, 0, 64, 0, 1, 0, 1, + 1, 0, 0, 89, 0, 0, 4, 70, +142, 32, 0, 0, 0, 0, 0, 13, + 0, 0, 0, 95, 0, 0, 3, 114, + 16, 16, 0, 0, 0, 0, 0, 95, + 0, 0, 3, 242, 16, 16, 0, 1, + 0, 0, 0, 101, 0, 0, 3, 114, + 32, 16, 0, 0, 0, 0, 0, 101, + 0, 0, 3, 114, 32, 16, 0, 1, + 0, 0, 0, 101, 0, 0, 3, 114, + 32, 16, 0, 2, 0, 0, 0, 103, + 0, 0, 4, 242, 32, 16, 0, 3, + 0, 0, 0, 1, 0, 0, 0, 104, + 0, 0, 2, 3, 0, 0, 0, 105, + 0, 0, 4, 0, 0, 0, 0, 1, + 0, 0, 0, 4, 0, 0, 0, 105, + 0, 0, 4, 1, 0, 0, 0, 1, + 0, 0, 0, 4, 0, 0, 0, 54, + 0, 0, 9, 114, 48, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 64, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 0, 0, 9, 114, + 48, 32, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 2, 64, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 8, 18, 0, 16, 0, 0, + 0, 0, 0, 70, 142, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 70, + 30, 16, 0, 1, 0, 0, 0, 17, + 0, 0, 8, 34, 0, 16, 0, 0, + 0, 0, 0, 70, 142, 32, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 70, + 30, 16, 0, 1, 0, 0, 0, 17, + 0, 0, 8, 66, 0, 16, 0, 0, + 0, 0, 0, 70, 142, 32, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 70, + 30, 16, 0, 1, 0, 0, 0, 17, + 0, 0, 8, 130, 0, 16, 0, 0, + 0, 0, 0, 70, 142, 32, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 70, + 30, 16, 0, 1, 0, 0, 0, 0, + 0, 0, 9, 114, 0, 16, 0, 1, + 0, 0, 0, 70, 2, 16, 128, 65, + 0, 0, 0, 0, 0, 0, 0, 70, +130, 32, 0, 0, 0, 0, 0, 11, + 0, 0, 0, 54, 0, 0, 5, 130, + 0, 16, 0, 1, 0, 0, 0, 1, + 64, 0, 0, 0, 0, 0, 0, 48, + 0, 0, 1, 33, 0, 0, 7, 18, + 0, 16, 0, 2, 0, 0, 0, 58, + 0, 16, 0, 1, 0, 0, 0, 1, + 64, 0, 0, 1, 0, 0, 0, 3, + 0, 4, 3, 10, 0, 16, 0, 2, + 0, 0, 0, 54, 0, 0, 6, 114, + 48, 32, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 70, 2, 16, 0, 1, + 0, 0, 0, 30, 0, 0, 7, 130, + 0, 16, 0, 1, 0, 0, 0, 58, + 0, 16, 0, 1, 0, 0, 0, 1, + 64, 0, 0, 1, 0, 0, 0, 22, + 0, 0, 1, 0, 0, 0, 9, 114, + 0, 16, 0, 1, 0, 0, 0, 70, + 2, 16, 128, 65, 0, 0, 0, 0, + 0, 0, 0, 70, 130, 32, 0, 0, + 0, 0, 0, 12, 0, 0, 0, 54, + 0, 0, 5, 130, 0, 16, 0, 1, + 0, 0, 0, 1, 64, 0, 0, 0, + 0, 0, 0, 48, 0, 0, 1, 33, + 0, 0, 7, 18, 0, 16, 0, 2, + 0, 0, 0, 58, 0, 16, 0, 1, + 0, 0, 0, 1, 64, 0, 0, 1, + 0, 0, 0, 3, 0, 4, 3, 10, + 0, 16, 0, 2, 0, 0, 0, 54, + 0, 0, 6, 114, 48, 32, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 70, + 2, 16, 0, 1, 0, 0, 0, 30, + 0, 0, 7, 130, 0, 16, 0, 1, + 0, 0, 0, 58, 0, 16, 0, 1, + 0, 0, 0, 1, 64, 0, 0, 1, + 0, 0, 0, 22, 0, 0, 1, 16, + 0, 0, 8, 18, 32, 16, 0, 0, + 0, 0, 0, 70, 130, 32, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 70, + 18, 16, 0, 0, 0, 0, 0, 16, + 0, 0, 8, 34, 32, 16, 0, 0, + 0, 0, 0, 70, 130, 32, 0, 0, + 0, 0, 0, 5, 0, 0, 0, 70, + 18, 16, 0, 0, 0, 0, 0, 16, + 0, 0, 8, 66, 32, 16, 0, 0, + 0, 0, 0, 70, 130, 32, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 70, + 18, 16, 0, 0, 0, 0, 0, 17, + 0, 0, 8, 18, 32, 16, 0, 3, + 0, 0, 0, 70, 142, 32, 0, 0, + 0, 0, 0, 7, 0, 0, 0, 70, + 14, 16, 0, 0, 0, 0, 0, 17, + 0, 0, 8, 18, 0, 16, 0, 1, + 0, 0, 0, 70, 142, 32, 0, 0, + 0, 0, 0, 8, 0, 0, 0, 70, + 14, 16, 0, 0, 0, 0, 0, 17, + 0, 0, 8, 34, 0, 16, 0, 1, + 0, 0, 0, 70, 142, 32, 0, 0, + 0, 0, 0, 9, 0, 0, 0, 70, + 14, 16, 0, 0, 0, 0, 0, 17, + 0, 0, 8, 18, 0, 16, 0, 0, + 0, 0, 0, 70, 142, 32, 0, 0, + 0, 0, 0, 10, 0, 0, 0, 70, + 14, 16, 0, 0, 0, 0, 0, 54, + 0, 0, 6, 34, 32, 16, 0, 3, + 0, 0, 0, 10, 0, 16, 128, 65, + 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 7, 34, 0, 16, 0, 0, + 0, 0, 0, 10, 0, 16, 0, 0, + 0, 0, 0, 26, 0, 16, 0, 1, + 0, 0, 0, 56, 0, 0, 7, 66, + 32, 16, 0, 3, 0, 0, 0, 26, + 0, 16, 0, 0, 0, 0, 0, 1, + 64, 0, 0, 0, 0, 0, 63, 54, + 0, 0, 6, 114, 32, 16, 0, 1, + 0, 0, 0, 70, 50, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 6, 114, 32, 16, 0, 2, + 0, 0, 0, 70, 50, 32, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 5, 130, 32, 16, 0, 3, + 0, 0, 0, 10, 0, 16, 0, 0, + 0, 0, 0, 62, 0, 0, 1, 83, + 84, 65, 84, 116, 0, 0, 0, 36, + 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 16, + 0, 0, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 82, 68, 69, 70, 180, + 1, 0, 0, 1, 0, 0, 0, 72, + 0, 0, 0, 1, 0, 0, 0, 28, + 0, 0, 0, 0, 4, 254, 255, 0, + 65, 0, 0, 128, 1, 0, 0, 60, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 36, + 71, 108, 111, 98, 97, 108, 115, 0, +171, 171, 171, 60, 0, 0, 0, 5, + 0, 0, 0, 96, 0, 0, 0, 208, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 216, 0, 0, 0, 0, + 0, 0, 0, 64, 0, 0, 0, 2, + 0, 0, 0, 232, 0, 0, 0, 0, + 0, 0, 0, 248, 0, 0, 0, 64, + 0, 0, 0, 44, 0, 0, 0, 2, + 0, 0, 0, 12, 1, 0, 0, 0, + 0, 0, 0, 28, 1, 0, 0, 112, + 0, 0, 0, 64, 0, 0, 0, 2, + 0, 0, 0, 232, 0, 0, 0, 0, + 0, 0, 0, 40, 1, 0, 0, 176, + 0, 0, 0, 12, 0, 0, 0, 2, + 0, 0, 0, 68, 1, 0, 0, 0, + 0, 0, 0, 84, 1, 0, 0, 192, + 0, 0, 0, 12, 0, 0, 0, 2, + 0, 0, 0, 112, 1, 0, 0, 0, + 0, 0, 0, 95, 67, 67, 95, 77, + 86, 77, 97, 116, 114, 105, 120, 0, +171, 171, 171, 3, 0, 3, 0, 4, + 0, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 95, 67, 67, 95, 78, +111, 114, 109, 97, 108, 77, 97, 116, +114, 105, 120, 0, 171, 171, 171, 3, + 0, 3, 0, 3, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 95, + 67, 67, 95, 80, 77, 97, 116, 114, +105, 120, 0, 95, 117, 95, 80, 111, +105, 110, 116, 76, 105, 103, 104, 116, + 83, 111, 117, 114, 99, 101, 80, 111, +115, 105, 116, 105, 111, 110, 0, 1, + 0, 3, 0, 1, 0, 3, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 95, +117, 95, 83, 112, 111, 116, 76, 105, +103, 104, 116, 83, 111, 117, 114, 99, +101, 80, 111, 115, 105, 116, 105, 111, +110, 0, 171, 1, 0, 3, 0, 1, + 0, 3, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 77, 105, 99, 114, 111, +115, 111, 102, 116, 32, 40, 82, 41, + 32, 72, 76, 83, 76, 32, 83, 104, + 97, 100, 101, 114, 32, 67, 111, 109, +112, 105, 108, 101, 114, 32, 54, 46, + 51, 46, 57, 54, 48, 48, 46, 49, + 54, 51, 56, 52, 0, 171, 171, 73, + 83, 71, 78, 92, 0, 0, 0, 3, + 0, 0, 0, 8, 0, 0, 0, 80, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 7, 7, 0, 0, 80, + 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 1, + 0, 0, 0, 15, 15, 0, 0, 80, + 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 0, 0, 2, + 0, 0, 0, 3, 0, 0, 0, 84, + 69, 88, 67, 79, 79, 82, 68, 0, +171, 171, 171, 79, 83, 71, 78, 128, + 0, 0, 0, 4, 0, 0, 0, 8, + 0, 0, 0, 104, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 7, + 8, 0, 0, 104, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 1, 0, 0, 0, 7, + 8, 0, 0, 104, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 2, 0, 0, 0, 7, + 8, 0, 0, 113, 0, 0, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 3, + 0, 0, 0, 3, 0, 0, 0, 15, + 0, 0, 0, 84, 69, 88, 67, 79, + 79, 82, 68, 0, 83, 86, 95, 80, +111, 115, 105, 116, 105, 111, 110, 0, +171, 171, 171, +}; + const unsigned char s_976D0E98457C40DFC2F0FBD00E30607C9E4CFDAE[] = { 166, 147, 0, 0, 142, 9, 2, 1, @@ -5038,7 +7231,7 @@ const unsigned char s_976D0E98457C40DFC2F0FBD00E30607C9E4CFDAE[] = { 99, 111, 108, 111, 114, 0, 0, 0, 0, 3, 0, 0, 0, 96, 4, 0, 0, 148, 13, 0, 0, 0, 0, 0, - 0, 194, 137, 0, 0, 0, 0, 0, + 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 157, 116, 105, 89, 118, 135, 249, 239, 42, 226, 184, @@ -5709,7 +7902,7 @@ const unsigned char s_A2377A827972A5466DA8637681045D32DA8A817D[] = { 99, 111, 108, 111, 114, 0, 0, 0, 0, 2, 0, 0, 0, 96, 4, 0, 0, 144, 4, 0, 0, 0, 0, 0, - 0, 194, 137, 0, 0, 0, 0, 0, + 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 157, 116, 105, 89, 118, 135, 249, 239, 42, 226, 184, @@ -6000,6 +8193,2047 @@ const unsigned char s_A2377A827972A5466DA8637681045D32DA8A817D[] = { 171, }; +const unsigned char s_A883DF8204EA77D28BC638CEAAB512DEE74FBB65[] = { + +166, 147, 0, 0, 142, 9, 2, 1, + 0, 128, 0, 0, 81, 139, 0, 0, + 10, 0, 0, 0, 97, 95, 112, 111, +115, 105, 116, 105, 111, 110, 3, 0, + 0, 0, 82, 139, 0, 0, 12, 0, + 0, 0, 97, 95, 98, 108, 101, 110, +100, 73, 110, 100, 101, 120, 0, 0, + 0, 0, 80, 139, 0, 0, 10, 0, + 0, 0, 97, 95, 116, 101, 120, 67, +111, 111, 114, 100, 4, 0, 0, 0, + 82, 139, 0, 0, 13, 0, 0, 0, + 97, 95, 98, 108, 101, 110, 100, 87, +101, 105, 103, 104, 116, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 255, 255, +255, 81, 139, 0, 0, 8, 0, 0, + 0, 97, 95, 110, 111, 114, 109, 97, +108, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 255, 255, +255, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 255, 255, +255, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 255, 255, +255, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 255, 255, +255, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 255, 255, 255, 0, 0, 0, + 0, 0, 0, 0, 0, 255, 255, 255, +255, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 18, 0, 0, 0, 92, 139, + 0, 0, 242, 141, 0, 0, 11, 0, + 0, 0, 67, 67, 95, 77, 86, 77, + 97, 116, 114, 105, 120, 0, 0, 0, + 0, 255, 255, 255, 255, 0, 0, 0, + 0, 4, 0, 0, 0, 91, 139, 0, + 0, 242, 141, 0, 0, 15, 0, 0, + 0, 67, 67, 95, 78, 111, 114, 109, + 97, 108, 77, 97, 116, 114, 105, 120, + 0, 0, 0, 0, 255, 255, 255, 255, + 4, 0, 0, 0, 3, 0, 0, 0, + 92, 139, 0, 0, 242, 141, 0, 0, + 10, 0, 0, 0, 67, 67, 95, 80, + 77, 97, 116, 114, 105, 120, 0, 0, + 0, 0, 255, 255, 255, 255, 7, 0, + 0, 0, 4, 0, 0, 0, 81, 139, + 0, 0, 242, 141, 0, 0, 26, 0, + 0, 0, 117, 95, 80, 111, 105, 110, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 80, 111, 115, 105, +116, 105, 111, 110, 1, 0, 0, 0, +255, 255, 255, 255, 11, 0, 0, 0, + 1, 0, 0, 0, 81, 139, 0, 0, +242, 141, 0, 0, 25, 0, 0, 0, +117, 95, 83, 112, 111, 116, 76, 105, +103, 104, 116, 83, 111, 117, 114, 99, +101, 80, 111, 115, 105, 116, 105, 111, +110, 1, 0, 0, 0, 255, 255, 255, +255, 12, 0, 0, 0, 1, 0, 0, + 0, 82, 139, 0, 0, 242, 141, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 180, 0, 0, 0, +255, 255, 255, 255, 13, 0, 0, 0, +180, 0, 0, 0, 94, 139, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, + 67, 67, 95, 84, 101, 120, 116, 117, +114, 101, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 255, 255, 255, 1, + 0, 0, 0, 81, 139, 0, 0, 241, +141, 0, 0, 25, 0, 0, 0, 117, + 95, 65, 109, 98, 105, 101, 110, 116, + 76, 105, 103, 104, 116, 83, 111, 117, +114, 99, 101, 67, 111, 108, 111, 114, + 0, 0, 0, 0, 0, 0, 0, 0, +255, 255, 255, 255, 1, 0, 0, 0, + 81, 139, 0, 0, 241, 141, 0, 0, + 21, 0, 0, 0, 117, 95, 68, 105, +114, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 67, 111, 108, 111, +114, 1, 0, 0, 0, 1, 0, 0, + 0, 255, 255, 255, 255, 1, 0, 0, + 0, 81, 139, 0, 0, 241, 141, 0, + 0, 25, 0, 0, 0, 117, 95, 68, +105, 114, 76, 105, 103, 104, 116, 83, +111, 117, 114, 99, 101, 68, 105, 114, +101, 99, 116, 105, 111, 110, 1, 0, + 0, 0, 2, 0, 0, 0, 255, 255, +255, 255, 1, 0, 0, 0, 81, 139, + 0, 0, 241, 141, 0, 0, 23, 0, + 0, 0, 117, 95, 80, 111, 105, 110, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 67, 111, 108, 111, +114, 1, 0, 0, 0, 3, 0, 0, + 0, 255, 255, 255, 255, 1, 0, 0, + 0, 6, 20, 0, 0, 241, 141, 0, + 0, 30, 0, 0, 0, 117, 95, 80, +111, 105, 110, 116, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 82, + 97, 110, 103, 101, 73, 110, 118, 101, +114, 115, 101, 1, 0, 0, 0, 4, + 0, 0, 0, 255, 255, 255, 255, 1, + 0, 0, 0, 81, 139, 0, 0, 241, +141, 0, 0, 22, 0, 0, 0, 117, + 95, 83, 112, 111, 116, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 67, 111, 108, 111, 114, 1, 0, 0, + 0, 5, 0, 0, 0, 255, 255, 255, +255, 1, 0, 0, 0, 81, 139, 0, + 0, 241, 141, 0, 0, 26, 0, 0, + 0, 117, 95, 83, 112, 111, 116, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 68, 105, 114, 101, 99, 116, +105, 111, 110, 1, 0, 0, 0, 6, + 0, 0, 0, 255, 255, 255, 255, 1, + 0, 0, 0, 6, 20, 0, 0, 241, +141, 0, 0, 30, 0, 0, 0, 117, + 95, 83, 112, 111, 116, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 73, 110, 110, 101, 114, 65, 110, 103, +108, 101, 67, 111, 115, 1, 0, 0, + 0, 7, 0, 0, 0, 255, 255, 255, +255, 1, 0, 0, 0, 6, 20, 0, + 0, 241, 141, 0, 0, 30, 0, 0, + 0, 117, 95, 83, 112, 111, 116, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 79, 117, 116, 101, 114, 65, +110, 103, 108, 101, 67, 111, 115, 1, + 0, 0, 0, 8, 0, 0, 0, 255, +255, 255, 255, 1, 0, 0, 0, 6, + 20, 0, 0, 241, 141, 0, 0, 29, + 0, 0, 0, 117, 95, 83, 112, 111, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 82, 97, 110, 103, +101, 73, 110, 118, 101, 114, 115, 101, + 1, 0, 0, 0, 9, 0, 0, 0, +255, 255, 255, 255, 1, 0, 0, 0, + 82, 139, 0, 0, 241, 141, 0, 0, + 7, 0, 0, 0, 117, 95, 99, 111, +108, 111, 114, 0, 0, 0, 0, 10, + 0, 0, 0, 255, 255, 255, 255, 1, + 0, 0, 0, 197, 0, 0, 0, 11, + 0, 0, 0, 67, 67, 95, 77, 86, + 77, 97, 116, 114, 105, 120, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 0, + 0, 0, 67, 67, 95, 78, 111, 114, +109, 97, 108, 77, 97, 116, 114, 105, +120, 0, 0, 0, 0, 1, 0, 0, + 0, 10, 0, 0, 0, 67, 67, 95, + 80, 77, 97, 116, 114, 105, 120, 0, + 0, 0, 0, 2, 0, 0, 0, 26, + 0, 0, 0, 117, 95, 80, 111, 105, +110, 116, 76, 105, 103, 104, 116, 83, +111, 117, 114, 99, 101, 80, 111, 115, +105, 116, 105, 111, 110, 0, 0, 0, + 0, 3, 0, 0, 0, 25, 0, 0, + 0, 117, 95, 83, 112, 111, 116, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 80, 111, 115, 105, 116, 105, +111, 110, 0, 0, 0, 0, 4, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 0, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, + 1, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 2, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 3, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 4, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 5, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 6, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 7, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 8, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, + 9, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 10, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 11, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 12, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 13, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 14, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 15, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 16, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, + 17, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 18, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 19, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 20, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 21, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 22, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 23, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 24, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, + 25, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 26, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 27, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 28, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 29, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 30, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 31, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 32, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, + 33, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 34, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 35, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 36, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 37, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 38, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 39, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 40, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, + 41, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 42, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 43, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 44, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 45, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 46, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 47, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 48, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, + 49, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 50, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 51, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 52, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 53, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 54, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 55, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 56, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, + 57, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 58, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 59, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 60, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 61, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 62, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 63, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 64, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, + 65, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 66, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 67, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 68, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 69, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 70, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 71, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 72, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, + 73, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 74, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 75, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 76, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 77, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 78, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 79, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 80, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, + 81, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 82, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 83, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 84, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 85, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 86, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 87, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 88, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, + 89, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 90, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 91, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 92, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 93, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 94, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 95, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 96, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, + 97, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 98, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 99, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 100, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 101, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 102, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 103, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 104, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, +105, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 106, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 107, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 108, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 109, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 110, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 111, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 112, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, +113, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 114, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 115, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 116, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 117, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 118, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 119, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 120, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, +121, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 122, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 123, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 124, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 125, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 126, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 127, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 128, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, +129, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 130, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 131, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 132, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 133, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 134, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 135, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 136, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, +137, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 138, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 139, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 140, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 141, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 142, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 143, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 144, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, +145, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 146, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 147, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 148, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 149, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 150, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 151, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 152, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, +153, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 154, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 155, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 156, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 157, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 158, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 159, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 160, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, +161, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 162, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 163, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 164, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 165, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 166, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 167, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 168, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, +169, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 170, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 171, 0, + 0, 0, 5, 0, 0, 0, 15, 0, + 0, 0, 117, 95, 109, 97, 116, 114, +105, 120, 80, 97, 108, 101, 116, 116, +101, 172, 0, 0, 0, 5, 0, 0, + 0, 15, 0, 0, 0, 117, 95, 109, + 97, 116, 114, 105, 120, 80, 97, 108, +101, 116, 116, 101, 173, 0, 0, 0, + 5, 0, 0, 0, 15, 0, 0, 0, +117, 95, 109, 97, 116, 114, 105, 120, + 80, 97, 108, 101, 116, 116, 101, 174, + 0, 0, 0, 5, 0, 0, 0, 15, + 0, 0, 0, 117, 95, 109, 97, 116, +114, 105, 120, 80, 97, 108, 101, 116, +116, 101, 175, 0, 0, 0, 5, 0, + 0, 0, 15, 0, 0, 0, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 176, 0, 0, + 0, 5, 0, 0, 0, 15, 0, 0, + 0, 117, 95, 109, 97, 116, 114, 105, +120, 80, 97, 108, 101, 116, 116, 101, +177, 0, 0, 0, 5, 0, 0, 0, + 15, 0, 0, 0, 117, 95, 109, 97, +116, 114, 105, 120, 80, 97, 108, 101, +116, 116, 101, 178, 0, 0, 0, 5, + 0, 0, 0, 15, 0, 0, 0, 117, + 95, 109, 97, 116, 114, 105, 120, 80, + 97, 108, 101, 116, 116, 101, 179, 0, + 0, 0, 5, 0, 0, 0, 11, 0, + 0, 0, 67, 67, 95, 84, 101, 120, +116, 117, 114, 101, 48, 0, 0, 0, + 0, 6, 0, 0, 0, 25, 0, 0, + 0, 117, 95, 65, 109, 98, 105, 101, +110, 116, 76, 105, 103, 104, 116, 83, +111, 117, 114, 99, 101, 67, 111, 108, +111, 114, 0, 0, 0, 0, 7, 0, + 0, 0, 21, 0, 0, 0, 117, 95, + 68, 105, 114, 76, 105, 103, 104, 116, + 83, 111, 117, 114, 99, 101, 67, 111, +108, 111, 114, 0, 0, 0, 0, 8, + 0, 0, 0, 25, 0, 0, 0, 117, + 95, 68, 105, 114, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 68, +105, 114, 101, 99, 116, 105, 111, 110, + 0, 0, 0, 0, 9, 0, 0, 0, + 23, 0, 0, 0, 117, 95, 80, 111, +105, 110, 116, 76, 105, 103, 104, 116, + 83, 111, 117, 114, 99, 101, 67, 111, +108, 111, 114, 0, 0, 0, 0, 10, + 0, 0, 0, 30, 0, 0, 0, 117, + 95, 80, 111, 105, 110, 116, 76, 105, +103, 104, 116, 83, 111, 117, 114, 99, +101, 82, 97, 110, 103, 101, 73, 110, +118, 101, 114, 115, 101, 0, 0, 0, + 0, 11, 0, 0, 0, 22, 0, 0, + 0, 117, 95, 83, 112, 111, 116, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 67, 111, 108, 111, 114, 0, + 0, 0, 0, 12, 0, 0, 0, 26, + 0, 0, 0, 117, 95, 83, 112, 111, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 68, 105, 114, 101, + 99, 116, 105, 111, 110, 0, 0, 0, + 0, 13, 0, 0, 0, 30, 0, 0, + 0, 117, 95, 83, 112, 111, 116, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 73, 110, 110, 101, 114, 65, +110, 103, 108, 101, 67, 111, 115, 0, + 0, 0, 0, 14, 0, 0, 0, 30, + 0, 0, 0, 117, 95, 83, 112, 111, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 79, 117, 116, 101, +114, 65, 110, 103, 108, 101, 67, 111, +115, 0, 0, 0, 0, 15, 0, 0, + 0, 29, 0, 0, 0, 117, 95, 83, +112, 111, 116, 76, 105, 103, 104, 116, + 83, 111, 117, 114, 99, 101, 82, 97, +110, 103, 101, 73, 110, 118, 101, 114, +115, 101, 0, 0, 0, 0, 16, 0, + 0, 0, 7, 0, 0, 0, 117, 95, + 99, 111, 108, 111, 114, 0, 0, 0, + 0, 17, 0, 0, 0, 236, 16, 0, + 0, 188, 19, 0, 0, 0, 0, 0, + 0, 107, 155, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 68, 88, 66, 67, 39, 224, 169, +185, 116, 156, 41, 157, 187, 9, 222, +142, 94, 217, 160, 100, 1, 0, 0, + 0, 236, 16, 0, 0, 6, 0, 0, + 0, 56, 0, 0, 0, 140, 3, 0, + 0, 144, 11, 0, 0, 12, 12, 0, + 0, 244, 15, 0, 0, 112, 16, 0, + 0, 65, 111, 110, 57, 76, 3, 0, + 0, 76, 3, 0, 0, 0, 2, 255, +255, 24, 3, 0, 0, 52, 0, 0, + 0, 1, 0, 40, 0, 0, 0, 52, + 0, 0, 0, 52, 0, 1, 0, 36, + 0, 0, 0, 52, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 255, +255, 81, 0, 0, 5, 11, 0, 15, +160, 0, 0, 0, 0, 0, 0, 128, + 63, 0, 0, 0, 192, 0, 0, 64, + 64, 31, 0, 0, 2, 0, 0, 0, +128, 0, 0, 7, 176, 31, 0, 0, + 2, 0, 0, 0, 128, 1, 0, 7, +176, 31, 0, 0, 2, 0, 0, 0, +128, 2, 0, 7, 176, 31, 0, 0, + 2, 0, 0, 0, 128, 3, 0, 3, +176, 31, 0, 0, 2, 0, 0, 0, +144, 0, 8, 15, 160, 5, 0, 0, + 3, 0, 0, 7, 128, 1, 0, 228, +176, 4, 0, 0, 160, 8, 0, 0, + 3, 0, 0, 1, 128, 0, 0, 228, +128, 0, 0, 228, 128, 2, 0, 0, + 3, 0, 0, 1, 128, 0, 0, 0, +129, 11, 0, 85, 160, 11, 0, 0, + 3, 1, 0, 8, 128, 0, 0, 0, +128, 11, 0, 0, 160, 2, 0, 0, + 3, 0, 0, 7, 128, 2, 0, 228, +160, 2, 0, 228, 160, 36, 0, 0, + 2, 1, 0, 7, 128, 0, 0, 228, +128, 36, 0, 0, 2, 0, 0, 7, +128, 0, 0, 228, 176, 8, 0, 0, + 3, 0, 0, 8, 128, 0, 0, 228, +128, 1, 0, 228, 129, 5, 0, 0, + 3, 1, 0, 7, 128, 0, 0, 255, +128, 1, 0, 228, 160, 88, 0, 0, + 4, 1, 0, 7, 128, 0, 0, 255, +128, 1, 0, 228, 128, 11, 0, 0, +160, 2, 0, 0, 3, 1, 0, 7, +128, 1, 0, 228, 128, 0, 0, 228, +160, 36, 0, 0, 2, 2, 0, 7, +128, 1, 0, 228, 176, 8, 0, 0, + 3, 0, 0, 8, 128, 0, 0, 228, +128, 2, 0, 228, 128, 5, 0, 0, + 3, 2, 0, 7, 128, 0, 0, 255, +128, 3, 0, 228, 160, 88, 0, 0, + 4, 2, 0, 7, 128, 0, 0, 255, +128, 2, 0, 228, 128, 11, 0, 0, +160, 4, 0, 0, 4, 1, 0, 7, +128, 2, 0, 228, 128, 1, 0, 255, +128, 1, 0, 228, 128, 2, 0, 0, + 3, 2, 0, 7, 128, 6, 0, 228, +160, 6, 0, 228, 160, 36, 0, 0, + 2, 3, 0, 7, 128, 2, 0, 228, +128, 36, 0, 0, 2, 2, 0, 7, +128, 2, 0, 228, 176, 8, 0, 0, + 3, 0, 0, 8, 128, 3, 0, 228, +128, 2, 0, 228, 129, 8, 0, 0, + 3, 1, 0, 8, 128, 0, 0, 228, +128, 2, 0, 228, 128, 2, 0, 0, + 3, 0, 0, 1, 128, 0, 0, 255, +128, 8, 0, 0, 161, 1, 0, 0, + 2, 2, 0, 1, 128, 8, 0, 0, +160, 2, 0, 0, 3, 0, 0, 2, +128, 2, 0, 0, 129, 7, 0, 0, +160, 6, 0, 0, 2, 0, 0, 2, +128, 0, 0, 85, 128, 5, 0, 0, + 3, 0, 0, 17, 128, 0, 0, 85, +128, 0, 0, 0, 128, 4, 0, 0, + 4, 0, 0, 2, 128, 0, 0, 0, +128, 11, 0, 170, 160, 11, 0, 255, +160, 5, 0, 0, 3, 0, 0, 1, +128, 0, 0, 0, 128, 0, 0, 0, +128, 5, 0, 0, 3, 0, 0, 1, +128, 0, 0, 0, 128, 0, 0, 85, +128, 5, 0, 0, 3, 0, 0, 14, +128, 2, 0, 144, 176, 9, 0, 0, +160, 8, 0, 0, 3, 0, 0, 2, +128, 0, 0, 249, 128, 0, 0, 249, +128, 2, 0, 0, 3, 0, 0, 2, +128, 0, 0, 85, 129, 11, 0, 85, +160, 5, 0, 0, 3, 0, 0, 1, +128, 0, 0, 0, 128, 0, 0, 85, +128, 88, 0, 0, 4, 0, 0, 1, +128, 0, 0, 85, 128, 0, 0, 0, +128, 11, 0, 0, 160, 5, 0, 0, + 3, 0, 0, 14, 128, 1, 0, 255, +128, 5, 0, 144, 160, 88, 0, 0, + 4, 0, 0, 14, 128, 1, 0, 255, +128, 0, 0, 228, 128, 11, 0, 0, +160, 4, 0, 0, 4, 0, 0, 7, +128, 0, 0, 249, 128, 0, 0, 0, +128, 1, 0, 228, 128, 66, 0, 0, + 3, 1, 0, 15, 128, 3, 0, 228, +176, 0, 8, 228, 160, 5, 0, 0, + 3, 1, 0, 15, 128, 1, 0, 228, +128, 10, 0, 228, 160, 1, 0, 0, + 2, 0, 0, 8, 128, 11, 0, 85, +160, 5, 0, 0, 3, 0, 0, 15, +128, 0, 0, 228, 128, 1, 0, 228, +128, 1, 0, 0, 2, 0, 8, 15, +128, 0, 0, 228, 128, 1, 0, 0, + 2, 1, 8, 15, 128, 0, 0, 228, +128, 1, 0, 0, 2, 2, 8, 15, +128, 0, 0, 228, 128, 1, 0, 0, + 2, 3, 8, 15, 128, 0, 0, 228, +128, 255, 255, 0, 0, 83, 72, 68, + 82, 252, 7, 0, 0, 64, 0, 0, + 0, 255, 1, 0, 0, 89, 0, 0, + 4, 70, 142, 32, 0, 0, 0, 0, + 0, 11, 0, 0, 0, 90, 0, 0, + 3, 0, 96, 16, 0, 0, 0, 0, + 0, 88, 24, 0, 4, 0, 112, 16, + 0, 0, 0, 0, 0, 85, 85, 0, + 0, 98, 16, 0, 3, 114, 16, 16, + 0, 0, 0, 0, 0, 98, 16, 0, + 3, 114, 16, 16, 0, 1, 0, 0, + 0, 98, 16, 0, 3, 114, 16, 16, + 0, 2, 0, 0, 0, 98, 16, 0, + 3, 50, 16, 16, 0, 3, 0, 0, + 0, 101, 0, 0, 3, 242, 32, 16, + 0, 0, 0, 0, 0, 101, 0, 0, + 3, 242, 32, 16, 0, 1, 0, 0, + 0, 101, 0, 0, 3, 242, 32, 16, + 0, 2, 0, 0, 0, 101, 0, 0, + 3, 242, 32, 16, 0, 3, 0, 0, + 0, 104, 0, 0, 2, 4, 0, 0, + 0, 16, 0, 0, 7, 18, 0, 16, + 0, 0, 0, 0, 0, 70, 18, 16, + 0, 0, 0, 0, 0, 70, 18, 16, + 0, 0, 0, 0, 0, 68, 0, 0, + 5, 18, 0, 16, 0, 0, 0, 0, + 0, 10, 0, 16, 0, 0, 0, 0, + 0, 56, 0, 0, 7, 114, 0, 16, + 0, 0, 0, 0, 0, 6, 0, 16, + 0, 0, 0, 0, 0, 70, 18, 16, + 0, 0, 0, 0, 0, 0, 0, 0, + 9, 114, 0, 16, 0, 1, 0, 0, + 0, 70, 130, 32, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 2, 0, 0, + 0, 16, 0, 0, 7, 130, 0, 16, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 1, 0, 0, 0, 70, 2, 16, + 0, 1, 0, 0, 0, 68, 0, 0, + 5, 130, 0, 16, 0, 0, 0, 0, + 0, 58, 0, 16, 0, 0, 0, 0, + 0, 56, 0, 0, 7, 114, 0, 16, + 0, 1, 0, 0, 0, 246, 15, 16, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 1, 0, 0, 0, 16, 0, 0, + 8, 130, 0, 16, 0, 0, 0, 0, + 0, 70, 2, 16, 0, 0, 0, 0, + 0, 70, 2, 16, 128, 65, 0, 0, + 0, 1, 0, 0, 0, 52, 0, 0, + 7, 130, 0, 16, 0, 0, 0, 0, + 0, 58, 0, 16, 0, 0, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 0, + 0, 54, 0, 0, 6, 114, 0, 16, + 0, 1, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 0, 0, 5, 130, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 0, 48, 0, 0, + 1, 33, 0, 0, 7, 18, 0, 16, + 0, 2, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 1, 0, 0, 0, 3, 0, 4, + 3, 10, 0, 16, 0, 2, 0, 0, + 0, 50, 0, 0, 10, 114, 0, 16, + 0, 1, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 246, 15, 16, 0, 0, 0, 0, + 0, 70, 2, 16, 0, 1, 0, 0, + 0, 30, 0, 0, 7, 130, 0, 16, + 0, 1, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 1, 0, 0, 0, 22, 0, 0, + 1, 56, 0, 0, 8, 114, 0, 16, + 0, 2, 0, 0, 0, 70, 18, 16, + 0, 1, 0, 0, 0, 6, 128, 32, + 0, 0, 0, 0, 0, 4, 0, 0, + 0, 16, 0, 0, 7, 130, 0, 16, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 2, 0, 0, 0, 70, 2, 16, + 0, 2, 0, 0, 0, 0, 0, 0, + 8, 130, 0, 16, 0, 0, 0, 0, + 0, 58, 0, 16, 128, 65, 0, 0, + 0, 0, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 128, 63, 52, 0, 0, + 7, 130, 0, 16, 0, 0, 0, 0, + 0, 58, 0, 16, 0, 0, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 0, + 0, 16, 0, 0, 7, 130, 0, 16, + 0, 1, 0, 0, 0, 70, 18, 16, + 0, 1, 0, 0, 0, 70, 18, 16, + 0, 1, 0, 0, 0, 68, 0, 0, + 5, 130, 0, 16, 0, 1, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 56, 0, 0, 7, 114, 0, 16, + 0, 2, 0, 0, 0, 246, 15, 16, + 0, 1, 0, 0, 0, 70, 18, 16, + 0, 1, 0, 0, 0, 16, 0, 0, + 7, 130, 0, 16, 0, 1, 0, 0, + 0, 70, 2, 16, 0, 0, 0, 0, + 0, 70, 2, 16, 0, 2, 0, 0, + 0, 52, 0, 0, 7, 130, 0, 16, + 0, 1, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 0, 56, 0, 0, + 8, 114, 0, 16, 0, 2, 0, 0, + 0, 246, 15, 16, 0, 1, 0, 0, + 0, 70, 130, 32, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 54, 0, 0, + 5, 114, 0, 16, 0, 3, 0, 0, + 0, 70, 2, 16, 0, 1, 0, 0, + 0, 54, 0, 0, 5, 130, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 0, 48, 0, 0, + 1, 33, 0, 0, 7, 130, 0, 16, + 0, 2, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 1, 0, 0, 0, 3, 0, 4, + 3, 58, 0, 16, 0, 2, 0, 0, + 0, 50, 0, 0, 9, 114, 0, 16, + 0, 3, 0, 0, 0, 70, 2, 16, + 0, 2, 0, 0, 0, 246, 15, 16, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 3, 0, 0, 0, 30, 0, 0, + 7, 130, 0, 16, 0, 1, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 1, 64, 0, 0, 1, 0, 0, + 0, 22, 0, 0, 1, 56, 0, 0, + 8, 114, 0, 16, 0, 1, 0, 0, + 0, 70, 18, 16, 0, 2, 0, 0, + 0, 6, 128, 32, 0, 0, 0, 0, + 0, 9, 0, 0, 0, 16, 0, 0, + 7, 130, 0, 16, 0, 0, 0, 0, + 0, 70, 2, 16, 0, 1, 0, 0, + 0, 70, 2, 16, 0, 1, 0, 0, + 0, 0, 0, 0, 8, 130, 0, 16, + 0, 0, 0, 0, 0, 58, 0, 16, +128, 65, 0, 0, 0, 0, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 128, + 63, 52, 0, 0, 7, 130, 0, 16, + 0, 0, 0, 0, 0, 58, 0, 16, + 0, 0, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 0, 16, 0, 0, + 7, 18, 0, 16, 0, 1, 0, 0, + 0, 70, 18, 16, 0, 2, 0, 0, + 0, 70, 18, 16, 0, 2, 0, 0, + 0, 68, 0, 0, 5, 18, 0, 16, + 0, 1, 0, 0, 0, 10, 0, 16, + 0, 1, 0, 0, 0, 56, 0, 0, + 7, 114, 0, 16, 0, 1, 0, 0, + 0, 6, 0, 16, 0, 1, 0, 0, + 0, 70, 18, 16, 0, 2, 0, 0, + 0, 0, 0, 0, 9, 114, 0, 16, + 0, 2, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 6, 0, 0, + 0, 70, 130, 32, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 16, 0, 0, + 7, 130, 0, 16, 0, 1, 0, 0, + 0, 70, 2, 16, 0, 2, 0, 0, + 0, 70, 2, 16, 0, 2, 0, 0, + 0, 68, 0, 0, 5, 130, 0, 16, + 0, 1, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 56, 0, 0, + 7, 114, 0, 16, 0, 2, 0, 0, + 0, 246, 15, 16, 0, 1, 0, 0, + 0, 70, 2, 16, 0, 2, 0, 0, + 0, 16, 0, 0, 8, 130, 0, 16, + 0, 1, 0, 0, 0, 70, 2, 16, + 0, 2, 0, 0, 0, 70, 2, 16, +128, 65, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 10, 18, 0, 16, + 0, 2, 0, 0, 0, 10, 128, 32, + 0, 0, 0, 0, 0, 7, 0, 0, + 0, 10, 128, 32, 128, 65, 0, 0, + 0, 0, 0, 0, 0, 8, 0, 0, + 0, 0, 0, 0, 9, 130, 0, 16, + 0, 1, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 10, 128, 32, +128, 65, 0, 0, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 14, 0, 0, + 10, 18, 0, 16, 0, 2, 0, 0, + 0, 2, 64, 0, 0, 0, 0, 128, + 63, 0, 0, 128, 63, 0, 0, 128, + 63, 0, 0, 128, 63, 10, 0, 16, + 0, 2, 0, 0, 0, 56, 32, 0, + 7, 130, 0, 16, 0, 1, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 10, 0, 16, 0, 2, 0, 0, + 0, 50, 0, 0, 9, 18, 0, 16, + 0, 2, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 192, 1, 64, 0, + 0, 0, 0, 64, 64, 56, 0, 0, + 7, 130, 0, 16, 0, 1, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 56, 0, 0, 7, 130, 0, 16, + 0, 1, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 10, 0, 16, + 0, 2, 0, 0, 0, 56, 0, 0, + 7, 130, 0, 16, 0, 0, 0, 0, + 0, 58, 0, 16, 0, 0, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 16, 0, 0, 7, 18, 0, 16, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 1, 0, 0, 0, 52, 0, 0, + 7, 18, 0, 16, 0, 0, 0, 0, + 0, 10, 0, 16, 0, 0, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 0, + 0, 56, 0, 0, 8, 114, 0, 16, + 0, 0, 0, 0, 0, 6, 0, 16, + 0, 0, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 5, 0, 0, + 0, 54, 0, 0, 5, 114, 0, 16, + 0, 1, 0, 0, 0, 70, 2, 16, + 0, 3, 0, 0, 0, 54, 0, 0, + 5, 18, 0, 16, 0, 2, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 0, + 0, 48, 0, 0, 1, 33, 0, 0, + 7, 34, 0, 16, 0, 2, 0, 0, + 0, 10, 0, 16, 0, 2, 0, 0, + 0, 1, 64, 0, 0, 1, 0, 0, + 0, 3, 0, 4, 3, 26, 0, 16, + 0, 2, 0, 0, 0, 50, 0, 0, + 9, 114, 0, 16, 0, 1, 0, 0, + 0, 70, 2, 16, 0, 0, 0, 0, + 0, 246, 15, 16, 0, 0, 0, 0, + 0, 70, 2, 16, 0, 1, 0, 0, + 0, 30, 0, 0, 7, 18, 0, 16, + 0, 2, 0, 0, 0, 10, 0, 16, + 0, 2, 0, 0, 0, 1, 64, 0, + 0, 1, 0, 0, 0, 22, 0, 0, + 1, 69, 0, 0, 9, 242, 0, 16, + 0, 0, 0, 0, 0, 70, 16, 16, + 0, 3, 0, 0, 0, 70, 126, 16, + 0, 0, 0, 0, 0, 0, 96, 16, + 0, 0, 0, 0, 0, 56, 0, 0, + 8, 242, 0, 16, 0, 0, 0, 0, + 0, 70, 14, 16, 0, 0, 0, 0, + 0, 70, 142, 32, 0, 0, 0, 0, + 0, 10, 0, 0, 0, 54, 0, 0, + 5, 130, 0, 16, 0, 1, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 128, + 63, 56, 0, 0, 7, 242, 0, 16, + 0, 0, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 70, 14, 16, + 0, 1, 0, 0, 0, 54, 0, 0, + 5, 242, 32, 16, 0, 0, 0, 0, + 0, 70, 14, 16, 0, 0, 0, 0, + 0, 54, 0, 0, 5, 242, 32, 16, + 0, 1, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 54, 0, 0, + 5, 242, 32, 16, 0, 2, 0, 0, + 0, 70, 14, 16, 0, 0, 0, 0, + 0, 54, 0, 0, 5, 242, 32, 16, + 0, 3, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 62, 0, 0, + 1, 83, 84, 65, 84, 116, 0, 0, + 0, 75, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 8, 0, 0, + 0, 47, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 82, 68, 69, + 70, 224, 3, 0, 0, 1, 0, 0, + 0, 176, 0, 0, 0, 3, 0, 0, + 0, 28, 0, 0, 0, 0, 4, 255, +255, 0, 65, 0, 0, 172, 3, 0, + 0, 124, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 1, 0, 0, + 0, 145, 0, 0, 0, 2, 0, 0, + 0, 5, 0, 0, 0, 4, 0, 0, + 0, 255, 255, 255, 255, 0, 0, 0, + 0, 1, 0, 0, 0, 13, 0, 0, + 0, 166, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 115, 97, 109, 112, 108, 101, 114, + 95, 95, 67, 67, 95, 84, 101, 120, +116, 117, 114, 101, 48, 0, 116, 101, +120, 116, 117, 114, 101, 95, 95, 67, + 67, 95, 84, 101, 120, 116, 117, 114, +101, 48, 0, 36, 71, 108, 111, 98, + 97, 108, 115, 0, 171, 166, 0, 0, + 0, 11, 0, 0, 0, 200, 0, 0, + 0, 176, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 208, 1, 0, + 0, 0, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 236, 1, 0, + 0, 0, 0, 0, 0, 252, 1, 0, + 0, 16, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 20, 2, 0, + 0, 0, 0, 0, 0, 36, 2, 0, + 0, 32, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 64, 2, 0, + 0, 0, 0, 0, 0, 80, 2, 0, + 0, 48, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 108, 2, 0, + 0, 0, 0, 0, 0, 124, 2, 0, + 0, 64, 0, 0, 0, 4, 0, 0, + 0, 2, 0, 0, 0, 156, 2, 0, + 0, 0, 0, 0, 0, 172, 2, 0, + 0, 80, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 196, 2, 0, + 0, 0, 0, 0, 0, 212, 2, 0, + 0, 96, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 240, 2, 0, + 0, 0, 0, 0, 0, 0, 3, 0, + 0, 112, 0, 0, 0, 4, 0, 0, + 0, 2, 0, 0, 0, 32, 3, 0, + 0, 0, 0, 0, 0, 48, 3, 0, + 0, 128, 0, 0, 0, 4, 0, 0, + 0, 2, 0, 0, 0, 80, 3, 0, + 0, 0, 0, 0, 0, 96, 3, 0, + 0, 144, 0, 0, 0, 4, 0, 0, + 0, 2, 0, 0, 0, 128, 3, 0, + 0, 0, 0, 0, 0, 144, 3, 0, + 0, 160, 0, 0, 0, 16, 0, 0, + 0, 2, 0, 0, 0, 156, 3, 0, + 0, 0, 0, 0, 0, 95, 117, 95, + 65, 109, 98, 105, 101, 110, 116, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 67, 111, 108, 111, 114, 0, +171, 1, 0, 3, 0, 1, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 95, 117, 95, 68, 105, 114, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 67, 111, 108, 111, 114, 0, +171, 1, 0, 3, 0, 1, 0, 3, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 95, 117, 95, 68, 105, 114, 76, +105, 103, 104, 116, 83, 111, 117, 114, + 99, 101, 68, 105, 114, 101, 99, 116, +105, 111, 110, 0, 171, 1, 0, 3, + 0, 1, 0, 3, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 95, 117, 95, + 80, 111, 105, 110, 116, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 67, 111, 108, 111, 114, 0, 171, 171, +171, 1, 0, 3, 0, 1, 0, 3, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 95, 117, 95, 80, 111, 105, 110, +116, 76, 105, 103, 104, 116, 83, 111, +117, 114, 99, 101, 82, 97, 110, 103, +101, 73, 110, 118, 101, 114, 115, 101, + 0, 0, 0, 3, 0, 1, 0, 1, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 95, 117, 95, 83, 112, 111, 116, + 76, 105, 103, 104, 116, 83, 111, 117, +114, 99, 101, 67, 111, 108, 111, 114, + 0, 1, 0, 3, 0, 1, 0, 3, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 95, 117, 95, 83, 112, 111, 116, + 76, 105, 103, 104, 116, 83, 111, 117, +114, 99, 101, 68, 105, 114, 101, 99, +116, 105, 111, 110, 0, 1, 0, 3, + 0, 1, 0, 3, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 95, 117, 95, + 83, 112, 111, 116, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 73, +110, 110, 101, 114, 65, 110, 103, 108, +101, 67, 111, 115, 0, 0, 0, 3, + 0, 1, 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 95, 117, 95, + 83, 112, 111, 116, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 79, +117, 116, 101, 114, 65, 110, 103, 108, +101, 67, 111, 115, 0, 0, 0, 3, + 0, 1, 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 95, 117, 95, + 83, 112, 111, 116, 76, 105, 103, 104, +116, 83, 111, 117, 114, 99, 101, 82, + 97, 110, 103, 101, 73, 110, 118, 101, +114, 115, 101, 0, 171, 0, 0, 3, + 0, 1, 0, 1, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 95, 117, 95, + 99, 111, 108, 111, 114, 0, 171, 171, +171, 1, 0, 3, 0, 1, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 77, 105, 99, 114, 111, 115, 111, +102, 116, 32, 40, 82, 41, 32, 72, + 76, 83, 76, 32, 83, 104, 97, 100, +101, 114, 32, 67, 111, 109, 112, 105, +108, 101, 114, 32, 54, 46, 51, 46, + 57, 54, 48, 48, 46, 49, 54, 51, + 56, 52, 0, 171, 171, 73, 83, 71, + 78, 116, 0, 0, 0, 4, 0, 0, + 0, 8, 0, 0, 0, 104, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 7, 7, 0, 0, 104, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 1, 0, 0, + 0, 7, 7, 0, 0, 104, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 2, 0, 0, + 0, 7, 7, 0, 0, 104, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 3, 0, 0, + 0, 3, 3, 0, 0, 84, 69, 88, + 67, 79, 79, 82, 68, 0, 171, 171, +171, 79, 83, 71, 78, 116, 0, 0, + 0, 4, 0, 0, 0, 8, 0, 0, + 0, 104, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 15, 0, 0, + 0, 104, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 1, 0, 0, 0, 15, 0, 0, + 0, 104, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 2, 0, 0, 0, 15, 0, 0, + 0, 104, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 3, 0, 0, 0, 15, 0, 0, + 0, 83, 86, 95, 84, 97, 114, 103, +101, 116, 0, 171, 171, 68, 88, 66, + 67, 81, 182, 195, 84, 24, 43, 87, +158, 66, 2, 136, 175, 232, 16, 88, +248, 1, 0, 0, 0, 188, 19, 0, + 0, 6, 0, 0, 0, 56, 0, 0, + 0, 120, 6, 0, 0, 20, 16, 0, + 0, 144, 16, 0, 0, 136, 18, 0, + 0, 28, 19, 0, 0, 65, 111, 110, + 57, 56, 6, 0, 0, 56, 6, 0, + 0, 0, 2, 254, 255, 4, 6, 0, + 0, 52, 0, 0, 0, 1, 0, 36, + 0, 0, 0, 48, 0, 0, 0, 48, + 0, 0, 0, 36, 0, 1, 0, 48, + 0, 0, 0, 0, 0, 193, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, + 0, 1, 2, 254, 255, 81, 0, 0, + 5, 194, 0, 15, 160, 0, 0, 64, + 64, 0, 0, 0, 0, 0, 0, 128, + 63, 0, 0, 0, 0, 81, 0, 0, + 5, 0, 0, 15, 160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 125, 67, 81, 0, 0, + 5, 195, 0, 15, 160, 0, 0, 0, + 63, 0, 0, 128, 63, 0, 0, 128, +191, 0, 0, 0, 0, 48, 0, 0, + 5, 0, 0, 15, 240, 253, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 0, 0, + 2, 5, 0, 0, 128, 0, 0, 15, +144, 31, 0, 0, 2, 5, 0, 1, +128, 1, 0, 15, 144, 31, 0, 0, + 2, 5, 0, 2, 128, 2, 0, 15, +144, 31, 0, 0, 2, 5, 0, 3, +128, 3, 0, 15, 144, 31, 0, 0, + 2, 5, 0, 4, 128, 4, 0, 15, +144, 19, 0, 0, 2, 0, 0, 1, +128, 0, 0, 0, 144, 2, 0, 0, + 3, 0, 0, 2, 128, 0, 0, 0, +129, 0, 0, 0, 144, 12, 0, 0, + 3, 0, 0, 4, 128, 0, 0, 0, +144, 0, 0, 0, 145, 12, 0, 0, + 3, 0, 0, 1, 128, 0, 0, 0, +129, 0, 0, 0, 128, 4, 0, 0, + 4, 0, 0, 1, 128, 0, 0, 170, +128, 0, 0, 0, 128, 0, 0, 85, +128, 5, 0, 0, 3, 0, 0, 1, +128, 0, 0, 0, 128, 194, 0, 0, +160, 46, 0, 0, 2, 0, 0, 1, +176, 0, 0, 0, 128, 5, 0, 0, + 4, 0, 0, 15, 128, 1, 0, 0, +144, 13, 32, 228, 160, 0, 0, 0, +176, 5, 0, 0, 4, 1, 0, 15, +128, 1, 0, 0, 144, 14, 32, 228, +160, 0, 0, 0, 176, 5, 0, 0, + 4, 2, 0, 15, 128, 1, 0, 0, +144, 15, 32, 228, 160, 0, 0, 0, +176, 41, 0, 4, 2, 194, 0, 85, +160, 1, 0, 85, 144, 19, 0, 0, + 2, 3, 0, 1, 128, 0, 0, 85, +144, 2, 0, 0, 3, 3, 0, 2, +128, 3, 0, 0, 129, 0, 0, 85, +144, 12, 0, 0, 3, 3, 0, 4, +128, 0, 0, 85, 144, 0, 0, 85, +145, 12, 0, 0, 3, 3, 0, 1, +128, 3, 0, 0, 129, 3, 0, 0, +128, 4, 0, 0, 4, 3, 0, 1, +128, 3, 0, 170, 128, 3, 0, 0, +128, 3, 0, 85, 128, 5, 0, 0, + 3, 3, 0, 1, 128, 3, 0, 0, +128, 194, 0, 0, 160, 46, 0, 0, + 2, 0, 0, 1, 176, 3, 0, 0, +128, 4, 0, 0, 5, 0, 0, 15, +128, 13, 32, 228, 160, 0, 0, 0, +176, 1, 0, 85, 144, 0, 0, 228, +128, 4, 0, 0, 5, 1, 0, 15, +128, 14, 32, 228, 160, 0, 0, 0, +176, 1, 0, 85, 144, 1, 0, 228, +128, 4, 0, 0, 5, 2, 0, 15, +128, 15, 32, 228, 160, 0, 0, 0, +176, 1, 0, 85, 144, 2, 0, 228, +128, 42, 0, 0, 0, 43, 0, 0, + 0, 41, 0, 4, 2, 194, 0, 85, +160, 1, 0, 170, 144, 19, 0, 0, + 2, 3, 0, 1, 128, 0, 0, 170, +144, 2, 0, 0, 3, 3, 0, 2, +128, 3, 0, 0, 129, 0, 0, 170, +144, 12, 0, 0, 3, 3, 0, 4, +128, 0, 0, 170, 144, 0, 0, 170, +145, 12, 0, 0, 3, 3, 0, 1, +128, 3, 0, 0, 129, 3, 0, 0, +128, 4, 0, 0, 4, 3, 0, 1, +128, 3, 0, 170, 128, 3, 0, 0, +128, 3, 0, 85, 128, 5, 0, 0, + 3, 3, 0, 1, 128, 3, 0, 0, +128, 194, 0, 0, 160, 46, 0, 0, + 2, 0, 0, 1, 176, 3, 0, 0, +128, 4, 0, 0, 5, 0, 0, 15, +128, 13, 32, 228, 160, 0, 0, 0, +176, 1, 0, 170, 144, 0, 0, 228, +128, 4, 0, 0, 5, 1, 0, 15, +128, 14, 32, 228, 160, 0, 0, 0, +176, 1, 0, 170, 144, 1, 0, 228, +128, 4, 0, 0, 5, 2, 0, 15, +128, 15, 32, 228, 160, 0, 0, 0, +176, 1, 0, 170, 144, 2, 0, 228, +128, 42, 0, 0, 0, 43, 0, 0, + 0, 41, 0, 4, 2, 194, 0, 85, +160, 1, 0, 255, 144, 19, 0, 0, + 2, 3, 0, 1, 128, 0, 0, 255, +144, 2, 0, 0, 3, 3, 0, 2, +128, 3, 0, 0, 129, 0, 0, 255, +144, 12, 0, 0, 3, 3, 0, 4, +128, 0, 0, 255, 144, 0, 0, 255, +145, 12, 0, 0, 3, 3, 0, 1, +128, 3, 0, 0, 129, 3, 0, 0, +128, 4, 0, 0, 4, 3, 0, 1, +128, 3, 0, 170, 128, 3, 0, 0, +128, 3, 0, 85, 128, 5, 0, 0, + 3, 3, 0, 1, 128, 3, 0, 0, +128, 194, 0, 0, 160, 46, 0, 0, + 2, 0, 0, 1, 176, 3, 0, 0, +128, 4, 0, 0, 5, 0, 0, 15, +128, 13, 32, 228, 160, 0, 0, 0, +176, 1, 0, 255, 144, 0, 0, 228, +128, 4, 0, 0, 5, 1, 0, 15, +128, 14, 32, 228, 160, 0, 0, 0, +176, 1, 0, 255, 144, 1, 0, 228, +128, 4, 0, 0, 5, 2, 0, 15, +128, 15, 32, 228, 160, 0, 0, 0, +176, 1, 0, 255, 144, 2, 0, 228, +128, 42, 0, 0, 0, 43, 0, 0, + 0, 4, 0, 0, 4, 3, 0, 15, +128, 3, 0, 36, 144, 194, 0, 106, +160, 194, 0, 149, 160, 9, 0, 0, + 3, 4, 0, 1, 128, 3, 0, 228, +128, 0, 0, 228, 128, 9, 0, 0, + 3, 4, 0, 2, 128, 3, 0, 228, +128, 1, 0, 228, 128, 9, 0, 0, + 3, 4, 0, 4, 128, 3, 0, 228, +128, 2, 0, 228, 128, 8, 0, 0, + 3, 0, 0, 1, 128, 2, 0, 228, +144, 0, 0, 228, 128, 8, 0, 0, + 3, 0, 0, 2, 128, 2, 0, 228, +144, 1, 0, 228, 128, 8, 0, 0, + 3, 0, 0, 4, 128, 2, 0, 228, +144, 2, 0, 228, 128, 1, 0, 0, + 2, 4, 0, 8, 128, 194, 0, 170, +160, 9, 0, 0, 3, 1, 0, 1, +128, 0, 0, 228, 160, 4, 0, 228, +128, 9, 0, 0, 3, 1, 0, 2, +128, 1, 0, 228, 160, 4, 0, 228, +128, 9, 0, 0, 3, 1, 0, 4, +128, 2, 0, 228, 160, 4, 0, 228, +128, 9, 0, 0, 3, 1, 0, 8, +128, 3, 0, 228, 160, 4, 0, 228, +128, 2, 0, 0, 3, 2, 0, 7, +128, 1, 0, 228, 129, 11, 0, 228, +160, 1, 0, 0, 2, 3, 0, 7, +128, 194, 0, 85, 160, 1, 0, 0, + 2, 0, 0, 8, 128, 194, 0, 85, +160, 38, 0, 0, 1, 0, 0, 228, +240, 45, 0, 3, 2, 0, 0, 255, +128, 194, 0, 170, 160, 2, 0, 0, + 3, 0, 0, 8, 128, 0, 0, 255, +128, 194, 0, 170, 160, 1, 0, 0, + 2, 3, 0, 7, 128, 2, 0, 228, +128, 39, 0, 0, 0, 1, 0, 0, + 2, 1, 0, 7, 224, 3, 0, 228, +128, 2, 0, 0, 3, 2, 0, 7, +128, 1, 0, 228, 129, 12, 0, 228, +160, 1, 0, 0, 2, 3, 0, 7, +128, 194, 0, 85, 160, 1, 0, 0, + 2, 0, 0, 8, 128, 194, 0, 85, +160, 38, 0, 0, 1, 0, 0, 228, +240, 45, 0, 3, 2, 0, 0, 255, +128, 194, 0, 170, 160, 2, 0, 0, + 3, 0, 0, 8, 128, 0, 0, 255, +128, 194, 0, 170, 160, 1, 0, 0, + 2, 3, 0, 7, 128, 2, 0, 228, +128, 39, 0, 0, 0, 1, 0, 0, + 2, 2, 0, 7, 224, 3, 0, 228, +128, 8, 0, 0, 3, 0, 0, 1, +224, 4, 0, 228, 160, 0, 0, 228, +128, 8, 0, 0, 3, 0, 0, 2, +224, 5, 0, 228, 160, 0, 0, 228, +128, 8, 0, 0, 3, 0, 0, 4, +224, 6, 0, 228, 160, 0, 0, 228, +128, 9, 0, 0, 3, 0, 0, 1, +128, 7, 0, 228, 160, 1, 0, 228, +128, 9, 0, 0, 3, 0, 0, 4, +128, 8, 0, 228, 160, 1, 0, 228, +128, 9, 0, 0, 3, 0, 0, 8, +128, 9, 0, 228, 160, 1, 0, 228, +128, 9, 0, 0, 3, 1, 0, 1, +128, 10, 0, 228, 160, 1, 0, 228, +128, 1, 0, 0, 2, 0, 0, 2, +128, 0, 0, 170, 129, 2, 0, 0, + 3, 0, 0, 4, 128, 0, 0, 255, +128, 1, 0, 0, 128, 5, 0, 0, + 3, 0, 0, 4, 192, 0, 0, 170, +128, 195, 0, 0, 160, 4, 0, 0, + 4, 0, 0, 3, 192, 1, 0, 0, +128, 193, 0, 228, 160, 0, 0, 228, +128, 4, 0, 0, 4, 3, 0, 3, +224, 4, 0, 228, 144, 195, 0, 233, +160, 195, 0, 231, 160, 1, 0, 0, + 2, 0, 0, 8, 192, 1, 0, 0, +128, 255, 255, 0, 0, 83, 72, 68, + 82, 148, 9, 0, 0, 64, 0, 1, + 0, 101, 2, 0, 0, 89, 8, 0, + 4, 70, 142, 32, 0, 0, 0, 0, + 0, 193, 0, 0, 0, 95, 0, 0, + 3, 242, 16, 16, 0, 0, 0, 0, + 0, 95, 0, 0, 3, 242, 16, 16, + 0, 1, 0, 0, 0, 95, 0, 0, + 3, 114, 16, 16, 0, 2, 0, 0, + 0, 95, 0, 0, 3, 114, 16, 16, + 0, 3, 0, 0, 0, 95, 0, 0, + 3, 50, 16, 16, 0, 4, 0, 0, + 0, 101, 0, 0, 3, 114, 32, 16, + 0, 0, 0, 0, 0, 101, 0, 0, + 3, 114, 32, 16, 0, 1, 0, 0, + 0, 101, 0, 0, 3, 114, 32, 16, + 0, 2, 0, 0, 0, 101, 0, 0, + 3, 50, 32, 16, 0, 3, 0, 0, + 0, 103, 0, 0, 4, 242, 32, 16, + 0, 4, 0, 0, 0, 1, 0, 0, + 0, 104, 0, 0, 2, 5, 0, 0, + 0, 105, 0, 0, 4, 0, 0, 0, + 0, 1, 0, 0, 0, 4, 0, 0, + 0, 105, 0, 0, 4, 1, 0, 0, + 0, 1, 0, 0, 0, 4, 0, 0, + 0, 54, 0, 0, 9, 114, 48, 32, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 64, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, + 9, 114, 48, 32, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 2, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 5, 18, 0, 16, + 0, 0, 0, 0, 0, 10, 16, 16, + 0, 0, 0, 0, 0, 38, 0, 0, + 8, 0, 208, 0, 0, 34, 0, 16, + 0, 0, 0, 0, 0, 10, 0, 16, + 0, 0, 0, 0, 0, 1, 64, 0, + 0, 3, 0, 0, 0, 56, 0, 0, + 10, 242, 0, 16, 0, 1, 0, 0, + 0, 6, 16, 16, 0, 1, 0, 0, + 0, 70, 142, 32, 6, 0, 0, 0, + 0, 13, 0, 0, 0, 26, 0, 16, + 0, 0, 0, 0, 0, 35, 0, 0, + 15, 50, 0, 16, 0, 0, 0, 0, + 0, 6, 0, 16, 0, 0, 0, 0, + 0, 2, 64, 0, 0, 3, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 64, 0, + 0, 1, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 56, 0, 0, 10, 242, 0, 16, + 0, 2, 0, 0, 0, 6, 16, 16, + 0, 1, 0, 0, 0, 70, 142, 32, + 6, 0, 0, 0, 0, 13, 0, 0, + 0, 10, 0, 16, 0, 0, 0, 0, + 0, 56, 0, 0, 10, 242, 0, 16, + 0, 0, 0, 0, 0, 6, 16, 16, + 0, 1, 0, 0, 0, 70, 142, 32, + 6, 0, 0, 0, 0, 13, 0, 0, + 0, 26, 0, 16, 0, 0, 0, 0, + 0, 49, 0, 0, 10, 114, 0, 16, + 0, 3, 0, 0, 0, 2, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 150, 23, 16, 0, 1, 0, 0, + 0, 31, 0, 4, 3, 10, 0, 16, + 0, 3, 0, 0, 0, 27, 0, 0, + 5, 18, 0, 16, 0, 3, 0, 0, + 0, 26, 16, 16, 0, 0, 0, 0, + 0, 38, 0, 0, 8, 0, 208, 0, + 0, 130, 0, 16, 0, 3, 0, 0, + 0, 10, 0, 16, 0, 3, 0, 0, + 0, 1, 64, 0, 0, 3, 0, 0, + 0, 50, 0, 0, 12, 242, 0, 16, + 0, 1, 0, 0, 0, 70, 142, 32, + 6, 0, 0, 0, 0, 13, 0, 0, + 0, 58, 0, 16, 0, 3, 0, 0, + 0, 86, 21, 16, 0, 1, 0, 0, + 0, 70, 14, 16, 0, 1, 0, 0, + 0, 35, 0, 0, 15, 146, 0, 16, + 0, 3, 0, 0, 0, 6, 0, 16, + 0, 3, 0, 0, 0, 2, 64, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 2, 64, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 50, 0, 0, + 12, 242, 0, 16, 0, 2, 0, 0, + 0, 70, 142, 32, 6, 0, 0, 0, + 0, 13, 0, 0, 0, 10, 0, 16, + 0, 3, 0, 0, 0, 86, 21, 16, + 0, 1, 0, 0, 0, 70, 14, 16, + 0, 2, 0, 0, 0, 50, 0, 0, + 12, 242, 0, 16, 0, 0, 0, 0, + 0, 70, 142, 32, 6, 0, 0, 0, + 0, 13, 0, 0, 0, 58, 0, 16, + 0, 3, 0, 0, 0, 86, 21, 16, + 0, 1, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 21, 0, 0, + 1, 31, 0, 4, 3, 26, 0, 16, + 0, 3, 0, 0, 0, 27, 0, 0, + 5, 18, 0, 16, 0, 3, 0, 0, + 0, 42, 16, 16, 0, 0, 0, 0, + 0, 38, 0, 0, 8, 0, 208, 0, + 0, 34, 0, 16, 0, 3, 0, 0, + 0, 10, 0, 16, 0, 3, 0, 0, + 0, 1, 64, 0, 0, 3, 0, 0, + 0, 50, 0, 0, 12, 242, 0, 16, + 0, 1, 0, 0, 0, 70, 142, 32, + 6, 0, 0, 0, 0, 13, 0, 0, + 0, 26, 0, 16, 0, 3, 0, 0, + 0, 166, 26, 16, 0, 1, 0, 0, + 0, 70, 14, 16, 0, 1, 0, 0, + 0, 35, 0, 0, 15, 50, 0, 16, + 0, 3, 0, 0, 0, 6, 0, 16, + 0, 3, 0, 0, 0, 2, 64, 0, + 0, 3, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 64, 0, 0, 1, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 50, 0, 0, + 12, 242, 0, 16, 0, 2, 0, 0, + 0, 70, 142, 32, 6, 0, 0, 0, + 0, 13, 0, 0, 0, 10, 0, 16, + 0, 3, 0, 0, 0, 166, 26, 16, + 0, 1, 0, 0, 0, 70, 14, 16, + 0, 2, 0, 0, 0, 50, 0, 0, + 12, 242, 0, 16, 0, 0, 0, 0, + 0, 70, 142, 32, 6, 0, 0, 0, + 0, 13, 0, 0, 0, 26, 0, 16, + 0, 3, 0, 0, 0, 166, 26, 16, + 0, 1, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 21, 0, 0, + 1, 31, 0, 4, 3, 42, 0, 16, + 0, 3, 0, 0, 0, 27, 0, 0, + 5, 18, 0, 16, 0, 3, 0, 0, + 0, 58, 16, 16, 0, 0, 0, 0, + 0, 38, 0, 0, 8, 0, 208, 0, + 0, 34, 0, 16, 0, 3, 0, 0, + 0, 10, 0, 16, 0, 3, 0, 0, + 0, 1, 64, 0, 0, 3, 0, 0, + 0, 50, 0, 0, 12, 242, 0, 16, + 0, 1, 0, 0, 0, 70, 142, 32, + 6, 0, 0, 0, 0, 13, 0, 0, + 0, 26, 0, 16, 0, 3, 0, 0, + 0, 246, 31, 16, 0, 1, 0, 0, + 0, 70, 14, 16, 0, 1, 0, 0, + 0, 35, 0, 0, 15, 50, 0, 16, + 0, 3, 0, 0, 0, 6, 0, 16, + 0, 3, 0, 0, 0, 2, 64, 0, + 0, 3, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 64, 0, 0, 1, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 50, 0, 0, + 12, 242, 0, 16, 0, 2, 0, 0, + 0, 70, 142, 32, 6, 0, 0, 0, + 0, 13, 0, 0, 0, 10, 0, 16, + 0, 3, 0, 0, 0, 246, 31, 16, + 0, 1, 0, 0, 0, 70, 14, 16, + 0, 2, 0, 0, 0, 50, 0, 0, + 12, 242, 0, 16, 0, 0, 0, 0, + 0, 70, 142, 32, 6, 0, 0, 0, + 0, 13, 0, 0, 0, 26, 0, 16, + 0, 3, 0, 0, 0, 246, 31, 16, + 0, 1, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 21, 0, 0, + 1, 54, 0, 0, 5, 114, 0, 16, + 0, 3, 0, 0, 0, 70, 18, 16, + 0, 3, 0, 0, 0, 54, 0, 0, + 5, 130, 0, 16, 0, 3, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 128, + 63, 17, 0, 0, 7, 18, 0, 16, + 0, 4, 0, 0, 0, 70, 14, 16, + 0, 3, 0, 0, 0, 70, 14, 16, + 0, 1, 0, 0, 0, 17, 0, 0, + 7, 34, 0, 16, 0, 4, 0, 0, + 0, 70, 14, 16, 0, 3, 0, 0, + 0, 70, 14, 16, 0, 2, 0, 0, + 0, 17, 0, 0, 7, 66, 0, 16, + 0, 4, 0, 0, 0, 70, 14, 16, + 0, 3, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 16, 0, 0, + 7, 18, 0, 16, 0, 1, 0, 0, + 0, 70, 18, 16, 0, 2, 0, 0, + 0, 70, 2, 16, 0, 1, 0, 0, + 0, 16, 0, 0, 7, 34, 0, 16, + 0, 1, 0, 0, 0, 70, 18, 16, + 0, 2, 0, 0, 0, 70, 2, 16, + 0, 2, 0, 0, 0, 16, 0, 0, + 7, 66, 0, 16, 0, 1, 0, 0, + 0, 70, 18, 16, 0, 2, 0, 0, + 0, 70, 2, 16, 0, 0, 0, 0, + 0, 54, 0, 0, 5, 130, 0, 16, + 0, 4, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 128, 63, 17, 0, 0, + 8, 18, 0, 16, 0, 0, 0, 0, + 0, 70, 142, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 70, 14, 16, + 0, 4, 0, 0, 0, 17, 0, 0, + 8, 34, 0, 16, 0, 0, 0, 0, + 0, 70, 142, 32, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 70, 14, 16, + 0, 4, 0, 0, 0, 17, 0, 0, + 8, 66, 0, 16, 0, 0, 0, 0, + 0, 70, 142, 32, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 70, 14, 16, + 0, 4, 0, 0, 0, 17, 0, 0, + 8, 130, 0, 16, 0, 0, 0, 0, + 0, 70, 142, 32, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 70, 14, 16, + 0, 4, 0, 0, 0, 0, 0, 0, + 9, 114, 0, 16, 0, 2, 0, 0, + 0, 70, 2, 16, 128, 65, 0, 0, + 0, 0, 0, 0, 0, 70, 130, 32, + 0, 0, 0, 0, 0, 11, 0, 0, + 0, 54, 0, 0, 5, 130, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 0, 48, 0, 0, + 1, 33, 0, 0, 7, 130, 0, 16, + 0, 2, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 1, 0, 0, 0, 3, 0, 4, + 3, 58, 0, 16, 0, 2, 0, 0, + 0, 54, 0, 0, 6, 114, 48, 32, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 70, 2, 16, 0, 2, 0, 0, + 0, 30, 0, 0, 7, 130, 0, 16, + 0, 1, 0, 0, 0, 58, 0, 16, + 0, 1, 0, 0, 0, 1, 64, 0, + 0, 1, 0, 0, 0, 22, 0, 0, + 1, 0, 0, 0, 9, 114, 0, 16, + 0, 2, 0, 0, 0, 70, 2, 16, +128, 65, 0, 0, 0, 0, 0, 0, + 0, 70, 130, 32, 0, 0, 0, 0, + 0, 12, 0, 0, 0, 54, 0, 0, + 5, 130, 0, 16, 0, 1, 0, 0, + 0, 1, 64, 0, 0, 0, 0, 0, + 0, 48, 0, 0, 1, 33, 0, 0, + 7, 130, 0, 16, 0, 2, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 1, 64, 0, 0, 1, 0, 0, + 0, 3, 0, 4, 3, 58, 0, 16, + 0, 2, 0, 0, 0, 54, 0, 0, + 6, 114, 48, 32, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 70, 2, 16, + 0, 2, 0, 0, 0, 30, 0, 0, + 7, 130, 0, 16, 0, 1, 0, 0, + 0, 58, 0, 16, 0, 1, 0, 0, + 0, 1, 64, 0, 0, 1, 0, 0, + 0, 22, 0, 0, 1, 16, 0, 0, + 8, 18, 32, 16, 0, 0, 0, 0, + 0, 70, 130, 32, 0, 0, 0, 0, + 0, 4, 0, 0, 0, 70, 2, 16, + 0, 1, 0, 0, 0, 16, 0, 0, + 8, 34, 32, 16, 0, 0, 0, 0, + 0, 70, 130, 32, 0, 0, 0, 0, + 0, 5, 0, 0, 0, 70, 2, 16, + 0, 1, 0, 0, 0, 16, 0, 0, + 8, 66, 32, 16, 0, 0, 0, 0, + 0, 70, 130, 32, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 70, 2, 16, + 0, 1, 0, 0, 0, 17, 0, 0, + 8, 18, 32, 16, 0, 4, 0, 0, + 0, 70, 142, 32, 0, 0, 0, 0, + 0, 7, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 17, 0, 0, + 8, 18, 0, 16, 0, 1, 0, 0, + 0, 70, 142, 32, 0, 0, 0, 0, + 0, 8, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 17, 0, 0, + 8, 34, 0, 16, 0, 1, 0, 0, + 0, 70, 142, 32, 0, 0, 0, 0, + 0, 9, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 17, 0, 0, + 8, 18, 0, 16, 0, 0, 0, 0, + 0, 70, 142, 32, 0, 0, 0, 0, + 0, 10, 0, 0, 0, 70, 14, 16, + 0, 0, 0, 0, 0, 54, 0, 0, + 6, 34, 32, 16, 0, 4, 0, 0, + 0, 10, 0, 16, 128, 65, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, + 7, 34, 0, 16, 0, 0, 0, 0, + 0, 10, 0, 16, 0, 0, 0, 0, + 0, 26, 0, 16, 0, 1, 0, 0, + 0, 56, 0, 0, 7, 66, 32, 16, + 0, 4, 0, 0, 0, 26, 0, 16, + 0, 0, 0, 0, 0, 1, 64, 0, + 0, 0, 0, 0, 63, 54, 0, 0, + 6, 114, 32, 16, 0, 1, 0, 0, + 0, 70, 50, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, + 6, 114, 32, 16, 0, 2, 0, 0, + 0, 70, 50, 32, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 0, + 5, 130, 32, 16, 0, 4, 0, 0, + 0, 10, 0, 16, 0, 0, 0, 0, + 0, 50, 0, 0, 15, 50, 32, 16, + 0, 3, 0, 0, 0, 70, 16, 16, + 0, 4, 0, 0, 0, 2, 64, 0, + 0, 0, 0, 128, 63, 0, 0, 128, +191, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 64, 0, 0, 0, 0, 0, + 0, 0, 0, 128, 63, 0, 0, 0, + 0, 0, 0, 0, 0, 62, 0, 0, + 1, 83, 84, 65, 84, 116, 0, 0, + 0, 77, 0, 0, 0, 5, 0, 0, + 0, 0, 0, 0, 0, 10, 0, 0, + 0, 36, 0, 0, 0, 12, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 5, 0, 0, 0, 0, 0, 0, + 0, 2, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 6, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 82, 68, 69, + 70, 240, 1, 0, 0, 1, 0, 0, + 0, 72, 0, 0, 0, 1, 0, 0, + 0, 28, 0, 0, 0, 0, 4, 254, +255, 0, 65, 0, 0, 188, 1, 0, + 0, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 36, 71, 108, 111, 98, 97, 108, +115, 0, 171, 171, 171, 60, 0, 0, + 0, 6, 0, 0, 0, 96, 0, 0, + 0, 16, 12, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 240, 0, 0, + 0, 0, 0, 0, 0, 64, 0, 0, + 0, 2, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 16, 1, 0, + 0, 64, 0, 0, 0, 44, 0, 0, + 0, 2, 0, 0, 0, 36, 1, 0, + 0, 0, 0, 0, 0, 52, 1, 0, + 0, 112, 0, 0, 0, 64, 0, 0, + 0, 2, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 64, 1, 0, + 0, 176, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 92, 1, 0, + 0, 0, 0, 0, 0, 108, 1, 0, + 0, 192, 0, 0, 0, 12, 0, 0, + 0, 2, 0, 0, 0, 136, 1, 0, + 0, 0, 0, 0, 0, 152, 1, 0, + 0, 208, 0, 0, 0, 64, 11, 0, + 0, 2, 0, 0, 0, 172, 1, 0, + 0, 0, 0, 0, 0, 95, 67, 67, + 95, 77, 86, 77, 97, 116, 114, 105, +120, 0, 171, 171, 171, 3, 0, 3, + 0, 4, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 95, 67, 67, + 95, 78, 111, 114, 109, 97, 108, 77, + 97, 116, 114, 105, 120, 0, 171, 171, +171, 3, 0, 3, 0, 3, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 95, 67, 67, 95, 80, 77, 97, +116, 114, 105, 120, 0, 95, 117, 95, + 80, 111, 105, 110, 116, 76, 105, 103, +104, 116, 83, 111, 117, 114, 99, 101, + 80, 111, 115, 105, 116, 105, 111, 110, + 0, 1, 0, 3, 0, 1, 0, 3, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 95, 117, 95, 83, 112, 111, 116, + 76, 105, 103, 104, 116, 83, 111, 117, +114, 99, 101, 80, 111, 115, 105, 116, +105, 111, 110, 0, 171, 1, 0, 3, + 0, 1, 0, 3, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 95, 117, 95, +109, 97, 116, 114, 105, 120, 80, 97, +108, 101, 116, 116, 101, 0, 171, 171, +171, 1, 0, 3, 0, 1, 0, 4, + 0, 180, 0, 0, 0, 0, 0, 0, + 0, 77, 105, 99, 114, 111, 115, 111, +102, 116, 32, 40, 82, 41, 32, 72, + 76, 83, 76, 32, 83, 104, 97, 100, +101, 114, 32, 67, 111, 109, 112, 105, +108, 101, 114, 32, 54, 46, 51, 46, + 57, 54, 48, 48, 46, 49, 54, 51, + 56, 52, 0, 171, 171, 73, 83, 71, + 78, 140, 0, 0, 0, 5, 0, 0, + 0, 8, 0, 0, 0, 128, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 15, 15, 0, 0, 128, 0, 0, + 0, 1, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 1, 0, 0, + 0, 15, 15, 0, 0, 128, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 2, 0, 0, + 0, 7, 7, 0, 0, 128, 0, 0, + 0, 3, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 3, 0, 0, + 0, 7, 7, 0, 0, 128, 0, 0, + 0, 4, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 4, 0, 0, + 0, 3, 3, 0, 0, 84, 69, 88, + 67, 79, 79, 82, 68, 0, 171, 171, +171, 79, 83, 71, 78, 152, 0, 0, + 0, 5, 0, 0, 0, 8, 0, 0, + 0, 128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 7, 8, 0, + 0, 128, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 1, 0, 0, 0, 7, 8, 0, + 0, 128, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 2, 0, 0, 0, 7, 8, 0, + 0, 128, 0, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 3, 0, 0, + 0, 3, 0, 0, 0, 3, 12, 0, + 0, 137, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 0, 3, 0, 0, + 0, 4, 0, 0, 0, 15, 0, 0, + 0, 84, 69, 88, 67, 79, 79, 82, + 68, 0, 83, 86, 95, 80, 111, 115, +105, 116, 105, 111, 110, 0, 171, 171, +171, +}; + const unsigned char s_B5E27B4F3CF7236633255B28CBA530D6EE5CED86[] = { 166, 147, 0, 0, 142, 9, 2, 1, @@ -6094,7 +10328,7 @@ const unsigned char s_B5E27B4F3CF7236633255B28CBA530D6EE5CED86[] = { 111, 108, 111, 114, 0, 0, 0, 0, 2, 0, 0, 0, 240, 5, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, -194, 137, 0, 0, 0, 0, 0, 0, +107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 223, 173, 203, 80, 172, 13, 170, 215, 168, 128, 228, 5, @@ -6526,7 +10760,7 @@ const unsigned char s_E2C7CE1244DE9C76688EFA9463B2A130B6A08893[] = { 77, 97, 116, 114, 105, 120, 0, 0, 0, 0, 0, 0, 0, 0, 204, 2, 0, 0, 144, 4, 0, 0, 0, 0, - 0, 0, 194, 137, 0, 0, 0, 0, + 0, 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 127, 145, 81, 72, 216, 190, 16, 61, 245, 231, @@ -6856,8 +11090,8 @@ const unsigned char s_E2D56227712263272BD5218FEA117CD06180F81B[] = { 117, 95, 112, 111, 105, 110, 116, 83, 105, 122, 101, 0, 0, 0, 0, 2, 0, 0, 0, 204, 2, 0, 0, 208, - 4, 0, 0, 0, 0, 0, 0, 194, -137, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 107, +155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 127, 145, 81, 72, 216, 190, 16, 61, 245, 231, 235, 249, 125, @@ -7207,7 +11441,7 @@ const unsigned char s_F46558C274182079784898CF4968CF431593D5E2[] = { 116, 67, 111, 108, 111, 114, 0, 0, 0, 0, 3, 0, 0, 0, 108, 6, 0, 0, 4, 5, 0, 0, 0, 0, - 0, 0, 194, 137, 0, 0, 0, 0, + 0, 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 47, 220, 115, 183, 137, 174, 141, 96, 204, 60, @@ -7663,7 +11897,7 @@ const unsigned char s_F6BA4519AF2653A53D57FB5D5508F0D8617105D6[] = { 101, 120, 116, 117, 114, 101, 48, 0, 0, 0, 0, 1, 0, 0, 0, 156, 3, 0, 0, 144, 4, 0, 0, 0, - 0, 0, 0, 194, 137, 0, 0, 0, + 0, 0, 0, 107, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 88, 66, 67, 203, 117, 183, 110, 154, 52, 220, 70, 125, @@ -7929,7 +12163,7 @@ const unsigned char s_F6BA4519AF2653A53D57FB5D5508F0D8617105D6[] = { 105, 111, 110, 0, 171, 171, 171, }; -const int s_numPrograms = 18; -const int s_programLengths[] = {2990,2528,4102,3022,2996,3358,2982,3073,2559,3300,3350,10261,3025,3556,2502,2675,3746,2775}; -const unsigned char* s_programs[] = {s_133478C5A874C1E6F59B418CE6C7C39F1AE0F873,s_13E33F532157A58EC77EDE3B3112560A89D272B2,s_1A69A7CC77C7C8FC62799B0513816EA41FBF3BFE,s_53938AB67AD93ABA0DDB87F3C9889304284E011E,s_67837675F2BB48C0E926316F505FC1538228E0FA,s_78250E25D1929D4A842050738140787BE42541C6,s_7B67DD242152D35ACC079265FAD9D03DC98182DE,s_7CE5EE84ACB6110F7FA29152ECE3344CB6D6620D,s_7E1EEF397305D0BC2DCDBA4F2DAFBCBA1534E45C,s_847DBFDDA6EC09C57E4ED43012AE2FB5CAC7D8D5,s_92BE325B516F887D2C928EDE20ADF428DB01C038,s_976D0E98457C40DFC2F0FBD00E30607C9E4CFDAE,s_A2377A827972A5466DA8637681045D32DA8A817D,s_B5E27B4F3CF7236633255B28CBA530D6EE5CED86,s_E2C7CE1244DE9C76688EFA9463B2A130B6A08893,s_E2D56227712263272BD5218FEA117CD06180F81B,s_F46558C274182079784898CF4968CF431593D5E2,s_F6BA4519AF2653A53D57FB5D5508F0D8617105D6}; -const char* s_programKeys[] = {"133478C5A874C1E6F59B418CE6C7C39F1AE0F873","13E33F532157A58EC77EDE3B3112560A89D272B2","1A69A7CC77C7C8FC62799B0513816EA41FBF3BFE","53938AB67AD93ABA0DDB87F3C9889304284E011E","67837675F2BB48C0E926316F505FC1538228E0FA","78250E25D1929D4A842050738140787BE42541C6","7B67DD242152D35ACC079265FAD9D03DC98182DE","7CE5EE84ACB6110F7FA29152ECE3344CB6D6620D","7E1EEF397305D0BC2DCDBA4F2DAFBCBA1534E45C","847DBFDDA6EC09C57E4ED43012AE2FB5CAC7D8D5","92BE325B516F887D2C928EDE20ADF428DB01C038","976D0E98457C40DFC2F0FBD00E30607C9E4CFDAE","A2377A827972A5466DA8637681045D32DA8A817D","B5E27B4F3CF7236633255B28CBA530D6EE5CED86","E2C7CE1244DE9C76688EFA9463B2A130B6A08893","E2D56227712263272BD5218FEA117CD06180F81B","F46558C274182079784898CF4968CF431593D5E2","F6BA4519AF2653A53D57FB5D5508F0D8617105D6"}; +const int s_numPrograms = 21; +const int s_programLengths[] = {2990,2528,4102,8993,3022,2996,3358,2982,3073,2559,3300,3350,8475,10261,3025,16289,3556,2502,2675,3746,2775}; +const unsigned char* s_programs[] = {s_133478C5A874C1E6F59B418CE6C7C39F1AE0F873,s_13E33F532157A58EC77EDE3B3112560A89D272B2,s_1A69A7CC77C7C8FC62799B0513816EA41FBF3BFE,s_2CF9793879165058483EFB4AD6FA9746ECD7DD2A,s_53938AB67AD93ABA0DDB87F3C9889304284E011E,s_67837675F2BB48C0E926316F505FC1538228E0FA,s_78250E25D1929D4A842050738140787BE42541C6,s_7B67DD242152D35ACC079265FAD9D03DC98182DE,s_7CE5EE84ACB6110F7FA29152ECE3344CB6D6620D,s_7E1EEF397305D0BC2DCDBA4F2DAFBCBA1534E45C,s_847DBFDDA6EC09C57E4ED43012AE2FB5CAC7D8D5,s_92BE325B516F887D2C928EDE20ADF428DB01C038,s_93D31E1668075AE4941C53441D7A9D0DE8F76331,s_976D0E98457C40DFC2F0FBD00E30607C9E4CFDAE,s_A2377A827972A5466DA8637681045D32DA8A817D,s_A883DF8204EA77D28BC638CEAAB512DEE74FBB65,s_B5E27B4F3CF7236633255B28CBA530D6EE5CED86,s_E2C7CE1244DE9C76688EFA9463B2A130B6A08893,s_E2D56227712263272BD5218FEA117CD06180F81B,s_F46558C274182079784898CF4968CF431593D5E2,s_F6BA4519AF2653A53D57FB5D5508F0D8617105D6}; +const char* s_programKeys[] = {"133478C5A874C1E6F59B418CE6C7C39F1AE0F873","13E33F532157A58EC77EDE3B3112560A89D272B2","1A69A7CC77C7C8FC62799B0513816EA41FBF3BFE","2CF9793879165058483EFB4AD6FA9746ECD7DD2A","53938AB67AD93ABA0DDB87F3C9889304284E011E","67837675F2BB48C0E926316F505FC1538228E0FA","78250E25D1929D4A842050738140787BE42541C6","7B67DD242152D35ACC079265FAD9D03DC98182DE","7CE5EE84ACB6110F7FA29152ECE3344CB6D6620D","7E1EEF397305D0BC2DCDBA4F2DAFBCBA1534E45C","847DBFDDA6EC09C57E4ED43012AE2FB5CAC7D8D5","92BE325B516F887D2C928EDE20ADF428DB01C038","93D31E1668075AE4941C53441D7A9D0DE8F76331","976D0E98457C40DFC2F0FBD00E30607C9E4CFDAE","A2377A827972A5466DA8637681045D32DA8A817D","A883DF8204EA77D28BC638CEAAB512DEE74FBB65","B5E27B4F3CF7236633255B28CBA530D6EE5CED86","E2C7CE1244DE9C76688EFA9463B2A130B6A08893","E2D56227712263272BD5218FEA117CD06180F81B","F46558C274182079784898CF4968CF431593D5E2","F6BA4519AF2653A53D57FB5D5508F0D8617105D6"}; diff --git a/cocos/renderer/CCGLProgram.cpp b/cocos/renderer/CCGLProgram.cpp index e6a94386ef..e484aceea4 100644 --- a/cocos/renderer/CCGLProgram.cpp +++ b/cocos/renderer/CCGLProgram.cpp @@ -39,7 +39,7 @@ THE SOFTWARE. #include "deprecated/CCString.h" -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || defined(WP8_SHADER_COMPILER) #include "CCPrecompiledShaders.h" #endif @@ -100,10 +100,6 @@ const char* GLProgram::ATTRIBUTE_NAME_TEX_COORD = "a_texCoord"; const char* GLProgram::ATTRIBUTE_NAME_TEX_COORD1 = "a_texCoord1"; const char* GLProgram::ATTRIBUTE_NAME_TEX_COORD2 = "a_texCoord2"; const char* GLProgram::ATTRIBUTE_NAME_TEX_COORD3 = "a_texCoord3"; -const char* GLProgram::ATTRIBUTE_NAME_TEX_COORD4 = "a_texCoord4"; -const char* GLProgram::ATTRIBUTE_NAME_TEX_COORD5 = "a_texCoord5"; -const char* GLProgram::ATTRIBUTE_NAME_TEX_COORD6 = "a_texCoord6"; -const char* GLProgram::ATTRIBUTE_NAME_TEX_COORD7 = "a_texCoord7"; const char* GLProgram::ATTRIBUTE_NAME_NORMAL = "a_normal"; const char* GLProgram::ATTRIBUTE_NAME_BLEND_WEIGHT = "a_blendWeight"; const char* GLProgram::ATTRIBUTE_NAME_BLEND_INDEX = "a_blendIndex"; @@ -181,7 +177,7 @@ GLProgram::~GLProgram() bool GLProgram::initWithByteArrays(const GLchar* vShaderByteArray, const GLchar* fShaderByteArray) { -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) GLboolean hasCompiler = false; glGetBooleanv(GL_SHADER_COMPILER, &hasCompiler); _hasShaderCompiler = (hasCompiler == GL_TRUE); @@ -230,14 +226,14 @@ bool GLProgram::initWithByteArrays(const GLchar* vShaderByteArray, const GLchar* CHECK_GL_ERROR_DEBUG(); -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || defined(WP8_SHADER_COMPILER) _shaderId = CCPrecompiledShaders::getInstance()->addShaders(vShaderByteArray, fShaderByteArray); #endif return true; } -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) GLProgram* GLProgram::createWithPrecompiledProgramByteArray(const GLchar* vShaderByteArray, const GLchar* fShaderByteArray) { auto ret = new (std::nothrow) GLProgram(); @@ -294,10 +290,6 @@ void GLProgram::bindPredefinedVertexAttribs() {GLProgram::ATTRIBUTE_NAME_TEX_COORD1, GLProgram::VERTEX_ATTRIB_TEX_COORD1}, {GLProgram::ATTRIBUTE_NAME_TEX_COORD2, GLProgram::VERTEX_ATTRIB_TEX_COORD2}, {GLProgram::ATTRIBUTE_NAME_TEX_COORD3, GLProgram::VERTEX_ATTRIB_TEX_COORD3}, - {GLProgram::ATTRIBUTE_NAME_TEX_COORD4, GLProgram::VERTEX_ATTRIB_TEX_COORD4}, - {GLProgram::ATTRIBUTE_NAME_TEX_COORD5, GLProgram::VERTEX_ATTRIB_TEX_COORD5}, - {GLProgram::ATTRIBUTE_NAME_TEX_COORD6, GLProgram::VERTEX_ATTRIB_TEX_COORD6}, - {GLProgram::ATTRIBUTE_NAME_TEX_COORD7, GLProgram::VERTEX_ATTRIB_TEX_COORD7}, {GLProgram::ATTRIBUTE_NAME_NORMAL, GLProgram::VERTEX_ATTRIB_NORMAL}, }; @@ -368,7 +360,7 @@ void GLProgram::parseUniforms() if(strncmp("CC_", uniformName, 3) != 0) { // remove possible array '[]' from uniform name - if(uniform.size > 1 && length > 3) + if(length > 3) { char* c = strrchr(uniformName, '['); if(c) @@ -537,7 +529,7 @@ bool GLProgram::link() { CCASSERT(_program != 0, "Cannot link invalid program"); -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) if(!_hasShaderCompiler) { // precompiled shader program is already linked @@ -570,7 +562,7 @@ bool GLProgram::link() _vertShader = _fragShader = 0; -#if DEBUG || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if DEBUG || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) glGetProgramiv(_program, GL_LINK_STATUS, &status); if (status == GL_FALSE) @@ -581,7 +573,7 @@ bool GLProgram::link() } #endif -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || defined(WP8_SHADER_COMPILER) if (status == GL_TRUE) { CCPrecompiledShaders::getInstance()->addProgram(_program, _shaderId); diff --git a/cocos/renderer/CCGLProgram.h b/cocos/renderer/CCGLProgram.h index 830ca8b487..fcb7670829 100644 --- a/cocos/renderer/CCGLProgram.h +++ b/cocos/renderer/CCGLProgram.h @@ -87,14 +87,9 @@ public: VERTEX_ATTRIB_TEX_COORD1, VERTEX_ATTRIB_TEX_COORD2, VERTEX_ATTRIB_TEX_COORD3, - VERTEX_ATTRIB_TEX_COORD4, - VERTEX_ATTRIB_TEX_COORD5, - VERTEX_ATTRIB_TEX_COORD6, - VERTEX_ATTRIB_TEX_COORD7, VERTEX_ATTRIB_NORMAL, VERTEX_ATTRIB_BLEND_WEIGHT, VERTEX_ATTRIB_BLEND_INDEX, - VERTEX_ATTRIB_MAX, // backward compatibility @@ -169,10 +164,6 @@ public: static const char* ATTRIBUTE_NAME_TEX_COORD1; static const char* ATTRIBUTE_NAME_TEX_COORD2; static const char* ATTRIBUTE_NAME_TEX_COORD3; - static const char* ATTRIBUTE_NAME_TEX_COORD4; - static const char* ATTRIBUTE_NAME_TEX_COORD5; - static const char* ATTRIBUTE_NAME_TEX_COORD6; - static const char* ATTRIBUTE_NAME_TEX_COORD7; static const char* ATTRIBUTE_NAME_NORMAL; static const char* ATTRIBUTE_NAME_BLEND_WEIGHT; static const char* ATTRIBUTE_NAME_BLEND_INDEX; @@ -184,7 +175,7 @@ public: * @lua initWithString */ -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) /** Initializes the CCGLProgram with precompiled shader program */ static GLProgram* createWithPrecompiledProgramByteArray(const GLchar* vShaderByteArray, const GLchar* fShaderByteArray); bool initWithPrecompiledProgramByteArray(const GLchar* vShaderByteArray, const GLchar* fShaderByteArray); @@ -352,7 +343,7 @@ protected: struct _hashUniformEntry* _hashForUniforms; bool _hasShaderCompiler; -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || defined(WP8_SHADER_COMPILER) std::string _shaderId; #endif diff --git a/cocos/renderer/CCMeshCommand.cpp b/cocos/renderer/CCMeshCommand.cpp index 72e72adb13..8017974901 100644 --- a/cocos/renderer/CCMeshCommand.cpp +++ b/cocos/renderer/CCMeshCommand.cpp @@ -48,32 +48,33 @@ static GLenum s_cullFace = 0; static bool s_depthTestEnabled = false; static bool s_depthWriteEnabled = false; -struct DirectionLightUniformNames -{ - std::string color; - std::string dir; -}; +static const char *s_dirLightUniformColorName = "u_DirLightSourceColor"; +static std::vector s_dirLightUniformColorValues; +static const char *s_dirLightUniformDirName = "u_DirLightSourceDirection"; +static std::vector s_dirLightUniformDirValues; -struct PointLightUniformNames -{ - std::string color; - std::string position; - std::string rangeInverse; -}; +static const char *s_pointLightUniformColorName = "u_PointLightSourceColor"; +static std::vector s_pointLightUniformColorValues; +static const char *s_pointLightUniformPositionName = "u_PointLightSourcePosition"; +static std::vector s_pointLightUniformPositionValues; +static const char *s_pointLightUniformRangeInverseName = "u_PointLightSourceRangeInverse"; +static std::vector s_pointLightUniformRangeInverseValues; -struct SpotLightUniformNames -{ - std::string color; - std::string position; - std::string dir; - std::string innerAngleCos; - std::string outerAngleCos; - std::string rangeInverse; -}; +static const char *s_spotLightUniformColorName = "u_SpotLightSourceColor"; +static std::vector s_spotLightUniformColorValues; +static const char *s_spotLightUniformPositionName = "u_SpotLightSourcePosition"; +static std::vector s_spotLightUniformPositionValues; +static const char *s_spotLightUniformDirName = "u_SpotLightSourceDirection"; +static std::vector s_spotLightUniformDirValues; +static const char *s_spotLightUniformInnerAngleCosName = "u_SpotLightSourceInnerAngleCos"; +static std::vector s_spotLightUniformInnerAngleCosValues; +static const char *s_spotLightUniformOuterAngleCosName = "u_SpotLightSourceOuterAngleCos"; +static std::vector s_spotLightUniformOuterAngleCosValues; +static const char *s_spotLightUniformRangeInverseName = "u_SpotLightSourceRangeInverse"; +static std::vector s_spotLightUniformRangeInverseValues; + +static const char *s_ambientLightUniformColorName = "u_AmbientLightSourceColor"; -static std::vector s_dirLightUniformNames; -static std::vector s_pointLightUniformNames; -static std::vector s_spotLightUniformNames; MeshCommand::MeshCommand() : _textureID(0) @@ -123,7 +124,6 @@ void MeshCommand::init(float globalOrder, _indexCount = indexCount; _mv.set(mv); - setLightUniformNames(); } void MeshCommand::setCullFaceEnabled(bool enable) @@ -251,12 +251,12 @@ void MeshCommand::batchDraw() _glProgramState->setUniformCallback("u_matrixPalette", CC_CALLBACK_2(MeshCommand::MatrixPalleteCallBack, this)); } - - if (Director::getInstance()->getRunningScene()->getLights().size() > 0) - setLightUniforms(); _glProgramState->applyGLProgram(_mv); _glProgramState->applyUniforms(); + + if (Director::getInstance()->getRunningScene()->getLights().size() > 0) + setLightUniforms(); // Draw glDrawElements(_primitive, (GLsizei)_indexCount, _indexFormat, 0); @@ -294,12 +294,12 @@ void MeshCommand::execute() _glProgramState->setUniformCallback("u_matrixPalette", CC_CALLBACK_2(MeshCommand::MatrixPalleteCallBack, this)); } + + _glProgramState->apply(_mv); if (Director::getInstance()->getRunningScene()->getLights().size() > 0) setLightUniforms(); - _glProgramState->apply(_mv); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBuffer); // Draw @@ -354,8 +354,11 @@ void MeshCommand::setLightUniforms() int maxPointLight = conf->getMaxSupportPointLightInShader(); int maxSpotLight = conf->getMaxSupportSpotLightInShader(); auto &lights = scene->getLights(); + auto glProgram = _glProgramState->getGLProgram(); if (_glProgramState->getVertexAttribsFlags() & (1 << GLProgram::VERTEX_ATTRIB_NORMAL)) { + resetLightUniformValues(); + GLint enabledDirLightNum = 0; GLint enabledPointLightNum = 0; GLint enabledSpotLightNum = 0; @@ -370,43 +373,50 @@ void MeshCommand::setLightUniforms() { case LightType::DIRECTIONAL: { - CCASSERT(enabledDirLightNum < maxDirLight, ""); - auto dirLight = static_cast(light); - Vec3 dir = dirLight->getDirectionInWorld(); - dir.normalize(); - const Color3B &col = dirLight->getDisplayedColor(); - _glProgramState->setUniformVec3(s_dirLightUniformNames[enabledDirLightNum].color, Vec3(col.r / 255.0f * intensity, col.g / 255.0f * intensity, col.b / 255.0f * intensity)); - _glProgramState->setUniformVec3(s_dirLightUniformNames[enabledDirLightNum].dir, dir); - ++enabledDirLightNum; + if(enabledDirLightNum < maxDirLight) + { + auto dirLight = static_cast(light); + Vec3 dir = dirLight->getDirectionInWorld(); + dir.normalize(); + const Color3B &col = dirLight->getDisplayedColor(); + s_dirLightUniformColorValues[enabledDirLightNum] = Vec3(col.r / 255.0f * intensity, col.g / 255.0f * intensity, col.b / 255.0f * intensity); + s_dirLightUniformDirValues[enabledDirLightNum] = dir; + ++enabledDirLightNum; + } + } break; case LightType::POINT: { - CCASSERT(enabledPointLightNum < maxPointLight, ""); - auto pointLight = static_cast(light); - Mat4 mat= pointLight->getNodeToWorldTransform(); - const Color3B &col = pointLight->getDisplayedColor(); - _glProgramState->setUniformVec3(s_pointLightUniformNames[enabledPointLightNum].color, Vec3(col.r / 255.0f * intensity, col.g / 255.0f * intensity, col.b / 255.0f * intensity)); - _glProgramState->setUniformVec3(s_pointLightUniformNames[enabledPointLightNum].position, Vec3(mat.m[12], mat.m[13], mat.m[14])); - _glProgramState->setUniformFloat(s_pointLightUniformNames[enabledPointLightNum].rangeInverse, 1.0f / pointLight->getRange()); - ++enabledPointLightNum; + if(enabledPointLightNum < maxPointLight) + { + auto pointLight = static_cast(light); + Mat4 mat= pointLight->getNodeToWorldTransform(); + const Color3B &col = pointLight->getDisplayedColor(); + s_pointLightUniformColorValues[enabledPointLightNum] = Vec3(col.r / 255.0f * intensity, col.g / 255.0f * intensity, col.b / 255.0f * intensity); + s_pointLightUniformPositionValues[enabledPointLightNum] = Vec3(mat.m[12], mat.m[13], mat.m[14]); + s_pointLightUniformRangeInverseValues[enabledPointLightNum] = 1.0f / pointLight->getRange(); + ++enabledPointLightNum; + } } break; case LightType::SPOT: { - CCASSERT(enabledSpotLightNum < maxSpotLight, ""); - auto spotLight = static_cast(light); - Vec3 dir = spotLight->getDirectionInWorld(); - dir.normalize(); - Mat4 mat= light->getNodeToWorldTransform(); - const Color3B &col = spotLight->getDisplayedColor(); - _glProgramState->setUniformVec3(s_spotLightUniformNames[enabledSpotLightNum].color, Vec3(col.r / 255.0f * intensity, col.g / 255.0f * intensity, col.b / 255.0f * intensity)); - _glProgramState->setUniformVec3(s_spotLightUniformNames[enabledSpotLightNum].position, Vec3(mat.m[12], mat.m[13], mat.m[14])); - _glProgramState->setUniformVec3(s_spotLightUniformNames[enabledSpotLightNum].dir, dir); - _glProgramState->setUniformFloat(s_spotLightUniformNames[enabledSpotLightNum].innerAngleCos, spotLight->getCosInnerAngle()); - _glProgramState->setUniformFloat(s_spotLightUniformNames[enabledSpotLightNum].outerAngleCos, spotLight->getCosOuterAngle()); - _glProgramState->setUniformFloat(s_spotLightUniformNames[enabledSpotLightNum].rangeInverse, 1.0f / spotLight->getRange()); - ++enabledSpotLightNum; + if(enabledSpotLightNum < maxSpotLight) + { + auto spotLight = static_cast(light); + Vec3 dir = spotLight->getDirectionInWorld(); + dir.normalize(); + Mat4 mat= light->getNodeToWorldTransform(); + const Color3B &col = spotLight->getDisplayedColor(); + s_spotLightUniformColorValues[enabledSpotLightNum] = Vec3(col.r / 255.0f * intensity, col.g / 255.0f * intensity, col.b / 255.0f * intensity); + s_spotLightUniformPositionValues[enabledSpotLightNum] = Vec3(mat.m[12], mat.m[13], mat.m[14]); + s_spotLightUniformDirValues[enabledSpotLightNum] = dir; + s_spotLightUniformInnerAngleCosValues[enabledSpotLightNum] = spotLight->getCosInnerAngle(); + s_spotLightUniformOuterAngleCosValues[enabledSpotLightNum] = spotLight->getCosOuterAngle(); + s_spotLightUniformRangeInverseValues[enabledSpotLightNum] = 1.0f / spotLight->getRange(); + ++enabledSpotLightNum; + } } break; case LightType::AMBIENT: @@ -422,30 +432,30 @@ void MeshCommand::setLightUniforms() } } - for (unsigned short i = enabledDirLightNum; i < maxDirLight; ++i) + if (0 < maxDirLight) { - _glProgramState->setUniformVec3(s_dirLightUniformNames[i].color, Vec3::ZERO); - _glProgramState->setUniformVec3(s_dirLightUniformNames[i].dir, Vec3::ZERO); + glProgram->setUniformLocationWith3fv((GLint)glProgram->getUniformLocationForName(s_dirLightUniformColorName), (GLfloat*)(&s_dirLightUniformColorValues[0]), (unsigned int)s_dirLightUniformColorValues.size()); + glProgram->setUniformLocationWith3fv((GLint)glProgram->getUniformLocationForName(s_dirLightUniformDirName), (GLfloat*)(&s_dirLightUniformDirValues[0]), (unsigned int)s_dirLightUniformDirValues.size()); } - - for (unsigned short i = enabledPointLightNum; i < maxPointLight; ++i) + + if (0 < maxPointLight) { - _glProgramState->setUniformVec3(s_pointLightUniformNames[i].color, Vec3::ZERO); - _glProgramState->setUniformVec3(s_pointLightUniformNames[i].position, Vec3::ZERO); - _glProgramState->setUniformFloat(s_pointLightUniformNames[i].rangeInverse, 0.0f); + glProgram->setUniformLocationWith3fv((GLint)glProgram->getUniformLocationForName(s_pointLightUniformColorName), (GLfloat*)(&s_pointLightUniformColorValues[0]), (unsigned int)s_pointLightUniformColorValues.size()); + glProgram->setUniformLocationWith3fv((GLint)glProgram->getUniformLocationForName(s_pointLightUniformPositionName), (GLfloat*)(&s_pointLightUniformPositionValues[0]), (unsigned int)s_pointLightUniformPositionValues.size()); + glProgram->setUniformLocationWith1fv((GLint)glProgram->getUniformLocationForName(s_pointLightUniformRangeInverseName), (GLfloat*)(&s_pointLightUniformRangeInverseValues[0]), (unsigned int)s_pointLightUniformRangeInverseValues.size()); } - - for (unsigned short i = enabledSpotLightNum; i < maxSpotLight; ++i) + + if (0 < maxSpotLight) { - _glProgramState->setUniformVec3(s_spotLightUniformNames[i].color, Vec3::ZERO); - _glProgramState->setUniformVec3(s_spotLightUniformNames[i].position, Vec3::ZERO); - _glProgramState->setUniformVec3(s_spotLightUniformNames[i].dir, Vec3::ZERO); - _glProgramState->setUniformFloat(s_spotLightUniformNames[i].innerAngleCos, 0.0f); - _glProgramState->setUniformFloat(s_spotLightUniformNames[i].outerAngleCos, 0.0f); - _glProgramState->setUniformFloat(s_spotLightUniformNames[i].rangeInverse, 0.0f); + glProgram->setUniformLocationWith3fv((GLint)glProgram->getUniformLocationForName(s_spotLightUniformColorName), (GLfloat*)(&s_spotLightUniformColorValues[0]), (unsigned int)s_spotLightUniformColorValues.size()); + glProgram->setUniformLocationWith3fv((GLint)glProgram->getUniformLocationForName(s_spotLightUniformPositionName), (GLfloat*)(&s_spotLightUniformPositionValues[0]), (unsigned int)s_spotLightUniformPositionValues.size()); + glProgram->setUniformLocationWith3fv((GLint)glProgram->getUniformLocationForName(s_spotLightUniformDirName), (GLfloat*)(&s_spotLightUniformDirValues[0]), (unsigned int)s_spotLightUniformDirValues.size()); + glProgram->setUniformLocationWith1fv((GLint)glProgram->getUniformLocationForName(s_spotLightUniformInnerAngleCosName), (GLfloat*)(&s_spotLightUniformInnerAngleCosValues[0]), (unsigned int)s_spotLightUniformInnerAngleCosValues.size()); + glProgram->setUniformLocationWith1fv((GLint)glProgram->getUniformLocationForName(s_spotLightUniformOuterAngleCosName), (GLfloat*)(&s_spotLightUniformOuterAngleCosValues[0]), (unsigned int)s_spotLightUniformOuterAngleCosValues.size()); + glProgram->setUniformLocationWith1fv((GLint)glProgram->getUniformLocationForName(s_spotLightUniformRangeInverseName), (GLfloat*)(&s_spotLightUniformRangeInverseValues[0]), (unsigned int)s_spotLightUniformRangeInverseValues.size()); } - - _glProgramState->setUniformVec3("u_AmbientLightSourceColor", ambientColor); + + glProgram->setUniformLocationWith3f(glProgram->getUniformLocationForName(s_ambientLightUniformColorName), ambientColor.x, ambientColor.y, ambientColor.z); } else // normal does not exist { @@ -470,64 +480,30 @@ void MeshCommand::setLightUniforms() { ambient.x /= 255.f; ambient.y /= 255.f; ambient.z /= 255.f; } - _glProgramState->setUniformVec4("u_color", Vec4(_displayColor.x * ambient.x, _displayColor.y * ambient.y, _displayColor.z * ambient.z, _displayColor.w)); + glProgram->setUniformLocationWith4f(glProgram->getUniformLocationForName("u_color"), _displayColor.x * ambient.x, _displayColor.y * ambient.y, _displayColor.z * ambient.z, _displayColor.w); } } -void MeshCommand::setLightUniformNames() +void MeshCommand::resetLightUniformValues() { const auto& conf = Configuration::getInstance(); int maxDirLight = conf->getMaxSupportDirLightInShader(); int maxPointLight = conf->getMaxSupportPointLightInShader(); int maxSpotLight = conf->getMaxSupportSpotLightInShader(); - if (s_dirLightUniformNames.size() != maxDirLight) - { - s_dirLightUniformNames.resize(maxDirLight); - char str[64]; - for (unsigned int i = 0; i < maxDirLight; ++i) - { - sprintf(str, "u_DirLightSourceColor[%d]", i); - s_dirLightUniformNames[i].color = str; - sprintf(str, "u_DirLightSourceDirection[%d]", i); - s_dirLightUniformNames[i].dir = str; - } - } - if (s_pointLightUniformNames.size() != maxPointLight) - { - s_pointLightUniformNames.resize(maxPointLight); - char str[64]; - for (unsigned int i = 0; i < maxPointLight; ++i) - { - sprintf(str, "u_PointLightSourceColor[%d]", i); - s_pointLightUniformNames[i].color = str; - sprintf(str, "u_PointLightSourcePosition[%d]", i); - s_pointLightUniformNames[i].position = str; - sprintf(str, "u_PointLightSourceRangeInverse[%d]", i); - s_pointLightUniformNames[i].rangeInverse = str; - } - } + s_dirLightUniformColorValues.assign(maxDirLight, Vec3::ZERO); + s_dirLightUniformDirValues.assign(maxDirLight, Vec3::ZERO); - if (s_spotLightUniformNames.size() != maxSpotLight) - { - s_spotLightUniformNames.resize(maxSpotLight); - char str[64]; - for (unsigned int i = 0; i < maxSpotLight; ++i) - { - sprintf(str, "u_SpotLightSourceColor[%d]", i); - s_spotLightUniformNames[i].color = str; - sprintf(str, "u_SpotLightSourcePosition[%d]", i); - s_spotLightUniformNames[i].position = str; - sprintf(str, "u_SpotLightSourceDirection[%d]", i); - s_spotLightUniformNames[i].dir = str; - sprintf(str, "u_SpotLightSourceInnerAngleCos[%d]", i); - s_spotLightUniformNames[i].innerAngleCos = str; - sprintf(str, "u_SpotLightSourceOuterAngleCos[%d]", i); - s_spotLightUniformNames[i].outerAngleCos = str; - sprintf(str, "u_SpotLightSourceRangeInverse[%d]", i); - s_spotLightUniformNames[i].rangeInverse = str; - } - } + s_pointLightUniformColorValues.assign(maxPointLight, Vec3::ZERO); + s_pointLightUniformPositionValues.assign(maxPointLight, Vec3::ZERO); + s_pointLightUniformRangeInverseValues.assign(maxPointLight, 0.0f); + + s_spotLightUniformColorValues.assign(maxSpotLight, Vec3::ZERO); + s_spotLightUniformPositionValues.assign(maxSpotLight, Vec3::ZERO); + s_spotLightUniformDirValues.assign(maxSpotLight, Vec3::ZERO); + s_spotLightUniformInnerAngleCosValues.assign(maxSpotLight, 0.0f); + s_spotLightUniformOuterAngleCosValues.assign(maxSpotLight, 0.0f); + s_spotLightUniformRangeInverseValues.assign(maxSpotLight, 0.0f); } #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_WP8) diff --git a/cocos/renderer/CCMeshCommand.h b/cocos/renderer/CCMeshCommand.h index 800c89894e..abdceae309 100644 --- a/cocos/renderer/CCMeshCommand.h +++ b/cocos/renderer/CCMeshCommand.h @@ -94,7 +94,7 @@ protected: void MatrixPalleteCallBack( GLProgram* glProgram, Uniform* uniform); - void setLightUniformNames(); + void resetLightUniformValues(); GLuint _textureID; GLProgramState* _glProgramState; diff --git a/cocos/renderer/CCQuadCommand.cpp b/cocos/renderer/CCQuadCommand.cpp index 5b910e7e89..b9549ddcbf 100644 --- a/cocos/renderer/CCQuadCommand.cpp +++ b/cocos/renderer/CCQuadCommand.cpp @@ -28,12 +28,17 @@ #include "renderer/ccGLStateCache.h" #include "renderer/CCGLProgram.h" #include "xxhash.h" -#include "renderer/CCRenderer.h" +#include "CCRenderer.h" NS_CC_BEGIN + QuadCommand::QuadCommand() -:_quads(nullptr) +:_materialID(0) +,_textureID(0) +,_glProgramState(nullptr) +,_blendType(BlendFunc::DISABLE) +,_quads(nullptr) ,_quadsCount(0) { _type = RenderCommand::Type::QUAD_COMMAND; @@ -43,43 +48,20 @@ void QuadCommand::init(float globalOrder, GLuint textureID, GLProgramState* glPr { CCASSERT(glProgramState, "Invalid GLProgramState"); CCASSERT(glProgramState->getVertexAttribsFlags() == 0, "No custom attributes are supported in QuadCommand"); - + _globalOrder = globalOrder; - + _quadsCount = quadCount; _quads = quad; - //generate triangles - { - static std::vector QUADINDICESMAX; - if(QUADINDICESMAX.size() == 0) - { - QUADINDICESMAX.resize(Renderer::INDEX_VBO_SIZE); - for(ssize_t i = 0; i < Renderer::INDEX_VBO_SIZE / 6; ++i) - { - QUADINDICESMAX[ 6 * i + 0] = 4 * i + 0; - QUADINDICESMAX[ 6 * i + 1] = 4 * i + 1; - QUADINDICESMAX[ 6 * i + 2] = 4 * i + 2; - QUADINDICESMAX[ 6 * i + 3] = 4 * i + 3; - QUADINDICESMAX[ 6 * i + 4] = 4 * i + 2; - QUADINDICESMAX[ 6 * i + 5] = 4 * i + 1; - } - } - - _triangles.vertCount = quadCount * 4; - _triangles.indexCount = quadCount * 6; - _triangles.indices = &QUADINDICESMAX[0]; - _triangles.verts = &quad->tl; - } - _mv = mv; - + if( _textureID != textureID || _blendType.src != blendType.src || _blendType.dst != blendType.dst || _glProgramState != glProgramState) { - + _textureID = textureID; _blendType = blendType; _glProgramState = glProgramState; - + generateMaterialID(); } } @@ -88,4 +70,31 @@ QuadCommand::~QuadCommand() { } -NS_CC_END +void QuadCommand::generateMaterialID() +{ + + if(_glProgramState->getUniformCount() > 0) + { + _materialID = Renderer::MATERIAL_ID_DO_NOT_BATCH; + } + else + { + int glProgram = (int)_glProgramState->getGLProgram()->getProgram(); + int intArray[4] = { glProgram, (int)_textureID, (int)_blendType.src, (int)_blendType.dst}; + + _materialID = XXH32((const void*)intArray, sizeof(intArray), 0); + } +} + +void QuadCommand::useMaterial() const +{ + //Set texture + GL::bindTexture2D(_textureID); + + //set blend mode + GL::blendFunc(_blendType.src, _blendType.dst); + + _glProgramState->apply(_mv); +} + +NS_CC_END \ No newline at end of file diff --git a/cocos/renderer/CCQuadCommand.h b/cocos/renderer/CCQuadCommand.h index bacd8528b3..d859751c66 100644 --- a/cocos/renderer/CCQuadCommand.h +++ b/cocos/renderer/CCQuadCommand.h @@ -27,29 +27,42 @@ #include "renderer/CCRenderCommand.h" #include "renderer/CCGLProgramState.h" -#include "renderer/CCTrianglesCommand.h" NS_CC_BEGIN /** Command used to render one or more Quads */ -class CC_DLL QuadCommand : public TrianglesCommand +class CC_DLL QuadCommand : public RenderCommand { public: - + QuadCommand(); ~QuadCommand(); - + /** Initializes the command with a globalZOrder, a texture ID, a `GLProgram`, a blending function, a pointer to quads, * quantity of quads, and the Model View transform to be used for the quads */ void init(float globalOrder, GLuint texutreID, GLProgramState* shader, BlendFunc blendType, V3F_C4B_T2F_Quad* quads, ssize_t quadCount, const Mat4& mv); - - inline const V3F_C4B_T2F_Quad* getQuads() const { return _quads; } + + void useMaterial() const; + + inline uint32_t getMaterialID() const { return _materialID; } + inline GLuint getTextureID() const { return _textureID; } + inline V3F_C4B_T2F_Quad* getQuads() const { return _quads; } inline ssize_t getQuadCount() const { return _quadsCount; } - + inline GLProgramState* getGLProgramState() const { return _glProgramState; } + inline BlendFunc getBlendType() const { return _blendType; } + inline const Mat4& getModelView() const { return _mv; } + protected: + void generateMaterialID(); + + uint32_t _materialID; + GLuint _textureID; + GLProgramState* _glProgramState; + BlendFunc _blendType; V3F_C4B_T2F_Quad* _quads; ssize_t _quadsCount; + Mat4 _mv; }; NS_CC_END diff --git a/cocos/renderer/CCRenderer.cpp b/cocos/renderer/CCRenderer.cpp index 226d26b17b..b8e8087474 100644 --- a/cocos/renderer/CCRenderer.cpp +++ b/cocos/renderer/CCRenderer.cpp @@ -141,6 +141,7 @@ Renderer::Renderer() ,_lastBatchedMeshCommand(nullptr) ,_filledVertex(0) ,_filledIndex(0) +,_numberQuads(0) ,_glViewAssigned(false) ,_isRendering(false) #if CC_ENABLE_CACHE_TEXTURE_DATA @@ -162,9 +163,11 @@ Renderer::~Renderer() _groupCommandManager->release(); glDeleteBuffers(2, _buffersVBO); + glDeleteBuffers(2, _quadbuffersVBO); if (Configuration::getInstance()->supportsShareableVAO()) { + glDeleteVertexArrays(1, &_buffersVAO); glDeleteVertexArrays(1, &_quadVAO); GL::bindVAO(0); } @@ -184,6 +187,18 @@ void Renderer::initGLView() Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(_cacheTextureListener, -1); #endif + //setup index data for quads + + for( int i=0; i < VBO_SIZE/4; i++) + { + _quadIndices[i*6+0] = (GLushort) (i*4+0); + _quadIndices[i*6+1] = (GLushort) (i*4+1); + _quadIndices[i*6+2] = (GLushort) (i*4+2); + _quadIndices[i*6+3] = (GLushort) (i*4+3); + _quadIndices[i*6+4] = (GLushort) (i*4+2); + _quadIndices[i*6+5] = (GLushort) (i*4+1); + } + setupBuffer(); _glViewAssigned = true; @@ -203,8 +218,9 @@ void Renderer::setupBuffer() void Renderer::setupVBOAndVAO() { - glGenVertexArrays(1, &_quadVAO); - GL::bindVAO(_quadVAO); + //generate vbo and vao for trianglesCommand + glGenVertexArrays(1, &_buffersVAO); + GL::bindVAO(_buffersVAO); glGenBuffers(2, &_buffersVBO[0]); @@ -231,13 +247,42 @@ void Renderer::setupVBOAndVAO() glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); glBindBuffer(GL_ARRAY_BUFFER, 0); + //generate vbo and vao for quadCommand + glGenVertexArrays(1, &_quadVAO); + GL::bindVAO(_quadVAO); + + glGenBuffers(2, &_quadbuffersVBO[0]); + + glBindBuffer(GL_ARRAY_BUFFER, _quadbuffersVBO[0]); + glBufferData(GL_ARRAY_BUFFER, sizeof(_quadVerts[0]) * VBO_SIZE, _quadVerts, GL_DYNAMIC_DRAW); + + // vertices + glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_POSITION); + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 3, GL_FLOAT, GL_FALSE, sizeof(V3F_C4B_T2F), (GLvoid*) offsetof( V3F_C4B_T2F, vertices)); + + // colors + glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_COLOR); + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(V3F_C4B_T2F), (GLvoid*) offsetof( V3F_C4B_T2F, colors)); + + // tex coords + glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_TEX_COORD); + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_TEX_COORD, 2, GL_FLOAT, GL_FALSE, sizeof(V3F_C4B_T2F), (GLvoid*) offsetof( V3F_C4B_T2F, texCoords)); + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _quadbuffersVBO[1]); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(_quadIndices[0]) * INDEX_VBO_SIZE, _quadIndices, GL_STATIC_DRAW); + + // Must unbind the VAO before changing the element buffer. + GL::bindVAO(0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + CHECK_GL_ERROR_DEBUG(); } void Renderer::setupVBO() { glGenBuffers(2, &_buffersVBO[0]); - + glGenBuffers(2, &_quadbuffersVBO[0]); mapBuffers(); } @@ -248,10 +293,18 @@ void Renderer::mapBuffers() glBindBuffer(GL_ARRAY_BUFFER, _buffersVBO[0]); glBufferData(GL_ARRAY_BUFFER, sizeof(_verts[0]) * VBO_SIZE, _verts, GL_DYNAMIC_DRAW); + + glBindBuffer(GL_ARRAY_BUFFER, _quadbuffersVBO[0]); + glBufferData(GL_ARRAY_BUFFER, sizeof(_quadVerts[0]) * VBO_SIZE, _quadVerts, GL_DYNAMIC_DRAW); + glBindBuffer(GL_ARRAY_BUFFER, 0); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _buffersVBO[1]); glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(_indices[0]) * INDEX_VBO_SIZE, _indices, GL_STATIC_DRAW); + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _quadbuffersVBO[1]); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(_quadIndices[0]) * INDEX_VBO_SIZE, _quadIndices, GL_STATIC_DRAW); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); CHECK_GL_ERROR_DEBUG(); @@ -301,23 +354,51 @@ void Renderer::visitRenderQueue(const RenderQueue& queue) { auto command = queue[index]; auto commandType = command->getType(); - if(RenderCommand::Type::QUAD_COMMAND == commandType || RenderCommand::Type::TRIANGLES_COMMAND == commandType) + if( RenderCommand::Type::TRIANGLES_COMMAND == commandType) { flush3D(); + if(_numberQuads > 0) + { + drawBatchedQuads(); + _lastMaterialID = 0; + } + auto cmd = static_cast(command); - //Batch quads + //Batch Triangles if( _filledVertex + cmd->getVertexCount() > VBO_SIZE || _filledIndex + cmd->getIndexCount() > INDEX_VBO_SIZE) { CCASSERT(cmd->getVertexCount()>= 0 && cmd->getVertexCount() < VBO_SIZE, "VBO for vertex is not big enough, please break the data down or use customized render command"); CCASSERT(cmd->getIndexCount()>= 0 && cmd->getIndexCount() < INDEX_VBO_SIZE, "VBO for index is not big enough, please break the data down or use customized render command"); - //Draw batched quads if VBO is full - drawBatchedQuads(); + //Draw batched Triangles if VBO is full + drawBatchedTriangles(); } _batchedCommands.push_back(cmd); fillVerticesAndIndices(cmd); + } + else if ( RenderCommand::Type::QUAD_COMMAND == commandType ) + { + flush3D(); + if(_filledIndex > 0) + { + drawBatchedTriangles(); + _lastMaterialID = 0; + } + auto cmd = static_cast(command); + //Batch quads + if( (_numberQuads + cmd->getQuadCount()) * 4 > VBO_SIZE ) + { + CCASSERT(cmd->getQuadCount()>= 0 && cmd->getQuadCount() * 4 < VBO_SIZE, "VBO for vertex is not big enough, please break the data down or use customized render command"); + //Draw batched quads if VBO is full + drawBatchedQuads(); + } + + _batchQuadCommands.push_back(cmd); + + fillQuads(cmd); + } else if(RenderCommand::Type::GROUP_COMMAND == commandType) { @@ -379,11 +460,18 @@ void Renderer::visitTransparentRenderQueue(const TransparentRenderQueue& queue) { auto command = queue[index]; auto commandType = command->getType(); - if(RenderCommand::Type::QUAD_COMMAND == commandType || RenderCommand::Type::TRIANGLES_COMMAND == commandType) + if( RenderCommand::Type::TRIANGLES_COMMAND == commandType) { auto cmd = static_cast(command); _batchedCommands.push_back(cmd); fillVerticesAndIndices(cmd); + drawBatchedTriangles(); + } + else if(RenderCommand::Type::QUAD_COMMAND == commandType) + { + auto cmd = static_cast(command); + _batchQuadCommands.push_back(cmd); + fillQuads(cmd); drawBatchedQuads(); } else if(RenderCommand::Type::GROUP_COMMAND == commandType) @@ -464,10 +552,12 @@ void Renderer::clean() _renderGroups[j].clear(); } - // Clear batch quad commands + // Clear batch commands _batchedCommands.clear(); + _batchQuadCommands.clear(); _filledVertex = 0; _filledIndex = 0; + _numberQuads = 0; _lastMaterialID = 0; _lastBatchedMeshCommand = nullptr; @@ -497,7 +587,23 @@ void Renderer::fillVerticesAndIndices(const TrianglesCommand* cmd) _filledIndex += cmd->getIndexCount(); } -void Renderer::drawBatchedQuads() +void Renderer::fillQuads(const QuadCommand *cmd) +{ + memcpy(_quadVerts + _numberQuads * 4, cmd->getQuads(), sizeof(V3F_C4B_T2F_Quad) * cmd->getQuadCount()); + + const Mat4& modelView = cmd->getModelView(); + + for(ssize_t i=0; i< cmd->getQuadCount() * 4; ++i) + { + V3F_C4B_T2F *q = &_quadVerts[i + _numberQuads * 4]; + Vec3 *vec1 = (Vec3*)&q->vertices; + modelView.transformPoint(vec1); + } + + _numberQuads += cmd->getQuadCount(); +} + +void Renderer::drawBatchedTriangles() { //TODO: we can improve the draw performance by insert material switching command before hand. @@ -513,7 +619,7 @@ void Renderer::drawBatchedQuads() if (Configuration::getInstance()->supportsShareableVAO()) { //Bind VAO - GL::bindVAO(_quadVAO); + GL::bindVAO(_buffersVAO); //Set VBO data glBindBuffer(GL_ARRAY_BUFFER, _buffersVBO[0]); @@ -560,7 +666,7 @@ void Renderer::drawBatchedQuads() for(const auto& cmd : _batchedCommands) { auto newMaterialID = cmd->getMaterialID(); - if(_lastMaterialID != newMaterialID || newMaterialID == TrianglesCommand::MATERIAL_ID_DO_NOT_BATCH) + if(_lastMaterialID != newMaterialID || newMaterialID == MATERIAL_ID_DO_NOT_BATCH) { //Draw quads if(indexToDraw > 0) @@ -581,7 +687,7 @@ void Renderer::drawBatchedQuads() indexToDraw += cmd->getIndexCount(); } - //Draw any remaining quad + //Draw any remaining triangles if(indexToDraw > 0) { glDrawElements(GL_TRIANGLES, (GLsizei) indexToDraw, GL_UNSIGNED_SHORT, (GLvoid*) (startIndex*sizeof(_indices[0])) ); @@ -605,6 +711,111 @@ void Renderer::drawBatchedQuads() _filledIndex = 0; } +void Renderer::drawBatchedQuads() +{ + //TODO: we can improve the draw performance by insert material switching command before hand. + + int indexToDraw = 0; + int startIndex = 0; + + //Upload buffer to VBO + if(_numberQuads <= 0 || _batchQuadCommands.empty()) + { + return; + } + + if (Configuration::getInstance()->supportsShareableVAO()) + { + //Bind VAO + GL::bindVAO(_quadVAO); + //Set VBO data + glBindBuffer(GL_ARRAY_BUFFER, _quadbuffersVBO[0]); + + // option 1: subdata + // glBufferSubData(GL_ARRAY_BUFFER, sizeof(_quads[0])*start, sizeof(_quads[0]) * n , &_quads[start] ); + + // option 2: data + // glBufferData(GL_ARRAY_BUFFER, sizeof(quads_[0]) * (n-start), &quads_[start], GL_DYNAMIC_DRAW); + + // option 3: orphaning + glMapBuffer + glBufferData(GL_ARRAY_BUFFER, sizeof(_quadVerts[0]) * _numberQuads * 4, nullptr, GL_DYNAMIC_DRAW); + void *buf = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY); + memcpy(buf, _quadVerts, sizeof(_quadVerts[0])* _numberQuads * 4); + glUnmapBuffer(GL_ARRAY_BUFFER); + + glBindBuffer(GL_ARRAY_BUFFER, 0); + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _quadbuffersVBO[1]); + } + else + { +#define kQuadSize sizeof(_verts[0]) + glBindBuffer(GL_ARRAY_BUFFER, _quadbuffersVBO[0]); + + glBufferData(GL_ARRAY_BUFFER, sizeof(_quadVerts[0]) * _numberQuads * 4 , _quadVerts, GL_DYNAMIC_DRAW); + + GL::enableVertexAttribs(GL::VERTEX_ATTRIB_FLAG_POS_COLOR_TEX); + + // vertices + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 3, GL_FLOAT, GL_FALSE, kQuadSize, (GLvoid*) offsetof(V3F_C4B_T2F, vertices)); + + // colors + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, kQuadSize, (GLvoid*) offsetof(V3F_C4B_T2F, colors)); + + // tex coords + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_TEX_COORD, 2, GL_FLOAT, GL_FALSE, kQuadSize, (GLvoid*) offsetof(V3F_C4B_T2F, texCoords)); + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _quadbuffersVBO[1]); + } + + //Start drawing verties in batch + for(const auto& cmd : _batchQuadCommands) + { + auto newMaterialID = cmd->getMaterialID(); + if(_lastMaterialID != newMaterialID || newMaterialID == MATERIAL_ID_DO_NOT_BATCH) + { + //Draw quads + if(indexToDraw > 0) + { + glDrawElements(GL_TRIANGLES, (GLsizei) indexToDraw, GL_UNSIGNED_SHORT, (GLvoid*) (startIndex*sizeof(_indices[0])) ); + _drawnBatches++; + _drawnVertices += indexToDraw; + + startIndex += indexToDraw; + indexToDraw = 0; + } + + //Use new material + cmd->useMaterial(); + _lastMaterialID = newMaterialID; + } + + indexToDraw += cmd->getQuadCount() * 6; + } + + //Draw any remaining quad + if(indexToDraw > 0) + { + glDrawElements(GL_TRIANGLES, (GLsizei) indexToDraw, GL_UNSIGNED_SHORT, (GLvoid*) (startIndex*sizeof(_indices[0])) ); + _drawnBatches++; + _drawnVertices += indexToDraw; + } + + if (Configuration::getInstance()->supportsShareableVAO()) + { + //Unbind VAO + GL::bindVAO(0); + } + else + { + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + } + + _batchQuadCommands.clear(); + _numberQuads = 0; +} + void Renderer::flush() { flush2D(); @@ -615,6 +826,8 @@ void Renderer::flush2D() { drawBatchedQuads(); _lastMaterialID = 0; + drawBatchedTriangles(); + _lastMaterialID = 0; } void Renderer::flush3D() diff --git a/cocos/renderer/CCRenderer.h b/cocos/renderer/CCRenderer.h index e9913dd775..fcd44e8e62 100644 --- a/cocos/renderer/CCRenderer.h +++ b/cocos/renderer/CCRenderer.h @@ -96,7 +96,8 @@ public: static const int INDEX_VBO_SIZE = VBO_SIZE * 6 / 4; static const int BATCH_QUADCOMMAND_RESEVER_SIZE = 64; - + static const int MATERIAL_ID_DO_NOT_BATCH = 0; + Renderer(); ~Renderer(); @@ -147,7 +148,7 @@ protected: void setupVBOAndVAO(); void setupVBO(); void mapBuffers(); - + void drawBatchedTriangles(); void drawBatchedQuads(); //Draw the previews queued quads and flush previous context @@ -162,7 +163,8 @@ protected: void visitTransparentRenderQueue(const TransparentRenderQueue& queue); void fillVerticesAndIndices(const TrianglesCommand* cmd); - + void fillQuads(const QuadCommand* cmd); + std::stack _commandGroupStack; std::vector _renderGroups; @@ -172,15 +174,25 @@ protected: MeshCommand* _lastBatchedMeshCommand; std::vector _batchedCommands; - + std::vector _batchQuadCommands; + + + //for TrianglesCommand V3F_C4B_T2F _verts[VBO_SIZE]; GLushort _indices[INDEX_VBO_SIZE]; - GLuint _quadVAO; + GLuint _buffersVAO; GLuint _buffersVBO[2]; //0: vertex 1: indices int _filledVertex; int _filledIndex; + //for QuadCommand + V3F_C4B_T2F _quadVerts[VBO_SIZE]; + GLushort _quadIndices[INDEX_VBO_SIZE]; + GLuint _quadVAO; + GLuint _quadbuffersVBO[2]; //0: vertex 1: indices + int _numberQuads; + bool _glViewAssigned; // stats diff --git a/cocos/renderer/CCTexture2D.cpp b/cocos/renderer/CCTexture2D.cpp index a7eb01b4b1..1073302d9b 100644 --- a/cocos/renderer/CCTexture2D.cpp +++ b/cocos/renderer/CCTexture2D.cpp @@ -1370,7 +1370,7 @@ Texture2D::PixelFormat Texture2D::getDefaultAlphaPixelFormat() unsigned int Texture2D::getBitsPerPixelForFormat(Texture2D::PixelFormat format) const { - if (format == PixelFormat::NONE) + if (format == PixelFormat::NONE || format == PixelFormat::DEFAULT) { return 0; } diff --git a/cocos/renderer/CCTextureCache.h b/cocos/renderer/CCTextureCache.h index b05eb78b86..39ff497642 100644 --- a/cocos/renderer/CCTextureCache.h +++ b/cocos/renderer/CCTextureCache.h @@ -269,7 +269,7 @@ protected: FontDefinition _fontDefinition; }; -class VolatileTextureMgr +class CC_DLL VolatileTextureMgr { public: static void addImageTexture(Texture2D *tt, const std::string& imageFileName); diff --git a/cocos/renderer/CCTrianglesCommand.cpp b/cocos/renderer/CCTrianglesCommand.cpp index 8f46ef9c6a..901183d37d 100644 --- a/cocos/renderer/CCTrianglesCommand.cpp +++ b/cocos/renderer/CCTrianglesCommand.cpp @@ -75,7 +75,7 @@ void TrianglesCommand::generateMaterialID() if(_glProgramState->getUniformCount() > 0) { - _materialID = TrianglesCommand::MATERIAL_ID_DO_NOT_BATCH; + _materialID = Renderer::MATERIAL_ID_DO_NOT_BATCH; } else { diff --git a/cocos/renderer/CCTrianglesCommand.h b/cocos/renderer/CCTrianglesCommand.h index 71cd1cca25..5a478fb1ae 100644 --- a/cocos/renderer/CCTrianglesCommand.h +++ b/cocos/renderer/CCTrianglesCommand.h @@ -31,9 +31,6 @@ NS_CC_BEGIN class CC_DLL TrianglesCommand : public RenderCommand { -public: - static const int MATERIAL_ID_DO_NOT_BATCH = 0; - public: struct Triangles { diff --git a/cocos/scripting/lua-bindings/CMakeLists.txt b/cocos/scripting/lua-bindings/CMakeLists.txt index 4fa9a9f766..1209b6161e 100644 --- a/cocos/scripting/lua-bindings/CMakeLists.txt +++ b/cocos/scripting/lua-bindings/CMakeLists.txt @@ -12,6 +12,7 @@ include_directories( ${cocos_root}/cocos/3d ${cocos_root}/cocos/editor-support/spine ${cocos_root}/cocos/editor-support/cocostudio + ${cocos_root}/cocos/editor-support/cocostudio/ActionTimeline ${cocos_root}/cocos/editor-support/cocosbuilder ${cocos_root}/cocos/editor-support ${cocos_root}/cocos/platform @@ -42,6 +43,7 @@ if(MACOSX) ${cocos_root}/external/lua/luasocket/inet.c ${cocos_root}/external/lua/luasocket/io.c ${cocos_root}/external/lua/luasocket/luasocket.c + ${cocos_root}/external/lua/luasocket/luasocket_scripts.c ${cocos_root}/external/lua/luasocket/mime.c ${cocos_root}/external/lua/luasocket/options.c ${cocos_root}/external/lua/luasocket/select.c diff --git a/cocos/scripting/lua-bindings/auto/api/AABB.lua b/cocos/scripting/lua-bindings/auto/api/AABB.lua deleted file mode 100644 index 584e00f36c..0000000000 --- a/cocos/scripting/lua-bindings/auto/api/AABB.lua +++ /dev/null @@ -1,64 +0,0 @@ - --------------------------------- --- @module AABB --- @parent_module cc - --------------------------------- --- reset min and max value. --- @function [parent=#AABB] reset --- @param self - --------------------------------- --- Sets this bounding box to the specified values. --- @function [parent=#AABB] set --- @param self --- @param #vec3_table min --- @param #vec3_table max - --------------------------------- --- Transforms the bounding box by the given transformation matrix. --- @function [parent=#AABB] transform --- @param self --- @param #mat4_table mat - --------------------------------- --- Gets the center point of the bounding box. --- @function [parent=#AABB] getCenter --- @param self --- @return vec3_table#vec3_table ret (return value: vec3_table) - --------------------------------- --- --- @function [parent=#AABB] isEmpty --- @param self --- @return bool#bool ret (return value: bool) - --------------------------------- --- --- @function [parent=#AABB] getCorners --- @param self --- @param #vec3_table dst - --------------------------------- --- update the _min and _max from the given point. --- @function [parent=#AABB] updateMinMax --- @param self --- @param #vec3_table point --- @param #long num - --------------------------------- --- check whether the point is in. --- @function [parent=#AABB] containPoint --- @param self --- @param #vec3_table point --- @return bool#bool ret (return value: bool) - --------------------------------- --- @overload self, vec3_table, vec3_table --- @overload self --- @function [parent=#AABB] AABB --- @param self --- @param #vec3_table min --- @param #vec3_table max - -return nil diff --git a/cocos/scripting/lua-bindings/auto/api/ActionTimelineCache.lua b/cocos/scripting/lua-bindings/auto/api/ActionTimelineCache.lua index 77e46aa629..4eca924fe8 100644 --- a/cocos/scripting/lua-bindings/auto/api/ActionTimelineCache.lua +++ b/cocos/scripting/lua-bindings/auto/api/ActionTimelineCache.lua @@ -5,7 +5,35 @@ -------------------------------- -- Clone a action with the specified name from the container. --- @function [parent=#ActionTimelineCache] createAction +-- @function [parent=#ActionTimelineCache] createActionFromJson +-- @param self +-- @param #string fileName +-- @return ActionTimeline#ActionTimeline ret (return value: ccs.ActionTimeline) + +-------------------------------- +-- +-- @function [parent=#ActionTimelineCache] createActionFromProtocolBuffers +-- @param self +-- @param #string fileName +-- @return ActionTimeline#ActionTimeline ret (return value: ccs.ActionTimeline) + +-------------------------------- +-- +-- @function [parent=#ActionTimelineCache] createActionFromXML +-- @param self +-- @param #string fileName +-- @return ActionTimeline#ActionTimeline ret (return value: ccs.ActionTimeline) + +-------------------------------- +-- +-- @function [parent=#ActionTimelineCache] loadAnimationActionWithFileFromProtocolBuffers +-- @param self +-- @param #string fileName +-- @return ActionTimeline#ActionTimeline ret (return value: ccs.ActionTimeline) + +-------------------------------- +-- +-- @function [parent=#ActionTimelineCache] loadAnimationActionWithFileFromXML -- @param self -- @param #string fileName -- @return ActionTimeline#ActionTimeline ret (return value: ccs.ActionTimeline) @@ -22,17 +50,17 @@ -------------------------------- -- --- @function [parent=#ActionTimelineCache] loadAnimationActionWithContent +-- @function [parent=#ActionTimelineCache] loadAnimationActionWithFile -- @param self -- @param #string fileName --- @param #string content -- @return ActionTimeline#ActionTimeline ret (return value: ccs.ActionTimeline) -------------------------------- -- --- @function [parent=#ActionTimelineCache] loadAnimationActionWithFile +-- @function [parent=#ActionTimelineCache] loadAnimationActionWithContent -- @param self -- @param #string fileName +-- @param #string content -- @return ActionTimeline#ActionTimeline ret (return value: ccs.ActionTimeline) -------------------------------- @@ -46,4 +74,11 @@ -- @function [parent=#ActionTimelineCache] destroyInstance -- @param self +-------------------------------- +-- +-- @function [parent=#ActionTimelineCache] createAction +-- @param self +-- @param #string fileName +-- @return ActionTimeline#ActionTimeline ret (return value: ccs.ActionTimeline) + return nil diff --git a/cocos/scripting/lua-bindings/auto/api/Animate3D.lua b/cocos/scripting/lua-bindings/auto/api/Animate3D.lua index fb9c86d96c..799140a2d5 100644 --- a/cocos/scripting/lua-bindings/auto/api/Animate3D.lua +++ b/cocos/scripting/lua-bindings/auto/api/Animate3D.lua @@ -44,6 +44,21 @@ -- @param self -- @return float#float ret (return value: float) +-------------------------------- +-- create Animate3D by frame section, [startFrame, endFrame)
+-- param animation used to generate animate3D
+-- param startFrame
+-- param endFrame
+-- param frameRate default is 30 per second
+-- return Animate3D created using animate +-- @function [parent=#Animate3D] createWithFrames +-- @param self +-- @param #cc.Animation3D animation +-- @param #int startFrame +-- @param #int endFrame +-- @param #float frameRate +-- @return Animate3D#Animate3D ret (return value: cc.Animate3D) + -------------------------------- -- -- @function [parent=#Animate3D] startWithTarget diff --git a/cocos/scripting/lua-bindings/auto/api/AssetsManagerEx.lua b/cocos/scripting/lua-bindings/auto/api/AssetsManagerEx.lua new file mode 100644 index 0000000000..0b0a8af401 --- /dev/null +++ b/cocos/scripting/lua-bindings/auto/api/AssetsManagerEx.lua @@ -0,0 +1,60 @@ + +-------------------------------- +-- @module AssetsManagerEx +-- @extend Ref +-- @parent_module cc + +-------------------------------- +-- @brief Gets the current update state. +-- @function [parent=#AssetsManagerEx] getState +-- @param self +-- @return int#int ret (return value: int) + +-------------------------------- +-- @brief Check out if there is a new version of manifest.
+-- You may use this method before updating, then let user determine whether
+-- he wants to update resources. +-- @function [parent=#AssetsManagerEx] checkUpdate +-- @param self + +-------------------------------- +-- @brief Gets storage path. +-- @function [parent=#AssetsManagerEx] getStoragePath +-- @param self +-- @return string#string ret (return value: string) + +-------------------------------- +-- @brief Update with the current local manifest. +-- @function [parent=#AssetsManagerEx] update +-- @param self + +-------------------------------- +-- @brief Function for retrieve the local manifest object +-- @function [parent=#AssetsManagerEx] getLocalManifest +-- @param self +-- @return Manifest#Manifest ret (return value: cc.Manifest) + +-------------------------------- +-- @brief Function for retrieve the remote manifest object +-- @function [parent=#AssetsManagerEx] getRemoteManifest +-- @param self +-- @return Manifest#Manifest ret (return value: cc.Manifest) + +-------------------------------- +-- @brief Reupdate all failed assets under the current AssetsManagerEx context +-- @function [parent=#AssetsManagerEx] downloadFailedAssets +-- @param self + +-------------------------------- +-- @brief Create function for creating a new AssetsManagerEx
+-- param manifestUrl The url for the local manifest file
+-- param storagePath The storage path for downloaded assetes
+-- warning The cached manifest in your storage path have higher priority and will be searched first,
+-- only if it doesn't exist, AssetsManagerEx will use the given manifestUrl. +-- @function [parent=#AssetsManagerEx] create +-- @param self +-- @param #string manifestUrl +-- @param #string storagePath +-- @return AssetsManagerEx#AssetsManagerEx ret (return value: cc.AssetsManagerEx) + +return nil diff --git a/cocos/scripting/lua-bindings/auto/api/CSLoader.lua b/cocos/scripting/lua-bindings/auto/api/CSLoader.lua new file mode 100644 index 0000000000..f8903c75e2 --- /dev/null +++ b/cocos/scripting/lua-bindings/auto/api/CSLoader.lua @@ -0,0 +1,146 @@ + +-------------------------------- +-- @module CSLoader +-- @parent_module cc + +-------------------------------- +-- +-- @function [parent=#CSLoader] createNodeFromJson +-- @param self +-- @param #string filename +-- @return Node#Node ret (return value: cc.Node) + +-------------------------------- +-- +-- @function [parent=#CSLoader] createNodeFromProtocolBuffers +-- @param self +-- @param #string filename +-- @return Node#Node ret (return value: cc.Node) + +-------------------------------- +-- +-- @function [parent=#CSLoader] init +-- @param self + +-------------------------------- +-- +-- @function [parent=#CSLoader] setRecordXMLPath +-- @param self +-- @param #bool record + +-------------------------------- +-- +-- @function [parent=#CSLoader] setJsonPath +-- @param self +-- @param #string jsonPath + +-------------------------------- +-- +-- @function [parent=#CSLoader] loadNodeWithFile +-- @param self +-- @param #string fileName +-- @return Node#Node ret (return value: cc.Node) + +-------------------------------- +-- +-- @function [parent=#CSLoader] loadNodeWithContent +-- @param self +-- @param #string content +-- @return Node#Node ret (return value: cc.Node) + +-------------------------------- +-- +-- @function [parent=#CSLoader] isRecordProtocolBuffersPath +-- @param self +-- @return bool#bool ret (return value: bool) + +-------------------------------- +-- +-- @function [parent=#CSLoader] isRecordXMLPath +-- @param self +-- @return bool#bool ret (return value: bool) + +-------------------------------- +-- +-- @function [parent=#CSLoader] getProtocolBuffersPath +-- @param self +-- @return string#string ret (return value: string) + +-------------------------------- +-- +-- @function [parent=#CSLoader] getXMLPath +-- @param self +-- @return string#string ret (return value: string) + +-------------------------------- +-- +-- @function [parent=#CSLoader] createNodeFromXML +-- @param self +-- @param #string filename +-- @return Node#Node ret (return value: cc.Node) + +-------------------------------- +-- +-- @function [parent=#CSLoader] isRecordJsonPath +-- @param self +-- @return bool#bool ret (return value: bool) + +-------------------------------- +-- +-- @function [parent=#CSLoader] setRecordProtocolBuffersPath +-- @param self +-- @param #bool record + +-------------------------------- +-- +-- @function [parent=#CSLoader] getJsonPath +-- @param self +-- @return string#string ret (return value: string) + +-------------------------------- +-- +-- @function [parent=#CSLoader] setRecordJsonPath +-- @param self +-- @param #bool record + +-------------------------------- +-- +-- @function [parent=#CSLoader] setProtocolBuffersPath +-- @param self +-- @param #string protocolBuffersPath + +-------------------------------- +-- +-- @function [parent=#CSLoader] purge +-- @param self + +-------------------------------- +-- +-- @function [parent=#CSLoader] setXMLPath +-- @param self +-- @param #string xmlPath + +-------------------------------- +-- +-- @function [parent=#CSLoader] destroyInstance +-- @param self + +-------------------------------- +-- +-- @function [parent=#CSLoader] createNode +-- @param self +-- @param #string filename +-- @return Node#Node ret (return value: cc.Node) + +-------------------------------- +-- +-- @function [parent=#CSLoader] getInstance +-- @param self +-- @return CSLoader#CSLoader ret (return value: cc.CSLoader) + +-------------------------------- +-- +-- @function [parent=#CSLoader] CSLoader +-- @param self + +return nil diff --git a/cocos/scripting/lua-bindings/auto/api/ClippingRectangleNode.lua b/cocos/scripting/lua-bindings/auto/api/ClippingRectangleNode.lua new file mode 100644 index 0000000000..3678abe33c --- /dev/null +++ b/cocos/scripting/lua-bindings/auto/api/ClippingRectangleNode.lua @@ -0,0 +1,47 @@ + +-------------------------------- +-- @module ClippingRectangleNode +-- @extend Node +-- @parent_module cc + +-------------------------------- +-- +-- @function [parent=#ClippingRectangleNode] isClippingEnabled +-- @param self +-- @return bool#bool ret (return value: bool) + +-------------------------------- +-- +-- @function [parent=#ClippingRectangleNode] setClippingEnabled +-- @param self +-- @param #bool enabled + +-------------------------------- +-- +-- @function [parent=#ClippingRectangleNode] getClippingRegion +-- @param self +-- @return rect_table#rect_table ret (return value: rect_table) + +-------------------------------- +-- +-- @function [parent=#ClippingRectangleNode] setClippingRegion +-- @param self +-- @param #rect_table clippingRegion + +-------------------------------- +-- @overload self +-- @overload self, rect_table +-- @function [parent=#ClippingRectangleNode] create +-- @param self +-- @param #rect_table clippingRegion +-- @return ClippingRectangleNode#ClippingRectangleNode ret (retunr value: cc.ClippingRectangleNode) + +-------------------------------- +-- +-- @function [parent=#ClippingRectangleNode] visit +-- @param self +-- @param #cc.Renderer renderer +-- @param #mat4_table parentTransform +-- @param #unsigned int parentFlags + +return nil diff --git a/cocos/scripting/lua-bindings/auto/api/Director.lua b/cocos/scripting/lua-bindings/auto/api/Director.lua index bdabea04f8..e7b3350567 100644 --- a/cocos/scripting/lua-bindings/auto/api/Director.lua +++ b/cocos/scripting/lua-bindings/auto/api/Director.lua @@ -45,7 +45,8 @@ -- @return size_table#size_table ret (return value: size_table) -------------------------------- --- +-- Returns the Console
+-- since v3.0 -- @function [parent=#Director] getConsole -- @param self -- @return Console#Console ret (return value: cc.Console) diff --git a/cocos/scripting/lua-bindings/auto/api/EventAssetsManagerEx.lua b/cocos/scripting/lua-bindings/auto/api/EventAssetsManagerEx.lua new file mode 100644 index 0000000000..e5be0a16ef --- /dev/null +++ b/cocos/scripting/lua-bindings/auto/api/EventAssetsManagerEx.lua @@ -0,0 +1,55 @@ + +-------------------------------- +-- @module EventAssetsManagerEx +-- @extend EventCustom +-- @parent_module cc + +-------------------------------- +-- +-- @function [parent=#EventAssetsManagerEx] getAssetsManagerEx +-- @param self +-- @return AssetsManagerEx#AssetsManagerEx ret (return value: cc.AssetsManagerEx) + +-------------------------------- +-- +-- @function [parent=#EventAssetsManagerEx] getAssetId +-- @param self +-- @return string#string ret (return value: string) + +-------------------------------- +-- +-- @function [parent=#EventAssetsManagerEx] getCURLECode +-- @param self +-- @return int#int ret (return value: int) + +-------------------------------- +-- +-- @function [parent=#EventAssetsManagerEx] getMessage +-- @param self +-- @return string#string ret (return value: string) + +-------------------------------- +-- +-- @function [parent=#EventAssetsManagerEx] getCURLMCode +-- @param self +-- @return int#int ret (return value: int) + +-------------------------------- +-- +-- @function [parent=#EventAssetsManagerEx] getPercentByFile +-- @param self +-- @return float#float ret (return value: float) + +-------------------------------- +-- +-- @function [parent=#EventAssetsManagerEx] getEventCode +-- @param self +-- @return int#int ret (return value: int) + +-------------------------------- +-- +-- @function [parent=#EventAssetsManagerEx] getPercent +-- @param self +-- @return float#float ret (return value: float) + +return nil diff --git a/cocos/scripting/lua-bindings/auto/api/EventListenerAssetsManagerEx.lua b/cocos/scripting/lua-bindings/auto/api/EventListenerAssetsManagerEx.lua new file mode 100644 index 0000000000..3d487d9aa8 --- /dev/null +++ b/cocos/scripting/lua-bindings/auto/api/EventListenerAssetsManagerEx.lua @@ -0,0 +1,19 @@ + +-------------------------------- +-- @module EventListenerAssetsManagerEx +-- @extend EventListenerCustom +-- @parent_module cc + +-------------------------------- +-- +-- @function [parent=#EventListenerAssetsManagerEx] clone +-- @param self +-- @return EventListenerAssetsManagerEx#EventListenerAssetsManagerEx ret (return value: cc.EventListenerAssetsManagerEx) + +-------------------------------- +-- / Overrides +-- @function [parent=#EventListenerAssetsManagerEx] checkAvailable +-- @param self +-- @return bool#bool ret (return value: bool) + +return nil diff --git a/cocos/scripting/lua-bindings/auto/api/Helper.lua b/cocos/scripting/lua-bindings/auto/api/Helper.lua index 539ae88abb..1a48291492 100644 --- a/cocos/scripting/lua-bindings/auto/api/Helper.lua +++ b/cocos/scripting/lua-bindings/auto/api/Helper.lua @@ -5,7 +5,7 @@ -------------------------------- -- brief Get a UTF8 substring from a std::string with a given start position and length
--- Sample: std::string str = "中国中国中国”; substr = getSubStringOfUTF8String(str,0,2) will = "中国"
+-- Sample: std::string str = "中国中国中国"; substr = getSubStringOfUTF8String(str,0,2) will = "中国"
-- param start The start position of the substring.
-- param length The length of the substring in UTF8 count
-- return a UTF8 substring @@ -16,6 +16,12 @@ -- @param #unsigned long length -- @return string#string ret (return value: string) +-------------------------------- +-- +-- @function [parent=#Helper] doLayout +-- @param self +-- @param #cc.Node rootNode + -------------------------------- -- Finds a widget whose tag equals to param tag from root widget.
-- param root widget which will be seeked.
diff --git a/cocos/scripting/lua-bindings/auto/api/Label.lua b/cocos/scripting/lua-bindings/auto/api/Label.lua index ccd1e9e660..41505c7399 100644 --- a/cocos/scripting/lua-bindings/auto/api/Label.lua +++ b/cocos/scripting/lua-bindings/auto/api/Label.lua @@ -292,6 +292,11 @@ -- @param #int hAlignment -- @param #int vAlignment +-------------------------------- +-- +-- @function [parent=#Label] requestSystemFontRefresh +-- @param self + -------------------------------- -- -- @function [parent=#Label] createWithBMFont diff --git a/cocos/scripting/lua-bindings/auto/api/Manifest.lua b/cocos/scripting/lua-bindings/auto/api/Manifest.lua new file mode 100644 index 0000000000..a8db33f8de --- /dev/null +++ b/cocos/scripting/lua-bindings/auto/api/Manifest.lua @@ -0,0 +1,43 @@ + +-------------------------------- +-- @module Manifest +-- @extend Ref +-- @parent_module cc + +-------------------------------- +-- @brief Gets remote manifest file url. +-- @function [parent=#Manifest] getManifestFileUrl +-- @param self +-- @return string#string ret (return value: string) + +-------------------------------- +-- @brief Check whether the version informations have been fully loaded +-- @function [parent=#Manifest] isVersionLoaded +-- @param self +-- @return bool#bool ret (return value: bool) + +-------------------------------- +-- @brief Check whether the manifest have been fully loaded +-- @function [parent=#Manifest] isLoaded +-- @param self +-- @return bool#bool ret (return value: bool) + +-------------------------------- +-- @brief Gets remote package url. +-- @function [parent=#Manifest] getPackageUrl +-- @param self +-- @return string#string ret (return value: string) + +-------------------------------- +-- @brief Gets manifest version. +-- @function [parent=#Manifest] getVersion +-- @param self +-- @return string#string ret (return value: string) + +-------------------------------- +-- @brief Gets remote version file url. +-- @function [parent=#Manifest] getVersionFileUrl +-- @param self +-- @return string#string ret (return value: string) + +return nil diff --git a/cocos/scripting/lua-bindings/auto/api/NodeReader.lua b/cocos/scripting/lua-bindings/auto/api/NodeReader.lua deleted file mode 100644 index 989c2ae99b..0000000000 --- a/cocos/scripting/lua-bindings/auto/api/NodeReader.lua +++ /dev/null @@ -1,71 +0,0 @@ - --------------------------------- --- @module NodeReader --- @parent_module ccs - --------------------------------- --- --- @function [parent=#NodeReader] setJsonPath --- @param self --- @param #string jsonPath - --------------------------------- --- --- @function [parent=#NodeReader] createNode --- @param self --- @param #string filename --- @return Node#Node ret (return value: cc.Node) - --------------------------------- --- --- @function [parent=#NodeReader] loadNodeWithFile --- @param self --- @param #string fileName --- @return Node#Node ret (return value: cc.Node) - --------------------------------- --- --- @function [parent=#NodeReader] purge --- @param self - --------------------------------- --- --- @function [parent=#NodeReader] init --- @param self - --------------------------------- --- --- @function [parent=#NodeReader] loadNodeWithContent --- @param self --- @param #string content --- @return Node#Node ret (return value: cc.Node) - --------------------------------- --- --- @function [parent=#NodeReader] isRecordJsonPath --- @param self --- @return bool#bool ret (return value: bool) - --------------------------------- --- --- @function [parent=#NodeReader] getJsonPath --- @param self --- @return string#string ret (return value: string) - --------------------------------- --- --- @function [parent=#NodeReader] setRecordJsonPath --- @param self --- @param #bool record - --------------------------------- --- --- @function [parent=#NodeReader] destroyInstance --- @param self - --------------------------------- --- --- @function [parent=#NodeReader] NodeReader --- @param self - -return nil diff --git a/cocos/scripting/lua-bindings/auto/api/OBB.lua b/cocos/scripting/lua-bindings/auto/api/OBB.lua deleted file mode 100644 index 3346b9f5d9..0000000000 --- a/cocos/scripting/lua-bindings/auto/api/OBB.lua +++ /dev/null @@ -1,40 +0,0 @@ - --------------------------------- --- @module OBB --- @parent_module cc - --------------------------------- --- --- @function [parent=#OBB] reset --- @param self - --------------------------------- --- --- @function [parent=#OBB] set --- @param self --- @param #vec3_table center --- @param #vec3_table _xAxis --- @param #vec3_table _yAxis --- @param #vec3_table _zAxis --- @param #vec3_table _extents - --------------------------------- --- Transforms the obb by the given transformation matrix. --- @function [parent=#OBB] transform --- @param self --- @param #mat4_table mat - --------------------------------- --- --- @function [parent=#OBB] getCorners --- @param self --- @param #vec3_table verts - --------------------------------- --- --- @function [parent=#OBB] containPoint --- @param self --- @param #vec3_table point --- @return bool#bool ret (return value: bool) - -return nil diff --git a/cocos/scripting/lua-bindings/auto/api/Skeleton.lua b/cocos/scripting/lua-bindings/auto/api/Skeleton.lua deleted file mode 100644 index 51d4c7a9e6..0000000000 --- a/cocos/scripting/lua-bindings/auto/api/Skeleton.lua +++ /dev/null @@ -1,64 +0,0 @@ - --------------------------------- --- @module Skeleton --- @extend Node,BlendProtocol --- @parent_module sp - --------------------------------- --- --- @function [parent=#Skeleton] setToSetupPose --- @param self - --------------------------------- --- --- @function [parent=#Skeleton] setBlendFunc --- @param self --- @param #cc.BlendFunc func - --------------------------------- --- --- @function [parent=#Skeleton] onDraw --- @param self --- @param #mat4_table transform --- @param #unsigned int flags - --------------------------------- --- --- @function [parent=#Skeleton] setSlotsToSetupPose --- @param self - --------------------------------- --- --- @function [parent=#Skeleton] getBlendFunc --- @param self --- @return BlendFunc#BlendFunc ret (return value: cc.BlendFunc) - --------------------------------- --- --- @function [parent=#Skeleton] setSkin --- @param self --- @param #char skinName --- @return bool#bool ret (return value: bool) - --------------------------------- --- --- @function [parent=#Skeleton] setBonesToSetupPose --- @param self - --------------------------------- --- --- @function [parent=#Skeleton] getBoundingBox --- @param self --- @return rect_table#rect_table ret (return value: rect_table) - --------------------------------- --- --- @function [parent=#Skeleton] onEnter --- @param self - --------------------------------- --- --- @function [parent=#Skeleton] onExit --- @param self - -return nil diff --git a/cocos/scripting/lua-bindings/auto/api/SkeletonAnimation.lua b/cocos/scripting/lua-bindings/auto/api/SkeletonAnimation.lua index c57eb13010..cfaee60ac3 100644 --- a/cocos/scripting/lua-bindings/auto/api/SkeletonAnimation.lua +++ b/cocos/scripting/lua-bindings/auto/api/SkeletonAnimation.lua @@ -1,17 +1,69 @@ -------------------------------- -- @module SkeletonAnimation --- @extend Skeleton +-- @extend SkeletonRenderer -- @parent_module sp +-------------------------------- +-- +-- @function [parent=#SkeletonAnimation] setStartListener +-- @param self +-- @param #function listener + +-------------------------------- +-- +-- @function [parent=#SkeletonAnimation] setTrackEventListener +-- @param self +-- @param #spTrackEntry entry +-- @param #function listener + +-------------------------------- +-- +-- @function [parent=#SkeletonAnimation] setTrackCompleteListener +-- @param self +-- @param #spTrackEntry entry +-- @param #function listener + +-------------------------------- +-- +-- @function [parent=#SkeletonAnimation] setTrackStartListener +-- @param self +-- @param #spTrackEntry entry +-- @param #function listener + +-------------------------------- +-- +-- @function [parent=#SkeletonAnimation] setCompleteListener +-- @param self +-- @param #function listener + +-------------------------------- +-- +-- @function [parent=#SkeletonAnimation] setTrackEndListener +-- @param self +-- @param #spTrackEntry entry +-- @param #function listener + +-------------------------------- +-- +-- @function [parent=#SkeletonAnimation] setEventListener +-- @param self +-- @param #function listener + -------------------------------- -- -- @function [parent=#SkeletonAnimation] setMix -- @param self --- @param #char fromAnimation --- @param #char toAnimation +-- @param #string fromAnimation +-- @param #string toAnimation -- @param #float duration +-------------------------------- +-- +-- @function [parent=#SkeletonAnimation] setEndListener +-- @param self +-- @param #function listener + -------------------------------- -- -- @function [parent=#SkeletonAnimation] clearTracks diff --git a/cocos/scripting/lua-bindings/auto/api/SkeletonRenderer.lua b/cocos/scripting/lua-bindings/auto/api/SkeletonRenderer.lua new file mode 100644 index 0000000000..d110b1de54 --- /dev/null +++ b/cocos/scripting/lua-bindings/auto/api/SkeletonRenderer.lua @@ -0,0 +1,99 @@ + +-------------------------------- +-- @module SkeletonRenderer +-- @extend Node,BlendProtocol +-- @parent_module sp + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] setTimeScale +-- @param self +-- @param #float scale + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] isOpacityModifyRGB +-- @param self +-- @return bool#bool ret (return value: bool) + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] setDebugSlotsEnabled +-- @param self +-- @param #bool enabled + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] getDebugSlotsEnabled +-- @param self +-- @return bool#bool ret (return value: bool) + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] setBonesToSetupPose +-- @param self + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] setSlotsToSetupPose +-- @param self + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] setSkin +-- @param self +-- @param #string skinName +-- @return bool#bool ret (return value: bool) + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] setToSetupPose +-- @param self + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] setOpacityModifyRGB +-- @param self +-- @param #bool value + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] setDebugBonesEnabled +-- @param self +-- @param #bool enabled + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] getSkeleton +-- @param self +-- @return spSkeleton#spSkeleton ret (return value: spSkeleton) + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] getDebugBonesEnabled +-- @param self +-- @return bool#bool ret (return value: bool) + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] getTimeScale +-- @param self +-- @return float#float ret (return value: float) + +-------------------------------- +-- @overload self, string, string, float +-- @overload self, string, spAtlas, float +-- @function [parent=#SkeletonRenderer] createWithFile +-- @param self +-- @param #string skeletonDataFile +-- @param #spAtlas atlas +-- @param #float scale +-- @return SkeletonRenderer#SkeletonRenderer ret (retunr value: sp.SkeletonRenderer) + +-------------------------------- +-- +-- @function [parent=#SkeletonRenderer] getBoundingBox +-- @param self +-- @return rect_table#rect_table ret (return value: rect_table) + +return nil diff --git a/cocos/scripting/lua-bindings/auto/api/Widget.lua b/cocos/scripting/lua-bindings/auto/api/Widget.lua index 19dcd02aae..207d42860e 100644 --- a/cocos/scripting/lua-bindings/auto/api/Widget.lua +++ b/cocos/scripting/lua-bindings/auto/api/Widget.lua @@ -291,6 +291,13 @@ -- @param self -- @return bool#bool ret (return value: bool) +-------------------------------- +-- param enable Unify Size of a widget
+-- return void +-- @function [parent=#Widget] setUnifySizeEnabled +-- @param self +-- @param #bool enable + -------------------------------- -- Return whether the widget is propagate touch events to its parents or not
-- since v3.3 diff --git a/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_3d_auto_api.lua b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_3d_auto_api.lua index f4c658eda1..df2829323b 100644 --- a/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_3d_auto_api.lua +++ b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_3d_auto_api.lua @@ -1,16 +1,6 @@ -------------------------------- -- @module cc --------------------------------------------------------- --- the cc AABB --- @field [parent=#cc] AABB#AABB AABB preloaded module - - --------------------------------------------------------- --- the cc OBB --- @field [parent=#cc] OBB#OBB OBB preloaded module - - -------------------------------------------------------- -- the cc Skeleton3D -- @field [parent=#cc] Skeleton3D#Skeleton3D Skeleton3D preloaded module diff --git a/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_auto_api.lua b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_auto_api.lua index b1455b5ffc..fcf72c61cf 100644 --- a/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_auto_api.lua +++ b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_auto_api.lua @@ -1016,6 +1016,11 @@ -- @field [parent=#cc] ClippingNode#ClippingNode ClippingNode preloaded module +-------------------------------------------------------- +-- the cc ClippingRectangleNode +-- @field [parent=#cc] ClippingRectangleNode#ClippingRectangleNode ClippingRectangleNode preloaded module + + -------------------------------------------------------- -- the cc MotionStreak -- @field [parent=#cc] MotionStreak#MotionStreak MotionStreak preloaded module @@ -1216,4 +1221,9 @@ -- @field [parent=#cc] Component#Component Component preloaded module +-------------------------------------------------------- +-- the cc CSLoader +-- @field [parent=#cc] CSLoader#CSLoader CSLoader preloaded module + + return nil diff --git a/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_extension_auto_api.lua b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_extension_auto_api.lua index 99a0edbd12..f6189c9328 100644 --- a/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_extension_auto_api.lua +++ b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_extension_auto_api.lua @@ -66,4 +66,24 @@ -- @field [parent=#cc] AssetsManager#AssetsManager AssetsManager preloaded module +-------------------------------------------------------- +-- the cc EventAssetsManagerEx +-- @field [parent=#cc] EventAssetsManagerEx#EventAssetsManagerEx EventAssetsManagerEx preloaded module + + +-------------------------------------------------------- +-- the cc Manifest +-- @field [parent=#cc] Manifest#Manifest Manifest preloaded module + + +-------------------------------------------------------- +-- the cc AssetsManagerEx +-- @field [parent=#cc] AssetsManagerEx#AssetsManagerEx AssetsManagerEx preloaded module + + +-------------------------------------------------------- +-- the cc EventListenerAssetsManagerEx +-- @field [parent=#cc] EventListenerAssetsManagerEx#EventListenerAssetsManagerEx EventListenerAssetsManagerEx preloaded module + + return nil diff --git a/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_spine_auto_api.lua b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_spine_auto_api.lua index a8bdf11a2a..c874e62c14 100644 --- a/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_spine_auto_api.lua +++ b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_spine_auto_api.lua @@ -2,8 +2,8 @@ -- @module sp -------------------------------------------------------- --- the sp Skeleton --- @field [parent=#sp] Skeleton#Skeleton Skeleton preloaded module +-- the sp SkeletonRenderer +-- @field [parent=#sp] SkeletonRenderer#SkeletonRenderer SkeletonRenderer preloaded module -------------------------------------------------------- diff --git a/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_studio_auto_api.lua b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_studio_auto_api.lua index 9a2ca7548d..c4941b8354 100644 --- a/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_studio_auto_api.lua +++ b/cocos/scripting/lua-bindings/auto/api/lua_cocos2dx_studio_auto_api.lua @@ -176,11 +176,6 @@ -- @field [parent=#ccs] SceneReader#SceneReader SceneReader preloaded module --------------------------------------------------------- --- the ccs NodeReader --- @field [parent=#ccs] NodeReader#NodeReader NodeReader preloaded module - - -------------------------------------------------------- -- the ccs ActionTimelineCache -- @field [parent=#ccs] ActionTimelineCache#ActionTimelineCache ActionTimelineCache preloaded module diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_3d_auto.cpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_3d_auto.cpp index bc2519ac6b..9b06965efa 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_3d_auto.cpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_3d_auto.cpp @@ -5,712 +5,6 @@ -int lua_cocos2dx_3d_AABB_reset(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::AABB* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::AABB*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_reset'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - cobj->reset(); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:reset",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_AABB_reset'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_3d_AABB_set(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::AABB* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::AABB*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_set'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 2) - { - cocos2d::Vec3 arg0; - cocos2d::Vec3 arg1; - - ok &= luaval_to_vec3(tolua_S, 2, &arg0, "cc.AABB:set"); - - ok &= luaval_to_vec3(tolua_S, 3, &arg1, "cc.AABB:set"); - if(!ok) - return 0; - cobj->set(arg0, arg1); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:set",argc, 2); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_AABB_set'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_3d_AABB_transform(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::AABB* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::AABB*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_transform'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - cocos2d::Mat4 arg0; - - ok &= luaval_to_mat4(tolua_S, 2, &arg0, "cc.AABB:transform"); - if(!ok) - return 0; - cobj->transform(arg0); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:transform",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_AABB_transform'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_3d_AABB_getCenter(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::AABB* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::AABB*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_getCenter'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - cocos2d::Vec3 ret = cobj->getCenter(); - vec3_to_luaval(tolua_S, ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:getCenter",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_AABB_getCenter'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_3d_AABB_isEmpty(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::AABB* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::AABB*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_isEmpty'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - bool ret = cobj->isEmpty(); - tolua_pushboolean(tolua_S,(bool)ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:isEmpty",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_AABB_isEmpty'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_3d_AABB_getCorners(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::AABB* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::AABB*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_getCorners'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - cocos2d::Vec3* arg0; - - ok &= luaval_to_object(tolua_S, 2, "cc.Vec3",&arg0); - if(!ok) - return 0; - cobj->getCorners(arg0); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:getCorners",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_AABB_getCorners'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_3d_AABB_updateMinMax(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::AABB* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::AABB*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_updateMinMax'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 2) - { - const cocos2d::Vec3* arg0; - ssize_t arg1; - - ok &= luaval_to_object(tolua_S, 2, "cc.Vec3",&arg0); - - ok &= luaval_to_ssize(tolua_S, 3, &arg1, "cc.AABB:updateMinMax"); - if(!ok) - return 0; - cobj->updateMinMax(arg0, arg1); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:updateMinMax",argc, 2); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_AABB_updateMinMax'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_3d_AABB_containPoint(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::AABB* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::AABB*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_containPoint'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - cocos2d::Vec3 arg0; - - ok &= luaval_to_vec3(tolua_S, 2, &arg0, "cc.AABB:containPoint"); - if(!ok) - return 0; - bool ret = cobj->containPoint(arg0); - tolua_pushboolean(tolua_S,(bool)ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:containPoint",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_AABB_containPoint'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_3d_AABB_constructor(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::AABB* cobj = nullptr; - bool ok = true; -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - argc = lua_gettop(tolua_S)-1; - do{ - if (argc == 2) { - cocos2d::Vec3 arg0; - ok &= luaval_to_vec3(tolua_S, 2, &arg0, "cc.AABB:AABB"); - - if (!ok) { break; } - cocos2d::Vec3 arg1; - ok &= luaval_to_vec3(tolua_S, 3, &arg1, "cc.AABB:AABB"); - - if (!ok) { break; } - cobj = new cocos2d::AABB(arg0, arg1); - tolua_pushusertype(tolua_S,(void*)cobj,"cc.AABB"); - tolua_register_gc(tolua_S,lua_gettop(tolua_S)); - return 1; - } - }while(0); - ok = true; - do{ - if (argc == 0) { - cobj = new cocos2d::AABB(); - tolua_pushusertype(tolua_S,(void*)cobj,"cc.AABB"); - tolua_register_gc(tolua_S,lua_gettop(tolua_S)); - return 1; - } - }while(0); - ok = true; - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:AABB",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_AABB_constructor'.",&tolua_err); -#endif - - return 0; -} - -static int lua_cocos2dx_3d_AABB_finalize(lua_State* tolua_S) -{ - printf("luabindings: finalizing LUA object (AABB)"); - return 0; -} - -int lua_register_cocos2dx_3d_AABB(lua_State* tolua_S) -{ - tolua_usertype(tolua_S,"cc.AABB"); - tolua_cclass(tolua_S,"AABB","cc.AABB","",nullptr); - - tolua_beginmodule(tolua_S,"AABB"); - tolua_function(tolua_S,"new",lua_cocos2dx_3d_AABB_constructor); - tolua_function(tolua_S,"reset",lua_cocos2dx_3d_AABB_reset); - tolua_function(tolua_S,"set",lua_cocos2dx_3d_AABB_set); - tolua_function(tolua_S,"transform",lua_cocos2dx_3d_AABB_transform); - tolua_function(tolua_S,"getCenter",lua_cocos2dx_3d_AABB_getCenter); - tolua_function(tolua_S,"isEmpty",lua_cocos2dx_3d_AABB_isEmpty); - tolua_function(tolua_S,"getCorners",lua_cocos2dx_3d_AABB_getCorners); - tolua_function(tolua_S,"updateMinMax",lua_cocos2dx_3d_AABB_updateMinMax); - tolua_function(tolua_S,"containPoint",lua_cocos2dx_3d_AABB_containPoint); - tolua_endmodule(tolua_S); - std::string typeName = typeid(cocos2d::AABB).name(); - g_luaType[typeName] = "cc.AABB"; - g_typeCast["AABB"] = "cc.AABB"; - return 1; -} - -int lua_cocos2dx_3d_OBB_reset(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::OBB* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::OBB*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_OBB_reset'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - cobj->reset(); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.OBB:reset",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_OBB_reset'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_3d_OBB_set(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::OBB* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::OBB*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_OBB_set'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 5) - { - cocos2d::Vec3 arg0; - cocos2d::Vec3 arg1; - cocos2d::Vec3 arg2; - cocos2d::Vec3 arg3; - cocos2d::Vec3 arg4; - - ok &= luaval_to_vec3(tolua_S, 2, &arg0, "cc.OBB:set"); - - ok &= luaval_to_vec3(tolua_S, 3, &arg1, "cc.OBB:set"); - - ok &= luaval_to_vec3(tolua_S, 4, &arg2, "cc.OBB:set"); - - ok &= luaval_to_vec3(tolua_S, 5, &arg3, "cc.OBB:set"); - - ok &= luaval_to_vec3(tolua_S, 6, &arg4, "cc.OBB:set"); - if(!ok) - return 0; - cobj->set(arg0, arg1, arg2, arg3, arg4); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.OBB:set",argc, 5); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_OBB_set'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_3d_OBB_transform(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::OBB* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::OBB*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_OBB_transform'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - cocos2d::Mat4 arg0; - - ok &= luaval_to_mat4(tolua_S, 2, &arg0, "cc.OBB:transform"); - if(!ok) - return 0; - cobj->transform(arg0); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.OBB:transform",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_OBB_transform'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_3d_OBB_getCorners(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::OBB* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::OBB*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_OBB_getCorners'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - cocos2d::Vec3* arg0; - - ok &= luaval_to_object(tolua_S, 2, "cc.Vec3",&arg0); - if(!ok) - return 0; - cobj->getCorners(arg0); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.OBB:getCorners",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_OBB_getCorners'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_3d_OBB_containPoint(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::OBB* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::OBB*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_OBB_containPoint'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - cocos2d::Vec3 arg0; - - ok &= luaval_to_vec3(tolua_S, 2, &arg0, "cc.OBB:containPoint"); - if(!ok) - return 0; - bool ret = cobj->containPoint(arg0); - tolua_pushboolean(tolua_S,(bool)ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.OBB:containPoint",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_OBB_containPoint'.",&tolua_err); -#endif - - return 0; -} -static int lua_cocos2dx_3d_OBB_finalize(lua_State* tolua_S) -{ - printf("luabindings: finalizing LUA object (OBB)"); - return 0; -} - -int lua_register_cocos2dx_3d_OBB(lua_State* tolua_S) -{ - tolua_usertype(tolua_S,"cc.OBB"); - tolua_cclass(tolua_S,"OBB","cc.OBB","",nullptr); - - tolua_beginmodule(tolua_S,"OBB"); - tolua_function(tolua_S,"reset",lua_cocos2dx_3d_OBB_reset); - tolua_function(tolua_S,"set",lua_cocos2dx_3d_OBB_set); - tolua_function(tolua_S,"transform",lua_cocos2dx_3d_OBB_transform); - tolua_function(tolua_S,"getCorners",lua_cocos2dx_3d_OBB_getCorners); - tolua_function(tolua_S,"containPoint",lua_cocos2dx_3d_OBB_containPoint); - tolua_endmodule(tolua_S); - std::string typeName = typeid(cocos2d::OBB).name(); - g_luaType[typeName] = "cc.OBB"; - g_typeCast["OBB"] = "cc.OBB"; - return 1; -} - int lua_cocos2dx_3d_Skeleton3D_getBoneByName(lua_State* tolua_S) { int argc = 0; @@ -2460,6 +1754,59 @@ int lua_cocos2dx_3d_Animate3D_getTransitionTime(lua_State* tolua_S) #endif return 0; } +int lua_cocos2dx_3d_Animate3D_createWithFrames(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"cc.Animate3D",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S) - 1; + + if (argc == 3) + { + cocos2d::Animation3D* arg0; + int arg1; + int arg2; + ok &= luaval_to_object(tolua_S, 2, "cc.Animation3D",&arg0); + ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "cc.Animate3D:createWithFrames"); + ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.Animate3D:createWithFrames"); + if(!ok) + return 0; + cocos2d::Animate3D* ret = cocos2d::Animate3D::createWithFrames(arg0, arg1, arg2); + object_to_luaval(tolua_S, "cc.Animate3D",(cocos2d::Animate3D*)ret); + return 1; + } + if (argc == 4) + { + cocos2d::Animation3D* arg0; + int arg1; + int arg2; + double arg3; + ok &= luaval_to_object(tolua_S, 2, "cc.Animation3D",&arg0); + ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "cc.Animate3D:createWithFrames"); + ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.Animate3D:createWithFrames"); + ok &= luaval_to_number(tolua_S, 5,&arg3, "cc.Animate3D:createWithFrames"); + if(!ok) + return 0; + cocos2d::Animate3D* ret = cocos2d::Animate3D::createWithFrames(arg0, arg1, arg2, arg3); + object_to_luaval(tolua_S, "cc.Animate3D",(cocos2d::Animate3D*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "cc.Animate3D:createWithFrames",argc, 3); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_Animate3D_createWithFrames'.",&tolua_err); +#endif + return 0; +} static int lua_cocos2dx_3d_Animate3D_finalize(lua_State* tolua_S) { printf("luabindings: finalizing LUA object (Animate3D)"); @@ -2478,6 +1825,7 @@ int lua_register_cocos2dx_3d_Animate3D(lua_State* tolua_S) tolua_function(tolua_S,"getWeight",lua_cocos2dx_3d_Animate3D_getWeight); tolua_function(tolua_S,"create", lua_cocos2dx_3d_Animate3D_create); tolua_function(tolua_S,"getTransitionTime", lua_cocos2dx_3d_Animate3D_getTransitionTime); + tolua_function(tolua_S,"createWithFrames", lua_cocos2dx_3d_Animate3D_createWithFrames); tolua_endmodule(tolua_S); std::string typeName = typeid(cocos2d::Animate3D).name(); g_luaType[typeName] = "cc.Animate3D"; @@ -2814,8 +2162,6 @@ TOLUA_API int register_all_cocos2dx_3d(lua_State* tolua_S) lua_register_cocos2dx_3d_Animate3D(tolua_S); lua_register_cocos2dx_3d_Sprite3D(tolua_S); lua_register_cocos2dx_3d_AttachNode(tolua_S); - lua_register_cocos2dx_3d_AABB(tolua_S); - lua_register_cocos2dx_3d_OBB(tolua_S); lua_register_cocos2dx_3d_BillBoard(tolua_S); lua_register_cocos2dx_3d_Animation3D(tolua_S); lua_register_cocos2dx_3d_Skeleton3D(tolua_S); diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_3d_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_3d_auto.hpp index 3963c71800..2a79697214 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_3d_auto.hpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_3d_auto.hpp @@ -45,21 +45,6 @@ int register_all_cocos2dx_3d(lua_State* tolua_S); - - - - - - - - - - - - - - - diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp index 4eb8bb1297..7f71237aab 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp @@ -1,6 +1,7 @@ #include "lua_cocos2dx_auto.hpp" #include "cocos2d.h" #include "CCProtectedNode.h" +#include "CSLoader.h" #include "tolua_fix.h" #include "LuaBasicConversions.h" @@ -38283,6 +38284,49 @@ int lua_cocos2dx_Label_setAlignment(lua_State* tolua_S) return 0; } +int lua_cocos2dx_Label_requestSystemFontRefresh(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::Label* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Label",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Label*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_Label_requestSystemFontRefresh'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->requestSystemFontRefresh(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.Label:requestSystemFontRefresh",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_Label_requestSystemFontRefresh'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_Label_createWithBMFont(lua_State* tolua_S) { int argc = 0; @@ -38622,6 +38666,7 @@ int lua_register_cocos2dx_Label(lua_State* tolua_S) tolua_function(tolua_S,"getBMFontFilePath",lua_cocos2dx_Label_getBMFontFilePath); tolua_function(tolua_S,"setHorizontalAlignment",lua_cocos2dx_Label_setHorizontalAlignment); tolua_function(tolua_S,"setAlignment",lua_cocos2dx_Label_setAlignment); + tolua_function(tolua_S,"requestSystemFontRefresh",lua_cocos2dx_Label_requestSystemFontRefresh); tolua_function(tolua_S,"createWithBMFont", lua_cocos2dx_Label_createWithBMFont); tolua_function(tolua_S,"create", lua_cocos2dx_Label_create); tolua_function(tolua_S,"createWithCharMap", lua_cocos2dx_Label_createWithCharMap); @@ -45121,6 +45166,255 @@ int lua_register_cocos2dx_ClippingNode(lua_State* tolua_S) return 1; } +int lua_cocos2dx_ClippingRectangleNode_isClippingEnabled(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::ClippingRectangleNode* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.ClippingRectangleNode",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::ClippingRectangleNode*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_ClippingRectangleNode_isClippingEnabled'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const bool ret = cobj->isClippingEnabled(); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.ClippingRectangleNode:isClippingEnabled",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ClippingRectangleNode_isClippingEnabled'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_ClippingRectangleNode_setClippingEnabled(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::ClippingRectangleNode* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.ClippingRectangleNode",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::ClippingRectangleNode*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_ClippingRectangleNode_setClippingEnabled'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + bool arg0; + + ok &= luaval_to_boolean(tolua_S, 2,&arg0, "cc.ClippingRectangleNode:setClippingEnabled"); + if(!ok) + return 0; + cobj->setClippingEnabled(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.ClippingRectangleNode:setClippingEnabled",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ClippingRectangleNode_setClippingEnabled'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_ClippingRectangleNode_getClippingRegion(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::ClippingRectangleNode* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.ClippingRectangleNode",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::ClippingRectangleNode*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_ClippingRectangleNode_getClippingRegion'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const cocos2d::Rect& ret = cobj->getClippingRegion(); + rect_to_luaval(tolua_S, ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.ClippingRectangleNode:getClippingRegion",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ClippingRectangleNode_getClippingRegion'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_ClippingRectangleNode_setClippingRegion(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::ClippingRectangleNode* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.ClippingRectangleNode",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::ClippingRectangleNode*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_ClippingRectangleNode_setClippingRegion'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + cocos2d::Rect arg0; + + ok &= luaval_to_rect(tolua_S, 2, &arg0, "cc.ClippingRectangleNode:setClippingRegion"); + if(!ok) + return 0; + cobj->setClippingRegion(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.ClippingRectangleNode:setClippingRegion",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ClippingRectangleNode_setClippingRegion'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_ClippingRectangleNode_create(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"cc.ClippingRectangleNode",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S)-1; + + do + { + if (argc == 0) + { + cocos2d::ClippingRectangleNode* ret = cocos2d::ClippingRectangleNode::create(); + object_to_luaval(tolua_S, "cc.ClippingRectangleNode",(cocos2d::ClippingRectangleNode*)ret); + return 1; + } + } while (0); + ok = true; + do + { + if (argc == 1) + { + cocos2d::Rect arg0; + ok &= luaval_to_rect(tolua_S, 2, &arg0, "cc.ClippingRectangleNode:create"); + if (!ok) { break; } + cocos2d::ClippingRectangleNode* ret = cocos2d::ClippingRectangleNode::create(arg0); + object_to_luaval(tolua_S, "cc.ClippingRectangleNode",(cocos2d::ClippingRectangleNode*)ret); + return 1; + } + } while (0); + ok = true; + CCLOG("%s has wrong number of arguments: %d, was expecting %d", "cc.ClippingRectangleNode:create",argc, 1); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ClippingRectangleNode_create'.",&tolua_err); +#endif + return 0; +} +static int lua_cocos2dx_ClippingRectangleNode_finalize(lua_State* tolua_S) +{ + printf("luabindings: finalizing LUA object (ClippingRectangleNode)"); + return 0; +} + +int lua_register_cocos2dx_ClippingRectangleNode(lua_State* tolua_S) +{ + tolua_usertype(tolua_S,"cc.ClippingRectangleNode"); + tolua_cclass(tolua_S,"ClippingRectangleNode","cc.ClippingRectangleNode","cc.Node",nullptr); + + tolua_beginmodule(tolua_S,"ClippingRectangleNode"); + tolua_function(tolua_S,"isClippingEnabled",lua_cocos2dx_ClippingRectangleNode_isClippingEnabled); + tolua_function(tolua_S,"setClippingEnabled",lua_cocos2dx_ClippingRectangleNode_setClippingEnabled); + tolua_function(tolua_S,"getClippingRegion",lua_cocos2dx_ClippingRectangleNode_getClippingRegion); + tolua_function(tolua_S,"setClippingRegion",lua_cocos2dx_ClippingRectangleNode_setClippingRegion); + tolua_function(tolua_S,"create", lua_cocos2dx_ClippingRectangleNode_create); + tolua_endmodule(tolua_S); + std::string typeName = typeid(cocos2d::ClippingRectangleNode).name(); + g_luaType[typeName] = "cc.ClippingRectangleNode"; + g_typeCast["ClippingRectangleNode"] = "cc.ClippingRectangleNode"; + return 1; +} + int lua_cocos2dx_MotionStreak_reset(lua_State* tolua_S) { int argc = 0; @@ -60571,7 +60865,7 @@ int lua_register_cocos2dx_SpriteFrameCache(lua_State* tolua_S) tolua_beginmodule(tolua_S,"SpriteFrameCache"); tolua_function(tolua_S,"addSpriteFramesWithFileContent",lua_cocos2dx_SpriteFrameCache_addSpriteFramesWithFileContent); - tolua_function(tolua_S,"addSpriteFrames",lua_cocos2dx_SpriteFrameCache_addSpriteFramesWithFile); + tolua_function(tolua_S,"addSpriteFramesWithFile",lua_cocos2dx_SpriteFrameCache_addSpriteFramesWithFile); tolua_function(tolua_S,"addSpriteFrame",lua_cocos2dx_SpriteFrameCache_addSpriteFrame); tolua_function(tolua_S,"removeUnusedSpriteFrames",lua_cocos2dx_SpriteFrameCache_removeUnusedSpriteFrames); tolua_function(tolua_S,"getSpriteFrame",lua_cocos2dx_SpriteFrameCache_getSpriteFrameByName); @@ -65588,6 +65882,1035 @@ int lua_register_cocos2dx_Component(lua_State* tolua_S) g_typeCast["Component"] = "cc.Component"; return 1; } + +int lua_cocos2dx_CSLoader_createNodeFromJson(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_createNodeFromJson'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:createNodeFromJson"); + if(!ok) + return 0; + cocos2d::Node* ret = cobj->createNodeFromJson(arg0); + object_to_luaval(tolua_S, "cc.Node",(cocos2d::Node*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:createNodeFromJson",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_createNodeFromJson'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_createNodeFromProtocolBuffers(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_createNodeFromProtocolBuffers'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:createNodeFromProtocolBuffers"); + if(!ok) + return 0; + cocos2d::Node* ret = cobj->createNodeFromProtocolBuffers(arg0); + object_to_luaval(tolua_S, "cc.Node",(cocos2d::Node*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:createNodeFromProtocolBuffers",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_createNodeFromProtocolBuffers'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_init(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_init'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->init(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:init",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_init'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_setRecordXMLPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_setRecordXMLPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + bool arg0; + + ok &= luaval_to_boolean(tolua_S, 2,&arg0, "cc.CSLoader:setRecordXMLPath"); + if(!ok) + return 0; + cobj->setRecordXMLPath(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:setRecordXMLPath",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_setRecordXMLPath'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_setJsonPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_setJsonPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:setJsonPath"); + if(!ok) + return 0; + cobj->setJsonPath(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:setJsonPath",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_setJsonPath'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_loadNodeWithFile(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_loadNodeWithFile'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:loadNodeWithFile"); + if(!ok) + return 0; + cocos2d::Node* ret = cobj->loadNodeWithFile(arg0); + object_to_luaval(tolua_S, "cc.Node",(cocos2d::Node*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:loadNodeWithFile",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_loadNodeWithFile'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_loadNodeWithContent(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_loadNodeWithContent'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:loadNodeWithContent"); + if(!ok) + return 0; + cocos2d::Node* ret = cobj->loadNodeWithContent(arg0); + object_to_luaval(tolua_S, "cc.Node",(cocos2d::Node*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:loadNodeWithContent",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_loadNodeWithContent'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_isRecordProtocolBuffersPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_isRecordProtocolBuffersPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + bool ret = cobj->isRecordProtocolBuffersPath(); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:isRecordProtocolBuffersPath",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_isRecordProtocolBuffersPath'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_isRecordXMLPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_isRecordXMLPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + bool ret = cobj->isRecordXMLPath(); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:isRecordXMLPath",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_isRecordXMLPath'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_getProtocolBuffersPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_getProtocolBuffersPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + std::string ret = cobj->getProtocolBuffersPath(); + tolua_pushcppstring(tolua_S,ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:getProtocolBuffersPath",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_getProtocolBuffersPath'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_getXMLPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_getXMLPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + std::string ret = cobj->getXMLPath(); + tolua_pushcppstring(tolua_S,ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:getXMLPath",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_getXMLPath'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_createNodeFromXML(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_createNodeFromXML'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:createNodeFromXML"); + if(!ok) + return 0; + cocos2d::Node* ret = cobj->createNodeFromXML(arg0); + object_to_luaval(tolua_S, "cc.Node",(cocos2d::Node*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:createNodeFromXML",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_createNodeFromXML'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_isRecordJsonPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_isRecordJsonPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + bool ret = cobj->isRecordJsonPath(); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:isRecordJsonPath",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_isRecordJsonPath'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_setRecordProtocolBuffersPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_setRecordProtocolBuffersPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + bool arg0; + + ok &= luaval_to_boolean(tolua_S, 2,&arg0, "cc.CSLoader:setRecordProtocolBuffersPath"); + if(!ok) + return 0; + cobj->setRecordProtocolBuffersPath(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:setRecordProtocolBuffersPath",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_setRecordProtocolBuffersPath'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_getJsonPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_getJsonPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + std::string ret = cobj->getJsonPath(); + tolua_pushcppstring(tolua_S,ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:getJsonPath",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_getJsonPath'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_setRecordJsonPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_setRecordJsonPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + bool arg0; + + ok &= luaval_to_boolean(tolua_S, 2,&arg0, "cc.CSLoader:setRecordJsonPath"); + if(!ok) + return 0; + cobj->setRecordJsonPath(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:setRecordJsonPath",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_setRecordJsonPath'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_setProtocolBuffersPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_setProtocolBuffersPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:setProtocolBuffersPath"); + if(!ok) + return 0; + cobj->setProtocolBuffersPath(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:setProtocolBuffersPath",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_setProtocolBuffersPath'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_purge(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_purge'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->purge(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:purge",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_purge'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_setXMLPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::CSLoader*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_CSLoader_setXMLPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:setXMLPath"); + if(!ok) + return 0; + cobj->setXMLPath(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:setXMLPath",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_setXMLPath'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_CSLoader_destroyInstance(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S) - 1; + + if (argc == 0) + { + if(!ok) + return 0; + cocos2d::CSLoader::destroyInstance(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "cc.CSLoader:destroyInstance",argc, 0); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_destroyInstance'.",&tolua_err); +#endif + return 0; +} +int lua_cocos2dx_CSLoader_createNode(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S) - 1; + + if (argc == 1) + { + std::string arg0; + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:createNode"); + if(!ok) + return 0; + cocos2d::Node* ret = cocos2d::CSLoader::createNode(arg0); + object_to_luaval(tolua_S, "cc.Node",(cocos2d::Node*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "cc.CSLoader:createNode",argc, 1); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_createNode'.",&tolua_err); +#endif + return 0; +} +int lua_cocos2dx_CSLoader_getInstance(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S) - 1; + + if (argc == 0) + { + if(!ok) + return 0; + cocos2d::CSLoader* ret = cocos2d::CSLoader::getInstance(); + object_to_luaval(tolua_S, "cc.CSLoader",(cocos2d::CSLoader*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "cc.CSLoader:getInstance",argc, 0); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_getInstance'.",&tolua_err); +#endif + return 0; +} +int lua_cocos2dx_CSLoader_constructor(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::CSLoader* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj = new cocos2d::CSLoader(); + tolua_pushusertype(tolua_S,(void*)cobj,"cc.CSLoader"); + tolua_register_gc(tolua_S,lua_gettop(tolua_S)); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.CSLoader:CSLoader",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_constructor'.",&tolua_err); +#endif + + return 0; +} + +static int lua_cocos2dx_CSLoader_finalize(lua_State* tolua_S) +{ + printf("luabindings: finalizing LUA object (CSLoader)"); + return 0; +} + +int lua_register_cocos2dx_CSLoader(lua_State* tolua_S) +{ + tolua_usertype(tolua_S,"cc.CSLoader"); + tolua_cclass(tolua_S,"CSLoader","cc.CSLoader","",nullptr); + + tolua_beginmodule(tolua_S,"CSLoader"); + tolua_function(tolua_S,"new",lua_cocos2dx_CSLoader_constructor); + tolua_function(tolua_S,"createNodeFromJson",lua_cocos2dx_CSLoader_createNodeFromJson); + tolua_function(tolua_S,"createNodeFromProtocolBuffers",lua_cocos2dx_CSLoader_createNodeFromProtocolBuffers); + tolua_function(tolua_S,"init",lua_cocos2dx_CSLoader_init); + tolua_function(tolua_S,"setRecordXMLPath",lua_cocos2dx_CSLoader_setRecordXMLPath); + tolua_function(tolua_S,"setJsonPath",lua_cocos2dx_CSLoader_setJsonPath); + tolua_function(tolua_S,"loadNodeWithFile",lua_cocos2dx_CSLoader_loadNodeWithFile); + tolua_function(tolua_S,"loadNodeWithContent",lua_cocos2dx_CSLoader_loadNodeWithContent); + tolua_function(tolua_S,"isRecordProtocolBuffersPath",lua_cocos2dx_CSLoader_isRecordProtocolBuffersPath); + tolua_function(tolua_S,"isRecordXMLPath",lua_cocos2dx_CSLoader_isRecordXMLPath); + tolua_function(tolua_S,"getProtocolBuffersPath",lua_cocos2dx_CSLoader_getProtocolBuffersPath); + tolua_function(tolua_S,"getXMLPath",lua_cocos2dx_CSLoader_getXMLPath); + tolua_function(tolua_S,"createNodeFromXML",lua_cocos2dx_CSLoader_createNodeFromXML); + tolua_function(tolua_S,"isRecordJsonPath",lua_cocos2dx_CSLoader_isRecordJsonPath); + tolua_function(tolua_S,"setRecordProtocolBuffersPath",lua_cocos2dx_CSLoader_setRecordProtocolBuffersPath); + tolua_function(tolua_S,"getJsonPath",lua_cocos2dx_CSLoader_getJsonPath); + tolua_function(tolua_S,"setRecordJsonPath",lua_cocos2dx_CSLoader_setRecordJsonPath); + tolua_function(tolua_S,"setProtocolBuffersPath",lua_cocos2dx_CSLoader_setProtocolBuffersPath); + tolua_function(tolua_S,"purge",lua_cocos2dx_CSLoader_purge); + tolua_function(tolua_S,"setXMLPath",lua_cocos2dx_CSLoader_setXMLPath); + tolua_function(tolua_S,"destroyInstance", lua_cocos2dx_CSLoader_destroyInstance); + tolua_function(tolua_S,"createNode", lua_cocos2dx_CSLoader_createNode); + tolua_function(tolua_S,"getInstance", lua_cocos2dx_CSLoader_getInstance); + tolua_endmodule(tolua_S); + std::string typeName = typeid(cocos2d::CSLoader).name(); + g_luaType[typeName] = "cc.CSLoader"; + g_typeCast["CSLoader"] = "cc.CSLoader"; + return 1; +} TOLUA_API int register_all_cocos2dx(lua_State* tolua_S) { tolua_open(tolua_S); @@ -65595,6 +66918,7 @@ TOLUA_API int register_all_cocos2dx(lua_State* tolua_S) tolua_module(tolua_S,"cc",0); tolua_beginmodule(tolua_S,"cc"); + lua_register_cocos2dx_CSLoader(tolua_S); lua_register_cocos2dx_Ref(tolua_S); lua_register_cocos2dx_Console(tolua_S); lua_register_cocos2dx_Node(tolua_S); @@ -65804,6 +67128,7 @@ TOLUA_API int register_all_cocos2dx(lua_State* tolua_S) lua_register_cocos2dx_Liquid(tolua_S); lua_register_cocos2dx_OrbitCamera(tolua_S); lua_register_cocos2dx_ParallaxNode(tolua_S); + lua_register_cocos2dx_ClippingRectangleNode(tolua_S); lua_register_cocos2dx_EventCustom(tolua_S); lua_register_cocos2dx_TransitionFade(tolua_S); lua_register_cocos2dx_Component(tolua_S); diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp index 3ec03959c1..b5d3b64f9d 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp @@ -1561,6 +1561,37 @@ int register_all_cocos2dx(lua_State* tolua_S); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.cpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.cpp index 1f1c29dacd..f140484a15 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.cpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.cpp @@ -11570,6 +11570,1060 @@ int lua_register_cocos2dx_extension_AssetsManager(lua_State* tolua_S) g_typeCast["AssetsManager"] = "cc.AssetsManager"; return 1; } + +int lua_cocos2dx_extension_EventAssetsManagerEx_getAssetsManagerEx(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::EventAssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.EventAssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::EventAssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getAssetsManagerEx'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cocos2d::extension::AssetsManagerEx* ret = cobj->getAssetsManagerEx(); + object_to_luaval(tolua_S, "cc.AssetsManagerEx",(cocos2d::extension::AssetsManagerEx*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.EventAssetsManagerEx:getAssetsManagerEx",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getAssetsManagerEx'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_EventAssetsManagerEx_getAssetId(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::EventAssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.EventAssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::EventAssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getAssetId'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + std::string ret = cobj->getAssetId(); + tolua_pushcppstring(tolua_S,ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.EventAssetsManagerEx:getAssetId",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getAssetId'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_EventAssetsManagerEx_getCURLECode(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::EventAssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.EventAssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::EventAssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getCURLECode'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + int ret = cobj->getCURLECode(); + tolua_pushnumber(tolua_S,(lua_Number)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.EventAssetsManagerEx:getCURLECode",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getCURLECode'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_EventAssetsManagerEx_getMessage(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::EventAssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.EventAssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::EventAssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getMessage'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + std::string ret = cobj->getMessage(); + tolua_pushcppstring(tolua_S,ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.EventAssetsManagerEx:getMessage",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getMessage'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_EventAssetsManagerEx_getCURLMCode(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::EventAssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.EventAssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::EventAssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getCURLMCode'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + int ret = cobj->getCURLMCode(); + tolua_pushnumber(tolua_S,(lua_Number)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.EventAssetsManagerEx:getCURLMCode",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getCURLMCode'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_EventAssetsManagerEx_getPercentByFile(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::EventAssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.EventAssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::EventAssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getPercentByFile'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + double ret = cobj->getPercentByFile(); + tolua_pushnumber(tolua_S,(lua_Number)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.EventAssetsManagerEx:getPercentByFile",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getPercentByFile'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_EventAssetsManagerEx_getEventCode(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::EventAssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.EventAssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::EventAssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getEventCode'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + int ret = (int)cobj->getEventCode(); + tolua_pushnumber(tolua_S,(lua_Number)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.EventAssetsManagerEx:getEventCode",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getEventCode'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_EventAssetsManagerEx_getPercent(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::EventAssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.EventAssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::EventAssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getPercent'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + double ret = cobj->getPercent(); + tolua_pushnumber(tolua_S,(lua_Number)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.EventAssetsManagerEx:getPercent",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_EventAssetsManagerEx_getPercent'.",&tolua_err); +#endif + + return 0; +} +static int lua_cocos2dx_extension_EventAssetsManagerEx_finalize(lua_State* tolua_S) +{ + printf("luabindings: finalizing LUA object (EventAssetsManagerEx)"); + return 0; +} + +int lua_register_cocos2dx_extension_EventAssetsManagerEx(lua_State* tolua_S) +{ + tolua_usertype(tolua_S,"cc.EventAssetsManagerEx"); + tolua_cclass(tolua_S,"EventAssetsManagerEx","cc.EventAssetsManagerEx","cc.EventCustom",nullptr); + + tolua_beginmodule(tolua_S,"EventAssetsManagerEx"); + tolua_function(tolua_S,"getAssetsManagerEx",lua_cocos2dx_extension_EventAssetsManagerEx_getAssetsManagerEx); + tolua_function(tolua_S,"getAssetId",lua_cocos2dx_extension_EventAssetsManagerEx_getAssetId); + tolua_function(tolua_S,"getCURLECode",lua_cocos2dx_extension_EventAssetsManagerEx_getCURLECode); + tolua_function(tolua_S,"getMessage",lua_cocos2dx_extension_EventAssetsManagerEx_getMessage); + tolua_function(tolua_S,"getCURLMCode",lua_cocos2dx_extension_EventAssetsManagerEx_getCURLMCode); + tolua_function(tolua_S,"getPercentByFile",lua_cocos2dx_extension_EventAssetsManagerEx_getPercentByFile); + tolua_function(tolua_S,"getEventCode",lua_cocos2dx_extension_EventAssetsManagerEx_getEventCode); + tolua_function(tolua_S,"getPercent",lua_cocos2dx_extension_EventAssetsManagerEx_getPercent); + tolua_endmodule(tolua_S); + std::string typeName = typeid(cocos2d::extension::EventAssetsManagerEx).name(); + g_luaType[typeName] = "cc.EventAssetsManagerEx"; + g_typeCast["EventAssetsManagerEx"] = "cc.EventAssetsManagerEx"; + return 1; +} + +int lua_cocos2dx_extension_Manifest_getManifestFileUrl(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::Manifest* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Manifest",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::Manifest*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_Manifest_getManifestFileUrl'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const std::string& ret = cobj->getManifestFileUrl(); + tolua_pushcppstring(tolua_S,ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.Manifest:getManifestFileUrl",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_Manifest_getManifestFileUrl'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_Manifest_isVersionLoaded(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::Manifest* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Manifest",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::Manifest*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_Manifest_isVersionLoaded'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + bool ret = cobj->isVersionLoaded(); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.Manifest:isVersionLoaded",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_Manifest_isVersionLoaded'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_Manifest_isLoaded(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::Manifest* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Manifest",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::Manifest*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_Manifest_isLoaded'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + bool ret = cobj->isLoaded(); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.Manifest:isLoaded",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_Manifest_isLoaded'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_Manifest_getPackageUrl(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::Manifest* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Manifest",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::Manifest*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_Manifest_getPackageUrl'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const std::string& ret = cobj->getPackageUrl(); + tolua_pushcppstring(tolua_S,ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.Manifest:getPackageUrl",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_Manifest_getPackageUrl'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_Manifest_getVersion(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::Manifest* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Manifest",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::Manifest*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_Manifest_getVersion'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const std::string& ret = cobj->getVersion(); + tolua_pushcppstring(tolua_S,ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.Manifest:getVersion",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_Manifest_getVersion'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_Manifest_getVersionFileUrl(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::Manifest* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.Manifest",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::Manifest*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_Manifest_getVersionFileUrl'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const std::string& ret = cobj->getVersionFileUrl(); + tolua_pushcppstring(tolua_S,ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.Manifest:getVersionFileUrl",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_Manifest_getVersionFileUrl'.",&tolua_err); +#endif + + return 0; +} +static int lua_cocos2dx_extension_Manifest_finalize(lua_State* tolua_S) +{ + printf("luabindings: finalizing LUA object (Manifest)"); + return 0; +} + +int lua_register_cocos2dx_extension_Manifest(lua_State* tolua_S) +{ + tolua_usertype(tolua_S,"cc.Manifest"); + tolua_cclass(tolua_S,"Manifest","cc.Manifest","cc.Ref",nullptr); + + tolua_beginmodule(tolua_S,"Manifest"); + tolua_function(tolua_S,"getManifestFileUrl",lua_cocos2dx_extension_Manifest_getManifestFileUrl); + tolua_function(tolua_S,"isVersionLoaded",lua_cocos2dx_extension_Manifest_isVersionLoaded); + tolua_function(tolua_S,"isLoaded",lua_cocos2dx_extension_Manifest_isLoaded); + tolua_function(tolua_S,"getPackageUrl",lua_cocos2dx_extension_Manifest_getPackageUrl); + tolua_function(tolua_S,"getVersion",lua_cocos2dx_extension_Manifest_getVersion); + tolua_function(tolua_S,"getVersionFileUrl",lua_cocos2dx_extension_Manifest_getVersionFileUrl); + tolua_endmodule(tolua_S); + std::string typeName = typeid(cocos2d::extension::Manifest).name(); + g_luaType[typeName] = "cc.Manifest"; + g_typeCast["Manifest"] = "cc.Manifest"; + return 1; +} + +int lua_cocos2dx_extension_AssetsManagerEx_getState(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::AssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.AssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::AssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_AssetsManagerEx_getState'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + int ret = (int)cobj->getState(); + tolua_pushnumber(tolua_S,(lua_Number)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AssetsManagerEx:getState",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_AssetsManagerEx_getState'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_AssetsManagerEx_checkUpdate(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::AssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.AssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::AssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_AssetsManagerEx_checkUpdate'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->checkUpdate(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AssetsManagerEx:checkUpdate",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_AssetsManagerEx_checkUpdate'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_AssetsManagerEx_getStoragePath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::AssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.AssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::AssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_AssetsManagerEx_getStoragePath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const std::string& ret = cobj->getStoragePath(); + tolua_pushcppstring(tolua_S,ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AssetsManagerEx:getStoragePath",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_AssetsManagerEx_getStoragePath'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_AssetsManagerEx_update(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::AssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.AssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::AssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_AssetsManagerEx_update'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->update(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AssetsManagerEx:update",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_AssetsManagerEx_update'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_AssetsManagerEx_getLocalManifest(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::AssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.AssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::AssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_AssetsManagerEx_getLocalManifest'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const cocos2d::extension::Manifest* ret = cobj->getLocalManifest(); + object_to_luaval(tolua_S, "cc.Manifest",(cocos2d::extension::Manifest*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AssetsManagerEx:getLocalManifest",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_AssetsManagerEx_getLocalManifest'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_AssetsManagerEx_getRemoteManifest(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::AssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.AssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::AssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_AssetsManagerEx_getRemoteManifest'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + const cocos2d::extension::Manifest* ret = cobj->getRemoteManifest(); + object_to_luaval(tolua_S, "cc.Manifest",(cocos2d::extension::Manifest*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AssetsManagerEx:getRemoteManifest",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_AssetsManagerEx_getRemoteManifest'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_AssetsManagerEx_downloadFailedAssets(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::extension::AssetsManagerEx* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"cc.AssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::extension::AssetsManagerEx*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_extension_AssetsManagerEx_downloadFailedAssets'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->downloadFailedAssets(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AssetsManagerEx:downloadFailedAssets",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_AssetsManagerEx_downloadFailedAssets'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_extension_AssetsManagerEx_create(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"cc.AssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S) - 1; + + if (argc == 2) + { + std::string arg0; + std::string arg1; + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.AssetsManagerEx:create"); + ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.AssetsManagerEx:create"); + if(!ok) + return 0; + cocos2d::extension::AssetsManagerEx* ret = cocos2d::extension::AssetsManagerEx::create(arg0, arg1); + object_to_luaval(tolua_S, "cc.AssetsManagerEx",(cocos2d::extension::AssetsManagerEx*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "cc.AssetsManagerEx:create",argc, 2); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_extension_AssetsManagerEx_create'.",&tolua_err); +#endif + return 0; +} +static int lua_cocos2dx_extension_AssetsManagerEx_finalize(lua_State* tolua_S) +{ + printf("luabindings: finalizing LUA object (AssetsManagerEx)"); + return 0; +} + +int lua_register_cocos2dx_extension_AssetsManagerEx(lua_State* tolua_S) +{ + tolua_usertype(tolua_S,"cc.AssetsManagerEx"); + tolua_cclass(tolua_S,"AssetsManagerEx","cc.AssetsManagerEx","cc.Ref",nullptr); + + tolua_beginmodule(tolua_S,"AssetsManagerEx"); + tolua_function(tolua_S,"getState",lua_cocos2dx_extension_AssetsManagerEx_getState); + tolua_function(tolua_S,"checkUpdate",lua_cocos2dx_extension_AssetsManagerEx_checkUpdate); + tolua_function(tolua_S,"getStoragePath",lua_cocos2dx_extension_AssetsManagerEx_getStoragePath); + tolua_function(tolua_S,"update",lua_cocos2dx_extension_AssetsManagerEx_update); + tolua_function(tolua_S,"getLocalManifest",lua_cocos2dx_extension_AssetsManagerEx_getLocalManifest); + tolua_function(tolua_S,"getRemoteManifest",lua_cocos2dx_extension_AssetsManagerEx_getRemoteManifest); + tolua_function(tolua_S,"downloadFailedAssets",lua_cocos2dx_extension_AssetsManagerEx_downloadFailedAssets); + tolua_function(tolua_S,"create", lua_cocos2dx_extension_AssetsManagerEx_create); + tolua_endmodule(tolua_S); + std::string typeName = typeid(cocos2d::extension::AssetsManagerEx).name(); + g_luaType[typeName] = "cc.AssetsManagerEx"; + g_typeCast["AssetsManagerEx"] = "cc.AssetsManagerEx"; + return 1; +} + +static int lua_cocos2dx_extension_EventListenerAssetsManagerEx_finalize(lua_State* tolua_S) +{ + printf("luabindings: finalizing LUA object (EventListenerAssetsManagerEx)"); + return 0; +} + +int lua_register_cocos2dx_extension_EventListenerAssetsManagerEx(lua_State* tolua_S) +{ + tolua_usertype(tolua_S,"cc.EventListenerAssetsManagerEx"); + tolua_cclass(tolua_S,"EventListenerAssetsManagerEx","cc.EventListenerAssetsManagerEx","cc.EventListenerCustom",nullptr); + + tolua_beginmodule(tolua_S,"EventListenerAssetsManagerEx"); + tolua_endmodule(tolua_S); + std::string typeName = typeid(cocos2d::extension::EventListenerAssetsManagerEx).name(); + g_luaType[typeName] = "cc.EventListenerAssetsManagerEx"; + g_typeCast["EventListenerAssetsManagerEx"] = "cc.EventListenerAssetsManagerEx"; + return 1; +} TOLUA_API int register_all_cocos2dx_extension(lua_State* tolua_S) { tolua_open(tolua_S); @@ -11577,19 +12631,23 @@ TOLUA_API int register_all_cocos2dx_extension(lua_State* tolua_S) tolua_module(tolua_S,"cc",0); tolua_beginmodule(tolua_S,"cc"); + lua_register_cocos2dx_extension_AssetsManagerEx(tolua_S); lua_register_cocos2dx_extension_Control(tolua_S); + lua_register_cocos2dx_extension_ControlHuePicker(tolua_S); lua_register_cocos2dx_extension_TableViewCell(tolua_S); lua_register_cocos2dx_extension_ControlStepper(tolua_S); - lua_register_cocos2dx_extension_ControlSwitch(tolua_S); - lua_register_cocos2dx_extension_ScrollView(tolua_S); - lua_register_cocos2dx_extension_TableView(tolua_S); + lua_register_cocos2dx_extension_AssetsManager(tolua_S); + lua_register_cocos2dx_extension_ControlColourPicker(tolua_S); + lua_register_cocos2dx_extension_ControlButton(tolua_S); lua_register_cocos2dx_extension_ControlSlider(tolua_S); lua_register_cocos2dx_extension_ControlSaturationBrightnessPicker(tolua_S); - lua_register_cocos2dx_extension_ControlColourPicker(tolua_S); + lua_register_cocos2dx_extension_ScrollView(tolua_S); + lua_register_cocos2dx_extension_Manifest(tolua_S); lua_register_cocos2dx_extension_ControlPotentiometer(tolua_S); - lua_register_cocos2dx_extension_ControlButton(tolua_S); - lua_register_cocos2dx_extension_ControlHuePicker(tolua_S); - lua_register_cocos2dx_extension_AssetsManager(tolua_S); + lua_register_cocos2dx_extension_EventAssetsManagerEx(tolua_S); + lua_register_cocos2dx_extension_TableView(tolua_S); + lua_register_cocos2dx_extension_EventListenerAssetsManagerEx(tolua_S); + lua_register_cocos2dx_extension_ControlSwitch(tolua_S); tolua_endmodule(tolua_S); return 1; diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.hpp index 483cbe013a..fdeaeb9c57 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.hpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_extension_auto.hpp @@ -244,6 +244,32 @@ int register_all_cocos2dx_extension(lua_State* tolua_S); + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.cpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.cpp index 8d94bee826..59ee30b2c7 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.cpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.cpp @@ -5,10 +5,10 @@ -int lua_cocos2dx_spine_Skeleton_setToSetupPose(lua_State* tolua_S) +int lua_cocos2dx_spine_SkeletonRenderer_setTimeScale(lua_State* tolua_S) { int argc = 0; - spine::Skeleton* cobj = nullptr; + spine::SkeletonRenderer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -17,58 +17,15 @@ int lua_cocos2dx_spine_Skeleton_setToSetupPose(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"sp.Skeleton",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (spine::Skeleton*)tolua_tousertype(tolua_S,1,0); + cobj = (spine::SkeletonRenderer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_Skeleton_setToSetupPose'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - cobj->setToSetupPose(); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.Skeleton:setToSetupPose",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_Skeleton_setToSetupPose'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_spine_Skeleton_setBlendFunc(lua_State* tolua_S) -{ - int argc = 0; - spine::Skeleton* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"sp.Skeleton",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (spine::Skeleton*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_Skeleton_setBlendFunc'", nullptr); + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonRenderer_setTimeScale'", nullptr); return 0; } #endif @@ -76,29 +33,28 @@ int lua_cocos2dx_spine_Skeleton_setBlendFunc(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 1) { - cocos2d::BlendFunc arg0; + double arg0; - #pragma warning NO CONVERSION TO NATIVE FOR BlendFunc - ok = false; + ok &= luaval_to_number(tolua_S, 2,&arg0, "sp.SkeletonRenderer:setTimeScale"); if(!ok) return 0; - cobj->setBlendFunc(arg0); + cobj->setTimeScale(arg0); return 0; } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.Skeleton:setBlendFunc",argc, 1); + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonRenderer:setTimeScale",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_Skeleton_setBlendFunc'.",&tolua_err); + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_setTimeScale'.",&tolua_err); #endif return 0; } -int lua_cocos2dx_spine_Skeleton_onDraw(lua_State* tolua_S) +int lua_cocos2dx_spine_SkeletonRenderer_isOpacityModifyRGB(lua_State* tolua_S) { int argc = 0; - spine::Skeleton* cobj = nullptr; + spine::SkeletonRenderer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -107,64 +63,15 @@ int lua_cocos2dx_spine_Skeleton_onDraw(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"sp.Skeleton",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (spine::Skeleton*)tolua_tousertype(tolua_S,1,0); + cobj = (spine::SkeletonRenderer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_Skeleton_onDraw'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 2) - { - cocos2d::Mat4 arg0; - unsigned int arg1; - - ok &= luaval_to_mat4(tolua_S, 2, &arg0, "sp.Skeleton:onDraw"); - - ok &= luaval_to_uint32(tolua_S, 3,&arg1, "sp.Skeleton:onDraw"); - if(!ok) - return 0; - cobj->onDraw(arg0, arg1); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.Skeleton:onDraw",argc, 2); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_Skeleton_onDraw'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_spine_Skeleton_setSlotsToSetupPose(lua_State* tolua_S) -{ - int argc = 0; - spine::Skeleton* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"sp.Skeleton",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (spine::Skeleton*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_Skeleton_setSlotsToSetupPose'", nullptr); + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonRenderer_isOpacityModifyRGB'", nullptr); return 0; } #endif @@ -174,114 +81,24 @@ int lua_cocos2dx_spine_Skeleton_setSlotsToSetupPose(lua_State* tolua_S) { if(!ok) return 0; - cobj->setSlotsToSetupPose(); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.Skeleton:setSlotsToSetupPose",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_Skeleton_setSlotsToSetupPose'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_spine_Skeleton_getBlendFunc(lua_State* tolua_S) -{ - int argc = 0; - spine::Skeleton* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"sp.Skeleton",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (spine::Skeleton*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_Skeleton_getBlendFunc'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - const cocos2d::BlendFunc& ret = cobj->getBlendFunc(); - blendfunc_to_luaval(tolua_S, ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.Skeleton:getBlendFunc",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_Skeleton_getBlendFunc'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_spine_Skeleton_setSkin(lua_State* tolua_S) -{ - int argc = 0; - spine::Skeleton* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"sp.Skeleton",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (spine::Skeleton*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_Skeleton_setSkin'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - const char* arg0; - - std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "sp.Skeleton:setSkin"); arg0 = arg0_tmp.c_str(); - if(!ok) - return 0; - bool ret = cobj->setSkin(arg0); + bool ret = cobj->isOpacityModifyRGB(); tolua_pushboolean(tolua_S,(bool)ret); return 1; } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.Skeleton:setSkin",argc, 1); + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonRenderer:isOpacityModifyRGB",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_Skeleton_setSkin'.",&tolua_err); + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_isOpacityModifyRGB'.",&tolua_err); #endif return 0; } -int lua_cocos2dx_spine_Skeleton_setBonesToSetupPose(lua_State* tolua_S) +int lua_cocos2dx_spine_SkeletonRenderer_setDebugSlotsEnabled(lua_State* tolua_S) { int argc = 0; - spine::Skeleton* cobj = nullptr; + spine::SkeletonRenderer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -290,15 +107,105 @@ int lua_cocos2dx_spine_Skeleton_setBonesToSetupPose(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"sp.Skeleton",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (spine::Skeleton*)tolua_tousertype(tolua_S,1,0); + cobj = (spine::SkeletonRenderer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_Skeleton_setBonesToSetupPose'", nullptr); + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonRenderer_setDebugSlotsEnabled'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + bool arg0; + + ok &= luaval_to_boolean(tolua_S, 2,&arg0, "sp.SkeletonRenderer:setDebugSlotsEnabled"); + if(!ok) + return 0; + cobj->setDebugSlotsEnabled(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonRenderer:setDebugSlotsEnabled",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_setDebugSlotsEnabled'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonRenderer_getDebugSlotsEnabled(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonRenderer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonRenderer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonRenderer_getDebugSlotsEnabled'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + bool ret = cobj->getDebugSlotsEnabled(); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonRenderer:getDebugSlotsEnabled",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_getDebugSlotsEnabled'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonRenderer_setBonesToSetupPose(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonRenderer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonRenderer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonRenderer_setBonesToSetupPose'", nullptr); return 0; } #endif @@ -311,42 +218,866 @@ int lua_cocos2dx_spine_Skeleton_setBonesToSetupPose(lua_State* tolua_S) cobj->setBonesToSetupPose(); return 0; } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.Skeleton:setBonesToSetupPose",argc, 0); + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonRenderer:setBonesToSetupPose",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_Skeleton_setBonesToSetupPose'.",&tolua_err); + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_setBonesToSetupPose'.",&tolua_err); #endif return 0; } -static int lua_cocos2dx_spine_Skeleton_finalize(lua_State* tolua_S) +int lua_cocos2dx_spine_SkeletonRenderer_setSlotsToSetupPose(lua_State* tolua_S) { - printf("luabindings: finalizing LUA object (Skeleton)"); + int argc = 0; + spine::SkeletonRenderer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonRenderer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonRenderer_setSlotsToSetupPose'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->setSlotsToSetupPose(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonRenderer:setSlotsToSetupPose",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_setSlotsToSetupPose'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonRenderer_setSkin(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonRenderer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonRenderer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonRenderer_setSkin'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "sp.SkeletonRenderer:setSkin"); + if(!ok) + return 0; + bool ret = cobj->setSkin(arg0); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonRenderer:setSkin",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_setSkin'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonRenderer_setToSetupPose(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonRenderer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonRenderer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonRenderer_setToSetupPose'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->setToSetupPose(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonRenderer:setToSetupPose",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_setToSetupPose'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonRenderer_setOpacityModifyRGB(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonRenderer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonRenderer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonRenderer_setOpacityModifyRGB'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + bool arg0; + + ok &= luaval_to_boolean(tolua_S, 2,&arg0, "sp.SkeletonRenderer:setOpacityModifyRGB"); + if(!ok) + return 0; + cobj->setOpacityModifyRGB(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonRenderer:setOpacityModifyRGB",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_setOpacityModifyRGB'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonRenderer_setDebugBonesEnabled(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonRenderer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonRenderer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonRenderer_setDebugBonesEnabled'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + bool arg0; + + ok &= luaval_to_boolean(tolua_S, 2,&arg0, "sp.SkeletonRenderer:setDebugBonesEnabled"); + if(!ok) + return 0; + cobj->setDebugBonesEnabled(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonRenderer:setDebugBonesEnabled",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_setDebugBonesEnabled'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonRenderer_getSkeleton(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonRenderer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonRenderer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonRenderer_getSkeleton'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + spSkeleton* ret = cobj->getSkeleton(); + #pragma warning NO CONVERSION FROM NATIVE FOR spSkeleton*; + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonRenderer:getSkeleton",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_getSkeleton'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonRenderer_getDebugBonesEnabled(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonRenderer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonRenderer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonRenderer_getDebugBonesEnabled'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + bool ret = cobj->getDebugBonesEnabled(); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonRenderer:getDebugBonesEnabled",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_getDebugBonesEnabled'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonRenderer_getTimeScale(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonRenderer* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonRenderer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonRenderer_getTimeScale'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + return 0; + double ret = cobj->getTimeScale(); + tolua_pushnumber(tolua_S,(lua_Number)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonRenderer:getTimeScale",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_getTimeScale'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonRenderer_createWithFile(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"sp.SkeletonRenderer",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S)-1; + + do + { + if (argc == 2) + { + std::string arg0; + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "sp.SkeletonRenderer:createWithFile"); + if (!ok) { break; } + std::string arg1; + ok &= luaval_to_std_string(tolua_S, 3,&arg1, "sp.SkeletonRenderer:createWithFile"); + if (!ok) { break; } + spine::SkeletonRenderer* ret = spine::SkeletonRenderer::createWithFile(arg0, arg1); + object_to_luaval(tolua_S, "sp.SkeletonRenderer",(spine::SkeletonRenderer*)ret); + return 1; + } + } while (0); + ok = true; + do + { + if (argc == 3) + { + std::string arg0; + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "sp.SkeletonRenderer:createWithFile"); + if (!ok) { break; } + std::string arg1; + ok &= luaval_to_std_string(tolua_S, 3,&arg1, "sp.SkeletonRenderer:createWithFile"); + if (!ok) { break; } + double arg2; + ok &= luaval_to_number(tolua_S, 4,&arg2, "sp.SkeletonRenderer:createWithFile"); + if (!ok) { break; } + spine::SkeletonRenderer* ret = spine::SkeletonRenderer::createWithFile(arg0, arg1, arg2); + object_to_luaval(tolua_S, "sp.SkeletonRenderer",(spine::SkeletonRenderer*)ret); + return 1; + } + } while (0); + ok = true; + do + { + if (argc == 2) + { + std::string arg0; + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "sp.SkeletonRenderer:createWithFile"); + if (!ok) { break; } + spAtlas* arg1; + #pragma warning NO CONVERSION TO NATIVE FOR spAtlas* + ok = false; + if (!ok) { break; } + spine::SkeletonRenderer* ret = spine::SkeletonRenderer::createWithFile(arg0, arg1); + object_to_luaval(tolua_S, "sp.SkeletonRenderer",(spine::SkeletonRenderer*)ret); + return 1; + } + } while (0); + ok = true; + do + { + if (argc == 3) + { + std::string arg0; + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "sp.SkeletonRenderer:createWithFile"); + if (!ok) { break; } + spAtlas* arg1; + #pragma warning NO CONVERSION TO NATIVE FOR spAtlas* + ok = false; + if (!ok) { break; } + double arg2; + ok &= luaval_to_number(tolua_S, 4,&arg2, "sp.SkeletonRenderer:createWithFile"); + if (!ok) { break; } + spine::SkeletonRenderer* ret = spine::SkeletonRenderer::createWithFile(arg0, arg1, arg2); + object_to_luaval(tolua_S, "sp.SkeletonRenderer",(spine::SkeletonRenderer*)ret); + return 1; + } + } while (0); + ok = true; + CCLOG("%s has wrong number of arguments: %d, was expecting %d", "sp.SkeletonRenderer:createWithFile",argc, 2); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonRenderer_createWithFile'.",&tolua_err); +#endif + return 0; +} +static int lua_cocos2dx_spine_SkeletonRenderer_finalize(lua_State* tolua_S) +{ + printf("luabindings: finalizing LUA object (SkeletonRenderer)"); return 0; } -int lua_register_cocos2dx_spine_Skeleton(lua_State* tolua_S) +int lua_register_cocos2dx_spine_SkeletonRenderer(lua_State* tolua_S) { - tolua_usertype(tolua_S,"sp.Skeleton"); - tolua_cclass(tolua_S,"Skeleton","sp.Skeleton","cc.Node",nullptr); + tolua_usertype(tolua_S,"sp.SkeletonRenderer"); + tolua_cclass(tolua_S,"SkeletonRenderer","sp.SkeletonRenderer","cc.Node",nullptr); - tolua_beginmodule(tolua_S,"Skeleton"); - tolua_function(tolua_S,"setToSetupPose",lua_cocos2dx_spine_Skeleton_setToSetupPose); - tolua_function(tolua_S,"setBlendFunc",lua_cocos2dx_spine_Skeleton_setBlendFunc); - tolua_function(tolua_S,"onDraw",lua_cocos2dx_spine_Skeleton_onDraw); - tolua_function(tolua_S,"setSlotsToSetupPose",lua_cocos2dx_spine_Skeleton_setSlotsToSetupPose); - tolua_function(tolua_S,"getBlendFunc",lua_cocos2dx_spine_Skeleton_getBlendFunc); - tolua_function(tolua_S,"setSkin",lua_cocos2dx_spine_Skeleton_setSkin); - tolua_function(tolua_S,"setBonesToSetupPose",lua_cocos2dx_spine_Skeleton_setBonesToSetupPose); + tolua_beginmodule(tolua_S,"SkeletonRenderer"); + tolua_function(tolua_S,"setTimeScale",lua_cocos2dx_spine_SkeletonRenderer_setTimeScale); + tolua_function(tolua_S,"isOpacityModifyRGB",lua_cocos2dx_spine_SkeletonRenderer_isOpacityModifyRGB); + tolua_function(tolua_S,"setDebugSlotsEnabled",lua_cocos2dx_spine_SkeletonRenderer_setDebugSlotsEnabled); + tolua_function(tolua_S,"getDebugSlotsEnabled",lua_cocos2dx_spine_SkeletonRenderer_getDebugSlotsEnabled); + tolua_function(tolua_S,"setBonesToSetupPose",lua_cocos2dx_spine_SkeletonRenderer_setBonesToSetupPose); + tolua_function(tolua_S,"setSlotsToSetupPose",lua_cocos2dx_spine_SkeletonRenderer_setSlotsToSetupPose); + tolua_function(tolua_S,"setSkin",lua_cocos2dx_spine_SkeletonRenderer_setSkin); + tolua_function(tolua_S,"setToSetupPose",lua_cocos2dx_spine_SkeletonRenderer_setToSetupPose); + tolua_function(tolua_S,"setOpacityModifyRGB",lua_cocos2dx_spine_SkeletonRenderer_setOpacityModifyRGB); + tolua_function(tolua_S,"setDebugBonesEnabled",lua_cocos2dx_spine_SkeletonRenderer_setDebugBonesEnabled); + tolua_function(tolua_S,"getSkeleton",lua_cocos2dx_spine_SkeletonRenderer_getSkeleton); + tolua_function(tolua_S,"getDebugBonesEnabled",lua_cocos2dx_spine_SkeletonRenderer_getDebugBonesEnabled); + tolua_function(tolua_S,"getTimeScale",lua_cocos2dx_spine_SkeletonRenderer_getTimeScale); + tolua_function(tolua_S,"createWithFile", lua_cocos2dx_spine_SkeletonRenderer_createWithFile); tolua_endmodule(tolua_S); - std::string typeName = typeid(spine::Skeleton).name(); - g_luaType[typeName] = "sp.Skeleton"; - g_typeCast["Skeleton"] = "sp.Skeleton"; + std::string typeName = typeid(spine::SkeletonRenderer).name(); + g_luaType[typeName] = "sp.SkeletonRenderer"; + g_typeCast["SkeletonRenderer"] = "sp.SkeletonRenderer"; return 1; } +int lua_cocos2dx_spine_SkeletonAnimation_setStartListener(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonAnimation* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonAnimation*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonAnimation_setStartListener'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::function arg0; + + do { + // Lambda binding for lua is not supported. + assert(false); + } while(0) + ; + if(!ok) + return 0; + cobj->setStartListener(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonAnimation:setStartListener",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonAnimation_setStartListener'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonAnimation_setTrackEventListener(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonAnimation* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonAnimation*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonAnimation_setTrackEventListener'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 2) + { + spTrackEntry* arg0; + std::function arg1; + + #pragma warning NO CONVERSION TO NATIVE FOR spTrackEntry* + ok = false; + + do { + // Lambda binding for lua is not supported. + assert(false); + } while(0) + ; + if(!ok) + return 0; + cobj->setTrackEventListener(arg0, arg1); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonAnimation:setTrackEventListener",argc, 2); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonAnimation_setTrackEventListener'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonAnimation_setTrackCompleteListener(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonAnimation* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonAnimation*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonAnimation_setTrackCompleteListener'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 2) + { + spTrackEntry* arg0; + std::function arg1; + + #pragma warning NO CONVERSION TO NATIVE FOR spTrackEntry* + ok = false; + + do { + // Lambda binding for lua is not supported. + assert(false); + } while(0) + ; + if(!ok) + return 0; + cobj->setTrackCompleteListener(arg0, arg1); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonAnimation:setTrackCompleteListener",argc, 2); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonAnimation_setTrackCompleteListener'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonAnimation_setTrackStartListener(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonAnimation* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonAnimation*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonAnimation_setTrackStartListener'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 2) + { + spTrackEntry* arg0; + std::function arg1; + + #pragma warning NO CONVERSION TO NATIVE FOR spTrackEntry* + ok = false; + + do { + // Lambda binding for lua is not supported. + assert(false); + } while(0) + ; + if(!ok) + return 0; + cobj->setTrackStartListener(arg0, arg1); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonAnimation:setTrackStartListener",argc, 2); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonAnimation_setTrackStartListener'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonAnimation_setCompleteListener(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonAnimation* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonAnimation*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonAnimation_setCompleteListener'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::function arg0; + + do { + // Lambda binding for lua is not supported. + assert(false); + } while(0) + ; + if(!ok) + return 0; + cobj->setCompleteListener(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonAnimation:setCompleteListener",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonAnimation_setCompleteListener'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonAnimation_setTrackEndListener(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonAnimation* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonAnimation*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonAnimation_setTrackEndListener'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 2) + { + spTrackEntry* arg0; + std::function arg1; + + #pragma warning NO CONVERSION TO NATIVE FOR spTrackEntry* + ok = false; + + do { + // Lambda binding for lua is not supported. + assert(false); + } while(0) + ; + if(!ok) + return 0; + cobj->setTrackEndListener(arg0, arg1); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonAnimation:setTrackEndListener",argc, 2); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonAnimation_setTrackEndListener'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_spine_SkeletonAnimation_setEventListener(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonAnimation* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonAnimation*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonAnimation_setEventListener'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::function arg0; + + do { + // Lambda binding for lua is not supported. + assert(false); + } while(0) + ; + if(!ok) + return 0; + cobj->setEventListener(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonAnimation:setEventListener",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonAnimation_setEventListener'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_spine_SkeletonAnimation_setMix(lua_State* tolua_S) { int argc = 0; @@ -375,13 +1106,13 @@ int lua_cocos2dx_spine_SkeletonAnimation_setMix(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; if (argc == 3) { - const char* arg0; - const char* arg1; + std::string arg0; + std::string arg1; double arg2; - std::string arg0_tmp; ok &= luaval_to_std_string(tolua_S, 2, &arg0_tmp, "sp.SkeletonAnimation:setMix"); arg0 = arg0_tmp.c_str(); + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "sp.SkeletonAnimation:setMix"); - std::string arg1_tmp; ok &= luaval_to_std_string(tolua_S, 3, &arg1_tmp, "sp.SkeletonAnimation:setMix"); arg1 = arg1_tmp.c_str(); + ok &= luaval_to_std_string(tolua_S, 3,&arg1, "sp.SkeletonAnimation:setMix"); ok &= luaval_to_number(tolua_S, 4,&arg2, "sp.SkeletonAnimation:setMix"); if(!ok) @@ -399,6 +1130,56 @@ int lua_cocos2dx_spine_SkeletonAnimation_setMix(lua_State* tolua_S) return 0; } +int lua_cocos2dx_spine_SkeletonAnimation_setEndListener(lua_State* tolua_S) +{ + int argc = 0; + spine::SkeletonAnimation* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (spine::SkeletonAnimation*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_spine_SkeletonAnimation_setEndListener'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::function arg0; + + do { + // Lambda binding for lua is not supported. + assert(false); + } while(0) + ; + if(!ok) + return 0; + cobj->setEndListener(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "sp.SkeletonAnimation:setEndListener",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_spine_SkeletonAnimation_setEndListener'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_spine_SkeletonAnimation_clearTracks(lua_State* tolua_S) { int argc = 0; @@ -504,10 +1285,18 @@ static int lua_cocos2dx_spine_SkeletonAnimation_finalize(lua_State* tolua_S) int lua_register_cocos2dx_spine_SkeletonAnimation(lua_State* tolua_S) { tolua_usertype(tolua_S,"sp.SkeletonAnimation"); - tolua_cclass(tolua_S,"SkeletonAnimation","sp.SkeletonAnimation","sp.Skeleton",nullptr); + tolua_cclass(tolua_S,"SkeletonAnimation","sp.SkeletonAnimation","sp.SkeletonRenderer",nullptr); tolua_beginmodule(tolua_S,"SkeletonAnimation"); + tolua_function(tolua_S,"setStartListener",lua_cocos2dx_spine_SkeletonAnimation_setStartListener); + tolua_function(tolua_S,"setTrackEventListener",lua_cocos2dx_spine_SkeletonAnimation_setTrackEventListener); + tolua_function(tolua_S,"setTrackCompleteListener",lua_cocos2dx_spine_SkeletonAnimation_setTrackCompleteListener); + tolua_function(tolua_S,"setTrackStartListener",lua_cocos2dx_spine_SkeletonAnimation_setTrackStartListener); + tolua_function(tolua_S,"setCompleteListener",lua_cocos2dx_spine_SkeletonAnimation_setCompleteListener); + tolua_function(tolua_S,"setTrackEndListener",lua_cocos2dx_spine_SkeletonAnimation_setTrackEndListener); + tolua_function(tolua_S,"setEventListener",lua_cocos2dx_spine_SkeletonAnimation_setEventListener); tolua_function(tolua_S,"setMix",lua_cocos2dx_spine_SkeletonAnimation_setMix); + tolua_function(tolua_S,"setEndListener",lua_cocos2dx_spine_SkeletonAnimation_setEndListener); tolua_function(tolua_S,"clearTracks",lua_cocos2dx_spine_SkeletonAnimation_clearTracks); tolua_function(tolua_S,"clearTrack",lua_cocos2dx_spine_SkeletonAnimation_clearTrack); tolua_endmodule(tolua_S); @@ -523,7 +1312,7 @@ TOLUA_API int register_all_cocos2dx_spine(lua_State* tolua_S) tolua_module(tolua_S,"sp",0); tolua_beginmodule(tolua_S,"sp"); - lua_register_cocos2dx_spine_Skeleton(tolua_S); + lua_register_cocos2dx_spine_SkeletonRenderer(tolua_S); lua_register_cocos2dx_spine_SkeletonAnimation(tolua_S); tolua_endmodule(tolua_S); diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.hpp index aedd24b3f5..5a23db13eb 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.hpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_spine_auto.hpp @@ -18,6 +18,21 @@ int register_all_cocos2dx_spine(lua_State* tolua_S); + + + + + + + + + + + + + + + diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp index fc65fb9c02..0655cdc00a 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.cpp @@ -14304,506 +14304,7 @@ int lua_register_cocos2dx_studio_SceneReader(lua_State* tolua_S) return 1; } -int lua_cocos2dx_studio_NodeReader_setJsonPath(lua_State* tolua_S) -{ - int argc = 0; - cocostudio::timeline::NodeReader* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccs.NodeReader",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocostudio::timeline::NodeReader*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_NodeReader_setJsonPath'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - std::string arg0; - - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.NodeReader:setJsonPath"); - if(!ok) - return 0; - cobj->setJsonPath(arg0); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.NodeReader:setJsonPath",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_NodeReader_setJsonPath'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_studio_NodeReader_createNode(lua_State* tolua_S) -{ - int argc = 0; - cocostudio::timeline::NodeReader* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccs.NodeReader",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocostudio::timeline::NodeReader*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_NodeReader_createNode'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - std::string arg0; - - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.NodeReader:createNode"); - if(!ok) - return 0; - cocos2d::Node* ret = cobj->createNode(arg0); - object_to_luaval(tolua_S, "cc.Node",(cocos2d::Node*)ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.NodeReader:createNode",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_NodeReader_createNode'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_studio_NodeReader_loadNodeWithFile(lua_State* tolua_S) -{ - int argc = 0; - cocostudio::timeline::NodeReader* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccs.NodeReader",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocostudio::timeline::NodeReader*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_NodeReader_loadNodeWithFile'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - std::string arg0; - - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.NodeReader:loadNodeWithFile"); - if(!ok) - return 0; - cocos2d::Node* ret = cobj->loadNodeWithFile(arg0); - object_to_luaval(tolua_S, "cc.Node",(cocos2d::Node*)ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.NodeReader:loadNodeWithFile",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_NodeReader_loadNodeWithFile'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_studio_NodeReader_purge(lua_State* tolua_S) -{ - int argc = 0; - cocostudio::timeline::NodeReader* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccs.NodeReader",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocostudio::timeline::NodeReader*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_NodeReader_purge'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - cobj->purge(); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.NodeReader:purge",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_NodeReader_purge'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_studio_NodeReader_init(lua_State* tolua_S) -{ - int argc = 0; - cocostudio::timeline::NodeReader* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccs.NodeReader",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocostudio::timeline::NodeReader*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_NodeReader_init'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - cobj->init(); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.NodeReader:init",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_NodeReader_init'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_studio_NodeReader_loadNodeWithContent(lua_State* tolua_S) -{ - int argc = 0; - cocostudio::timeline::NodeReader* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccs.NodeReader",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocostudio::timeline::NodeReader*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_NodeReader_loadNodeWithContent'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - std::string arg0; - - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.NodeReader:loadNodeWithContent"); - if(!ok) - return 0; - cocos2d::Node* ret = cobj->loadNodeWithContent(arg0); - object_to_luaval(tolua_S, "cc.Node",(cocos2d::Node*)ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.NodeReader:loadNodeWithContent",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_NodeReader_loadNodeWithContent'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_studio_NodeReader_isRecordJsonPath(lua_State* tolua_S) -{ - int argc = 0; - cocostudio::timeline::NodeReader* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccs.NodeReader",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocostudio::timeline::NodeReader*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_NodeReader_isRecordJsonPath'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - bool ret = cobj->isRecordJsonPath(); - tolua_pushboolean(tolua_S,(bool)ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.NodeReader:isRecordJsonPath",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_NodeReader_isRecordJsonPath'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_studio_NodeReader_getJsonPath(lua_State* tolua_S) -{ - int argc = 0; - cocostudio::timeline::NodeReader* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccs.NodeReader",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocostudio::timeline::NodeReader*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_NodeReader_getJsonPath'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - std::string ret = cobj->getJsonPath(); - tolua_pushcppstring(tolua_S,ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.NodeReader:getJsonPath",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_NodeReader_getJsonPath'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_studio_NodeReader_setRecordJsonPath(lua_State* tolua_S) -{ - int argc = 0; - cocostudio::timeline::NodeReader* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccs.NodeReader",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocostudio::timeline::NodeReader*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_NodeReader_setRecordJsonPath'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - bool arg0; - - ok &= luaval_to_boolean(tolua_S, 2,&arg0, "ccs.NodeReader:setRecordJsonPath"); - if(!ok) - return 0; - cobj->setRecordJsonPath(arg0); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.NodeReader:setRecordJsonPath",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_NodeReader_setRecordJsonPath'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_studio_NodeReader_destroyInstance(lua_State* tolua_S) -{ - int argc = 0; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertable(tolua_S,1,"ccs.NodeReader",0,&tolua_err)) goto tolua_lerror; -#endif - - argc = lua_gettop(tolua_S) - 1; - - if (argc == 0) - { - if(!ok) - return 0; - cocostudio::timeline::NodeReader::destroyInstance(); - return 0; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "ccs.NodeReader:destroyInstance",argc, 0); - return 0; -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_NodeReader_destroyInstance'.",&tolua_err); -#endif - return 0; -} -int lua_cocos2dx_studio_NodeReader_constructor(lua_State* tolua_S) -{ - int argc = 0; - cocostudio::timeline::NodeReader* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - - - argc = lua_gettop(tolua_S)-1; - if (argc == 0) - { - if(!ok) - return 0; - cobj = new cocostudio::timeline::NodeReader(); - tolua_pushusertype(tolua_S,(void*)cobj,"ccs.NodeReader"); - tolua_register_gc(tolua_S,lua_gettop(tolua_S)); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.NodeReader:NodeReader",argc, 0); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_NodeReader_constructor'.",&tolua_err); -#endif - - return 0; -} - -static int lua_cocos2dx_studio_NodeReader_finalize(lua_State* tolua_S) -{ - printf("luabindings: finalizing LUA object (NodeReader)"); - return 0; -} - -int lua_register_cocos2dx_studio_NodeReader(lua_State* tolua_S) -{ - tolua_usertype(tolua_S,"ccs.NodeReader"); - tolua_cclass(tolua_S,"NodeReader","ccs.NodeReader","",nullptr); - - tolua_beginmodule(tolua_S,"NodeReader"); - tolua_function(tolua_S,"new",lua_cocos2dx_studio_NodeReader_constructor); - tolua_function(tolua_S,"setJsonPath",lua_cocos2dx_studio_NodeReader_setJsonPath); - tolua_function(tolua_S,"createNode",lua_cocos2dx_studio_NodeReader_createNode); - tolua_function(tolua_S,"loadNodeWithFile",lua_cocos2dx_studio_NodeReader_loadNodeWithFile); - tolua_function(tolua_S,"purge",lua_cocos2dx_studio_NodeReader_purge); - tolua_function(tolua_S,"init",lua_cocos2dx_studio_NodeReader_init); - tolua_function(tolua_S,"loadNodeWithContent",lua_cocos2dx_studio_NodeReader_loadNodeWithContent); - tolua_function(tolua_S,"isRecordJsonPath",lua_cocos2dx_studio_NodeReader_isRecordJsonPath); - tolua_function(tolua_S,"getJsonPath",lua_cocos2dx_studio_NodeReader_getJsonPath); - tolua_function(tolua_S,"setRecordJsonPath",lua_cocos2dx_studio_NodeReader_setRecordJsonPath); - tolua_function(tolua_S,"destroyInstance", lua_cocos2dx_studio_NodeReader_destroyInstance); - tolua_endmodule(tolua_S); - std::string typeName = typeid(cocostudio::timeline::NodeReader).name(); - g_luaType[typeName] = "ccs.NodeReader"; - g_typeCast["NodeReader"] = "ccs.NodeReader"; - return 1; -} - -int lua_cocos2dx_studio_ActionTimelineCache_createAction(lua_State* tolua_S) +int lua_cocos2dx_studio_ActionTimelineCache_createActionFromJson(lua_State* tolua_S) { int argc = 0; cocostudio::timeline::ActionTimelineCache* cobj = nullptr; @@ -14823,7 +14324,7 @@ int lua_cocos2dx_studio_ActionTimelineCache_createAction(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 if (!cobj) { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_ActionTimelineCache_createAction'", nullptr); + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_ActionTimelineCache_createActionFromJson'", nullptr); return 0; } #endif @@ -14833,19 +14334,207 @@ int lua_cocos2dx_studio_ActionTimelineCache_createAction(lua_State* tolua_S) { std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createAction"); + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createActionFromJson"); if(!ok) return 0; - cocostudio::timeline::ActionTimeline* ret = cobj->createAction(arg0); + cocostudio::timeline::ActionTimeline* ret = cobj->createActionFromJson(arg0); object_to_luaval(tolua_S, "ccs.ActionTimeline",(cocostudio::timeline::ActionTimeline*)ret); return 1; } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.ActionTimelineCache:createAction",argc, 1); + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.ActionTimelineCache:createActionFromJson",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_ActionTimelineCache_createAction'.",&tolua_err); + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_ActionTimelineCache_createActionFromJson'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_studio_ActionTimelineCache_createActionFromProtocolBuffers(lua_State* tolua_S) +{ + int argc = 0; + cocostudio::timeline::ActionTimelineCache* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccs.ActionTimelineCache",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocostudio::timeline::ActionTimelineCache*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_ActionTimelineCache_createActionFromProtocolBuffers'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createActionFromProtocolBuffers"); + if(!ok) + return 0; + cocostudio::timeline::ActionTimeline* ret = cobj->createActionFromProtocolBuffers(arg0); + object_to_luaval(tolua_S, "ccs.ActionTimeline",(cocostudio::timeline::ActionTimeline*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.ActionTimelineCache:createActionFromProtocolBuffers",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_ActionTimelineCache_createActionFromProtocolBuffers'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_studio_ActionTimelineCache_createActionFromXML(lua_State* tolua_S) +{ + int argc = 0; + cocostudio::timeline::ActionTimelineCache* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccs.ActionTimelineCache",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocostudio::timeline::ActionTimelineCache*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_ActionTimelineCache_createActionFromXML'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createActionFromXML"); + if(!ok) + return 0; + cocostudio::timeline::ActionTimeline* ret = cobj->createActionFromXML(arg0); + object_to_luaval(tolua_S, "ccs.ActionTimeline",(cocostudio::timeline::ActionTimeline*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.ActionTimelineCache:createActionFromXML",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_ActionTimelineCache_createActionFromXML'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFileFromProtocolBuffers(lua_State* tolua_S) +{ + int argc = 0; + cocostudio::timeline::ActionTimelineCache* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccs.ActionTimelineCache",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocostudio::timeline::ActionTimelineCache*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFileFromProtocolBuffers'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:loadAnimationActionWithFileFromProtocolBuffers"); + if(!ok) + return 0; + cocostudio::timeline::ActionTimeline* ret = cobj->loadAnimationActionWithFileFromProtocolBuffers(arg0); + object_to_luaval(tolua_S, "ccs.ActionTimeline",(cocostudio::timeline::ActionTimeline*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.ActionTimelineCache:loadAnimationActionWithFileFromProtocolBuffers",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFileFromProtocolBuffers'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFileFromXML(lua_State* tolua_S) +{ + int argc = 0; + cocostudio::timeline::ActionTimelineCache* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccs.ActionTimelineCache",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocostudio::timeline::ActionTimelineCache*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFileFromXML'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:loadAnimationActionWithFileFromXML"); + if(!ok) + return 0; + cocostudio::timeline::ActionTimeline* ret = cobj->loadAnimationActionWithFileFromXML(arg0); + object_to_luaval(tolua_S, "ccs.ActionTimeline",(cocostudio::timeline::ActionTimeline*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.ActionTimelineCache:loadAnimationActionWithFileFromXML",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFileFromXML'.",&tolua_err); #endif return 0; @@ -14936,6 +14625,53 @@ int lua_cocos2dx_studio_ActionTimelineCache_init(lua_State* tolua_S) return 0; } +int lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFile(lua_State* tolua_S) +{ + int argc = 0; + cocostudio::timeline::ActionTimelineCache* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccs.ActionTimelineCache",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocostudio::timeline::ActionTimelineCache*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFile'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::string arg0; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:loadAnimationActionWithFile"); + if(!ok) + return 0; + cocostudio::timeline::ActionTimeline* ret = cobj->loadAnimationActionWithFile(arg0); + object_to_luaval(tolua_S, "ccs.ActionTimeline",(cocostudio::timeline::ActionTimeline*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.ActionTimelineCache:loadAnimationActionWithFile",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFile'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithContent(lua_State* tolua_S) { int argc = 0; @@ -14986,53 +14722,6 @@ int lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithContent(lua_S return 0; } -int lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFile(lua_State* tolua_S) -{ - int argc = 0; - cocostudio::timeline::ActionTimelineCache* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccs.ActionTimelineCache",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocostudio::timeline::ActionTimelineCache*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFile'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - std::string arg0; - - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:loadAnimationActionWithFile"); - if(!ok) - return 0; - cocostudio::timeline::ActionTimeline* ret = cobj->loadAnimationActionWithFile(arg0); - object_to_luaval(tolua_S, "ccs.ActionTimeline",(cocostudio::timeline::ActionTimeline*)ret); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccs.ActionTimelineCache:loadAnimationActionWithFile",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFile'.",&tolua_err); -#endif - - return 0; -} int lua_cocos2dx_studio_ActionTimelineCache_removeAction(lua_State* tolua_S) { int argc = 0; @@ -15109,6 +14798,39 @@ int lua_cocos2dx_studio_ActionTimelineCache_destroyInstance(lua_State* tolua_S) #endif return 0; } +int lua_cocos2dx_studio_ActionTimelineCache_createAction(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"ccs.ActionTimelineCache",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S) - 1; + + if (argc == 1) + { + std::string arg0; + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccs.ActionTimelineCache:createAction"); + if(!ok) + return 0; + cocostudio::timeline::ActionTimeline* ret = cocostudio::timeline::ActionTimelineCache::createAction(arg0); + object_to_luaval(tolua_S, "ccs.ActionTimeline",(cocostudio::timeline::ActionTimeline*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "ccs.ActionTimelineCache:createAction",argc, 1); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_studio_ActionTimelineCache_createAction'.",&tolua_err); +#endif + return 0; +} static int lua_cocos2dx_studio_ActionTimelineCache_finalize(lua_State* tolua_S) { printf("luabindings: finalizing LUA object (ActionTimelineCache)"); @@ -15121,13 +14843,18 @@ int lua_register_cocos2dx_studio_ActionTimelineCache(lua_State* tolua_S) tolua_cclass(tolua_S,"ActionTimelineCache","ccs.ActionTimelineCache","",nullptr); tolua_beginmodule(tolua_S,"ActionTimelineCache"); - tolua_function(tolua_S,"createAction",lua_cocos2dx_studio_ActionTimelineCache_createAction); + tolua_function(tolua_S,"createActionFromJson",lua_cocos2dx_studio_ActionTimelineCache_createActionFromJson); + tolua_function(tolua_S,"createActionFromProtocolBuffers",lua_cocos2dx_studio_ActionTimelineCache_createActionFromProtocolBuffers); + tolua_function(tolua_S,"createActionFromXML",lua_cocos2dx_studio_ActionTimelineCache_createActionFromXML); + tolua_function(tolua_S,"loadAnimationActionWithFileFromProtocolBuffers",lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFileFromProtocolBuffers); + tolua_function(tolua_S,"loadAnimationActionWithFileFromXML",lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFileFromXML); tolua_function(tolua_S,"purge",lua_cocos2dx_studio_ActionTimelineCache_purge); tolua_function(tolua_S,"init",lua_cocos2dx_studio_ActionTimelineCache_init); - tolua_function(tolua_S,"loadAnimationActionWithContent",lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithContent); tolua_function(tolua_S,"loadAnimationActionWithFile",lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithFile); + tolua_function(tolua_S,"loadAnimationActionWithContent",lua_cocos2dx_studio_ActionTimelineCache_loadAnimationActionWithContent); tolua_function(tolua_S,"removeAction",lua_cocos2dx_studio_ActionTimelineCache_removeAction); tolua_function(tolua_S,"destroyInstance", lua_cocos2dx_studio_ActionTimelineCache_destroyInstance); + tolua_function(tolua_S,"createAction", lua_cocos2dx_studio_ActionTimelineCache_createAction); tolua_endmodule(tolua_S); std::string typeName = typeid(cocostudio::timeline::ActionTimelineCache).name(); g_luaType[typeName] = "ccs.ActionTimelineCache"; @@ -20158,7 +19885,6 @@ TOLUA_API int register_all_cocos2dx_studio(lua_State* tolua_S) lua_register_cocos2dx_studio_ActionFrame(tolua_S); lua_register_cocos2dx_studio_ActionRotationFrame(tolua_S); - lua_register_cocos2dx_studio_NodeReader(tolua_S); lua_register_cocos2dx_studio_Frame(tolua_S); lua_register_cocos2dx_studio_ScaleFrame(tolua_S); lua_register_cocos2dx_studio_Tween(tolua_S); diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.hpp index 2ee99133be..6633b44807 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.hpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_studio_auto.hpp @@ -478,13 +478,6 @@ int register_all_cocos2dx_studio(lua_State* tolua_S); - - - - - - - diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.cpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.cpp index 9706172971..ee293c5b6c 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.cpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.cpp @@ -2614,6 +2614,52 @@ int lua_cocos2dx_ui_Widget_isBright(lua_State* tolua_S) return 0; } +int lua_cocos2dx_ui_Widget_setUnifySizeEnabled(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::ui::Widget* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(tolua_S,1,"ccui.Widget",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::ui::Widget*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_ui_Widget_setUnifySizeEnabled'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + bool arg0; + + ok &= luaval_to_boolean(tolua_S, 2,&arg0, "ccui.Widget:setUnifySizeEnabled"); + if(!ok) + return 0; + cobj->setUnifySizeEnabled(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "ccui.Widget:setUnifySizeEnabled",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ui_Widget_setUnifySizeEnabled'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_ui_Widget_isPropagateTouchEvents(lua_State* tolua_S) { int argc = 0; @@ -3491,6 +3537,7 @@ int lua_register_cocos2dx_ui_Widget(lua_State* tolua_S) tolua_function(tolua_S,"setFocusEnabled",lua_cocos2dx_ui_Widget_setFocusEnabled); tolua_function(tolua_S,"getBottomBoundary",lua_cocos2dx_ui_Widget_getBottomBoundary); tolua_function(tolua_S,"isBright",lua_cocos2dx_ui_Widget_isBright); + tolua_function(tolua_S,"setUnifySizeEnabled",lua_cocos2dx_ui_Widget_setUnifySizeEnabled); tolua_function(tolua_S,"isPropagateTouchEvents",lua_cocos2dx_ui_Widget_isPropagateTouchEvents); tolua_function(tolua_S,"getCurrentFocusedWidget",lua_cocos2dx_ui_Widget_getCurrentFocusedWidget); tolua_function(tolua_S,"requestFocus",lua_cocos2dx_ui_Widget_requestFocus); @@ -16553,6 +16600,38 @@ int lua_cocos2dx_ui_Helper_getSubStringOfUTF8String(lua_State* tolua_S) #endif return 0; } +int lua_cocos2dx_ui_Helper_doLayout(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"ccui.Helper",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S) - 1; + + if (argc == 1) + { + cocos2d::Node* arg0; + ok &= luaval_to_object(tolua_S, 2, "cc.Node",&arg0); + if(!ok) + return 0; + cocos2d::ui::Helper::doLayout(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "ccui.Helper:doLayout",argc, 1); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ui_Helper_doLayout'.",&tolua_err); +#endif + return 0; +} int lua_cocos2dx_ui_Helper_seekWidgetByTag(lua_State* tolua_S) { int argc = 0; @@ -16671,6 +16750,7 @@ int lua_register_cocos2dx_ui_Helper(lua_State* tolua_S) tolua_beginmodule(tolua_S,"Helper"); tolua_function(tolua_S,"getSubStringOfUTF8String", lua_cocos2dx_ui_Helper_getSubStringOfUTF8String); + tolua_function(tolua_S,"doLayout", lua_cocos2dx_ui_Helper_doLayout); tolua_function(tolua_S,"seekWidgetByTag", lua_cocos2dx_ui_Helper_seekWidgetByTag); tolua_function(tolua_S,"seekActionWidgetByActionTag", lua_cocos2dx_ui_Helper_seekActionWidgetByActionTag); tolua_function(tolua_S,"seekWidgetByName", lua_cocos2dx_ui_Helper_seekWidgetByName); diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.hpp index 83faee1a49..0c7fde0158 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.hpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_ui_auto.hpp @@ -477,6 +477,8 @@ int register_all_cocos2dx_ui(lua_State* tolua_S); + + diff --git a/cocos/scripting/lua-bindings/manual/3d/lua_cocos2dx_3d_manual.cpp b/cocos/scripting/lua-bindings/manual/3d/lua_cocos2dx_3d_manual.cpp index 1de8c91325..55e1ee709f 100644 --- a/cocos/scripting/lua-bindings/manual/3d/lua_cocos2dx_3d_manual.cpp +++ b/cocos/scripting/lua-bindings/manual/3d/lua_cocos2dx_3d_manual.cpp @@ -26,7 +26,7 @@ #include "LuaBasicConversions.h" #include "CCLuaEngine.h" -int lua_cocos2dx_3d_Sprite3D_setBlendFunc(lua_State* tolua_S) +int lua_cocos2dx_3d_Sprite3D_setBlendFunc(lua_State* L) { int argc = 0; cocos2d::Sprite3D* cobj = nullptr; @@ -37,27 +37,27 @@ int lua_cocos2dx_3d_Sprite3D_setBlendFunc(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"cc.Sprite3D",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(L,1,"cc.Sprite3D",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::Sprite3D*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::Sprite3D*)tolua_tousertype(L,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_3d_Sprite3D_setBlendFunc'", nullptr); + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_Sprite3D_setBlendFunc'", nullptr); return 0; } #endif - argc = lua_gettop(tolua_S)-1; + argc = lua_gettop(L)-1; if (argc == 2) { GLenum src, dst; - if (!luaval_to_int32(tolua_S, 2, (int32_t*)&src, "cc.Sprite3D:setBlendFunc")) + if (!luaval_to_int32(L, 2, (int32_t*)&src, "cc.Sprite3D:setBlendFunc")) return 0; - if (!luaval_to_int32(tolua_S, 3, (int32_t*)&dst, "cc.Sprite3D:setBlendFunc")) + if (!luaval_to_int32(L, 3, (int32_t*)&dst, "cc.Sprite3D:setBlendFunc")) return 0; BlendFunc blendFunc = {src, dst}; @@ -69,7 +69,48 @@ int lua_cocos2dx_3d_Sprite3D_setBlendFunc(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_3d_Sprite3D_setBlendFunc'.",&tolua_err); + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_Sprite3D_setBlendFunc'.",&tolua_err); +#endif + return 0; +} + +int lua_cocos2dx_3d_Sprite3D_getAABB(lua_State* L) +{ + int argc = 0; + cocos2d::Sprite3D* cobj = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.Sprite3D",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Sprite3D*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_Sprite3D_getAABB'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 0) + { + cocos2d::AABB* ret = const_cast(&(cobj->getAABB())); + object_to_luaval(L, "cc.AABB",(cocos2d::AABB*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.Sprite3D:getAABB",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_Sprite3D_getAABB'.",&tolua_err); #endif return 0; } @@ -81,6 +122,7 @@ static void extendSprite3D(lua_State* L) if (lua_istable(L,-1)) { tolua_function(L, "setBlendFunc", lua_cocos2dx_3d_Sprite3D_setBlendFunc); + tolua_function(L, "getAABB", lua_cocos2dx_3d_Sprite3D_getAABB); } lua_pop(L, 1); } @@ -91,6 +133,1688 @@ static int register_all_cocos2dx_3d_manual(lua_State* L) return 0; extendSprite3D(L); + return 0; +} + +int lua_cocos2dx_3d_AABB_reset(lua_State* L) +{ + int argc = 0; + cocos2d::AABB* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::AABB*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_reset'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->reset(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:reset",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_AABB_reset'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_3d_AABB_set(lua_State* L) +{ + int argc = 0; + cocos2d::AABB* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::AABB*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_set'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 2) + { + cocos2d::Vec3 arg0; + cocos2d::Vec3 arg1; + + ok &= luaval_to_vec3(L, 2, &arg0, "cc.AABB:set"); + + ok &= luaval_to_vec3(L, 3, &arg1, "cc.AABB:set"); + if(!ok) + return 0; + cobj->set(arg0, arg1); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:set",argc, 2); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_AABB_set'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_3d_AABB_transform(lua_State* L) +{ + int argc = 0; + cocos2d::AABB* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::AABB*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_transform'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 1) + { + cocos2d::Mat4 arg0; + + ok &= luaval_to_mat4(L, 2, &arg0, "cc.AABB:transform"); + if(!ok) + return 0; + cobj->transform(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:transform",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_AABB_transform'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_3d_AABB_getCenter(lua_State* L) +{ + int argc = 0; + cocos2d::AABB* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::AABB*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_getCenter'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 0) + { + if(!ok) + return 0; + cocos2d::Vec3 ret = cobj->getCenter(); + vec3_to_luaval(L, ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:getCenter",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_AABB_getCenter'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_3d_AABB_isEmpty(lua_State* L) +{ + int argc = 0; + cocos2d::AABB* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::AABB*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_isEmpty'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 0) + { + if(!ok) + return 0; + bool ret = cobj->isEmpty(); + tolua_pushboolean(L,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:isEmpty",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_AABB_isEmpty'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_3d_AABB_getCorners(lua_State* L) +{ + int argc = 0; + cocos2d::AABB* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::AABB*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_getCorners'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 1) + { + cocos2d::Vec3* arg0; + + ok &= luaval_to_object(L, 2, "cc.Vec3",&arg0); + if(!ok) + return 0; + cobj->getCorners(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:getCorners",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_AABB_getCorners'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_3d_AABB_updateMinMax(lua_State* L) +{ + int argc = 0; + cocos2d::AABB* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::AABB*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_updateMinMax'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 2) + { + const cocos2d::Vec3* arg0; + ssize_t arg1; + + ok &= luaval_to_object(L, 2, "cc.Vec3",&arg0); + + ok &= luaval_to_ssize(L, 3, &arg1, "cc.AABB:updateMinMax"); + if(!ok) + return 0; + cobj->updateMinMax(arg0, arg1); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:updateMinMax",argc, 2); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_AABB_updateMinMax'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_3d_AABB_containPoint(lua_State* L) +{ + int argc = 0; + cocos2d::AABB* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::AABB*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_AABB_containPoint'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 1) + { + cocos2d::Vec3 arg0; + + ok &= luaval_to_vec3(L, 2, &arg0, "cc.AABB:containPoint"); + if(!ok) + return 0; + bool ret = cobj->containPoint(arg0); + tolua_pushboolean(L,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:containPoint",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_AABB_containPoint'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_3d_AABB_constructor(lua_State* L) +{ + int argc = 0; + cocos2d::AABB* cobj = nullptr; + bool ok = true; +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + argc = lua_gettop(L)-1; + do{ + if (argc == 2) { + cocos2d::Vec3 arg0; + ok &= luaval_to_vec3(L, 2, &arg0, "cc.AABB:AABB"); + + if (!ok) { break; } + cocos2d::Vec3 arg1; + ok &= luaval_to_vec3(L, 3, &arg1, "cc.AABB:AABB"); + + if (!ok) { break; } + cobj = new cocos2d::AABB(arg0, arg1); + tolua_pushusertype(L,(void*)cobj,"cc.AABB"); + tolua_register_gc(L,lua_gettop(L)); + return 1; + } + }while(0); + ok = true; + do{ + if (argc == 0) { + cobj = new cocos2d::AABB(); + tolua_pushusertype(L,(void*)cobj,"cc.AABB"); + tolua_register_gc(L,lua_gettop(L)); + return 1; + } + }while(0); + ok = true; + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.AABB:AABB",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_AABB_constructor'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_3d_get_AABB_min(lua_State* L) +{ + cocos2d::AABB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::AABB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_get_AABB_min'\n", nullptr); + return 0; + } +#endif + vec3_to_luaval(L, self->_min); + return 1; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_get_AABB_min'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_set_AABB_min(lua_State* L) +{ + int argc = 0; + cocos2d::AABB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::AABB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_set_AABB_min'\n", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L) - 1; + + if (1 == argc) + { +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(L, 2, 0, &tolua_err)) + goto tolua_lerror; +#endif + luaval_to_vec3(L, 2, &self->_min); + return 0; + } + + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_set_AABB_min'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_get_AABB_max(lua_State* L) +{ + cocos2d::AABB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::AABB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_get_AABB_max'\n", nullptr); + return 0; + } +#endif + vec3_to_luaval(L, self->_max); + return 1; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_get_AABB_max'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_set_AABB_max(lua_State* L) +{ + int argc = 0; + cocos2d::AABB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.AABB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::AABB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_set_AABB_max'\n", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L) - 1; + + if (1 == argc) + { +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(L, 2, 0, &tolua_err)) + goto tolua_lerror; +#endif + luaval_to_vec3(L, 2, &self->_max); + return 0; + } + + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_set_Ray_direction'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_AABB_finalize(lua_State* L) +{ + cocos2d::AABB* self = (cocos2d::AABB*) tolua_tousertype(L,1,0); + CC_SAFE_DELETE(self); + return 0; +} + +int lua_register_cocos2dx_3d_AABB(lua_State* L) +{ + tolua_usertype(L,"cc.AABB"); + tolua_cclass(L,"AABB","cc.AABB","",lua_cocos2dx_3d_AABB_finalize); + + tolua_beginmodule(L,"AABB"); + tolua_variable(L, "_min", lua_cocos2dx_3d_get_AABB_min, lua_cocos2dx_3d_set_AABB_min); + tolua_variable(L, "_max", lua_cocos2dx_3d_get_AABB_max, lua_cocos2dx_3d_set_AABB_max); + tolua_function(L,"new",lua_cocos2dx_3d_AABB_constructor); + tolua_function(L,"reset",lua_cocos2dx_3d_AABB_reset); + tolua_function(L,"set",lua_cocos2dx_3d_AABB_set); + tolua_function(L,"transform",lua_cocos2dx_3d_AABB_transform); + tolua_function(L,"getCenter",lua_cocos2dx_3d_AABB_getCenter); + tolua_function(L,"isEmpty",lua_cocos2dx_3d_AABB_isEmpty); + tolua_function(L,"getCorners",lua_cocos2dx_3d_AABB_getCorners); + tolua_function(L,"updateMinMax",lua_cocos2dx_3d_AABB_updateMinMax); + tolua_function(L,"containPoint",lua_cocos2dx_3d_AABB_containPoint); + tolua_endmodule(L); + std::string typeName = typeid(cocos2d::AABB).name(); + g_luaType[typeName] = "cc.AABB"; + g_typeCast["AABB"] = "cc.AABB"; + return 1; +} + +int lua_cocos2dx_3d_OBB_reset(lua_State* L) +{ + int argc = 0; + cocos2d::OBB* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::OBB*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_OBB_reset'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->reset(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.OBB:reset",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_OBB_reset'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_3d_OBB_set(lua_State* L) +{ + int argc = 0; + cocos2d::OBB* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::OBB*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_OBB_set'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 5) + { + cocos2d::Vec3 arg0; + cocos2d::Vec3 arg1; + cocos2d::Vec3 arg2; + cocos2d::Vec3 arg3; + cocos2d::Vec3 arg4; + + ok &= luaval_to_vec3(L, 2, &arg0, "cc.OBB:set"); + + ok &= luaval_to_vec3(L, 3, &arg1, "cc.OBB:set"); + + ok &= luaval_to_vec3(L, 4, &arg2, "cc.OBB:set"); + + ok &= luaval_to_vec3(L, 5, &arg3, "cc.OBB:set"); + + ok &= luaval_to_vec3(L, 6, &arg4, "cc.OBB:set"); + if(!ok) + return 0; + cobj->set(arg0, arg1, arg2, arg3, arg4); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.OBB:set",argc, 5); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_OBB_set'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_3d_OBB_transform(lua_State* L) +{ + int argc = 0; + cocos2d::OBB* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::OBB*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_OBB_transform'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 1) + { + cocos2d::Mat4 arg0; + + ok &= luaval_to_mat4(L, 2, &arg0, "cc.OBB:transform"); + if(!ok) + return 0; + cobj->transform(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.OBB:transform",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_OBB_transform'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_3d_OBB_containPoint(lua_State* L) +{ + int argc = 0; + cocos2d::OBB* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::OBB*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_OBB_containPoint'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 1) + { + cocos2d::Vec3 arg0; + + ok &= luaval_to_vec3(L, 2, &arg0, "cc.OBB:containPoint"); + if(!ok) + return 0; + bool ret = cobj->containPoint(arg0); + tolua_pushboolean(L,(bool)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.OBB:containPoint",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_OBB_containPoint'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_3d_OBB_constructor(lua_State* L) +{ + int argc = 0; + cocos2d::OBB* cobj = nullptr; + bool ok = true; +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + argc = lua_gettop(L)-1; + do{ + if (argc == 1) { + cocos2d::AABB* arg0; + ok &= luaval_to_object(L, 2, "cc.AABB",&arg0); + + if (!ok) { break; } + cobj = new cocos2d::OBB(*arg0); + tolua_pushusertype(L,(void*)cobj,"cc.OBB"); + tolua_register_gc(L,lua_gettop(L)); + return 1; + } + }while(0); + ok = true; + do{ + if (argc == 0) { + cobj = new cocos2d::OBB(); + tolua_pushusertype(L,(void*)cobj,"cc.OBB"); + tolua_register_gc(L,lua_gettop(L)); + return 1; + } + }while(0); + ok = true; + do{ + if (argc == 2) { + const cocos2d::Vec3* arg0; + ok &= luaval_to_object(L, 2, "cc.Vec3",&arg0); + + if (!ok) { break; } + int arg1; + ok &= luaval_to_int32(L, 3,(int *)&arg1, "cc.OBB:OBB"); + + if (!ok) { break; } + cobj = new cocos2d::OBB(arg0, arg1); + tolua_pushusertype(L,(void*)cobj,"cc.OBB"); + tolua_register_gc(L,lua_gettop(L)); + return 1; + } + }while(0); + ok = true; + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.OBB:OBB",argc, 2); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_OBB_constructor'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_3d_OBB_intersects(lua_State* L) +{ + int argc = 0; + cocos2d::OBB* self = nullptr; + bool ok = true; +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::OBB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_OBB_intersects'\n", nullptr); + return 0; + } +#endif + argc = lua_gettop(L)-1; + if(1 == argc) + { + cocos2d::OBB* arg0; + ok &= luaval_to_object(L, 2, "cc.OBB",&arg0); + + if (!ok) + return 0; + + bool ret = self->intersects(*arg0); + tolua_pushboolean(L, ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.OBB:intersects",argc, 1); + return 0; +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_OBB_intersects'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_get_OBB_center(lua_State* L) +{ + cocos2d::OBB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::OBB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_get_OBB_center'\n", nullptr); + return 0; + } +#endif + vec3_to_luaval(L, self->_center); + return 1; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_get_OBB_center'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_set_OBB_center(lua_State* L) +{ + int argc = 0; + cocos2d::OBB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::OBB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_set_OBB_center'\n", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L) - 1; + + if (1 == argc) + { +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(L, 2, 0, &tolua_err)) + goto tolua_lerror; +#endif + luaval_to_vec3(L, 2, &self->_center); + return 0; + } + + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_set_OBB_center'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_get_OBB_xAxis(lua_State* L) +{ + cocos2d::OBB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::OBB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_get_OBB_xAxis'\n", nullptr); + return 0; + } +#endif + vec3_to_luaval(L, self->_xAxis); + return 1; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_get_OBB_xAxis'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_set_OBB_xAxis(lua_State* L) +{ + int argc = 0; + cocos2d::OBB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::OBB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_set_OBB_xAxis'\n", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L) - 1; + + if (1 == argc) + { +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(L, 2, 0, &tolua_err)) + goto tolua_lerror; +#endif + luaval_to_vec3(L, 2, &self->_xAxis); + return 0; + } + + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_set_OBB_center'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_get_OBB_yAxis(lua_State* L) +{ + cocos2d::OBB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::OBB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_get_OBB_yAxis'\n", nullptr); + return 0; + } +#endif + vec3_to_luaval(L, self->_yAxis); + return 1; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_get_OBB_yAxis'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_set_OBB_yAxis(lua_State* L) +{ + int argc = 0; + cocos2d::OBB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::OBB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_set_OBB_yAxis'\n", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L) - 1; + + if (1 == argc) + { +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(L, 2, 0, &tolua_err)) + goto tolua_lerror; +#endif + luaval_to_vec3(L, 2, &self->_yAxis); + return 0; + } + + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_set_OBB_yAxis'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_get_OBB_zAxis(lua_State* L) +{ + cocos2d::OBB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::OBB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_get_OBB_zAxis'\n", nullptr); + return 0; + } +#endif + vec3_to_luaval(L, self->_zAxis); + return 1; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_get_OBB_zAxis'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_set_OBB_zAxis(lua_State* L) +{ + int argc = 0; + cocos2d::OBB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::OBB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_set_OBB_zAxis'\n", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L) - 1; + + if (1 == argc) + { +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(L, 2, 0, &tolua_err)) + goto tolua_lerror; +#endif + luaval_to_vec3(L, 2, &self->_zAxis); + return 0; + } + + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_set_OBB_zAxis'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_get_OBB_extents(lua_State* L) +{ + cocos2d::OBB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::OBB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_get_OBB_extents'\n", nullptr); + return 0; + } +#endif + vec3_to_luaval(L, self->_extents); + return 1; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_get_OBB_extents'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_set_OBB_extents(lua_State* L) +{ + int argc = 0; + cocos2d::OBB* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::OBB*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_set_OBB_extents'\n", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L) - 1; + + if (1 == argc) + { +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(L, 2, 0, &tolua_err)) + goto tolua_lerror; +#endif + luaval_to_vec3(L, 2, &self->_extents); + return 0; + } + + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_set_OBB_extents'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_OBB_getCorners(lua_State* L) +{ + int argc = 0; + cocos2d::OBB* cobj = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.OBB",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::OBB*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_OBB_getCorners'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 1) + { + cocos2d::Vec3* arg0; +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(L, 2, 0, &tolua_err)) + goto tolua_lerror; +#endif + + size_t len = lua_objlen(L, 2); + if (len == 0 ) + { + CCLOG("Table's len equal 0"); + return 0; + } + + arg0 = new cocos2d::Vec3[len]; + + if (nullptr == arg0) + { + CCLOG("Allocate cocos2d::Vec3 array in the lua_cocos2dx_3d_OBB_getCorners failed!"); + return 0; + } + + for (int i = 1 ; i <= len; i++) + { + lua_pushnumber(L,i); + lua_gettable(L,2); + if (lua_isnil(L, -1)) + { + arg0[i - 1] = cocos2d::Vec3(0,0,0); + } + else + { + luaval_to_vec3(L, -1, &arg0[i - 1], "cc.OBB:getCorners"); + } + lua_pop(L,1); + } + + cobj->getCorners(arg0); + + lua_newtable(L); + + for (int i = 1; i <= len; i++) + { + lua_pushnumber(L, i); + vec3_to_luaval(L, arg0[i - 1]); + lua_rawset(L, -3); + } + CC_SAFE_DELETE_ARRAY(arg0); + + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.OBB:getCorners",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_OBB_getCorners'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_3d_OBB_finalize(lua_State* L) +{ + cocos2d::OBB* self = (cocos2d::OBB*) tolua_tousertype(L,1,0); + CC_SAFE_DELETE(self); + return 0; +} + +int lua_register_cocos2dx_3d_OBB(lua_State* L) +{ + tolua_usertype(L,"cc.OBB"); + tolua_cclass(L,"OBB","cc.OBB","",lua_cocos2dx_3d_OBB_finalize); + + tolua_beginmodule(L,"OBB"); + tolua_variable(L, "_center", lua_cocos2dx_3d_get_OBB_center, lua_cocos2dx_3d_set_OBB_center); + tolua_variable(L, "_xAxis", lua_cocos2dx_3d_get_OBB_xAxis, lua_cocos2dx_3d_set_OBB_xAxis); + tolua_variable(L, "_yAxis", lua_cocos2dx_3d_get_OBB_yAxis, lua_cocos2dx_3d_set_OBB_yAxis); + tolua_variable(L, "_zAxis", lua_cocos2dx_3d_get_OBB_zAxis, lua_cocos2dx_3d_set_OBB_zAxis); + tolua_variable(L, "_extents", lua_cocos2dx_3d_get_OBB_extents, lua_cocos2dx_3d_set_OBB_extents); + tolua_function(L, "new", lua_cocos2dx_3d_OBB_constructor); + tolua_function(L,"reset",lua_cocos2dx_3d_OBB_reset); + tolua_function(L,"set",lua_cocos2dx_3d_OBB_set); + tolua_function(L,"transform",lua_cocos2dx_3d_OBB_transform); + tolua_function(L,"containPoint",lua_cocos2dx_3d_OBB_containPoint); + tolua_function(L,"intersects", lua_cocos2dx_3d_OBB_intersects); + tolua_function(L,"getCorners", lua_cocos2dx_3d_OBB_getCorners); + tolua_endmodule(L); + std::string typeName = typeid(cocos2d::OBB).name(); + g_luaType[typeName] = "cc.OBB"; + g_typeCast["OBB"] = "cc.OBB"; + return 1; +} + +int lua_cocos2dx_3d_Ray_set(lua_State* L) +{ + int argc = 0; + cocos2d::Ray* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.Ray",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Ray*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_Ray_set'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 2) + { + cocos2d::Vec3 arg0; + cocos2d::Vec3 arg1; + + ok &= luaval_to_vec3(L, 2, &arg0, "cc.Ray:set"); + + ok &= luaval_to_vec3(L, 3, &arg1, "cc.Ray:set"); + if(!ok) + return 0; + cobj->set(arg0, arg1); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.Ray:set",argc, 2); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_Ray_set'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_3d_Ray_transform(lua_State* L) +{ + int argc = 0; + cocos2d::Ray* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.Ray",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::Ray*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_3d_Ray_transform'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 1) + { + cocos2d::Mat4 arg0; + + ok &= luaval_to_mat4(L, 2, &arg0, "cc.Ray:transform"); + if(!ok) + return 0; + cobj->transform(arg0); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.Ray:transform",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_Ray_transform'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_3d_Ray_intersects(lua_State* L) +{ + int argc = 0; + cocos2d::Ray* self = nullptr; + bool ok = true; +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.Ray",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::Ray*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_Ray_intersects'\n", nullptr); + return 0; + } +#endif + argc = lua_gettop(L)-1; + if(1 == argc) + { + cocos2d::OBB* arg0 = nullptr; + ok &= luaval_to_object(L, 2, "cc.OBB",&arg0); + + if (!ok) + return 0; + + bool ret = self->intersects(*arg0); + tolua_pushboolean(L, ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.Ray:intersects",argc, 1); + return 0; +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_get_OBB_center'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_Ray_constructor(lua_State* L) +{ + int argc = 0; + cocos2d::Ray* cobj = nullptr; + bool ok = true; +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + argc = lua_gettop(L)-1; + do{ + if (argc == 2) { + cocos2d::Vec3 arg0; + ok &= luaval_to_vec3(L, 2, &arg0, "cc.Ray:Ray"); + + if (!ok) { break; } + cocos2d::Vec3 arg1; + ok &= luaval_to_vec3(L, 3, &arg1, "cc.Ray:Ray"); + + if (!ok) { break; } + cobj = new cocos2d::Ray(arg0, arg1); + tolua_pushusertype(L,(void*)cobj,"cc.Ray"); + tolua_register_gc(L,lua_gettop(L)); + return 1; + } + }while(0); + ok = true; + do{ + if (argc == 0) { + cobj = new cocos2d::Ray(); + tolua_pushusertype(L,(void*)cobj,"cc.Ray"); + tolua_register_gc(L,lua_gettop(L)); + return 1; + } + }while(0); + ok = true; + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.Ray:Ray",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_Ray_constructor'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_3d_get_Ray_origin(lua_State* L) +{ + cocos2d::Ray* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.Ray",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::Ray*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_get_Ray_origin'\n", nullptr); + return 0; + } +#endif + vec3_to_luaval(L, self->_origin); + return 1; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_get_Ray_origin'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_set_Ray_origin(lua_State* L) +{ + int argc = 0; + cocos2d::Ray* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.Ray",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::Ray*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_set_Ray_origin'\n", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L) - 1; + + if (1 == argc) + { +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(L, 2, 0, &tolua_err)) + goto tolua_lerror; +#endif + luaval_to_vec3(L, 2, &self->_origin); + return 0; + } + + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_set_Ray_origin'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_get_Ray_direction(lua_State* L) +{ + cocos2d::Ray* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.Ray",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::Ray*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_get_Ray_direction'\n", nullptr); + return 0; + } +#endif + vec3_to_luaval(L, self->_direction); + return 1; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_get_Ray_direction'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_set_Ray_direction(lua_State* L) +{ + int argc = 0; + cocos2d::Ray* self = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertype(L,1,"cc.Ray",0,&tolua_err)) goto tolua_lerror; +#endif + + self = (cocos2d::Ray*) tolua_tousertype(L,1,0); +#if COCOS2D_DEBUG >= 1 + if (nullptr == self) + { + tolua_error(L,"invalid 'self' in function 'lua_cocos2dx_3d_set_Ray_direction'\n", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L) - 1; + + if (1 == argc) + { +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(L, 2, 0, &tolua_err)) + goto tolua_lerror; +#endif + luaval_to_vec3(L, 2, &self->_direction); + return 0; + } + + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_3d_set_Ray_direction'.",&tolua_err); + return 0; +#endif +} + +int lua_cocos2dx_3d_Ray_finalize(lua_State* L) +{ + cocos2d::Ray* self = (cocos2d::Ray*) tolua_tousertype(L,1,0); + CC_SAFE_DELETE(self); + return 0; +} + +int lua_register_cocos2dx_3d_Ray(lua_State* L) +{ + tolua_usertype(L,"cc.Ray"); + tolua_cclass(L,"Ray","cc.Ray","",lua_cocos2dx_3d_Ray_finalize); + + tolua_beginmodule(L,"Ray"); + tolua_variable(L, "_origin", lua_cocos2dx_3d_get_Ray_origin, lua_cocos2dx_3d_set_Ray_origin); + tolua_variable(L, "_direction", lua_cocos2dx_3d_get_Ray_direction, lua_cocos2dx_3d_set_Ray_direction); + tolua_function(L,"new",lua_cocos2dx_3d_Ray_constructor); + tolua_function(L,"set",lua_cocos2dx_3d_Ray_set); + tolua_function(L,"transform",lua_cocos2dx_3d_Ray_transform); + tolua_function(L, "intersects", lua_cocos2dx_3d_Ray_intersects); + tolua_endmodule(L); + std::string typeName = typeid(cocos2d::Ray).name(); + g_luaType[typeName] = "cc.Ray"; + g_typeCast["Ray"] = "cc.Ray"; + return 1; +} + +int register_all_cocos3d_manual_class(lua_State* L) +{ + tolua_module(L,"cc",0); + tolua_beginmodule(L,"cc"); + lua_register_cocos2dx_3d_AABB(L); + lua_register_cocos2dx_3d_OBB(L); + lua_register_cocos2dx_3d_Ray(L); + tolua_endmodule(L); return 0; } @@ -102,6 +1826,7 @@ int register_cocos3d_module(lua_State* L) { register_all_cocos2dx_3d(L); register_all_cocos2dx_3d_manual(L); + register_all_cocos3d_manual_class(L); } lua_pop(L, 1); diff --git a/cocos/scripting/lua-bindings/manual/CCLuaEngine.cpp b/cocos/scripting/lua-bindings/manual/CCLuaEngine.cpp index 0cc0d2ba61..6a114d5b40 100644 --- a/cocos/scripting/lua-bindings/manual/CCLuaEngine.cpp +++ b/cocos/scripting/lua-bindings/manual/CCLuaEngine.cpp @@ -57,9 +57,6 @@ bool LuaEngine::init(void) { _stack = LuaStack::create(); _stack->retain(); - executeScriptFile("DeprecatedCocos2dClass"); - executeScriptFile("DeprecatedCocos2dEnum"); - executeScriptFile("DeprecatedCocos2dFunc"); return true; } diff --git a/cocos/scripting/lua-bindings/manual/CCLuaStack.cpp b/cocos/scripting/lua-bindings/manual/CCLuaStack.cpp index 6a4193e22c..1933041efc 100644 --- a/cocos/scripting/lua-bindings/manual/CCLuaStack.cpp +++ b/cocos/scripting/lua-bindings/manual/CCLuaStack.cpp @@ -177,7 +177,7 @@ bool LuaStack::init(void) const luaL_reg global_functions [] = { {"print", lua_print}, {"release_print",lua_release_print}, - {NULL, NULL} + {nullptr, nullptr} }; luaL_register(_state, "_G", global_functions); @@ -186,6 +186,7 @@ bool LuaStack::init(void) tolua_opengl_open(_state); register_all_cocos2dx_manual(_state); register_all_cocos2dx_module_manual(_state); + register_all_cocos2dx_math_manual(_state); register_all_cocos2dx_experimental(_state); register_all_cocos2dx_experimental_manual(_state); @@ -584,7 +585,7 @@ int LuaStack::executeFunctionReturnArray(int handler,int numArgs,int numResults, }else{ - resultArray.addObject(static_cast(tolua_tousertype(_state, -1, NULL))); + resultArray.addObject(static_cast(tolua_tousertype(_state, -1, nullptr))); } // remove return value from stack lua_pop(_state, 1); /* L: ... [G] ret1 ret2 ... ret*/ @@ -731,6 +732,97 @@ void LuaStack::cleanupXXTEAKeyAndSign() } } +int LuaStack::loadChunksFromZIP(const char *zipFilePath) +{ + pushString(zipFilePath); + luaLoadChunksFromZIP(_state); + int ret = lua_toboolean(_state, -1); + lua_pop(_state, 1); + return ret; +} + +int LuaStack::luaLoadChunksFromZIP(lua_State *L) +{ + if (lua_gettop(L) < 1) { + CCLOG("luaLoadChunksFromZIP() - invalid arguments"); + return 0; + } + + const char *zipFilename = lua_tostring(L, -1); + lua_settop(L, 0); + FileUtils *utils = FileUtils::getInstance(); + std::string zipFilePath = utils->fullPathForFilename(zipFilename); + + LuaStack *stack = this; + + do { + ssize_t size = 0; + void *buffer = nullptr; + unsigned char *zipFileData = utils->getFileData(zipFilePath.c_str(), "rb", &size); + ZipFile *zip = nullptr; + + bool isXXTEA = stack && stack->_xxteaEnabled && zipFileData; + for (int i = 0; isXXTEA && i < stack->_xxteaSignLen && i < size; ++i) { + isXXTEA = zipFileData[i] == stack->_xxteaSign[i]; + } + + if (isXXTEA) { // decrypt XXTEA + xxtea_long len = 0; + buffer = xxtea_decrypt(zipFileData + stack->_xxteaSignLen, + (xxtea_long)size - (xxtea_long)stack->_xxteaSignLen, + (unsigned char*)stack->_xxteaKey, + (xxtea_long)stack->_xxteaKeyLen, + &len); + delete []zipFileData; + zipFileData = nullptr; + zip = ZipFile::createWithBuffer(buffer, len); + } else { + if (zipFileData) { + zip = ZipFile::createWithBuffer(zipFileData, size); + } + } + + if (zip) { + CCLOG("lua_loadChunksFromZIP() - load zip file: %s%s", zipFilePath.c_str(), isXXTEA ? "*" : ""); + lua_getglobal(L, "package"); + lua_getfield(L, -1, "preload"); + + int count = 0; + std::string filename = zip->getFirstFilename(); + while (filename.length()) { + ssize_t bufferSize = 0; + unsigned char *zbuffer = zip->getFileData(filename.c_str(), &bufferSize); + if (bufferSize) { + if (stack->luaLoadBuffer(L, (char*)zbuffer, (int)bufferSize, filename.c_str()) == 0) { + lua_setfield(L, -2, filename.c_str()); + ++count; + } + delete []zbuffer; + } + filename = zip->getNextFilename(); + } + CCLOG("lua_loadChunksFromZIP() - loaded chunks count: %d", count); + lua_pop(L, 2); + lua_pushboolean(L, 1); + + delete zip; + } else { + CCLOG("lua_loadChunksFromZIP() - not found or invalid zip file: %s", zipFilePath.c_str()); + lua_pushboolean(L, 0); + } + + if (zipFileData) { + delete []zipFileData; + } + + if (buffer) { + free(buffer); + } + } while (0); + + return 1; +} + int LuaStack::luaLoadBuffer(lua_State *L, const char *chunk, int chunkSize, const char *chunkName) { int r = 0; diff --git a/cocos/scripting/lua-bindings/manual/CCLuaStack.h b/cocos/scripting/lua-bindings/manual/CCLuaStack.h index 9d6345282e..5bdb0330bc 100644 --- a/cocos/scripting/lua-bindings/manual/CCLuaStack.h +++ b/cocos/scripting/lua-bindings/manual/CCLuaStack.h @@ -133,6 +133,8 @@ public: virtual void cleanupXXTEAKeyAndSign(); int luaLoadBuffer(lua_State *L, const char *chunk, int chunkSize, const char *chunkName); + int loadChunksFromZIP(const char *zipFilePath); + int luaLoadChunksFromZIP(lua_State *L); protected: LuaStack(void) diff --git a/cocos/scripting/lua-bindings/manual/LuaBasicConversions.cpp b/cocos/scripting/lua-bindings/manual/LuaBasicConversions.cpp index 7e828ebd33..e40cdb84d4 100644 --- a/cocos/scripting/lua-bindings/manual/LuaBasicConversions.cpp +++ b/cocos/scripting/lua-bindings/manual/LuaBasicConversions.cpp @@ -371,12 +371,12 @@ bool luaval_to_vec4(lua_State* L,int lo,cocos2d::Vec4* outValue, const char* fun lua_pushstring(L, "z"); lua_gettable(L, lo); - outValue->y = lua_isnil(L, -1) ? 0 : lua_tonumber(L, -1); + outValue->z = lua_isnil(L, -1) ? 0 : lua_tonumber(L, -1); lua_pop(L, 1); lua_pushstring(L, "w"); lua_gettable(L, lo); - outValue->y = lua_isnil(L, -1) ? 0 : lua_tonumber(L, -1); + outValue->w = lua_isnil(L, -1) ? 0 : lua_tonumber(L, -1); lua_pop(L, 1); } return ok; @@ -1997,6 +1997,48 @@ bool luaval_to_std_vector_ushort(lua_State* L, int lo, std::vector=1 + luaval_to_native_err(L,"#ferror:",&tolua_err,funcName); +#endif + ok = false; + } + + + if (ok) + { + lua_pushstring(L, "x"); + lua_gettable(L, lo); + outValue->x = lua_isnil(L, -1) ? 0 : lua_tonumber(L, -1); + lua_pop(L, 1); + + lua_pushstring(L, "y"); + lua_gettable(L, lo); + outValue->y = lua_isnil(L, -1) ? 0 : lua_tonumber(L, -1); + lua_pop(L, 1); + + lua_pushstring(L, "z"); + lua_gettable(L, lo); + outValue->y = lua_isnil(L, -1) ? 0 : lua_tonumber(L, -1); + lua_pop(L, 1); + + lua_pushstring(L, "w"); + lua_gettable(L, lo); + outValue->y = lua_isnil(L, -1) ? 0 : lua_tonumber(L, -1); + lua_pop(L, 1); + } + return ok; +} + void vec2_array_to_luaval(lua_State* L,const cocos2d::Vec2* points, int count) { if (NULL == L) @@ -2939,3 +2981,23 @@ void ccvector_ushort_to_luaval(lua_State* L, const std::vector& ++index; } } + +void quaternion_to_luaval(lua_State* L,const cocos2d::Quaternion& inValue) +{ + if (NULL == L) + return; + + lua_newtable(L); /* L: table */ + lua_pushstring(L, "x"); /* L: table key */ + lua_pushnumber(L, (lua_Number) inValue.x); /* L: table key value*/ + lua_rawset(L, -3); /* table[key] = value, L: table */ + lua_pushstring(L, "y"); /* L: table key */ + lua_pushnumber(L, (lua_Number) inValue.y); /* L: table key value*/ + lua_rawset(L, -3); + lua_pushstring(L, "z"); /* L: table key */ + lua_pushnumber(L, (lua_Number) inValue.z); /* L: table key value*/ + lua_rawset(L, -3); + lua_pushstring(L, "w"); /* L: table key */ + lua_pushnumber(L, (lua_Number) inValue.w); /* L: table key value*/ + lua_rawset(L, -3); +} diff --git a/cocos/scripting/lua-bindings/manual/LuaBasicConversions.h b/cocos/scripting/lua-bindings/manual/LuaBasicConversions.h index 3efe1d9a36..76cd4c3de0 100644 --- a/cocos/scripting/lua-bindings/manual/LuaBasicConversions.h +++ b/cocos/scripting/lua-bindings/manual/LuaBasicConversions.h @@ -235,6 +235,7 @@ bool luaval_to_object(lua_State* L, int lo, const char* type, T** ret) extern bool luaval_to_mesh_vertex_attrib(lua_State* L, int lo, cocos2d::MeshVertexAttrib* ret, const char* funcName = ""); extern bool luaval_to_std_vector_float(lua_State* L, int lo, std::vector* ret, const char* funcName = ""); extern bool luaval_to_std_vector_ushort(lua_State* L, int lo, std::vector* ret, const char* funcName = ""); +extern bool luaval_to_quaternion(lua_State* L,int lo,cocos2d::Quaternion* outValue, const char* funcName = ""); // from native extern void vec2_to_luaval(lua_State* L,const cocos2d::Vec2& vec2); @@ -386,5 +387,6 @@ void ccvector_std_string_to_luaval(lua_State* L, const std::vector& void ccvector_int_to_luaval(lua_State* L, const std::vector& inValue); void ccvector_float_to_luaval(lua_State* L, const std::vector& inValue); void ccvector_ushort_to_luaval(lua_State* L, const std::vector& inValue); +void quaternion_to_luaval(lua_State* L,const cocos2d::Quaternion& inValue); #endif //__COCOS2DX_SCRIPTING_LUA_COCOS2DXSUPPORT_LUABAISCCONVERSIONS_H__ diff --git a/cocos/scripting/lua-bindings/manual/cocos2d/LuaScriptHandlerMgr.h b/cocos/scripting/lua-bindings/manual/cocos2d/LuaScriptHandlerMgr.h index 27c1473adb..331fd298ac 100644 --- a/cocos/scripting/lua-bindings/manual/cocos2d/LuaScriptHandlerMgr.h +++ b/cocos/scripting/lua-bindings/manual/cocos2d/LuaScriptHandlerMgr.h @@ -170,6 +170,11 @@ public: EVENT_CONTROLLER_KEYREPEAT, EVENT_CONTROLLER_AXIS, + EVENT_SPINE_ANIMATION_START, + EVENT_SPINE_ANIMATION_END, + EVENT_SPINE_ANIMATION_COMPLETE, + EVENT_SPINE_ANIMATION_EVENT, + EVENT_CUSTOM_BEGAN = 10000, EVENT_CUSTOM_ENDED = 11000, }; diff --git a/cocos/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.cpp b/cocos/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.cpp index 9fe9bac783..42aa895c33 100644 --- a/cocos/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.cpp +++ b/cocos/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.cpp @@ -32,6 +32,8 @@ #include #endif #include "ui/UIWidget.h" +#include "ActionTimeline/CCActionTimeline.h" +#include "ActionTimeline/CSLoader.h" static int tolua_cocos2d_MenuItemImage_create(lua_State* tolua_S) { @@ -7086,6 +7088,51 @@ static void extendCamera(lua_State* tolua_S) lua_pop(tolua_S, 1); } +int lua_cocos2dx_CSLoader_createTimeline(lua_State* tolua_S) +{ + int argc = 0; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(tolua_S,1,"cc.CSLoader",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S) - 1; + + if (argc == 1) + { + std::string arg0; + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.CSLoader:createTimeline"); + if(!ok) + return 0; + cocostudio::timeline::ActionTimeline* ret = cocos2d::CSLoader::createTimeline(arg0); + object_to_luaval(tolua_S, "ccs.ActionTimeline",(cocostudio::timeline::ActionTimeline*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "cc.CSLoader:createTimeline",argc, 1); + return 0; +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_CSLoader_createTimeline'.",&tolua_err); +#endif + return 0; +} + +static void extendCSLoader(lua_State* tolua_S) +{ + lua_pushstring(tolua_S, "cc.CSLoader"); + lua_rawget(tolua_S, LUA_REGISTRYINDEX); + if (lua_istable(tolua_S,-1)) + { + tolua_function(tolua_S, "createTimeline", lua_cocos2dx_CSLoader_createTimeline); + } + lua_pop(tolua_S, 1); +} + int register_all_cocos2dx_manual(lua_State* tolua_S) { if (NULL == tolua_S) @@ -7142,7 +7189,7 @@ int register_all_cocos2dx_manual(lua_State* tolua_S) extendTextureCache(tolua_S); extendGLView(tolua_S); extendCamera(tolua_S); - + extendCSLoader(tolua_S); return 0; } @@ -7232,3 +7279,254 @@ int register_all_cocos2dx_module_manual(lua_State* tolua_S) return 0; } + +static int tolua_cocos2d_Mat4_getInversed(lua_State* tolua_S) +{ +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_istable(tolua_S, 1, 0, &tolua_err)) + goto tolua_lerror; + else +#endif + { + cocos2d::Mat4 mat; + bool ok = luaval_to_mat4(tolua_S, 1, &mat); + if (ok) + { + mat4_to_luaval(tolua_S, mat.getInversed()); + return 1; + } + } + return 0; +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'mat4_getInversed'.",&tolua_err); + return 0; +#endif +} + +static int tolua_cocos2d_Mat4_transformVector(lua_State* tolua_S) +{ + bool ok = true; + int argc = lua_gettop(tolua_S); + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + if (argc == 3) + { +#if COCOS2D_DEBUG >= 1 + + if (!tolua_istable(tolua_S, 1, 0, &tolua_err) || + !tolua_istable(tolua_S, 2, 0, &tolua_err) || + !tolua_istable(tolua_S, 3, 0, &tolua_err)) + goto tolua_lerror; + else +#endif + { + cocos2d::Mat4 mat; + cocos2d::Vec4 vector; + cocos2d::Vec4 dst; + ok &= luaval_to_mat4(tolua_S, 1, &mat); + if (!ok) + return 0; + + ok &= luaval_to_vec4(tolua_S, 2, &vector); + if (!ok) + return 0; + + ok &= luaval_to_vec4(tolua_S, 3, &dst); + if (!ok) + return 0; + + mat.transformVector(vector, &dst); + vec4_to_luaval(tolua_S, dst); + return 1; + } + } + else if(argc == 6) + { + /* + float x, float y, float z, float w, Vec3* dst + */ +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(tolua_S, 1, 0, &tolua_err) || + !tolua_isnumber(tolua_S, 2, 0, &tolua_err) || + !tolua_isnumber(tolua_S, 3, 0, &tolua_err) || + !tolua_isnumber(tolua_S, 4, 0, &tolua_err) || + !tolua_isnumber(tolua_S, 5, 0, &tolua_err) || + !tolua_isnumber(tolua_S, 6, 0, &tolua_err)) + goto tolua_lerror; + else +#endif + { + cocos2d::Mat4 mat; + float x,y,z,w; + cocos2d::Vec3 dst; + ok &= luaval_to_mat4(tolua_S, 1, &mat); + if (!ok) + return 0; + + x = tolua_tonumber(tolua_S, 2, 0); + y = tolua_tonumber(tolua_S, 3, 0); + z = tolua_tonumber(tolua_S, 4, 0); + w = tolua_tonumber(tolua_S, 5, 0); + + ok &= luaval_to_vec3(tolua_S, 6, &dst); + if (!ok) + return 0; + + mat.transformVector(x,y,z,w, &dst); + vec3_to_luaval(tolua_S, dst); + return 1; + } + } + + return 0; +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'mat4_transformVector'.",&tolua_err); + return 0; +#endif +} + +static int tolua_cocos2d_Mat4_decompose(lua_State* tolua_S) +{ +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_istable(tolua_S, 1, 0, &tolua_err) || + !tolua_istable(tolua_S, 2, 0, &tolua_err) || + !tolua_istable(tolua_S, 3, 0, &tolua_err) || + !tolua_istable(tolua_S, 4, 0, &tolua_err)) + goto tolua_lerror; + else +#endif + { + cocos2d::Mat4 mat; + cocos2d::Vec3 scale; + cocos2d::Quaternion rotation; + cocos2d::Vec3 translation; + bool ok = true; + ok &= luaval_to_mat4(tolua_S, 1, &mat); + if (!ok) + return 0; + + ok &= luaval_to_vec3(tolua_S, 2, &scale); + if (!ok) + return 0; + + ok &= luaval_to_quaternion(tolua_S, 3, &rotation); + if (!ok) + return 0; + + ok &= luaval_to_vec3(tolua_S, 2, &translation); + if (!ok) + return 0; + + mat.decompose(&scale, &rotation, &translation); + vec3_to_luaval(tolua_S, scale); + quaternion_to_luaval(tolua_S, rotation); + vec3_to_luaval(tolua_S, translation); + return 3; + } + return 0; +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'mat4_decompose'.",&tolua_err); + return 0; +#endif +} + +static int tolua_cocos2d_Vec3_cross(lua_State* tolua_S) +{ + int argc = lua_gettop(tolua_S); + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + if (1 == argc) + { +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(tolua_S, 1, 0, &tolua_err) || + !tolua_istable(tolua_S, 2, 0, &tolua_err) ) + goto tolua_lerror; + else +#endif + { + cocos2d::Vec3 cobj; + cocos2d::Vec3 v; + + bool ok = true; + + ok &= luaval_to_vec3(tolua_S, 1, &cobj); + if (!ok) + return 0; + + ok &= luaval_to_vec3(tolua_S, 2, &v); + if (!ok) + return 0; + + cobj.cross(v); + + vec3_to_luaval(tolua_S, cobj); + return 1; + } + } + else if (3 == argc) + { +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(tolua_S, 1, 0, &tolua_err) || + !tolua_istable(tolua_S, 2, 0, &tolua_err) || + !tolua_istable(tolua_S, 3, 0, &tolua_err) ) + goto tolua_lerror; + else +#endif + { + cocos2d::Vec3 v1; + cocos2d::Vec3 v2; + cocos2d::Vec3 dst; + bool ok = true; + + + ok &= luaval_to_vec3(tolua_S, 1, &v1); + if (!ok) + return 0; + + ok &= luaval_to_vec3(tolua_S, 2, &v2); + if (!ok) + return 0; + + ok &= luaval_to_vec3(tolua_S, 3, &dst); + if (!ok) + return 0; + + cocos2d::Vec3::cross(v1, v2, &dst); + + vec3_to_luaval(tolua_S, dst); + return 1; + } + } + return 0; +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'MathUtil_gcrossVec3'.",&tolua_err); + return 0; +#endif +} + +int register_all_cocos2dx_math_manual(lua_State* tolua_S) +{ + if (nullptr == tolua_S) + return 0; + + + tolua_module(tolua_S, nullptr, 0); + tolua_beginmodule(tolua_S, nullptr); + tolua_function(tolua_S, "mat4_getInversed", tolua_cocos2d_Mat4_getInversed); + tolua_function(tolua_S, "mat4_transformVector", tolua_cocos2d_Mat4_transformVector); + tolua_function(tolua_S, "mat4_decompose", tolua_cocos2d_Mat4_decompose); + tolua_function(tolua_S, "vec3_cross", tolua_cocos2d_Vec3_cross); + tolua_endmodule(tolua_S); + return 0; +} diff --git a/cocos/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.hpp b/cocos/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.hpp index 814b25578c..85d3e4e666 100644 --- a/cocos/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.hpp +++ b/cocos/scripting/lua-bindings/manual/cocos2d/lua_cocos2dx_manual.hpp @@ -57,6 +57,8 @@ TOLUA_API int register_cocos2dx_event_releated(lua_State* tolua_S); TOLUA_API int register_all_cocos2dx_module_manual(lua_State* tolua_S); +TOLUA_API int register_all_cocos2dx_math_manual(lua_State* tolua_S); + struct LuaEventAccelerationData { void* acc; diff --git a/cocos/scripting/lua-bindings/manual/cocosbuilder/lua_cocos2dx_cocosbuilder_manual.cpp b/cocos/scripting/lua-bindings/manual/cocosbuilder/lua_cocos2dx_cocosbuilder_manual.cpp index 11693b86cb..2af71ea569 100644 --- a/cocos/scripting/lua-bindings/manual/cocosbuilder/lua_cocos2dx_cocosbuilder_manual.cpp +++ b/cocos/scripting/lua-bindings/manual/cocosbuilder/lua_cocos2dx_cocosbuilder_manual.cpp @@ -465,7 +465,5 @@ int register_cocosbuilder_module(lua_State* tolua_S) register_all_cocos2dx_cocosbuilder_manual(tolua_S); } lua_pop(tolua_S, 1); - - LuaEngine::getInstance()->executeScriptFile("DeprecatedCocosBuilderClass"); return 1; } diff --git a/cocos/scripting/lua-bindings/manual/cocosdenshion/lua_cocos2dx_cocosdenshion_manual.cpp b/cocos/scripting/lua-bindings/manual/cocosdenshion/lua_cocos2dx_cocosdenshion_manual.cpp index 9098fd949c..6560cf719b 100644 --- a/cocos/scripting/lua-bindings/manual/cocosdenshion/lua_cocos2dx_cocosdenshion_manual.cpp +++ b/cocos/scripting/lua-bindings/manual/cocosdenshion/lua_cocos2dx_cocosdenshion_manual.cpp @@ -33,8 +33,5 @@ int register_cocosdenshion_module(lua_State* L) register_all_cocos2dx_cocosdenshion(L); } lua_pop(L, 1); - - cocos2d::LuaEngine::getInstance()->executeScriptFile("DeprecatedCocosDenshionClass"); - cocos2d::LuaEngine::getInstance()->executeScriptFile("DeprecatedCocosDenshionFunc"); return 1; } \ No newline at end of file diff --git a/cocos/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.cpp b/cocos/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.cpp index fa0bcb1832..bb8d05a1b9 100644 --- a/cocos/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.cpp +++ b/cocos/scripting/lua-bindings/manual/cocostudio/CustomGUIReader.cpp @@ -1,7 +1,5 @@ #include "CustomGUIReader.h" #include "CCLuaEngine.h" -#include "base/ObjectFactory.h" -#include "json/document.h" #include "json/writer.h" #include "json/stringbuffer.h" diff --git a/cocos/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp b/cocos/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp index eabfb21ac0..0243049d2a 100644 --- a/cocos/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp +++ b/cocos/scripting/lua-bindings/manual/cocostudio/lua_cocos2dx_coco_studio_manual.cpp @@ -407,49 +407,6 @@ static void extendBone(lua_State* L) lua_pop(L, 1); } -int lua_cocos2dx_studio_NodeReader_getInstance(lua_State* L) -{ - int argc = 0; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertable(L,1,"ccs.NodeReader",0,&tolua_err)) goto tolua_lerror; -#endif - - argc = lua_gettop(L) - 1; - - if (argc == 0) - { - if(!ok) - return 0; - cocostudio::timeline::NodeReader* ret = cocostudio::timeline::NodeReader::getInstance(); - tolua_pushusertype(L,(void*)ret, "ccs.NodeReader"); - return 1; - } - CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "ccs.NodeReader:getInstance",argc, 0); - return 0; -#if COCOS2D_DEBUG >= 1 -tolua_lerror: - tolua_error(L,"#ferror in function 'lua_cocos2dx_studio_NodeReader_getInstance'.",&tolua_err); -#endif - return 0; -} - -static void extendNodeReader(lua_State* L) -{ - lua_pushstring(L, "ccs.NodeReader"); - lua_rawget(L, LUA_REGISTRYINDEX); - if (lua_istable(L,-1)) - { - tolua_function(L, "getInstance", lua_cocos2dx_studio_NodeReader_getInstance); - } - lua_pop(L, 1); -} - int lua_cocos2dx_studio_ActionTimelineCache_getInstance(lua_State* L) { int argc = 0; @@ -611,7 +568,6 @@ int register_all_cocos2dx_coco_studio_manual(lua_State* L) extendArmatureDataManager(L); extendBone(L); extendActionTimelineCache(L); - extendNodeReader(L); extendActionTimeline(L); return 0; @@ -647,8 +603,5 @@ int register_cocostudio_module(lua_State* L) lua_register_cocos2dx_coco_studio_CustomGUIReader(L); } lua_pop(L, 1); - - LuaEngine::getInstance()->executeScriptFile("DeprecatedCocoStudioClass"); - LuaEngine::getInstance()->executeScriptFile("DeprecatedCocoStudioFunc"); return 1; } diff --git a/cocos/scripting/lua-bindings/manual/extension/lua_cocos2dx_extension_manual.cpp b/cocos/scripting/lua-bindings/manual/extension/lua_cocos2dx_extension_manual.cpp index 48a3eda657..ad1d6af94c 100644 --- a/cocos/scripting/lua-bindings/manual/extension/lua_cocos2dx_extension_manual.cpp +++ b/cocos/scripting/lua-bindings/manual/extension/lua_cocos2dx_extension_manual.cpp @@ -939,12 +939,81 @@ static void extendTableView(lua_State* L) lua_pop(L, 1); } +static void extendManifest(lua_State* L) +{ + lua_pushstring(L, "cc.Manifest"); + lua_rawget(L, LUA_REGISTRYINDEX); + lua_pop(L, 1); +} + +static int lua_cocos2dx_Extension_EventListenerAssetsManagerEx_create(lua_State* L) +{ + if (nullptr == L) + return 0; + + int argc = 0; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; + if (!tolua_isusertable(L,1,"cc.EventListenerAssetsManagerEx",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(L)-1; + + if (argc == 2) + { + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L, 2, "cc.AssetsManagerEx", 0, &tolua_err) || + !toluafix_isfunction(L,3,"LUA_FUNCTION",0,&tolua_err)) + goto tolua_lerror; +#endif + cocos2d::extension::AssetsManagerEx* assetManager = static_cast(tolua_tousertype(L,2,nullptr)); + + LUA_FUNCTION handler = toluafix_ref_function(L,3,0); + + cocos2d::extension::EventListenerAssetsManagerEx* ret = cocos2d::extension::EventListenerAssetsManagerEx::create(assetManager, [=](EventAssetsManagerEx* event){ + int id = event? (int)event->_ID : -1; + int* luaID = event? &event->_luaID : nullptr; + toluafix_pushusertype_ccobject(L, id, luaID, (void*)event,"cc.EventAssetsManagerEx"); + LuaEngine::getInstance()->getLuaStack()->executeFunctionByHandler(handler, 1); + }); + + int id = (ret) ? (int)ret->_ID : -1; + int* luaID = (ret) ? &ret->_luaID : nullptr; + toluafix_pushusertype_ccobject(L, id, luaID, (void*)ret,"cc.EventListenerAssetsManagerEx"); + return 1; + } + + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "create",argc, 2); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_Extension_EventListenerAssetsManagerEx_create'.",&tolua_err); + return 0; +#endif +} + +static void extendEventListenerAssetsManagerEx(lua_State* L) +{ + lua_pushstring(L, "cc.EventListenerAssetsManagerEx"); + lua_rawget(L, LUA_REGISTRYINDEX); + if (lua_istable(L,-1)) + { + tolua_function(L, "create", lua_cocos2dx_Extension_EventListenerAssetsManagerEx_create); + } + lua_pop(L, 1); +} + int register_all_cocos2dx_extension_manual(lua_State* tolua_S) { extendControl(tolua_S); extendAssetsManager(tolua_S); extendScrollView(tolua_S); extendTableView(tolua_S); + extendManifest(tolua_S); + extendEventListenerAssetsManagerEx(tolua_S); return 0; } @@ -957,9 +1026,5 @@ int register_extension_module(lua_State* tolua_S) register_all_cocos2dx_extension_manual(tolua_S); } lua_pop(tolua_S, 1); - - LuaEngine::getInstance()->executeScriptFile("DeprecatedExtensionClass"); - LuaEngine::getInstance()->executeScriptFile("DeprecatedExtensionEnum"); - LuaEngine::getInstance()->executeScriptFile("DeprecatedExtensionFunc"); return 1; } diff --git a/cocos/scripting/lua-bindings/manual/extension/lua_cocos2dx_extension_manual.h b/cocos/scripting/lua-bindings/manual/extension/lua_cocos2dx_extension_manual.h index 44a9a86cd2..fc88b2626f 100644 --- a/cocos/scripting/lua-bindings/manual/extension/lua_cocos2dx_extension_manual.h +++ b/cocos/scripting/lua-bindings/manual/extension/lua_cocos2dx_extension_manual.h @@ -38,12 +38,13 @@ TOLUA_API int register_extension_module(lua_State* tolua_S); struct LuaAssetsManagerEventData { int value; - + LuaAssetsManagerEventData(int _value = 0):value(_value) { } }; + struct LuaTableViewEventData { void* value; diff --git a/cocos/scripting/lua-bindings/manual/network/lua_cocos2dx_network_manual.cpp b/cocos/scripting/lua-bindings/manual/network/lua_cocos2dx_network_manual.cpp index d563fdf546..8a79fefe0b 100644 --- a/cocos/scripting/lua-bindings/manual/network/lua_cocos2dx_network_manual.cpp +++ b/cocos/scripting/lua-bindings/manual/network/lua_cocos2dx_network_manual.cpp @@ -53,9 +53,5 @@ int register_network_module(lua_State* L) } lua_pop(L, 1); - cocos2d::LuaEngine::getInstance()->executeScriptFile("DeprecatedNetworkClass"); - cocos2d::LuaEngine::getInstance()->executeScriptFile("DeprecatedNetworkEnum"); - cocos2d::LuaEngine::getInstance()->executeScriptFile("DeprecatedNetworkFunc"); - return 1; } diff --git a/cocos/scripting/lua-bindings/manual/network/lua_extensions.c b/cocos/scripting/lua-bindings/manual/network/lua_extensions.c index 986036c640..2dccce23c5 100644 --- a/cocos/scripting/lua-bindings/manual/network/lua_extensions.c +++ b/cocos/scripting/lua-bindings/manual/network/lua_extensions.c @@ -6,6 +6,7 @@ extern "C" { #endif // socket #include "luasocket/luasocket.h" +#include "luasocket/luasocket_scripts.h" #include "luasocket/mime.h" static luaL_Reg luax_exts[] = { @@ -26,6 +27,8 @@ void luaopen_lua_extensions(lua_State *L) lua_setfield(L, -2, lib->name); } lua_pop(L, 2); + + luaopen_luasocket_scripts(L); } #if __cplusplus diff --git a/cocos/scripting/lua-bindings/manual/spine/LuaSkeletonAnimation.cpp b/cocos/scripting/lua-bindings/manual/spine/LuaSkeletonAnimation.cpp index 5620f3f892..6b397aec8c 100644 --- a/cocos/scripting/lua-bindings/manual/spine/LuaSkeletonAnimation.cpp +++ b/cocos/scripting/lua-bindings/manual/spine/LuaSkeletonAnimation.cpp @@ -32,73 +32,10 @@ using namespace spine; USING_NS_CC; -static int SendSpineEventToLua(int nHandler, spine::SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount) -{ - if (nHandler <= 0) { - return 0; - } - - if (NULL == ScriptEngineManager::getInstance()->getScriptEngine()) { - return 0; - } - - LuaStack *pStack = LuaEngine::getInstance()->getLuaStack(); - if (NULL == pStack) { - return 0; - } - - lua_State *tolua_s = pStack->getLuaState(); - if (NULL == tolua_s) { - return 0; - } - - int nRet = 0; - - spTrackEntry* entry = spAnimationState_getCurrent(node->state, trackIndex); - std::string animationName = (entry && entry->animation) ? entry->animation->name : ""; - std::string eventType = ""; - - switch (type) { - case ANIMATION_START: - eventType = "start"; - break; - case ANIMATION_END: - eventType = "end"; - break; - case ANIMATION_COMPLETE: - eventType = "complete"; - break; - case ANIMATION_EVENT: - eventType = "event"; - break; - } - - LuaValueDict spineEvent; - spineEvent.insert(spineEvent.end(), LuaValueDict::value_type("type", LuaValue::stringValue(eventType))); - spineEvent.insert(spineEvent.end(), LuaValueDict::value_type("trackIndex", LuaValue::intValue(trackIndex))); - spineEvent.insert(spineEvent.end(), LuaValueDict::value_type("animation", LuaValue::stringValue(animationName))); - spineEvent.insert(spineEvent.end(), LuaValueDict::value_type("loopCount", LuaValue::intValue(loopCount))); - - if (NULL != event) { - LuaValueDict eventData; - eventData.insert(eventData.end(), LuaValueDict::value_type("name", LuaValue::stringValue(event->data->name))); - eventData.insert(eventData.end(), LuaValueDict::value_type("intValue", LuaValue::intValue(event->intValue))); - eventData.insert(eventData.end(), LuaValueDict::value_type("floatValue", LuaValue::floatValue(event->floatValue))); - eventData.insert(eventData.end(), LuaValueDict::value_type("stringValue", LuaValue::stringValue(event->stringValue))); - spineEvent.insert(spineEvent.end(), LuaValueDict::value_type("eventData", LuaValue::dictValue(eventData))); - } - - pStack->pushLuaValueDict(spineEvent); - nRet = pStack->executeFunctionByHandler(nHandler, 1); - pStack->clean(); - return nRet; - -} - LuaSkeletonAnimation::LuaSkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale) : spine::SkeletonAnimation(skeletonDataFile, atlasFile, scale) { - this->setAnimationListener(this, animationStateEvent_selector(LuaSkeletonAnimation::animationStateEvent)); + } @@ -113,11 +50,3 @@ LuaSkeletonAnimation* LuaSkeletonAnimation::createWithFile (const char* skeleton node->autorelease(); return node; } - -void LuaSkeletonAnimation::animationStateEvent (spine::SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount) -{ - int nHandler = ScriptHandlerMgr::getInstance()->getObjectHandler((void*)this, ScriptHandlerMgr::HandlerType::EVENT_SPINE); - if (0 != nHandler) { - SendSpineEventToLua(nHandler, node, trackIndex, type, event, loopCount); - } -} diff --git a/cocos/scripting/lua-bindings/manual/spine/LuaSkeletonAnimation.h b/cocos/scripting/lua-bindings/manual/spine/LuaSkeletonAnimation.h index 7872ad7cbb..a498d716db 100644 --- a/cocos/scripting/lua-bindings/manual/spine/LuaSkeletonAnimation.h +++ b/cocos/scripting/lua-bindings/manual/spine/LuaSkeletonAnimation.h @@ -28,9 +28,6 @@ #include "spine-cocos2dx.h" class LuaSkeletonAnimation: public spine::SkeletonAnimation { -private: - void animationStateEvent (spine::SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount); - public: static LuaSkeletonAnimation* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 1); diff --git a/cocos/scripting/lua-bindings/manual/spine/lua_cocos2dx_spine_manual.cpp b/cocos/scripting/lua-bindings/manual/spine/lua_cocos2dx_spine_manual.cpp index 3c504fd3d6..a0bf47faec 100644 --- a/cocos/scripting/lua-bindings/manual/spine/lua_cocos2dx_spine_manual.cpp +++ b/cocos/scripting/lua-bindings/manual/spine/lua_cocos2dx_spine_manual.cpp @@ -142,6 +142,72 @@ tolua_lerror: return 0; } +int executeSpineEvent(LuaSkeletonAnimation* skeletonAnimation, int handler, spEventType eventType, int trackIndex , int loopCount = 0, spEvent* event = nullptr ) +{ + if (nullptr == skeletonAnimation || 0 == handler) + return 0; + + LuaStack* stack = LuaEngine::getInstance()->getLuaStack(); + if (nullptr == stack) + return 0; + + lua_State* L = LuaEngine::getInstance()->getLuaStack()->getLuaState(); + if (nullptr == L) + return 0; + + int ret = 0; + + spTrackEntry* entry = spAnimationState_getCurrent(skeletonAnimation->getState(), trackIndex); + std::string animationName = (entry && entry->animation) ? entry->animation->name : ""; + std::string eventTypeName = ""; + + switch (eventType) { + case spEventType::SP_ANIMATION_START: + { + eventTypeName = "start"; + } + break; + case spEventType::SP_ANIMATION_END: + { + eventTypeName = "end"; + } + break; + case spEventType::SP_ANIMATION_COMPLETE: + { + eventTypeName = "complete"; + } + break; + case spEventType::SP_ANIMATION_EVENT: + { + eventTypeName = "event"; + } + break; + + default: + break; + } + + LuaValueDict spineEvent; + spineEvent.insert(spineEvent.end(), LuaValueDict::value_type("type", LuaValue::stringValue(eventTypeName))); + spineEvent.insert(spineEvent.end(), LuaValueDict::value_type("trackIndex", LuaValue::intValue(trackIndex))); + spineEvent.insert(spineEvent.end(), LuaValueDict::value_type("animation", LuaValue::stringValue(animationName))); + spineEvent.insert(spineEvent.end(), LuaValueDict::value_type("loopCount", LuaValue::intValue(loopCount))); + + if (nullptr != event) + { + LuaValueDict eventData; + eventData.insert(eventData.end(), LuaValueDict::value_type("name", LuaValue::stringValue(event->data->name))); + eventData.insert(eventData.end(), LuaValueDict::value_type("intValue", LuaValue::intValue(event->intValue))); + eventData.insert(eventData.end(), LuaValueDict::value_type("floatValue", LuaValue::floatValue(event->floatValue))); + eventData.insert(eventData.end(), LuaValueDict::value_type("stringValue", LuaValue::stringValue(event->stringValue))); + spineEvent.insert(spineEvent.end(), LuaValueDict::value_type("eventData", LuaValue::dictValue(eventData))); + } + + stack->pushLuaValueDict(spineEvent); + ret = stack->executeFunctionByHandler(handler, 1); + return ret; +} + int tolua_Cocos2d_CCSkeletonAnimation_registerSpineEventHandler00(lua_State* tolua_S) { #ifndef TOLUA_RELEASE @@ -149,7 +215,8 @@ int tolua_Cocos2d_CCSkeletonAnimation_registerSpineEventHandler00(lua_State* tol if ( !tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err) || !toluafix_isfunction(tolua_S,2,"LUA_FUNCTION",0,&tolua_err) || - !tolua_isnoobj(tolua_S,3,&tolua_err) + !tolua_isnumber(tolua_S, 3, 0, &tolua_err) || + !tolua_isnoobj(tolua_S,4,&tolua_err) ) goto tolua_lerror; else @@ -158,7 +225,44 @@ int tolua_Cocos2d_CCSkeletonAnimation_registerSpineEventHandler00(lua_State* tol LuaSkeletonAnimation* self = (LuaSkeletonAnimation*) tolua_tousertype(tolua_S,1,0); if (NULL != self ) { int handler = ( toluafix_ref_function(tolua_S,2,0)); - ScriptHandlerMgr::getInstance()->addObjectHandler((void*)self, handler, ScriptHandlerMgr::HandlerType::EVENT_SPINE); + spEventType eventType = static_cast((int)tolua_tonumber(tolua_S, 3, 0)); + + switch (eventType) { + case spEventType::SP_ANIMATION_START: + { + self->setStartListener([=](int trackIndex){ + executeSpineEvent(self, handler, eventType, trackIndex); + }); + ScriptHandlerMgr::getInstance()->addObjectHandler((void*)self, handler, ScriptHandlerMgr::HandlerType::EVENT_SPINE_ANIMATION_START); + } + break; + case spEventType::SP_ANIMATION_END: + { + self->setEndListener([=](int trackIndex){ + executeSpineEvent(self, handler, eventType, trackIndex); + }); + ScriptHandlerMgr::getInstance()->addObjectHandler((void*)self, handler, ScriptHandlerMgr::HandlerType::EVENT_SPINE_ANIMATION_END); + } + break; + case spEventType::SP_ANIMATION_COMPLETE: + { + self->setCompleteListener([=](int trackIndex, int loopCount){ + executeSpineEvent(self, handler, eventType, trackIndex, loopCount); + }); + ScriptHandlerMgr::getInstance()->addObjectHandler((void*)self, handler, ScriptHandlerMgr::HandlerType::EVENT_SPINE_ANIMATION_COMPLETE); + } + break; + case spEventType::SP_ANIMATION_EVENT: + { + self->setEventListener([=](int trackIndex, spEvent* event){ + executeSpineEvent(self, handler, eventType, trackIndex, 0, event); + }); + ScriptHandlerMgr::getInstance()->addObjectHandler((void*)self, handler, ScriptHandlerMgr::HandlerType::EVENT_SPINE_ANIMATION_EVENT); + } + break; + default: + break; + } } } return 0; @@ -175,7 +279,8 @@ int tolua_Cocos2d_CCSkeletonAnimation_unregisterSpineEventHandler00(lua_State* t tolua_Error tolua_err; if ( !tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err) || - !tolua_isnoobj(tolua_S,2,&tolua_err) + !tolua_isnumber(tolua_S, 2, 0, &tolua_err) || + !tolua_isnoobj(tolua_S,3,&tolua_err) ) goto tolua_lerror; else @@ -183,7 +288,26 @@ int tolua_Cocos2d_CCSkeletonAnimation_unregisterSpineEventHandler00(lua_State* t { LuaSkeletonAnimation* self = (LuaSkeletonAnimation*) tolua_tousertype(tolua_S,1,0); if (NULL != self ) { - ScriptHandlerMgr::getInstance()->removeObjectHandler((void*)self, ScriptHandlerMgr::HandlerType::EVENT_SPINE); + spEventType eventType = static_cast((int)tolua_tonumber(tolua_S, 2, 0)); + ScriptHandlerMgr::HandlerType handlerType = ScriptHandlerMgr::HandlerType::EVENT_SPINE_ANIMATION_START; + switch (eventType) { + case spEventType::SP_ANIMATION_START: + handlerType = ScriptHandlerMgr::HandlerType::EVENT_SPINE_ANIMATION_START; + break; + case spEventType::SP_ANIMATION_END: + handlerType = ScriptHandlerMgr::HandlerType::EVENT_SPINE_ANIMATION_END; + break; + case spEventType::SP_ANIMATION_COMPLETE: + handlerType = ScriptHandlerMgr::HandlerType::EVENT_SPINE_ANIMATION_COMPLETE; + break; + case spEventType::SP_ANIMATION_EVENT: + handlerType = ScriptHandlerMgr::HandlerType::EVENT_SPINE_ANIMATION_EVENT; + break; + + default: + break; + } + ScriptHandlerMgr::getInstance()->removeObjectHandler((void*)self, handlerType); } } return 0; @@ -194,115 +318,6 @@ tolua_lerror: #endif } -static int tolua_Cocos2d_CCSkeletonAnimation_setTimeScale00(lua_State* tolua_S) -{ -#ifndef TOLUA_RELEASE - tolua_Error tolua_err; - if ( - !tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err) || - !tolua_isnumber(tolua_S,2,0,&tolua_err) || - !tolua_isnoobj(tolua_S,3,&tolua_err) - ) - goto tolua_lerror; - else -#endif - { - LuaSkeletonAnimation* self = (LuaSkeletonAnimation*) tolua_tousertype(tolua_S,1,0); - if (NULL != self ) { - LUA_NUMBER scale = tolua_tonumber(tolua_S, 2, 1); - self->timeScale = scale; - } - } - return 0; -#ifndef TOLUA_RELEASE -tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'setTimeScale'.",&tolua_err); - return 0; -#endif -} - -static int tolua_Cocos2d_CCSkeletonAnimation_setDebugSlots00(lua_State* tolua_S) -{ -#ifndef TOLUA_RELEASE - tolua_Error tolua_err; - if ( - !tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err) || - !tolua_isboolean(tolua_S,2,0,&tolua_err) || - !tolua_isnoobj(tolua_S,3,&tolua_err) - ) - goto tolua_lerror; - else -#endif - { - LuaSkeletonAnimation* self = (LuaSkeletonAnimation*) tolua_tousertype(tolua_S,1,0); - if (NULL != self ) { - bool debugSlots = tolua_toboolean(tolua_S, 2, 1); - self->debugSlots = debugSlots; - } - } - return 0; -#ifndef TOLUA_RELEASE -tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'setDebugSlots'.",&tolua_err); - return 0; -#endif -} - -static int tolua_Cocos2d_CCSkeletonAnimation_setDebugBones00(lua_State* tolua_S) -{ -#ifndef TOLUA_RELEASE - tolua_Error tolua_err; - if ( - !tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err) || - !tolua_isboolean(tolua_S,2,0,&tolua_err) || - !tolua_isnoobj(tolua_S,3,&tolua_err) - ) - goto tolua_lerror; - else -#endif - { - LuaSkeletonAnimation* self = (LuaSkeletonAnimation*) tolua_tousertype(tolua_S,1,0); - if (NULL != self ) { - bool debugBones = tolua_toboolean(tolua_S, 2, 1); - self->debugBones = debugBones; - } - } - return 0; -#ifndef TOLUA_RELEASE -tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'setDebugBones'.",&tolua_err); - return 0; -#endif -} - -static int tolua_Cocos2d_CCSkeletonAnimation_setPremultipliedAlpha00(lua_State* tolua_S) -{ -#ifndef TOLUA_RELEASE - tolua_Error tolua_err; - if ( - !tolua_isusertype(tolua_S,1,"sp.SkeletonAnimation",0,&tolua_err) || - !tolua_isboolean(tolua_S,2,0,&tolua_err) || - !tolua_isnoobj(tolua_S,3,&tolua_err) - ) - goto tolua_lerror; - else -#endif - { - LuaSkeletonAnimation* self = (LuaSkeletonAnimation*) tolua_tousertype(tolua_S,1,0); - if (NULL != self ) { - bool premultipliedAlpha = tolua_toboolean(tolua_S, 2, 1); - self->premultipliedAlpha = premultipliedAlpha; - } - } - return 0; -#ifndef TOLUA_RELEASE -tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'setPremultipliedAlpha'.",&tolua_err); - return 0; -#endif -} - - static int tolua_spine_SkeletoneAnimation_setBlendFunc(lua_State* tolua_S) { return tolua_cocos2dx_setBlendFunc(tolua_S,"sp.SkeletonAnimation"); @@ -448,14 +463,15 @@ static void extendCCSkeletonAnimation(lua_State* L) tolua_function(L, "registerSpineEventHandler", tolua_Cocos2d_CCSkeletonAnimation_registerSpineEventHandler00); tolua_function(L, "unregisterSpineEventHandler", tolua_Cocos2d_CCSkeletonAnimation_unregisterSpineEventHandler00); tolua_function(L, "setBlendFunc", tolua_spine_SkeletoneAnimation_setBlendFunc); - tolua_function(L, "setTimeScale", tolua_Cocos2d_CCSkeletonAnimation_setTimeScale00); - tolua_function(L, "setDebugSlots", tolua_Cocos2d_CCSkeletonAnimation_setDebugSlots00); - tolua_function(L, "setDebugBones", tolua_Cocos2d_CCSkeletonAnimation_setDebugBones00); - tolua_function(L, "setPremultipliedAlpha", tolua_Cocos2d_CCSkeletonAnimation_setPremultipliedAlpha00); tolua_function(L, "addAnimation", lua_cocos2dx_spine_SkeletonAnimation_addAnimation); tolua_function(L, "setAnimation", lua_cocos2dx_spine_SkeletonAnimation_setAnimation); } lua_pop(L, 1); + + /*Because sp.SkeletonAnimation:create creat a LuaSkeletonAnimation object,so we need use LuaSkeletonAnimation typename for g_luaType*/ + std::string typeName = typeid(LuaSkeletonAnimation).name(); + g_luaType[typeName] = "sp.SkeletonAnimation"; + g_typeCast["SkeletonAnimation"] = "sp.SkeletonAnimation"; } int register_all_cocos2dx_spine_manual(lua_State* L) diff --git a/cocos/scripting/lua-bindings/manual/ui/lua_cocos2dx_ui_manual.cpp b/cocos/scripting/lua-bindings/manual/ui/lua_cocos2dx_ui_manual.cpp index 4318a9173f..c00db6339c 100644 --- a/cocos/scripting/lua-bindings/manual/ui/lua_cocos2dx_ui_manual.cpp +++ b/cocos/scripting/lua-bindings/manual/ui/lua_cocos2dx_ui_manual.cpp @@ -808,7 +808,5 @@ int register_ui_moudle(lua_State* L) } lua_pop(L, 1); - LuaEngine::getInstance()->executeScriptFile("DeprecatedUIEnum"); - LuaEngine::getInstance()->executeScriptFile("DeprecatedUIFunc"); return 1; } diff --git a/cocos/scripting/lua-bindings/proj.android/Android.mk b/cocos/scripting/lua-bindings/proj.android/Android.mk index 738ca92611..a07e28abac 100644 --- a/cocos/scripting/lua-bindings/proj.android/Android.mk +++ b/cocos/scripting/lua-bindings/proj.android/Android.mk @@ -51,6 +51,7 @@ LOCAL_SRC_FILES += ../manual/network/lua_cocos2dx_network_manual.cpp \ ../../../../external/lua/luasocket/inet.c \ ../../../../external/lua/luasocket/io.c \ ../../../../external/lua/luasocket/luasocket.c \ + ../../../../external/lua/luasocket/luasocket_scripts.c \ ../../../../external/lua/luasocket/mime.c \ ../../../../external/lua/luasocket/options.c \ ../../../../external/lua/luasocket/select.c \ @@ -76,13 +77,19 @@ LOCAL_SRC_FILES += ../manual/spine/lua_cocos2dx_spine_manual.cpp \ ../manual/spine/LuaSkeletonAnimation.cpp \ ../auto/lua_cocos2dx_spine_auto.cpp - #ui LOCAL_SRC_FILES += ../manual/ui/lua_cocos2dx_experimental_video_manual.cpp \ ../manual/ui/lua_cocos2dx_ui_manual.cpp \ ../auto/lua_cocos2dx_experimental_video_auto.cpp \ ../auto/lua_cocos2dx_ui_auto.cpp +#quick +LOCAL_SRC_FILES += ../../../../external/lua/quick/lua_cocos2dx_quick_manual.cpp \ + ../../../../external/lua/quick/LuaEventNode.cpp \ + ../../../../external/lua/quick/LuaNodeManager.cpp \ + ../../../../external/lua/quick/LuaTouchEventManager.cpp \ + ../../../../external/lua/quick/LuaTouchTargetNode.cpp + #extension LOCAL_SRC_FILES += ../manual/extension/lua_cocos2dx_extension_manual.cpp \ ../auto/lua_cocos2dx_extension_auto.cpp \ @@ -94,6 +101,7 @@ LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../external/lua/tolua \ $(LOCAL_PATH)/../../../network \ $(LOCAL_PATH)/../../../editor-support/cocosbuilder \ $(LOCAL_PATH)/../../../editor-support/cocostudio \ + $(LOCAL_PATH)/../../../editor-support/cocostudio/ActionTimeline \ $(LOCAL_PATH)/../../../editor-support/spine \ $(LOCAL_PATH)/../../../ui \ $(LOCAL_PATH)/../../../../extensions \ @@ -113,7 +121,8 @@ LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../external/lua/tolua \ $(LOCAL_PATH)/../manual/platform/android/jni \ $(LOCAL_PATH)/../../../../external/xxtea \ $(LOCAL_PATH)/../../../.. \ - $(LOCAL_PATH)/../../../../external/lua + $(LOCAL_PATH)/../../../../external/lua \ + $(LOCAL_PATH)/../../../../external/lua/quick @@ -131,6 +140,7 @@ LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../external/lua/tolua \ $(LOCAL_PATH)/../manual/spine \ $(LOCAL_PATH)/../manual/extension \ $(LOCAL_PATH)/../manual/ui \ + $(LOCAL_PATH)/../../../../external/lua/quick \ $(LOCAL_PATH)/../../../.. diff --git a/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj b/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj index 85095f3068..08fe13ec79 100644 --- a/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj +++ b/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj/project.pbxproj @@ -248,6 +248,30 @@ 566F016019B5EB0F00FCA620 /* CustomGUIReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 566F015D19B5EB0F00FCA620 /* CustomGUIReader.cpp */; }; 566F016119B5EB0F00FCA620 /* CustomGUIReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 566F015E19B5EB0F00FCA620 /* CustomGUIReader.h */; }; 566F016219B5EB0F00FCA620 /* CustomGUIReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 566F015E19B5EB0F00FCA620 /* CustomGUIReader.h */; }; + F4FE0D5719ECD00100B8B12B /* luasocket_scripts.c in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D5519ECD00100B8B12B /* luasocket_scripts.c */; }; + F4FE0D5819ECD00100B8B12B /* luasocket_scripts.c in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D5519ECD00100B8B12B /* luasocket_scripts.c */; }; + F4FE0D5919ECD00100B8B12B /* luasocket_scripts.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D5619ECD00100B8B12B /* luasocket_scripts.h */; }; + F4FE0D5A19ECD00100B8B12B /* luasocket_scripts.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D5619ECD00100B8B12B /* luasocket_scripts.h */; }; + F4FE0D6619ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D5C19ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp */; }; + F4FE0D6719ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D5C19ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp */; }; + F4FE0D6819ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D5D19ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp */; }; + F4FE0D6919ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D5D19ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp */; }; + F4FE0D6A19ECD02400B8B12B /* LuaEventNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D5E19ECD02400B8B12B /* LuaEventNode.cpp */; }; + F4FE0D6B19ECD02400B8B12B /* LuaEventNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D5E19ECD02400B8B12B /* LuaEventNode.cpp */; }; + F4FE0D6C19ECD02400B8B12B /* LuaEventNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D5F19ECD02400B8B12B /* LuaEventNode.h */; }; + F4FE0D6D19ECD02400B8B12B /* LuaEventNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D5F19ECD02400B8B12B /* LuaEventNode.h */; }; + F4FE0D6E19ECD02400B8B12B /* LuaNodeManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D6019ECD02400B8B12B /* LuaNodeManager.cpp */; }; + F4FE0D6F19ECD02400B8B12B /* LuaNodeManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D6019ECD02400B8B12B /* LuaNodeManager.cpp */; }; + F4FE0D7019ECD02400B8B12B /* LuaNodeManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D6119ECD02400B8B12B /* LuaNodeManager.h */; }; + F4FE0D7119ECD02400B8B12B /* LuaNodeManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D6119ECD02400B8B12B /* LuaNodeManager.h */; }; + F4FE0D7219ECD02400B8B12B /* LuaTouchEventManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D6219ECD02400B8B12B /* LuaTouchEventManager.cpp */; }; + F4FE0D7319ECD02400B8B12B /* LuaTouchEventManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D6219ECD02400B8B12B /* LuaTouchEventManager.cpp */; }; + F4FE0D7419ECD02400B8B12B /* LuaTouchEventManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D6319ECD02400B8B12B /* LuaTouchEventManager.h */; }; + F4FE0D7519ECD02400B8B12B /* LuaTouchEventManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D6319ECD02400B8B12B /* LuaTouchEventManager.h */; }; + F4FE0D7619ECD02400B8B12B /* LuaTouchTargetNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D6419ECD02400B8B12B /* LuaTouchTargetNode.cpp */; }; + F4FE0D7719ECD02400B8B12B /* LuaTouchTargetNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F4FE0D6419ECD02400B8B12B /* LuaTouchTargetNode.cpp */; }; + F4FE0D7819ECD02400B8B12B /* LuaTouchTargetNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D6519ECD02400B8B12B /* LuaTouchTargetNode.h */; }; + F4FE0D7919ECD02400B8B12B /* LuaTouchTargetNode.h in Headers */ = {isa = PBXBuildFile; fileRef = F4FE0D6519ECD02400B8B12B /* LuaTouchTargetNode.h */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -383,6 +407,18 @@ 566F015D19B5EB0F00FCA620 /* CustomGUIReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CustomGUIReader.cpp; sourceTree = ""; }; 566F015E19B5EB0F00FCA620 /* CustomGUIReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomGUIReader.h; sourceTree = ""; }; C0D9BAFA1974D30000EC35BB /* liblua.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblua.a; path = ../../../../external/lua/lua/prebuilt/ios/liblua.a; sourceTree = ""; }; + F4FE0D5519ECD00100B8B12B /* luasocket_scripts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = luasocket_scripts.c; sourceTree = ""; }; + F4FE0D5619ECD00100B8B12B /* luasocket_scripts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = luasocket_scripts.h; sourceTree = ""; }; + F4FE0D5C19ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_cocos2dx_quick_manual.cpp; sourceTree = ""; }; + F4FE0D5D19ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = lua_cocos2dx_quick_manual.hpp; sourceTree = ""; }; + F4FE0D5E19ECD02400B8B12B /* LuaEventNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LuaEventNode.cpp; sourceTree = ""; }; + F4FE0D5F19ECD02400B8B12B /* LuaEventNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuaEventNode.h; sourceTree = ""; }; + F4FE0D6019ECD02400B8B12B /* LuaNodeManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LuaNodeManager.cpp; sourceTree = ""; }; + F4FE0D6119ECD02400B8B12B /* LuaNodeManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuaNodeManager.h; sourceTree = ""; }; + F4FE0D6219ECD02400B8B12B /* LuaTouchEventManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LuaTouchEventManager.cpp; sourceTree = ""; }; + F4FE0D6319ECD02400B8B12B /* LuaTouchEventManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuaTouchEventManager.h; sourceTree = ""; }; + F4FE0D6419ECD02400B8B12B /* LuaTouchTargetNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LuaTouchTargetNode.cpp; sourceTree = ""; }; + F4FE0D6519ECD02400B8B12B /* LuaTouchTargetNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LuaTouchTargetNode.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -618,10 +654,11 @@ 1ABCA1E218CD8F230087CE3A /* external */ = { isa = PBXGroup; children = ( - 1540AF54193EC30500717D8E /* xxtea */, 1ABCA1E318CD8F2D0087CE3A /* luajit */, 1ABCA20E18CD8F7D0087CE3A /* luasocket */, + F4FE0D5B19ECD02400B8B12B /* quick */, 1ABCA1E418CD8F330087CE3A /* tolua */, + 1540AF54193EC30500717D8E /* xxtea */, ); name = external; sourceTree = ""; @@ -693,6 +730,8 @@ 15415A8E19A71A53004F1E71 /* inet.h */, 15415A8F19A71A53004F1E71 /* io.c */, 15415A9019A71A53004F1E71 /* io.h */, + F4FE0D5519ECD00100B8B12B /* luasocket_scripts.c */, + F4FE0D5619ECD00100B8B12B /* luasocket_scripts.h */, 15415A9119A71A53004F1E71 /* luasocket.c */, 15415A9219A71A53004F1E71 /* luasocket.h */, 15415A9319A71A53004F1E71 /* mime.c */, @@ -727,6 +766,24 @@ path = audioengine; sourceTree = ""; }; + F4FE0D5B19ECD02400B8B12B /* quick */ = { + isa = PBXGroup; + children = ( + F4FE0D5C19ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp */, + F4FE0D5D19ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp */, + F4FE0D5E19ECD02400B8B12B /* LuaEventNode.cpp */, + F4FE0D5F19ECD02400B8B12B /* LuaEventNode.h */, + F4FE0D6019ECD02400B8B12B /* LuaNodeManager.cpp */, + F4FE0D6119ECD02400B8B12B /* LuaNodeManager.h */, + F4FE0D6219ECD02400B8B12B /* LuaTouchEventManager.cpp */, + F4FE0D6319ECD02400B8B12B /* LuaTouchEventManager.h */, + F4FE0D6419ECD02400B8B12B /* LuaTouchTargetNode.cpp */, + F4FE0D6519ECD02400B8B12B /* LuaTouchTargetNode.h */, + ); + name = quick; + path = ../../../../external/lua/quick; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -752,6 +809,7 @@ 15AC69DF1987711400D17520 /* lua.h in Headers */, 15AC69E01987711400D17520 /* luaconf.h in Headers */, 155C7DF819A71C4400F08B25 /* lua_cocos2dx_cocosdenshion_manual.h in Headers */, + F4FE0D7419ECD02400B8B12B /* LuaTouchEventManager.h in Headers */, 15415AAF19A71A53004F1E71 /* except.h in Headers */, 150906F319D556D1002C4D97 /* lua_cocos2dx_audioengine_manual.h in Headers */, 155C7E0419A71C6D00F08B25 /* lua_cocos2dx_cocosbuilder_manual.h in Headers */, @@ -777,7 +835,10 @@ 15C1C2D5198749BC00A46ACC /* LuaOpengl.h in Headers */, 155C7E2819A71CE600F08B25 /* lua_cocos2dx_ui_manual.hpp in Headers */, 15C1C2D6198749BC00A46ACC /* lua_cocos2dx_deprecated.h in Headers */, + F4FE0D6C19ECD02400B8B12B /* LuaEventNode.h in Headers */, 15C1C2D7198749BC00A46ACC /* lua_cocos2dx_experimental_manual.hpp in Headers */, + F4FE0D7019ECD02400B8B12B /* LuaNodeManager.h in Headers */, + F4FE0D6819ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp in Headers */, 15C1C2D8198749BC00A46ACC /* lua_cocos2dx_manual.hpp in Headers */, 155C7E0819A71C7B00F08B25 /* lua_cocos2dx_extension_manual.h in Headers */, 155C7E1819A71CB300F08B25 /* lua_xml_http_request.h in Headers */, @@ -786,10 +847,12 @@ 15C1C2DA198749BC00A46ACC /* LuaScriptHandlerMgr.h in Headers */, 15AC69D619876EA200D17520 /* lua_cocos2dx_physics_auto.hpp in Headers */, 155C7E0019A71C6000F08B25 /* CCBProxy.h in Headers */, + F4FE0D7819ECD02400B8B12B /* LuaTouchTargetNode.h in Headers */, 15415AC719A71A53004F1E71 /* select.h in Headers */, 155C7E1C19A71CC200F08B25 /* lua_cocos2dx_spine_manual.hpp in Headers */, 15C1C2D41987499F00A46ACC /* lua_cocos2dx_auto.hpp in Headers */, 150906F119D556C8002C4D97 /* lua_cocos2dx_audioengine_auto.hpp in Headers */, + F4FE0D5919ECD00100B8B12B /* luasocket_scripts.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -815,6 +878,7 @@ 15EFA64B198B3320000C57D3 /* tolua_event.h in Headers */, 15EFA64C198B3320000C57D3 /* tolua++.h in Headers */, 155C7DF919A71C4500F08B25 /* lua_cocos2dx_cocosdenshion_manual.h in Headers */, + F4FE0D7519ECD02400B8B12B /* LuaTouchEventManager.h in Headers */, 15415AB019A71A53004F1E71 /* except.h in Headers */, 3E2BDB0B19C5E6100055CDCD /* lua_cocos2dx_audioengine_manual.h in Headers */, 155C7E0519A71C6F00F08B25 /* lua_cocos2dx_cocosbuilder_manual.h in Headers */, @@ -840,7 +904,10 @@ 15EFA62C198B3220000C57D3 /* lua_cocos2dx_deprecated.h in Headers */, 155C7E2919A71CE800F08B25 /* lua_cocos2dx_ui_manual.hpp in Headers */, 15EFA62D198B3220000C57D3 /* lua_cocos2dx_experimental_manual.hpp in Headers */, + F4FE0D6D19ECD02400B8B12B /* LuaEventNode.h in Headers */, 15EFA62E198B3220000C57D3 /* lua_cocos2dx_manual.hpp in Headers */, + F4FE0D7119ECD02400B8B12B /* LuaNodeManager.h in Headers */, + F4FE0D6919ECD02400B8B12B /* lua_cocos2dx_quick_manual.hpp in Headers */, 15EFA62F198B3220000C57D3 /* lua_cocos2dx_physics_manual.hpp in Headers */, 155C7E0919A71C8500F08B25 /* lua_cocos2dx_extension_manual.h in Headers */, 155C7E1919A71CB500F08B25 /* lua_xml_http_request.h in Headers */, @@ -849,10 +916,12 @@ 15EFA622198B2E74000C57D3 /* lua_cocos2dx_experimental_auto.hpp in Headers */, 15EFA623198B2E74000C57D3 /* lua_cocos2dx_auto.hpp in Headers */, 155C7E0119A71C6300F08B25 /* CCBProxy.h in Headers */, + F4FE0D7919ECD02400B8B12B /* LuaTouchTargetNode.h in Headers */, 15415AC819A71A53004F1E71 /* select.h in Headers */, 155C7E1D19A71CC300F08B25 /* lua_cocos2dx_spine_manual.hpp in Headers */, 15EFA624198B2E74000C57D3 /* lua_cocos2dx_physics_auto.hpp in Headers */, 3E2BDB0619C5E5FE0055CDCD /* lua_cocos2dx_audioengine_auto.hpp in Headers */, + F4FE0D5A19ECD00100B8B12B /* luasocket_scripts.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -947,6 +1016,7 @@ 155C7E1619A71CAD00F08B25 /* lua_xml_http_request.cpp in Sources */, 15C1C2E419874C7C00A46ACC /* tolua_fix.cpp in Sources */, 15C1C2E219874BA100A46ACC /* LuaBasicConversions.cpp in Sources */, + F4FE0D5719ECD00100B8B12B /* luasocket_scripts.c in Sources */, 15415AC519A71A53004F1E71 /* select.c in Sources */, 155C7DFE19A71C5A00F08B25 /* CCBProxy.cpp in Sources */, 15415AD919A71A53004F1E71 /* unix.c in Sources */, @@ -956,6 +1026,8 @@ 15415AC919A71A53004F1E71 /* serial.c in Sources */, 155C7E0219A71C6700F08B25 /* lua_cocos2dx_cocosbuilder_manual.cpp in Sources */, 15C1C2DF19874B8800A46ACC /* CCLuaStack.cpp in Sources */, + F4FE0D6619ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp in Sources */, + F4FE0D6E19ECD02400B8B12B /* LuaNodeManager.cpp in Sources */, 15C1C2E019874B8800A46ACC /* CCLuaValue.cpp in Sources */, 155C7DF219A71C3200F08B25 /* lua_cocos2dx_3d_manual.cpp in Sources */, 15415AB119A71A53004F1E71 /* inet.c in Sources */, @@ -970,12 +1042,15 @@ 566F015F19B5EB0F00FCA620 /* CustomGUIReader.cpp in Sources */, 15415AC119A71A53004F1E71 /* options.c in Sources */, 150906F019D556C5002C4D97 /* lua_cocos2dx_audioengine_auto.cpp in Sources */, + F4FE0D7619ECD02400B8B12B /* LuaTouchTargetNode.cpp in Sources */, 155C7E0A19A71C8B00F08B25 /* lua_cocos2dx_network_manual.cpp in Sources */, 15415AD119A71A53004F1E71 /* timeout.c in Sources */, 15C1C2CF1987498B00A46ACC /* lua_cocos2dx_deprecated.cpp in Sources */, 155C7E2219A71CD300F08B25 /* lua_cocos2dx_experimental_video_manual.cpp in Sources */, 155C7DFA19A71C4C00F08B25 /* lua_cocos2dx_coco_studio_manual.cpp in Sources */, 155C7E2619A71CDD00F08B25 /* lua_cocos2dx_ui_manual.cpp in Sources */, + F4FE0D6A19ECD02400B8B12B /* LuaEventNode.cpp in Sources */, + F4FE0D7219ECD02400B8B12B /* LuaTouchEventManager.cpp in Sources */, 15415A7019A71768004F1E71 /* lua_cocos2dx_extension_auto.cpp in Sources */, 155C7DF619A71C3E00F08B25 /* lua_cocos2dx_cocosdenshion_manual.cpp in Sources */, 15415AA519A71A53004F1E71 /* auxiliar.c in Sources */, @@ -1017,6 +1092,7 @@ 155C7E1719A71CAF00F08B25 /* lua_xml_http_request.cpp in Sources */, 15415ACE19A71A53004F1E71 /* tcp.c in Sources */, 15415AD219A71A53004F1E71 /* timeout.c in Sources */, + F4FE0D5819ECD00100B8B12B /* luasocket_scripts.c in Sources */, 15EFA639198B328B000C57D3 /* tolua_fix.cpp in Sources */, 155C7DFF19A71C5C00F08B25 /* CCBProxy.cpp in Sources */, 155C7DF019A71C1E00F08B25 /* lua_cocos2dx_spine_auto.cpp in Sources */, @@ -1026,6 +1102,8 @@ 15EFA627198B31FB000C57D3 /* lua_cocos2dx_experimental_manual.cpp in Sources */, 155C7E0319A71C6900F08B25 /* lua_cocos2dx_cocosbuilder_manual.cpp in Sources */, 15415ABE19A71A53004F1E71 /* mime.c in Sources */, + F4FE0D6719ECD02400B8B12B /* lua_cocos2dx_quick_manual.cpp in Sources */, + F4FE0D6F19ECD02400B8B12B /* LuaNodeManager.cpp in Sources */, 15415ADA19A71A53004F1E71 /* unix.c in Sources */, 155C7DF319A71C3400F08B25 /* lua_cocos2dx_3d_manual.cpp in Sources */, 15415ADE19A71A53004F1E71 /* usocket.c in Sources */, @@ -1040,12 +1118,15 @@ 566F016019B5EB0F00FCA620 /* CustomGUIReader.cpp in Sources */, 155C7DF119A71C2300F08B25 /* lua_cocos2dx_studio_auto.cpp in Sources */, 3E2BDB0519C5E5FE0055CDCD /* lua_cocos2dx_audioengine_auto.cpp in Sources */, + F4FE0D7719ECD02400B8B12B /* LuaTouchTargetNode.cpp in Sources */, 155C7E0B19A71C8D00F08B25 /* lua_cocos2dx_network_manual.cpp in Sources */, 15415AAE19A71A53004F1E71 /* except.c in Sources */, 15415AAA19A71A53004F1E71 /* buffer.c in Sources */, 155C7E2319A71CD500F08B25 /* lua_cocos2dx_experimental_video_manual.cpp in Sources */, 155C7DFB19A71C4E00F08B25 /* lua_cocos2dx_coco_studio_manual.cpp in Sources */, 155C7E2719A71CDE00F08B25 /* lua_cocos2dx_ui_manual.cpp in Sources */, + F4FE0D6B19ECD02400B8B12B /* LuaEventNode.cpp in Sources */, + F4FE0D7319ECD02400B8B12B /* LuaTouchEventManager.cpp in Sources */, 15415AB619A71A53004F1E71 /* io.c in Sources */, 155C7DF719A71C4000F08B25 /* lua_cocos2dx_cocosdenshion_manual.cpp in Sources */, 155C7DEF19A71C0900F08B25 /* lua_cocos2dx_ui_auto.cpp in Sources */, @@ -1097,7 +1178,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; SKIP_INSTALL = YES; - USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../.. $(SRCROOT)/../../.. $(SRCROOT)/../../../base $(SRCROOT)/../../../3d $(SRCROOT)/../../../2d $(SRCROOT)/../../../deprecated $(SRCROOT)/../../../physics $(SRCROOT)/../../../math/kazmath $(SRCROOT)/../../../2d/platform $(SRCROOT)/../../../audio/include $(SRCROOT)/../../../editor-support $(SRCROOT)/../../../editor-support/spine $(SRCROOT)/../../../editor-support/cocostudio $(SRCROOT)/../../../editor-support/cocosbuilder $(SRCROOT)/../../../ui $(SRCROOT)/../../../storage $(SRCROOT)/../../../../extensions $(SRCROOT)/../../../../external $(SRCROOT)/../../../../external/chipmunk/include/chipmunk $(SRCROOT)/../../../../external/lua $(SRCROOT)/../../../../external/lua/luajit/include $(SRCROOT)/../../../../external/lua/tolua"; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../.. $(SRCROOT)/../../.. $(SRCROOT)/../../../base $(SRCROOT)/../../../3d $(SRCROOT)/../../../2d $(SRCROOT)/../../../deprecated $(SRCROOT)/../../../physics $(SRCROOT)/../../../math/kazmath $(SRCROOT)/../../../2d/platform $(SRCROOT)/../../../audio/include $(SRCROOT)/../../../editor-support $(SRCROOT)/../../../editor-support/spine $(SRCROOT)/../../../editor-support/cocostudio $(SRCROOT)/../../../editor-support/cocosbuilder $(SRCROOT)/../../../ui $(SRCROOT)/../../../storage $(SRCROOT)/../../../../extensions $(SRCROOT)/../../../../external $(SRCROOT)/../../../../external/chipmunk/include/chipmunk $(SRCROOT)/../../../../external/lua $(SRCROOT)/../../../../external/lua/luajit/include $(SRCROOT)/../../../../external/lua/tolua $(SRCROOT)/../../../editor-support/cocostudio/ActionTimeline"; }; name = Debug; }; @@ -1130,7 +1211,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; SKIP_INSTALL = YES; - USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../.. $(SRCROOT)/../../.. $(SRCROOT)/../../../base $(SRCROOT)/../../../3d $(SRCROOT)/../../../2d $(SRCROOT)/../../../deprecated $(SRCROOT)/../../../physics $(SRCROOT)/../../../math/kazmath $(SRCROOT)/../../../2d/platform $(SRCROOT)/../../../audio/include $(SRCROOT)/../../../editor-support $(SRCROOT)/../../../editor-support/spine $(SRCROOT)/../../../editor-support/cocostudio $(SRCROOT)/../../../editor-support/cocosbuilder $(SRCROOT)/../../../ui $(SRCROOT)/../../../storage $(SRCROOT)/../../../../extensions $(SRCROOT)/../../../../external $(SRCROOT)/../../../../external/chipmunk/include/chipmunk $(SRCROOT)/../../../../external/lua $(SRCROOT)/../../../../external/lua/luajit/include $(SRCROOT)/../../../../external/lua/tolua"; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../.. $(SRCROOT)/../../.. $(SRCROOT)/../../../base $(SRCROOT)/../../../3d $(SRCROOT)/../../../2d $(SRCROOT)/../../../deprecated $(SRCROOT)/../../../physics $(SRCROOT)/../../../math/kazmath $(SRCROOT)/../../../2d/platform $(SRCROOT)/../../../audio/include $(SRCROOT)/../../../editor-support $(SRCROOT)/../../../editor-support/spine $(SRCROOT)/../../../editor-support/cocostudio $(SRCROOT)/../../../editor-support/cocosbuilder $(SRCROOT)/../../../ui $(SRCROOT)/../../../storage $(SRCROOT)/../../../../extensions $(SRCROOT)/../../../../external $(SRCROOT)/../../../../external/chipmunk/include/chipmunk $(SRCROOT)/../../../../external/lua $(SRCROOT)/../../../../external/lua/luajit/include $(SRCROOT)/../../../../external/lua/tolua $(SRCROOT)/../../../editor-support/cocostudio/ActionTimeline"; VALIDATE_PRODUCT = YES; }; name = Release; diff --git a/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj b/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj index d5ddaf47ac..41ad3062b1 100644 --- a/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj +++ b/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj @@ -1,4 +1,4 @@ - + @@ -17,6 +17,7 @@ + @@ -24,6 +25,11 @@ + + + + + @@ -81,6 +87,7 @@ + @@ -89,6 +96,11 @@ + + + + + @@ -255,7 +267,7 @@ Disabled - $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\lua\luajit\include;$(EngineRoot)external\lua;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\2d;$(EngineRoot)cocos\3d;$(EngineRoot)cocos\editor-support\cocostudio;$(EngineRoot)cocos\editor-support\spine;$(EngineRoot)cocos\scripting\lua-bindings\manual\extension;$(EngineRoot)cocos\scripting\lua-bindings\manual\cocostudio;$(EngineRoot)cocos\scripting\lua-bindings\manual\ui;$(EngineRoot)cocos\scripting\lua-bindings\manual\cocos2d;$(EngineRoot)extensions;$(EngineRoot)cocos\editor-support\cocosbuilder;$(EngineRoot)cocos\audio\include;$(EngineRoot)external\libwebsockets\win32\include;$(EngineRoot)cocos\ui;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;%(AdditionalIncludeDirectories) + $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\lua\luajit\include;$(EngineRoot)external\lua;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\2d;$(EngineRoot)cocos\3d;$(EngineRoot)cocos\editor-support\cocostudio;$(EngineRoot)cocos\editor-support\cocostudio\ActionTimeline;$(EngineRoot)cocos\editor-support\spine;$(EngineRoot)cocos\scripting\lua-bindings\manual\extension;$(EngineRoot)cocos\scripting\lua-bindings\manual\cocostudio;$(EngineRoot)cocos\scripting\lua-bindings\manual\ui;$(EngineRoot)cocos\scripting\lua-bindings\manual\cocos2d;$(EngineRoot)extensions;$(EngineRoot)cocos\editor-support\cocosbuilder;$(EngineRoot)cocos\audio\include;$(EngineRoot)external\libwebsockets\win32\include;$(EngineRoot)cocos\ui;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;%(AdditionalIncludeDirectories) WIN32;_WINDOWS;_DEBUG;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) false EnableFastChecks @@ -287,7 +299,7 @@ xcopy /Y /Q "$(ProjectDir)..\..\..\..\external\lua\luajit\prebuilt\win32\*.*" "$ MinSpace true - $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\lua\luajit\include;$(EngineRoot)external\lua;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\2d;$(EngineRoot)cocos\3d;$(EngineRoot)cocos\scripting\lua-bindings\manual\extension;$(EngineRoot)cocos\scripting\lua-bindings\manual\cocostudio;$(EngineRoot)cocos\scripting\lua-bindings\manual\ui;$(EngineRoot)cocos\scripting\lua-bindings\manual\cocos2d;$(EngineRoot)extensions;$(EngineRoot)cocos\editor-support;$(EngineRoot)cocos\editor-support\cocostudio;$(EngineRoot)cocos\editor-support\spine;$(EngineRoot)cocos\editor-support\cocosbuilder;$(EngineRoot)cocos\audio\include;$(EngineRoot)external\libwebsockets\win32\include;$(EngineRoot)cocos\ui;$(EngineRoot)external;%(AdditionalIncludeDirectories) + $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\lua\luajit\include;$(EngineRoot)external\lua;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\2d;$(EngineRoot)cocos\3d;$(EngineRoot)cocos\scripting\lua-bindings\manual\extension;$(EngineRoot)cocos\scripting\lua-bindings\manual\cocostudio;$(EngineRoot)cocos\scripting\lua-bindings\manual\ui;$(EngineRoot)cocos\scripting\lua-bindings\manual\cocos2d;$(EngineRoot)extensions;$(EngineRoot)cocos\editor-support;$(EngineRoot)cocos\editor-support\cocostudio;$(EngineRoot)cocos\editor-support\cocostudio\ActionTimeline;$(EngineRoot)cocos\editor-support\spine;$(EngineRoot)cocos\editor-support\cocosbuilder;$(EngineRoot)cocos\audio\include;$(EngineRoot)external\libwebsockets\win32\include;$(EngineRoot)cocos\ui;$(EngineRoot)external;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;LIBLUA_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreadedDLL true @@ -318,4 +330,4 @@ xcopy /Y /Q "$(ProjectDir)..\..\..\..\external\lua\luajit\prebuilt\win32\*.*" "$ - + \ No newline at end of file diff --git a/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj.filters b/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj.filters index 1f8c61573d..6342a52931 100644 --- a/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj.filters +++ b/cocos/scripting/lua-bindings/proj.win32/libluacocos2d.vcxproj.filters @@ -70,6 +70,9 @@ {617e3909-01ff-4c11-bae5-790787963c34} + + {e6d6c5da-e7da-40cf-bde0-f383f9dd9dbe} + @@ -222,6 +225,9 @@ luasocket + + luasocket + luasocket @@ -246,6 +252,21 @@ manual\cocostudio + + quick + + + quick + + + quick + + + quick + + + quick + @@ -401,6 +422,9 @@ luasocket + + luasocket + luasocket @@ -428,6 +452,21 @@ manual\cocostudio + + quick + + + quick + + + quick + + + quick + + + quick + diff --git a/cocos/scripting/lua-bindings/script/cocos2d/Cocos2d.lua b/cocos/scripting/lua-bindings/script/cocos2d/Cocos2d.lua index 84c3f25c19..386e19067a 100644 --- a/cocos/scripting/lua-bindings/script/cocos2d/Cocos2d.lua +++ b/cocos/scripting/lua-bindings/script/cocos2d/Cocos2d.lua @@ -1,10 +1,11 @@ + cc = cc or {} function cc.clampf(value, min_inclusive, max_inclusive) -- body local temp = 0 if min_inclusive > max_inclusive then - temp = min_inclusive + temp = min_inclusive min_inclusive = max_inclusive max_inclusive = temp end @@ -110,7 +111,7 @@ function cc.pIsLineIntersect(A, B, C, D, s, t) return false, s, t end - + s = s / denom t = t / denom @@ -153,7 +154,7 @@ function cc.pFromSize(sz) return { x = sz.width, y = sz.height } end -function cc.pLerp(pt1,pt2,alpha) +function cc.pLerp(pt1,pt2,alpha) return cc.pAdd(cc.pMul(pt1, 1.0 - alpha), cc.pMul(pt2,alpha) ) end @@ -166,13 +167,13 @@ function cc.pFuzzyEqual(pt1,pt2,variance) end function cc.pRotateByAngle(pt1, pt2, angle) - return cc.pAdd(pt2, cc.pRotate( cc.pSub(pt1, pt2),cc.pForAngle(angle))) + return cc.pAdd(pt2, cc.pRotate( cc.pSub(pt1, pt2),cc.pForAngle(angle))) end function cc.pIsSegmentIntersect(pt1,pt2,pt3,pt4) local s,t,ret = 0,0,false ret,s,t =cc.pIsLineIntersect(pt1, pt2, pt3, pt4,s,t) - + if ret and s >= 0.0 and s <= 1.0 and t >= 0.0 and t <= 0.0 then return true; end @@ -182,7 +183,7 @@ end function cc.pGetIntersectPoint(pt1,pt2,pt3,pt4) local s,t, ret = 0,0,false - ret,s,t = cc.pIsLineIntersect(pt1,pt2,pt3,pt4,s,t) + ret,s,t = cc.pIsLineIntersect(pt1,pt2,pt3,pt4,s,t) if ret then return cc.p(pt1.x + s * (pt2.x - pt1.x), pt1.y + s * (pt2.y - pt1.y)) else @@ -235,7 +236,7 @@ end function cc.rectContainsPoint( rect, point ) local ret = false - + if (point.x >= rect.x) and (point.x <= rect.x + rect.width) and (point.y >= rect.y) and (point.y <= rect.y + rect.height) then ret = true @@ -367,6 +368,10 @@ function cc.vec3(_x, _y, _z) return { x = _x, y = _y, z = _z } end +function cc.vec4(_x, _y, _z, _w) + return { x = _x, y = _y, z = _z, w = _w } +end + function cc.vec3normalize(vec3) local n = vec3.x * vec3.x + vec3.y * vec3.y + vec3.z * vec3.z if n == 1.0 then @@ -382,3 +387,45 @@ function cc.vec3normalize(vec3) n = 1.0 / n return {x = vec3.x * n, y = vec3.y * n, z = vec3.z * n} end + +function cc.quaternion(_x, _y ,_z,_w) + return { x = _x, y = _y, z = _z, w = _w } +end + +cc.mat4 = cc.mat4 or {} + +function cc.mat4.new(...) + local params = {...} + local size = #params + + local obj = {} + + if 1 == size then + assert(type(params[1]) == "table" , "type of input params are wrong to new a mat4 when num of params is 1") + for i= 1, 16 do + if params[1][i] ~= nil then + obj[i] = params[1][i] + else + obj[i] = 0 + end + end + elseif 16 == size then + if params[i] ~= nil then + mat4[i] = params[i] + else + mat4[i] = 0 + end + end + + setmetatable(obj, {__index = cc.mat4}) + + return obj +end + +function cc.mat4.getInversed(self) + return mat4_getInversed(self) +end + +function cc.mat4.transformVector(self, vector, dst) + return mat4_transformVector(self, vector, dst) +end diff --git a/cocos/scripting/lua-bindings/script/cocos2d/Cocos2dConstants.lua b/cocos/scripting/lua-bindings/script/cocos2d/Cocos2dConstants.lua index 41dc89d60d..ea41e6f5c4 100644 --- a/cocos/scripting/lua-bindings/script/cocos2d/Cocos2dConstants.lua +++ b/cocos/scripting/lua-bindings/script/cocos2d/Cocos2dConstants.lua @@ -1,3 +1,4 @@ + cc = cc or {} cc.SPRITE_INDEX_NOT_INITIALIZED = 0xffffffff @@ -204,7 +205,7 @@ cc.LANGUAGE_ARABIC = 11 cc.NODE_ON_ENTER = 0 cc.NODE_ON_EXIT = 1 cc.NODE_ON_ENTER_TRANSITION_DID_FINISH = 2 -cc.NODE_ON_EXIT_TRANSITION_DID_START = 3 +cc.NODE_ON_EXIT_TRANSITION_DID_START = 3 cc.NODE_ON_CLEAN_UP = 4 cc.Handler = cc.Handler or {} @@ -272,6 +273,10 @@ cc.Handler.EVENT_CONTROLLER_KEYDOWN = 60 cc.Handler.EVENT_CONTROLLER_KEYUP = 61 cc.Handler.EVENT_CONTROLLER_KEYREPEAT = 62 cc.Handler.EVENT_CONTROLLER_AXIS = 63 +cc.Handler.EVENT_SPINE_ANIMATION_START = 64 +cc.Handler.EVENT_SPINE_ANIMATION_END = 65 +cc.Handler.EVENT_SPINE_ANIMATION_COMPLETE = 66 +cc.Handler.EVENT_SPINE_ANIMATION_EVENT = 67 cc.EVENT_UNKNOWN = 0 @@ -289,7 +294,7 @@ cc.GLYPHCOLLECTION_NEHE = 1 cc.GLYPHCOLLECTION_ASCII = 2 cc.GLYPHCOLLECTION_CUSTOM = 3 -cc.ResolutionPolicy = +cc.ResolutionPolicy = { EXACT_FIT = 0, NO_BORDER = 1, @@ -299,7 +304,7 @@ cc.ResolutionPolicy = UNKNOWN = 5, } -cc.LabelEffect = +cc.LabelEffect = { NORMAL = 0, OUTLINE = 1, @@ -476,7 +481,6 @@ cc.KeyCodeKey = cc.KeyCode = { - } for k,v in ipairs(cc.KeyCodeKey) do @@ -485,6 +489,28 @@ end cc.KeyCode.KEY_BACK = cc.KeyCode.KEY_ESCAPE +cc.EventAssetsManagerEx = +{ + EventCode = + { + ERROR_NO_LOCAL_MANIFEST = 0, + ERROR_DOWNLOAD_MANIFEST = 1, + ERROR_PARSE_MANIFEST = 2, + NEW_VERSION_FOUND = 3, + ALREADY_UP_TO_DATE = 4, + UPDATE_PROGRESSION = 5, + ASSET_UPDATED = 6, + ERROR_UPDATING = 7, + UPDATE_FINISHED = 8, + }, +} + +cc.AssetsManagerExStatic = +{ + VERSION_ID = "@version", + MANIFEST_ID = "@manifest", +} + cc.EventCode = { BEGAN = 0, @@ -496,7 +522,7 @@ cc.EventCode = cc.DIRECTOR_PROJECTION_2D = 0 cc.DIRECTOR_PROJECTION_3D = 1 -cc.ConfigType = +cc.ConfigType = { NONE = 0, COCOSTUDIO = 1, @@ -505,7 +531,7 @@ cc.ConfigType = cc.AUDIO_INVAILD_ID = -1 cc.AUDIO_TIME_UNKNOWN = -1.0 -cc.CameraFlag = +cc.CameraFlag = { DEFAULT = 1, USER1 = 2, @@ -518,8 +544,35 @@ cc.CameraFlag = USER8 = 256, } -cc.BillBoard_Mode = +cc.BillBoard_Mode = { VIEW_POINT_ORIENTED = 0, VIEW_PLANE_ORIENTED = 1, } + +cc.GLProgram_VERTEX_ATTRIB = +{ + POSITION = 0, + COLOR = 1, + TEX_COORD = 2, + TEX_COORD1 = 3, + TEX_COORD2 = 4, + TEX_COORD3 = 5, + TEX_COORD4 = 6, + TEX_COORD5 = 7, + TEX_COORD6 = 8, + TEX_COORD7 = 9, + NORMAL = 10, + BLEND_WEIGHT = 11, + BLEND_INDEX =12, + MAX = 13, + --backward compatibility + TEX_COORDS = 2, +} + +cc.MATRIX_STACK_TYPE = +{ + MODELVIEW = 0, + PROJECTION = 1, + TEXTURE = 2, +} diff --git a/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dEnum.lua b/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dEnum.lua index 58419c2d44..4b6b92fea4 100644 --- a/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dEnum.lua +++ b/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dEnum.lua @@ -1,13 +1,12 @@ -require "Cocos2dConstants.lua" -require "OpenglConstants.lua" + --Enums will be deprecated,begin _G.kCCTextAlignmentLeft = cc.TEXT_ALIGNMENT_LEFT _G.kCCTextAlignmentRight = cc.TEXT_ALIGNMENT_RIGHT _G.kCCTextAlignmentCenter = cc.TEXT_ALIGNMENT_CENTER _G.kCCVerticalTextAlignmentTop = cc.VERTICAL_TEXT_ALIGNMENT_TOP -_G.kCCVerticalTextAlignmentCenter = cc.VERTICAL_TEXT_ALIGNMENT_CENTER +_G.kCCVerticalTextAlignmentCenter = cc.VERTICAL_TEXT_ALIGNMENT_CENTER _G.kCCVerticalTextAlignmentBottom = cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM -_G.kCCDirectorProjection3D = cc.DIRECTOR_PROJECTION3_D +_G.kCCDirectorProjection3D = cc.DIRECTOR_PROJECTION3_D _G.kCCDirectorProjection2D = cc.DIRECTOR_PROJECTION2_D _G.kCCDirectorProjectionCustom = cc.DIRECTOR_PROJECTION_CUSTOM _G.kCCDirectorProjectionDefault = cc.DIRECTOR_PROJECTION_DEFAULT @@ -18,14 +17,14 @@ _G.kCCTexture2DPixelFormat_RGBA8888 = cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888 _G.kCCTexture2DPixelFormat_RGB888 = cc.TEXTURE2_D_PIXEL_FORMAT_RG_B888 _G.kCCTexture2DPixelFormat_RGB565 = cc.TEXTURE2_D_PIXEL_FORMAT_RG_B565 _G.kCCTexture2DPixelFormat_A8 = cc.TEXTURE2_D_PIXEL_FORMAT_A8 -_G.kCCTexture2DPixelFormat_I8 = cc.TEXTURE2_D_PIXEL_FORMAT_I8 +_G.kCCTexture2DPixelFormat_I8 = cc.TEXTURE2_D_PIXEL_FORMAT_I8 _G.kCCTexture2DPixelFormat_AI88 = cc.TEXTURE2_D_PIXEL_FORMAT_A_I88 -_G.kCCTexture2DPixelFormat_RGBA4444 = cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A4444 -_G.kCCTexture2DPixelFormat_RGB5A1 = cc.TEXTURE2_D_PIXEL_FORMAT_RGB5_A1 +_G.kCCTexture2DPixelFormat_RGBA4444 = cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A4444 +_G.kCCTexture2DPixelFormat_RGB5A1 = cc.TEXTURE2_D_PIXEL_FORMAT_RGB5_A1 _G.kCCTexture2DPixelFormat_PVRTC4 = cc.TEXTURE2_D_PIXEL_FORMAT_PVRTC4 _G.kCCTexture2DPixelFormat_PVRTC2 = cc.TEXTURE2_D_PIXEL_FORMAT_PVRTC2 _G.kCCTexture2DPixelFormat_Default = cc.TEXTURE2_D_PIXEL_FORMAT_DEFAULT -_G.kCCImageFormatPNG = cc.IMAGE_FORMAT_PNG +_G.kCCImageFormatPNG = cc.IMAGE_FORMAT_PNG _G.kCCImageFormatJPEG = cc.IMAGE_FORMAT_JPEG _G.kCCTouchesOneByOne = cc.TOUCHES_ONE_BY_ONE _G.kCCTouchesAllAtOnce = cc.TOUCHES_ALL_AT_ONCE @@ -35,18 +34,18 @@ _G.kCCTransitionOrientationUpOver = cc.TRANSITION_ORIENTATION_UP_OVER _G.kCCTransitionOrientationDownOver = cc.TRANSITION_ORIENTATION_DOWN_OVER _G.kCCActionTagInvalid = cc.ACTION_TAG_INVALID _G.kCCLabelAutomaticWidth = cc.LABEL_AUTOMATIC_WIDTH -_G.kCCMenuStateWaiting = cc.MENU_STATE_WAITING +_G.kCCMenuStateWaiting = cc.MENU_STATE_WAITING _G.kCCMenuStateTrackingTouch = cc.MENU_STATE_TRACKING_TOUCH _G.kCCMenuHandlerPriority = cc.MENU_HANDLER_PRIORITY -_G.kCCParticleDurationInfinity = cc.PARTICLE_DURATION_INFINITY -_G.kCCParticleStartSizeEqualToEndSize = cc.PARTICLE_START_SIZE_EQUAL_TO_END_SIZE +_G.kCCParticleDurationInfinity = cc.PARTICLE_DURATION_INFINITY +_G.kCCParticleStartSizeEqualToEndSize = cc.PARTICLE_START_SIZE_EQUAL_TO_END_SIZE _G.kCCParticleStartRadiusEqualToEndRadius = cc.PARTICLE_START_RADIUS_EQUAL_TO_END_RADIUS _G.kCCParticleModeGravity = cc.PARTICLE_MODE_GRAVITY _G.kCCParticleModeRadius = cc.PARTICLE_MODE_RADIUS -_G.kCCPositionTypeFree = cc.POSITION_TYPE_FREE +_G.kCCPositionTypeFree = cc.POSITION_TYPE_FREE _G.kCCPositionTypeRelative = cc.POSITION_TYPE_RELATIVE _G.kCCPositionTypeGrouped = cc.POSITION_TYPE_GROUPED -_G.kCCProgressTimerTypeRadial = cc.PROGRESS_TIMER_TYPE_RADIAL +_G.kCCProgressTimerTypeRadial = cc.PROGRESS_TIMER_TYPE_RADIAL _G.kCCProgressTimerTypeBar = cc.PROGRESS_TIMER_TYPE_BAR _G.kCCTMXTileHorizontalFlag = cc.TMX_TILE_HORIZONTAL_FLAG _G.kCCTMXTileVerticalFlag = cc.TMX_TILE_VERTICAL_FLAG @@ -54,9 +53,9 @@ _G.kCCTMXTileDiagonalFlag = cc.TMX_TILE_DIAGONAL_FLAG _G.kCCFlipedAll = cc.FLIPED_ALL _G.kCCFlippedMask = cc.FLIPPED_MASK -_G.kLanguageEnglish = cc.LANGUAGE_ENGLISH -_G.kLanguageChinese = cc.LANGUAGE_CHINESE -_G.kLanguageFrench = cc.LANGUAGE_FRENCH +_G.kLanguageEnglish = cc.LANGUAGE_ENGLISH +_G.kLanguageChinese = cc.LANGUAGE_CHINESE +_G.kLanguageFrench = cc.LANGUAGE_FRENCH _G.kLanguageItalian = cc.LANGUAGE_ITALIAN _G.kLanguageGerman = cc.LANGUAGE_GERMAN _G.kLanguageSpanish = cc.LANGUAGE_SPANISH @@ -67,21 +66,21 @@ _G.kLanguageHungarian = cc.LANGUAGE_HUNGARIAN _G.kLanguagePortuguese = cc.LANGUAGE_PORTUGUESE _G.kLanguageArabic = cc.LANGUAGE_ARABIC _G.kTargetWindows = cc.PLATFORM_OS_WINDOWS -_G.kTargetLinux = cc.PLATFORM_OS_LINUX +_G.kTargetLinux = cc.PLATFORM_OS_LINUX _G.kTargetMacOS = cc.PLATFORM_OS_MAC _G.kTargetAndroid = cc.PLATFORM_OS_ANDROID _G.kTargetIphone = cc.PLATFORM_OS_IPHONE -_G.kTargetIpad = cc.PLATFORM_OS_IPAD +_G.kTargetIpad = cc.PLATFORM_OS_IPAD _G.kTargetBlackBerry = cc.PLATFORM_OS_BLACKBERRY _G.GL_ZERO = gl.ZERO _G.GL_ONE = gl.ONE _G.GL_SRC_COLOR = gl.SRC_COLOR -_G.GL_ONE_MINUS_SRC_COLOR = gl.ONE_MINUS_SRC_COLOR -_G.GL_SRC_ALPHA = gl.SRC_ALPHA +_G.GL_ONE_MINUS_SRC_COLOR = gl.ONE_MINUS_SRC_COLOR +_G.GL_SRC_ALPHA = gl.SRC_ALPHA _G.GL_ONE_MINUS_SRC_ALPHA = gl.ONE_MINUS_SRC_ALPHA _G.GL_DST_ALPHA = gl.DST_ALPHA -_G.GL_ONE_MINUS_DST_ALPHA = gl.ONE_MINUS_DST_ALPHA +_G.GL_ONE_MINUS_DST_ALPHA = gl.ONE_MINUS_DST_ALPHA _G.GL_DST_COLOR = gl.DST_COLOR _G.GL_ONE_MINUS_DST_COLOR = gl.ONE_MINUS_DST_COLOR _G.GL_RENDERBUFFER_INTERNAL_FORMAT = gl.RENDERBUFFER_INTERNAL_FORMAT diff --git a/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dFunc.lua b/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dFunc.lua index b0e065a8ee..2c83429b4b 100644 --- a/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dFunc.lua +++ b/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dFunc.lua @@ -1,17 +1,16 @@ -require "Cocos2d.lua" + --tip local function deprecatedTip(old_name,new_name) print("\n********** \n"..old_name.." was deprecated please use ".. new_name .. " instead.\n**********") end - --functions of CCDirector will be deprecated,begin local CCDirectorDeprecated = { } function CCDirectorDeprecated.sharedDirector() deprecatedTip("CCDirector:sharedDirector","cc.Director:getInstance") return cc.Director:getInstance() end -rawset(CCDirector,"sharedDirector",CCDirectorDeprecated.sharedDirector) +CCDirector.sharedDirector = CCDirectorDeprecated.sharedDirector --functions of CCDirector will be deprecated,end @@ -21,19 +20,19 @@ function TextureCacheDeprecated.getInstance(self) deprecatedTip("cc.TextureCache:getInstance","cc.Director:getInstance():getTextureCache") return cc.Director:getInstance():getTextureCache() end -rawset(cc.TextureCache,"getInstance",TextureCacheDeprecated.getInstance) +cc.TextureCache.getInstance = TextureCacheDeprecated.getInstance function TextureCacheDeprecated.destroyInstance(self) deprecatedTip("cc.TextureCache:destroyInstance","cc.Director:getInstance():destroyTextureCache") return cc.Director:getInstance():destroyTextureCache() end -rawset(cc.TextureCache,"destroyInstance",TextureCacheDeprecated.destroyInstance) +cc.TextureCache.destroyInstance = TextureCacheDeprecated.destroyInstance function TextureCacheDeprecated.dumpCachedTextureInfo(self) deprecatedTip("self:dumpCachedTextureInfo","self:getCachedTextureInfo") return print(self:getCachedTextureInfo()) end -rawset(cc.TextureCache,"dumpCachedTextureInfo",TextureCacheDeprecated.dumpCachedTextureInfo) +cc.TextureCache.dumpCachedTextureInfo = TextureCacheDeprecated.dumpCachedTextureInfo local CCTextureCacheDeprecated = { } function CCTextureCacheDeprecated.sharedTextureCache() @@ -52,7 +51,7 @@ function CCTextureCacheDeprecated.addUIImage(self, image, key) deprecatedTip("CCTextureCache:addUIImage","CCTextureCache:addImage") return self:addImage(image,key) end -rawset(CCTextureCache,"addUIImage",CCTextureCacheDeprecated.addUIImage) +CCTextureCache.addUIImage = CCTextureCacheDeprecated.addUIImage --functions of CCTextureCache will be deprecated end --functions of CCAnimation will be deprecated begin @@ -61,7 +60,7 @@ function CCAnimationDeprecated.addSpriteFrameWithFileName(self,...) deprecatedTip("CCAnimationDeprecated:addSpriteFrameWithFileName","cc.Animation:addSpriteFrameWithFile") return self:addSpriteFrameWithFile(...) end -rawset(CCAnimation,"addSpriteFrameWithFileName",CCAnimationDeprecated.addSpriteFrameWithFileName) +CCAnimation.addSpriteFrameWithFileName = CCAnimationDeprecated.addSpriteFrameWithFileName --functions of CCAnimation will be deprecated end @@ -71,31 +70,31 @@ function CCAnimationCacheDeprecated.sharedAnimationCache() deprecatedTip("CCAnimationCache:sharedAnimationCache","CCAnimationCache:getInstance") return CCAnimationCache:getInstance() end -rawset(CCAnimationCache,"sharedAnimationCache",CCAnimationCacheDeprecated.sharedAnimationCache) +CCAnimationCache.sharedAnimationCache = CCAnimationCacheDeprecated.sharedAnimationCache function CCAnimationCacheDeprecated.purgeSharedAnimationCache() deprecatedTip("CCAnimationCache:purgeSharedAnimationCache","CCAnimationCache:destroyInstance") return CCAnimationCache:destroyInstance() end -rawset(CCAnimationCache,"purgeSharedAnimationCache",CCAnimationCacheDeprecated.purgeSharedAnimationCache) +CCAnimationCache.purgeSharedAnimationCache = CCAnimationCacheDeprecated.purgeSharedAnimationCache function CCAnimationCacheDeprecated.addAnimationsWithFile(self,...) deprecatedTip("CCAnimationCache:addAnimationsWithFile","cc.AnimationCache:addAnimations") return self:addAnimations(...) end -rawset(CCAnimationCache,"addAnimationsWithFile",CCAnimationCacheDeprecated.addAnimationsWithFile) +CCAnimationCache.addAnimationsWithFile = CCAnimationCacheDeprecated.addAnimationsWithFile function CCAnimationCacheDeprecated.animationByName(self,...) deprecatedTip("CCAnimationCache:animationByName","cc.AnimationCache:getAnimation") return self:getAnimation(...) end -rawset(CCAnimationCache,"animationByName",CCAnimationCacheDeprecated.animationByName) +CCAnimationCache.animationByName = CCAnimationCacheDeprecated.animationByName function CCAnimationCacheDeprecated.removeAnimationByName(self) deprecatedTip("CCAnimationCache:removeAnimationByName","cc.AnimationCache:removeAnimation") return self:removeAnimation() end -rawset(CCAnimationCache,"removeAnimationByName",CCAnimationCacheDeprecated.removeAnimationByName) +CCAnimationCache.removeAnimationByName = CCAnimationCacheDeprecated.removeAnimationByName --functions of CCAnimationCache will be deprecated end --functions of CCFileUtils will be deprecated end @@ -104,13 +103,13 @@ function CCFileUtilsDeprecated.sharedFileUtils() deprecatedTip("CCFileUtils:sharedFileUtils","CCFileUtils:getInstance") return cc.FileUtils:getInstance() end -rawset(CCFileUtils,"sharedFileUtils",CCFileUtilsDeprecated.sharedFileUtils) +CCFileUtils.sharedFileUtils = CCFileUtilsDeprecated.sharedFileUtils function CCFileUtilsDeprecated.purgeFileUtils() deprecatedTip("CCFileUtils:purgeFileUtils","CCFileUtils:destroyInstance") return cc.FileUtils:destroyInstance() end -rawset(CCFileUtils,"purgeFileUtils",CCFileUtilsDeprecated.purgeFileUtils) +CCFileUtils.purgeFileUtils = CCFileUtilsDeprecated.purgeFileUtils --functions of CCFileUtils will be deprecated end --functions of CCMenu will be deprecated begin @@ -119,12 +118,12 @@ function CCMenuDeprecated.createWithItem(self,...) deprecatedTip("CCMenuDeprecated:createWithItem","cc.Menu:createWithItem") return self:create(...) end -rawset(CCMenu,"createWithItem",CCMenuDeprecated.createWithItem) +CCMenu.createWithItem = CCMenuDeprecated.createWithItem function CCMenuDeprecated.setHandlerPriority(self) print("\n********** \n".."setHandlerPriority was deprecated in 3.0. \n**********") end -rawset(CCMenu,"setHandlerPriority",CCMenuDeprecated.setHandlerPriority) +CCMenu.setHandlerPriority = CCMenuDeprecated.setHandlerPriority --functions of CCMenu will be deprecated end --functions of CCNode will be deprecated begin @@ -134,21 +133,21 @@ function CCNodeDeprecated.boundingBox(self) deprecatedTip("CCNode:boundingBox","cc.Node:getBoundingBox") return self:getBoundingBox() end -rawset(CCNode,"boundingBox",CCNodeDeprecated.boundingBox) +CCNode.boundingBox = CCNodeDeprecated.boundingBox function CCNodeDeprecated.numberOfRunningActions(self) deprecatedTip("CCNode:numberOfRunningActions","cc.Node:getNumberOfRunningActions") return self:getNumberOfRunningActions() end -rawset(CCNode,"numberOfRunningActions",CCNodeDeprecated.numberOfRunningActions) +CCNode.numberOfRunningActions = CCNodeDeprecated.numberOfRunningActions function CCNodeDeprecated.removeFromParentAndCleanup(self,...) deprecatedTip("CCNode:removeFromParentAndCleanup","cc.Node:removeFromParent") return self:removeFromParent(...) end -rawset(CCNode,"removeFromParentAndCleanup",CCNodeDeprecated.removeFromParentAndCleanup) +CCNode.removeFromParentAndCleanup = CCNodeDeprecated.removeFromParentAndCleanup --functions of CCNode will be deprecated end --CCDrawPrimitives will be deprecated begin @@ -156,88 +155,88 @@ local function CCDrawPrimitivesClassDeprecated() deprecatedTip("CCDrawPrimitives","cc.DrawPrimitives") return cc.DrawPrimitives end -_G["CCDrawPrimitives"] = CCDrawPrimitivesClassDeprecated() +_G.CCDrawPrimitives = CCDrawPrimitivesClassDeprecated() --functions of CCDrawPrimitives will be deprecated begin local CCDrawPrimitivesDeprecated = { } function CCDrawPrimitivesDeprecated.ccDrawPoint(pt) deprecatedTip("ccDrawPoint","cc.DrawPrimitives.drawPoint") return cc.DrawPrimitives.drawPoint(pt) end -rawset(_G, "ccDrawPoint", CCDrawPrimitivesDeprecated.ccDrawPoint) +_G.ccDrawPoint = CCDrawPrimitivesDeprecated.ccDrawPoint function CCDrawPrimitivesDeprecated.ccDrawLine(origin,destination) deprecatedTip("ccDrawLine","cc.DrawPrimitives.drawLine") return cc.DrawPrimitives.drawLine(origin,destination) end -rawset(_G, "ccDrawLine", CCDrawPrimitivesDeprecated.ccDrawLine) +_G.ccDrawLine = CCDrawPrimitivesDeprecated.ccDrawLine function CCDrawPrimitivesDeprecated.ccDrawRect(origin,destination) deprecatedTip("ccDrawRect","cc.DrawPrimitives.drawRect") return cc.DrawPrimitives.drawRect(origin,destination) end -rawset(_G, "ccDrawRect", CCDrawPrimitivesDeprecated.ccDrawRect) +_G.ccDrawRect = CCDrawPrimitivesDeprecated.ccDrawRect function CCDrawPrimitivesDeprecated.ccDrawSolidRect(origin,destination,color) deprecatedTip("ccDrawSolidRect","cc.DrawPrimitives.drawSolidRect") return cc.DrawPrimitives.drawSolidRect(origin,destination,color) end -rawset(_G, "ccDrawSolidRect", CCDrawPrimitivesDeprecated.ccDrawSolidRect) +_G.ccDrawSolidRect = CCDrawPrimitivesDeprecated.ccDrawSolidRect -- params:... may represent two param(xScale,yScale) or nil function CCDrawPrimitivesDeprecated.ccDrawCircle(center,radius,angle,segments,drawLineToCenter,...) deprecatedTip("ccDrawCircle","cc.DrawPrimitives.drawCircle") return cc.DrawPrimitives.drawCircle(center,radius,angle,segments,drawLineToCenter,...) end -rawset(_G, "ccDrawCircle", CCDrawPrimitivesDeprecated.ccDrawCircle) +_G.ccDrawCircle = CCDrawPrimitivesDeprecated.ccDrawCircle -- params:... may represent two param(xScale,yScale) or nil function CCDrawPrimitivesDeprecated.ccDrawSolidCircle(center,radius,angle,segments,...) deprecatedTip("ccDrawSolidCircle","cc.DrawPrimitives.drawSolidCircle") return cc.DrawPrimitives.drawSolidCircle(center,radius,angle,segments,...) end -rawset(_G, "ccDrawSolidCircle", CCDrawPrimitivesDeprecated.ccDrawSolidCircle) +_G.ccDrawSolidCircle = CCDrawPrimitivesDeprecated.ccDrawSolidCircle function CCDrawPrimitivesDeprecated.ccDrawQuadBezier(origin,control,destination,segments) deprecatedTip("ccDrawQuadBezier","cc.DrawPrimitives.drawQuadBezier") return cc.DrawPrimitives.drawQuadBezier(origin,control,destination,segments) end -rawset(_G, "ccDrawQuadBezier", CCDrawPrimitivesDeprecated.ccDrawQuadBezier) +_G.ccDrawQuadBezier = CCDrawPrimitivesDeprecated.ccDrawQuadBezier function CCDrawPrimitivesDeprecated.ccDrawCubicBezier(origin,control1,control2,destination,segments) deprecatedTip("ccDrawCubicBezier","cc.DrawPrimitives.drawCubicBezier") return cc.DrawPrimitives.drawCubicBezier(origin,control1,control2,destination,segments) end -rawset(_G, "ccDrawCubicBezier", CCDrawPrimitivesDeprecated.ccDrawCubicBezier) +_G.ccDrawCubicBezier = CCDrawPrimitivesDeprecated.ccDrawCubicBezier function CCDrawPrimitivesDeprecated.ccDrawCatmullRom(arrayOfControlPoints,segments) deprecatedTip("ccDrawCatmullRom","cc.DrawPrimitives.drawCatmullRom") return cc.DrawPrimitives.drawCatmullRom(arrayOfControlPoints,segments) end -rawset(_G, "ccDrawCatmullRom", CCDrawPrimitivesDeprecated.ccDrawCatmullRom) +_G.ccDrawCatmullRom = CCDrawPrimitivesDeprecated.ccDrawCatmullRom function CCDrawPrimitivesDeprecated.ccDrawCardinalSpline(config,tension,segments) deprecatedTip("ccDrawCardinalSpline","cc.DrawPrimitives.drawCardinalSpline") return cc.DrawPrimitives.drawCardinalSpline(config,tension,segments) end -rawset(_G, "ccDrawCardinalSpline", CCDrawPrimitivesDeprecated.ccDrawCardinalSpline) +_G.ccDrawCardinalSpline = CCDrawPrimitivesDeprecated.ccDrawCardinalSpline function CCDrawPrimitivesDeprecated.ccDrawColor4B(r,g,b,a) deprecatedTip("ccDrawColor4B","cc.DrawPrimitives.drawColor4B") return cc.DrawPrimitives.drawColor4B(r,g,b,a) end -rawset(_G, "ccDrawColor4B", CCDrawPrimitivesDeprecated.ccDrawColor4B) +_G.ccDrawColor4B = CCDrawPrimitivesDeprecated.ccDrawColor4B function CCDrawPrimitivesDeprecated.ccDrawColor4F(r,g,b,a) deprecatedTip("ccDrawColor4F","cc.DrawPrimitives.drawColor4F") return cc.DrawPrimitives.drawColor4F(r,g,b,a) end -rawset(_G, "ccDrawColor4F", CCDrawPrimitivesDeprecated.ccDrawColor4F) +_G.ccDrawColor4F = CCDrawPrimitivesDeprecated.ccDrawColor4F function CCDrawPrimitivesDeprecated.ccPointSize(pointSize) deprecatedTip("ccPointSize","cc.DrawPrimitives.setPointSize") return cc.DrawPrimitives.setPointSize(pointSize) end -rawset(_G, "ccPointSize", CCDrawPrimitivesDeprecated.ccPointSize) +_G.ccPointSize = CCDrawPrimitivesDeprecated.ccPointSize --functions of CCDrawPrimitives will be deprecated end --CCDrawPrimitives will be deprecated end @@ -246,7 +245,7 @@ function CCProgressTimerDeprecated.setReverseProgress(self,...) deprecatedTip("CCProgressTimer","CCProgressTimer:setReverseDirection") return self:setReverseDirection(...) end -rawset(CCProgressTimer,"setReverseProgress",CCProgressTimerDeprecated.setReverseProgress) +CCProgressTimer.setReverseProgress = CCProgressTimerDeprecated.setReverseProgress --functions of CCSpriteFrameCache will be deprecated begin local CCSpriteFrameCacheDeprecated = { } @@ -254,19 +253,19 @@ function CCSpriteFrameCacheDeprecated.spriteFrameByName(self,szName) deprecatedTip("CCSpriteFrameCache:spriteFrameByName","CCSpriteFrameCache:getSpriteFrameByName") return self:getSpriteFrameByName(szName) end -rawset(CCSpriteFrameCache,"spriteFrameByName",CCSpriteFrameCacheDeprecated.spriteFrameByName) +CCSpriteFrameCache.spriteFrameByName = CCSpriteFrameCacheDeprecated.spriteFrameByName function CCSpriteFrameCacheDeprecated.sharedSpriteFrameCache() deprecatedTip("CCSpriteFrameCache:sharedSpriteFrameCache","CCSpriteFrameCache:getInstance") return CCSpriteFrameCache:getInstance() end -rawset(CCSpriteFrameCache,"sharedSpriteFrameCache",CCSpriteFrameCacheDeprecated.sharedSpriteFrameCache) +CCSpriteFrameCache.sharedSpriteFrameCache = CCSpriteFrameCacheDeprecated.sharedSpriteFrameCache function CCSpriteFrameCacheDeprecated.purgeSharedSpriteFrameCache() deprecatedTip("CCSpriteFrameCache:purgeSharedSpriteFrameCache","CCSpriteFrameCache:destroyInstance") return CCSpriteFrameCache:destroyInstance() end -rawset(CCSpriteFrameCache,"purgeSharedSpriteFrameCache",CCSpriteFrameCacheDeprecated.purgeSharedSpriteFrameCache) +CCSpriteFrameCache.purgeSharedSpriteFrameCache = CCSpriteFrameCacheDeprecated.purgeSharedSpriteFrameCache function CCSpriteFrameCacheDeprecated.addSpriteFramesWithFile(self,...) deprecatedTip("CCSpriteFrameCache:addSpriteFramesWithFile","CCSpriteFrameCache:addSpriteFrames") @@ -278,7 +277,7 @@ function CCSpriteFrameCacheDeprecated.getSpriteFrameByName(self,...) deprecatedTip("CCSpriteFrameCache:getSpriteFrameByName","CCSpriteFrameCache:getSpriteFrame") return self:getSpriteFrame(...) end -rawset(CCSpriteFrameCache,"getSpriteFrameByName",CCSpriteFrameCacheDeprecated.getSpriteFrameByName) +CCSpriteFrameCache.getSpriteFrameByName = CCSpriteFrameCacheDeprecated.getSpriteFrameByName --functions of CCSpriteFrameCache will be deprecated end --functions of CCLabelAtlas will be deprecated begin @@ -287,7 +286,7 @@ function CCLabelAtlasDeprecated.create(self,...) deprecatedTip("CCLabelAtlas:create","CCLabelAtlas:_create") return self:_create(...) end -rawset(CCLabelAtlas,"create",CCLabelAtlasDeprecated.create) +CCLabelAtlas.create = CCLabelAtlasDeprecated.create --functions of CCLabelAtlas will be deprecated end @@ -297,55 +296,55 @@ local function CCRectMake(x,y,width,height) deprecatedTip("CCRectMake(x,y,width,height)","cc.rect(x,y,width,height) in lua") return cc.rect(x,y,width,height) end -rawset(_G,"CCRectMake",CCRectMake) +_G.CCRectMake = CCRectMake local function ccc3(r,g,b) deprecatedTip("ccc3(r,g,b)","cc.c3b(r,g,b)") return cc.c3b(r,g,b) end -rawset(_G,"ccc3",ccc3) +_G.ccc3 = ccc3 local function ccp(x,y) deprecatedTip("ccp(x,y)","cc.p(x,y)") return cc.p(x,y) -end -rawset(_G,"ccp",ccp) +end +_G.ccp = ccp local function CCSizeMake(width,height) deprecatedTip("CCSizeMake(width,height)","cc.size(width,height)") return cc.size(width,height) end -rawset(_G,"CCSizeMake",CCSizeMake) +_G.CCSizeMake = CCSizeMake local function ccc4(r,g,b,a) deprecatedTip("ccc4(r,g,b,a)","cc.c4b(r,g,b,a)") return cc.c4b(r,g,b,a) end -rawset(_G,"ccc4",ccc4) +_G.ccc4 = ccc4 local function ccc4FFromccc3B(color3B) deprecatedTip("ccc4FFromccc3B(color3B)","cc.c4f(color3B.r / 255.0,color3B.g / 255.0,color3B.b / 255.0,1.0)") return cc.c4f(color3B.r/255.0, color3B.g/255.0, color3B.b/255.0, 1.0) end -rawset(_G,"ccc4FFromccc3B",ccc4FFromccc3B) +_G.ccc4FFromccc3B = ccc4FFromccc3B local function ccc4f(r,g,b,a) deprecatedTip("ccc4f(r,g,b,a)","cc.c4f(r,g,b,a)") return cc.c4f(r,g,b,a) end -rawset(_G,"ccc4f",ccc4f) +_G.ccc4f = ccc4f local function ccc4FFromccc4B(color4B) deprecatedTip("ccc4FFromccc4B(color4B)","cc.c4f(color4B.r/255.0, color4B.g/255.0, color4B.b/255.0, color4B.a/255.0)") - return cc.c4f(color4B.r/255.0, color4B.g/255.0, color4B.b/255.0, color4B.a/255.0) + return cc.c4f(color4B.r/255.0, color4B.g/255.0, color4B.b/255.0, color4B.a/255.0) end -rawset(_G,"ccc4FFromccc4B",ccc4FFromccc4B) +_G.ccc4FFromccc4B = ccc4FFromccc4B local function ccc4FEqual(a,b) deprecatedTip("ccc4FEqual(a,b)","a:equals(b)") return a:equals(b) end -rawset(_G,"ccc4FEqual",ccc4FEqual) +_G.ccc4FEqual = ccc4FEqual --global functions wil be deprecated, end @@ -354,14 +353,14 @@ local function ccpLineIntersect(a,b,c,d,s,t) deprecatedTip("ccpLineIntersect","cc.pIsLineIntersect") return cc.pIsLineIntersect(a,b,c,d,s,t) end -rawset(_G,"ccpLineIntersect",ccpLineIntersect) +_G.ccpLineIntersect = ccpLineIntersect local function CCPointMake(x,y) deprecatedTip("CCPointMake(x,y)","cc.p(x,y)") return cc.p(x,y) -end -rawset(_G,"CCPointMake",CCPointMake) +end +_G.CCPointMake = CCPointMake @@ -369,304 +368,304 @@ local function ccpNeg(pt) deprecatedTip("ccpNeg","cc.pSub") return cc.pSub({x = 0,y = 0}, pt) end -rawset(_G,"ccpNeg",ccpNeg) +_G.ccpNeg = ccpNeg local function ccpAdd(pt1,pt2) deprecatedTip("ccpAdd","cc.pAdd") return cc.pAdd(pt1,pt2) end -rawset(_G,"ccpAdd",ccpAdd) +_G.ccpAdd = ccpAdd local function ccpSub(pt1,pt2) deprecatedTip("ccpSub","cc.pSub") return cc.pSub(pt1,pt2) end -rawset(_G,"ccpSub",ccpSub) +_G.ccpSub = ccpSub local function ccpMult(pt,factor) deprecatedTip("ccpMult","cc.pMul") return cc.pMul(pt,factor) end -rawset(_G,"ccpMult",ccpMult) +_G.ccpMult = ccpMult local function ccpMidpoint(pt1,pt2) deprecatedTip("ccpMidpoint","cc.pMidpoint") return cc.pMidpoint(pt1,pt2) end -rawset(_G,"ccpMidpoint",ccpMidpoint) +_G.ccpMidpoint = ccpMidpoint local function ccpDot(pt1,pt2) deprecatedTip("ccpDot","cc.pDot") return cc.pDot(pt1,pt2) end -rawset(_G,"ccpDot",ccpDot) +_G.ccpDot = ccpDot local function ccpCross(pt1,pt2) deprecatedTip("ccpCross","cc.pCross") return cc.pCross(pt1, pt2) end -rawset(_G,"ccpCross",ccpCross) +_G.ccpCross = ccpCross local function ccpPerp(pt) deprecatedTip("ccpPerp","cc.pPerp") return cc.pPerp(pt) end -rawset(_G,"ccpPerp",ccpPerp) +_G.ccpPerp = ccpPerp local function ccpRPerp(pt) deprecatedTip("ccpRPerp","cc.RPerp") return cc.RPerp(pt) end -rawset(_G,"ccpRPerp",ccpRPerp) +_G.ccpRPerp = ccpRPerp local function ccpProject(pt1,pt2) deprecatedTip("ccpProject","cc.pProject") return cc.pProject(pt1,pt2) end -rawset(_G,"ccpProject",ccpProject) +_G.ccpProject = ccpProject local function ccpRotate(pt1,pt2) deprecatedTip("ccpRotate","cc.pRotate") return cc.pRotate(pt1,pt2) end -rawset(_G,"ccpRotate",ccpRotate) +_G.ccpRotate = ccpRotate local function ccpUnrotate(pt1,pt2) deprecatedTip("ccpUnrotate","cc.pUnrotate") return cc.pUnrotate(pt1,pt2) end -rawset(_G,"ccpUnrotate",ccpUnrotate) +_G.ccpUnrotate = ccpUnrotate local function ccpLengthSQ(pt) deprecatedTip("ccpLengthSQ","cc.pLengthSQ") return cc.pLengthSQ(pt) end -rawset(_G,"ccpLengthSQ",ccpLengthSQ) +_G.ccpLengthSQ = ccpLengthSQ local function ccpDistanceSQ(pt1,pt2) deprecatedTip("ccpDistanceSQ","cc.pDistanceSQ") return cc.pDistanceSQ(pt1,pt2) end -rawset(_G,"ccpDistanceSQ",ccpDistanceSQ) +_G.ccpDistanceSQ = ccpDistanceSQ local function ccpLength(pt) deprecatedTip("ccpLength","cc.pGetLength") return cc.pGetLength(pt) end -rawset(_G,"ccpLength",ccpLength) +_G.ccpLength = ccpLength local function ccpDistance(pt1,pt2) deprecatedTip("ccpDistance","cc.pGetDistance") return cc.pGetDistance(pt1, pt2) end -rawset(_G,"ccpDistance",ccpDistance) +_G.ccpDistance = ccpDistance local function ccpNormalize(pt) deprecatedTip("ccpNormalize","cc.pNormalize") return cc.pNormalize(pt) end -rawset(_G,"ccpNormalize",ccpNormalize) +_G.ccpNormalize = ccpNormalize local function ccpForAngle(angle) deprecatedTip("ccpForAngle","cc.pForAngle") return cc.pForAngle(angle) end -rawset(_G,"ccpForAngle",ccpForAngle) +_G.ccpForAngle = ccpForAngle local function ccpToAngle(pt) deprecatedTip("ccpToAngle","cc.pToAngleSelf") return cc.pToAngleSelf(pt) end -rawset(_G,"ccpToAngle",ccpToAngle) +_G.ccpToAngle = ccpToAngle local function ccpClamp(pt1,pt2,pt3) deprecatedTip("ccpClamp","cc.pGetClampPoint") return cc.pGetClampPoint(pt1,pt2,pt3) end -rawset(_G,"ccpClamp",ccpClamp) +_G.ccpClamp = ccpClamp local function ccpFromSize(sz) deprecatedTip("ccpFromSize(sz)","cc.pFromSize") return cc.pFromSize(sz) end -rawset(_G,"ccpFromSize",ccpFromSize) +_G.ccpFromSize = ccpFromSize local function ccpLerp(pt1,pt2,alpha) deprecatedTip("ccpLerp","cc.pLerp") - return cc.pLerp(pt1,pt2,alpha) + return cc.pLerp(pt1,pt2,alpha) end -rawset(_G,"ccpLerp",ccpLerp) +_G.ccpLerp = ccpLerp local function ccpFuzzyEqual(pt1,pt2,variance) deprecatedTip("ccpFuzzyEqual","cc.pFuzzyEqual") return cc.pFuzzyEqual(pt1,pt2,variance) end -rawset(_G,"ccpFuzzyEqual",ccpFuzzyEqual) +_G.ccpFuzzyEqual = ccpFuzzyEqual local function ccpCompMult(pt1,pt2) deprecatedTip("ccpCompMult","cc.p") return cc.p(pt1.x * pt2.x , pt1.y * pt2.y) end -rawset(_G,"ccpCompMult",ccpCompMult) +_G.ccpCompMult = ccpCompMult local function ccpAngleSigned(pt1,pt2) deprecatedTip("ccpAngleSigned","cc.pGetAngle") return cc.pGetAngle(pt1, pt2) end -rawset(_G,"ccpAngleSigned",ccpAngleSigned) +_G.ccpAngleSigned = ccpAngleSigned local function ccpAngle(pt1,pt2) deprecatedTip("ccpAngle","cc.pGetAngle") return cc.pGetAngle(pt1,ptw) end -rawset(_G,"ccpAngle",ccpAngle) +_G.ccpAngle = ccpAngle local function ccpRotateByAngle(pt1,pt2,angle) deprecatedTip("ccpRotateByAngle","cc.pRotateByAngle") return cc.pRotateByAngle(pt1, pt2, angle) end -rawset(_G,"ccpRotateByAngle",ccpRotateByAngle) +_G.ccpRotateByAngle = ccpRotateByAngle local function ccpSegmentIntersect(pt1,pt2,pt3,pt4) deprecatedTip("ccpSegmentIntersect","cc.pIsSegmentIntersect") return cc.pIsSegmentIntersect(pt1,pt2,pt3,pt4) end -rawset(_G,"ccpSegmentIntersect",ccpSegmentIntersect) +_G.ccpSegmentIntersect = ccpSegmentIntersect local function ccpIntersectPoint(pt1,pt2,pt3,pt4) deprecatedTip("ccpIntersectPoint","cc.pGetIntersectPoint") return cc.pGetIntersectPoint(pt1,pt2,pt3,pt4) end -rawset(_G,"ccpIntersectPoint",ccpIntersectPoint) +_G.ccpIntersectPoint = ccpIntersectPoint local function vertex2(x,y) deprecatedTip("vertex2(x,y)","cc.vertex2F(x,y)") return cc.vertex2F(x,y) end -rawset(_G,"vertex2",vertex2) +_G.vertex2 = vertex2 local function vertex3(x,y,z) deprecatedTip("vertex3(x,y,z)","cc.Vertex3F(x,y,z)") return cc.Vertex3F(x,y,z) end -rawset(_G,"vertex3",vertex3) +_G.vertex3 = vertex3 local function tex2(u,v) deprecatedTip("tex2(u,v)","cc.tex2f(u,v)") return cc.tex2f(u,v) end -rawset(_G,"tex2",tex2) +_G.tex2 = tex2 local function ccc4BFromccc4F(color4F) deprecatedTip("ccc4BFromccc4F(color4F)","Color4B(color4F.r * 255.0, color4F.g * 255.0, color4F.b * 255.0, color4B.a * 255.0)") - return Color4B(color4F.r * 255.0, color4F.g * 255.0, color4F.b * 255.0, color4B.a * 255.0) + return Color4B(color4F.r * 255.0, color4F.g * 255.0, color4F.b * 255.0, color4B.a * 255.0) end -rawset(_G,"ccc4BFromccc4F",ccc4BFromccc4F) +_G.ccc4BFromccc4F = ccc4BFromccc4F local function ccColor3BDeprecated() deprecatedTip("ccColor3B","cc.c3b(0,0,0)") return cc.c3b(0,0,0) end -_G["ccColor3B"] = ccColor3BDeprecated +_G.ccColor3B = ccColor3BDeprecated local function ccColor4BDeprecated() deprecatedTip("ccColor4B","cc.c4b(0,0,0,0)") return cc.c4b(0,0,0,0) end -_G["ccColor4B"] = ccColor4BDeprecated +_G.ccColor4B = ccColor4BDeprecated local function ccColor4FDeprecated() deprecatedTip("ccColor4F","cc.c4f(0.0,0.0,0.0,0.0)") return cc.c4f(0.0,0.0,0.0,0.0) end -_G["ccColor4F"] = ccColor4FDeprecated +_G.ccColor4F = ccColor4FDeprecated local function ccVertex2FDeprecated() deprecatedTip("ccVertex2F","cc.vertex2F(0.0,0.0)") return cc.vertex2F(0.0,0.0) end -_G["ccVertex2F"] = ccVertex2FDeprecated +_G.ccVertex2F = ccVertex2FDeprecated local function ccVertex3FDeprecated() deprecatedTip("ccVertex3F","cc.Vertex3F(0.0, 0.0, 0.0)") return cc.Vertex3F(0.0, 0.0, 0.0) end -_G["ccVertex3F"] = ccVertex3FDeprecated +_G.ccVertex3F = ccVertex3FDeprecated local function ccTex2FDeprecated() deprecatedTip("ccTex2F","cc.tex2F(0.0, 0.0)") return cc.tex2F(0.0, 0.0) end -_G["ccTex2F"] = ccTex2FDeprecated +_G.ccTex2F = ccTex2FDeprecated local function ccPointSpriteDeprecated() deprecatedTip("ccPointSprite","cc.PointSprite(cc.vertex2F(0.0, 0.0),cc.c4b(0.0, 0.0, 0.0),0)") return cc.PointSprite(cc.vertex2F(0.0, 0.0),cc.c4b(0.0, 0.0, 0.0),0) end -_G["ccPointSprite"] = ccPointSpriteDeprecated +_G.ccPointSprite = ccPointSpriteDeprecated local function ccQuad2Deprecated() deprecatedTip("ccQuad2","cc.Quad2(cc.vertex2F(0.0, 0.0), cc.vertex2F(0.0, 0.0), cc.vertex2F(0.0, 0.0), cc.vertex2F(0.0, 0.0))") return cc.Quad2(cc.vertex2F(0.0, 0.0), cc.vertex2F(0.0, 0.0), cc.vertex2F(0.0, 0.0), cc.vertex2F(0.0, 0.0)) end -_G["ccQuad2"] = ccQuad2Deprecated +_G.ccQuad2 = ccQuad2Deprecated local function ccQuad3Deprecated() deprecatedTip("ccQuad3","cc.Quad3(cc.Vertex3F(0.0, 0.0 ,0.0), cc.Vertex3F(0.0, 0.0 ,0.0), cc.Vertex3F(0.0, 0.0 ,0.0), cc.Vertex3F(0.0, 0.0 ,0.0))") return cc.Quad3(cc.Vertex3F(0.0, 0.0 ,0.0), cc.Vertex3F(0.0, 0.0 ,0.0), cc.Vertex3F(0.0, 0.0 ,0.0), cc.Vertex3F(0.0, 0.0 ,0.0)) end -_G["ccQuad3"] = ccQuad3Deprecated +_G.ccQuad3 = ccQuad3Deprecated local function ccV2FC4BT2FDeprecated() deprecatedTip("ccV2F_C4B_T2F","cc.V2F_C4B_T2F(cc.vertex2F(0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0))") return cc.V2F_C4B_T2F(cc.vertex2F(0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0)) end -_G["ccV2F_C4B_T2F"] = ccV2FC4BT2FDeprecated +_G.ccV2F_C4B_T2F = ccV2FC4BT2FDeprecated local function ccV2FC4FT2FDeprecated() deprecatedTip("ccV2F_C4F_T2F","cc.V2F_C4F_T2F(cc.vertex2F(0.0, 0.0), cc.c4f(0.0 , 0.0 , 0.0 , 0.0 ), cc.tex2F(0.0, 0.0))") return cc.V2F_C4F_T2F(cc.vertex2F(0.0, 0.0), cc.c4f(0.0 , 0.0 , 0.0 , 0.0), cc.tex2F(0.0, 0.0)) end -_G["ccV2F_C4F_T2F"] = ccV2FC4FT2FDeprecated +_G.ccV2F_C4F_T2F = ccV2FC4FT2FDeprecated local function ccV3FC4BT2FDeprecated() deprecatedTip("ccV3F_C4B_T2F","cc.V3F_C4B_T2F(cc.vertex3F(0.0, 0.0, 0.0), cc.c4b(0 , 0 , 0, 0 ), cc.tex2F(0.0, 0.0))") return cc.V3F_C4B_T2F(cc.vertex3F(0.0, 0.0, 0.0), cc.c4b(0 , 0 , 0, 0 ), cc.tex2F(0.0, 0.0)) end -_G["ccV3F_C4B_T2F"] = ccV3FC4BT2FDeprecated +_G.ccV3F_C4B_T2F = ccV3FC4BT2FDeprecated local function ccV2FC4BT2FQuadDeprecated() deprecatedTip("ccV2F_C4B_T2F_Quad","cc.V2F_C4B_T2F_Quad(cc.V2F_C4B_T2F(cc.vertex2F(0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0)), cc.V2F_C4B_T2F(cc.vertex2F(0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0)), cc.V2F_C4B_T2F(cc.vertex2F(0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0)), cc.V2F_C4B_T2F(cc.vertex2F(0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0)))") return cc.V2F_C4B_T2F_Quad(cc.V2F_C4B_T2F(cc.vertex2F(0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0)), cc.V2F_C4B_T2F(cc.vertex2F(0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0)), cc.V2F_C4B_T2F(cc.vertex2F(0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0)), cc.V2F_C4B_T2F(cc.vertex2F(0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0))) end -_G["ccV2F_C4B_T2F_Quad"] = ccV2FC4BT2FQuadDeprecated +_G.ccV2F_C4B_T2F_Quad = ccV2FC4BT2FQuadDeprecated local function ccV3FC4BT2FQuadDeprecated() deprecatedTip("ccV3F_C4B_T2F_Quad","cc.V3F_C4B_T2F_Quad(_tl, _bl, _tr, _br)") return cc.V3F_C4B_T2F_Quad(cc.V3F_C4B_T2F(cc.vertex3F(0.0, 0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0)), cc.V3F_C4B_T2F(cc.vertex3F(0.0, 0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0)), cc.V3F_C4B_T2F(cc.vertex3F(0.0, 0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0)), cc.V3F_C4B_T2F(cc.vertex3F(0.0, 0.0, 0.0), cc.c4b(0 , 0, 0, 0 ), cc.tex2F(0.0, 0.0))) end -_G["ccV3F_C4B_T2F_Quad"] = ccV3FC4BT2FQuadDeprecated +_G.ccV3F_C4B_T2F_Quad = ccV3FC4BT2FQuadDeprecated local function ccV2FC4FT2FQuadDeprecated() deprecatedTip("ccV2F_C4F_T2F_Quad","cc.V2F_C4F_T2F_Quad(_bl, _br, _tl, _tr)") return cc.V2F_C4F_T2F_Quad(cc.V2F_C4F_T2F(cc.vertex2F(0.0, 0.0), cc.c4f(0.0 , 0.0, 0.0, 0.0 ), cc.tex2F(0.0, 0.0)), cc.V2F_C4F_T2F(cc.vertex2F(0.0, 0.0), cc.c4f(0.0 , 0.0, 0.0, 0.0 ), cc.tex2F(0.0, 0.0)), cc.V3F_C4B_T2F(cc.vertex2F(0.0, 0.0), cc.c4f(0.0 , 0.0, 0.0, 0.0 ), cc.tex2F(0.0, 0.0)), cc.V2F_C4F_T2F(cc.vertex2F(0.0, 0.0), cc.c4f(0.0 , 0.0, 0.0, 0.0 ), cc.tex2F(0.0, 0.0))) end -_G["ccV2F_C4F_T2F_Quad"] = ccV2FC4FT2FQuadDeprecated +_G.ccV2F_C4F_T2F_Quad = ccV2FC4FT2FQuadDeprecated local function ccT2FQuadDeprecated() deprecatedTip("ccT2F_Quad","cc.T2F_Quad(_bl, _br, _tl, _tr)") return cc.T2F_Quad(cc.tex2F(0.0,0.0), cc.tex2F(0.0,0.0), cc.tex2F(0.0,0.0), cc.tex2F(0.0,0.0)) end -_G["ccT2F_Quad"] = ccT2FQuadDeprecated +_G.ccT2F_Quad = ccT2FQuadDeprecated local function ccAnimationFrameDataDeprecated() deprecatedTip("ccAnimationFrameData","cc.AnimationFrameData( _texCoords, _delay, _size)") return cc.AnimationFrameData(cc.T2F_Quad(cc.tex2F(0.0,0.0), cc.tex2F(0.0,0.0), cc.tex2F(0.0,0.0), cc.tex2F(0.0,0.0)), 0, cc.size(0,0)) end -_G["ccAnimationFrameData"] = ccAnimationFrameDataDeprecated +_G.ccAnimationFrameData = ccAnimationFrameDataDeprecated @@ -674,7 +673,7 @@ local function tex2(u,v) deprecatedTip("tex2(u,v)","cc.tex2f(u,v)") return cc.tex2f(u,v) end -rawset(_G,"tex2",tex2) +_G.tex2 = tex2 --functions of CCApplication will be deprecated end @@ -683,7 +682,7 @@ function CCApplicationDeprecated.sharedApplication() deprecatedTip("CCApplication:sharedApplication","CCApplication:getInstance") return CCApplication:getInstance() end -rawset(CCApplication,"sharedApplication",CCApplicationDeprecated.sharedApplication) +CCApplication.sharedApplication = CCApplicationDeprecated.sharedApplication --functions of CCApplication will be deprecated end @@ -693,7 +692,7 @@ function CCDirectorDeprecated.sharedDirector() deprecatedTip("CCDirector:sharedDirector","CCDirector:getInstance") return CCDirector:getInstance() end -rawset(CCDirector,"sharedDirector",CCDirectorDeprecated.sharedDirector) +CCDirector.sharedDirector = CCDirectorDeprecated.sharedDirector --functions of CCDirector will be deprecated end @@ -703,13 +702,13 @@ function CCUserDefaultDeprecated.sharedUserDefault() deprecatedTip("CCUserDefault:sharedUserDefault","CCUserDefault:getInstance") return CCUserDefault:getInstance() end -rawset(CCUserDefault,"sharedUserDefault",CCUserDefaultDeprecated.sharedUserDefault) +CCUserDefault.sharedUserDefault = CCUserDefaultDeprecated.sharedUserDefault function CCUserDefaultDeprecated.purgeSharedUserDefault() deprecatedTip("CCUserDefault:purgeSharedUserDefault","CCUserDefault:destroyInstance") return CCUserDefault:destroyInstance() end -rawset(CCUserDefault,"purgeSharedUserDefault",CCUserDefaultDeprecated.purgeSharedUserDefault) +CCUserDefault.purgeSharedUserDefault = CCUserDefaultDeprecated.purgeSharedUserDefault --functions of CCUserDefault will be deprecated end --functions of CCGrid3DAction will be deprecated begin @@ -718,13 +717,13 @@ function CCGrid3DActionDeprecated.vertex(self,pt) deprecatedTip("vertex","CCGrid3DAction:getVertex") return self:getVertex(pt) end -rawset(CCGrid3DAction,"vertex",CCGrid3DActionDeprecated.vertex) +CCGrid3DAction.vertex = CCGrid3DActionDeprecated.vertex function CCGrid3DActionDeprecated.originalVertex(self,pt) deprecatedTip("originalVertex","CCGrid3DAction:getOriginalVertex") return self:getOriginalVertex(pt) end -rawset(CCGrid3DAction,"originalVertex",CCGrid3DActionDeprecated.originalVertex) +CCGrid3DAction.originalVertex = CCGrid3DActionDeprecated.originalVertex --functions of CCGrid3DAction will be deprecated end @@ -734,13 +733,13 @@ function CCTiledGrid3DActionDeprecated.tile(self,pt) deprecatedTip("tile","CCTiledGrid3DAction:getTile") return self:getTile(pt) end -rawset(CCTiledGrid3DAction,"tile",CCTiledGrid3DActionDeprecated.tile) +CCTiledGrid3DAction.tile = CCTiledGrid3DActionDeprecated.tile function CCTiledGrid3DActionDeprecated.originalTile(self,pt) deprecatedTip("originalTile","CCTiledGrid3DAction:getOriginalTile") return self:getOriginalTile(pt) end -rawset(CCTiledGrid3DAction,"originalTile",CCTiledGrid3DActionDeprecated.originalTile) +CCTiledGrid3DAction.originalTile = CCTiledGrid3DActionDeprecated.originalTile --functions of CCTiledGrid3DAction will be deprecated end @@ -750,25 +749,25 @@ function CCTexture2DDeprecated.stringForFormat(self) deprecatedTip("Texture2D:stringForFormat","Texture2D:getStringForFormat") return self:getStringForFormat() end -rawset(CCTexture2D,"stringForFormat",CCTexture2DDeprecated.stringForFormat) +CCTexture2D.stringForFormat = CCTexture2DDeprecated.stringForFormat function CCTexture2DDeprecated.bitsPerPixelForFormat(self) deprecatedTip("Texture2D:bitsPerPixelForFormat","Texture2D:getBitsPerPixelForFormat") return self:getBitsPerPixelForFormat() end -rawset(CCTexture2D,"bitsPerPixelForFormat",CCTexture2DDeprecated.bitsPerPixelForFormat) +CCTexture2D.bitsPerPixelForFormat = CCTexture2DDeprecated.bitsPerPixelForFormat function CCTexture2DDeprecated.bitsPerPixelForFormat(self,pixelFormat) deprecatedTip("Texture2D:bitsPerPixelForFormat","Texture2D:getBitsPerPixelForFormat") return self:getBitsPerPixelForFormat(pixelFormat) end -rawset(CCTexture2D,"bitsPerPixelForFormat",CCTexture2DDeprecated.bitsPerPixelForFormat) +CCTexture2D.bitsPerPixelForFormat = CCTexture2DDeprecated.bitsPerPixelForFormat function CCTexture2DDeprecated.defaultAlphaPixelFormat(self) deprecatedTip("Texture2D:defaultAlphaPixelFormat","Texture2D:getDefaultAlphaPixelFormat") return self:getDefaultAlphaPixelFormat() end -rawset(CCTexture2D,"defaultAlphaPixelFormat",CCTexture2DDeprecated.defaultAlphaPixelFormat) +CCTexture2D.defaultAlphaPixelFormat = CCTexture2DDeprecated.defaultAlphaPixelFormat --functions of CCTexture2D will be deprecated end @@ -778,13 +777,13 @@ function CCTimerDeprecated.timerWithScriptHandler(handler,seconds) deprecatedTip("CCTimer:timerWithScriptHandler","CCTimer:createWithScriptHandler") return CCTimer:createWithScriptHandler(handler,seconds) end -rawset(CCTimer,"timerWithScriptHandler",CCTimerDeprecated.timerWithScriptHandler) +CCTimer.timerWithScriptHandler = CCTimerDeprecated.timerWithScriptHandler function CCTimerDeprecated.numberOfRunningActionsInTarget(self,target) deprecatedTip("CCActionManager:numberOfRunningActionsInTarget","CCActionManager:getNumberOfRunningActionsInTarget") return self:getNumberOfRunningActionsInTarget(target) end -rawset(CCTimer,"numberOfRunningActionsInTarget",CCTimerDeprecated.numberOfRunningActionsInTarget) +CCTimer.numberOfRunningActionsInTarget = CCTimerDeprecated.numberOfRunningActionsInTarget --functions of CCTimer will be deprecated end @@ -794,25 +793,25 @@ function CCMenuItemFontDeprecated.fontSize() deprecatedTip("CCMenuItemFont:fontSize","CCMenuItemFont:getFontSize") return CCMenuItemFont:getFontSize() end -rawset(CCMenuItemFont,"fontSize",CCMenuItemFontDeprecated.fontSize) +CCMenuItemFont.fontSize = CCMenuItemFontDeprecated.fontSize function CCMenuItemFontDeprecated.fontName() deprecatedTip("CCMenuItemFont:fontName","CCMenuItemFont:getFontName") return CCMenuItemFont:getFontName() end -rawset(CCMenuItemFont,"fontName",CCMenuItemFontDeprecated.fontName) +CCMenuItemFont.fontName = CCMenuItemFontDeprecated.fontName function CCMenuItemFontDeprecated.fontSizeObj(self) deprecatedTip("CCMenuItemFont:fontSizeObj","CCMenuItemFont:getFontSizeObj") return self:getFontSizeObj() end -rawset(CCMenuItemFont,"fontSizeObj",CCMenuItemFontDeprecated.fontSizeObj) +CCMenuItemFont.fontSizeObj = CCMenuItemFontDeprecated.fontSizeObj function CCMenuItemFontDeprecated.fontNameObj(self) deprecatedTip("CCMenuItemFont:fontNameObj","CCMenuItemFont:getFontNameObj") return self:getFontNameObj() end -rawset(CCMenuItemFont,"fontNameObj",CCMenuItemFontDeprecated.fontNameObj) +CCMenuItemFont.fontNameObj = CCMenuItemFontDeprecated.fontNameObj --functions of CCMenuItemFont will be deprecated end @@ -822,7 +821,7 @@ function CCMenuItemToggleDeprecated.selectedItem(self) deprecatedTip("CCMenuItemToggle:selectedItem","CCMenuItemToggle:getSelectedItem") return self:getSelectedItem() end -rawset(CCMenuItemToggle,"selectedItem",CCMenuItemToggleDeprecated.selectedItem) +CCMenuItemToggle.selectedItem = CCMenuItemToggleDeprecated.selectedItem --functions of CCMenuItemToggle will be deprecated end @@ -832,7 +831,7 @@ function CCTileMapAtlasDeprecated.tileAt(self,pos) deprecatedTip("CCTileMapAtlas:tileAt","CCTileMapAtlas:getTileAt") return self:getTileAt(pos) end -rawset(CCTileMapAtlas,"tileAt",CCTileMapAtlasDeprecated.tileAt) +CCTileMapAtlas.tileAt = CCTileMapAtlasDeprecated.tileAt --functions of CCTileMapAtlas will be deprecated end @@ -842,25 +841,25 @@ function CCTMXLayerDeprecated.tileAt(self,tileCoordinate) deprecatedTip("CCTMXLayer:tileAt","CCTMXLayer:getTileAt") return self:getTileAt(tileCoordinate) end -rawset(CCTMXLayer,"tileAt",CCTMXLayerDeprecated.tileAt) +CCTMXLayer.tileAt = CCTMXLayerDeprecated.tileAt function CCTMXLayerDeprecated.tileGIDAt(self,tileCoordinate) deprecatedTip("CCTMXLayer:tileGIDAt","CCTMXLayer:getTileGIDAt") return self:getTileGIDAt(tileCoordinate) end -rawset(CCTMXLayer,"tileGIDAt",CCTMXLayerDeprecated.tileGIDAt) +CCTMXLayer.tileGIDAt = CCTMXLayerDeprecated.tileGIDAt function CCTMXLayerDeprecated.positionAt(self,tileCoordinate) deprecatedTip("CCTMXLayer:positionAt","CCTMXLayer:getPositionAt") return self:getPositionAt(tileCoordinate) end -rawset(CCTMXLayer,"positionAt",CCTMXLayerDeprecated.positionAt) +CCTMXLayer.positionAt = CCTMXLayerDeprecated.positionAt function CCTMXLayerDeprecated.propertyNamed(self,propertyName) deprecatedTip("CCTMXLayer:propertyNamed","CCTMXLayer:getProperty") return self:getProperty(propertyName) end -rawset(CCTMXLayer,"propertyNamed",CCTMXLayerDeprecated.propertyNamed) +CCTMXLayer.propertyNamed = CCTMXLayerDeprecated.propertyNamed --functions of CCTMXLayer will be deprecated end --functions of CCTMXTiledMap will be deprecated begin @@ -869,25 +868,25 @@ function CCTMXTiledMapDeprecated.layerNamed(self,layerName) deprecatedTip("CCTMXTiledMap:layerNamed","CCTMXTiledMap:getLayer") return self:getLayer(layerName) end -rawset(CCTMXTiledMap,"layerNamed", CCTMXTiledMapDeprecated.layerNamed) +CCTMXTiledMap.layerNamed = CCTMXTiledMapDeprecated.layerNamed function CCTMXTiledMapDeprecated.propertyNamed(self,propertyName) deprecatedTip("CCTMXTiledMap:propertyNamed","CCTMXTiledMap:getProperty") return self:getProperty(propertyName) end -rawset(CCTMXTiledMap,"propertyNamed", CCTMXTiledMapDeprecated.propertyNamed ) +CCTMXTiledMap.propertyNamed = CCTMXTiledMapDeprecated.propertyNamed function CCTMXTiledMapDeprecated.propertiesForGID(self,GID) deprecatedTip("CCTMXTiledMap:propertiesForGID","CCTMXTiledMap:getPropertiesForGID") return self:getPropertiesForGID(GID) end -rawset(CCTMXTiledMap,"propertiesForGID", CCTMXTiledMapDeprecated.propertiesForGID) +CCTMXTiledMap.propertiesForGID = CCTMXTiledMapDeprecated.propertiesForGID function CCTMXTiledMapDeprecated.objectGroupNamed(self,groupName) deprecatedTip("CCTMXTiledMap:objectGroupNamed","CCTMXTiledMap:getObjectGroup") return self:getObjectGroup(groupName) end -rawset(CCTMXTiledMap,"objectGroupNamed", CCTMXTiledMapDeprecated.objectGroupNamed) +CCTMXTiledMap.objectGroupNamed = CCTMXTiledMapDeprecated.objectGroupNamed --functions of CCTMXTiledMap will be deprecated end @@ -897,19 +896,19 @@ function CCTMXMapInfoDeprecated.getStoringCharacters(self) deprecatedTip("CCTMXMapInfo:getStoringCharacters","CCTMXMapInfo:isStoringCharacters") return self:isStoringCharacters() end -rawset(CCTMXMapInfo,"getStoringCharacters", CCTMXMapInfoDeprecated.getStoringCharacters) +CCTMXMapInfo.getStoringCharacters = CCTMXMapInfoDeprecated.getStoringCharacters function CCTMXMapInfoDeprecated.formatWithTMXFile(infoTable,tmxFile) deprecatedTip("CCTMXMapInfo:formatWithTMXFile","CCTMXMapInfo:create") return CCTMXMapInfo:create(tmxFile) end -rawset(CCTMXMapInfo,"formatWithTMXFile", CCTMXMapInfoDeprecated.formatWithTMXFile) +CCTMXMapInfo.formatWithTMXFile = CCTMXMapInfoDeprecated.formatWithTMXFile function CCTMXMapInfoDeprecated.formatWithXML(infoTable,tmxString,resourcePath) deprecatedTip("CCTMXMapInfo:formatWithXML","TMXMapInfo:createWithXML") return CCTMXMapInfo:createWithXML(tmxString,resourcePath) end -rawset(CCTMXMapInfo,"formatWithXML", CCTMXMapInfoDeprecated.formatWithXML) +CCTMXMapInfo.formatWithXML = CCTMXMapInfoDeprecated.formatWithXML --functions of CCTMXMapInfo will be deprecated end @@ -919,13 +918,13 @@ function CCTMXObjectGroupDeprecated.propertyNamed(self,propertyName) deprecatedTip("CCTMXObjectGroup:propertyNamed","CCTMXObjectGroup:getProperty") return self:getProperty(propertyName) end -rawset(CCTMXObjectGroup,"propertyNamed", CCTMXObjectGroupDeprecated.propertyNamed) +CCTMXObjectGroup.propertyNamed = CCTMXObjectGroupDeprecated.propertyNamed function CCTMXObjectGroupDeprecated.objectNamed(self, objectName) deprecatedTip("CCTMXObjectGroup:objectNamed","CCTMXObjectGroup:getObject") return self:getObject(objectName) end -rawset(CCTMXObjectGroup,"objectNamed", CCTMXObjectGroupDeprecated.objectNamed) +CCTMXObjectGroup.objectNamed = CCTMXObjectGroupDeprecated.objectNamed --functions of CCTMXObject will be deprecated end --functions of CCRenderTexture will be deprecated begin @@ -934,7 +933,7 @@ function CCRenderTextureDeprecated.newCCImage(self) deprecatedTip("CCRenderTexture:newCCImage","CCRenderTexture:newImage") return self:newImage() end -rawset(CCRenderTexture, "newCCImage", CCRenderTextureDeprecated.newCCImage) +CCRenderTexture.newCCImage = CCRenderTextureDeprecated.newCCImage --functions of CCRenderTexture will be deprecated end --functions of Sprite will be deprecated begin @@ -943,13 +942,13 @@ function CCSpriteDeprecated.setFlipX(self,flag) deprecatedTip("CCSpriteDeprecated:setFlipX","CCSpriteDeprecated:setFlippedX") return self:setFlippedX(flag) end -rawset(cc.Sprite, "setFlipX", CCSpriteDeprecated.setFlipX) +cc.Sprite.setFlipX = CCSpriteDeprecated.setFlipX function CCSpriteDeprecated.setFlipY(self,flag) deprecatedTip("CCSpriteDeprecated:setFlipY","CCSpriteDeprecated:setFlippedY") return self:setFlippedY(flag) end -rawset(cc.Sprite, "setFlipY", CCSpriteDeprecated.setFlipY) +cc.Sprite.setFlipY = CCSpriteDeprecated.setFlipY --functions of Sprite will be deprecated end @@ -958,12 +957,12 @@ local CCLayerDeprecated = {} function CCLayerDeprecated.setKeypadEnabled( self, enabled) return self:setKeyboardEnabled(enabled) end -rawset(cc.Layer, "setKeypadEnabled", CCLayerDeprecated.setKeypadEnabled ) +cc.Layer.setKeypadEnabled = CCLayerDeprecated.setKeypadEnabled function CCLayerDeprecated.isKeypadEnabled(self) return self:isKeyboardEnabled() end -rawset(cc.Layer, "isKeypadEnabled", CCLayerDeprecated.isKeypadEnabled ) +cc.Layer.isKeypadEnabled = CCLayerDeprecated.isKeypadEnabled --functions of Layer will be deprecated end --functions of cc.Node will be deprecated begin @@ -972,25 +971,25 @@ function NodeDeprecated.setZOrder(self,zOrder) deprecatedTip("cc.Node:setZOrder","cc.Node:setLocalZOrder") return self:setLocalZOrder(zOrder) end -rawset(cc.Node,"setZOrder",NodeDeprecated.setZOrder) +cc.Node.setZOrder = NodeDeprecated.setZOrder function NodeDeprecated.getZOrder(self) deprecatedTip("cc.Node:getZOrder","cc.Node:getLocalZOrder") return self:getLocalZOrder() end -rawset(cc.Node,"getZOrder",NodeDeprecated.getZOrder) +cc.Node.getZOrder = NodeDeprecated.getZOrder function NodeDeprecated.setVertexZ(self,vertexZ) deprecatedTip("cc.Node:setVertexZ", "cc.Node:setPositionZ") return self:setPositionZ(vertexZ) end -rawset(cc.Node,"setVertexZ",NodeDeprecated.setVertexZ) +cc.Node.setVertexZ = NodeDeprecated.setVertexZ function NodeDeprecated.getVertexZ(self) deprecatedTip("cc.Node:getVertexZ", "cc.Node:getPositionZ") return self:getPositionZ() end -rawset(cc.Node, "getVertexZ", NodeDeprecated.getVertexZ) +cc.Node.getVertexZ = NodeDeprecated.getVertexZ --functions of cc.Node will be deprecated end --functions of cc.GLProgram will be deprecated begin @@ -999,17 +998,17 @@ function GLProgram.initWithVertexShaderByteArray(self,vShaderByteArray, fShaderB deprecatedTip("cc.GLProgram:initWithVertexShaderByteArray","cc.GLProgram:initWithByteArrays") return self:initWithByteArrays(vShaderByteArray, fShaderByteArray) end -rawset(cc.GLProgram,"initWithVertexShaderByteArray", GLProgram.initWithVertexShaderByteArray) +cc.GLProgram.initWithVertexShaderByteArray = GLProgram.initWithVertexShaderByteArray function GLProgram.initWithVertexShaderFilename(self,vShaderByteArray, fShaderByteArray) deprecatedTip("cc.GLProgram:initWithVertexShaderFilename","cc.GLProgram:initWithFilenames") return self:initWithFilenames(vShaderByteArray, fShaderByteArray) end -rawset(cc.GLProgram,"initWithVertexShaderFilename", GLProgram.initWithVertexShaderFilename) +cc.GLProgram.initWithVertexShaderFilename = GLProgram.initWithVertexShaderFilename function GLProgram.addAttribute(self, attributeName, index) deprecatedTip("cc.GLProgram:addAttribute","cc.GLProgram:bindAttribLocation") return self:bindAttribLocation(attributeName, index) end -rawset(cc.GLProgram,"addAttribute", GLProgram.addAttribute) +cc.GLProgram.addAttribute = GLProgram.addAttribute --functions of cc.GLProgram will be deprecated end diff --git a/cocos/scripting/lua-bindings/script/cocos2d/DrawPrimitives.lua b/cocos/scripting/lua-bindings/script/cocos2d/DrawPrimitives.lua index 1171947577..5d594cf9df 100644 --- a/cocos/scripting/lua-bindings/script/cocos2d/DrawPrimitives.lua +++ b/cocos/scripting/lua-bindings/script/cocos2d/DrawPrimitives.lua @@ -1,3 +1,4 @@ + local dp_initialized = false local dp_shader = nil local dp_colorLocation = -1 @@ -31,7 +32,7 @@ end local function setDrawProperty() gl.glEnableVertexAttribs( CCConstants.VERTEX_ATTRIB_FLAG_POSITION ) dp_shader:use() - dp_shader:setUniformsForBuiltins() + dp_shader:setUniformsForBuiltins() dp_shader:setUniformLocationWith4fv(dp_colorLocation, dp_color, 1) end @@ -204,7 +205,7 @@ function ccDrawSolidPoly(points,numOfPoints,color) gl.glEnableVertexAttribs( CCConstants.VERTEX_ATTRIB_FLAG_POSITION ) dp_shader:use() - dp_shader:setUniformsForBuiltins() + dp_shader:setUniformsForBuiltins() dp_shader:setUniformLocationWith4fv(dp_colorLocation, color, 1) gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer.buffer_id) @@ -316,7 +317,7 @@ function ccDrawQuadBezier(origin, control, destination, segments) local vertexBuffer = { } local function initBuffer() - local vertices = { } + local vertices = { } local i = 1 local t = 0.0 @@ -325,7 +326,7 @@ function ccDrawQuadBezier(origin, control, destination, segments) vertices[2 * i] = math.pow(1 - t,2) * origin.y + 2.0 * (1 - t) * t * control.y + t * t * destination.y t = t + 1.0 / segments end - + vertices[2 * (segments + 1) - 1] = destination.x vertices[2 * (segments + 1)] = destination.y @@ -353,7 +354,7 @@ function ccDrawCubicBezier(origin, control1, control2, destination, segments) local vertexBuffer = { } local function initBuffer() - local vertices = { } + local vertices = { } local t = 0 local i = 1 diff --git a/cocos/scripting/lua-bindings/script/cocos2d/Opengl.lua b/cocos/scripting/lua-bindings/script/cocos2d/Opengl.lua index 4f70703093..74655234e8 100644 --- a/cocos/scripting/lua-bindings/script/cocos2d/Opengl.lua +++ b/cocos/scripting/lua-bindings/script/cocos2d/Opengl.lua @@ -1,6 +1,5 @@ -require "OpenglConstants" -gl = gl or {} +if not gl then return end --Create functions function gl.createTexture() @@ -112,7 +111,7 @@ function gl.bindTexture(target, texture) end gl._bindTexture(target,texture_id) -end +end function gl.bindBuffer( target,buffer ) local buffer_id = 0 @@ -211,7 +210,7 @@ function gl.linkProgram( program ) gl._linkProgram(program_id) end -function gl.getProgramParameter(program, e) +function gl.getProgramParameter(program, e) local program_id = 0 if "number" == type(program) then @@ -296,4 +295,3 @@ end function gl.glNodeCreate() return cc.GLNode:create() end - diff --git a/cocos/scripting/lua-bindings/script/cocos2d/OpenglConstants.lua b/cocos/scripting/lua-bindings/script/cocos2d/OpenglConstants.lua index 858d30a1cf..15adb23749 100644 --- a/cocos/scripting/lua-bindings/script/cocos2d/OpenglConstants.lua +++ b/cocos/scripting/lua-bindings/script/cocos2d/OpenglConstants.lua @@ -1,5 +1,5 @@ ---Encapsulate opengl constants. -gl = gl or {} + +if not gl then return end gl.GCCSO_SHADER_BINARY_FJ = 0x9260 gl._3DC_XY_AMD = 0x87fa @@ -822,3 +822,5 @@ gl.WRITEONLY_RENDERING_QCOM = 0x8823 gl.WRITE_ONLY_OES = 0x88b9 gl.Z400_BINARY_AMD = 0x8740 gl.ZERO = 0x0 +gl.VERTEX_ATTRIB_POINTER_VEC3 = 0 +gl.VERTEX_ATTRIB_POINTER_COLOR4B = 1 diff --git a/cocos/scripting/lua-bindings/script/cocos2d/bitExtend.lua b/cocos/scripting/lua-bindings/script/cocos2d/bitExtend.lua index 1f152bb895..fe024aa160 100644 --- a/cocos/scripting/lua-bindings/script/cocos2d/bitExtend.lua +++ b/cocos/scripting/lua-bindings/script/cocos2d/bitExtend.lua @@ -2,15 +2,16 @@ bit = bit or {} bit.data32 = {} + for i=1,32 do bit.data32[i]=2^(32-i) end -function bit._b2d(arg) - local nr=0 +function bit._b2d(arg) + local nr=0 for i=1,32 do if arg[i] ==1 then - nr=nr+bit.data32[i] + nr=nr+bit.data32[i] end end return nr @@ -18,23 +19,23 @@ end function bit._d2b(arg) arg = arg >= 0 and arg or (0xFFFFFFFF + arg + 1) - local tr={} + local tr={} for i=1,32 do if arg >= bit.data32[i] then - tr[i]=1 - arg=arg-bit.data32[i] + tr[i]=1 + arg=arg-bit.data32[i] else - tr[i]=0 + tr[i]=0 end end return tr end function bit._and(a,b) - local op1=bit._d2b(a) - local op2=bit._d2b(b) - local r={} - + local op1=bit._d2b(a) + local op2=bit._d2b(b) + local r={} + for i=1,32 do if op1[i]==1 and op2[i]==1 then r[i]=1 @@ -43,11 +44,11 @@ function bit._and(a,b) end end return bit._b2d(r) - + end function bit._rshift(a,n) - local op1=bit._d2b(a) + local op1=bit._d2b(a) n = n <= 32 and n or 32 n = n >= 0 and n or 0 @@ -57,13 +58,13 @@ function bit._rshift(a,n) for i=1, n do op1[i] = 0 end - + return bit._b2d(op1) end -function bit._not(a) - local op1=bit._d2b(a) - local r={} +function bit._not(a) + local op1=bit._d2b(a) + local r={} for i=1,32 do if op1[i]==1 then @@ -72,14 +73,14 @@ function bit._not(a) r[i]=1 end end - return bit._b2d(r) + return bit._b2d(r) end function bit._or(a,b) - local op1=bit._d2b(a) - local op2=bit._d2b(b) - local r={} - + local op1=bit._d2b(a) + local op2=bit._d2b(b) + local r={} + for i=1,32 do if op1[i]==1 or op2[i]==1 then r[i]=1 @@ -87,9 +88,9 @@ function bit._or(a,b) r[i]=0 end end - return bit._b2d(r) + return bit._b2d(r) end -bit.band = bit.band or bit._and +bit.band = bit.band or bit._and bit.rshift = bit.rshift or bit._rshift -bit.bnot = bit.bnot or bit._not \ No newline at end of file +bit.bnot = bit.bnot or bit._not diff --git a/cocos/scripting/lua-bindings/script/cocos2d/extern.lua b/cocos/scripting/lua-bindings/script/cocos2d/extern.lua index 61c47e30df..2c6687c55e 100644 --- a/cocos/scripting/lua-bindings/script/cocos2d/extern.lua +++ b/cocos/scripting/lua-bindings/script/cocos2d/extern.lua @@ -1,3 +1,4 @@ + function clone(object) local lookup_table = {} local function _copy(object) @@ -90,4 +91,3 @@ function performWithDelay(node, callback, delay) node:runAction(sequence) return sequence end - diff --git a/cocos/scripting/lua-bindings/script/cocos2d/json.lua b/cocos/scripting/lua-bindings/script/cocos2d/json.lua index e0b3d17c3e..0192c34eb7 100644 --- a/cocos/scripting/lua-bindings/script/cocos2d/json.lua +++ b/cocos/scripting/lua-bindings/script/cocos2d/json.lua @@ -18,7 +18,7 @@ -- compat-5.1 if using Lua 5.0 -- -- CHANGELOG --- 0.9.20 Introduction of local Lua functions for private functions (removed _ function prefix). +-- 0.9.20 Introduction of local Lua functions for private functions (removed _ function prefix). -- Fixed Lua 5.1 compatibility issues. -- Introduced json.null to have null values in associative arrays. -- encode() performance improvement (more than 50%) through table.concat rather than .. @@ -65,19 +65,19 @@ function encode (v) if v==nil then return "null" end - - local vtype = base.type(v) + + local vtype = base.type(v) -- Handle strings - if vtype=='string' then + if vtype=='string' then return '"' .. encodeString(v) .. '"' -- Need to handle encoding in string end - + -- Handle booleans if vtype=='number' or vtype=='boolean' then return base.tostring(v) end - + -- Handle tables if vtype=='table' then local rval = {} @@ -100,12 +100,12 @@ function encode (v) return '{' .. table.concat(rval,',') .. '}' end end - + -- Handle null values if vtype=='function' and v==null then return 'null' end - + base.assert(false,'encode attempt to encode unsupported type ' .. vtype .. ':' .. base.tostring(v)) end @@ -191,14 +191,14 @@ function decode_scanComment(s, startPos) base.assert( string.sub(s,startPos,startPos+1)=='/*', "decode_scanComment called but comment does not start at position " .. startPos) local endPos = string.find(s,'*/',startPos+2) base.assert(endPos~=nil, "Unterminated comment in string at " .. startPos) - return endPos+2 + return endPos+2 end --- Scans for given constants: true, false or null -- Returns the appropriate Lua type, and the position of the next character to read. -- @param s The string being scanned. -- @param startPos The position in the string at which to start scanning. --- @return object, int The object (true, false or nil) and the position at which the next character should be +-- @return object, int The object (true, false or nil) and the position at which the next character should be -- scanned. function decode_scanConstant(s, startPos) local consts = { ["true"] = true, ["false"] = false, ["null"] = nil } @@ -290,7 +290,7 @@ function decode_scanString(s,startPos) local stringLen = string.len(s) repeat local curChar = string.sub(s,endPos,endPos) - if not escaped then + if not escaped then if curChar==[[\]] then escaped = true else @@ -306,7 +306,7 @@ function decode_scanString(s,startPos) local stringValue = 'return ' .. string.sub(s, startPos, endPos-1) local stringEval = base.loadstring(stringValue) base.assert(stringEval, 'Failed to load string [ ' .. stringValue .. '] in JSON4Lua.decode_scanString at position ' .. startPos .. ' : ' .. endPos) - return stringEval(), endPos + return stringEval(), endPos end --- Scans a JSON string skipping all whitespace from the current start position. @@ -334,7 +334,7 @@ function encodeString(s) s = string.gsub(s,"'","\\'") s = string.gsub(s,'\n','\\n') s = string.gsub(s,'\t','\\t') - return s + return s end -- Determines whether the given Lua type is an array or a table / dictionary. @@ -344,9 +344,9 @@ end -- @param t The table to evaluate as an array -- @return boolean, number True if the table can be represented as an array, false otherwise. If true, -- the second returned value is the maximum --- number of indexed elements in the array. +-- number of indexed elements in the array. function isArray(t) - -- Next we count all the elements, ensuring that any non-indexed elements are not-encodable + -- Next we count all the elements, ensuring that any non-indexed elements are not-encodable -- (with the possible exception of 'n') local maxIndex = 0 for k,v in base.pairs(t) do @@ -371,6 +371,6 @@ end -- @return boolean True if the object should be JSON encoded, false if it should be ignored. function isEncodable(o) local t = base.type(o) - return (t=='string' or t=='boolean' or t=='number' or t=='nil' or t=='table') or (t=='function' and o==null) + return (t=='string' or t=='boolean' or t=='number' or t=='nil' or t=='table') or (t=='function' and o==null) end diff --git a/cocos/scripting/lua-bindings/script/cocosdenshion/AudioEngine.lua b/cocos/scripting/lua-bindings/script/cocosdenshion/AudioEngine.lua index 9626275d8e..7a6f78967e 100644 --- a/cocos/scripting/lua-bindings/script/cocosdenshion/AudioEngine.lua +++ b/cocos/scripting/lua-bindings/script/cocosdenshion/AudioEngine.lua @@ -1,4 +1,5 @@ ---Encapsulate SimpleAudioEngine to AudioEngine,Play music and sound effects. + +--Encapsulate SimpleAudioEngine to AudioEngine,Play music and sound effects. local M = {} function M.stopAllEffects() @@ -105,16 +106,4 @@ function M.destroyInstance() return cc.SimpleAudioEngine:destroyInstance() end -local modename = "AudioEngine" -local proxy = {} -local mt = { - __index = M, - __newindex = function (t ,k ,v) - print("attemp to update a read-only table") - end -} -setmetatable(proxy,mt) -_G[modename] = proxy -package.loaded[modename] = proxy - - +AudioEngine = M diff --git a/cocos/scripting/lua-bindings/script/cocosdenshion/DeprecatedCocosDenshionFunc.lua b/cocos/scripting/lua-bindings/script/cocosdenshion/DeprecatedCocosDenshionFunc.lua index f6a5401ed2..932962e505 100644 --- a/cocos/scripting/lua-bindings/script/cocosdenshion/DeprecatedCocosDenshionFunc.lua +++ b/cocos/scripting/lua-bindings/script/cocosdenshion/DeprecatedCocosDenshionFunc.lua @@ -9,11 +9,11 @@ function SimpleAudioEngineDeprecated.sharedEngine() deprecatedTip("SimpleAudioEngine:sharedEngine","SimpleAudioEngine:getInstance") return cc.SimpleAudioEngine:getInstance() end -rawset(SimpleAudioEngine,"sharedEngine",SimpleAudioEngineDeprecated.sharedEngine) +SimpleAudioEngine.sharedEngine = SimpleAudioEngineDeprecated.sharedEngine function SimpleAudioEngineDeprecated.playBackgroundMusic(self,...) deprecatedTip("SimpleAudioEngine:playBackgroundMusic","SimpleAudioEngine:playMusic") return self:playMusic(...) end -rawset(SimpleAudioEngine,"playBackgroundMusic",SimpleAudioEngineDeprecated.playBackgroundMusic) +SimpleAudioEngine.playBackgroundMusic = SimpleAudioEngineDeprecated.playBackgroundMusic --functions of SimpleAudioEngine will be deprecated end diff --git a/cocos/scripting/lua-bindings/script/cocostudio/CocoStudio.lua b/cocos/scripting/lua-bindings/script/cocostudio/CocoStudio.lua index e0df56a60d..e24251a7cf 100644 --- a/cocos/scripting/lua-bindings/script/cocostudio/CocoStudio.lua +++ b/cocos/scripting/lua-bindings/script/cocostudio/CocoStudio.lua @@ -1,11 +1,15 @@ -require "json" -require "extern" + +if not json then + require "cocos.cocos2d.json" +end ccs = ccs or {} +require "cocos.cocostudio.StudioConstants" + function ccs.sendTriggerEvent(event) local triggerObjArr = ccs.TriggerMng.getInstance():get(event) - + if nil == triggerObjArr then return end @@ -106,7 +110,7 @@ end function ccs.TriggerObj:detect() if (not self._enable) or (table.getn(self._cons) == 0) then return true - end + end local ret = true local obj = nil @@ -355,7 +359,7 @@ end function ccs.TriggerMng:removeTriggerObj(id) local obj = self.getTriggerObj(id) - + if nil == obj then return false end diff --git a/cocos/scripting/lua-bindings/script/cocostudio/DeprecatedCocoStudioFunc.lua b/cocos/scripting/lua-bindings/script/cocostudio/DeprecatedCocoStudioFunc.lua index 72331f1b09..0c8952690f 100644 --- a/cocos/scripting/lua-bindings/script/cocostudio/DeprecatedCocoStudioFunc.lua +++ b/cocos/scripting/lua-bindings/script/cocostudio/DeprecatedCocoStudioFunc.lua @@ -9,13 +9,13 @@ function GUIReaderDeprecated.shareReader() deprecatedTip("GUIReader:shareReader","ccs.GUIReader:getInstance") return ccs.GUIReader:getInstance() end -rawset(GUIReader,"shareReader",GUIReaderDeprecated.shareReader) +GUIReader.shareReader = GUIReaderDeprecated.shareReader function GUIReaderDeprecated.purgeGUIReader() deprecatedTip("GUIReader:purgeGUIReader","ccs.GUIReader:destroyInstance") return ccs.GUIReader:destroyInstance() end -rawset(GUIReader,"purgeGUIReader",GUIReaderDeprecated.purgeGUIReader) +GUIReader.purgeGUIReader = GUIReaderDeprecated.purgeGUIReader --functions of GUIReader will be deprecated end --functions of SceneReader will be deprecated begin @@ -24,13 +24,13 @@ function SceneReaderDeprecated.sharedSceneReader() deprecatedTip("SceneReader:sharedSceneReader","ccs.SceneReader:getInstance") return ccs.SceneReader:getInstance() end -rawset(SceneReader,"sharedSceneReader",SceneReaderDeprecated.sharedSceneReader) +SceneReader.sharedSceneReader = SceneReaderDeprecated.sharedSceneReader function SceneReaderDeprecated.purgeSceneReader(self) deprecatedTip("SceneReader:purgeSceneReader","ccs.SceneReader:destroyInstance") return self:destroyInstance() end -rawset(SceneReader,"purgeSceneReader",SceneReaderDeprecated.purgeSceneReader) +SceneReader.purgeSceneReader = SceneReaderDeprecated.purgeSceneReader --functions of SceneReader will be deprecated end @@ -40,7 +40,7 @@ function CCSGUIReaderDeprecated.purgeGUIReader() deprecatedTip("ccs.GUIReader:purgeGUIReader","ccs.GUIReader:destroyInstance") return ccs.GUIReader:destroyInstance() end -rawset(ccs.GUIReader,"purgeGUIReader",CCSGUIReaderDeprecated.purgeGUIReader) +ccs.GUIReader.purgeGUIReader = CCSGUIReaderDeprecated.purgeGUIReader --functions of ccs.GUIReader will be deprecated end --functions of ccs.ActionManagerEx will be deprecated begin @@ -49,7 +49,7 @@ function CCSActionManagerExDeprecated.destroyActionManager() deprecatedTip("ccs.ActionManagerEx:destroyActionManager","ccs.ActionManagerEx:destroyInstance") return ccs.ActionManagerEx:destroyInstance() end -rawset(ccs.ActionManagerEx,"destroyActionManager",CCSActionManagerExDeprecated.destroyActionManager) +ccs.ActionManagerEx.destroyActionManager = CCSActionManagerExDeprecated.destroyActionManager --functions of ccs.ActionManagerEx will be deprecated end --functions of ccs.SceneReader will be deprecated begin @@ -58,7 +58,7 @@ function CCSSceneReaderDeprecated.destroySceneReader(self) deprecatedTip("ccs.SceneReader:destroySceneReader","ccs.SceneReader:destroyInstance") return self:destroyInstance() end -rawset(ccs.SceneReader,"destroySceneReader",CCSSceneReaderDeprecated.destroySceneReader) +ccs.SceneReader.destroySceneReader = CCSSceneReaderDeprecated.destroySceneReader --functions of ccs.SceneReader will be deprecated end --functions of CCArmatureDataManager will be deprecated begin @@ -67,11 +67,11 @@ function CCArmatureDataManagerDeprecated.sharedArmatureDataManager() deprecatedTip("CCArmatureDataManager:sharedArmatureDataManager","ccs.ArmatureDataManager:getInstance") return ccs.ArmatureDataManager:getInstance() end -rawset(CCArmatureDataManager,"sharedArmatureDataManager",CCArmatureDataManagerDeprecated.sharedArmatureDataManager) +CCArmatureDataManager.sharedArmatureDataManager = CCArmatureDataManagerDeprecated.sharedArmatureDataManager function CCArmatureDataManagerDeprecated.purge() deprecatedTip("CCArmatureDataManager:purge","ccs.ArmatureDataManager:destoryInstance") return ccs.ArmatureDataManager:destoryInstance() end -rawset(CCArmatureDataManager,"purge",CCArmatureDataManagerDeprecated.purge) +CCArmatureDataManager.purge = CCArmatureDataManagerDeprecated.purge --functions of CCArmatureDataManager will be deprecated end diff --git a/cocos/scripting/lua-bindings/script/cocostudio/StudioConstants.lua b/cocos/scripting/lua-bindings/script/cocostudio/StudioConstants.lua index 5f9bca3036..0fc8fc7711 100644 --- a/cocos/scripting/lua-bindings/script/cocostudio/StudioConstants.lua +++ b/cocos/scripting/lua-bindings/script/cocostudio/StudioConstants.lua @@ -1,8 +1,8 @@ -ccs = ccs or {} +ccs = ccs or {} ccs.MovementEventType = { start = 0, complete = 1, - loopComplete = 2, + loopComplete = 2, } diff --git a/cocos/scripting/lua-bindings/script/controller/ControllerConstants.lua b/cocos/scripting/lua-bindings/script/controller/ControllerConstants.lua index 074e254bfd..730e92afad 100644 --- a/cocos/scripting/lua-bindings/script/controller/ControllerConstants.lua +++ b/cocos/scripting/lua-bindings/script/controller/ControllerConstants.lua @@ -1,3 +1,4 @@ + cc = cc or {} cc.ControllerKey = @@ -13,7 +14,7 @@ cc.ControllerKey = BUTTON_X = 1007, BUTTON_Y = 1008, BUTTON_Z = 1009, - + BUTTON_DPAD_UP = 1010, BUTTON_DPAD_DOWN = 1011, BUTTON_DPAD_LEFT = 1012, diff --git a/cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionFunc.lua b/cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionFunc.lua index 513c2cbf85..282c0118b5 100644 --- a/cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionFunc.lua +++ b/cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionFunc.lua @@ -10,19 +10,19 @@ function CCControlDeprecated.addHandleOfControlEvent(self,func,controlEvent) print("come in addHandleOfControlEvent") self:registerControlEventHandler(func,controlEvent) end -rawset(CCControl,"addHandleOfControlEvent",CCControlDeprecated.addHandleOfControlEvent) +CCControl.addHandleOfControlEvent = CCControlDeprecated.addHandleOfControlEvent --functions of CCControl will be deprecated end --Enums of CCTableView will be deprecated begin -rawset(CCTableView, "kTableViewScroll",cc.SCROLLVIEW_SCRIPT_SCROLL) -rawset(CCTableView,"kTableViewZoom",cc.SCROLLVIEW_SCRIPT_ZOOM) -rawset(CCTableView,"kTableCellTouched",cc.TABLECELL_TOUCHED) -rawset(CCTableView,"kTableCellSizeForIndex",cc.TABLECELL_SIZE_FOR_INDEX) -rawset(CCTableView,"kTableCellSizeAtIndex",cc.TABLECELL_SIZE_AT_INDEX) -rawset(CCTableView,"kNumberOfCellsInTableView",cc.NUMBER_OF_CELLS_IN_TABLEVIEW) +CCTableView.kTableViewScroll = cc.SCROLLVIEW_SCRIPT_SCROLL +CCTableView.kTableViewZoom = cc.SCROLLVIEW_SCRIPT_ZOOM +CCTableView.kTableCellTouched = cc.TABLECELL_TOUCHED +CCTableView.kTableCellSizeForIndex = cc.TABLECELL_SIZE_FOR_INDEX +CCTableView.kTableCellSizeAtIndex = cc.TABLECELL_SIZE_AT_INDEX +CCTableView.kNumberOfCellsInTableView = cc.NUMBER_OF_CELLS_IN_TABLEVIEW --Enums of CCTableView will be deprecated end --Enums of CCScrollView will be deprecated begin -rawset(CCScrollView, "kScrollViewScroll",cc.SCROLLVIEW_SCRIPT_SCROLL) -rawset(CCScrollView,"kScrollViewZoom",cc.SCROLLVIEW_SCRIPT_ZOOM) +CCScrollView.kScrollViewScroll = cc.SCROLLVIEW_SCRIPT_SCROLL +CCScrollView.kScrollViewZoom = cc.SCROLLVIEW_SCRIPT_ZOOM --Enums of CCScrollView will be deprecated end diff --git a/cocos/scripting/lua-bindings/script/extension/ExtensionConstants.lua b/cocos/scripting/lua-bindings/script/extension/ExtensionConstants.lua index 16065e1790..4bd74ba274 100644 --- a/cocos/scripting/lua-bindings/script/extension/ExtensionConstants.lua +++ b/cocos/scripting/lua-bindings/script/extension/ExtensionConstants.lua @@ -1,3 +1,4 @@ + cc = cc or {} cc.CONTROL_STATE_NORMAL = 1 @@ -56,3 +57,13 @@ cc.KEYBOARD_RETURNTYPE_DONE = 1 cc.KEYBOARD_RETURNTYPE_SEND = 2 cc.KEYBOARD_RETURNTYPE_SEARCH = 3 cc.KEYBOARD_RETURNTYPE_GO = 4 + +cc.ASSETSMANAGER_CREATE_FILE = 0 +cc.ASSETSMANAGER_NETWORK = 1 +cc.ASSETSMANAGER_NO_NEW_VERSION = 2 +cc.ASSETSMANAGER_UNCOMPRESS = 3 + +cc.ASSETSMANAGER_PROTOCOL_PROGRESS = 0 +cc.ASSETSMANAGER_PROTOCOL_SUCCESS = 1 +cc.ASSETSMANAGER_PROTOCOL_ERROR = 2 + diff --git a/cocos/scripting/lua-bindings/script/init.lua b/cocos/scripting/lua-bindings/script/init.lua new file mode 100644 index 0000000000..4e2621b0dd --- /dev/null +++ b/cocos/scripting/lua-bindings/script/init.lua @@ -0,0 +1,60 @@ + +require "cocos.cocos2d.Cocos2d" +require "cocos.cocos2d.Cocos2dConstants" +require "cocos.cocos2d.extern" +require "cocos.cocos2d.bitExtend" + +-- opengl +require "cocos.cocos2d.Opengl" +require "cocos.cocos2d.OpenglConstants" + +-- cocosbuilder +require "cocos.cocosbuilder.CCBReaderLoad" + +-- cocosdenshion +require "cocos.cocosdenshion.AudioEngine" + +-- cocosstudio +require "cocos.cocostudio.CocoStudio" + +-- ui +require "cocos.ui.GuiConstants" +require "cocos.ui.experimentalUIConstants" + +-- extensions +require "cocos.extension.ExtensionConstants" + +-- network +require "cocos.network.NetworkConstants" + +if CC_USE_DEPRECATED_API then + -- CCLuaEngine + require "cocos.cocos2d.DeprecatedCocos2dClass" + require "cocos.cocos2d.DeprecatedCocos2dEnum" + require "cocos.cocos2d.DeprecatedCocos2dFunc" + + -- register_cocostudio_module + require "cocos.cocostudio.DeprecatedCocoStudioClass" + require "cocos.cocostudio.DeprecatedCocoStudioFunc" + + -- register_cocosbuilder_module + require "cocos.cocosbuilder.DeprecatedCocosBuilderClass" + + -- register_cocosdenshion_module + require "cocos.cocosdenshion.DeprecatedCocosDenshionClass" + require "cocos.cocosdenshion.DeprecatedCocosDenshionFunc" + + -- register_extension_module + require "cocos.extension.DeprecatedExtensionClass" + require "cocos.extension.DeprecatedExtensionEnum" + require "cocos.extension.DeprecatedExtensionFunc" + + -- register_network_module + require "cocos.network.DeprecatedNetworkClass" + require "cocos.network.DeprecatedNetworkEnum" + require "cocos.network.DeprecatedNetworkFunc" + + -- register_ui_moudle + require "cocos.ui.DeprecatedUIEnum" + require "cocos.ui.DeprecatedUIFunc" +end diff --git a/cocos/scripting/lua-bindings/script/network/DeprecatedNetworkFunc.lua b/cocos/scripting/lua-bindings/script/network/DeprecatedNetworkFunc.lua index 83869f7775..6ea3cfac9b 100644 --- a/cocos/scripting/lua-bindings/script/network/DeprecatedNetworkFunc.lua +++ b/cocos/scripting/lua-bindings/script/network/DeprecatedNetworkFunc.lua @@ -11,13 +11,13 @@ if (kTargetIphone == targetPlatform) or (kTargetIpad == targetPlatform) or (kTar deprecatedTip("WebSocket:sendTextMsg","WebSocket:sendString") return self:sendString(string) end - rawset(WebSocket,"sendTextMsg", WebSocketDeprecated.sendTextMsg) + WebSocket.sendTextMsg = WebSocketDeprecated.sendTextMsg function WebSocketDeprecated.sendBinaryMsg(self, table,tablesize) deprecatedTip("WebSocket:sendBinaryMsg","WebSocket:sendString") string.char(unpack(table)) return self:sendString(string.char(unpack(table))) end - rawset(WebSocket,"sendBinaryMsg", WebSocketDeprecated.sendBinaryMsg) + WebSocket.sendBinaryMsg = WebSocketDeprecated.sendBinaryMsg end --functions of WebSocket will be deprecated end diff --git a/cocos/scripting/lua-bindings/script/network/NetworkConstants.lua b/cocos/scripting/lua-bindings/script/network/NetworkConstants.lua index 0e7dd0004f..2311657a1a 100644 --- a/cocos/scripting/lua-bindings/script/network/NetworkConstants.lua +++ b/cocos/scripting/lua-bindings/script/network/NetworkConstants.lua @@ -1,3 +1,4 @@ + cc = cc or {} cc.WEBSOCKET_OPEN = 0 @@ -10,9 +11,8 @@ cc.WEBSOCKET_STATE_OPEN = 1 cc.WEBSOCKET_STATE_CLOSING = 2 cc.WEBSOCKET_STATE_CLOSED = 3 - -cc.XMLHTTPREQUEST_RESPONSE_STRING = 0 +cc.XMLHTTPREQUEST_RESPONSE_STRING = 0 cc.XMLHTTPREQUEST_RESPONSE_ARRAY_BUFFER = 1 -cc.XMLHTTPREQUEST_RESPONSE_BLOB = 2 -cc.XMLHTTPREQUEST_RESPONSE_DOCUMENT = 3 -cc.XMLHTTPREQUEST_RESPONSE_JSON = 4 +cc.XMLHTTPREQUEST_RESPONSE_BLOB = 2 +cc.XMLHTTPREQUEST_RESPONSE_DOCUMENT = 3 +cc.XMLHTTPREQUEST_RESPONSE_JSON = 4 diff --git a/cocos/scripting/lua-bindings/script/spine/SpineConstants.lua b/cocos/scripting/lua-bindings/script/spine/SpineConstants.lua new file mode 100644 index 0000000000..470bf6a712 --- /dev/null +++ b/cocos/scripting/lua-bindings/script/spine/SpineConstants.lua @@ -0,0 +1,10 @@ + +sp = sp or {} + +sp.EventType = +{ + ANIMATION_START = 0, + ANIMATION_END = 1, + ANIMATION_COMPLETE = 2, + ANIMATION_EVENT = 3, +} diff --git a/cocos/scripting/lua-bindings/script/ui/DeprecatedUIEnum.lua b/cocos/scripting/lua-bindings/script/ui/DeprecatedUIEnum.lua index bc3fc5a226..1fd5b4fe5c 100644 --- a/cocos/scripting/lua-bindings/script/ui/DeprecatedUIEnum.lua +++ b/cocos/scripting/lua-bindings/script/ui/DeprecatedUIEnum.lua @@ -1,92 +1,91 @@ -require("GuiConstants") -_G.LAYOUT_COLOR_NONE = ccui.LayoutBackGroundColorType.none -_G.LAYOUT_COLOR_SOLID = ccui.LayoutBackGroundColorType.solid -_G.LAYOUT_COLOR_GRADIENT = ccui.LayoutBackGroundColorType.gradient +LAYOUT_COLOR_NONE = ccui.LayoutBackGroundColorType.none +LAYOUT_COLOR_SOLID = ccui.LayoutBackGroundColorType.solid +LAYOUT_COLOR_GRADIENT = ccui.LayoutBackGroundColorType.gradient -_G.LAYOUT_ABSOLUTE = ccui.LayoutType.ABSOLUTE -_G.LAYOUT_LINEAR_VERTICAL = ccui.LayoutType.VERTICAL -_G.LAYOUT_LINEAR_HORIZONTAL = ccui.LayoutType.HORIZONTAL -_G.LAYOUT_RELATIVE = ccui.LayoutType.RELATIVE +LAYOUT_ABSOLUTE = ccui.LayoutType.ABSOLUTE +LAYOUT_LINEAR_VERTICAL = ccui.LayoutType.VERTICAL +LAYOUT_LINEAR_HORIZONTAL = ccui.LayoutType.HORIZONTAL +LAYOUT_RELATIVE = ccui.LayoutType.RELATIVE -_G.BRIGHT_NONE = ccui.BrightStyle.none -_G.BRIGHT_NORMAL = ccui.BrightStyle.normal -_G.BRIGHT_HIGHLIGHT = ccui.BrightStyle.highlight +BRIGHT_NONE = ccui.BrightStyle.none +BRIGHT_NORMAL = ccui.BrightStyle.normal +BRIGHT_HIGHLIGHT = ccui.BrightStyle.highlight -_G.UI_TEX_TYPE_LOCAL = ccui.TextureResType.localType -_G.UI_TEX_TYPE_PLIST = ccui.TextureResType.plistType +UI_TEX_TYPE_LOCAL = ccui.TextureResType.localType +UI_TEX_TYPE_PLIST = ccui.TextureResType.plistType -_G.TOUCH_EVENT_BEGAN = ccui.TouchEventType.began -_G.TOUCH_EVENT_MOVED = ccui.TouchEventType.moved -_G.TOUCH_EVENT_ENDED = ccui.TouchEventType.ended -_G.TOUCH_EVENT_CANCELED = ccui.TouchEventType.canceled - -_G.SIZE_ABSOLUTE = ccui.SizeType.absolute -_G.SIZE_PERCENT = ccui.SizeType.percent +TOUCH_EVENT_BEGAN = ccui.TouchEventType.began +TOUCH_EVENT_MOVED = ccui.TouchEventType.moved +TOUCH_EVENT_ENDED = ccui.TouchEventType.ended +TOUCH_EVENT_CANCELED = ccui.TouchEventType.canceled -_G.POSITION_ABSOLUTE = ccui.PositionType.absolute -_G.POSITION_PERCENT = ccui.PositionType.percent +SIZE_ABSOLUTE = ccui.SizeType.absolute +SIZE_PERCENT = ccui.SizeType.percent -_G.CHECKBOX_STATE_EVENT_SELECTED = ccui.CheckBoxEventType.selected -_G.CHECKBOX_STATE_EVENT_UNSELECTED = ccui.CheckBoxEventType.unselected +POSITION_ABSOLUTE = ccui.PositionType.absolute +POSITION_PERCENT = ccui.PositionType.percent -_G.CHECKBOX_STATE_EVENT_SELECTED = ccui.CheckBoxEventType.selected -_G.CHECKBOX_STATE_EVENT_UNSELECTED = ccui.CheckBoxEventType.unselected +CHECKBOX_STATE_EVENT_SELECTED = ccui.CheckBoxEventType.selected +CHECKBOX_STATE_EVENT_UNSELECTED = ccui.CheckBoxEventType.unselected -_G.LoadingBarTypeLeft = ccui.LoadingBarDirection.LEFT -_G.LoadingBarTypeRight = ccui.LoadingBarDirection.RIGHT +CHECKBOX_STATE_EVENT_SELECTED = ccui.CheckBoxEventType.selected +CHECKBOX_STATE_EVENT_UNSELECTED = ccui.CheckBoxEventType.unselected -_G.LoadingBarTypeRight = ccui.SliderEventType.percent_changed +LoadingBarTypeLeft = ccui.LoadingBarDirection.LEFT +LoadingBarTypeRight = ccui.LoadingBarDirection.RIGHT -_G.TEXTFIELD_EVENT_ATTACH_WITH_IME = ccui.TextFiledEventType.attach_with_ime -_G.TEXTFIELD_EVENT_DETACH_WITH_IME = ccui.TextFiledEventType.detach_with_ime -_G.TEXTFIELD_EVENT_INSERT_TEXT = ccui.TextFiledEventType.insert_text -_G.TEXTFIELD_EVENT_DELETE_BACKWARD = ccui.TextFiledEventType.delete_backward +LoadingBarTypeRight = ccui.SliderEventType.percent_changed -_G.SCROLLVIEW_EVENT_SCROLL_TO_TOP = ccui.ScrollViewDir.none -_G.SCROLLVIEW_DIR_VERTICAL = ccui.ScrollViewDir.vertical -_G.SCROLLVIEW_DIR_HORIZONTAL = ccui.ScrollViewDir.horizontal -_G.SCROLLVIEW_DIR_BOTH = ccui.ScrollViewDir.both +TEXTFIELD_EVENT_ATTACH_WITH_IME = ccui.TextFiledEventType.attach_with_ime +TEXTFIELD_EVENT_DETACH_WITH_IME = ccui.TextFiledEventType.detach_with_ime +TEXTFIELD_EVENT_INSERT_TEXT = ccui.TextFiledEventType.insert_text +TEXTFIELD_EVENT_DELETE_BACKWARD = ccui.TextFiledEventType.delete_backward -_G.SCROLLVIEW_EVENT_SCROLL_TO_TOP = ccui.ScrollviewEventType.scrollToTop -_G.SCROLLVIEW_EVENT_SCROLL_TO_BOTTOM = ccui.ScrollviewEventType.scrollToBottom -_G.SCROLLVIEW_EVENT_SCROLL_TO_LEFT = ccui.ScrollviewEventType.scrollToLeft -_G.SCROLLVIEW_EVENT_SCROLL_TO_RIGHT = ccui.ScrollviewEventType.scrollToRight -_G.SCROLLVIEW_EVENT_SCROLLING = ccui.ScrollviewEventType.scrolling -_G.SCROLLVIEW_EVENT_BOUNCE_TOP = ccui.ScrollviewEventType.bounceTop -_G.SCROLLVIEW_EVENT_BOUNCE_BOTTOM = ccui.ScrollviewEventType.bounceBottom -_G.SCROLLVIEW_EVENT_BOUNCE_LEFT = ccui.ScrollviewEventType.bounceLeft -_G.SCROLLVIEW_EVENT_BOUNCE_RIGHT = ccui.ScrollviewEventType.bounceRight +SCROLLVIEW_EVENT_SCROLL_TO_TOP = ccui.ScrollViewDir.none +SCROLLVIEW_DIR_VERTICAL = ccui.ScrollViewDir.vertical +SCROLLVIEW_DIR_HORIZONTAL = ccui.ScrollViewDir.horizontal +SCROLLVIEW_DIR_BOTH = ccui.ScrollViewDir.both -_G.PAGEVIEW_EVENT_TURNING = ccui.PageViewEventType.turning +SCROLLVIEW_EVENT_SCROLL_TO_TOP = ccui.ScrollviewEventType.scrollToTop +SCROLLVIEW_EVENT_SCROLL_TO_BOTTOM = ccui.ScrollviewEventType.scrollToBottom +SCROLLVIEW_EVENT_SCROLL_TO_LEFT = ccui.ScrollviewEventType.scrollToLeft +SCROLLVIEW_EVENT_SCROLL_TO_RIGHT = ccui.ScrollviewEventType.scrollToRight +SCROLLVIEW_EVENT_SCROLLING = ccui.ScrollviewEventType.scrolling +SCROLLVIEW_EVENT_BOUNCE_TOP = ccui.ScrollviewEventType.bounceTop +SCROLLVIEW_EVENT_BOUNCE_BOTTOM = ccui.ScrollviewEventType.bounceBottom +SCROLLVIEW_EVENT_BOUNCE_LEFT = ccui.ScrollviewEventType.bounceLeft +SCROLLVIEW_EVENT_BOUNCE_RIGHT = ccui.ScrollviewEventType.bounceRight -_G.PAGEVIEW_TOUCHLEFT = ccui.PVTouchDir.touch_left -_G.PAGEVIEW_TOUCHRIGHT = ccui.PVTouchDir.touch_right +PAGEVIEW_EVENT_TURNING = ccui.PageViewEventType.turning -_G.LISTVIEW_DIR_NONE = ccui.ListViewDirection.none -_G.LISTVIEW_DIR_VERTICAL = ccui.ListViewDirection.vertical -_G.LISTVIEW_DIR_HORIZONTAL = ccui.ListViewDirection.horizontal +PAGEVIEW_TOUCHLEFT = ccui.PVTouchDir.touch_left +PAGEVIEW_TOUCHRIGHT = ccui.PVTouchDir.touch_right -_G.LISTVIEW_MOVE_DIR_NONE = ccui.ListViewMoveDirection.none -_G.LISTVIEW_MOVE_DIR_UP = ccui.ListViewMoveDirection.up -_G.LISTVIEW_MOVE_DIR_DOWN = ccui.ListViewMoveDirection.down -_G.LISTVIEW_MOVE_DIR_LEFT = ccui.ListViewMoveDirection.left -_G.LISTVIEW_MOVE_DIR_RIGHT = ccui.ListViewMoveDirection.right +LISTVIEW_DIR_NONE = ccui.ListViewDirection.none +LISTVIEW_DIR_VERTICAL = ccui.ListViewDirection.vertical +LISTVIEW_DIR_HORIZONTAL = ccui.ListViewDirection.horizontal -_G.LISTVIEW_EVENT_INIT_CHILD = ccui.ListViewEventType.init_child -_G.LISTVIEW_EVENT_UPDATE_CHILD = ccui.ListViewEventType.update_child +LISTVIEW_MOVE_DIR_NONE = ccui.ListViewMoveDirection.none +LISTVIEW_MOVE_DIR_UP = ccui.ListViewMoveDirection.up +LISTVIEW_MOVE_DIR_DOWN = ccui.ListViewMoveDirection.down +LISTVIEW_MOVE_DIR_LEFT = ccui.ListViewMoveDirection.left +LISTVIEW_MOVE_DIR_RIGHT = ccui.ListViewMoveDirection.right -_G.LAYOUT_PARAMETER_NONE = ccui.LayoutParameterType.none -_G.LAYOUT_PARAMETER_LINEAR = ccui.LayoutParameterType.linear -_G.LAYOUT_PARAMETER_RELATIVE = ccui.LayoutParameterType.relative +LISTVIEW_EVENT_INIT_CHILD = ccui.ListViewEventType.init_child +LISTVIEW_EVENT_UPDATE_CHILD = ccui.ListViewEventType.update_child -ccui.LoadingBarType = ccui.LoadingBarDirection -ccui.LoadingBarType.left = ccui.LoadingBarDirection.LEFT -ccui.LoadingBarType.right = ccui.LoadingBarDirection.RIGHT +LAYOUT_PARAMETER_NONE = ccui.LayoutParameterType.none +LAYOUT_PARAMETER_LINEAR = ccui.LayoutParameterType.linear +LAYOUT_PARAMETER_RELATIVE = ccui.LayoutParameterType.relative -ccui.LayoutType.absolute = ccui.LayoutType.ABSOLUTE -ccui.LayoutType.linearVertical = ccui.LayoutType.VERTICAL -ccui.LayoutType.linearHorizontal = ccui.LayoutType.HORIZONTAL -ccui.LayoutType.relative = ccui.LayoutType.RELATIVE +ccui.LoadingBarType = ccui.LoadingBarDirection +ccui.LoadingBarType.left = ccui.LoadingBarDirection.LEFT +ccui.LoadingBarType.right = ccui.LoadingBarDirection.RIGHT -ccui.ListViewEventType.onsSelectedItem = ccui.ListViewEventType.ONSELECTEDITEM_START \ No newline at end of file +ccui.LayoutType.absolute = ccui.LayoutType.ABSOLUTE +ccui.LayoutType.linearVertical = ccui.LayoutType.VERTICAL +ccui.LayoutType.linearHorizontal = ccui.LayoutType.HORIZONTAL +ccui.LayoutType.relative = ccui.LayoutType.RELATIVE + +ccui.ListViewEventType.onsSelectedItem = ccui.ListViewEventType.ONSELECTEDITEM_START diff --git a/cocos/scripting/lua-bindings/script/ui/DeprecatedUIFunc.lua b/cocos/scripting/lua-bindings/script/ui/DeprecatedUIFunc.lua index 203f417d6d..8427740119 100644 --- a/cocos/scripting/lua-bindings/script/ui/DeprecatedUIFunc.lua +++ b/cocos/scripting/lua-bindings/script/ui/DeprecatedUIFunc.lua @@ -9,13 +9,13 @@ function TextDeprecated.setText(self, str) deprecatedTip("ccui.Text:setText","ccui.Text:setString") return self:setString(str) end -rawset(ccui.Text,"setText", TextDeprecated.setText) +ccui.Text.setText = TextDeprecated.setText function TextDeprecated.getStringValue(self) deprecatedTip("ccui.Text:getStringValue","ccui.Text:getString") return self:getString() end -rawset(ccui.Text,"getStringValue", TextDeprecated.getStringValue) +ccui.Text.getStringValue = TextDeprecated.getStringValue --functions of ccui.Text will be deprecated begin @@ -25,13 +25,13 @@ function TextAtlasDeprecated.setStringValue(self, str) deprecatedTip("ccui.TextAtlas:setStringValue","ccui.TextAtlas:setString") return self:setString(str) end -rawset(ccui.TextAtlas,"setStringValue", TextAtlasDeprecated.setStringValue) +ccui.TextAtlas.setStringValue = TextAtlasDeprecated.setStringValue function TextAtlasDeprecated.getStringValue(self) deprecatedTip("ccui.TextAtlas:getStringValue","ccui.TextAtlas:getString") return self:getString() end -rawset(ccui.TextAtlas,"getStringValue", TextAtlasDeprecated.getStringValue) +ccui.TextAtlas.getStringValue = TextAtlasDeprecated.getStringValue --functions of ccui.TextAtlas will be deprecated begin @@ -41,13 +41,13 @@ function TextBMFontDeprecated.setText(self, str) deprecatedTip("ccui.TextBMFont:setText","ccui.TextBMFont:setString") return self:setString(str) end -rawset(ccui.TextBMFont,"setText", TextBMFontDeprecated.setText) +ccui.TextBMFont.setText = TextBMFontDeprecated.setText function TextBMFontDeprecated.getStringValue(self) deprecatedTip("ccui.Text:getStringValue","ccui.TextBMFont:getString") return self:getString() end -rawset(ccui.Text,"getStringValue", TextBMFontDeprecated.getStringValue) +ccui.Text.getStringValue = TextBMFontDeprecated.getStringValue --functions of ccui.TextBMFont will be deprecated begin --functions of cc.ShaderCache will be deprecated begin @@ -56,7 +56,7 @@ function ShaderCacheDeprecated.getProgram(self,strShader) deprecatedTip("cc.ShaderCache:getProgram","cc.ShaderCache:getGLProgram") return self:getGLProgram(strShader) end -rawset(cc.ShaderCache,"getProgram", ShaderCacheDeprecated.getProgram) +cc.ShaderCache.getProgram = ShaderCacheDeprecated.getProgram --functions of ccui.TextBMFont will be deprecated begin --functions of ccui.Widget will be deprecated begin @@ -65,37 +65,37 @@ function UIWidgetDeprecated.getLeftInParent(self) deprecatedTip("ccui.Widget:getLeftInParent","ccui.Widget:getLeftBoundary") return self:getLeftBoundary() end -rawset(ccui.Widget,"getLeftInParent", UIWidgetDeprecated.getLeftInParent) +ccui.Widget.getLeftInParent = UIWidgetDeprecated.getLeftInParent function UIWidgetDeprecated.getBottomInParent(self) deprecatedTip("ccui.Widget:getBottomInParent","ccui.Widget:getBottomBoundary") return self:getBottomBoundary() end -rawset(ccui.Widget,"getBottomInParent", UIWidgetDeprecated.getBottomInParent) +ccui.Widget.getBottomInParent = UIWidgetDeprecated.getBottomInParent function UIWidgetDeprecated.getRightInParent(self) deprecatedTip("ccui.Widget:getRightInParent","ccui.Widget:getRightBoundary") return self:getRightBoundary() end -rawset(ccui.Widget,"getRightInParent", UIWidgetDeprecated.getRightInParent) +ccui.Widget.getRightInParent = UIWidgetDeprecated.getRightInParent function UIWidgetDeprecated.getTopInParent(self) deprecatedTip("ccui.Widget:getTopInParent","ccui.Widget:getTopBoundary") return self:getTopBoundary() end -rawset(ccui.Widget,"getTopInParent", UIWidgetDeprecated.getTopInParent) +ccui.Widget.getTopInParent = UIWidgetDeprecated.getTopInParent function UIWidgetDeprecated.getSize(self) deprecatedTip("ccui.Widget:getSize","ccui.Widget:getContentSize") return self:getContentSize() end -rawset(ccui.Widget,"getSize", UIWidgetDeprecated.getSize) +ccui.Widget.getSize = UIWidgetDeprecated.getSize function UIWidgetDeprecated.setSize(self, ...) deprecatedTip("ccui.Widget:setSize","ccui.Widget:setContentSize") return self:setContentSize(...) end -rawset(ccui.Widget,"setSize", UIWidgetDeprecated.setSize) +ccui.Widget.setSize = UIWidgetDeprecated.setSize --functions of ccui.Widget will be deprecated end @@ -105,19 +105,19 @@ function UICheckBoxDeprecated.addEventListenerCheckBox(self,handler) deprecatedTip("ccui.CheckBox:addEventListenerCheckBox","ccui.CheckBox:addEventListener") return self:addEventListener(handler) end -rawset(ccui.CheckBox,"addEventListenerCheckBox", UICheckBoxDeprecated.addEventListenerCheckBox) +ccui.CheckBox.addEventListenerCheckBox = UICheckBoxDeprecated.addEventListenerCheckBox function UICheckBoxDeprecated.setSelectedState(self,flag) deprecatedTip("ccui.CheckBox:setSelectedState", "ccui.CheckBox:setSelected") return self:setSelected(flag) end -rawset(ccui.CheckBox, "setSelectedState", UICheckBoxDeprecated.setSelectedState) +ccui.CheckBox.setSelectedState = UICheckBoxDeprecated.setSelectedState function UICheckBoxDeprecated.getSelectedState(self) deprecatedTip("ccui.CheckBox:getSelectedState", "ccui.CheckBox:getSelected") return self:getSelected() end -rawset(ccui.CheckBox, "getSelectedState", UICheckBoxDeprecated.setSelectedState) +ccui.CheckBox.getSelectedState = UICheckBoxDeprecated.setSelectedState --functions of ccui.CheckBox will be deprecated end @@ -127,7 +127,7 @@ function UISliderDeprecated.addEventListenerSlider(self,handler) deprecatedTip("ccui.Slider:addEventListenerSlider","ccui.Slider:addEventListener") return self:addEventListener(handler) end -rawset(ccui.Slider,"addEventListenerSlider", UISliderDeprecated.addEventListenerSlider) +ccui.Slider.addEventListenerSlider = UISliderDeprecated.addEventListenerSlider --functions of ccui.Slider will be deprecated end --functions of ccui.TextField will be deprecated begin @@ -136,19 +136,19 @@ function UITextFieldDeprecated.addEventListenerTextField(self,handler) deprecatedTip("ccui.TextField:addEventListenerTextField","ccui.TextField:addEventListener") return self:addEventListener(handler) end -rawset(ccui.TextField,"addEventListenerTextField", UITextFieldDeprecated.addEventListenerTextField) +ccui.TextField.addEventListenerTextField = UITextFieldDeprecated.addEventListenerTextField function UITextFieldDeprecated.setText(self, str) deprecatedTip("ccui.TextField:setText","ccui.TextField:setString") return self:setString(str) end -rawset(ccui.TextField,"setText", UITextFieldDeprecated.setText) +ccui.TextField.setText = UITextFieldDeprecated.setText function UITextFieldDeprecated.getStringValue(self) deprecatedTip("ccui.TextField:getStringValue","ccui.TextField:getString") return self:getString() end -rawset(ccui.TextField,"getStringValue", UITextFieldDeprecated.getStringValue) +ccui.TextField.getStringValue = UITextFieldDeprecated.getStringValue --functions of ccui.TextField will be deprecated end --functions of ccui.PageView will be deprecated begin @@ -157,7 +157,7 @@ function UIPageViewDeprecated.addEventListenerPageView(self,handler) deprecatedTip("ccui.PageView:addEventListenerPageView","ccui.PageView:addEventListener") return self:addEventListener(handler) end -rawset(ccui.PageView,"addEventListenerPageView", UIPageViewDeprecated.addEventListenerPageView) +ccui.PageView.addEventListenerPageView = UIPageViewDeprecated.addEventListenerPageView --functions of ccui.PageView will be deprecated end --functions of ccui.ScrollView will be deprecated begin @@ -166,7 +166,7 @@ function UIScrollViewDeprecated.addEventListenerScrollView(self,handler) deprecatedTip("ccui.ScrollView:addEventListenerScrollView","ccui.ScrollView:addEventListener") return self:addEventListener(handler) end -rawset(ccui.ScrollView,"addEventListenerScrollView", UIScrollViewDeprecated.addEventListenerScrollView) +ccui.ScrollView.addEventListenerScrollView = UIScrollViewDeprecated.addEventListenerScrollView --functions of ccui.ScrollView will be deprecated end --functions of ccui.ListView will be deprecated begin @@ -175,5 +175,5 @@ function UIListViewDeprecated.addEventListenerListView(self,handler) deprecatedTip("ccui.ListView:addEventListenerListView","ccui.ListView:addEventListener") return self:addEventListener(handler) end -rawset(ccui.ListView,"addEventListenerListView", UIListViewDeprecated.addEventListenerListView) +ccui.ListView.addEventListenerListView = UIListViewDeprecated.addEventListenerListView --functions of ccui.ListView will be deprecated end diff --git a/cocos/scripting/lua-bindings/script/ui/GuiConstants.lua b/cocos/scripting/lua-bindings/script/ui/GuiConstants.lua index 1b3ce7e439..1ebcaac88d 100644 --- a/cocos/scripting/lua-bindings/script/ui/GuiConstants.lua +++ b/cocos/scripting/lua-bindings/script/ui/GuiConstants.lua @@ -1,19 +1,20 @@ + ccui = ccui or {} -ccui.BrightStyle = +ccui.BrightStyle = { none = -1, normal = 0, highlight = 1, } -ccui.TextureResType = +ccui.TextureResType = { localType = 0, plistType = 1, } -ccui.TouchEventType = +ccui.TouchEventType = { began = 0, moved = 1, @@ -21,7 +22,7 @@ ccui.TouchEventType = canceled = 3, } -ccui.SizeType = +ccui.SizeType = { absolute = 0, percent = 1, @@ -32,13 +33,13 @@ ccui.PositionType = { percent = 1, } -ccui.CheckBoxEventType = +ccui.CheckBoxEventType = { selected = 0, unselected = 1, } -ccui.TextFiledEventType = +ccui.TextFiledEventType = { attach_with_ime = 0, detach_with_ime = 1, @@ -46,14 +47,14 @@ ccui.TextFiledEventType = delete_backward = 3, } -ccui.LayoutBackGroundColorType = +ccui.LayoutBackGroundColorType = { none = 0, solid = 1, gradient = 2, } -ccui.LayoutType = +ccui.LayoutType = { ABSOLUTE = 0, VERTICAL = 1, @@ -61,14 +62,14 @@ ccui.LayoutType = RELATIVE = 3, } -ccui.LayoutParameterType = +ccui.LayoutParameterType = { none = 0, linear = 1, relative = 2, } -ccui.LinearGravity = +ccui.LinearGravity = { none = 0, left = 1, @@ -79,7 +80,7 @@ ccui.LinearGravity = centerHorizontal = 6, } -ccui.RelativeAlign = +ccui.RelativeAlign = { alignNone = 0, alignParentTopLeft = 1, @@ -156,7 +157,7 @@ ccui.ListViewEventType = { } ccui.PageViewEventType = { - turning = 0, + turning = 0, } ccui.PVTouchDir = { diff --git a/cocos/storage/local-storage/Android.mk b/cocos/storage/local-storage/Android.mk index 65a29778fd..38563bbe8e 100644 --- a/cocos/storage/local-storage/Android.mk +++ b/cocos/storage/local-storage/Android.mk @@ -6,7 +6,7 @@ LOCAL_MODULE := cocos_localstorage_static LOCAL_MODULE_FILENAME := liblocalstorage LOCAL_SRC_FILES := LocalStorage.cpp \ -LocalStorageAndroid.cpp +LocalStorage-android.cpp LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/.. diff --git a/cocos/storage/local-storage/LocalStorage.h b/cocos/storage/local-storage/LocalStorage.h index c79d46b1ee..58692549e6 100644 --- a/cocos/storage/local-storage/LocalStorage.h +++ b/cocos/storage/local-storage/LocalStorage.h @@ -31,20 +31,21 @@ THE SOFTWARE. #define __JSB_LOCALSTORAGE_H #include +#include "CCPlatformMacros.h" /** Initializes the database. If path is null, it will create an in-memory DB */ -void localStorageInit( const std::string& fullpath = ""); +void CC_DLL localStorageInit( const std::string& fullpath = ""); /** Frees the allocated resources */ -void localStorageFree(); +void CC_DLL localStorageFree(); /** sets an item in the LS */ -void localStorageSetItem( const std::string& key, const std::string& value); +void CC_DLL localStorageSetItem( const std::string& key, const std::string& value); /** gets an item from the LS */ -std::string localStorageGetItem( const std::string& key ); +std::string CC_DLL localStorageGetItem( const std::string& key ); /** removes an item from the LS */ -void localStorageRemoveItem( const std::string& key ); +void CC_DLL localStorageRemoveItem( const std::string& key ); #endif // __JSB_LOCALSTORAGE_H diff --git a/cocos/storage/local-storage/proj.wp8/libLocalStorage.vcxproj b/cocos/storage/local-storage/proj.wp8/libLocalStorage.vcxproj deleted file mode 100644 index 34e625ad9b..0000000000 --- a/cocos/storage/local-storage/proj.wp8/libLocalStorage.vcxproj +++ /dev/null @@ -1,163 +0,0 @@ - - - - - Debug - Win32 - - - Debug - ARM - - - Release - Win32 - - - Release - ARM - - - - {88982C27-5A7B-40A8-86E7-B3187B44B322} - libLocalStorage - en-US - 11.0 - - - - StaticLibrary - true - v110_wp80 - - - StaticLibrary - true - v110_wp80 - - - StaticLibrary - false - true - v110_wp80 - - - StaticLibrary - false - true - v110_wp80 - - - - - - - - - - - - - - - - - - - - - - - - false - - - - _LIB;%(PreprocessorDefinitions) - NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot)external\sqlite3\include;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;NDEBUG;%(PreprocessorDefinitions) - NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot)external\sqlite3\include;%(AdditionalIncludeDirectories) - WP8;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;%(PreprocessorDefinitions) - NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot)external\sqlite3\include;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;NDEBUG;%(PreprocessorDefinitions) - NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot)external\sqlite3\include;%(AdditionalIncludeDirectories) - WP8;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - true - - - true - false - - - - - - - - - - - - - \ No newline at end of file diff --git a/cocos/storage/local-storage/proj.wp8/libLocalStorage.vcxproj.filters b/cocos/storage/local-storage/proj.wp8/libLocalStorage.vcxproj.filters deleted file mode 100644 index b23d606b74..0000000000 --- a/cocos/storage/local-storage/proj.wp8/libLocalStorage.vcxproj.filters +++ /dev/null @@ -1,21 +0,0 @@ - - - - - {0310200c-b520-4f77-85f6-46f568b10f4d} - - - {69cfa37c-4b20-409e-ad74-a26314878d8a} - - - - - Source Files - - - - - Header Files - - - \ No newline at end of file diff --git a/cocos/ui/Android.mk b/cocos/ui/Android.mk index 3969bd138f..316d8a51d1 100644 --- a/cocos/ui/Android.mk +++ b/cocos/ui/Android.mk @@ -35,20 +35,12 @@ UIWebView.cpp \ UIWebViewImpl-android.cpp \ UIEditBox/UIEditBox.cpp \ UIEditBox/UIEditBoxImpl-android.cpp \ +UILayoutComponent.cpp \ +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../editor-support -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/.. \ -$(LOCAL_PATH)/../editor-support +LOCAL_C_INCLUDES := $(LOCAL_PATH)/../editor-support -LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. \ -$(LOCAL_PATH)/../../external \ -$(LOCAL_PATH)/.. \ -$(LOCAL_PATH)/../.. \ -$(LOCAL_PATH)/../editor-support \ -$(LOCAL_PATH)/../platform/android - -LOCAL_STATIC_LIBRARIES := cocos2dx_internal_static -LOCAL_STATIC_LIBRARIES += cocos_extension_static +LOCAL_STATIC_LIBRARIES := cocos_extension_static include $(BUILD_STATIC_LIBRARY) - diff --git a/cocos/ui/CMakeLists.txt b/cocos/ui/CMakeLists.txt index 9866a91012..630c4ee2dc 100644 --- a/cocos/ui/CMakeLists.txt +++ b/cocos/ui/CMakeLists.txt @@ -46,6 +46,7 @@ set(COCOS_UI_SRC ui/UIWebView.cpp ui/UIWidget.cpp ui/UIEditBox/UIEditBox.cpp + ui/UILayoutComponent.cpp ${COCOS_UI_SPECIFIC_SRC} ) diff --git a/cocos/ui/CocosGUI.h b/cocos/ui/CocosGUI.h index dc34fd3154..c98f238a17 100644 --- a/cocos/ui/CocosGUI.h +++ b/cocos/ui/CocosGUI.h @@ -48,13 +48,14 @@ THE SOFTWARE. #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) #include "ui/UIVideoPlayer.h" #endif -#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) #include "ui/UIWebView.h" #endif #include "ui/UIDeprecated.h" #include "ui/GUIExport.h" #include "ui/UIScale9Sprite.h" #include "ui/UIEditBox/UIEditBox.h" +#include "ui/UILayoutComponent.h" NS_CC_BEGIN namespace ui { diff --git a/cocos/ui/GUIDefine.h b/cocos/ui/GUIDefine.h index 4a3e0b73cb..9c91a4fefe 100644 --- a/cocos/ui/GUIDefine.h +++ b/cocos/ui/GUIDefine.h @@ -69,4 +69,6 @@ #define CC_VIDEOPLAYER_DEBUG_DRAW 0 +#define __LAYOUT_COMPONENT_NAME "__ui_layout" + #endif /* defined(__TestCpp__GUIDefine__) */ diff --git a/cocos/ui/GUIExport.h b/cocos/ui/GUIExport.h index 983504664f..717a0ad9e4 100644 --- a/cocos/ui/GUIExport.h +++ b/cocos/ui/GUIExport.h @@ -1,7 +1,7 @@ #ifndef __CCLIBGUI_H__ #define __CCLIBGUI_H__ -#if defined(WIN32) && defined(_WINDOWS) +#if (defined(WIN32) && defined(_WINDOWS)) || defined(WINRT) || defined(WP8) #ifdef __MINGW32__ #include #endif diff --git a/cocos/ui/UIButton.cpp b/cocos/ui/UIButton.cpp index 8e938366c4..93b16c8bce 100644 --- a/cocos/ui/UIButton.cpp +++ b/cocos/ui/UIButton.cpp @@ -37,7 +37,7 @@ static const int NORMAL_RENDERER_Z = (-2); static const int PRESSED_RENDERER_Z = (-2); static const int DISABLED_RENDERER_Z = (-2); static const int TITLE_RENDERER_Z = (-1); -static const float ZOOM_ACTION_TIME_STEP = 0.05; +static const float ZOOM_ACTION_TIME_STEP = 0.05f; IMPLEMENT_CLASS_GUI_INFO(Button) @@ -192,6 +192,20 @@ bool Button::isScale9Enabled()const void Button::ignoreContentAdaptWithSize(bool ignore) { + if (_unifySize) + { + if (_scale9Enabled) + { + ProtectedNode::setContentSize(_customSize); + } + else + { + Size s = getVirtualRendererSize(); + ProtectedNode::setContentSize(s); + } + onSizeChanged(); + return; + } if (!_scale9Enabled || (_scale9Enabled && !ignore)) { Widget::ignoreContentAdaptWithSize(ignore); @@ -310,12 +324,29 @@ void Button::setCapInsets(const Rect &capInsets) void Button::setCapInsetsNormalRenderer(const Rect &capInsets) { - _capInsetsNormal = capInsets; + float x = capInsets.origin.x; + float y = capInsets.origin.y; + float width = capInsets.size.width; + float height = capInsets.size.height; + + if (_normalTextureSize.width < width) + { + x = 0.0f; + width = 0.0f; + } + if (_normalTextureSize.height < height) + { + y = 0.0f; + height = 0.0f; + } + Rect rect(x, y, width, height); + + _capInsetsNormal = rect; if (!_scale9Enabled) { return; } - _buttonNormalRenderer->setCapInsets(capInsets); + _buttonNormalRenderer->setCapInsets(rect); } const Rect& Button::getCapInsetsNormalRenderer()const @@ -325,12 +356,29 @@ const Rect& Button::getCapInsetsNormalRenderer()const void Button::setCapInsetsPressedRenderer(const Rect &capInsets) { - _capInsetsPressed = capInsets; + float x = capInsets.origin.x; + float y = capInsets.origin.y; + float width = capInsets.size.width; + float height = capInsets.size.height; + + if (_pressedTextureSize.width < width) + { + x = 0.0f; + width = 0.0f; + } + if (_pressedTextureSize.height < height) + { + y = 0.0f; + height = 0.0f; + } + Rect rect(x, y, width, height); + + _capInsetsPressed = rect; if (!_scale9Enabled) { return; } - _buttonClickedRenderer->setCapInsets(capInsets); + _buttonClickedRenderer->setCapInsets(rect); } const Rect& Button::getCapInsetsPressedRenderer()const @@ -340,12 +388,29 @@ const Rect& Button::getCapInsetsPressedRenderer()const void Button::setCapInsetsDisabledRenderer(const Rect &capInsets) { - _capInsetsDisabled = capInsets; + float x = capInsets.origin.x; + float y = capInsets.origin.y; + float width = capInsets.size.width; + float height = capInsets.size.height; + + if (_disabledTextureSize.width < width) + { + x = 0.0f; + width = 0.0f; + } + if (_disabledTextureSize.height < height) + { + y = 0.0f; + height = 0.0f; + } + Rect rect(x, y, width, height); + + _capInsetsDisabled = rect; if (!_scale9Enabled) { return; } - _buttonDisableRenderer->setCapInsets(capInsets); + _buttonDisableRenderer->setCapInsets(rect); } const Rect& Button::getCapInsetsDisabledRenderer()const @@ -465,6 +530,13 @@ void Button::updateTitleLocation() _titleRenderer->setPosition(_contentSize.width * 0.5f, _contentSize.height * 0.5f); } +void Button::updateContentSize() +{ + if (_ignoreSize) { + this->setContentSize(getVirtualRendererSize()); + } +} + void Button::onSizeChanged() { Widget::onSizeChanged(); @@ -524,7 +596,11 @@ Node* Button::getVirtualRenderer() void Button::normalTextureScaleChangedWithSize() { - if (_ignoreSize) + if (_unifySize) + { + _buttonNormalRenderer->setPreferredSize(_contentSize); + } + else if (_ignoreSize) { if (!_scale9Enabled) { @@ -562,7 +638,11 @@ void Button::normalTextureScaleChangedWithSize() void Button::pressedTextureScaleChangedWithSize() { - if (_ignoreSize) + if (_unifySize) + { + _buttonClickedRenderer->setPreferredSize(_contentSize); + } + else if (_ignoreSize) { if (!_scale9Enabled) { @@ -599,7 +679,11 @@ void Button::pressedTextureScaleChangedWithSize() void Button::disabledTextureScaleChangedWithSize() { - if (_ignoreSize) + if (_unifySize) + { + _buttonDisableRenderer->setPreferredSize(_contentSize); + } + else if (_ignoreSize) { if (!_scale9Enabled) { @@ -638,6 +722,7 @@ void Button::setPressedActionEnabled(bool enabled) void Button::setTitleText(const std::string& text) { _titleRenderer->setString(text); + updateContentSize(); } const std::string& Button::getTitleText() const @@ -665,6 +750,7 @@ void Button::setTitleFontSize(float size) config.fontSize = size; _titleRenderer->setTTFConfig(config); } + updateContentSize(); _fontSize = size; } @@ -694,6 +780,10 @@ void Button::setTitleFontName(const std::string& fontName) _type = FontType::TTF; } else{ _titleRenderer->setSystemFontName(fontName); + if (_type == FontType::TTF) + { + _titleRenderer->requestSystemFontRefresh(); + } _type = FontType::SYSTEM; } _fontName = fontName; diff --git a/cocos/ui/UIButton.h b/cocos/ui/UIButton.h index f598bd7d12..8f1c1b3bfa 100644 --- a/cocos/ui/UIButton.h +++ b/cocos/ui/UIButton.h @@ -229,6 +229,7 @@ protected: virtual void adaptRenderers() override; void updateTitleLocation(); + void updateContentSize(); virtual Widget* createCloneInstance() override; virtual void copySpecialProperties(Widget* model) override; diff --git a/cocos/ui/UICheckBox.cpp b/cocos/ui/UICheckBox.cpp index d2e2a595cf..619ebbfa71 100644 --- a/cocos/ui/UICheckBox.cpp +++ b/cocos/ui/UICheckBox.cpp @@ -317,6 +317,10 @@ void CheckBox::onPressStateChangedToNormal() _backGroundSelectedBoxRenderer->setVisible(false); _backGroundBoxDisabledRenderer->setVisible(false); _frontCrossDisabledRenderer->setVisible(false); + if (_isSelected) + { + _frontCrossRenderer->setVisible(true); + } } void CheckBox::onPressStateChangedToPressed() diff --git a/cocos/ui/UIEditBox/UIEditBoxImpl-mac.mm b/cocos/ui/UIEditBox/UIEditBoxImpl-mac.mm index 05822f197e..e6f1e3e884 100644 --- a/cocos/ui/UIEditBox/UIEditBoxImpl-mac.mm +++ b/cocos/ui/UIEditBox/UIEditBoxImpl-mac.mm @@ -34,6 +34,60 @@ #define getEditBoxImplMac() ((cocos2d::ui::EditBoxImplMac*)editBox_) +@interface CustomTextFieldFormatter : NSFormatter { + int maxLength; +} +- (void)setMaximumLength:(int)len; +- (int)maximumLength; + +@end + +@implementation CustomTextFieldFormatter + +- (id)init { + + if(self = [super init]){ + + maxLength = INT_MAX; + } + + return self; +} + +- (void)setMaximumLength:(int)len { + maxLength = len; +} + +- (int)maximumLength { + return maxLength; +} + +- (NSString *)stringForObjectValue:(id)object { + return (NSString *)object; +} + +- (BOOL)getObjectValue:(id *)object forString:(NSString *)string errorDescription:(NSString **)error { + *object = string; + return YES; +} + +- (BOOL)isPartialStringValid:(NSString **)partialStringPtr + proposedSelectedRange:(NSRangePointer)proposedSelRangePtr + originalString:(NSString *)origString + originalSelectedRange:(NSRange)origSelRange + errorDescription:(NSString **)error { + if ([*partialStringPtr length] > maxLength) { + return NO; + } + + return YES; +} + +- (NSAttributedString *)attributedStringForObjectValue:(id)anObject withDefaultAttributes:(NSDictionary *)attributes { + return nil; +} + +@end @implementation UIEditBoxImplMac @@ -206,28 +260,6 @@ #endif } -/** - * Delegate method called before the text has been changed. - * @param textField The text field containing the text. - * @param range The range of characters to be replaced. - * @param string The replacement string. - * @return YES if the specified text range should be replaced; otherwise, NO to keep the old text. - */ -- (BOOL)textField:(NSTextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string -{ - if (getEditBoxImplMac()->getMaxLength() < 0) - { - return YES; - } - - NSUInteger oldLength = [[textField stringValue] length]; - NSUInteger replacementLength = [string length]; - NSUInteger rangeLength = range.length; - - NSUInteger newLength = oldLength - rangeLength + replacementLength; - - return newLength <= getEditBoxImplMac()->getMaxLength(); -} /** * Called each time when the text field's text has changed. @@ -364,6 +396,10 @@ void EditBoxImplMac::setInputMode(EditBox::InputMode inputMode) void EditBoxImplMac::setMaxLength(int maxLength) { _maxTextLength = maxLength; + id formater = [[[CustomTextFieldFormatter alloc]init] autorelease]; + [formater setMaximumLength:maxLength]; + [_sysEdit.secureTextField setFormatter:formater]; + [_sysEdit.textField setFormatter:formater]; } int EditBoxImplMac::getMaxLength() diff --git a/cocos/ui/UIHelper.cpp b/cocos/ui/UIHelper.cpp index 73f1fdbabc..579a9cff5e 100644 --- a/cocos/ui/UIHelper.cpp +++ b/cocos/ui/UIHelper.cpp @@ -24,6 +24,7 @@ THE SOFTWARE. #include "ui/UIHelper.h" #include "ui/UIWidget.h" +#include "ui/UILayoutComponent.h" NS_CC_BEGIN @@ -146,6 +147,37 @@ std::string Helper::getSubStringOfUTF8String(const std::string& str, std::string return str.substr(min,max); } + void Helper::doLayout(cocos2d::Node *rootNode) + { + for(auto& node : rootNode->getChildren()) + { + auto com = node->getComponent(__LAYOUT_COMPONENT_NAME); + Node *parent = node->getParent(); + if (nullptr != com && nullptr != parent) { + LayoutComponent* layoutComponent = (LayoutComponent*)com; + + if (layoutComponent->isUsingPercentPosition()) + { + layoutComponent->RefreshLayoutPosition(LayoutComponent::PositionType::PreRelativePosition,layoutComponent->getPercentPosition()); + } + else if (layoutComponent->getReferencePoint() != LayoutComponent::ReferencePoint::BOTTOM_LEFT) + { + layoutComponent->RefreshLayoutPosition(LayoutComponent::PositionType::RelativePosition,layoutComponent->getRelativePosition()); + } + + if (layoutComponent->isUsingPercentContentSize()) + { + layoutComponent->RefreshLayoutSize(LayoutComponent::SizeType::PreSize,layoutComponent->getPercentContentSize()); + } + + Widget* uiWidget = dynamic_cast(node); + if ( nullptr == uiWidget ) + { + doLayout(node); + } + } + } + } } NS_CC_END diff --git a/cocos/ui/UIHelper.h b/cocos/ui/UIHelper.h index 20e8ee3cf2..5d78a59fb1 100644 --- a/cocos/ui/UIHelper.h +++ b/cocos/ui/UIHelper.h @@ -28,6 +28,7 @@ THE SOFTWARE. #include #include "platform/CCPlatformMacros.h" #include "ui/GUIExport.h" +#include "2d/CCNode.h" NS_CC_BEGIN @@ -69,7 +70,7 @@ public: /** * @brief Get a UTF8 substring from a std::string with a given start position and length - * Sample: std::string str = "中国中国中国”; substr = getSubStringOfUTF8String(str,0,2) will = "中国" + * Sample: std::string str = "中国中国中国"; substr = getSubStringOfUTF8String(str,0,2) will = "中国" * @param start The start position of the substring. * @param length The length of the substring in UTF8 count * @return a UTF8 substring @@ -77,6 +78,8 @@ public: static std::string getSubStringOfUTF8String(const std::string& str, std::string::size_type start, std::string::size_type length); + + static void doLayout(Node *rootNode); }; } diff --git a/cocos/ui/UILayout.cpp b/cocos/ui/UILayout.cpp index 787b9207b6..1a1e9b66ac 100644 --- a/cocos/ui/UILayout.cpp +++ b/cocos/ui/UILayout.cpp @@ -644,6 +644,7 @@ void Layout::setBackGroundImage(const std::string& fileName,TextureResType texTy if (_backGroundImage == nullptr) { addBackGroundImage(); + _backGroundImage->setScale9Enabled(_backGroundScale9Enabled); } _backGroundImageFileName = fileName; _bgImageTexType = texType; @@ -1771,8 +1772,8 @@ bool Layout::isWidgetAncestorSupportLoopFocus(Widget* widget, FocusDirection di else { CCASSERT(0, "invalid layout type"); + return false; } - } else { @@ -1780,9 +1781,6 @@ bool Layout::isWidgetAncestorSupportLoopFocus(Widget* widget, FocusDirection di } } - - - Widget* Layout::findNextFocusedWidget(FocusDirection direction, Widget* current) { if (_isFocusPassing || this->isFocused()) diff --git a/cocos/ui/UILayoutComponent.cpp b/cocos/ui/UILayoutComponent.cpp new file mode 100644 index 0000000000..0dd4d3b5ef --- /dev/null +++ b/cocos/ui/UILayoutComponent.cpp @@ -0,0 +1,341 @@ +/**************************************************************************** + Copyright (c) 2013-2014 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "UILayoutComponent.h" +#include "2d/CCNode.h" +#include "GUIDefine.h" + + +NS_CC_BEGIN + +namespace ui { + LayoutComponent::LayoutComponent() + :_actived(true) + ,_usingPercentContentSize(false) + ,_usingPercentPosition(false) + ,_referencePoint(ReferencePoint::BOTTOM_LEFT) + { + _name = __LAYOUT_COMPONENT_NAME; + } + + LayoutComponent::~LayoutComponent() + { + + } + + bool LayoutComponent::init() + { + bool ret = true; + do + { + if (!Component::init()) + { + ret = false; + break; + } + + //put layout component initalized code here + + } while (0); + return ret; + } + + //Size + const Vec2& LayoutComponent::getOwnerContentSize()const + { + return this->getOwner()->getContentSize(); + } + void LayoutComponent::setOwnerContentSize(const Vec2& percent) + { + this->RefreshLayoutSize(SizeType::Size,percent); + } + + const Vec2& LayoutComponent::getPercentContentSize()const + { + return _percentContentSize; + } + + void LayoutComponent::setPercentContentSize(const Vec2& percent) + { + this->RefreshLayoutSize(SizeType::PreSize,percent); + } + + bool LayoutComponent::isUsingPercentContentSize() + { + return _usingPercentContentSize; + } + + void LayoutComponent::setUsingPercentContentSize(bool flag) + { + _usingPercentContentSize = flag; + this->RefreshLayoutSize(SizeType::PreSizeEnable,Vec2(0,0)); + } + + void LayoutComponent::RefreshLayoutSize(SizeType sType, const Vec2& size) + { + Node* parentNode = this->getOwner()->getParent(); + if (parentNode != NULL && _actived) + { + Size parentSize = parentNode->getContentSize(); + + switch (sType) + { + case SizeType::Size: + if (parentSize.width != 0 && parentSize.height != 0) + { + _percentContentSize = Point(size.x/parentSize.width,size.y/parentSize.height); + } + else + { + _percentContentSize = Point(0,0); + } + this->getOwner()->setContentSize(Size(size.x,size.y)); + break; + case SizeType::PreSize: + _percentContentSize = size; + if (_usingPercentContentSize) + { + this->getOwner()->setContentSize(Size(size.x*parentSize.width,size.y*parentSize.height)); + } + break; + case SizeType::PreSizeEnable: + if (_usingPercentContentSize) + { + Size baseSize = this->getOwner()->getContentSize(); + if (parentSize.width != 0) + { + _percentContentSize.x = baseSize.width/parentSize.width; + } + else + { + _percentContentSize.x = 0; + baseSize.width = 0; + } + + if (parentSize.height != 0) + { + _percentContentSize.y = baseSize.height/parentSize.height; + } + else + { + _percentContentSize.y = 0; + baseSize.height = 0; + } + + this->getOwner()->setContentSize(baseSize); + } + break; + default: + break; + } + } + else + { + switch (sType) + { + case SizeType::Size: + this->getOwner()->setContentSize(Size(size.x,size.y)); + break; + case SizeType::PreSize: + _percentContentSize = size; + break; + default: + break; + } + } + } + + //Position + bool LayoutComponent::isUsingPercentPosition() + { + return _usingPercentPosition; + } + void LayoutComponent::setUsingPercentPosition(bool flag) + { + _usingPercentPosition = flag; + this->RefreshLayoutPosition(PositionType::PreRelativePositionEnable,Vec2(0,0)); + } + + const Vec2& LayoutComponent::getPercentPosition() + { + return _percentPosition; + } + void LayoutComponent::setPercentPosition(const Vec2& percent) + { + this->RefreshLayoutPosition(PositionType::PreRelativePosition,percent); + } + + const Vec2& LayoutComponent::getOwnerPosition()const + { + return this->getOwner()->getPosition(); + } + void LayoutComponent::setOwnerPosition(const Vec2& point) + { + this->RefreshLayoutPosition(PositionType::Position,point); + } + + const Vec2& LayoutComponent::getRelativePosition() + { + return _relativePosition; + } + void LayoutComponent::setRelativePosition(const Vec2& position) + { + this->RefreshLayoutPosition(PositionType::RelativePosition,position); + } + + LayoutComponent::ReferencePoint LayoutComponent::getReferencePoint() + { + return _referencePoint; + } + void LayoutComponent::setReferencePoint(ReferencePoint point) + { + _referencePoint = point; + this->RefreshLayoutPosition(PositionType::RelativePosition,_relativePosition); + } + + void LayoutComponent::RefreshLayoutPosition(PositionType pType,const Vec2& point) + { + Node* parentNode = this->getOwner()->getParent(); + Point basePoint = point; + if (parentNode != NULL && _actived) + { + Size parentSize = parentNode->getContentSize(); + + if ( pType == PositionType::PreRelativePosition) + { + _percentPosition = point; + basePoint = Point(_percentPosition.x*parentSize.width,_percentPosition.y*parentSize.height); + } + else if(pType == PositionType::PreRelativePositionEnable) + { + if (_usingPercentPosition) + { + if (parentSize.width != 0) + { + _percentPosition.x = _relativePosition.x/parentSize.width; + } + else + { + _percentPosition.x = 0; + _relativePosition.x = 0; + } + + if (parentSize.height != 0) + { + _percentPosition.y = _relativePosition.y/parentSize.height; + } + else + { + _percentPosition.y = 0; + _relativePosition.y = 0; + } + } + basePoint = _relativePosition; + } + + Point inversePoint = basePoint; + switch (_referencePoint) + { + case ReferencePoint::TOP_LEFT: + inversePoint.y = parentSize.height - inversePoint.y; + break; + case ReferencePoint::BOTTOM_RIGHT: + inversePoint.x = parentSize.width - inversePoint.x; + break; + case ReferencePoint::TOP_RIGHT: + inversePoint.x = parentSize.width - inversePoint.x; + inversePoint.y = parentSize.height - inversePoint.y; + break; + default: + break; + } + + switch (pType) + { + case PositionType::Position: + this->getOwner()->setPosition(basePoint); + _relativePosition = inversePoint; + if (parentSize.width != 0 && parentSize.height != 0) + { + _percentPosition = Point(_relativePosition.x/parentSize.width,_relativePosition.y/parentSize.height); + } + else + { + _percentPosition = Point(0,0); + } + break; + case PositionType::RelativePosition: + this->getOwner()->setPosition(inversePoint); + _relativePosition = basePoint; + if (parentSize.width != 0 && parentSize.height != 0) + { + _percentPosition = Point(_relativePosition.x/parentSize.width,_relativePosition.y/parentSize.height); + } + else + { + _percentPosition = Point(0,0); + } + break; + case PositionType::PreRelativePosition: + this->getOwner()->setPosition(inversePoint); + _relativePosition = basePoint; + break; + case PositionType::PreRelativePositionEnable: + this->getOwner()->setPosition(inversePoint); + _relativePosition = basePoint; + break; + default: + break; + } + } + else + { + switch (pType) + { + case PositionType::Position: + this->getOwner()->setPosition(basePoint); + if (_referencePoint == ReferencePoint::BOTTOM_LEFT) + { + _relativePosition = basePoint; + } + break; + case PositionType::RelativePosition: + _relativePosition = basePoint; + break; + case PositionType::PreRelativePosition: + _percentPosition = basePoint; + break; + default: + break; + } + } + } + + void LayoutComponent::SetActiveEnable(bool enable) + { + _actived = enable; + } +} + +NS_CC_END \ No newline at end of file diff --git a/cocos/ui/UILayoutComponent.h b/cocos/ui/UILayoutComponent.h new file mode 100644 index 0000000000..83c142b9a0 --- /dev/null +++ b/cocos/ui/UILayoutComponent.h @@ -0,0 +1,114 @@ +/**************************************************************************** +Copyright (c) 2013-2014 Chukong Technologies Inc. + +http://www.cocos2d-x.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +****************************************************************************/ + +#ifndef __cocos2d_libs__LayoutComponent__ +#define __cocos2d_libs__LayoutComponent__ +#include "2d/CCComponent.h" +#include "ui/GUIExport.h" + +NS_CC_BEGIN + + namespace ui { + class CC_GUI_DLL LayoutComponent : public Component + { + public: + LayoutComponent(); + ~LayoutComponent(); + virtual bool init()override; + CREATE_FUNC(LayoutComponent); + /** + * When a node has a ReferencePositoin with value equals LEFT_BOTTOM, + * it will treat the left bottom corner of its parent as the origin(0,0) when positioning itself + * which is the same as cocos2d-x does. But you can change it by assigning a + * different ReferencePosition. + * For example: If you use ReferencePosition with value equals RIGHT_TOP, + * then it will treat the right top corner of its parent as the origin(0,0) when positioning itself. + */ + enum class ReferencePoint + { + BOTTOM_LEFT, + TOP_LEFT, + BOTTOM_RIGHT, + TOP_RIGHT + }; + + enum class PositionType + { + Position, + RelativePosition, + PreRelativePosition, + PreRelativePositionEnable + }; + + enum class SizeType + { + Size, + PreSize, + PreSizeEnable + }; + + bool isUsingPercentPosition(); + void setUsingPercentPosition(bool flag); + + const Vec2& getPercentPosition(); + void setPercentPosition(const Vec2& percent); + + const Vec2& getRelativePosition(); + void setRelativePosition(const Vec2& position); + + void setReferencePoint(ReferencePoint point); + ReferencePoint getReferencePoint(); + + const Vec2& getOwnerPosition()const; + void setOwnerPosition(const Vec2& point); + + void RefreshLayoutPosition(PositionType pType,const Vec2& point); + + const Vec2& getOwnerContentSize()const; + void setOwnerContentSize(const Vec2& percent); + + const Vec2& getPercentContentSize()const; + void setPercentContentSize(const Vec2& percent); + + bool isUsingPercentContentSize(); + void setUsingPercentContentSize(bool flag); + + void RefreshLayoutSize(SizeType sType, const Vec2& size); + + void SetActiveEnable(bool enable); + private: + + Vec2 _percentContentSize; + bool _usingPercentContentSize; + + ReferencePoint _referencePoint; + Vec2 _relativePosition; + Vec2 _percentPosition; + bool _usingPercentPosition; + bool _actived; + }; +} + +NS_CC_END +#endif /* defined(__cocos2d_libs__LayoutComponent__) */ diff --git a/cocos/ui/UILoadingBar.cpp b/cocos/ui/UILoadingBar.cpp index bee9f8a17c..c480b8537d 100644 --- a/cocos/ui/UILoadingBar.cpp +++ b/cocos/ui/UILoadingBar.cpp @@ -100,14 +100,14 @@ void LoadingBar::setDirection(cocos2d::ui::LoadingBar::Direction direction) { case Direction::LEFT: _barRenderer->setAnchorPoint(Vec2(0.0f,0.5f)); - _barRenderer->setPosition(0,0.0f); + _barRenderer->setPosition(Vec2(0,_contentSize.height*0.5f)); if (!_scale9Enabled) { _barRenderer->setFlippedX(false); } break; case Direction::RIGHT: _barRenderer->setAnchorPoint(Vec2(1.0f,0.5f)); - _barRenderer->setPosition(_totalLength,0.0f); + _barRenderer->setPosition(Vec2(_totalLength,_contentSize.height*0.5f)); if (!_scale9Enabled) { _barRenderer->setFlippedX(true); } @@ -149,13 +149,13 @@ void LoadingBar::loadTexture(const std::string& texture,TextureResType texType) case Direction::LEFT: _barRenderer->setAnchorPoint(Vec2(0.0f,0.5f)); if (!_scale9Enabled) { - _barRenderer->setFlippedX(false); + _barRenderer->getSprite()->setFlippedX(false); } break; case Direction::RIGHT: _barRenderer->setAnchorPoint(Vec2(1.0f,0.5f)); if (!_scale9Enabled) { - _barRenderer->setFlippedX(true); + _barRenderer->getSprite()->setFlippedX(true); } break; } @@ -216,11 +216,11 @@ void LoadingBar::setPercent(float percent) { return; } + _percent = percent; if (_totalLength <= 0) { return; } - _percent = percent; float res = _percent / 100.0f; if (_scale9Enabled) @@ -277,7 +277,13 @@ Node* LoadingBar::getVirtualRenderer() void LoadingBar::barRendererScaleChangedWithSize() { - if (_ignoreSize) + if (_unifySize) + { + //_barRenderer->setPreferredSize(_contentSize); + _totalLength = _contentSize.width; + this->setPercent(_percent); + } + else if (_ignoreSize) { if (!_scale9Enabled) { @@ -310,10 +316,10 @@ void LoadingBar::barRendererScaleChangedWithSize() switch (_direction) { case Direction::LEFT: - _barRenderer->setPosition(0.0f, _contentSize.height / 2.0f); + _barRenderer->setPosition(Vec2(0.0f,_contentSize.height*0.5f)); break; case Direction::RIGHT: - _barRenderer->setPosition(_totalLength, _contentSize.height / 2.0f); + _barRenderer->setPosition(Vec2(_totalLength,_contentSize.height*0.5f)); break; default: break; diff --git a/cocos/ui/UIScale9Sprite.cpp b/cocos/ui/UIScale9Sprite.cpp index 10107a69c0..26ad2c0dad 100644 --- a/cocos/ui/UIScale9Sprite.cpp +++ b/cocos/ui/UIScale9Sprite.cpp @@ -149,7 +149,8 @@ namespace ui { bool Scale9Sprite::initWithBatchNode(cocos2d::SpriteBatchNode *batchnode, const cocos2d::Rect &rect, const cocos2d::Rect &capInsets) { - return initWithBatchNode(batchnode, rect, false, capInsets); + auto sprite = Sprite::createWithTexture(batchnode->getTexture()); + return init(sprite, rect, false, capInsets); } #define TRANSLATE_X(x, y, xtranslate) \ @@ -828,7 +829,7 @@ y+=ytranslate; \ void Scale9Sprite::setSpriteFrame(SpriteFrame * spriteFrame, const Rect& capInsets) { Sprite * sprite = Sprite::createWithTexture(spriteFrame->getTexture()); - this->updateWithSprite(sprite, spriteFrame->getRect(), spriteFrame->isRotated(), spriteFrame->getOffset(), spriteFrame->getOriginalSize(), Rect::ZERO); + this->updateWithSprite(sprite, spriteFrame->getRect(), spriteFrame->isRotated(), spriteFrame->getOffset(), spriteFrame->getOriginalSize(), capInsets); // Reset insets this->_insetLeft = capInsets.origin.x; diff --git a/cocos/ui/UIScrollView.cpp b/cocos/ui/UIScrollView.cpp index 7563dbce83..95bab8ed39 100644 --- a/cocos/ui/UIScrollView.cpp +++ b/cocos/ui/UIScrollView.cpp @@ -123,6 +123,10 @@ void ScrollView::initRenderer() { Layout::initRenderer(); _innerContainer = Layout::create(); + _innerContainer->setColor(Color3B(255,255,255)); + _innerContainer->setOpacity(255); + _innerContainer->setCascadeColorEnabled(true); + _innerContainer->setCascadeOpacityEnabled(true); addProtectedChild(_innerContainer, 1, 1); } @@ -1418,10 +1422,12 @@ void ScrollView::endRecordSlidAction() } float totalDis = 0.0f; Vec2 dir; + Vec2 touchEndPositionInNodeSpace = this->convertToNodeSpace(_touchEndPosition); + Vec2 touchBeganPositionInNodeSpace = this->convertToNodeSpace(_touchBeganPosition); switch (_direction) { case Direction::VERTICAL: - totalDis = _touchEndPosition.y - _touchBeganPosition.y; + totalDis = touchEndPositionInNodeSpace.y - touchBeganPositionInNodeSpace.y; if (totalDis < 0.0f) { dir = SCROLLDIR_DOWN; @@ -1432,7 +1438,7 @@ void ScrollView::endRecordSlidAction() } break; case Direction::HORIZONTAL: - totalDis = _touchEndPosition.x - _touchBeganPosition.x; + totalDis = touchEndPositionInNodeSpace.x - touchBeganPositionInNodeSpace.x; if (totalDis < 0.0f) { dir = SCROLLDIR_LEFT; @@ -1444,7 +1450,7 @@ void ScrollView::endRecordSlidAction() break; case Direction::BOTH: { - Vec2 subVector = _touchEndPosition - _touchBeganPosition; + Vec2 subVector = touchEndPositionInNodeSpace - touchBeganPositionInNodeSpace; totalDis = subVector.getLength(); dir = subVector.getNormalized(); break; @@ -1466,7 +1472,9 @@ void ScrollView::handlePressLogic(Touch *touch) void ScrollView::handleMoveLogic(Touch *touch) { - Vec2 delta = touch->getLocation() - touch->getPreviousLocation(); + Vec2 touchPositionInNodeSpace = this->convertToNodeSpace(touch->getLocation()); + Vec2 previousTouchPositionInNodeSpace = this->convertToNodeSpace(touch->getPreviousLocation()); + Vec2 delta = touchPositionInNodeSpace - previousTouchPositionInNodeSpace; switch (_direction) { case Direction::VERTICAL: // vertical @@ -1821,8 +1829,6 @@ Widget* ScrollView::findNextFocusedWidget(cocos2d::ui::Widget::FocusDirection di return Widget::findNextFocusedWidget(direction, current); } } - - } NS_CC_END diff --git a/cocos/ui/UISlider.cpp b/cocos/ui/UISlider.cpp index 2b25200fa2..a71fe22220 100644 --- a/cocos/ui/UISlider.cpp +++ b/cocos/ui/UISlider.cpp @@ -461,7 +461,12 @@ Node* Slider::getVirtualRenderer() void Slider::barRendererScaleChangedWithSize() { - if (_ignoreSize) + if (_unifySize) + { + _barLength = _contentSize.width; + _barRenderer->setPreferredSize(_contentSize); + } + else if (_ignoreSize) { _barRenderer->setScale(1.0f); @@ -494,7 +499,11 @@ void Slider::barRendererScaleChangedWithSize() void Slider::progressBarRendererScaleChangedWithSize() { - if (_ignoreSize) + if (_unifySize) + { + _progressBarRenderer->setPreferredSize(_contentSize); + } + else if (_ignoreSize) { if (!_scale9Enabled) { diff --git a/cocos/ui/UIText.cpp b/cocos/ui/UIText.cpp index 2f95878d25..b6206a8dcc 100644 --- a/cocos/ui/UIText.cpp +++ b/cocos/ui/UIText.cpp @@ -155,6 +155,10 @@ void Text::setFontName(const std::string& name) } else{ _labelRenderer->setSystemFontName(name); + if (_type == Type::TTF) + { + _labelRenderer->requestSystemFontRefresh(); + } _type = Type::SYSTEM; } _fontName = name; @@ -306,6 +310,7 @@ void Text::labelScaleChangedWithSize() { if (_ignoreSize) { + _labelRenderer->setDimensions(0,0); _labelRenderer->setScale(1.0f); _normalScaleValueX = _normalScaleValueY = 1.0f; } diff --git a/cocos/ui/UITextField.cpp b/cocos/ui/UITextField.cpp index 3a217ccfb2..54ad94a07b 100644 --- a/cocos/ui/UITextField.cpp +++ b/cocos/ui/UITextField.cpp @@ -496,6 +496,10 @@ void TextField::setFontName(const std::string& name) _fontType = FontType::TTF; } else { _textFieldRenderer->setSystemFontName(name); + if (_fontType == FontType::TTF) + { + _textFieldRenderer->requestSystemFontRefresh(); + } _fontType = FontType::SYSTEM; } _fontName = name; diff --git a/cocos/ui/UIWebView.cpp b/cocos/ui/UIWebView.cpp index 745b281db0..b7b2a4fc7d 100644 --- a/cocos/ui/UIWebView.cpp +++ b/cocos/ui/UIWebView.cpp @@ -28,9 +28,4 @@ #include "UIWebViewImpl-android.h" #include "UIWebView-inl.h" -#elif (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) - -#include "UIWebViewImpl-win32.h" -#include "UIWebView-inl.h" - #endif diff --git a/cocos/ui/UIWebViewImpl-win32.cpp b/cocos/ui/UIWebViewImpl-win32.cpp deleted file mode 100644 index f97542eced..0000000000 --- a/cocos/ui/UIWebViewImpl-win32.cpp +++ /dev/null @@ -1,876 +0,0 @@ -/**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Author: Jeff Wang - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#include "platform/CCPlatformConfig.h" - -#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 - -#include -#include -#include -#include -#include "UIWebViewImpl-win32.h" -#include "UIWebView.h" -#include "base/CCDirector.h" -#include "platform/CCFileUtils.h" -#include "platform/CCGLView.h" - -// declarate -class Win32WebControl : public DWebBrowserEvents2 -{ -public: - Win32WebControl(); - - bool createWebView( - const std::function &shouldStartLoading, - const std::function &didFinishLoading, - const std::function &didFailLoading, - const std::function &onJsCallback); - void removeWebView(); - - void setWebViewRect(const int left, const int top, const int width, const int height); - void setJavascriptInterfaceScheme(const std::string &scheme) const; - void loadData(const std::string &data, const std::string &MIMEType, const std::string &encoding, const std::string &baseURL) const; - void loadHTMLString(const std::string &html, const std::string &baseURL); - void loadURL(const std::string &url) const; - void loadFile(const std::string &filePath) const; - void stopLoading() const; - void reload() const; - bool canGoBack() const; - bool canGoForward() const; - void goBack() const; - void goForward() const; - void evaluateJS(const std::string &js) const; - void setScalesPageToFit(const bool scalesPageToFit) const; - void setWebViewVisible(const bool visible) const; - - // Implement IUnknown - virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject); - virtual ULONG STDMETHODCALLTYPE AddRef(void); - virtual ULONG STDMETHODCALLTYPE Release(void); - - // Implement IDispatch - virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo); - virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); - virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames( - REFIID riid, - LPOLESTR *rgszNames, - UINT cNames, - LCID lcid, - DISPID *rgDispId); - virtual HRESULT STDMETHODCALLTYPE Invoke( - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS *pDispParams, - VARIANT *pVarResult, - EXCEPINFO *pExcepInfo, - UINT *puArgErr); - -private: - CAxWindow _winContainer; - IWebBrowser2 *_webBrowser2; - IConnectionPoint *_connectionPoint; - IDispatch *_htmlDoc; - bool _goBackEnabled; - bool _goForwardEnabled; - DWORD _cookie; - ULONG _reference; - std::function _shouldStartLoading; - std::function _didFinishLoading; - std::function _didFailLoading; - std::function _onJsCallback; - std::string _htmlWillLoad; - - static bool s_isInitialized; - static CComModule s_module; - static void lazyInit(); - - void _loadHTMLString(const std::string &html) const; - void loadURL(BSTR url) const; - void loadURL(const std::wstring &url) const; -}; - - - -namespace cocos2d { - namespace experimental { - namespace ui { - - WebViewImpl::WebViewImpl(WebView *webView) : _createSucceeded(false), _systemWebControl(nullptr), _webView(webView) - { - _systemWebControl = new Win32WebControl(); - if (_systemWebControl == nullptr) - { - return; - } - - _createSucceeded = _systemWebControl->createWebView( - [this](const std::string &url)->bool { - std::function shouldStartLoading = _webView->getOnShouldStartLoading(); - if (shouldStartLoading != nullptr) - { - return shouldStartLoading(_webView, url); - } - return true; - }, - [this](const std::string &url) { - WebView::ccWebViewCallback didFinishLoading = _webView->getOnDidFinishLoading(); - if (didFinishLoading != nullptr) - { - didFinishLoading(_webView, url); - } - }, - [this](const std::string &url) { - WebView::ccWebViewCallback didFailLoading = _webView->getOnDidFailLoading(); - if (didFailLoading != nullptr) - { - didFailLoading(_webView, url); - } - }, - [this](const std::string &url) { - WebView::ccWebViewCallback onJsCallback = _webView->getOnJSCallback(); - if (onJsCallback != nullptr) - { - onJsCallback(_webView, url); - } - }); - } - - WebViewImpl::~WebViewImpl() - { - if (_systemWebControl != nullptr) - { - _systemWebControl->removeWebView(); - delete _systemWebControl; - _systemWebControl = nullptr; - } - } - - void WebViewImpl::loadData(const Data &data, const std::string &MIMEType, const std::string &encoding, const std::string &baseURL) - { - if (_createSucceeded) - { - std::string dataString(reinterpret_cast(data.getBytes()), static_cast(data.getSize())); - _systemWebControl->loadData(dataString, MIMEType, encoding, baseURL); - } - } - - void WebViewImpl::loadHTMLString(const std::string &string, const std::string &baseURL) - { - if (_createSucceeded) - { - _systemWebControl->loadHTMLString(string, baseURL); - } - } - - void WebViewImpl::loadURL(const std::string &url) - { - if (_createSucceeded) - { - _systemWebControl->loadURL(url); - } - } - - void WebViewImpl::loadFile(const std::string &fileName) - { - if (_createSucceeded) - { - std::string fullPath = FileUtils::getInstance()->fullPathForFilename(fileName); - _systemWebControl->loadFile(fullPath); - } - } - - void WebViewImpl::stopLoading() - { - if (_createSucceeded) - { - _systemWebControl->stopLoading(); - } - } - - void WebViewImpl::reload() - { - if (_createSucceeded) - { - _systemWebControl->reload(); - } - } - - bool WebViewImpl::canGoBack() - { - if (_createSucceeded) - { - return _systemWebControl->canGoBack(); - } - return false; - } - - bool WebViewImpl::canGoForward() - { - if (_createSucceeded) - { - return _systemWebControl->canGoForward(); - } - return false; - } - - void WebViewImpl::goBack() - { - if (_createSucceeded) - { - _systemWebControl->goBack(); - } - } - - void WebViewImpl::goForward() - { - if (_createSucceeded) - { - _systemWebControl->goForward(); - } - } - - void WebViewImpl::setJavascriptInterfaceScheme(const std::string &scheme) - { - if (_createSucceeded) - { - _systemWebControl->setJavascriptInterfaceScheme(scheme); - } - } - - void WebViewImpl::evaluateJS(const std::string &js) - { - if (_createSucceeded) - { - _systemWebControl->evaluateJS(js); - } - } - - void WebViewImpl::setScalesPageToFit(const bool scalesPageToFit) - { - if (_createSucceeded) - { - _systemWebControl->setScalesPageToFit(scalesPageToFit); - } - } - - void WebViewImpl::draw(Renderer *renderer, Mat4 const &transform, uint32_t flags) - { - if (_createSucceeded && (flags & Node::FLAGS_TRANSFORM_DIRTY)) - { - Director *directorInstance = cocos2d::Director::getInstance(); - GLView *glView = directorInstance->getOpenGLView(); - const Size &frameSize = glView->getFrameSize(); - const Size &winSize = directorInstance->getWinSize(); - Vec2 leftBottom = this->_webView->convertToWorldSpace(Point::ZERO); - Vec2 rightTop = this->_webView->convertToWorldSpace(Point(_webView->getContentSize().width, _webView->getContentSize().height)); - float uiLeft = frameSize.width / 2 + (leftBottom.x - winSize.width / 2) * glView->getScaleX(); - float uiTop = frameSize.height / 2 - (rightTop.y - winSize.height / 2) * glView->getScaleY(); - - _systemWebControl->setWebViewRect(uiLeft, uiTop, - (rightTop.x - leftBottom.x) * glView->getScaleX(), - (rightTop.y - leftBottom.y) * glView->getScaleY()); - } - } - - void WebViewImpl::setVisible(bool visible) - { - if (_createSucceeded) - { - _systemWebControl->setWebViewVisible(visible); - } - } - } // namespace ui - } // namespace experimental -} //namespace cocos2d - -// -// Implement Win32WebControl -// -bool Win32WebControl::s_isInitialized = false; -CComModule Win32WebControl::s_module; - -void Win32WebControl::lazyInit() -{ - // reset the main windows style so that its drawing does not cover the webview sub window - HWND hwnd = cocos2d::Director::getInstance()->getOpenGLView()->getWin32Window(); - LONG style = GetWindowLong(hwnd, GWL_STYLE); - SetWindowLong(hwnd, GWL_STYLE, style | WS_CLIPCHILDREN); - - HINSTANCE hInstance = GetModuleHandle(NULL); - CoInitialize(NULL); - s_module.Init(NULL, hInstance); - AtlAxWinInit(); -} - -static HGLOBAL globalAllocWstringFromString(const std::string &str) -{ - int len = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0); - if (len <= 0) - { - return NULL; - } - HGLOBAL wstr = GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT, (len + 1) * sizeof(WCHAR)); - if (wstr == NULL) - { - return NULL; - } - MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, (WCHAR *)wstr, len); - return wstr; -} - -static std::string bstr2string(BSTR bstr) -{ - wchar_t *str = OLE2W(bstr); - std::string ret; - int len = WideCharToMultiByte(CP_UTF8, 0, str, -1, NULL, 0, NULL, NULL); - if (len > 0) - { - HGLOBAL utf8Str = GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT, len + 1); - if (utf8Str != NULL) - { - WideCharToMultiByte(CP_UTF8, 0, str, -1, (char *)utf8Str, len, NULL, NULL); - ret.assign((char *)utf8Str); - GlobalFree(utf8Str); - } - } - return ret; -} - -static bool isUrlJs(BSTR url) -{ - return wcsncmp(OLE2W(url), L"javascript:", 11) == 0; -} - -Win32WebControl::Win32WebControl() - : _webBrowser2(NULL) - , _connectionPoint(NULL) - , _htmlDoc(NULL) - , _goBackEnabled(true) - , _goForwardEnabled(true) - , _cookie(0) - , _reference(0) - , _shouldStartLoading(nullptr) - , _didFinishLoading(nullptr) - , _didFailLoading(nullptr) -{ - if (!s_isInitialized) - { - lazyInit(); - } -} - -bool Win32WebControl::createWebView( - const std::function &shouldStartLoading, - const std::function &didFinishLoading, - const std::function &didFailLoading, - const std::function &onJsCallback) -{ - bool ret = false; - IConnectionPointContainer *container = NULL; - do - { - HWND hwnd = cocos2d::Director::getInstance()->getOpenGLView()->getWin32Window(); - _winContainer.Create(hwnd, NULL, NULL, WS_CHILD | WS_VISIBLE); - - HRESULT hr; - hr = _winContainer.CreateControl(L"shell.Explorer.2"); - CC_BREAK_IF(FAILED(hr)); - - hr = _winContainer.QueryControl(__uuidof(IWebBrowser2), (void **)&_webBrowser2); - CC_BREAK_IF(FAILED(hr) || _webBrowser2 == NULL); - - _webBrowser2->put_Silent(VARIANT_TRUE); - - VARIANT var; - VariantInit(&var); - var.vt = VT_BSTR; - var.bstrVal = SysAllocString(L"about:blank"); - hr = _webBrowser2->Navigate2(&var, NULL, NULL, NULL, NULL); - SysFreeString(var.bstrVal); - VariantClear(&var); - CC_BREAK_IF(FAILED(hr)); - - hr = _webBrowser2->QueryInterface(IID_IConnectionPointContainer, (void **)&container); - CC_BREAK_IF(FAILED(hr)); - - hr = container->FindConnectionPoint(DIID_DWebBrowserEvents2, &_connectionPoint); - CC_BREAK_IF(FAILED(hr)); - - hr = _connectionPoint->Advise(this, &_cookie); - CC_BREAK_IF(FAILED(hr)); - - hr = _webBrowser2->get_Document(&_htmlDoc); - CC_BREAK_IF(FAILED(hr)); - - ret = true; - } while (0); - - if (!ret) - { - removeWebView(); - } - if (container != NULL) - { - container->Release(); - container = NULL; - } - - _shouldStartLoading = shouldStartLoading; - _didFinishLoading = didFinishLoading; - _didFailLoading = didFailLoading; - _onJsCallback = onJsCallback; - return ret; -} - -void Win32WebControl::removeWebView() -{ - if (_connectionPoint != NULL) - { - _connectionPoint->Unadvise(_cookie); - _connectionPoint->Release(); - _connectionPoint = NULL; - } - if (_htmlDoc != NULL) - { - _htmlDoc->Release(); - _htmlDoc = NULL; - } - if (_webBrowser2 != NULL) - { - _webBrowser2->Release(); - _webBrowser2 = NULL; - } - _winContainer.DestroyWindow(); -} - -void Win32WebControl::setWebViewRect(const int left, const int top, const int width, const int height) -{ - _winContainer.MoveWindow(left, top, width, height); -} - -void Win32WebControl::setJavascriptInterfaceScheme(const std::string &scheme) const -{ - // To be implemented! -} - -void Win32WebControl::loadData(const std::string &data, const std::string &MIMEType, const std::string &encoding, const std::string &baseURL) const -{ - // To be implemented! -} - -void Win32WebControl::loadHTMLString(const std::string &html, const std::string &baseURL) -{ - // NOTE: should we load base URL first? - // If so, we will cause many loadURL callbacks, - // and it would be very difficult to distinguish between `loadURL' and `loadHTMLString' - - //if (baseURL.empty()) - //{ - _loadHTMLString(html); - //} - //else - //{ - // _htmlWillLoad = html; - // loadURL(baseURL); - //} -} - -void Win32WebControl::_loadHTMLString(const std::string &html) const -{ - bool flag = false; - HGLOBAL htmlText = globalAllocWstringFromString(html); - if (htmlText != NULL) - { - IStream *stream = NULL; - if (SUCCEEDED(CreateStreamOnHGlobal(htmlText, FALSE, &stream))) - { - IPersistStreamInit *persistStreamInit = NULL; - if (SUCCEEDED(_htmlDoc->QueryInterface(IID_IPersistStreamInit, (void **)&persistStreamInit))) - { - if (SUCCEEDED(persistStreamInit->InitNew()) && SUCCEEDED(persistStreamInit->Load(stream))) - { - flag = true; - } - persistStreamInit->Release(); - } - stream->Release(); - } - GlobalFree(htmlText); - } - if (flag) - { - if (_didFinishLoading != nullptr) - { - std::string str("data:text/html,"); - str.append(html); - _didFinishLoading(str); - } - } - else - { - if (_didFailLoading != nullptr) - { - std::string str("data:text/html,"); - str.append(html); - _didFailLoading(str); - } - } -} - -void Win32WebControl::loadURL(BSTR url) const -{ - VARIANT var; - VariantInit(&var); - var.vt = VT_BSTR; - var.bstrVal = url; - _webBrowser2->Navigate2(&var, NULL, NULL, NULL, NULL); - VariantClear(&var); -} - -void Win32WebControl::loadURL(const std::wstring &url) const -{ - BSTR bstr = SysAllocString(url.c_str()); - loadURL(bstr); - SysFreeString(bstr); -} - -void Win32WebControl::loadURL(const std::string &url) const -{ - HGLOBAL unicodeStr = globalAllocWstringFromString(url); - if (unicodeStr != NULL) - { - loadURL(std::wstring((WCHAR *)unicodeStr)); - GlobalFree(unicodeStr); - } -} - -void Win32WebControl::loadFile(const std::string &filePath) const -{ - HGLOBAL unicodeStr = globalAllocWstringFromString(filePath); - if (unicodeStr != NULL) - { - loadURL(std::wstring((WCHAR *)unicodeStr)); - GlobalFree(unicodeStr); - } -} - -void Win32WebControl::stopLoading() const -{ - _webBrowser2->Stop(); -} - -void Win32WebControl::reload() const -{ - _webBrowser2->Refresh(); -} - -bool Win32WebControl::canGoBack() const -{ - return _goBackEnabled; -} - -bool Win32WebControl::canGoForward() const -{ - return _goForwardEnabled; -} - -void Win32WebControl::goBack() const -{ - _webBrowser2->GoBack(); -} - -void Win32WebControl::goForward() const -{ - _webBrowser2->GoForward(); -} - -void Win32WebControl::evaluateJS(const std::string &js) const -{ - std::string url("javascript:"); - url.append(js); - loadURL(url); -} - -void Win32WebControl::setScalesPageToFit(const bool scalesPageToFit) const -{ -} - -void Win32WebControl::setWebViewVisible(const bool visible) const -{ - _webBrowser2->put_Visible(visible ? VARIANT_TRUE : VARIANT_FALSE); -} - -// Implement IUnknown -HRESULT STDMETHODCALLTYPE Win32WebControl::QueryInterface(REFIID riid, void **ppvObject) -{ - BOOL isBadPtr = FALSE; - CCASSERT(!(isBadPtr = IsBadWritePtr(ppvObject, sizeof(void *))), ""); - if (isBadPtr) - { - return E_POINTER; - } - *ppvObject = NULL; - - if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IDispatch) || IsEqualIID(riid, DIID_DWebBrowserEvents2)) - { - AddRef(); - *ppvObject = this; - return S_OK; - } - - return E_NOINTERFACE; -} - -ULONG STDMETHODCALLTYPE Win32WebControl::AddRef(void) -{ - InterlockedIncrement(&_reference); - return _reference; -} - -ULONG STDMETHODCALLTYPE Win32WebControl::Release(void) -{ - CCASSERT(_reference > 0, "reference count should greater than 0"); - InterlockedDecrement(&_reference); - // DO NOT delete this if _reference == 0, otherwise, it will crash when call removeWebView - return _reference; -} - -// Implement IDispatch -HRESULT STDMETHODCALLTYPE Win32WebControl::GetTypeInfoCount(UINT *pctinfo) -{ - *pctinfo = 0; - return S_OK; -} - -HRESULT STDMETHODCALLTYPE Win32WebControl::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) -{ - UNREFERENCED_PARAMETER(iTInfo); - UNREFERENCED_PARAMETER(lcid); - *ppTInfo = NULL; - return E_NOTIMPL; -} - -HRESULT STDMETHODCALLTYPE Win32WebControl::GetIDsOfNames( - REFIID riid, - LPOLESTR *rgszNames, - UINT cNames, - LCID lcid, - DISPID *rgDispId) -{ - UNREFERENCED_PARAMETER(riid); - UNREFERENCED_PARAMETER(rgszNames); - UNREFERENCED_PARAMETER(cNames); - UNREFERENCED_PARAMETER(lcid); - UNREFERENCED_PARAMETER(rgDispId); - return E_NOTIMPL; -} - -HRESULT STDMETHODCALLTYPE Win32WebControl::Invoke( - DISPID dispIdMember, - REFIID riid, - LCID lcid, - WORD wFlags, - DISPPARAMS *pDispParams, - VARIANT *pVarResult, - EXCEPINFO *pExcepInfo, - UINT *puArgErr) -{ - if (!IsEqualIID(riid, IID_NULL)) // riid should always be IID_NULL - { - return DISP_E_UNKNOWNINTERFACE; - } - - switch (dispIdMember) - { - case DISPID_COMMANDSTATECHANGE: - if (pDispParams != NULL && pDispParams->cArgs == 2) - { - const VARIANTARG *rgvarg = pDispParams->rgvarg; - if (rgvarg[0].vt == VT_BOOL && rgvarg[1].vt == VT_I4) - { - switch (rgvarg[1].intVal) - { - case CSC_NAVIGATEFORWARD: - _goForwardEnabled = (rgvarg[0].boolVal != VARIANT_FALSE); // VARIANT_TRUE is -1 - return S_OK; - case CSC_NAVIGATEBACK: - _goBackEnabled = (rgvarg[0].boolVal != VARIANT_FALSE); // VARIANT_TRUE is -1 - return S_OK; - default: - break; - } - } - } - break; - - case DISPID_BEFORENAVIGATE2: - if (pDispParams != NULL && pDispParams->cArgs == 7) - { - VARIANTARG *rgvarg = pDispParams->rgvarg; - if (rgvarg[6].vt == VT_DISPATCH && rgvarg[6].pdispVal == _webBrowser2) - { - if (rgvarg[0].vt == (VT_BYREF | VT_BOOL) && rgvarg[5].vt == (VT_BYREF | VT_VARIANT)) - { - VARIANT_BOOL *cancel = rgvarg[0].pboolVal; - BSTR url = rgvarg[5].pvarVal->bstrVal; - *cancel = VARIANT_FALSE; - if (isUrlJs(url)) - { - if (_onJsCallback != nullptr) - { - _onJsCallback(bstr2string(url + 11)); // skip the prefix `javascript' - } - } - else - { - if (_shouldStartLoading != nullptr) - { - *cancel = _shouldStartLoading(bstr2string(url)) ? VARIANT_FALSE : VARIANT_TRUE; // VARIANT_TRUE is -1 - } - } - return S_OK; - } - } - } - break; - - case DISPID_DOCUMENTCOMPLETE: - if (pDispParams != NULL && pDispParams->cArgs == 2) - { - const VARIANTARG *rgvarg = pDispParams->rgvarg; - if (rgvarg[1].vt == VT_DISPATCH && rgvarg[1].pdispVal == _webBrowser2 && rgvarg[0].vt == (VT_BYREF | VT_VARIANT)) - { - READYSTATE state; - if (SUCCEEDED(_webBrowser2->get_ReadyState(&state)) && state == READYSTATE_COMPLETE) - { - BSTR url = rgvarg[0].pvarVal->bstrVal; - if (_didFinishLoading != nullptr && !isUrlJs(url)) // ignore js - { - _didFinishLoading(bstr2string(url)); - } - if (!_htmlWillLoad.empty()) - { - _loadHTMLString(_htmlWillLoad); - _htmlWillLoad.clear(); - } - return S_OK; - } - } - } - break; - - case DISPID_NAVIGATECOMPLETE2: - if (pDispParams != NULL && pDispParams->cArgs == 2) - { - const VARIANTARG *rgvarg = pDispParams->rgvarg; - if (rgvarg[1].vt == VT_DISPATCH && rgvarg[1].pdispVal == _webBrowser2) - { - if (rgvarg[0].vt == (VT_BYREF | VT_VARIANT)) - { - BSTR url = rgvarg[0].pvarVal->bstrVal; - return S_OK; - } - } - } - break; - - case DISPID_NAVIGATEERROR: - if (pDispParams != NULL && pDispParams->cArgs == 5) - { - const VARIANTARG *rgvarg = pDispParams->rgvarg; - if (rgvarg[4].vt == VT_DISPATCH && rgvarg[4].pdispVal == _webBrowser2) - { - if (rgvarg[3].vt == (VT_BYREF | VT_VARIANT) && rgvarg[1].vt == (VT_BYREF | VT_VARIANT) && rgvarg[0].vt == (VT_BYREF | VT_BOOL)) - { - VARIANT_BOOL *cancel = rgvarg[0].pboolVal; - HRESULT codes = rgvarg[1].pvarVal->lVal; - BSTR url = rgvarg[3].pvarVal->bstrVal; - if (_didFailLoading != nullptr && !isUrlJs(url)) // ignore js - { - _didFailLoading(bstr2string(url)); - } - *cancel = VARIANT_FALSE; - return S_OK; - } - } - } - break; - case DISPID_PROGRESSCHANGE: - if (pDispParams != NULL && pDispParams->cArgs == 2) - { - const VARIANTARG *rgvarg = pDispParams->rgvarg; - if (rgvarg[0].vt == VT_I4 && rgvarg[1].vt == VT_I4) - { - LONG maxProgress = rgvarg[0].lVal; - LONG curProgress = rgvarg[1].lVal; - return S_OK; - } - } - break; - - case DISPID_NEWWINDOW2: - if (pDispParams != NULL && pDispParams->cArgs == 2) - { - const VARIANTARG *rgvarg = pDispParams->rgvarg; - if (rgvarg[0].vt == (VT_BYREF | VT_BOOL) && rgvarg[1].vt == (VT_BYREF | VT_DISPATCH)) - { - VARIANT_BOOL *cancel = rgvarg[0].pboolVal; - IDispatch **dis = rgvarg[1].ppdispVal; - *dis = NULL; - *cancel = VARIANT_TRUE; // forbit to create new window - return S_OK; - } - } - break; - case DISPID_NEWWINDOW3: - if (pDispParams != NULL && pDispParams->cArgs == 5) - { - const VARIANTARG *rgvarg = pDispParams->rgvarg; - if (rgvarg[0].vt == VT_BSTR && rgvarg[1].vt == VT_BSTR && rgvarg[2].vt == VT_I4 - && rgvarg[3].vt == (VT_BYREF | VT_BOOL) && rgvarg[4].vt == (VT_BYREF | VT_DISPATCH)) - { - BSTR url = rgvarg[0].bstrVal; - BSTR urlContext = rgvarg[1].bstrVal; - LONG flags = rgvarg[2].lVal; - VARIANT_BOOL *cancel = rgvarg[3].pboolVal; - IDispatch **dis = rgvarg[4].ppdispVal; - *dis = NULL; - *cancel = VARIANT_TRUE; // forbit to create new window - loadURL(url); - return S_OK; - } - } - break; - - default: - break; - } - return E_NOTIMPL; -} - -#endif // CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 diff --git a/cocos/ui/UIWebViewImpl-win32.h b/cocos/ui/UIWebViewImpl-win32.h deleted file mode 100644 index e9749a07b3..0000000000 --- a/cocos/ui/UIWebViewImpl-win32.h +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** - Copyright (c) 2014 cocos2d-x.org - Author: Jeff Wang - - http://www.cocos2d-x.org - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ****************************************************************************/ - -#ifndef __COCOS2D__UI__WEBVIEWIMPL_WIN32_H_ -#define __COCOS2D__UI__WEBVIEWIMPL_WIN32_H_ - -#include "platform/CCPlatformConfig.h" - -#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 - -#include -#include "CCStdC.h" - -namespace cocos2d { - class Data; - class Renderer; - class Mat4; - - namespace experimental { - namespace ui { - class WebView; - } - } -} - -class Win32WebControl; - -namespace cocos2d { - namespace experimental { - namespace ui { - - class WebViewImpl - { - public: - WebViewImpl(cocos2d::experimental::ui::WebView *webView); - virtual ~WebViewImpl(); - - void setJavascriptInterfaceScheme(const std::string &scheme); - void loadData(const cocos2d::Data &data, const std::string &MIMEType, const std::string &encoding, const std::string &baseURL); - void loadHTMLString(const std::string &string, const std::string &baseURL); - void loadURL(const std::string &url); - void loadFile(const std::string &fileName); - void stopLoading(); - void reload(); - bool canGoBack(); - bool canGoForward(); - void goBack(); - void goForward(); - void evaluateJS(const std::string &js); - void setScalesPageToFit(const bool scalesPageToFit); - - virtual void draw(cocos2d::Renderer *renderer, cocos2d::Mat4 const &transform, uint32_t flags); - virtual void setVisible(bool visible); - - private: - bool _createSucceeded; - Win32WebControl *_systemWebControl; - WebView *_webView; - }; - } // namespace ui - } // namespace experimental -} //cocos2d - -#endif // CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 - -#endif // __COCOS2D__UI__WEBVIEWIMPL_WIN32_H_ diff --git a/cocos/ui/UIWidget.cpp b/cocos/ui/UIWidget.cpp index c609e5306d..b682b3d7a7 100644 --- a/cocos/ui/UIWidget.cpp +++ b/cocos/ui/UIWidget.cpp @@ -30,6 +30,7 @@ THE SOFTWARE. #include "base/CCDirector.h" #include "base/CCEventFocus.h" #include "base/CCEventDispatcher.h" +#include "ui/UILayoutComponent.h" NS_CC_BEGIN @@ -135,6 +136,7 @@ Widget* Widget::_focusedWidget = nullptr; Widget::FocusNavigationController* Widget::_focusNavigationController = nullptr; Widget::Widget(): +_unifySize(false), _enabled(true), _bright(true), _touchEnabled(false), @@ -217,8 +219,13 @@ bool Widget::init() void Widget::onEnter() { - updateSizeAndPosition(); ProtectedNode::onEnter(); + if (_positionType == PositionType::PERCENT + || _sizeType == SizeType::PERCENT) { + if (_parent) { + Helper::doLayout(_parent); + } + } } void Widget::onExit() @@ -229,7 +236,7 @@ void Widget::onExit() void Widget::visit(Renderer *renderer, const Mat4 &parentTransform, uint32_t parentFlags) { - if (_visible) + if (_visible || !isVisitableByVisitingCamera()) { adaptRenderers(); ProtectedNode::visit(renderer, parentTransform, parentFlags); @@ -250,40 +257,33 @@ void Widget::initRenderer() { } +LayoutComponent* Widget::getOrCreateLayoutComponent() +{ + auto layoutComponent = this->getComponent(__LAYOUT_COMPONENT_NAME); + if (nullptr == layoutComponent) + { + LayoutComponent *component = LayoutComponent::create(); + this->addComponent(component); + layoutComponent = component; + } + + return (LayoutComponent*)layoutComponent; +} + void Widget::setContentSize(const cocos2d::Size &contentSize) { ProtectedNode::setContentSize(contentSize); _customSize = contentSize; - if (_ignoreSize) + if (_unifySize) + { + //unify Size logic + } + else if (_ignoreSize) { _contentSize = getVirtualRendererSize(); } - if (_running) - { - Widget* widgetParent = getWidgetParent(); - Size pSize; - if (widgetParent) - { - pSize = widgetParent->getContentSize(); - } - else - { - pSize = _parent->getContentSize(); - } - float spx = 0.0f; - float spy = 0.0f; - if (pSize.width > 0.0f) - { - spx = _customSize.width / pSize.width; - } - if (pSize.height > 0.0f) - { - spy = _customSize.height / pSize.height; - } - _sizePercent = Vec2(spx, spy); - } onSizeChanged(); } @@ -294,29 +294,15 @@ void Widget::setSize(const Size &size) void Widget::setSizePercent(const Vec2 &percent) { - _sizePercent = percent; - Size cSize = _customSize; - if (_running) + + auto component = this->getOrCreateLayoutComponent(); + component->setUsingPercentContentSize(true); + component->setPercentContentSize(percent); + + if (nullptr != _parent) { - Widget* widgetParent = getWidgetParent(); - if (widgetParent) - { - cSize = Size(widgetParent->getContentSize().width * percent.x , widgetParent->getContentSize().height * percent.y); - } - else - { - cSize = Size(_parent->getContentSize().width * percent.x , _parent->getContentSize().height * percent.y); - } + Helper::doLayout(_parent); } - if (_ignoreSize) - { - this->setContentSize(getVirtualRendererSize()); - } - else - { - this->setContentSize(cSize); - } - _customSize = cSize; } void Widget::updateSizeAndPosition() @@ -401,6 +387,17 @@ void Widget::updateSizeAndPosition(const cocos2d::Size &parentSize) void Widget::setSizeType(SizeType type) { _sizeType = type; + + auto component = this->getOrCreateLayoutComponent(); + + if (_sizeType == Widget::SizeType::PERCENT) + { + component->setUsingPercentContentSize(true); + } + else + { + component->setUsingPercentContentSize(false); + } } Widget::SizeType Widget::getSizeType() const @@ -410,6 +407,11 @@ Widget::SizeType Widget::getSizeType() const void Widget::ignoreContentAdaptWithSize(bool ignore) { + if (_unifySize) + { + this->setContentSize(_customSize); + return; + } if (_ignoreSize == ignore) { return; @@ -441,9 +443,11 @@ const Size& Widget::getCustomSize() const return _customSize; } -const Vec2& Widget::getSizePercent() const +const Vec2& Widget::getSizePercent() { - return _sizePercent; + auto component = this->getOrCreateLayoutComponent(); + + return component->getPercentContentSize(); } Vec2 Widget::getWorldPosition()const @@ -458,14 +462,7 @@ Node* Widget::getVirtualRenderer() void Widget::onSizeChanged() { - for (auto& child : getChildren()) - { - Widget* widgetChild = dynamic_cast(child); - if (widgetChild) - { - widgetChild->updateSizeAndPosition(); - } - } + Helper::doLayout(this); } Size Widget::getVirtualRendererSize() const @@ -475,6 +472,11 @@ Size Widget::getVirtualRendererSize() const void Widget::updateContentSizeWithTextureSize(const cocos2d::Size &size) { + if (_unifySize) + { + this->setContentSize(size); + return; + } if (_ignoreSize) { this->setContentSize(size); @@ -912,47 +914,36 @@ void Widget::interceptTouchEvent(cocos2d::ui::Widget::TouchEventType event, coco void Widget::setPosition(const Vec2 &pos) { - if (_running) - { - Widget* widgetParent = getWidgetParent(); - if (widgetParent) - { - Size pSize = widgetParent->getContentSize(); - if (pSize.width <= 0.0f || pSize.height <= 0.0f) - { - _positionPercent = Vec2::ZERO; - } - else - { - _positionPercent = Vec2(pos.x / pSize.width, pos.y / pSize.height); - } - } - } ProtectedNode::setPosition(pos); + _positionType = PositionType::ABSOLUTE; + } void Widget::setPositionPercent(const Vec2 &percent) { - _positionPercent = percent; - if (_running) - { - Widget* widgetParent = getWidgetParent(); - if (widgetParent) - { - Size parentSize = widgetParent->getContentSize(); - Vec2 absPos = Vec2(parentSize.width * _positionPercent.x, parentSize.height * _positionPercent.y); - setPosition(absPos); - } - } + this->setNormalizedPosition(percent); + _positionType = PositionType::PERCENT; } const Vec2& Widget::getPositionPercent()const{ - return _positionPercent; + return this->getNormalizedPosition(); } void Widget::setPositionType(PositionType type) { _positionType = type; + if (type == Widget::PositionType::ABSOLUTE) + { + Vec2 oldPosition = this->getPosition(); + this->setPosition(this->getPosition() + Vec2(10,0)); + this->setPosition(oldPosition); + } + else + { + Vec2 oldNormalizedPosition = this->getNormalizedPosition(); + this->setNormalizedPosition(oldNormalizedPosition + Vec2(0.2,0.1)); + this->setNormalizedPosition(oldNormalizedPosition); + } } Widget::PositionType Widget::getPositionType() const @@ -1273,6 +1264,16 @@ void Widget::enableDpadNavigation(bool enable) } +bool Widget::isUnifySizeEnabled()const +{ + return _unifySize; } +void Widget::setUnifySizeEnabled(bool enable) +{ + _unifySize = enable; +} + + +} NS_CC_END diff --git a/cocos/ui/UIWidget.h b/cocos/ui/UIWidget.h index bc93643d4d..47556d4ab7 100644 --- a/cocos/ui/UIWidget.h +++ b/cocos/ui/UIWidget.h @@ -37,7 +37,7 @@ class EventListenerTouchOneByOne; namespace ui { - + class LayoutComponent; typedef enum { TOUCH_EVENT_BEGAN, @@ -416,7 +416,7 @@ public: * * @return size percent */ - const Vec2& getSizePercent() const; + const Vec2& getSizePercent(); /** * Checks a point if is in widget's space @@ -596,6 +596,12 @@ public: * use this function to manually specify the next focused widget regards to each direction */ std::function onNextFocusedWidget; + + /** + *@param enable Unify Size of a widget + *@return void + */ + void setUnifySizeEnabled(bool enable); CC_CONSTRUCTOR_ACCESS: @@ -632,6 +638,10 @@ CC_CONSTRUCTOR_ACCESS: *@return void */ void dispatchFocusEvent(Widget* widgetLoseFocus, Widget* widgetGetFocus); + /** + *@return true represent the widget use Unify Size, false represent the widget couldn't use Unify Size + */ + bool isUnifySizeEnabled()const; protected: //call back function called when size changed. @@ -671,8 +681,10 @@ protected: bool isAncestorsVisible(Node* node); void cleanupWidget(); + LayoutComponent* getOrCreateLayoutComponent(); protected: + bool _unifySize; bool _enabled; bool _bright; bool _touchEnabled; diff --git a/cocos/ui/proj.wp8/libGUI.vcxproj b/cocos/ui/proj.wp8/libGUI.vcxproj deleted file mode 100644 index 89eda7cb71..0000000000 --- a/cocos/ui/proj.wp8/libGUI.vcxproj +++ /dev/null @@ -1,223 +0,0 @@ - - - - - Debug - Win32 - - - Debug - ARM - - - Release - Win32 - - - Release - ARM - - - - {08FB23E4-1517-4EDC-B682-DA238CDAA83D} - libGUI - en-US - 11.0 - - - - StaticLibrary - true - v110_wp80 - - - StaticLibrary - true - v110_wp80 - - - StaticLibrary - false - true - v110_wp80 - - - StaticLibrary - false - true - v110_wp80 - - - - - - - - - - - - - - - - - - - - - - - - false - - - - _LIB;%(PreprocessorDefinitions) - NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) - true - false - true - /Zm200 %(AdditionalOptions) - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;NDEBUG;%(PreprocessorDefinitions) - NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WP8;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - true - /Zm200 %(AdditionalOptions) - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;%(PreprocessorDefinitions) - NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) - true - /Zm200 %(AdditionalOptions) - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;NDEBUG;%(PreprocessorDefinitions) - NotUsing - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\audio\include;$(EngineRoot)cocos\editor-support;$(EngineRoot)external;$(EngineRoot)extensions;%(AdditionalIncludeDirectories) - WP8;_LIB;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - true - /Zm200 %(AdditionalOptions) - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - true - - - true - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/cocos/ui/proj.wp8/libGUI.vcxproj.filters b/cocos/ui/proj.wp8/libGUI.vcxproj.filters deleted file mode 100644 index c577091a29..0000000000 --- a/cocos/ui/proj.wp8/libGUI.vcxproj.filters +++ /dev/null @@ -1,180 +0,0 @@ - - - - - {e31ab7d3-b8b2-467f-9e08-fd5fe168b491} - - - {f9d13563-9e5e-4b35-b0e7-d41f587efa42} - - - {ed8a2ae0-5690-4d0d-829b-7c07164c0597} - - - {5f6e9e52-fbe7-4073-ac71-98632f9e6781} - - - {b59b178a-b7e0-4826-ba07-44c46cd29a10} - - - - - Layouts - - - Layouts - - - System - - - System - - - UIWidgets\ScrollWidget - - - UIWidgets\ScrollWidget - - - UIWidgets\ScrollWidget - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - BaseClasses - - - Layouts - - - UIWidgets - - - Layouts - - - Layouts - - - System - - - BaseClasses - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - - - Layouts - - - Layouts - - - System - - - System - - - UIWidgets\ScrollWidget - - - UIWidgets\ScrollWidget - - - UIWidgets\ScrollWidget - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - UIWidgets - - - BaseClasses - - - Layouts - - - UIWidgets - - - Layouts - - - Layouts - - - System - - - BaseClasses - - - UIWidgets - - - UIWidgets - - - \ No newline at end of file diff --git a/extensions/Android.mk b/extensions/Android.mk index 2603f2f3d2..116dfc8cda 100644 --- a/extensions/Android.mk +++ b/extensions/Android.mk @@ -7,6 +7,11 @@ LOCAL_MODULE_FILENAME := libextension LOCAL_SRC_FILES := \ assets-manager/AssetsManager.cpp \ +assets-manager/Downloader.cpp \ +assets-manager/Manifest.cpp \ +assets-manager/AssetsManagerEx.cpp \ +assets-manager/CCEventAssetsManagerEx.cpp \ +assets-manager/CCEventListenerAssetsManagerEx.cpp \ GUI/CCControlExtension/CCControl.cpp \ GUI/CCControlExtension/CCControlButton.cpp \ GUI/CCControlExtension/CCControlColourPicker.cpp \ @@ -28,21 +33,12 @@ LOCAL_STATIC_LIBRARIES := cocos2dx_internal_static LOCAL_STATIC_LIBRARIES += cocos_curl_static LOCAL_STATIC_LIBRARIES += box2d_static -GU/CCEditBox/CCEditBox.cpp \ -GUI/CCEditBox/CCEditBoxImplAndroid.cpp \ -GUI/CCEditBox/CCEditBoxImplNone.cpp \ -GUI/CCEditBox/CCEditBoxImplWin.cpp \ LOCAL_CXXFLAGS += -fexceptions -LOCAL_C_INCLUDES := $(LOCAL_PATH)/.. \ - $(LOCAL_PATH)/../cocos \ - $(LOCAL_PATH)/../cocos/platform/android \ - $(LOCAL_PATH)/../external/chipmunk/include/chipmunk \ - $(LOCAL_PATH)/../external/curl/include/android \ - $(LOCAL_PATH)/../external/unzip +LOCAL_C_INCLUDES := $(LOCAL_PATH) - -LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/.. \ +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/. \ + $(LOCAL_PATH)/.. \ $(LOCAL_PATH)/GUI/CCControlExtension \ $(LOCAL_PATH)/GUI/CCScrollView diff --git a/extensions/CMakeLists.txt b/extensions/CMakeLists.txt index b5b057e8c2..fd212cba4e 100644 --- a/extensions/CMakeLists.txt +++ b/extensions/CMakeLists.txt @@ -22,6 +22,11 @@ include_directories( set(COCOS_EXTENSIONS_SRC ../extensions/assets-manager/AssetsManager.cpp + ../extensions/assets-manager/AssetsManagerEx.cpp + ../extensions/assets-manager/CCEventAssetsManagerEx.cpp + ../extensions/assets-manager/CCEventListenerAssetsManagerEx.cpp + ../extensions/assets-manager/Downloader.cpp + ../extensions/assets-manager/Manifest.cpp ../extensions/GUI/CCControlExtension/CCControl.cpp ../extensions/GUI/CCControlExtension/CCControlButton.cpp ../extensions/GUI/CCControlExtension/CCControlColourPicker.cpp diff --git a/extensions/ExtensionExport.h b/extensions/ExtensionExport.h index 5360f249b1..837df61c54 100644 --- a/extensions/ExtensionExport.h +++ b/extensions/ExtensionExport.h @@ -1,7 +1,7 @@ #ifndef __CCEXTENSIONEXPORT_H__ #define __CCEXTENSIONEXPORT_H__ -#if defined(WIN32) && defined(_WINDOWS) +#if (defined(WIN32) && defined(_WINDOWS)) || defined(WINRT) || defined(WP8) #ifdef __MINGW32__ #include #endif diff --git a/extensions/GUI/CCScrollView/CCScrollView.cpp b/extensions/GUI/CCScrollView/CCScrollView.cpp index b49257212c..c9d2f19669 100644 --- a/extensions/GUI/CCScrollView/CCScrollView.cpp +++ b/extensions/GUI/CCScrollView/CCScrollView.cpp @@ -579,7 +579,7 @@ void ScrollView::onAfterDraw() void ScrollView::visit(Renderer *renderer, const Mat4 &parentTransform, uint32_t parentFlags) { // quick return if not visible - if (!isVisible()) + if (!isVisible() || !isVisitableByVisitingCamera()) { return; } diff --git a/extensions/assets-manager/AssetsManager.cpp b/extensions/assets-manager/AssetsManager.cpp index 241243199b..d3f57bb3e4 100644 --- a/extensions/assets-manager/AssetsManager.cpp +++ b/extensions/assets-manager/AssetsManager.cpp @@ -450,7 +450,16 @@ bool AssetsManager::uncompress() */ bool AssetsManager::createDirectory(const char *path) { -#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) + return FileUtils::getInstance()->createDirectory(_storagePath.c_str()); +#elif (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) + BOOL ret = CreateDirectoryA(path, nullptr); + if (!ret && ERROR_ALREADY_EXISTS != GetLastError()) + { + return false; + } + return true; +#else mode_t processMask = umask(0); int ret = mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO); umask(processMask); @@ -458,16 +467,11 @@ bool AssetsManager::createDirectory(const char *path) { return false; } - - return true; -#else - BOOL ret = CreateDirectoryA(path, nullptr); - if (!ret && ERROR_ALREADY_EXISTS != GetLastError()) - { - return false; - } + return true; #endif + + } void AssetsManager::setSearchPath() @@ -638,19 +642,20 @@ AssetsManager* AssetsManager::create(const char* packageUrl, const char* version void AssetsManager::createStoragePath() { // Remove downloaded files -#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) + FileUtils::getInstance()->createDirectory(_storagePath.c_str()); +#elif (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) + if ((GetFileAttributesA(_storagePath.c_str())) == INVALID_FILE_ATTRIBUTES) + { + CreateDirectoryA(_storagePath.c_str(), 0); + } +#else DIR *dir = nullptr; - dir = opendir (_storagePath.c_str()); if (!dir) { mkdir(_storagePath.c_str(), S_IRWXU | S_IRWXG | S_IRWXO); } -#else - if ((GetFileAttributesA(_storagePath.c_str())) == INVALID_FILE_ATTRIBUTES) - { - CreateDirectoryA(_storagePath.c_str(), 0); - } #endif } @@ -660,16 +665,18 @@ void AssetsManager::destroyStoragePath() deleteVersion(); // Remove downloaded files -#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32) - string command = "rm -r "; - // Path may include space. - command += "\"" + _storagePath + "\""; - system(command.c_str()); -#else +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) + FileUtils::getInstance()->removeDirectory(_storagePath.c_str()); +#elif (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) string command = "rd /s /q "; // Path may include space. command += "\"" + _storagePath + "\""; system(command.c_str()); +#else + string command = "rm -r "; + // Path may include space. + command += "\"" + _storagePath + "\""; + system(command.c_str()); #endif } diff --git a/extensions/assets-manager/AssetsManagerEx.cpp b/extensions/assets-manager/AssetsManagerEx.cpp new file mode 100644 index 0000000000..3011e81bda --- /dev/null +++ b/extensions/assets-manager/AssetsManagerEx.cpp @@ -0,0 +1,877 @@ +/**************************************************************************** + Copyright (c) 2014 cocos2d-x.org + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ +#include "AssetsManagerEx.h" +#include "CCEventListenerAssetsManagerEx.h" +#include "cocos2d.h" + +#include +#include +#include + +#include "unzip.h" + +NS_CC_EXT_BEGIN + +#define VERSION_FILENAME "version.manifest" +#define TEMP_MANIFEST_FILENAME "project.manifest.temp" +#define MANIFEST_FILENAME "project.manifest" + +#define BUFFER_SIZE 8192 +#define MAX_FILENAME 512 + +#define DEFAULT_CONNECTION_TIMEOUT 8 + +const std::string AssetsManagerEx::VERSION_ID = "@version"; +const std::string AssetsManagerEx::MANIFEST_ID = "@manifest"; +const std::string AssetsManagerEx::BATCH_UPDATE_ID = "@batch_update"; + +// Implementation of AssetsManagerEx + +AssetsManagerEx::AssetsManagerEx(const std::string& manifestUrl, const std::string& storagePath) +: _updateState(State::UNCHECKED) +, _waitToUpdate(false) +, _totalToDownload(0) +, _totalWaitToDownload(0) +, _percent(0) +, _percentByFile(0) +, _manifestUrl(manifestUrl) +, _storagePath("") +, _cacheVersionPath("") +, _cacheManifestPath("") +, _tempManifestPath("") +, _assets(nullptr) +, _localManifest(nullptr) +, _tempManifest(nullptr) +, _remoteManifest(nullptr) +{ + // Init variables + _eventDispatcher = Director::getInstance()->getEventDispatcher(); + std::string pointer = StringUtils::format("%p", this); + _eventName = EventListenerAssetsManagerEx::LISTENER_ID + pointer; + _fileUtils = FileUtils::getInstance(); + _updateState = State::UNCHECKED; + + _downloader = std::make_shared(); + _downloader->setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT); + _downloader->_onError = std::bind(&AssetsManagerEx::onError, this, std::placeholders::_1); + _downloader->_onProgress = std::bind(&AssetsManagerEx::onProgress, + this, + std::placeholders::_1, + std::placeholders::_2, + std::placeholders::_3, + std::placeholders::_4); + _downloader->_onSuccess = std::bind(&AssetsManagerEx::onSuccess, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); + setStoragePath(storagePath); + _cacheVersionPath = _storagePath + VERSION_FILENAME; + _cacheManifestPath = _storagePath + MANIFEST_FILENAME; + _tempManifestPath = _storagePath + TEMP_MANIFEST_FILENAME; + + // Init and load local manifest + _localManifest = new Manifest(); + loadLocalManifest(manifestUrl); + + // Init and load temporary manifest + _tempManifest = new Manifest(); + _tempManifest->parse(_tempManifestPath); + if (!_tempManifest->isLoaded()) + _fileUtils->removeFile(_tempManifestPath); + + // Init remote manifest for future usage + _remoteManifest = new Manifest(); +} + +AssetsManagerEx::~AssetsManagerEx() +{ + _downloader->_onError = nullptr; + _downloader->_onSuccess = nullptr; + _downloader->_onProgress = nullptr; + CC_SAFE_RELEASE(_localManifest); + // _tempManifest could share a ptr with _remoteManifest or _localManifest + if (_tempManifest != _localManifest && _tempManifest != _remoteManifest) + CC_SAFE_RELEASE(_tempManifest); + CC_SAFE_RELEASE(_remoteManifest); +} + +AssetsManagerEx* AssetsManagerEx::create(const std::string& manifestUrl, const std::string& storagePath) +{ + AssetsManagerEx* ret = new AssetsManagerEx(manifestUrl, storagePath); + if (ret) + { + ret->autorelease(); + } + else + { + CC_SAFE_DELETE(ret); + } + return ret; +} + +void AssetsManagerEx::prepareLocalManifest() +{ + // An alias to assets + _assets = &(_localManifest->getAssets()); + + // Add search paths + _localManifest->prependSearchPaths(); +} + +void AssetsManagerEx::loadLocalManifest(const std::string& manifestUrl) +{ + // Prefer to use the cached manifest file, if not found use user configured manifest file + if (_fileUtils->isFileExist(_cacheManifestPath)) + { + _localManifest->parse(_cacheManifestPath); + if (_localManifest->isLoaded()) + prepareLocalManifest(); + else + _fileUtils->removeFile(_cacheManifestPath); + } + + // Fail to found or load cached manifest file + if (!_localManifest->isLoaded()) + { + _localManifest->parse(_manifestUrl); + if (_localManifest->isLoaded()) + prepareLocalManifest(); + } + + // Fail to load local manifest + if (!_localManifest->isLoaded()) + { + CCLOG("AssetsManagerEx : No local manifest file found error.\n"); + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::ERROR_NO_LOCAL_MANIFEST); + } +} + +std::string AssetsManagerEx::basename(const std::string& path) const +{ + size_t found = path.find_last_of("/\\"); + + if (std::string::npos != found) + { + return path.substr(0, found); + } + else + { + return path; + } +} + +std::string AssetsManagerEx::get(const std::string& key) const +{ + auto it = _assets->find(key); + if (it != _assets->cend()) { + return _storagePath + it->second.path; + } + else return ""; +} + +const Manifest* AssetsManagerEx::getLocalManifest() const +{ + return _localManifest; +} + +const Manifest* AssetsManagerEx::getRemoteManifest() const +{ + return _remoteManifest; +} + +const std::string& AssetsManagerEx::getStoragePath() const +{ + return _storagePath; +} + +void AssetsManagerEx::setStoragePath(const std::string& storagePath) +{ + if (_storagePath.size() > 0) + _fileUtils->removeDirectory(_storagePath); + + _storagePath = storagePath; + adjustPath(_storagePath); + _fileUtils->createDirectory(_storagePath); +} + +void AssetsManagerEx::adjustPath(std::string &path) +{ + if (path.size() > 0 && path[path.size() - 1] != '/') + { + path.append("/"); + } +} + +bool AssetsManagerEx::decompress(const std::string &zip) +{ + // Find root path for zip file + size_t pos = zip.find_last_of("/\\"); + if (pos == std::string::npos) + { + CCLOG("AssetsManagerEx : no root path specified for zip file %s\n", zip.c_str()); + return false; + } + const std::string rootPath = zip.substr(0, pos+1); + + // Open the zip file + unzFile zipfile = unzOpen(zip.c_str()); + if (! zipfile) + { + CCLOG("AssetsManagerEx : can not open downloaded zip file %s\n", zip.c_str()); + return false; + } + + // Get info about the zip file + unz_global_info global_info; + if (unzGetGlobalInfo(zipfile, &global_info) != UNZ_OK) + { + CCLOG("AssetsManagerEx : can not read file global info of %s\n", zip.c_str()); + unzClose(zipfile); + return false; + } + + // Buffer to hold data read from the zip file + char readBuffer[BUFFER_SIZE]; + // Loop to extract all files. + uLong i; + for (i = 0; i < global_info.number_entry; ++i) + { + // Get info about current file. + unz_file_info fileInfo; + char fileName[MAX_FILENAME]; + if (unzGetCurrentFileInfo(zipfile, + &fileInfo, + fileName, + MAX_FILENAME, + NULL, + 0, + NULL, + 0) != UNZ_OK) + { + CCLOG("AssetsManagerEx : can not read compressed file info\n"); + unzClose(zipfile); + return false; + } + const std::string fullPath = rootPath + fileName; + + // Check if this entry is a directory or a file. + const size_t filenameLength = strlen(fileName); + if (fileName[filenameLength-1] == '/') + { + //There are not directory entry in some case. + //So we need to create directory when decompressing file entry + if ( !_fileUtils->createDirectory(basename(fullPath)) ) + { + // Failed to create directory + CCLOG("AssetsManagerEx : can not create directory %s\n", fullPath.c_str()); + unzClose(zipfile); + return false; + } + } + else + { + // Entry is a file, so extract it. + // Open current file. + if (unzOpenCurrentFile(zipfile) != UNZ_OK) + { + CCLOG("AssetsManagerEx : can not extract file %s\n", fileName); + unzClose(zipfile); + return false; + } + + // Create a file to store current file. + FILE *out = fopen(fullPath.c_str(), "wb"); + if (!out) + { + CCLOG("AssetsManagerEx : can not create decompress destination file %s\n", fullPath.c_str()); + unzCloseCurrentFile(zipfile); + unzClose(zipfile); + return false; + } + + // Write current file content to destinate file. + int error = UNZ_OK; + do + { + error = unzReadCurrentFile(zipfile, readBuffer, BUFFER_SIZE); + if (error < 0) + { + CCLOG("AssetsManagerEx : can not read zip file %s, error code is %d\n", fileName, error); + fclose(out); + unzCloseCurrentFile(zipfile); + unzClose(zipfile); + return false; + } + + if (error > 0) + { + fwrite(readBuffer, error, 1, out); + } + } while(error > 0); + + fclose(out); + } + + unzCloseCurrentFile(zipfile); + + // Goto next entry listed in the zip file. + if ((i+1) < global_info.number_entry) + { + if (unzGoToNextFile(zipfile) != UNZ_OK) + { + CCLOG("AssetsManagerEx : can not read next file for decompressing\n"); + unzClose(zipfile); + return false; + } + } + } + + unzClose(zipfile); + return true; +} + +void AssetsManagerEx::decompressDownloadedZip() +{ + // Decompress all compressed files + for (auto it = _compressedFiles.begin(); it != _compressedFiles.end(); ++it) { + std::string zipfile = *it; + if (!decompress(zipfile)) + { + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::ERROR_DECOMPRESS, "", "Unable to decompress file " + zipfile); + } + _fileUtils->removeFile(zipfile); + } + _compressedFiles.clear(); +} + +void AssetsManagerEx::dispatchUpdateEvent(EventAssetsManagerEx::EventCode code, const std::string &assetId/* = ""*/, const std::string &message/* = ""*/, int curle_code/* = CURLE_OK*/, int curlm_code/* = CURLM_OK*/) +{ + EventAssetsManagerEx event(_eventName, this, code, _percent, _percentByFile, assetId, message, curle_code, curlm_code); + _eventDispatcher->dispatchEvent(&event); +} + +AssetsManagerEx::State AssetsManagerEx::getState() const +{ + return _updateState; +} + +void AssetsManagerEx::downloadVersion() +{ + if (_updateState > State::PREDOWNLOAD_VERSION) + return; + + std::string versionUrl = _localManifest->getVersionFileUrl(); + + if (versionUrl.size() > 0) + { + _updateState = State::DOWNLOADING_VERSION; + // Download version file asynchronously + _downloader->downloadAsync(versionUrl, _cacheVersionPath, VERSION_ID); + } + // No version file found + else + { + CCLOG("AssetsManagerEx : No version file found, step skipped\n"); + _updateState = State::PREDOWNLOAD_MANIFEST; + downloadManifest(); + } +} + +void AssetsManagerEx::parseVersion() +{ + if (_updateState != State::VERSION_LOADED) + return; + + _remoteManifest->parse(_cacheVersionPath); + + if (!_remoteManifest->isVersionLoaded()) + { + CCLOG("AssetsManagerEx : Fail to parse version file, step skipped\n"); + _updateState = State::PREDOWNLOAD_MANIFEST; + downloadManifest(); + } + else + { + if (_localManifest->versionEquals(_remoteManifest)) + { + _updateState = State::UP_TO_DATE; + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::ALREADY_UP_TO_DATE); + } + else + { + _updateState = State::NEED_UPDATE; + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::NEW_VERSION_FOUND); + + // Wait to update so continue the process + if (_waitToUpdate) + { + _updateState = State::PREDOWNLOAD_MANIFEST; + downloadManifest(); + } + } + } +} + +void AssetsManagerEx::downloadManifest() +{ + if (_updateState != State::PREDOWNLOAD_MANIFEST) + return; + + std::string manifestUrl = _localManifest->getManifestFileUrl(); + if (manifestUrl.size() > 0) + { + _updateState = State::DOWNLOADING_MANIFEST; + // Download version file asynchronously + _downloader->downloadAsync(manifestUrl, _tempManifestPath, MANIFEST_ID); + } + // No manifest file found + else + { + CCLOG("AssetsManagerEx : No manifest file found, check update failed\n"); + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::ERROR_DOWNLOAD_MANIFEST); + _updateState = State::UNCHECKED; + } +} + +void AssetsManagerEx::parseManifest() +{ + if (_updateState != State::MANIFEST_LOADED) + return; + + _remoteManifest->parse(_tempManifestPath); + + if (!_remoteManifest->isLoaded()) + { + CCLOG("AssetsManagerEx : Error parsing manifest file\n"); + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::ERROR_PARSE_MANIFEST); + _updateState = State::UNCHECKED; + } + else + { + if (_localManifest->versionEquals(_remoteManifest)) + { + _updateState = State::UP_TO_DATE; + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::ALREADY_UP_TO_DATE); + } + else + { + _updateState = State::NEED_UPDATE; + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::NEW_VERSION_FOUND); + + if (_waitToUpdate) + { + startUpdate(); + } + } + } +} + +void AssetsManagerEx::startUpdate() +{ + if (_updateState != State::NEED_UPDATE) + return; + + _updateState = State::UPDATING; + // Clean up before update + _failedUnits.clear(); + _downloadUnits.clear(); + _compressedFiles.clear(); + _totalWaitToDownload = _totalToDownload = 0; + _percent = _percentByFile = _sizeCollected = _totalSize = 0; + _downloadedSize.clear(); + _totalEnabled = false; + + // Temporary manifest exists, resuming previous download + if (_tempManifest->isLoaded() && _tempManifest->versionEquals(_remoteManifest)) + { + _tempManifest->genResumeAssetsList(&_downloadUnits); + + _totalWaitToDownload = _totalToDownload = (int)_downloadUnits.size(); + _downloader->batchDownloadAsync(_downloadUnits, BATCH_UPDATE_ID); + + std::string msg = StringUtils::format("Resuming from previous unfinished update, %d files remains to be finished.", _totalToDownload); + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::UPDATE_PROGRESSION, "", msg); + } + // Check difference + else + { + // Temporary manifest not exists, + // it will be used to register the download states of each asset, + // in this case, it equals remote manifest. + if(!_tempManifest->isLoaded()) { + _tempManifest->release(); + _tempManifest = _remoteManifest; + } + + std::unordered_map diff_map = _localManifest->genDiff(_remoteManifest); + if (diff_map.size() == 0) + { + _updateState = State::UP_TO_DATE; + // Rename temporary manifest to valid manifest + _fileUtils->renameFile(_storagePath, TEMP_MANIFEST_FILENAME, MANIFEST_FILENAME); + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::ALREADY_UP_TO_DATE); + } + else + { + // Generate download units for all assets that need to be updated or added + std::string packageUrl = _remoteManifest->getPackageUrl(); + for (auto it = diff_map.begin(); it != diff_map.end(); ++it) + { + Manifest::AssetDiff diff = it->second; + + if (diff.type == Manifest::DiffType::DELETED) + { + _fileUtils->removeFile(_storagePath + diff.asset.path); + } + else + { + std::string path = diff.asset.path; + // Create path + _fileUtils->createDirectory(basename(_storagePath + path)); + + Downloader::DownloadUnit unit; + unit.customId = it->first; + unit.srcUrl = packageUrl + path; + unit.storagePath = _storagePath + path; + unit.resumeDownload = false; + _downloadUnits.emplace(unit.customId, unit); + } + } + // Set other assets' downloadState to SUCCESSED + auto assets = _remoteManifest->getAssets(); + for (auto it = assets.cbegin(); it != assets.cend(); ++it) + { + const std::string &key = it->first; + auto diffIt = diff_map.find(key); + if (diffIt == diff_map.end()) + { + _tempManifest->setAssetDownloadState(key, Manifest::DownloadState::SUCCESSED); + } + } + + _totalWaitToDownload = _totalToDownload = (int)_downloadUnits.size(); + _downloader->batchDownloadAsync(_downloadUnits, BATCH_UPDATE_ID); + + std::string msg = StringUtils::format("Start to update %d files from remote package.", _totalToDownload); + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::UPDATE_PROGRESSION, "", msg); + } + } + + _waitToUpdate = false; +} + +void AssetsManagerEx::updateSucceed() +{ + // Every thing is correctly downloaded, do the following + // 1. rename temporary manifest to valid manifest + _fileUtils->renameFile(_storagePath, TEMP_MANIFEST_FILENAME, MANIFEST_FILENAME); + // 2. swap the localManifest + if (_localManifest != nullptr) + _localManifest->release(); + _localManifest = _remoteManifest; + _remoteManifest = nullptr; + // 3. make local manifest take effect + prepareLocalManifest(); + // 4. decompress all compressed files + decompressDownloadedZip(); + // 5. Set update state + _updateState = State::UP_TO_DATE; + // 6. Notify finished event + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::UPDATE_FINISHED); +} + +void AssetsManagerEx::checkUpdate() +{ + if (!_localManifest->isLoaded()) + { + CCLOG("AssetsManagerEx : No local manifest file found error.\n"); + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::ERROR_NO_LOCAL_MANIFEST); + return; + } + + switch (_updateState) { + case State::UNCHECKED: + case State::PREDOWNLOAD_VERSION: + { + downloadVersion(); + } + break; + case State::UP_TO_DATE: + { + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::ALREADY_UP_TO_DATE); + } + break; + case State::FAIL_TO_UPDATE: + case State::NEED_UPDATE: + { + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::NEW_VERSION_FOUND); + } + break; + default: + break; + } +} + +void AssetsManagerEx::update() +{ + if (!_localManifest->isLoaded()) + { + CCLOG("AssetsManagerEx : No local manifest file found error.\n"); + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::ERROR_NO_LOCAL_MANIFEST); + return; + } + + _waitToUpdate = true; + + switch (_updateState) { + case State::UNCHECKED: + { + _updateState = State::PREDOWNLOAD_VERSION; + } + case State::PREDOWNLOAD_VERSION: + { + downloadVersion(); + } + break; + case State::VERSION_LOADED: + { + parseVersion(); + } + break; + case State::PREDOWNLOAD_MANIFEST: + { + downloadManifest(); + } + break; + case State::MANIFEST_LOADED: + { + parseManifest(); + } + break; + case State::FAIL_TO_UPDATE: + case State::NEED_UPDATE: + { + // Manifest not loaded yet + if (!_remoteManifest->isLoaded()) + { + _waitToUpdate = true; + _updateState = State::PREDOWNLOAD_MANIFEST; + downloadManifest(); + } + else + { + startUpdate(); + } + } + break; + case State::UP_TO_DATE: + case State::UPDATING: + _waitToUpdate = false; + break; + default: + break; + } +} + +void AssetsManagerEx::updateAssets(const Downloader::DownloadUnits& assets) +{ + if (_updateState != State::UPDATING && _localManifest->isLoaded() && _remoteManifest->isLoaded()) + { + int size = (int)(assets.size()); + if (size > 0) + { + _updateState = State::UPDATING; + _downloadUnits.clear(); + _downloadUnits = assets; + _downloader->batchDownloadAsync(_downloadUnits, BATCH_UPDATE_ID); + } + else if (size == 0 && _totalWaitToDownload == 0) + { + updateSucceed(); + } + } +} + +const Downloader::DownloadUnits& AssetsManagerEx::getFailedAssets() const +{ + return _failedUnits; +} + +void AssetsManagerEx::downloadFailedAssets() +{ + CCLOG("AssetsManagerEx : Start update %lu failed assets.\n", _failedUnits.size()); + updateAssets(_failedUnits); +} + + +void AssetsManagerEx::onError(const Downloader::Error &error) +{ + // Skip version error occured + if (error.customId == VERSION_ID) + { + CCLOG("AssetsManagerEx : Fail to download version file, step skipped\n"); + _updateState = State::PREDOWNLOAD_MANIFEST; + downloadManifest(); + } + else if (error.customId == MANIFEST_ID) + { + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::ERROR_DOWNLOAD_MANIFEST, error.customId, error.message, error.curle_code, error.curlm_code); + } + else + { + auto unitIt = _downloadUnits.find(error.customId); + // Found unit and add it to failed units + if (unitIt != _downloadUnits.end()) + { + Downloader::DownloadUnit unit = unitIt->second; + _failedUnits.emplace(unit.customId, unit); + } + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::ERROR_UPDATING, error.customId, error.message, error.curle_code, error.curlm_code); + } +} + +void AssetsManagerEx::onProgress(double total, double downloaded, const std::string &url, const std::string &customId) +{ + if (customId == VERSION_ID || customId == MANIFEST_ID) + { + _percent = 100 * (total - downloaded) / total; + // Notify progression event + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::UPDATE_PROGRESSION, customId); + return; + } + else + { + // Calcul total downloaded + bool found = false; + double totalDownloaded = 0; + for (auto it = _downloadedSize.begin(); it != _downloadedSize.end(); ++it) + { + if (it->first == customId) + { + it->second = downloaded; + found = true; + } + totalDownloaded += it->second; + } + // Collect information if not registed + if (!found) + { + // Set download state to DOWNLOADING, this will run only once in the download process + _tempManifest->setAssetDownloadState(customId, Manifest::DownloadState::DOWNLOADING); + // Register the download size information + _downloadedSize.emplace(customId, downloaded); + _totalSize += total; + _sizeCollected++; + // All collected, enable total size + if (_sizeCollected == _totalToDownload) + { + _totalEnabled = true; + } + } + + if (_totalEnabled && _updateState == State::UPDATING) + { + float currentPercent = 100 * totalDownloaded / _totalSize; + // Notify at integer level change + if ((int)currentPercent != (int)_percent) { + _percent = currentPercent; + // Notify progression event + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::UPDATE_PROGRESSION, ""); + } + } + } +} + +void AssetsManagerEx::onSuccess(const std::string &srcUrl, const std::string &storagePath, const std::string &customId) +{ + if (customId == VERSION_ID) + { + _updateState = State::VERSION_LOADED; + parseVersion(); + } + else if (customId == MANIFEST_ID) + { + _updateState = State::MANIFEST_LOADED; + parseManifest(); + } + else if (customId == BATCH_UPDATE_ID) + { + // Finished with error check + if (_failedUnits.size() > 0 || _totalWaitToDownload > 0) + { + // Save current download manifest information for resuming + _tempManifest->saveToFile(_tempManifestPath); + + decompressDownloadedZip(); + + _updateState = State::FAIL_TO_UPDATE; + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::UPDATE_FAILED); + } + else + { + updateSucceed(); + } + } + else + { + auto assets = _remoteManifest->getAssets(); + auto assetIt = assets.find(customId); + if (assetIt != assets.end()) + { + // Set download state to SUCCESSED + _tempManifest->setAssetDownloadState(customId, Manifest::DownloadState::SUCCESSED); + + // Add file to need decompress list + if (assetIt->second.compressed) { + _compressedFiles.push_back(storagePath); + } + } + + auto unitIt = _downloadUnits.find(customId); + if (unitIt != _downloadUnits.end()) + { + // Reduce count only when unit found in _downloadUnits + _totalWaitToDownload--; + + _percentByFile = 100 * (float)(_totalToDownload - _totalWaitToDownload) / _totalToDownload; + // Notify progression event + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::UPDATE_PROGRESSION, ""); + } + // Notify asset updated event + dispatchUpdateEvent(EventAssetsManagerEx::EventCode::ASSET_UPDATED, customId); + + unitIt = _failedUnits.find(customId); + // Found unit and delete it + if (unitIt != _failedUnits.end()) + { + // Remove from failed units list + _failedUnits.erase(unitIt); + } + } +} + +void AssetsManagerEx::destroyDownloadedVersion() +{ + _fileUtils->removeFile(_cacheVersionPath); + _fileUtils->removeFile(_cacheManifestPath); +} + +NS_CC_EXT_END diff --git a/extensions/assets-manager/AssetsManagerEx.h b/extensions/assets-manager/AssetsManagerEx.h new file mode 100644 index 0000000000..8e2afcc769 --- /dev/null +++ b/extensions/assets-manager/AssetsManagerEx.h @@ -0,0 +1,266 @@ +/**************************************************************************** + Copyright (c) 2013 cocos2d-x.org + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __AssetsManagerEx__ +#define __AssetsManagerEx__ + +#include "base/CCEventDispatcher.h" +#include "platform/CCFileUtils.h" +#include "CCEventAssetsManagerEx.h" +#include "Downloader.h" +#include "Manifest.h" +#include "extensions/ExtensionMacros.h" +#include "extensions/ExtensionExport.h" +#include "json/document.h" + +#include +#include +#include + +NS_CC_EXT_BEGIN + +/** + * @brief This class is used to auto update resources, such as pictures or scripts. + */ +class CC_EX_DLL AssetsManagerEx : public Ref +{ +public: + + friend class Downloader; + friend int downloadProgressFunc(Downloader::ProgressData *ptr, double totalToDownload, double nowDownloaded, double totalToUpLoad, double nowUpLoaded); + + //! Update states + enum class State + { + UNCHECKED, + PREDOWNLOAD_VERSION, + DOWNLOADING_VERSION, + VERSION_LOADED, + PREDOWNLOAD_MANIFEST, + DOWNLOADING_MANIFEST, + MANIFEST_LOADED, + NEED_UPDATE, + UPDATING, + UP_TO_DATE, + FAIL_TO_UPDATE + }; + + const static std::string VERSION_ID; + const static std::string MANIFEST_ID; + const static std::string BATCH_UPDATE_ID; + + /** @brief Create function for creating a new AssetsManagerEx + @param manifestUrl The url for the local manifest file + @param storagePath The storage path for downloaded assetes + @warning The cached manifest in your storage path have higher priority and will be searched first, + only if it doesn't exist, AssetsManagerEx will use the given manifestUrl. + */ + static AssetsManagerEx* create(const std::string &manifestUrl, const std::string &storagePath); + + /** @brief Check out if there is a new version of manifest. + * You may use this method before updating, then let user determine whether + * he wants to update resources. + */ + void checkUpdate(); + + /** @brief Update with the current local manifest. + */ + void update(); + + /** @brief Reupdate all failed assets under the current AssetsManagerEx context + */ + void downloadFailedAssets(); + + /** @brief Gets the current update state. + */ + State getState() const; + + /** @brief Gets storage path. + */ + const std::string& getStoragePath() const; + + /** @brief Function for retrieve the local manifest object + */ + const Manifest* getLocalManifest() const; + + /** @brief Function for retrieve the remote manifest object + */ + const Manifest* getRemoteManifest() const; + +CC_CONSTRUCTOR_ACCESS: + + AssetsManagerEx(const std::string& manifestUrl, const std::string& storagePath); + + virtual ~AssetsManagerEx(); + +protected: + + std::string basename(const std::string& path) const; + + std::string get(const std::string& key) const; + + void loadLocalManifest(const std::string& manifestUrl); + + void prepareLocalManifest(); + + void setStoragePath(const std::string& storagePath); + + void adjustPath(std::string &path); + + void dispatchUpdateEvent(EventAssetsManagerEx::EventCode code, const std::string &message = "", const std::string &assetId = "", int curle_code = 0, int curlm_code = 0); + + void downloadVersion(); + void parseVersion(); + void downloadManifest(); + void parseManifest(); + void startUpdate(); + void updateSucceed(); + bool decompress(const std::string &filename); + void decompressDownloadedZip(); + + /** @brief Update a list of assets under the current AssetsManagerEx context + */ + void updateAssets(const Downloader::DownloadUnits& assets); + + /** @brief Retrieve all failed assets during the last update + */ + const Downloader::DownloadUnits& getFailedAssets() const; + + /** @brief Function for destorying the downloaded version file and manifest file + */ + void destroyDownloadedVersion(); + + /** @brief Call back function for error handling, + the error will then be reported to user's listener registed in addUpdateEventListener + @param error The error object contains ErrorCode, message, asset url, asset key + @warning AssetsManagerEx internal use only + * @js NA + * @lua NA + */ + virtual void onError(const Downloader::Error &error); + + /** @brief Call back function for recording downloading percent of the current asset, + the progression will then be reported to user's listener registed in addUpdateProgressEventListener + @param total Total size to download for this asset + @param downloaded Total size already downloaded for this asset + @param url The url of this asset + @param customId The key of this asset + @warning AssetsManagerEx internal use only + * @js NA + * @lua NA + */ + virtual void onProgress(double total, double downloaded, const std::string &url, const std::string &customId); + + /** @brief Call back function for success of the current asset + the success event will then be send to user's listener registed in addUpdateEventListener + @param srcUrl The url of this asset + @param customId The key of this asset + @warning AssetsManagerEx internal use only + * @js NA + * @lua NA + */ + virtual void onSuccess(const std::string &srcUrl, const std::string &storagePath, const std::string &customId); + +private: + + //! The event of the current AssetsManagerEx in event dispatcher + std::string _eventName; + + //! Reference to the global event dispatcher + EventDispatcher *_eventDispatcher; + //! Reference to the global file utils + FileUtils *_fileUtils; + + //! State of update + State _updateState; + + //! Downloader + std::shared_ptr _downloader; + + //! The reference to the local assets + const std::unordered_map *_assets; + + //! The path to store downloaded resources. + std::string _storagePath; + + //! The local path of cached version file + std::string _cacheVersionPath; + + //! The local path of cached manifest file + std::string _cacheManifestPath; + + //! The local path of cached temporary manifest file + std::string _tempManifestPath; + + //! The path of local manifest file + std::string _manifestUrl; + + //! Local manifest + Manifest *_localManifest; + + //! Local temporary manifest for download resuming + Manifest *_tempManifest; + + //! Remote manifest + Manifest *_remoteManifest; + + //! Whether user have requested to update + bool _waitToUpdate; + + //! All assets unit to download + Downloader::DownloadUnits _downloadUnits; + + //! All failed units + Downloader::DownloadUnits _failedUnits; + + //! All files to be decompressed + std::vector _compressedFiles; + + //! Download percent + float _percent; + + //! Download percent by file + float _percentByFile; + + //! Indicate whether the total size should be enabled + int _totalEnabled; + + //! Indicate the number of file whose total size have been collected + int _sizeCollected; + + //! Total file size need to be downloaded (sum of all file) + double _totalSize; + + //! Downloaded size for each file + std::unordered_map _downloadedSize; + + //! Total number of assets to download + int _totalToDownload; + //! Total number of assets still waiting to be downloaded + int _totalWaitToDownload; +}; + +NS_CC_EXT_END + +#endif /* defined(__AssetsManagerEx__) */ diff --git a/extensions/assets-manager/CCEventAssetsManagerEx.cpp b/extensions/assets-manager/CCEventAssetsManagerEx.cpp new file mode 100644 index 0000000000..ba2c0f8d2f --- /dev/null +++ b/extensions/assets-manager/CCEventAssetsManagerEx.cpp @@ -0,0 +1,46 @@ +/**************************************************************************** + Copyright (c) 2014 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "CCEventAssetsManagerEx.h" +#include "base/ccMacros.h" +#include +#include "AssetsManagerEx.h" + +NS_CC_EXT_BEGIN + +EventAssetsManagerEx::EventAssetsManagerEx(const std::string& eventName, cocos2d::extension::AssetsManagerEx *manager, const EventCode &code, float percent/* = 0 */, float percentByFile/* = 0*/, const std::string& assetId/* = "" */, const std::string& message/* = "" */, int curle_code/* = CURLE_OK*/, int curlm_code/* = CURLM_OK*/) +: EventCustom(eventName) +, _manager(manager) +, _code(code) +, _curle_code(curle_code) +, _curlm_code(curlm_code) +, _percent(percent) +, _percentByFile(percentByFile) +, _assetId(assetId) +, _message(message) +{ +} + + +NS_CC_EXT_END diff --git a/extensions/assets-manager/CCEventAssetsManagerEx.h b/extensions/assets-manager/CCEventAssetsManagerEx.h new file mode 100644 index 0000000000..a94b39b1e6 --- /dev/null +++ b/extensions/assets-manager/CCEventAssetsManagerEx.h @@ -0,0 +1,99 @@ +/**************************************************************************** + Copyright (c) 2014 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __cocos2d_libs__CCEventAssetsManagerEx__ +#define __cocos2d_libs__CCEventAssetsManagerEx__ + +#include "base/CCEvent.h" +#include "base/CCEventCustom.h" +#include "extensions/ExtensionMacros.h" +#include "extensions/ExtensionExport.h" + +NS_CC_EXT_BEGIN + +class AssetsManagerEx; + +class CC_EX_DLL EventAssetsManagerEx : public cocos2d::EventCustom +{ +public: + + friend class AssetsManagerEx; + + //! Update events code + enum class EventCode + { + ERROR_NO_LOCAL_MANIFEST, + ERROR_DOWNLOAD_MANIFEST, + ERROR_PARSE_MANIFEST, + NEW_VERSION_FOUND, + ALREADY_UP_TO_DATE, + UPDATE_PROGRESSION, + ASSET_UPDATED, + ERROR_UPDATING, + UPDATE_FINISHED, + UPDATE_FAILED, + ERROR_DECOMPRESS + }; + + inline EventCode getEventCode() const { return _code; }; + + inline int getCURLECode() const { return _curle_code; }; + + inline int getCURLMCode() const { return _curlm_code; }; + + inline std::string getMessage() const { return _message; }; + + inline std::string getAssetId() const { return _assetId; }; + + inline cocos2d::extension::AssetsManagerEx *getAssetsManagerEx() const { return _manager; }; + + inline float getPercent() const { return _percent; }; + + inline float getPercentByFile() const { return _percentByFile; }; + +CC_CONSTRUCTOR_ACCESS: + /** Constructor */ + EventAssetsManagerEx(const std::string& eventName, cocos2d::extension::AssetsManagerEx *manager, const EventCode &code, float percent = 0, float percentByFile = 0, const std::string& assetId = "", const std::string& message = "", int curle_code = 0, int curlm_code = 0); + +private: + EventCode _code; + + cocos2d::extension::AssetsManagerEx *_manager; + + std::string _message; + + std::string _assetId; + + int _curle_code; + + int _curlm_code; + + float _percent; + + float _percentByFile; +}; + +NS_CC_EXT_END + +#endif /* defined(__cocos2d_libs__CCEventAssetsManagerEx__) */ diff --git a/extensions/assets-manager/CCEventListenerAssetsManagerEx.cpp b/extensions/assets-manager/CCEventListenerAssetsManagerEx.cpp new file mode 100644 index 0000000000..99045c2e06 --- /dev/null +++ b/extensions/assets-manager/CCEventListenerAssetsManagerEx.cpp @@ -0,0 +1,98 @@ +/**************************************************************************** + Copyright (c) 2014 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "CCEventListenerAssetsManagerEx.h" +#include "CCEventAssetsManagerEx.h" +#include "AssetsManagerEx.h" +#include "cocos2d.h" + +NS_CC_EXT_BEGIN + +const std::string EventListenerAssetsManagerEx::LISTENER_ID = "__cc_assets_manager_"; + +EventListenerAssetsManagerEx::EventListenerAssetsManagerEx() +: _onAssetsManagerExEvent(nullptr) +, _AssetsManagerEx(nullptr) +{ +} + +EventListenerAssetsManagerEx* EventListenerAssetsManagerEx::create(cocos2d::extension::AssetsManagerEx *AssetsManagerEx, const std::function& callback) +{ + EventListenerAssetsManagerEx* ret = new EventListenerAssetsManagerEx(); + if (ret && ret->init(AssetsManagerEx, callback)) + { + ret->autorelease(); + } + else + { + CC_SAFE_DELETE(ret); + } + return ret; +} + +bool EventListenerAssetsManagerEx::init(const AssetsManagerEx *AssetsManagerEx, const std::function& callback) +{ + bool ret = false; + + _AssetsManagerEx = AssetsManagerEx; + _onAssetsManagerExEvent = callback; + + auto func = [this](EventCustom *event) -> void + { + EventAssetsManagerEx *eventAssetsManagerEx = dynamic_cast(event); + _onAssetsManagerExEvent(eventAssetsManagerEx); + }; + std::string pointer = StringUtils::format("%p", AssetsManagerEx); + if (EventListenerCustom::init(LISTENER_ID + pointer, func)) + { + ret = true; + } + return ret; +} + +EventListenerAssetsManagerEx* EventListenerAssetsManagerEx::clone() +{ + EventListenerAssetsManagerEx* ret = new EventListenerAssetsManagerEx(); + if (ret && ret->init(_AssetsManagerEx, _onAssetsManagerExEvent)) + { + ret->autorelease(); + } + else + { + CC_SAFE_DELETE(ret); + } + return ret; +} + +bool EventListenerAssetsManagerEx::checkAvailable() +{ + bool ret = false; + if (EventListener::checkAvailable() && _AssetsManagerEx != nullptr && _onAssetsManagerExEvent != nullptr) + { + ret = true; + } + return ret; +} + +NS_CC_EXT_END \ No newline at end of file diff --git a/extensions/assets-manager/CCEventListenerAssetsManagerEx.h b/extensions/assets-manager/CCEventListenerAssetsManagerEx.h new file mode 100644 index 0000000000..03693d49ee --- /dev/null +++ b/extensions/assets-manager/CCEventListenerAssetsManagerEx.h @@ -0,0 +1,86 @@ +/**************************************************************************** + Copyright (c) 2014 Chukong Technologies Inc. + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __cocos2d_libs__CCEventListenerAssetsManagerEx__ +#define __cocos2d_libs__CCEventListenerAssetsManagerEx__ + +#include "base/CCEventListener.h" +#include "base/CCEventListenerCustom.h" +#include "extensions/ExtensionMacros.h" +#include "extensions/ExtensionExport.h" + +NS_CC_EXT_BEGIN + +class EventAssetsManagerEx; +class AssetsManagerEx; + +/** + * Usage: + * auto dispatcher = Director::getInstance()->getEventDispatcher(); + * auto manager = AssetsManagerEx::create(manifestUrl, storagePath); + * Adds a listener: + * + * auto callback = [](EventAssetsManagerEx* event){ do_some_thing(); }; + * auto listener = EventListenerAssetsManagerEx::create(manager, callback); + * dispatcher->addEventListenerWithSceneGraphPriority(listener, one_node); + * + * Removes a listener + * + * dispatcher->removeEventListener(listener); + */ +class CC_EX_DLL EventListenerAssetsManagerEx : public cocos2d::EventListenerCustom +{ +public: + friend class AssetsManagerEx; + + /** Creates an event listener with type and callback. + * @param eventType The type of the event. + * @param callback The callback function when the specified event was emitted. + */ + static EventListenerAssetsManagerEx* create(AssetsManagerEx *AssetsManagerEx, const std::function& callback); + + /// Overrides + virtual bool checkAvailable() override; + virtual EventListenerAssetsManagerEx* clone() override; + +CC_CONSTRUCTOR_ACCESS: + /** Constructor */ + EventListenerAssetsManagerEx(); + + /** Initializes event with type and callback function */ + bool init(const AssetsManagerEx *AssetsManagerEx, const std::function& callback); + +protected: + static const std::string LISTENER_ID; + + std::function _onAssetsManagerExEvent; + + const AssetsManagerEx *_AssetsManagerEx; + + //friend class luaEventListenerAssetsManagerEx; +}; + +NS_CC_EXT_END + +#endif /* defined(__cocos2d_libs__CCEventListenerAssetsManagerEx__) */ diff --git a/extensions/assets-manager/Downloader.cpp b/extensions/assets-manager/Downloader.cpp new file mode 100644 index 0000000000..7e8ef08c4a --- /dev/null +++ b/extensions/assets-manager/Downloader.cpp @@ -0,0 +1,680 @@ +/**************************************************************************** + Copyright (c) 2013 cocos2d-x.org + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "Downloader.h" +#include "cocos2d.h" +#include +#include +#include +#include + +NS_CC_EXT_BEGIN + +#define LOW_SPEED_LIMIT 1L +#define LOW_SPEED_TIME 5L +#define MAX_REDIRS 2 +#define DEFAULT_TIMEOUT 5 +#define HTTP_CODE_SUPPORT_RESUME 206 + +#define TEMP_EXT ".temp" + +size_t fileWriteFunc(void *ptr, size_t size, size_t nmemb, void *userdata) +{ + FILE *fp = (FILE*)userdata; + size_t written = fwrite(ptr, size, nmemb, fp); + return written; +} + +size_t bufferWriteFunc(void *ptr, size_t size, size_t nmemb, void *userdata) +{ + Downloader::StreamData *streamBuffer = (Downloader::StreamData *)userdata; + size_t written = size * nmemb; + // Avoid pointer overflow + if (streamBuffer->offset + written <= streamBuffer->total) + { + memcpy(streamBuffer->buffer + streamBuffer->offset, ptr, written); + streamBuffer->offset += written; + return written; + } + else return 0; +} + +// This is only for batchDownload process, will notify file succeed event in progress function +int batchDownloadProgressFunc(Downloader::ProgressData *ptr, double totalToDownload, double nowDownloaded, double totalToUpLoad, double nowUpLoaded) +{ + if (ptr->totalToDownload == 0) + { + ptr->totalToDownload = totalToDownload; + } + + if (ptr->downloaded != nowDownloaded) + { + ptr->downloaded = nowDownloaded; + + Downloader::ProgressData data = *ptr; + + if (nowDownloaded == totalToDownload) + { + Director::getInstance()->getScheduler()->performFunctionInCocosThread([=]{ + if (!data.downloader.expired()) + { + std::shared_ptr downloader = data.downloader.lock(); + + auto progressCB = downloader->getProgressCallback(); + if (progressCB != nullptr) + { + progressCB(totalToDownload, nowDownloaded, data.url, data.customId); + } + auto successCB = downloader->getSuccessCallback(); + if (successCB != nullptr) + { + successCB(data.url, data.path + data.name, data.customId); + } + } + }); + } + else + { + Director::getInstance()->getScheduler()->performFunctionInCocosThread([=]{ + if (!data.downloader.expired()) + { + std::shared_ptr downloader = data.downloader.lock(); + + auto callback = downloader->getProgressCallback(); + if (callback != nullptr) + { + callback(totalToDownload, nowDownloaded, data.url, data.customId); + } + } + }); + } + } + + return 0; +} + +// Compare to batchDownloadProgressFunc, this only handles progress information notification +int downloadProgressFunc(Downloader::ProgressData *ptr, double totalToDownload, double nowDownloaded, double totalToUpLoad, double nowUpLoaded) +{ + if (ptr->totalToDownload == 0) + { + ptr->totalToDownload = totalToDownload; + } + + if (ptr->downloaded != nowDownloaded) + { + ptr->downloaded = nowDownloaded; + Downloader::ProgressData data = *ptr; + + Director::getInstance()->getScheduler()->performFunctionInCocosThread([=]{ + if (!data.downloader.expired()) + { + std::shared_ptr downloader = data.downloader.lock(); + + auto callback = downloader->getProgressCallback(); + if (callback != nullptr) + { + callback(totalToDownload, nowDownloaded, data.url, data.customId); + } + } + }); + } + + return 0; +} + +Downloader::Downloader() +: _onError(nullptr) +, _onProgress(nullptr) +, _onSuccess(nullptr) +, _connectionTimeout(DEFAULT_TIMEOUT) +, _supportResuming(false) +{ + _fileUtils = FileUtils::getInstance(); +} + +Downloader::~Downloader() +{ +} + +int Downloader::getConnectionTimeout() +{ + return _connectionTimeout; +} + +void Downloader::setConnectionTimeout(int timeout) +{ + if (timeout >= 0) + _connectionTimeout = timeout; +} + +void Downloader::notifyError(ErrorCode code, const std::string &msg/* ="" */, const std::string &customId/* ="" */, int curle_code/* = CURLE_OK*/, int curlm_code/* = CURLM_OK*/) +{ + std::weak_ptr ptr = shared_from_this(); + Director::getInstance()->getScheduler()->performFunctionInCocosThread([=]{ + if (!ptr.expired()) + { + std::shared_ptr downloader = ptr.lock(); + if (downloader->_onError != nullptr) + { + Error err; + err.code = code; + err.curle_code = curle_code; + err.curlm_code = curlm_code; + err.message = msg; + err.customId = customId; + downloader->_onError(err); + } + } + }); +} + +void Downloader::notifyError(const std::string &msg, int curlm_code, const std::string &customId/* = ""*/) +{ + notifyError(ErrorCode::CURL_MULTI_ERROR, msg, customId, CURLE_OK, curlm_code); +} + +void Downloader::notifyError(const std::string &msg, const std::string &customId, int curle_code) +{ + notifyError(ErrorCode::CURL_EASY_ERROR, msg, customId, curle_code); +} + +std::string Downloader::getFileNameFromUrl(const std::string &srcUrl) +{ + // Find file name and file extension + std::string filename; + unsigned long found = srcUrl.find_last_of("/\\"); + if (found != std::string::npos) + filename = srcUrl.substr(found+1); + return filename; +} + +void Downloader::clearBatchDownloadData() +{ + while (_progDatas.size() != 0) { + delete _progDatas.back(); + _progDatas.pop_back(); + } + + while (_files.size() != 0) { + delete _files.back(); + _files.pop_back(); + } +} + +void Downloader::prepareDownload(const std::string &srcUrl, const std::string &storagePath, const std::string &customId, bool resumeDownload, FileDescriptor *fDesc, ProgressData *pData) +{ + std::shared_ptr downloader = shared_from_this(); + pData->customId = customId; + pData->url = srcUrl; + pData->downloader = downloader; + pData->downloaded = 0; + pData->totalToDownload = 0; + + fDesc->fp = nullptr; + fDesc->curl = nullptr; + + Error err; + err.customId = customId; + + // Asserts + // Find file name and file extension + unsigned long found = storagePath.find_last_of("/\\"); + if (found != std::string::npos) + { + pData->name = storagePath.substr(found+1); + pData->path = storagePath.substr(0, found+1); + } + else + { + err.code = ErrorCode::INVALID_URL; + err.message = "Invalid url or filename not exist error: " + srcUrl; + if (this->_onError) this->_onError(err); + return; + } + + // Create a file to save file. + const std::string outFileName = storagePath + TEMP_EXT; + if (_supportResuming && resumeDownload && _fileUtils->isFileExist(outFileName)) + { + fDesc->fp = fopen(outFileName.c_str(), "ab"); + } + else + { + fDesc->fp = fopen(outFileName.c_str(), "wb"); + } + if (!fDesc->fp) + { + err.code = ErrorCode::CREATE_FILE; + err.message = StringUtils::format("Can not create file %s: errno %d", outFileName.c_str(), errno); + if (this->_onError) this->_onError(err); + } +} + +bool Downloader::prepareHeader(void *curl, const std::string &srcUrl) const +{ + curl_easy_setopt(curl, CURLOPT_URL, srcUrl.c_str()); + curl_easy_setopt(curl, CURLOPT_HEADER, 1); + curl_easy_setopt(curl, CURLOPT_NOBODY, 1); + if (curl_easy_perform(curl) == CURLE_OK) + return true; + else + return false; +} + +long Downloader::getContentSize(const std::string &srcUrl) const +{ + double contentLength = -1; + CURL *header = curl_easy_init(); + if (prepareHeader(header, srcUrl)) + { + curl_easy_getinfo(header, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &contentLength); + } + curl_easy_cleanup(header); + + return contentLength; +} + +void Downloader::downloadToBufferAsync(const std::string &srcUrl, unsigned char *buffer, const long &size, const std::string &customId/* = ""*/) +{ + if (buffer != nullptr) + { + std::shared_ptr downloader = shared_from_this(); + ProgressData pData; + pData.customId = customId; + pData.url = srcUrl; + pData.downloader = downloader; + pData.downloaded = 0; + pData.totalToDownload = 0; + + StreamData streamBuffer; + streamBuffer.buffer = buffer; + streamBuffer.total = size; + streamBuffer.offset = 0; + + auto t = std::thread(&Downloader::downloadToBuffer, this, srcUrl, customId, streamBuffer, pData); + t.detach(); + } +} + +void Downloader::downloadToBufferSync(const std::string &srcUrl, unsigned char *buffer, const long &size, const std::string &customId/* = ""*/) +{ + if (buffer != nullptr) + { + std::shared_ptr downloader = shared_from_this(); + ProgressData pData; + pData.customId = customId; + pData.url = srcUrl; + pData.downloader = downloader; + pData.downloaded = 0; + pData.totalToDownload = 0; + + StreamData streamBuffer; + streamBuffer.buffer = buffer; + streamBuffer.total = size; + streamBuffer.offset = 0; + + downloadToBuffer(srcUrl, customId, streamBuffer, pData); + } +} + +void Downloader::downloadToBuffer(const std::string &srcUrl, const std::string &customId, const StreamData &buffer, const ProgressData &data) +{ + std::weak_ptr ptr = shared_from_this(); + CURL *curl = curl_easy_init(); + if (!curl) + { + this->notifyError(ErrorCode::CURL_EASY_ERROR, "Can not init curl with curl_easy_init", customId); + return; + } + + // Download pacakge + curl_easy_setopt(curl, CURLOPT_URL, srcUrl.c_str()); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, bufferWriteFunc); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer); + curl_easy_setopt(curl, CURLOPT_NOPROGRESS, false); + curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, downloadProgressFunc); + curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, &data); + curl_easy_setopt(curl, CURLOPT_FAILONERROR, true); + if (_connectionTimeout) curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, _connectionTimeout); + curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L); + curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, LOW_SPEED_LIMIT); + curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, LOW_SPEED_TIME); + + CURLcode res = curl_easy_perform(curl); + if (res != CURLE_OK) + { + _fileUtils->removeFile(data.path + data.name + TEMP_EXT); + std::string msg = StringUtils::format("Unable to download file: [curl error]%s", curl_easy_strerror(res)); + this->notifyError(msg, customId, res); + } + + curl_easy_cleanup(curl); + + Director::getInstance()->getScheduler()->performFunctionInCocosThread([=]{ + if (!ptr.expired()) + { + std::shared_ptr downloader = ptr.lock(); + + auto successCB = downloader->getSuccessCallback(); + if (successCB != nullptr) + { + successCB(data.url, "", data.customId); + } + } + }); +} + +void Downloader::downloadAsync(const std::string &srcUrl, const std::string &storagePath, const std::string &customId/* = ""*/) +{ + FileDescriptor fDesc; + ProgressData pData; + prepareDownload(srcUrl, storagePath, customId, false, &fDesc, &pData); + if (fDesc.fp != NULL) + { + auto t = std::thread(&Downloader::download, this, srcUrl, customId, fDesc, pData); + t.detach(); + } +} + +void Downloader::downloadSync(const std::string &srcUrl, const std::string &storagePath, const std::string &customId/* = ""*/) +{ + FileDescriptor fDesc; + ProgressData pData; + prepareDownload(srcUrl, storagePath, customId, false, &fDesc, &pData); + if (fDesc.fp != NULL) + { + download(srcUrl, customId, fDesc, pData); + } +} + +void Downloader::download(const std::string &srcUrl, const std::string &customId, const FileDescriptor &fDesc, const ProgressData &data) +{ + std::weak_ptr ptr = shared_from_this(); + CURL *curl = curl_easy_init(); + if (!curl) + { + this->notifyError(ErrorCode::CURL_EASY_ERROR, "Can not init curl with curl_easy_init", customId); + return; + } + + // Download pacakge + curl_easy_setopt(curl, CURLOPT_URL, srcUrl.c_str()); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fileWriteFunc); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, fDesc.fp); + curl_easy_setopt(curl, CURLOPT_NOPROGRESS, false); + curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, downloadProgressFunc); + curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, &data); + curl_easy_setopt(curl, CURLOPT_FAILONERROR, true); + if (_connectionTimeout) curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, _connectionTimeout); + curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L); + curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, LOW_SPEED_LIMIT); + curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, LOW_SPEED_TIME); + + CURLcode res = curl_easy_perform(curl); + if (res != CURLE_OK) + { + _fileUtils->removeFile(data.path + data.name + TEMP_EXT); + std::string msg = StringUtils::format("Unable to download file: [curl error]%s", curl_easy_strerror(res)); + this->notifyError(msg, customId, res); + } + + fclose(fDesc.fp); + curl_easy_cleanup(curl); + + // This can only be done after fclose + if (res == CURLE_OK) + { + _fileUtils->renameFile(data.path, data.name + TEMP_EXT, data.name); + + Director::getInstance()->getScheduler()->performFunctionInCocosThread([=]{ + if (!ptr.expired()) + { + std::shared_ptr downloader = ptr.lock(); + + auto successCB = downloader->getSuccessCallback(); + if (successCB != nullptr) + { + successCB(data.url, data.path + data.name, data.customId); + } + } + }); + } +} + +void Downloader::batchDownloadAsync(const DownloadUnits &units, const std::string &batchId/* = ""*/) +{ + auto t = std::thread(&Downloader::batchDownloadSync, this, units, batchId); + t.detach(); +} + +void Downloader::batchDownloadSync(const DownloadUnits &units, const std::string &batchId/* = ""*/) +{ + if (units.size() == 0) + { + return; + } + // Make sure downloader won't be released + std::weak_ptr ptr = shared_from_this(); + + // Test server download resuming support with the first unit + _supportResuming = false; + CURL *header = curl_easy_init(); + // Make a resume request + curl_easy_setopt(header, CURLOPT_RESUME_FROM_LARGE, 0); + if (prepareHeader(header, units.begin()->second.srcUrl)) + { + long responseCode; + curl_easy_getinfo(header, CURLINFO_RESPONSE_CODE, &responseCode); + if (responseCode == HTTP_CODE_SUPPORT_RESUME) + { + _supportResuming = true; + } + } + curl_easy_cleanup(header); + + int count = 0; + DownloadUnits group; + for (auto it = units.cbegin(); it != units.cend(); ++it, ++count) + { + if (count == FOPEN_MAX) + { + groupBatchDownload(group); + group.clear(); + count = 0; + } + const std::string &key = it->first; + const DownloadUnit &unit = it->second; + group.emplace(key, unit); + } + if (group.size() > 0) + { + groupBatchDownload(group); + } + + Director::getInstance()->getScheduler()->performFunctionInCocosThread([ptr, batchId]{ + if (!ptr.expired()) { + std::shared_ptr downloader = ptr.lock(); + auto callback = downloader->getSuccessCallback(); + if (callback != nullptr) + { + callback("", "", batchId); + } + } + }); + _supportResuming = false; +} + +void Downloader::groupBatchDownload(const DownloadUnits &units) +{ + CURLM* multi_handle = curl_multi_init(); + int still_running = 0; + + for (auto it = units.cbegin(); it != units.cend(); ++it) + { + DownloadUnit unit = it->second; + std::string srcUrl = unit.srcUrl; + std::string storagePath = unit.storagePath; + std::string customId = unit.customId; + + FileDescriptor *fDesc = new FileDescriptor(); + ProgressData *data = new ProgressData(); + prepareDownload(srcUrl, storagePath, customId, unit.resumeDownload, fDesc, data); + + if (fDesc->fp != NULL) + { + CURL* curl = curl_easy_init(); + curl_easy_setopt(curl, CURLOPT_URL, srcUrl.c_str()); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fileWriteFunc); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, fDesc->fp); + curl_easy_setopt(curl, CURLOPT_NOPROGRESS, false); + curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, batchDownloadProgressFunc); + curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, data); + curl_easy_setopt(curl, CURLOPT_FAILONERROR, true); + if (_connectionTimeout) curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, _connectionTimeout); + curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L); + curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, LOW_SPEED_LIMIT); + curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, LOW_SPEED_TIME); + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true); + curl_easy_setopt(curl, CURLOPT_MAXREDIRS, MAX_REDIRS); + + // Resuming download support + if (_supportResuming && unit.resumeDownload) + { + // Check already downloaded size for current download unit + long size = _fileUtils->getFileSize(storagePath + TEMP_EXT); + if (size != -1) + { + curl_easy_setopt(curl, CURLOPT_RESUME_FROM_LARGE, size); + } + } + fDesc->curl = curl; + + CURLMcode code = curl_multi_add_handle(multi_handle, curl); + if (code != CURLM_OK) + { + // Avoid memory leak + fclose(fDesc->fp); + delete data; + delete fDesc; + std::string msg = StringUtils::format("Unable to add curl handler for %s: [curl error]%s", customId.c_str(), curl_multi_strerror(code)); + this->notifyError(msg, code, customId); + } + else + { + // Add to list for tracking + _progDatas.push_back(data); + _files.push_back(fDesc); + } + } + } + + // Query multi perform + CURLMcode curlm_code = CURLM_CALL_MULTI_PERFORM; + while(CURLM_CALL_MULTI_PERFORM == curlm_code) { + curlm_code = curl_multi_perform(multi_handle, &still_running); + } + if (curlm_code != CURLM_OK) { + std::string msg = StringUtils::format("Unable to continue the download process: [curl error]%s", curl_multi_strerror(curlm_code)); + this->notifyError(msg, curlm_code); + } + else + { + bool failed = false; + while (still_running > 0 && !failed) + { + // set a suitable timeout to play around with + struct timeval select_tv; + long curl_timeo = -1; + select_tv.tv_sec = 1; + select_tv.tv_usec = 0; + + curl_multi_timeout(multi_handle, &curl_timeo); + if(curl_timeo >= 0) { + select_tv.tv_sec = curl_timeo / 1000; + if(select_tv.tv_sec > 1) + select_tv.tv_sec = 1; + else + select_tv.tv_usec = (curl_timeo % 1000) * 1000; + } + + int rc; + fd_set fdread; + fd_set fdwrite; + fd_set fdexcep; + int maxfd = -1; + FD_ZERO(&fdread); + FD_ZERO(&fdwrite); + FD_ZERO(&fdexcep); + curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); + rc = select(maxfd + 1, &fdread, &fdwrite, &fdexcep, &select_tv); + + switch(rc) + { + case -1: + failed = true; + break; + case 0: + default: + curlm_code = CURLM_CALL_MULTI_PERFORM; + while(CURLM_CALL_MULTI_PERFORM == curlm_code) { + curlm_code = curl_multi_perform(multi_handle, &still_running); + } + if (curlm_code != CURLM_OK) { + std::string msg = StringUtils::format("Unable to continue the download process: [curl error]%s", curl_multi_strerror(curlm_code)); + this->notifyError(msg, curlm_code); + } + break; + } + } + } + + // Clean up and close files + curl_multi_cleanup(multi_handle); + for (auto it = _files.begin(); it != _files.end(); ++it) + { + FILE *f = (*it)->fp; + fclose(f); + auto single = (*it)->curl; + curl_multi_remove_handle(multi_handle, single); + curl_easy_cleanup(single); + } + + // Check unfinished files and notify errors, succeed files will be renamed from temporary file name to real name + for (auto it = _progDatas.begin(); it != _progDatas.end(); ++it) { + ProgressData *data = *it; + if (data->downloaded < data->totalToDownload || data->totalToDownload == 0) + { + this->notifyError(ErrorCode::NETWORK, "Unable to download file", data->customId); + } + else + { + _fileUtils->renameFile(data->path, data->name + TEMP_EXT, data->name); + } + } + + clearBatchDownloadData(); +} + +NS_CC_EXT_END diff --git a/extensions/assets-manager/Downloader.h b/extensions/assets-manager/Downloader.h new file mode 100644 index 0000000000..55fb405c3e --- /dev/null +++ b/extensions/assets-manager/Downloader.h @@ -0,0 +1,196 @@ +/**************************************************************************** + Copyright (c) 2013 cocos2d-x.org + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __Downloader__ +#define __Downloader__ + +#include "platform/CCFileUtils.h" +#include "extensions/ExtensionMacros.h" +#include "extensions/ExtensionExport.h" + +#include +#include +#include +#include + +NS_CC_EXT_BEGIN + +class CC_EX_DLL Downloader : public std::enable_shared_from_this +{ +public: + + friend class AssetsManagerEx; + + enum class ErrorCode + { + CREATE_FILE, + + NETWORK, + + NO_NEW_VERSION, + + UNCOMPRESS, + + CURL_UNINIT, + + CURL_MULTI_ERROR, + + CURL_EASY_ERROR, + + INVALID_URL, + + INVALID_STORAGE_PATH + }; + + struct Error + { + ErrorCode code; + int curlm_code; + int curle_code; + std::string message; + std::string customId; + std::string url; + }; + + struct ProgressData + { + std::weak_ptr downloader; + std::string customId; + std::string url; + std::string path; + std::string name; + double downloaded; + double totalToDownload; + }; + + struct DownloadUnit + { + std::string srcUrl; + std::string storagePath; + std::string customId; + bool resumeDownload; + }; + + struct StreamData + { + long offset; + long total; + unsigned char *buffer; + }; + + typedef std::unordered_map DownloadUnits; + + typedef std::function ErrorCallback; + typedef std::function ProgressCallback; + typedef std::function SuccessCallback; + + int getConnectionTimeout(); + + void setConnectionTimeout(int timeout); + + void setErrorCallback(const ErrorCallback &callback) { _onError = callback; }; + + void setProgressCallback(const ProgressCallback &callback) { _onProgress = callback; }; + + void setSuccessCallback(const SuccessCallback &callback) { _onSuccess = callback; }; + + ErrorCallback getErrorCallback() const { return _onError; }; + + ProgressCallback getProgressCallback() const { return _onProgress; }; + + SuccessCallback getSuccessCallback() const { return _onSuccess; }; + + long getContentSize(const std::string &srcUrl) const; + + void downloadToBufferAsync(const std::string &srcUrl, unsigned char *buffer, const long &size, const std::string &customId = ""); + + void downloadToBufferSync(const std::string &srcUrl, unsigned char *buffer, const long &size, const std::string &customId = ""); + + void downloadAsync(const std::string &srcUrl, const std::string &storagePath, const std::string &customId = ""); + + void downloadSync(const std::string &srcUrl, const std::string &storagePath, const std::string &customId = ""); + + void batchDownloadAsync(const DownloadUnits &units, const std::string &batchId = ""); + + void batchDownloadSync(const DownloadUnits &units, const std::string &batchId = ""); + + /** + * The default constructor. + */ + Downloader(); + + ~Downloader(); + +protected: + + struct FileDescriptor + { + FILE *fp; + void *curl; + }; + + void prepareDownload(const std::string &srcUrl, const std::string &storagePath, const std::string &customId, bool resumeDownload, FileDescriptor *fDesc, ProgressData *pData); + + bool prepareHeader(void *curl, const std::string &srcUrl) const; + + void downloadToBuffer(const std::string &srcUrl, const std::string &customId, const StreamData &buffer, const ProgressData &data); + + void download(const std::string &srcUrl, const std::string &customId, const FileDescriptor &fDesc, const ProgressData &data); + + void groupBatchDownload(const DownloadUnits &units); + + void notifyError(ErrorCode code, const std::string &msg = "", const std::string &customId = "", int curle_code = 0, int curlm_code = 0); + + void notifyError(const std::string &msg, int curlm_code, const std::string &customId = ""); + + void notifyError(const std::string &msg, const std::string &customId, int curle_code); + +private: + + int _connectionTimeout; + + ErrorCallback _onError; + + ProgressCallback _onProgress; + + SuccessCallback _onSuccess; + + std::string getFileNameFromUrl(const std::string &srcUrl); + + void clearBatchDownloadData(); + + std::vector _files; + + std::vector _progDatas; + + FileUtils *_fileUtils; + + bool _supportResuming; +}; + +int downloadProgressFunc(Downloader::ProgressData *ptr, double totalToDownload, double nowDownloaded, double totalToUpLoad, double nowUpLoaded); + +NS_CC_EXT_END + +#endif /* defined(__Downloader__) */ diff --git a/extensions/assets-manager/Manifest.cpp b/extensions/assets-manager/Manifest.cpp new file mode 100644 index 0000000000..370c14c581 --- /dev/null +++ b/extensions/assets-manager/Manifest.cpp @@ -0,0 +1,481 @@ +/**************************************************************************** + Copyright (c) 2014 cocos2d-x.org + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#include "Manifest.h" +#include "json/filestream.h" +#include "json/prettywriter.h" +#include "json/stringbuffer.h" + +#include + +#define KEY_VERSION "version" +#define KEY_PACKAGE_URL "packageUrl" +#define KEY_MANIFEST_URL "remoteManifestUrl" +#define KEY_VERSION_URL "remoteVersionUrl" +#define KEY_GROUP_VERSIONS "groupVersions" +#define KEY_ENGINE_VERSION "engineVersion" +#define KEY_ASSETS "assets" +#define KEY_COMPRESSED_FILES "compressedFiles" +#define KEY_SEARCH_PATHS "searchPaths" + +#define KEY_PATH "path" +#define KEY_MD5 "md5" +#define KEY_GROUP "group" +#define KEY_COMPRESSED "compressed" +#define KEY_COMPRESSED_FILE "compressedFile" +#define KEY_DOWNLOAD_STATE "downloadState" + +NS_CC_EXT_BEGIN + +Manifest::Manifest(const std::string& manifestUrl/* = ""*/) +: _versionLoaded(false) +, _loaded(false) +, _manifestRoot("") +, _remoteManifestUrl("") +, _remoteVersionUrl("") +, _version("") +, _engineVer("") +{ + // Init variables + _fileUtils = FileUtils::getInstance(); + if (manifestUrl.size() > 0) + parse(manifestUrl); +} + +void Manifest::parse(const std::string& manifestUrl) +{ + clear(); + std::string content; + if (_fileUtils->isFileExist(manifestUrl)) + { + // Load file content + content = _fileUtils->getStringFromFile(manifestUrl); + + if (content.size() == 0) + { + CCLOG("Fail to retrieve local file content: %s\n", manifestUrl.c_str()); + } + else + { + // Parse file with rapid json + _json.Parse<0>(content.c_str()); + // Print error + if (_json.HasParseError()) { + size_t offset = _json.GetErrorOffset(); + if (offset > 0) + offset--; + std::string errorSnippet = content.substr(offset, 10); + CCLOG("File parse error %s at <%s>\n", _json.GetParseError(), errorSnippet.c_str()); + } + } + } + + if (_json.IsObject()) + { + // Register the local manifest root + size_t found = manifestUrl.find_last_of("/\\"); + if (found != std::string::npos) + { + _manifestRoot = manifestUrl.substr(0, found+1); + } + loadManifest(_json); + } +} + +bool Manifest::isVersionLoaded() const +{ + return _versionLoaded; +} +bool Manifest::isLoaded() const +{ + return _loaded; +} + +bool Manifest::versionEquals(const Manifest *b) const +{ + // Check manifest version + if (_version != b->getVersion()) + { + return false; + } + // Check group versions + else + { + std::vector bGroups = b->getGroups(); + std::unordered_map bGroupVer = b->getGroupVerions(); + // Check group size + if (bGroups.size() != _groups.size()) + return false; + + // Check groups version + for (int i = 0; i < _groups.size(); ++i) { + std::string gid =_groups[i]; + // Check group name + if (gid != bGroups[i]) + return false; + // Check group version + if (_groupVer.at(gid) != bGroupVer.at(gid)) + return false; + } + } + return true; +} + +std::unordered_map Manifest::genDiff(const Manifest *b) const +{ + std::unordered_map diff_map; + std::unordered_map bAssets = b->getAssets(); + + std::string key; + Asset valueA; + Asset valueB; + std::unordered_map::const_iterator valueIt, it; + for (it = _assets.begin(); it != _assets.end(); ++it) + { + key = it->first; + valueA = it->second; + + // Deleted + valueIt = bAssets.find(key); + if (valueIt == bAssets.cend()) { + AssetDiff diff; + diff.asset = valueA; + diff.type = DiffType::DELETED; + diff_map.emplace(key, diff); + continue; + } + + // Modified + valueB = valueIt->second; + if (valueA.md5 != valueB.md5) { + AssetDiff diff; + diff.asset = valueB; + diff.type = DiffType::MODIFIED; + diff_map.emplace(key, diff); + } + } + + for (it = bAssets.begin(); it != bAssets.end(); ++it) + { + key = it->first; + valueB = it->second; + + // Added + valueIt = _assets.find(key); + if (valueIt == _assets.cend()) { + AssetDiff diff; + diff.asset = valueB; + diff.type = DiffType::ADDED; + diff_map.emplace(key, diff); + } + } + + return diff_map; +} + +void Manifest::genResumeAssetsList(Downloader::DownloadUnits *units) const +{ + for (auto it = _assets.begin(); it != _assets.end(); ++it) + { + Asset asset = it->second; + + if (asset.downloadState != DownloadState::SUCCESSED) + { + Downloader::DownloadUnit unit; + unit.customId = it->first; + unit.srcUrl = _packageUrl + asset.path; + unit.storagePath = _manifestRoot + asset.path; + if (asset.downloadState == DownloadState::DOWNLOADING) + { + unit.resumeDownload = true; + } + else + { + unit.resumeDownload = false; + } + units->emplace(unit.customId, unit); + } + } +} + + +void Manifest::prependSearchPaths() +{ + std::vector searchPaths = FileUtils::getInstance()->getSearchPaths(); + std::vector::iterator iter = searchPaths.begin(); + searchPaths.insert(iter, _manifestRoot); + + for (int i = (int)_searchPaths.size()-1; i >= 0; i--) + { + std::string path = _searchPaths[i]; + if (path.size() > 0 && path[path.size() - 1] != '/') + path.append("/"); + path = _manifestRoot + path; + iter = searchPaths.begin(); + searchPaths.insert(iter, path); + } + FileUtils::getInstance()->setSearchPaths(searchPaths); +} + + +const std::string& Manifest::getPackageUrl() const +{ + return _packageUrl; +} + +const std::string& Manifest::getManifestFileUrl() const +{ + return _remoteManifestUrl; +} + +const std::string& Manifest::getVersionFileUrl() const +{ + return _remoteVersionUrl; +} + +const std::string& Manifest::getVersion() const +{ + return _version; +} + +const std::vector& Manifest::getGroups() const +{ + return _groups; +} + +const std::unordered_map& Manifest::getGroupVerions() const +{ + return _groupVer; +} + +const std::string& Manifest::getGroupVersion(const std::string &group) const +{ + return _groupVer.at(group); +} + +const std::unordered_map& Manifest::getAssets() const +{ + return _assets; +} + +void Manifest::setAssetDownloadState(const std::string &key, const Manifest::DownloadState &state) +{ + auto valueIt = _assets.find(key); + if (valueIt != _assets.end()) + { + valueIt->second.downloadState = state; + + // Update json object + if(_json.IsObject()) + { + if ( _json.HasMember(KEY_ASSETS) ) + { + rapidjson::Value &assets = _json[KEY_ASSETS]; + if (assets.IsObject()) + { + for (rapidjson::Value::MemberIterator itr = assets.MemberonBegin(); itr != assets.MemberonEnd(); ++itr) + { + std::string jkey = itr->name.GetString(); + if (jkey == key) { + rapidjson::Value &entry = itr->value; + rapidjson::Value &value = entry[KEY_DOWNLOAD_STATE]; + if (value.IsInt()) + { + value.SetInt((int)state); + } + else + { + entry.AddMember(KEY_DOWNLOAD_STATE, (int)state, _json.GetAllocator()); + } + } + } + } + } + } + } +} + +void Manifest::clear() +{ + if (_versionLoaded || _loaded) + { + _groups.clear(); + _groupVer.clear(); + + _remoteManifestUrl = ""; + _remoteVersionUrl = ""; + _version = ""; + _engineVer = ""; + + _versionLoaded = false; + } + + if (_loaded) + { + _assets.clear(); + _searchPaths.clear(); + _loaded = false; + } +} + +Manifest::Asset Manifest::parseAsset(const std::string &path, const rapidjson::Value &json) +{ + Asset asset; + asset.path = path; + + if ( json.HasMember(KEY_MD5) && json[KEY_MD5].IsString() ) + { + asset.md5 = json[KEY_MD5].GetString(); + } + else asset.md5 = ""; + + if ( json.HasMember(KEY_PATH) && json[KEY_PATH].IsString() ) + { + asset.path = json[KEY_PATH].GetString(); + } + + if ( json.HasMember(KEY_COMPRESSED) && json[KEY_COMPRESSED].IsBool() ) + { + asset.compressed = json[KEY_COMPRESSED].GetBool(); + } + else asset.compressed = false; + + if ( json.HasMember(KEY_DOWNLOAD_STATE) && json[KEY_DOWNLOAD_STATE].IsInt() ) + { + asset.downloadState = (DownloadState)(json[KEY_DOWNLOAD_STATE].GetInt()); + } + else asset.downloadState = DownloadState::UNSTARTED; + + return asset; +} + +void Manifest::loadVersion(const rapidjson::Document &json) +{ + // Retrieve remote manifest url + if ( json.HasMember(KEY_MANIFEST_URL) && json[KEY_MANIFEST_URL].IsString() ) + { + _remoteManifestUrl = json[KEY_MANIFEST_URL].GetString(); + } + + // Retrieve remote version url + if ( json.HasMember(KEY_VERSION_URL) && json[KEY_VERSION_URL].IsString() ) + { + _remoteVersionUrl = json[KEY_VERSION_URL].GetString(); + } + + // Retrieve local version + if ( json.HasMember(KEY_VERSION) && json[KEY_VERSION].IsString() ) + { + _version = json[KEY_VERSION].GetString(); + } + + // Retrieve local group version + if ( json.HasMember(KEY_GROUP_VERSIONS) ) + { + const rapidjson::Value& groupVers = json[KEY_GROUP_VERSIONS]; + if (groupVers.IsObject()) + { + for (rapidjson::Value::ConstMemberIterator itr = groupVers.MemberonBegin(); itr != groupVers.MemberonEnd(); ++itr) + { + std::string group = itr->name.GetString(); + std::string version = "0"; + if (itr->value.IsString()) + { + version = itr->value.GetString(); + } + _groups.push_back(group); + _groupVer.emplace(group, version); + } + } + } + + // Retrieve local engine version + if ( json.HasMember(KEY_ENGINE_VERSION) && json[KEY_ENGINE_VERSION].IsString() ) + { + _engineVer = json[KEY_ENGINE_VERSION].GetString(); + } + + _versionLoaded = true; +} + +void Manifest::loadManifest(const rapidjson::Document &json) +{ + loadVersion(json); + + // Retrieve package url + if ( json.HasMember(KEY_PACKAGE_URL) && json[KEY_PACKAGE_URL].IsString() ) + { + _packageUrl = json[KEY_PACKAGE_URL].GetString(); + // Append automatically "/" + if (_packageUrl.size() > 0 && _packageUrl[_packageUrl.size() - 1] != '/') + { + _packageUrl.append("/"); + } + } + + // Retrieve all assets + if ( json.HasMember(KEY_ASSETS) ) + { + const rapidjson::Value& assets = json[KEY_ASSETS]; + if (assets.IsObject()) + { + for (rapidjson::Value::ConstMemberIterator itr = assets.MemberonBegin(); itr != assets.MemberonEnd(); ++itr) + { + std::string key = itr->name.GetString(); + Asset asset = parseAsset(key, itr->value); + _assets.emplace(key, asset); + } + } + } + + // Retrieve all search paths + if ( json.HasMember(KEY_SEARCH_PATHS) ) + { + const rapidjson::Value& paths = json[KEY_SEARCH_PATHS]; + if (paths.IsArray()) + { + for (rapidjson::SizeType i = 0; i < paths.Size(); ++i) + { + if (paths[i].IsString()) { + _searchPaths.push_back(paths[i].GetString()); + } + } + } + } + + _loaded = true; +} + +void Manifest::saveToFile(const std::string &filepath) +{ + rapidjson::StringBuffer buffer; + rapidjson::PrettyWriter writer(buffer); + _json.Accept(writer); + + std::ofstream output(filepath, std::ofstream::out); + if(!output.bad()) + output << buffer.GetString() << std::endl; +} + +NS_CC_EXT_END \ No newline at end of file diff --git a/extensions/assets-manager/Manifest.h b/extensions/assets-manager/Manifest.h new file mode 100644 index 0000000000..adebf3e404 --- /dev/null +++ b/extensions/assets-manager/Manifest.h @@ -0,0 +1,207 @@ +/**************************************************************************** + Copyright (c) 2013 cocos2d-x.org + + http://www.cocos2d-x.org + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ****************************************************************************/ + +#ifndef __Manifest__ +#define __Manifest__ + +#include "extensions/ExtensionMacros.h" +#include "extensions/ExtensionExport.h" +#include "Downloader.h" + +#include +#include +#include + +#include "json/document.h" + +NS_CC_EXT_BEGIN + + +class CC_EX_DLL Manifest : public Ref +{ +public: + + friend class AssetsManagerEx; + + //! The type of difference + enum class DiffType { + ADDED, + DELETED, + MODIFIED + }; + + enum class DownloadState { + UNSTARTED, + DOWNLOADING, + SUCCESSED + }; + + //! Asset object + struct Asset { + std::string md5; + std::string path; + bool compressed; + DownloadState downloadState; + }; + + //! Object indicate the difference between two Assets + struct AssetDiff { + Asset asset; + DiffType type; + }; + + /** @brief Check whether the version informations have been fully loaded + */ + bool isVersionLoaded() const; + + /** @brief Check whether the manifest have been fully loaded + */ + bool isLoaded() const; + + /** @brief Gets remote package url. + */ + const std::string& getPackageUrl() const; + + /** @brief Gets remote manifest file url. + */ + const std::string& getManifestFileUrl() const; + + /** @brief Gets remote version file url. + */ + const std::string& getVersionFileUrl() const; + + /** @brief Gets manifest version. + */ + const std::string& getVersion() const; + +protected: + + /** @brief Constructor for Manifest class + @param manifestUrl Url of the local manifest + */ + Manifest(const std::string& manifestUrl = ""); + + /** @brief Parse the manifest file information into this manifest + * @param manifestUrl Url of the local manifest + */ + void parse(const std::string& manifestUrl); + + /** @brief Check whether the version of this manifest equals to another. + * @param b The other manifest + */ + bool versionEquals(const Manifest *b) const; + + /** @brief Generate difference between this Manifest and another. + * @param b The other manifest + */ + std::unordered_map genDiff(const Manifest *b) const; + + /** @brief Generate resuming download assets list + * @param units The download units reference to be modified by the generation result + */ + void genResumeAssetsList(Downloader::DownloadUnits *units) const; + + /** @brief Prepend all search paths to the FileUtils. + */ + void prependSearchPaths(); + + void loadVersion(const rapidjson::Document &json); + + void loadManifest(const rapidjson::Document &json); + + void saveToFile(const std::string &filepath); + + Asset parseAsset(const std::string &path, const rapidjson::Value &json); + + void clear(); + + /** @brief Gets all groups. + */ + const std::vector& getGroups() const; + + /** @brief Gets all groups version. + */ + const std::unordered_map& getGroupVerions() const; + + /** @brief Gets version for the given group. + * @param group Key of the requested group + */ + const std::string& getGroupVersion(const std::string &group) const; + + /** @brief Gets assets. + */ + const std::unordered_map& getAssets() const; + + /** @brief Set the download state for an asset + * @param key Key of the asset to set + * @param state The current download state of the asset + */ + void setAssetDownloadState(const std::string &key, const DownloadState &state); + +private: + + //! Indicate whether the version informations have been fully loaded + bool _versionLoaded; + + //! Indicate whether the manifest have been fully loaded + bool _loaded; + + //! Reference to the global file utils + FileUtils *_fileUtils; + + //! The local manifest root + std::string _manifestRoot; + + //! The remote package url + std::string _packageUrl; + + //! The remote path of manifest file + std::string _remoteManifestUrl; + + //! The remote path of version file [Optional] + std::string _remoteVersionUrl; + + //! The version of local manifest + std::string _version; + + //! All groups exist in manifest [Optional] + std::vector _groups; + + //! The versions of all local group [Optional] + std::unordered_map _groupVer; + + //! The version of local engine + std::string _engineVer; + + //! Full assets list + std::unordered_map _assets; + + //! All search paths + std::vector _searchPaths; + + rapidjson::Document _json; +}; + +NS_CC_EXT_END +#endif /* defined(__Manifest__) */ diff --git a/extensions/cocos-ext.h b/extensions/cocos-ext.h index 6f742b7046..9ff891ed60 100644 --- a/extensions/cocos-ext.h +++ b/extensions/cocos-ext.h @@ -13,6 +13,10 @@ #include "physics-nodes/CCPhysicsSprite.h" #include "assets-manager/AssetsManager.h" +#include "assets-manager/AssetsManagerEx.h" +#include "assets-manager/CCEventAssetsManagerEx.h" +#include "assets-manager/CCEventListenerAssetsManagerEx.h" +#include "assets-manager/Manifest.h" #include "ExtensionDeprecated.h" #endif /* __COCOS2D_EXT_H__ */ diff --git a/extensions/proj.wp8/libExtensions.vcxproj b/extensions/proj.wp8/libExtensions.vcxproj deleted file mode 100644 index 53fd84de79..0000000000 --- a/extensions/proj.wp8/libExtensions.vcxproj +++ /dev/null @@ -1,217 +0,0 @@ - - - - - Debug - Win32 - - - Debug - ARM - - - Release - Win32 - - - Release - ARM - - - - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4} - Extensions.win32 - en-US - 11.0 - - - - StaticLibrary - true - v110_wp80 - - - StaticLibrary - true - v110_wp80 - - - StaticLibrary - false - true - v110_wp80 - - - StaticLibrary - false - true - v110_wp80 - - - - - - - - - - - - - - - - - - - - - - - - false - - - - _LIB;%(PreprocessorDefinitions) - Use - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\unzip;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\libwebsockets\win32\include;$(EngineRoot)external\win32-specific\zlib\include;..\;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_LIB;COCOS2D_DEBUG=1;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) - pch.h - /Zm200 %(AdditionalOptions) - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;NDEBUG;%(PreprocessorDefinitions) - Use - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\unzip;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\libwebsockets\win32\include;$(EngineRoot)external\win32-specific\zlib\include;..\;%(AdditionalIncludeDirectories) - WP8;NDEBUG;_LIB;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) - pch.h - /Zm200 %(AdditionalOptions) - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;%(PreprocessorDefinitions) - Use - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\unzip;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\libwebsockets\win32\include;$(EngineRoot)external\win32-specific\zlib\include;..\;%(AdditionalIncludeDirectories) - WP8;_DEBUG;_LIB;COCOS2D_DEBUG=1;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) - pch.h - /Zm200 %(AdditionalOptions) - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - _LIB;NDEBUG;%(PreprocessorDefinitions) - Use - pch.h - $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) - $(EngineRoot);$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\unzip;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\sqlite3\include;$(EngineRoot)external\libwebsockets\win32\include;$(EngineRoot)external\win32-specific\zlib\include;..\;%(AdditionalIncludeDirectories) - WP8;NDEBUG;_LIB;CC_ENABLE_CHIPMUNK_INTEGRATION=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;CC_STATIC;%(PreprocessorDefinitions) - 4267;4251;4244;%(DisableSpecificWarnings) - pch.h - /Zm200 %(AdditionalOptions) - - - Console - false - - - /IGNORE:4264 %(AdditionalOptions) - - - - - true - - - true - false - - - - - - - - - - - - - - - - - - - - - - - - - Create - Create - Create - Create - false - false - false - false - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/extensions/proj.wp8/libExtensions.vcxproj.filters b/extensions/proj.wp8/libExtensions.vcxproj.filters deleted file mode 100644 index 2a3c131354..0000000000 --- a/extensions/proj.wp8/libExtensions.vcxproj.filters +++ /dev/null @@ -1,127 +0,0 @@ - - - - - {202b519b-b5e0-499f-b3b8-ed5da144b248} - - - {c07abd14-e9dd-4e2d-85c4-a180070161b4} - - - {46797895-f71d-4ddb-b381-d0884e678d39} - - - {d5806151-7ae1-4fef-af5a-2fa1d1c7377b} - - - {49487dbe-5758-436a-b014-8e2edc6b33ae} - - - - - GUI\CCScrollView - - - GUI\CCScrollView - - - GUI\CCScrollView - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - physics_nodes - - - physics_nodes - - - - - - GUI\CCScrollView - - - - - GUI\CCScrollView - - - GUI\CCScrollView - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - GUI\CCControlExtension - - - physics_nodes - - - physics_nodes - - - - \ No newline at end of file diff --git a/extensions/proj.wp8/pch.cpp b/extensions/proj.wp8/pch.cpp deleted file mode 100644 index bcb5590be1..0000000000 --- a/extensions/proj.wp8/pch.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "pch.h" diff --git a/extensions/proj.wp8/pch.h b/extensions/proj.wp8/pch.h deleted file mode 100644 index 4c3b8cde28..0000000000 --- a/extensions/proj.wp8/pch.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include "cocos2d.h" -#include "cocos-ext.h" -#include "ExtensionMacros.h" diff --git a/external/config.json b/external/config.json index bea2813538..23006bc601 100644 --- a/external/config.json +++ b/external/config.json @@ -1,6 +1,6 @@ { - "version":"v3-deps-12", - "zip_file_size":"70810291", + "version":"v3-deps-19", + "zip_file_size":"88112898", "repo_name":"cocos2d-x-3rd-party-libs-bin", "repo_parent":"https://github.com/cocos2d/", "move_dirs":{ diff --git a/licenses/LICENSE_spine.txt b/licenses/LICENSE_spine.txt index b7df802e2e..148461ab57 100644 --- a/licenses/LICENSE_spine.txt +++ b/licenses/LICENSE_spine.txt @@ -1,33 +1,28 @@ -/****************************************************************************** - * Spine Runtime Software License - Version 1.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * Redistribution and use in source and binary forms in whole or in part, with - * or without modification, are permitted provided that the following conditions - * are met: - * - * 1. A Spine Essential, Professional, Enterprise, or Education License must - * be purchased from Esoteric Software and the license must remain valid: - * http://esotericsoftware.com/ - * 2. Redistributions of source code must retain this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer. - * 3. Redistributions in binary form must reproduce this license, which is the - * above copyright notice, this declaration of conditions and the following - * disclaimer, in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ +Spine Runtimes Software License +Version 2.2 +Copyright (c) 2013, Esoteric Software +All rights reserved. + +You are granted a perpetual, non-exclusive, non-sublicensable and +non-transferable license to use, install, execute and perform the Spine +Runtimes Software (the "Software") and derivative works solely for personal or +internal use. Without the written permission of Esoteric Software (typically +granted by licensing Spine), you may not (a) modify, translate, adapt or +otherwise create derivative works, improvements of the Software or develop +new applications using the Software or (b) remove, delete, alter or obscure +any trademarks or any copyright, trademark, patent or other intellectual +property or proprietary rights notices on or in the Software, including any +copy thereof. Redistributions in binary or source form must include this +license and terms. + +THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/plugin b/plugin index 9c803c7c6d..82d6451721 160000 --- a/plugin +++ b/plugin @@ -1 +1 @@ -Subproject commit 9c803c7c6d95f00f4ddc8d7c939554cea3811297 +Subproject commit 82d6451721d39a78c7eb365da74bb5b22a7a7826 diff --git a/templates/cocos2dx_files.json b/templates/cocos2dx_files.json index 3352af24e8..7578776872 100644 --- a/templates/cocos2dx_files.json +++ b/templates/cocos2dx_files.json @@ -7,31 +7,12 @@ "README.md", "build/android-build.py", "build/cocos2d-win32.vc2012.sln", - "build/cocos2d-wp8.vc2012.sln", + "build/cocos2d-wp8.sln", "build/cocos2d_libs.xcodeproj/project.pbxproj", "build/cocos2d_tests.xcodeproj/project.pbxproj", "build/install-deps-linux.sh", "build/win32-msvc-2012-x86.cmd", "build/win32-msvc-2013-x86.cmd", - "build/winrt/Cocos2dShaderCompiler/App.xaml", - "build/winrt/Cocos2dShaderCompiler/App.xaml.cpp", - "build/winrt/Cocos2dShaderCompiler/App.xaml.h", - "build/winrt/Cocos2dShaderCompiler/Assets/Logo.png", - "build/winrt/Cocos2dShaderCompiler/Assets/SmallLogo.png", - "build/winrt/Cocos2dShaderCompiler/Assets/SplashScreen.png", - "build/winrt/Cocos2dShaderCompiler/Assets/StoreLogo.png", - "build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler.sln", - "build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj", - "build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj.filters", - "build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler_TemporaryKey.pfx", - "build/winrt/Cocos2dShaderCompiler/DirectXPage.xaml", - "build/winrt/Cocos2dShaderCompiler/DirectXPage.xaml.cpp", - "build/winrt/Cocos2dShaderCompiler/DirectXPage.xaml.h", - "build/winrt/Cocos2dShaderCompiler/Package.appxmanifest", - "build/winrt/Cocos2dShaderCompiler/ShaderCompiler.cpp", - "build/winrt/Cocos2dShaderCompiler/ShaderCompiler.h", - "build/winrt/Cocos2dShaderCompiler/pch.cpp", - "build/winrt/Cocos2dShaderCompiler/pch.h", "build/winrt/angle.bat", "build/winrt/convertprojects.ps1", "build/winrt/scripts/converterutils.ps1", @@ -47,6 +28,22 @@ "build/winrt/scripts/templates/wp8_sln_header_template.txt", "build/winrt/scripts/winrtconverter.ps1", "build/winrt/wp8_precompiled_shaders.txt", + "build/wp8/Cocos2dShaderCompiler/App.xaml", + "build/wp8/Cocos2dShaderCompiler/App.xaml.cpp", + "build/wp8/Cocos2dShaderCompiler/App.xaml.h", + "build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler.sln", + "build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj", + "build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj.filters", + "build/wp8/Cocos2dShaderCompiler/Cocos2dShaderCompiler_TemporaryKey.pfx", + "build/wp8/Cocos2dShaderCompiler/DirectXPage.xaml", + "build/wp8/Cocos2dShaderCompiler/DirectXPage.xaml.cpp", + "build/wp8/Cocos2dShaderCompiler/DirectXPage.xaml.h", + "build/wp8/Cocos2dShaderCompiler/Package.appxmanifest", + "build/wp8/Cocos2dShaderCompiler/ShaderCompiler.cpp", + "build/wp8/Cocos2dShaderCompiler/ShaderCompiler.h", + "build/wp8/Cocos2dShaderCompiler/pch.cpp", + "build/wp8/Cocos2dShaderCompiler/pch.h", + "build/wp8/wp8_precompiled_shaders.txt", "cmake/BuildHelpers.CMakeLists.txt", "cmake/Modules/CMakeParseArguments.cmake", "cmake/Modules/FindChipmunk.cmake", @@ -90,6 +87,8 @@ "cocos/2d/CCAtlasNode.h", "cocos/2d/CCClippingNode.cpp", "cocos/2d/CCClippingNode.h", + "cocos/2d/CCClippingRectangleNode.cpp", + "cocos/2d/CCClippingRectangleNode.h", "cocos/2d/CCComponent.cpp", "cocos/2d/CCComponent.h", "cocos/2d/CCComponentContainer.cpp", @@ -191,16 +190,29 @@ "cocos/2d/CMakeLists.txt", "cocos/2d/cocos2d.def", "cocos/2d/cocos2d_headers.props", - "cocos/2d/cocos2d_winrt.props", - "cocos/2d/cocos2d_winrt.vcxproj", - "cocos/2d/cocos2d_winrt.vcxproj.filters", - "cocos/2d/cocos2d_winrt_headers.props", - "cocos/2d/cocos2d_wp8.vcxproj", - "cocos/2d/cocos2d_wp8.vcxproj.filters", - "cocos/2d/cocos2d_wp8_headers.props", "cocos/2d/cocos2dx.props", "cocos/2d/libcocos2d.vcxproj", "cocos/2d/libcocos2d.vcxproj.filters", + "cocos/2d/libcocos2d_8_1/libcocos2d_8_1.sln", + "cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Shared/libcocos2d_8_1.Shared.vcxitems", + "cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Shared/libcocos2d_8_1.Shared.vcxitems.filters", + "cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Shared/targetver.h", + "cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Windows/libcocos2d_8_1.Windows.vcxproj", + "cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.Windows/libcocos2d_8_1.Windows.vcxproj.filters", + "cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.WindowsPhone/libcocos2d_8_1.WindowsPhone.vcxproj", + "cocos/2d/libcocos2d_8_1/libcocos2d_8_1/libcocos2d_8_1.WindowsPhone/libcocos2d_8_1.WindowsPhone.vcxproj.filters", + "cocos/2d/libcocos2d_wp8.vcxproj", + "cocos/2d/libcocos2d_wp8.vcxproj.filters", + "cocos/2d/winrt_8.1_props/cocos2d_winrt_8.1.props", + "cocos/2d/winrt_8.1_props/cocos2d_winrt_8.1_app.props", + "cocos/2d/winrt_8.1_props/cocos2d_winrt_8.1_platform.props", + "cocos/2d/winrt_props/cocos2d_winrt.props", + "cocos/2d/winrt_props/cocos2d_winrt_app.props", + "cocos/2d/winrt_props/cocos2d_winrt_platform.props", + "cocos/2d/wp8_props/cocos2d_wp8.props", + "cocos/2d/wp8_props/cocos2d_wp8_app.props", + "cocos/2d/wp8_props/cocos2d_wp8_component.props", + "cocos/2d/wp_8.1_props/cocos2d_wp_8.1_platform.props", "cocos/3d/Android.mk", "cocos/3d/CCAABB.cpp", "cocos/3d/CCAABB.h", @@ -289,9 +301,6 @@ "cocos/audio/openal/OpenALDecoder.cpp", "cocos/audio/openal/OpenALDecoder.h", "cocos/audio/openal/SimpleAudioEngineOpenAL.cpp", - "cocos/audio/proj.wp8/CocosDenshion.vcxproj", - "cocos/audio/proj.wp8/CocosDenshion.vcxproj.filters", - "cocos/audio/proj.wp8/CocosDenshion.vcxproj.user", "cocos/audio/win32/AudioCache.cpp", "cocos/audio/win32/AudioCache.h", "cocos/audio/win32/AudioEngine-win32.cpp", @@ -496,11 +505,6 @@ "cocos/editor-support/cocosbuilder/CCSpriteLoader.h", "cocos/editor-support/cocosbuilder/CMakeLists.txt", "cocos/editor-support/cocosbuilder/CocosBuilder.h", - "cocos/editor-support/cocosbuilder/proj.wp8/libCocosBuilder.vcxproj", - "cocos/editor-support/cocosbuilder/proj.wp8/libCocosBuilder.vcxproj.filters", - "cocos/editor-support/cocosbuilder/proj.wp8/libCocosBuilder.vcxproj.user", - "cocos/editor-support/cocosbuilder/proj.wp8/pch.cpp", - "cocos/editor-support/cocosbuilder/proj.wp8/pch.h", "cocos/editor-support/cocostudio/ActionTimeline/CCActionTimeline.cpp", "cocos/editor-support/cocostudio/ActionTimeline/CCActionTimeline.h", "cocos/editor-support/cocostudio/ActionTimeline/CCActionTimelineCache.cpp", @@ -512,6 +516,8 @@ "cocos/editor-support/cocostudio/ActionTimeline/CCTimeLine.cpp", "cocos/editor-support/cocostudio/ActionTimeline/CCTimeLine.h", "cocos/editor-support/cocostudio/ActionTimeline/CCTimelineMacro.h", + "cocos/editor-support/cocostudio/ActionTimeline/CSLoader.cpp", + "cocos/editor-support/cocostudio/ActionTimeline/CSLoader.h", "cocos/editor-support/cocostudio/Android.mk", "cocos/editor-support/cocostudio/CCActionFrame.cpp", "cocos/editor-support/cocostudio/CCActionFrame.h", @@ -575,6 +581,8 @@ "cocos/editor-support/cocostudio/CCUtilMath.cpp", "cocos/editor-support/cocostudio/CCUtilMath.h", "cocos/editor-support/cocostudio/CMakeLists.txt", + "cocos/editor-support/cocostudio/CSParseBinary.pb.cc", + "cocos/editor-support/cocostudio/CSParseBinary.pb.h", "cocos/editor-support/cocostudio/CocoLoader.cpp", "cocos/editor-support/cocostudio/CocoLoader.h", "cocos/editor-support/cocostudio/CocoStudio.h", @@ -616,68 +624,77 @@ "cocos/editor-support/cocostudio/WidgetReader/WidgetReader.cpp", "cocos/editor-support/cocostudio/WidgetReader/WidgetReader.h", "cocos/editor-support/cocostudio/WidgetReader/WidgetReaderProtocol.h", - "cocos/editor-support/cocostudio/proj.wp8/libCocosStudio.vcxproj", - "cocos/editor-support/cocostudio/proj.wp8/libCocosStudio.vcxproj.filters", - "cocos/editor-support/cocostudio/proj.wp8/libCocosStudio.vcxproj.user", - "cocos/editor-support/cocostudio/proj.wp8/pch.cpp", - "cocos/editor-support/cocostudio/proj.wp8/pch.h", "cocos/editor-support/spine/Android.mk", - "cocos/editor-support/spine/Animation.cpp", + "cocos/editor-support/spine/Animation.c", "cocos/editor-support/spine/Animation.h", - "cocos/editor-support/spine/AnimationState.cpp", + "cocos/editor-support/spine/AnimationState.c", "cocos/editor-support/spine/AnimationState.h", - "cocos/editor-support/spine/AnimationStateData.cpp", + "cocos/editor-support/spine/AnimationStateData.c", "cocos/editor-support/spine/AnimationStateData.h", - "cocos/editor-support/spine/Atlas.cpp", + "cocos/editor-support/spine/Atlas.c", "cocos/editor-support/spine/Atlas.h", - "cocos/editor-support/spine/AtlasAttachmentLoader.cpp", + "cocos/editor-support/spine/AtlasAttachmentLoader.c", "cocos/editor-support/spine/AtlasAttachmentLoader.h", - "cocos/editor-support/spine/Attachment.cpp", + "cocos/editor-support/spine/Attachment.c", "cocos/editor-support/spine/Attachment.h", - "cocos/editor-support/spine/AttachmentLoader.cpp", + "cocos/editor-support/spine/AttachmentLoader.c", "cocos/editor-support/spine/AttachmentLoader.h", - "cocos/editor-support/spine/Bone.cpp", + "cocos/editor-support/spine/Bone.c", "cocos/editor-support/spine/Bone.h", - "cocos/editor-support/spine/BoneData.cpp", + "cocos/editor-support/spine/BoneData.c", "cocos/editor-support/spine/BoneData.h", - "cocos/editor-support/spine/BoundingBoxAttachment.cpp", + "cocos/editor-support/spine/BoundingBoxAttachment.c", "cocos/editor-support/spine/BoundingBoxAttachment.h", - "cocos/editor-support/spine/CCSkeleton.cpp", - "cocos/editor-support/spine/CCSkeleton.h", - "cocos/editor-support/spine/CCSkeletonAnimation.cpp", - "cocos/editor-support/spine/CCSkeletonAnimation.h", "cocos/editor-support/spine/CMakeLists.txt", - "cocos/editor-support/spine/Event.cpp", + "cocos/editor-support/spine/Event.c", "cocos/editor-support/spine/Event.h", - "cocos/editor-support/spine/EventData.cpp", + "cocos/editor-support/spine/EventData.c", "cocos/editor-support/spine/EventData.h", - "cocos/editor-support/spine/Json.cpp", + "cocos/editor-support/spine/IkConstraint.c", + "cocos/editor-support/spine/IkConstraint.h", + "cocos/editor-support/spine/IkConstraintData.c", + "cocos/editor-support/spine/IkConstraintData.h", + "cocos/editor-support/spine/Json.c", "cocos/editor-support/spine/Json.h", - "cocos/editor-support/spine/RegionAttachment.cpp", + "cocos/editor-support/spine/MeshAttachment.c", + "cocos/editor-support/spine/MeshAttachment.h", + "cocos/editor-support/spine/PolygonBatch.cpp", + "cocos/editor-support/spine/PolygonBatch.h", + "cocos/editor-support/spine/RegionAttachment.c", "cocos/editor-support/spine/RegionAttachment.h", - "cocos/editor-support/spine/Skeleton.cpp", + "cocos/editor-support/spine/Skeleton.c", "cocos/editor-support/spine/Skeleton.h", - "cocos/editor-support/spine/SkeletonBounds.cpp", + "cocos/editor-support/spine/SkeletonAnimation.cpp", + "cocos/editor-support/spine/SkeletonAnimation.h", + "cocos/editor-support/spine/SkeletonBounds.c", "cocos/editor-support/spine/SkeletonBounds.h", - "cocos/editor-support/spine/SkeletonData.cpp", + "cocos/editor-support/spine/SkeletonData.c", "cocos/editor-support/spine/SkeletonData.h", - "cocos/editor-support/spine/SkeletonJson.cpp", + "cocos/editor-support/spine/SkeletonJson.c", "cocos/editor-support/spine/SkeletonJson.h", - "cocos/editor-support/spine/Skin.cpp", + "cocos/editor-support/spine/SkeletonRenderer.cpp", + "cocos/editor-support/spine/SkeletonRenderer.h", + "cocos/editor-support/spine/Skin.c", "cocos/editor-support/spine/Skin.h", - "cocos/editor-support/spine/Slot.cpp", + "cocos/editor-support/spine/SkinnedMeshAttachment.c", + "cocos/editor-support/spine/SkinnedMeshAttachment.h", + "cocos/editor-support/spine/Slot.c", "cocos/editor-support/spine/Slot.h", - "cocos/editor-support/spine/SlotData.cpp", + "cocos/editor-support/spine/SlotData.c", "cocos/editor-support/spine/SlotData.h", - "cocos/editor-support/spine/extension.cpp", + "cocos/editor-support/spine/extension.c", "cocos/editor-support/spine/extension.h", "cocos/editor-support/spine/proj.win32/libSpine.vcxproj", "cocos/editor-support/spine/proj.win32/libSpine.vcxproj.filters", + "cocos/editor-support/spine/proj.win8.1-universal/libSpine.Shared/libSpine.Shared.vcxitems", + "cocos/editor-support/spine/proj.win8.1-universal/libSpine.Shared/libSpine.Shared.vcxitems.filters", + "cocos/editor-support/spine/proj.win8.1-universal/libSpine.Windows/libSpine.Windows.vcxproj", + "cocos/editor-support/spine/proj.win8.1-universal/libSpine.Windows/libSpine.Windows.vcxproj.filters", + "cocos/editor-support/spine/proj.win8.1-universal/libSpine.WindowsPhone/libSpine.WindowsPhone.vcxproj", + "cocos/editor-support/spine/proj.win8.1-universal/libSpine.WindowsPhone/libSpine.WindowsPhone.vcxproj.filters", "cocos/editor-support/spine/proj.wp8/libSpine.vcxproj", "cocos/editor-support/spine/proj.wp8/libSpine.vcxproj.filters", "cocos/editor-support/spine/proj.wp8/libSpine.vcxproj.user", - "cocos/editor-support/spine/proj.wp8/pch.cpp", - "cocos/editor-support/spine/proj.wp8/pch.h", "cocos/editor-support/spine/spine-cocos2dx.cpp", "cocos/editor-support/spine/spine-cocos2dx.h", "cocos/editor-support/spine/spine.h", @@ -723,8 +740,6 @@ "cocos/network/SocketIO.h", "cocos/network/WebSocket.cpp", "cocos/network/WebSocket.h", - "cocos/network/proj.wp8/libNetwork.vcxproj", - "cocos/network/proj.wp8/libNetwork.vcxproj.filters", "cocos/physics/CCPhysicsBody.cpp", "cocos/physics/CCPhysicsBody.h", "cocos/physics/CCPhysicsContact.cpp", @@ -905,11 +920,14 @@ "cocos/platform/winrt/CCFreeTypeFont.cpp", "cocos/platform/winrt/CCFreeTypeFont.h", "cocos/platform/winrt/CCGL.h", + "cocos/platform/winrt/CCGLViewImpl-winrt.cpp", + "cocos/platform/winrt/CCGLViewImpl-winrt.h", "cocos/platform/winrt/CCGLViewImpl.cpp", "cocos/platform/winrt/CCGLViewImpl.h", "cocos/platform/winrt/CCGL_Angle.h", "cocos/platform/winrt/CCPThreadWinRT.cpp", "cocos/platform/winrt/CCPThreadWinRT.h", + "cocos/platform/winrt/CCPlatformDefine-winrt.h", "cocos/platform/winrt/CCPlatformDefine.h", "cocos/platform/winrt/CCPrecompiledShaders.cpp", "cocos/platform/winrt/CCPrecompiledShaders.h", @@ -930,6 +948,7 @@ "cocos/platform/winrt/sha1.cpp", "cocos/platform/winrt/sha1.h", "cocos/platform/winrt/shaders/precompiledshaders.h", + "cocos/platform/winrt/targetver.h", "cocos/platform/wp8-xaml/CopyTemplateFiles.vcxproj", "cocos/platform/wp8-xaml/CopyTemplateFiles.vcxproj.filters", "cocos/platform/wp8-xaml/CopyTemplateFiles.vcxproj.user", @@ -956,8 +975,6 @@ "cocos/platform/wp8/Direct3DBase.h", "cocos/platform/wp8/DirectXBase.cpp", "cocos/platform/wp8/DirectXBase.h", - "cocos/platform/wp8/pch.cpp", - "cocos/platform/wp8/pch.h", "cocos/platform/wp8/shaders/precompiledshaders.h", "cocos/renderer/CCBatchCommand.cpp", "cocos/renderer/CCBatchCommand.h", @@ -1036,8 +1053,6 @@ "cocos/storage/local-storage/LocalStorage-android.cpp", "cocos/storage/local-storage/LocalStorage.cpp", "cocos/storage/local-storage/LocalStorage.h", - "cocos/storage/local-storage/proj.wp8/libLocalStorage.vcxproj", - "cocos/storage/local-storage/proj.wp8/libLocalStorage.vcxproj.filters", "cocos/ui/Android.mk", "cocos/ui/CMakeLists.txt", "cocos/ui/CocosGUI.cpp", @@ -1072,6 +1087,8 @@ "cocos/ui/UIImageView.h", "cocos/ui/UILayout.cpp", "cocos/ui/UILayout.h", + "cocos/ui/UILayoutComponent.cpp", + "cocos/ui/UILayoutComponent.h", "cocos/ui/UILayoutManager.cpp", "cocos/ui/UILayoutManager.h", "cocos/ui/UILayoutParameter.cpp", @@ -1113,14 +1130,10 @@ "cocos/ui/UIWebViewImpl-android.h", "cocos/ui/UIWebViewImpl-ios.h", "cocos/ui/UIWebViewImpl-ios.mm", - "cocos/ui/UIWebViewImpl-win32.cpp", - "cocos/ui/UIWebViewImpl-win32.h", "cocos/ui/UIWidget.cpp", "cocos/ui/UIWidget.h", "cocos/ui/proj.win32/libui.vcxproj", "cocos/ui/proj.win32/libui.vcxproj.filters", - "cocos/ui/proj.wp8/libGUI.vcxproj", - "cocos/ui/proj.wp8/libGUI.vcxproj.filters", "docs/CODING_STYLE.md", "docs/Groups.h", "docs/MainPage.h", @@ -1165,15 +1178,21 @@ "extensions/GUI/CCScrollView/CCTableViewCell.h", "extensions/assets-manager/AssetsManager.cpp", "extensions/assets-manager/AssetsManager.h", + "extensions/assets-manager/AssetsManagerEx.cpp", + "extensions/assets-manager/AssetsManagerEx.h", + "extensions/assets-manager/CCEventAssetsManagerEx.cpp", + "extensions/assets-manager/CCEventAssetsManagerEx.h", + "extensions/assets-manager/CCEventListenerAssetsManagerEx.cpp", + "extensions/assets-manager/CCEventListenerAssetsManagerEx.h", + "extensions/assets-manager/Downloader.cpp", + "extensions/assets-manager/Downloader.h", + "extensions/assets-manager/Manifest.cpp", + "extensions/assets-manager/Manifest.h", "extensions/cocos-ext.h", "extensions/physics-nodes/CCPhysicsDebugNode.cpp", "extensions/physics-nodes/CCPhysicsDebugNode.h", "extensions/physics-nodes/CCPhysicsSprite.cpp", "extensions/physics-nodes/CCPhysicsSprite.h", - "extensions/proj.wp8/libExtensions.vcxproj", - "extensions/proj.wp8/libExtensions.vcxproj.filters", - "extensions/proj.wp8/pch.cpp", - "extensions/proj.wp8/pch.h", "external/Box2D/Android.mk", "external/Box2D/Box2D.h", "external/Box2D/CMakeLists.txt", @@ -1271,6 +1290,12 @@ "external/Box2D/Rope/b2Rope.h", "external/Box2D/proj.win32/libbox2d.vcxproj", "external/Box2D/proj.win32/libbox2d.vcxproj.filters", + "external/Box2D/proj.win8.1-universal/libbox2d.Shared/libbox2d.Shared.vcxitems", + "external/Box2D/proj.win8.1-universal/libbox2d.Shared/libbox2d.Shared.vcxitems.filters", + "external/Box2D/proj.win8.1-universal/libbox2d.Windows/libbox2d.Windows.vcxproj", + "external/Box2D/proj.win8.1-universal/libbox2d.Windows/libbox2d.Windows.vcxproj.filters", + "external/Box2D/proj.win8.1-universal/libbox2d.WindowsPhone/libbox2d.WindowsPhone.vcxproj", + "external/Box2D/proj.win8.1-universal/libbox2d.WindowsPhone/libbox2d.WindowsPhone.vcxproj.filters", "external/Box2D/proj.wp8/Box2D.vcxproj", "external/Box2D/proj.wp8/Box2D.vcxproj.filters", "external/ConvertUTF/ConvertUTF.c", @@ -1311,8 +1336,12 @@ "external/chipmunk/prebuilt/mac/libchipmunk.a", "external/chipmunk/prebuilt/win32/debug-lib/libchipmunk.lib", "external/chipmunk/prebuilt/win32/release-lib/libchipmunk.lib", + "external/chipmunk/prebuilt/winrt_8.1/arm/libchipmunk.lib", + "external/chipmunk/prebuilt/winrt_8.1/win32/libchipmunk.lib", "external/chipmunk/prebuilt/wp8/ARM/libchipmunk.lib", "external/chipmunk/prebuilt/wp8/win32/libchipmunk.lib", + "external/chipmunk/prebuilt/wp_8.1/arm/libchipmunk.lib", + "external/chipmunk/prebuilt/wp_8.1/win32/libchipmunk.lib", "external/config.json", "external/curl/include/android/curl/curl.h", "external/curl/include/android/curl/curlbuild.h", @@ -1342,6 +1371,15 @@ "external/curl/include/win32/curl/multi.h", "external/curl/include/win32/curl/stdcheaders.h", "external/curl/include/win32/curl/typecheck-gcc.h", + "external/curl/include/winrt_8.1/curl/curl.h", + "external/curl/include/winrt_8.1/curl/curlbuild.h", + "external/curl/include/winrt_8.1/curl/curlrules.h", + "external/curl/include/winrt_8.1/curl/curlver.h", + "external/curl/include/winrt_8.1/curl/easy.h", + "external/curl/include/winrt_8.1/curl/mprintf.h", + "external/curl/include/winrt_8.1/curl/multi.h", + "external/curl/include/winrt_8.1/curl/stdcheaders.h", + "external/curl/include/winrt_8.1/curl/typecheck-gcc.h", "external/curl/include/wp8/curl/curl.h", "external/curl/include/wp8/curl/curlbuild.h", "external/curl/include/wp8/curl/curlrules.h", @@ -1351,6 +1389,15 @@ "external/curl/include/wp8/curl/multi.h", "external/curl/include/wp8/curl/stdcheaders.h", "external/curl/include/wp8/curl/typecheck-gcc.h", + "external/curl/include/wp_8.1/curl/curl.h", + "external/curl/include/wp_8.1/curl/curlbuild.h", + "external/curl/include/wp_8.1/curl/curlrules.h", + "external/curl/include/wp_8.1/curl/curlver.h", + "external/curl/include/wp_8.1/curl/easy.h", + "external/curl/include/wp_8.1/curl/mprintf.h", + "external/curl/include/wp_8.1/curl/multi.h", + "external/curl/include/wp_8.1/curl/stdcheaders.h", + "external/curl/include/wp_8.1/curl/typecheck-gcc.h", "external/curl/prebuilt/android/Android.mk", "external/curl/prebuilt/android/armeabi-v7a/libcurl.a", "external/curl/prebuilt/android/armeabi/libcurl.a", @@ -1358,6 +1405,16 @@ "external/curl/prebuilt/ios/libcurl.a", "external/curl/prebuilt/win32/libcurl.dll", "external/curl/prebuilt/win32/libcurl_imp.lib", + "external/curl/prebuilt/winrt_8.1/arm/libcurl.dll", + "external/curl/prebuilt/winrt_8.1/arm/libcurl.lib", + "external/curl/prebuilt/winrt_8.1/arm/libeay32.dll", + "external/curl/prebuilt/winrt_8.1/arm/libwebsockets.dll", + "external/curl/prebuilt/winrt_8.1/arm/libwebsockets.lib", + "external/curl/prebuilt/winrt_8.1/arm/ssleay32.dll", + "external/curl/prebuilt/winrt_8.1/win32/libcurl.dll", + "external/curl/prebuilt/winrt_8.1/win32/libcurl.lib", + "external/curl/prebuilt/winrt_8.1/win32/libeay32.dll", + "external/curl/prebuilt/winrt_8.1/win32/ssleay32.dll", "external/curl/prebuilt/wp8/arm/libcurl.dll", "external/curl/prebuilt/wp8/arm/libcurl.lib", "external/curl/prebuilt/wp8/arm/libeay32.dll", @@ -1366,6 +1423,20 @@ "external/curl/prebuilt/wp8/win32/libcurl.lib", "external/curl/prebuilt/wp8/win32/libeay32.dll", "external/curl/prebuilt/wp8/win32/ssleay32.dll", + "external/curl/prebuilt/wp_8.1/arm/libcurl.dll", + "external/curl/prebuilt/wp_8.1/arm/libcurl.lib", + "external/curl/prebuilt/wp_8.1/arm/libeay32.dll", + "external/curl/prebuilt/wp_8.1/arm/libeay32.lib", + "external/curl/prebuilt/wp_8.1/arm/libwebsockets.dll", + "external/curl/prebuilt/wp_8.1/arm/libwebsockets.lib", + "external/curl/prebuilt/wp_8.1/arm/ssleay32.dll", + "external/curl/prebuilt/wp_8.1/arm/ssleay32.lib", + "external/curl/prebuilt/wp_8.1/win32/libcurl.dll", + "external/curl/prebuilt/wp_8.1/win32/libcurl.lib", + "external/curl/prebuilt/wp_8.1/win32/libeay32.dll", + "external/curl/prebuilt/wp_8.1/win32/libeay32.lib", + "external/curl/prebuilt/wp_8.1/win32/ssleay32.dll", + "external/curl/prebuilt/wp_8.1/win32/ssleay32.lib", "external/edtaa3func/edtaa3func.cpp", "external/edtaa3func/edtaa3func.h", "external/freetype2/include/android/freetype2/freetype/config/ftconfig.h", @@ -1858,6 +1929,94 @@ "external/freetype2/include/winrt/ft2build.h", "external/freetype2/include/winrt/proj.winrt/freetype.vcxproj", "external/freetype2/include/winrt/proj.winrt/freetype.vcxproj.filters", + "external/freetype2/include/winrt_8.1/freetype/config/ftconfig.h", + "external/freetype2/include/winrt_8.1/freetype/config/ftheader.h", + "external/freetype2/include/winrt_8.1/freetype/config/ftmodule.h", + "external/freetype2/include/winrt_8.1/freetype/config/ftoption.h", + "external/freetype2/include/winrt_8.1/freetype/config/ftstdlib.h", + "external/freetype2/include/winrt_8.1/freetype/freetype.h", + "external/freetype2/include/winrt_8.1/freetype/ftadvanc.h", + "external/freetype2/include/winrt_8.1/freetype/ftautoh.h", + "external/freetype2/include/winrt_8.1/freetype/ftbbox.h", + "external/freetype2/include/winrt_8.1/freetype/ftbdf.h", + "external/freetype2/include/winrt_8.1/freetype/ftbitmap.h", + "external/freetype2/include/winrt_8.1/freetype/ftbzip2.h", + "external/freetype2/include/winrt_8.1/freetype/ftcache.h", + "external/freetype2/include/winrt_8.1/freetype/ftcffdrv.h", + "external/freetype2/include/winrt_8.1/freetype/ftchapters.h", + "external/freetype2/include/winrt_8.1/freetype/ftcid.h", + "external/freetype2/include/winrt_8.1/freetype/fterrdef.h", + "external/freetype2/include/winrt_8.1/freetype/fterrors.h", + "external/freetype2/include/winrt_8.1/freetype/ftgasp.h", + "external/freetype2/include/winrt_8.1/freetype/ftglyph.h", + "external/freetype2/include/winrt_8.1/freetype/ftgxval.h", + "external/freetype2/include/winrt_8.1/freetype/ftgzip.h", + "external/freetype2/include/winrt_8.1/freetype/ftimage.h", + "external/freetype2/include/winrt_8.1/freetype/ftincrem.h", + "external/freetype2/include/winrt_8.1/freetype/ftlcdfil.h", + "external/freetype2/include/winrt_8.1/freetype/ftlist.h", + "external/freetype2/include/winrt_8.1/freetype/ftlzw.h", + "external/freetype2/include/winrt_8.1/freetype/ftmac.h", + "external/freetype2/include/winrt_8.1/freetype/ftmm.h", + "external/freetype2/include/winrt_8.1/freetype/ftmodapi.h", + "external/freetype2/include/winrt_8.1/freetype/ftmoderr.h", + "external/freetype2/include/winrt_8.1/freetype/ftotval.h", + "external/freetype2/include/winrt_8.1/freetype/ftoutln.h", + "external/freetype2/include/winrt_8.1/freetype/ftpfr.h", + "external/freetype2/include/winrt_8.1/freetype/ftrender.h", + "external/freetype2/include/winrt_8.1/freetype/ftsizes.h", + "external/freetype2/include/winrt_8.1/freetype/ftsnames.h", + "external/freetype2/include/winrt_8.1/freetype/ftstroke.h", + "external/freetype2/include/winrt_8.1/freetype/ftsynth.h", + "external/freetype2/include/winrt_8.1/freetype/ftsystem.h", + "external/freetype2/include/winrt_8.1/freetype/fttrigon.h", + "external/freetype2/include/winrt_8.1/freetype/ftttdrv.h", + "external/freetype2/include/winrt_8.1/freetype/fttypes.h", + "external/freetype2/include/winrt_8.1/freetype/ftwinfnt.h", + "external/freetype2/include/winrt_8.1/freetype/ftxf86.h", + "external/freetype2/include/winrt_8.1/freetype/internal/autohint.h", + "external/freetype2/include/winrt_8.1/freetype/internal/ftcalc.h", + "external/freetype2/include/winrt_8.1/freetype/internal/ftdebug.h", + "external/freetype2/include/winrt_8.1/freetype/internal/ftdriver.h", + "external/freetype2/include/winrt_8.1/freetype/internal/ftgloadr.h", + "external/freetype2/include/winrt_8.1/freetype/internal/ftmemory.h", + "external/freetype2/include/winrt_8.1/freetype/internal/ftobjs.h", + "external/freetype2/include/winrt_8.1/freetype/internal/ftpic.h", + "external/freetype2/include/winrt_8.1/freetype/internal/ftrfork.h", + "external/freetype2/include/winrt_8.1/freetype/internal/ftserv.h", + "external/freetype2/include/winrt_8.1/freetype/internal/ftstream.h", + "external/freetype2/include/winrt_8.1/freetype/internal/fttrace.h", + "external/freetype2/include/winrt_8.1/freetype/internal/ftvalid.h", + "external/freetype2/include/winrt_8.1/freetype/internal/internal.h", + "external/freetype2/include/winrt_8.1/freetype/internal/psaux.h", + "external/freetype2/include/winrt_8.1/freetype/internal/pshints.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svbdf.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svcid.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svgldict.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svgxval.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svkern.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svmm.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svotval.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svpfr.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svpostnm.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svprop.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svpscmap.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svpsinfo.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svsfnt.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svttcmap.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svtteng.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svttglyf.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svwinfnt.h", + "external/freetype2/include/winrt_8.1/freetype/internal/services/svxf86nm.h", + "external/freetype2/include/winrt_8.1/freetype/internal/sfnt.h", + "external/freetype2/include/winrt_8.1/freetype/internal/t1types.h", + "external/freetype2/include/winrt_8.1/freetype/internal/tttypes.h", + "external/freetype2/include/winrt_8.1/freetype/t1tables.h", + "external/freetype2/include/winrt_8.1/freetype/ttnameid.h", + "external/freetype2/include/winrt_8.1/freetype/tttables.h", + "external/freetype2/include/winrt_8.1/freetype/tttags.h", + "external/freetype2/include/winrt_8.1/freetype/ttunpat.h", + "external/freetype2/include/winrt_8.1/ft2build.h", "external/freetype2/include/wp8/README.txt", "external/freetype2/include/wp8/freetype/config/ftconfig.h", "external/freetype2/include/wp8/freetype/config/ftheader.h", @@ -1950,6 +2109,94 @@ "external/freetype2/include/wp8/proj.wp8/freetype.sln", "external/freetype2/include/wp8/proj.wp8/freetype.vcxproj", "external/freetype2/include/wp8/proj.wp8/freetype.vcxproj.filters", + "external/freetype2/include/wp_8.1/freetype/config/ftconfig.h", + "external/freetype2/include/wp_8.1/freetype/config/ftheader.h", + "external/freetype2/include/wp_8.1/freetype/config/ftmodule.h", + "external/freetype2/include/wp_8.1/freetype/config/ftoption.h", + "external/freetype2/include/wp_8.1/freetype/config/ftstdlib.h", + "external/freetype2/include/wp_8.1/freetype/freetype.h", + "external/freetype2/include/wp_8.1/freetype/ftadvanc.h", + "external/freetype2/include/wp_8.1/freetype/ftautoh.h", + "external/freetype2/include/wp_8.1/freetype/ftbbox.h", + "external/freetype2/include/wp_8.1/freetype/ftbdf.h", + "external/freetype2/include/wp_8.1/freetype/ftbitmap.h", + "external/freetype2/include/wp_8.1/freetype/ftbzip2.h", + "external/freetype2/include/wp_8.1/freetype/ftcache.h", + "external/freetype2/include/wp_8.1/freetype/ftcffdrv.h", + "external/freetype2/include/wp_8.1/freetype/ftchapters.h", + "external/freetype2/include/wp_8.1/freetype/ftcid.h", + "external/freetype2/include/wp_8.1/freetype/fterrdef.h", + "external/freetype2/include/wp_8.1/freetype/fterrors.h", + "external/freetype2/include/wp_8.1/freetype/ftgasp.h", + "external/freetype2/include/wp_8.1/freetype/ftglyph.h", + "external/freetype2/include/wp_8.1/freetype/ftgxval.h", + "external/freetype2/include/wp_8.1/freetype/ftgzip.h", + "external/freetype2/include/wp_8.1/freetype/ftimage.h", + "external/freetype2/include/wp_8.1/freetype/ftincrem.h", + "external/freetype2/include/wp_8.1/freetype/ftlcdfil.h", + "external/freetype2/include/wp_8.1/freetype/ftlist.h", + "external/freetype2/include/wp_8.1/freetype/ftlzw.h", + "external/freetype2/include/wp_8.1/freetype/ftmac.h", + "external/freetype2/include/wp_8.1/freetype/ftmm.h", + "external/freetype2/include/wp_8.1/freetype/ftmodapi.h", + "external/freetype2/include/wp_8.1/freetype/ftmoderr.h", + "external/freetype2/include/wp_8.1/freetype/ftotval.h", + "external/freetype2/include/wp_8.1/freetype/ftoutln.h", + "external/freetype2/include/wp_8.1/freetype/ftpfr.h", + "external/freetype2/include/wp_8.1/freetype/ftrender.h", + "external/freetype2/include/wp_8.1/freetype/ftsizes.h", + "external/freetype2/include/wp_8.1/freetype/ftsnames.h", + "external/freetype2/include/wp_8.1/freetype/ftstroke.h", + "external/freetype2/include/wp_8.1/freetype/ftsynth.h", + "external/freetype2/include/wp_8.1/freetype/ftsystem.h", + "external/freetype2/include/wp_8.1/freetype/fttrigon.h", + "external/freetype2/include/wp_8.1/freetype/ftttdrv.h", + "external/freetype2/include/wp_8.1/freetype/fttypes.h", + "external/freetype2/include/wp_8.1/freetype/ftwinfnt.h", + "external/freetype2/include/wp_8.1/freetype/ftxf86.h", + "external/freetype2/include/wp_8.1/freetype/internal/autohint.h", + "external/freetype2/include/wp_8.1/freetype/internal/ftcalc.h", + "external/freetype2/include/wp_8.1/freetype/internal/ftdebug.h", + "external/freetype2/include/wp_8.1/freetype/internal/ftdriver.h", + "external/freetype2/include/wp_8.1/freetype/internal/ftgloadr.h", + "external/freetype2/include/wp_8.1/freetype/internal/ftmemory.h", + "external/freetype2/include/wp_8.1/freetype/internal/ftobjs.h", + "external/freetype2/include/wp_8.1/freetype/internal/ftpic.h", + "external/freetype2/include/wp_8.1/freetype/internal/ftrfork.h", + "external/freetype2/include/wp_8.1/freetype/internal/ftserv.h", + "external/freetype2/include/wp_8.1/freetype/internal/ftstream.h", + "external/freetype2/include/wp_8.1/freetype/internal/fttrace.h", + "external/freetype2/include/wp_8.1/freetype/internal/ftvalid.h", + "external/freetype2/include/wp_8.1/freetype/internal/internal.h", + "external/freetype2/include/wp_8.1/freetype/internal/psaux.h", + "external/freetype2/include/wp_8.1/freetype/internal/pshints.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svbdf.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svcid.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svgldict.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svgxval.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svkern.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svmm.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svotval.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svpfr.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svpostnm.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svprop.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svpscmap.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svpsinfo.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svsfnt.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svttcmap.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svtteng.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svttglyf.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svwinfnt.h", + "external/freetype2/include/wp_8.1/freetype/internal/services/svxf86nm.h", + "external/freetype2/include/wp_8.1/freetype/internal/sfnt.h", + "external/freetype2/include/wp_8.1/freetype/internal/t1types.h", + "external/freetype2/include/wp_8.1/freetype/internal/tttypes.h", + "external/freetype2/include/wp_8.1/freetype/t1tables.h", + "external/freetype2/include/wp_8.1/freetype/ttnameid.h", + "external/freetype2/include/wp_8.1/freetype/tttables.h", + "external/freetype2/include/wp_8.1/freetype/tttags.h", + "external/freetype2/include/wp_8.1/freetype/ttunpat.h", + "external/freetype2/include/wp_8.1/ft2build.h", "external/freetype2/prebuilt/android/Android.mk", "external/freetype2/prebuilt/android/armeabi-v7a/libfreetype.a", "external/freetype2/prebuilt/android/armeabi/libfreetype.a", @@ -1961,8 +2208,12 @@ "external/freetype2/prebuilt/win32/freetype250.lib", "external/freetype2/prebuilt/winrt/ARM/freetype.lib", "external/freetype2/prebuilt/winrt/Win32/freetype.lib", + "external/freetype2/prebuilt/winrt_8.1/arm/freetype250.lib", + "external/freetype2/prebuilt/winrt_8.1/win32/freetype250.lib", "external/freetype2/prebuilt/wp8/ARM/freetype.lib", "external/freetype2/prebuilt/wp8/Win32/freetype.lib", + "external/freetype2/prebuilt/wp_8.1/arm/freetype250.lib", + "external/freetype2/prebuilt/wp_8.1/win32/freetype250.lib", "external/glfw3/include/mac/glfw3.h", "external/glfw3/include/mac/glfw3native.h", "external/glfw3/include/win32/glfw3.h", @@ -1996,6 +2247,9 @@ "external/jpeg/include/winrt/libjpeg.sln", "external/jpeg/include/winrt/libjpeg.vcxproj", "external/jpeg/include/winrt/libjpeg.vcxproj.filters", + "external/jpeg/include/winrt_8.1/jconfig.h", + "external/jpeg/include/winrt_8.1/jmorecfg.h", + "external/jpeg/include/winrt_8.1/jpeglib.h", "external/jpeg/include/wp8/README.txt", "external/jpeg/include/wp8/jconfig.h", "external/jpeg/include/wp8/jconfig_linux.h", @@ -2005,6 +2259,9 @@ "external/jpeg/include/wp8/jpeglib.h", "external/jpeg/include/wp8/libjpeg.vcxproj", "external/jpeg/include/wp8/libjpeg.vcxproj.filters", + "external/jpeg/include/wp_8.1/jconfig.h", + "external/jpeg/include/wp_8.1/jmorecfg.h", + "external/jpeg/include/wp_8.1/jpeglib.h", "external/jpeg/prebuilt/android/Android.mk", "external/jpeg/prebuilt/android/armeabi-v7a/libjpeg.a", "external/jpeg/prebuilt/android/armeabi/libjpeg.a", @@ -2016,8 +2273,12 @@ "external/jpeg/prebuilt/win32/libjpeg.lib", "external/jpeg/prebuilt/winrt/ARM/libjpeg.lib", "external/jpeg/prebuilt/winrt/Win32/libjpeg.lib", + "external/jpeg/prebuilt/winrt_8.1/arm/libjpeg.lib", + "external/jpeg/prebuilt/winrt_8.1/win32/libjpeg.lib", "external/jpeg/prebuilt/wp8/ARM/libjpeg.lib", "external/jpeg/prebuilt/wp8/Win32/libjpeg.lib", + "external/jpeg/prebuilt/wp_8.1/arm/libjpeg.lib", + "external/jpeg/prebuilt/wp_8.1/win32/libjpeg.lib", "external/json/document.h", "external/json/filestream.h", "external/json/internal/pow10.h", @@ -2069,12 +2330,15 @@ "external/png/include/winrt/libpng.vcxproj.filters", "external/png/include/winrt/png.h", "external/png/include/winrt/pngconf.h", - "external/png/include/wp8/README.txt", - "external/png/include/wp8/libpng.sln", - "external/png/include/wp8/libpng.vcxproj", - "external/png/include/wp8/libpng.vcxproj.filters", + "external/png/include/winrt_8.1/png.h", + "external/png/include/winrt_8.1/pngconf.h", + "external/png/include/winrt_8.1/pnglibconf.h", "external/png/include/wp8/png.h", "external/png/include/wp8/pngconf.h", + "external/png/include/wp8/pnglibconf.h", + "external/png/include/wp_8.1/png.h", + "external/png/include/wp_8.1/pngconf.h", + "external/png/include/wp_8.1/pnglibconf.h", "external/png/prebuilt/android/Android.mk", "external/png/prebuilt/android/armeabi-v7a/libpng.a", "external/png/prebuilt/android/armeabi/libpng.a", @@ -2084,13 +2348,76 @@ "external/png/prebuilt/win32/libpng.lib", "external/png/prebuilt/winrt/ARM/libpng.lib", "external/png/prebuilt/winrt/Win32/libpng.lib", + "external/png/prebuilt/winrt_8.1/arm/libpng.lib", + "external/png/prebuilt/winrt_8.1/win32/libpng.lib", "external/png/prebuilt/wp8/ARM/libpng.lib", "external/png/prebuilt/wp8/Win32/libpng.lib", + "external/png/prebuilt/wp_8.1/arm/libpng.lib", + "external/png/prebuilt/wp_8.1/win32/libpng.lib", + "external/protobuf-lite/Android.mk", + "external/protobuf-lite/CMakeLists.txt", + "external/protobuf-lite/src/google/protobuf/config.h", + "external/protobuf-lite/src/google/protobuf/extension_set.cc", + "external/protobuf-lite/src/google/protobuf/extension_set.h", + "external/protobuf-lite/src/google/protobuf/generated_message_util.cc", + "external/protobuf-lite/src/google/protobuf/generated_message_util.h", + "external/protobuf-lite/src/google/protobuf/io/coded_stream.cc", + "external/protobuf-lite/src/google/protobuf/io/coded_stream.h", + "external/protobuf-lite/src/google/protobuf/io/coded_stream_inl.h", + "external/protobuf-lite/src/google/protobuf/io/zero_copy_stream.cc", + "external/protobuf-lite/src/google/protobuf/io/zero_copy_stream.h", + "external/protobuf-lite/src/google/protobuf/io/zero_copy_stream_impl.cc", + "external/protobuf-lite/src/google/protobuf/io/zero_copy_stream_impl.h", + "external/protobuf-lite/src/google/protobuf/io/zero_copy_stream_impl_lite.cc", + "external/protobuf-lite/src/google/protobuf/io/zero_copy_stream_impl_lite.h", + "external/protobuf-lite/src/google/protobuf/message_lite.cc", + "external/protobuf-lite/src/google/protobuf/message_lite.h", + "external/protobuf-lite/src/google/protobuf/repeated_field.cc", + "external/protobuf-lite/src/google/protobuf/repeated_field.h", + "external/protobuf-lite/src/google/protobuf/stubs/atomicops.h", + "external/protobuf-lite/src/google/protobuf/stubs/atomicops_internals_arm_gcc.h", + "external/protobuf-lite/src/google/protobuf/stubs/atomicops_internals_arm_qnx.h", + "external/protobuf-lite/src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h", + "external/protobuf-lite/src/google/protobuf/stubs/atomicops_internals_macosx.h", + "external/protobuf-lite/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h", + "external/protobuf-lite/src/google/protobuf/stubs/atomicops_internals_pnacl.h", + "external/protobuf-lite/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc", + "external/protobuf-lite/src/google/protobuf/stubs/atomicops_internals_x86_gcc.h", + "external/protobuf-lite/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc", + "external/protobuf-lite/src/google/protobuf/stubs/atomicops_internals_x86_msvc.h", + "external/protobuf-lite/src/google/protobuf/stubs/common.cc", + "external/protobuf-lite/src/google/protobuf/stubs/common.h", + "external/protobuf-lite/src/google/protobuf/stubs/hash.h", + "external/protobuf-lite/src/google/protobuf/stubs/map-util.h", + "external/protobuf-lite/src/google/protobuf/stubs/once.cc", + "external/protobuf-lite/src/google/protobuf/stubs/once.h", + "external/protobuf-lite/src/google/protobuf/stubs/platform_macros.h", + "external/protobuf-lite/src/google/protobuf/stubs/stl_util.h", + "external/protobuf-lite/src/google/protobuf/stubs/stringprintf.cc", + "external/protobuf-lite/src/google/protobuf/stubs/stringprintf.h", + "external/protobuf-lite/src/google/protobuf/stubs/template_util.h", + "external/protobuf-lite/src/google/protobuf/stubs/type_traits.h", + "external/protobuf-lite/src/google/protobuf/wire_format_lite.cc", + "external/protobuf-lite/src/google/protobuf/wire_format_lite.h", + "external/protobuf-lite/src/google/protobuf/wire_format_lite_inl.h", + "external/protobuf-lite/win32/config.h", "external/sqlite3/Android.mk", "external/sqlite3/include/sqlite3.h", "external/sqlite3/include/sqlite3ext.h", "external/sqlite3/libraries/win32/sqlite3.dll", "external/sqlite3/libraries/win32/sqlite3.lib", + "external/sqlite3/libraries/winrt_8.1/arm/sqlite3.dll", + "external/sqlite3/libraries/winrt_8.1/arm/sqlite3.lib", + "external/sqlite3/libraries/winrt_8.1/win32/sqlite3.dll", + "external/sqlite3/libraries/winrt_8.1/win32/sqlite3.lib", + "external/sqlite3/libraries/wp8/arm/sqlite3.dll", + "external/sqlite3/libraries/wp8/arm/sqlite3.lib", + "external/sqlite3/libraries/wp8/win32/sqlite3.dll", + "external/sqlite3/libraries/wp8/win32/sqlite3.lib", + "external/sqlite3/libraries/wp_8.1/arm/sqlite3.dll", + "external/sqlite3/libraries/wp_8.1/arm/sqlite3.lib", + "external/sqlite3/libraries/wp_8.1/win32/sqlite3.dll", + "external/sqlite3/libraries/wp_8.1/win32/sqlite3.lib", "external/tiff/CMakeLists.txt", "external/tiff/include/android/tiff.h", "external/tiff/include/android/tiffconf.h", @@ -2120,6 +2447,11 @@ "external/tiff/include/winrt/tiffconf.h", "external/tiff/include/winrt/tiffio.h", "external/tiff/include/winrt/tiffvers.h", + "external/tiff/include/winrt_8.1/tif_config.h", + "external/tiff/include/winrt_8.1/tiff.h", + "external/tiff/include/winrt_8.1/tiffconf.h", + "external/tiff/include/winrt_8.1/tiffio.h", + "external/tiff/include/winrt_8.1/tiffvers.h", "external/tiff/include/wp8/README.txt", "external/tiff/include/wp8/libtiff.vcxproj", "external/tiff/include/wp8/libtiff.vcxproj.filters", @@ -2128,6 +2460,11 @@ "external/tiff/include/wp8/tiffconf.h", "external/tiff/include/wp8/tiffio.h", "external/tiff/include/wp8/tiffvers.h", + "external/tiff/include/wp_8.1/tif_config.h", + "external/tiff/include/wp_8.1/tiff.h", + "external/tiff/include/wp_8.1/tiffconf.h", + "external/tiff/include/wp_8.1/tiffio.h", + "external/tiff/include/wp_8.1/tiffvers.h", "external/tiff/prebuilt/android/Android.mk", "external/tiff/prebuilt/android/armeabi-v7a/libtiff.a", "external/tiff/prebuilt/android/armeabi/libtiff.a", @@ -2140,14 +2477,20 @@ "external/tiff/prebuilt/win32/libtiff.lib", "external/tiff/prebuilt/winrt/ARM/libtiff.lib", "external/tiff/prebuilt/winrt/Win32/libtiff.lib", + "external/tiff/prebuilt/winrt_8.1/arm/libtiff.lib", + "external/tiff/prebuilt/winrt_8.1/win32/libtiff.lib", "external/tiff/prebuilt/wp8/ARM/libtiff.lib", "external/tiff/prebuilt/wp8/Win32/libtiff.lib", + "external/tiff/prebuilt/wp_8.1/arm/libtiff.lib", + "external/tiff/prebuilt/wp_8.1/win32/libtiff.lib", "external/tinyxml2/CMakeLists.txt", "external/tinyxml2/tinyxml2.cpp", "external/tinyxml2/tinyxml2.h", "external/unzip/CMakeLists.txt", "external/unzip/ioapi.cpp", "external/unzip/ioapi.h", + "external/unzip/ioapi_mem.cpp", + "external/unzip/ioapi_mem.h", "external/unzip/unzip.cpp", "external/unzip/unzip.h", "external/version.json", @@ -2183,6 +2526,19 @@ "external/websockets/include/win32/libwebsockets.h", "external/websockets/include/win32/win32helpers/gettimeofday.h", "external/websockets/include/win32/win32helpers/websock-w32.h", + "external/websockets/include/winrt_8.1/libwebsockets.h", + "external/websockets/include/winrt_8.1/private-libwebsockets.h", + "external/websockets/include/winrt_8.1/win32helpers/getopt.c", + "external/websockets/include/winrt_8.1/win32helpers/getopt.h", + "external/websockets/include/winrt_8.1/win32helpers/getopt_long.c", + "external/websockets/include/winrt_8.1/win32helpers/gettimeofday.c", + "external/websockets/include/winrt_8.1/win32helpers/gettimeofday.h", + "external/websockets/include/winrt_8.1/win32helpers/netdb.h", + "external/websockets/include/winrt_8.1/win32helpers/strings.h", + "external/websockets/include/winrt_8.1/win32helpers/sys/time.h", + "external/websockets/include/winrt_8.1/win32helpers/unistd.h", + "external/websockets/include/winrt_8.1/win32helpers/websock-w32.c", + "external/websockets/include/winrt_8.1/win32helpers/websock-w32.h", "external/websockets/include/wp8/libwebsockets.h", "external/websockets/include/wp8/private-libwebsockets.h", "external/websockets/include/wp8/win32helpers/getopt.c", @@ -2196,6 +2552,19 @@ "external/websockets/include/wp8/win32helpers/unistd.h", "external/websockets/include/wp8/win32helpers/websock-w32.c", "external/websockets/include/wp8/win32helpers/websock-w32.h", + "external/websockets/include/wp_8.1/libwebsockets.h", + "external/websockets/include/wp_8.1/private-libwebsockets.h", + "external/websockets/include/wp_8.1/win32helpers/getopt.c", + "external/websockets/include/wp_8.1/win32helpers/getopt.h", + "external/websockets/include/wp_8.1/win32helpers/getopt_long.c", + "external/websockets/include/wp_8.1/win32helpers/gettimeofday.c", + "external/websockets/include/wp_8.1/win32helpers/gettimeofday.h", + "external/websockets/include/wp_8.1/win32helpers/netdb.h", + "external/websockets/include/wp_8.1/win32helpers/strings.h", + "external/websockets/include/wp_8.1/win32helpers/sys/time.h", + "external/websockets/include/wp_8.1/win32helpers/unistd.h", + "external/websockets/include/wp_8.1/win32helpers/websock-w32.c", + "external/websockets/include/wp_8.1/win32helpers/websock-w32.h", "external/websockets/prebuilt/android/Android.mk", "external/websockets/prebuilt/android/armeabi-v7a/libwebsockets.a", "external/websockets/prebuilt/android/armeabi/libwebsockets.a", @@ -2206,10 +2575,18 @@ "external/websockets/prebuilt/mac/libwebsockets.a", "external/websockets/prebuilt/win32/websockets.dll", "external/websockets/prebuilt/win32/websockets.lib", + "external/websockets/prebuilt/winrt_8.1/arm/libwebsockets.dll", + "external/websockets/prebuilt/winrt_8.1/arm/libwebsockets.lib", + "external/websockets/prebuilt/winrt_8.1/win32/libwebsockets.dll", + "external/websockets/prebuilt/winrt_8.1/win32/libwebsockets.lib", "external/websockets/prebuilt/wp8/arm/libwebsockets.dll", "external/websockets/prebuilt/wp8/arm/libwebsockets.lib", "external/websockets/prebuilt/wp8/win32/libwebsockets.dll", "external/websockets/prebuilt/wp8/win32/libwebsockets.lib", + "external/websockets/prebuilt/wp_8.1/arm/libwebsockets.dll", + "external/websockets/prebuilt/wp_8.1/arm/libwebsockets.lib", + "external/websockets/prebuilt/wp_8.1/win32/libwebsockets.dll", + "external/websockets/prebuilt/wp_8.1/win32/libwebsockets.lib", "external/win32-specific/MP3Decoder/include/mpg123.h", "external/win32-specific/MP3Decoder/prebuilt/libmpg123.dll", "external/win32-specific/MP3Decoder/prebuilt/libmpg123.lib", @@ -2272,6 +2649,42 @@ "external/winrt-specific/zlib/include/zlib.vcxproj.filters", "external/winrt-specific/zlib/prebuilt/ARM/zlib.lib", "external/winrt-specific/zlib/prebuilt/Win32/zlib.lib", + "external/winrt_8.1-specific/angle/include/EGL/egl.h", + "external/winrt_8.1-specific/angle/include/EGL/eglext.h", + "external/winrt_8.1-specific/angle/include/EGL/eglplatform.h", + "external/winrt_8.1-specific/angle/include/GLES2/gl2.h", + "external/winrt_8.1-specific/angle/include/GLES2/gl2ext.h", + "external/winrt_8.1-specific/angle/include/GLES2/gl2platform.h", + "external/winrt_8.1-specific/angle/include/GLES3/gl3.h", + "external/winrt_8.1-specific/angle/include/GLES3/gl3ext.h", + "external/winrt_8.1-specific/angle/include/GLES3/gl3platform.h", + "external/winrt_8.1-specific/angle/include/GLSLANG/ShaderLang.h", + "external/winrt_8.1-specific/angle/include/GLSLANG/ShaderVars.h", + "external/winrt_8.1-specific/angle/include/KHR/khrplatform.h", + "external/winrt_8.1-specific/angle/include/angle_gl.h", + "external/winrt_8.1-specific/angle/include/angle_windowsstore.h", + "external/winrt_8.1-specific/angle/prebuilt/arm/libEGL.dll", + "external/winrt_8.1-specific/angle/prebuilt/arm/libEGL.lib", + "external/winrt_8.1-specific/angle/prebuilt/arm/libGLESv2.dll", + "external/winrt_8.1-specific/angle/prebuilt/arm/libGLESv2.lib", + "external/winrt_8.1-specific/angle/prebuilt/win32/libEGL.dll", + "external/winrt_8.1-specific/angle/prebuilt/win32/libEGL.lib", + "external/winrt_8.1-specific/angle/prebuilt/win32/libGLESv2.dll", + "external/winrt_8.1-specific/angle/prebuilt/win32/libGLESv2.lib", + "external/winrt_8.1-specific/zlib/include/zconf.h", + "external/winrt_8.1-specific/zlib/include/zlib.h", + "external/winrt_8.1-specific/zlib/prebuilt/arm/zlib.lib", + "external/winrt_8.1-specific/zlib/prebuilt/win32/zlib.lib", + "external/wp8-specific/angle/include/EGL/egl.h", + "external/wp8-specific/angle/include/EGL/eglext.h", + "external/wp8-specific/angle/include/EGL/eglplatform.h", + "external/wp8-specific/angle/include/GLES2/gl2.h", + "external/wp8-specific/angle/include/GLES2/gl2ext.h", + "external/wp8-specific/angle/include/GLES2/gl2platform.h", + "external/wp8-specific/angle/include/GLSLANG/ShaderLang.h", + "external/wp8-specific/angle/include/KHR/khrplatform.h", + "external/wp8-specific/angle/include/esUtil.h", + "external/wp8-specific/angle/include/winrtangle.h", "external/wp8-specific/angle/prebuilt/ARM/esUtil_phone.lib", "external/wp8-specific/angle/prebuilt/ARM/libEGL_phone.dll", "external/wp8-specific/angle/prebuilt/ARM/libEGL_phone.lib", @@ -2289,6 +2702,32 @@ "external/wp8-specific/zlib/include/zlib.vcxproj.filters", "external/wp8-specific/zlib/prebuilt/ARM/zlib.lib", "external/wp8-specific/zlib/prebuilt/Win32/zlib.lib", + "external/wp_8.1-specific/angle/include/EGL/egl.h", + "external/wp_8.1-specific/angle/include/EGL/eglext.h", + "external/wp_8.1-specific/angle/include/EGL/eglplatform.h", + "external/wp_8.1-specific/angle/include/GLES2/gl2.h", + "external/wp_8.1-specific/angle/include/GLES2/gl2ext.h", + "external/wp_8.1-specific/angle/include/GLES2/gl2platform.h", + "external/wp_8.1-specific/angle/include/GLES3/gl3.h", + "external/wp_8.1-specific/angle/include/GLES3/gl3ext.h", + "external/wp_8.1-specific/angle/include/GLES3/gl3platform.h", + "external/wp_8.1-specific/angle/include/GLSLANG/ShaderLang.h", + "external/wp_8.1-specific/angle/include/GLSLANG/ShaderVars.h", + "external/wp_8.1-specific/angle/include/KHR/khrplatform.h", + "external/wp_8.1-specific/angle/include/angle_gl.h", + "external/wp_8.1-specific/angle/include/angle_windowsstore.h", + "external/wp_8.1-specific/angle/prebuilt/arm/libEGL.dll", + "external/wp_8.1-specific/angle/prebuilt/arm/libEGL.lib", + "external/wp_8.1-specific/angle/prebuilt/arm/libGLESv2.dll", + "external/wp_8.1-specific/angle/prebuilt/arm/libGLESv2.lib", + "external/wp_8.1-specific/angle/prebuilt/win32/libEGL.dll", + "external/wp_8.1-specific/angle/prebuilt/win32/libEGL.lib", + "external/wp_8.1-specific/angle/prebuilt/win32/libGLESv2.dll", + "external/wp_8.1-specific/angle/prebuilt/win32/libGLESv2.lib", + "external/wp_8.1-specific/zlib/include/zconf.h", + "external/wp_8.1-specific/zlib/include/zlib.h", + "external/wp_8.1-specific/zlib/prebuilt/arm/zlib.lib", + "external/wp_8.1-specific/zlib/prebuilt/win32/zlib.lib", "external/xxhash/CMakeLists.txt", "external/xxhash/xxhash.c", "external/xxhash/xxhash.h", @@ -2554,6 +2993,8 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBFriendPickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBGraphLocation.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBGraphObject.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBGraphObjectPickerViewController.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBGraphPerson.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBGraphPlace.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBGraphUser.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBInsights.h", @@ -2566,6 +3007,7 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBOpenGraphActionParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBOpenGraphActionShareDialogParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBOpenGraphObject.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBPeoplePickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBPhotoParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBPlacePickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBProfilePictureView.h", @@ -2577,6 +3019,7 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBSettings.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBShareDialogParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBShareDialogPhotoParams.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBTaggableFriendPickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBTestSession.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBTooltipView.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Headers/FBUserSettingsViewController.h", @@ -2619,6 +3062,8 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBFriendPickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBGraphLocation.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBGraphObject.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBGraphObjectPickerViewController.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBGraphPerson.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBGraphPlace.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBGraphUser.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBInsights.h", @@ -2632,6 +3077,7 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBOpenGraphActionParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBOpenGraphActionShareDialogParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBOpenGraphObject.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBPeoplePickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBPhotoParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBPlacePickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBProfilePictureView.h", @@ -2644,6 +3090,7 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBSettings.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBShareDialogParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBShareDialogPhotoParams.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBTaggableFriendPickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBTestSession.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBTooltipView.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBUserSettingsViewController.h", @@ -2669,6 +3116,8 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBFriendPickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBGraphLocation.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBGraphObject.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBGraphObjectPickerViewController.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBGraphPerson.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBGraphPlace.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBGraphUser.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBInsights.h", @@ -2681,6 +3130,7 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBOpenGraphActionParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBOpenGraphActionShareDialogParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBOpenGraphObject.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBPeoplePickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBPhotoParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBPlacePickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBProfilePictureView.h", @@ -2692,6 +3142,7 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBSettings.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBShareDialogParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBShareDialogPhotoParams.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBTaggableFriendPickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBTestSession.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBTooltipView.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/A/Headers/FBUserSettingsViewController.h", @@ -2734,6 +3185,8 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBFriendPickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBGraphLocation.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBGraphObject.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBGraphObjectPickerViewController.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBGraphPerson.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBGraphPlace.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBGraphUser.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBInsights.h", @@ -2747,6 +3200,7 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBOpenGraphActionParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBOpenGraphActionShareDialogParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBOpenGraphObject.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBPeoplePickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBPhotoParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBPlacePickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBProfilePictureView.h", @@ -2759,6 +3213,7 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBSettings.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBShareDialogParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBShareDialogPhotoParams.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBTaggableFriendPickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBTestSession.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBTooltipView.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/DeprecatedHeaders/FBUserSettingsViewController.h", @@ -2784,6 +3239,8 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBFriendPickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBGraphLocation.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBGraphObject.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBGraphObjectPickerViewController.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBGraphPerson.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBGraphPlace.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBGraphUser.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBInsights.h", @@ -2796,6 +3253,7 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBOpenGraphActionParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBOpenGraphActionShareDialogParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBOpenGraphObject.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBPeoplePickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBPhotoParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBPlacePickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBProfilePictureView.h", @@ -2807,6 +3265,7 @@ "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBSettings.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBShareDialogParams.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBShareDialogPhotoParams.h", + "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBTaggableFriendPickerViewController.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBTestSession.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBTooltipView.h", "plugin/plugins/facebook/proj.ios/sdk/FacebookSDK.framework/Versions/Current/Headers/FBUserSettingsViewController.h", @@ -2836,6 +3295,7 @@ "plugin/plugins/facebookads/proj.android/ForManifest.xml", "plugin/plugins/facebookads/proj.android/build.xml", "plugin/plugins/facebookads/proj.android/proguard-project.txt", + "plugin/plugins/facebookads/proj.android/project.properties", "plugin/plugins/facebookads/proj.android/res/values-large/layout.xml", "plugin/plugins/facebookads/proj.android/res/values-sw600dp/layout.xml", "plugin/plugins/facebookads/proj.android/res/values/layouts.xml", @@ -4016,6 +4476,7 @@ "plugin/protocols/include/ProtocolShare.h", "plugin/protocols/include/ProtocolSocial.h", "plugin/protocols/include/ProtocolUser.h", + "plugin/protocols/include/iOSIAPAgent.h", "plugin/protocols/platform/android/AgentManager.cpp", "plugin/protocols/platform/android/FacebookAgent.cpp", "plugin/protocols/platform/android/PluginFactory.cpp", @@ -4063,6 +4524,7 @@ "plugin/protocols/platform/ios/SocialWrapper.mm", "plugin/protocols/platform/ios/UserWrapper.h", "plugin/protocols/platform/ios/UserWrapper.mm", + "plugin/protocols/platform/ios/iOSIAPAgent.mm", "plugin/protocols/proj.android/.classpath", "plugin/protocols/proj.android/.project", "plugin/protocols/proj.android/AndroidManifest.xml", @@ -4124,7 +4586,6 @@ ], "lua": [ "cocos/scripting/lua-bindings/CMakeLists.txt", - "cocos/scripting/lua-bindings/auto/api/AABB.lua", "cocos/scripting/lua-bindings/auto/api/Action.lua", "cocos/scripting/lua-bindings/auto/api/ActionCamera.lua", "cocos/scripting/lua-bindings/auto/api/ActionEase.lua", @@ -4158,6 +4619,7 @@ "cocos/scripting/lua-bindings/auto/api/ArmatureDataManager.lua", "cocos/scripting/lua-bindings/auto/api/ArmatureDisplayData.lua", "cocos/scripting/lua-bindings/auto/api/AssetsManager.lua", + "cocos/scripting/lua-bindings/auto/api/AssetsManagerEx.lua", "cocos/scripting/lua-bindings/auto/api/AtlasNode.lua", "cocos/scripting/lua-bindings/auto/api/AttachNode.lua", "cocos/scripting/lua-bindings/auto/api/AudioEngine.lua", @@ -4173,6 +4635,7 @@ "cocos/scripting/lua-bindings/auto/api/Button.lua", "cocos/scripting/lua-bindings/auto/api/CCBAnimationManager.lua", "cocos/scripting/lua-bindings/auto/api/CCBReader.lua", + "cocos/scripting/lua-bindings/auto/api/CSLoader.lua", "cocos/scripting/lua-bindings/auto/api/CallFunc.lua", "cocos/scripting/lua-bindings/auto/api/Camera.lua", "cocos/scripting/lua-bindings/auto/api/CardinalSplineBy.lua", @@ -4181,6 +4644,7 @@ "cocos/scripting/lua-bindings/auto/api/CatmullRomTo.lua", "cocos/scripting/lua-bindings/auto/api/CheckBox.lua", "cocos/scripting/lua-bindings/auto/api/ClippingNode.lua", + "cocos/scripting/lua-bindings/auto/api/ClippingRectangleNode.lua", "cocos/scripting/lua-bindings/auto/api/ColorFrame.lua", "cocos/scripting/lua-bindings/auto/api/ComAttribute.lua", "cocos/scripting/lua-bindings/auto/api/ComAudio.lua", @@ -4245,6 +4709,7 @@ "cocos/scripting/lua-bindings/auto/api/EditBox.lua", "cocos/scripting/lua-bindings/auto/api/Event.lua", "cocos/scripting/lua-bindings/auto/api/EventAcceleration.lua", + "cocos/scripting/lua-bindings/auto/api/EventAssetsManagerEx.lua", "cocos/scripting/lua-bindings/auto/api/EventController.lua", "cocos/scripting/lua-bindings/auto/api/EventCustom.lua", "cocos/scripting/lua-bindings/auto/api/EventDispatcher.lua", @@ -4253,6 +4718,7 @@ "cocos/scripting/lua-bindings/auto/api/EventKeyboard.lua", "cocos/scripting/lua-bindings/auto/api/EventListener.lua", "cocos/scripting/lua-bindings/auto/api/EventListenerAcceleration.lua", + "cocos/scripting/lua-bindings/auto/api/EventListenerAssetsManagerEx.lua", "cocos/scripting/lua-bindings/auto/api/EventListenerController.lua", "cocos/scripting/lua-bindings/auto/api/EventListenerCustom.lua", "cocos/scripting/lua-bindings/auto/api/EventListenerFocus.lua", @@ -4314,6 +4780,7 @@ "cocos/scripting/lua-bindings/auto/api/Liquid.lua", "cocos/scripting/lua-bindings/auto/api/ListView.lua", "cocos/scripting/lua-bindings/auto/api/LoadingBar.lua", + "cocos/scripting/lua-bindings/auto/api/Manifest.lua", "cocos/scripting/lua-bindings/auto/api/Menu.lua", "cocos/scripting/lua-bindings/auto/api/MenuItem.lua", "cocos/scripting/lua-bindings/auto/api/MenuItemAtlasFont.lua", @@ -4330,8 +4797,6 @@ "cocos/scripting/lua-bindings/auto/api/MovementData.lua", "cocos/scripting/lua-bindings/auto/api/Node.lua", "cocos/scripting/lua-bindings/auto/api/NodeGrid.lua", - "cocos/scripting/lua-bindings/auto/api/NodeReader.lua", - "cocos/scripting/lua-bindings/auto/api/OBB.lua", "cocos/scripting/lua-bindings/auto/api/OrbitCamera.lua", "cocos/scripting/lua-bindings/auto/api/PageTurn3D.lua", "cocos/scripting/lua-bindings/auto/api/PageView.lua", @@ -4416,9 +4881,9 @@ "cocos/scripting/lua-bindings/auto/api/Show.lua", "cocos/scripting/lua-bindings/auto/api/ShuffleTiles.lua", "cocos/scripting/lua-bindings/auto/api/SimpleAudioEngine.lua", - "cocos/scripting/lua-bindings/auto/api/Skeleton.lua", "cocos/scripting/lua-bindings/auto/api/Skeleton3D.lua", "cocos/scripting/lua-bindings/auto/api/SkeletonAnimation.lua", + "cocos/scripting/lua-bindings/auto/api/SkeletonRenderer.lua", "cocos/scripting/lua-bindings/auto/api/SkewBy.lua", "cocos/scripting/lua-bindings/auto/api/SkewFrame.lua", "cocos/scripting/lua-bindings/auto/api/SkewTo.lua", @@ -4649,10 +5114,12 @@ "cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionEnum.lua", "cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionFunc.lua", "cocos/scripting/lua-bindings/script/extension/ExtensionConstants.lua", + "cocos/scripting/lua-bindings/script/init.lua", "cocos/scripting/lua-bindings/script/network/DeprecatedNetworkClass.lua", "cocos/scripting/lua-bindings/script/network/DeprecatedNetworkEnum.lua", "cocos/scripting/lua-bindings/script/network/DeprecatedNetworkFunc.lua", "cocos/scripting/lua-bindings/script/network/NetworkConstants.lua", + "cocos/scripting/lua-bindings/script/spine/SpineConstants.lua", "cocos/scripting/lua-bindings/script/ui/DeprecatedUIEnum.lua", "cocos/scripting/lua-bindings/script/ui/DeprecatedUIFunc.lua", "cocos/scripting/lua-bindings/script/ui/GuiConstants.lua", @@ -4925,38 +5392,40 @@ "external/lua/luasocket/buffer.h", "external/lua/luasocket/except.c", "external/lua/luasocket/except.h", - "external/lua/luasocket/ftp.lua", - "external/lua/luasocket/headers.lua", - "external/lua/luasocket/http.lua", "external/lua/luasocket/inet.c", "external/lua/luasocket/inet.h", "external/lua/luasocket/io.c", "external/lua/luasocket/io.h", - "external/lua/luasocket/ltn12.lua", "external/lua/luasocket/luasocket.c", "external/lua/luasocket/luasocket.h", - "external/lua/luasocket/mbox.lua", + "external/lua/luasocket/luasocket_scripts.c", + "external/lua/luasocket/luasocket_scripts.h", "external/lua/luasocket/mime.c", "external/lua/luasocket/mime.h", - "external/lua/luasocket/mime.lua", "external/lua/luasocket/options.c", "external/lua/luasocket/options.h", + "external/lua/luasocket/script/ltn12.lua", + "external/lua/luasocket/script/mime.lua", + "external/lua/luasocket/script/socket.lua", + "external/lua/luasocket/script/socket/ftp.lua", + "external/lua/luasocket/script/socket/headers.lua", + "external/lua/luasocket/script/socket/http.lua", + "external/lua/luasocket/script/socket/mbox.lua", + "external/lua/luasocket/script/socket/smtp.lua", + "external/lua/luasocket/script/socket/tp.lua", + "external/lua/luasocket/script/socket/url.lua", "external/lua/luasocket/select.c", "external/lua/luasocket/select.h", "external/lua/luasocket/serial.c", - "external/lua/luasocket/smtp.lua", "external/lua/luasocket/socket.h", - "external/lua/luasocket/socket.lua", "external/lua/luasocket/tcp.c", "external/lua/luasocket/tcp.h", "external/lua/luasocket/timeout.c", "external/lua/luasocket/timeout.h", - "external/lua/luasocket/tp.lua", "external/lua/luasocket/udp.c", "external/lua/luasocket/udp.h", "external/lua/luasocket/unix.c", "external/lua/luasocket/unix.h", - "external/lua/luasocket/url.lua", "external/lua/luasocket/usocket.c", "external/lua/luasocket/usocket.h", "external/lua/luasocket/wsocket.c", diff --git a/templates/cpp-template-default/CMakeLists.txt b/templates/cpp-template-default/CMakeLists.txt index de981a02ef..2b810ea4ec 100644 --- a/templates/cpp-template-default/CMakeLists.txt +++ b/templates/cpp-template-default/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8) set(APP_NAME MyGame) project (${APP_NAME}) -include(cocos2d/build/BuildHelpers.CMakeLists.txt) +include(cocos2d/cmake/BuildHelpers.CMakeLists.txt) option(DEBUG_MODE "Debug or release?" ON) @@ -20,13 +20,18 @@ if (MSVC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS") +elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set(CMAKE_C_FLAGS_DEBUG "-g -Wall -DCOCOS2D_DEBUG=1") + set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-exceptions -std=c99") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -std=c++11 -stdlib=libc++ -Wno-deprecated-declarations -Wno-reorder") + elseif (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_C_FLAGS_DEBUG "-g -Wall -DCOCOS2D_DEBUG=1") set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-deprecated-declarations -Wno-reorder") - endif() # architecture @@ -36,7 +41,34 @@ else() set(ARCH_DIR "32-bit") endif() -if( UNIX ) #assume linux +if( APPLE AND IOS ) +include_directories(Classes) +set(GAME_SRC + proj.ios_mac/ios/main.m + proj.ios_mac/ios/RootViewController.mm + proj.ios_mac/ios/AppController.mm + Classes/AppDelegate.cpp + Classes/HelloWorldScene.cpp +) +set(GAME_HEADERS + Classes/AppDelegate.h + Classes/HelloWorldScene.h + proj.ios_mac/ios/RootViewController.h + proj.ios_mac/ios/AppController.h +) +elseif(APPLE) #desktop +include_directories(Classes) +include(Classes/CMakeLists.txt) +set(GAME_SRC + proj.ios_mac/mac/main.cpp + Classes/AppDelegate.cpp + Classes/HelloWorldScene.cpp +) +set(GAME_HEADERS + Classes/AppDelegate.h + Classes/HelloWorldScene.h +) +elseif( UNIX AND NOT APPLE) #assume linux set(GAME_SRC proj.linux/main.cpp Classes/AppDelegate.cpp @@ -120,6 +152,7 @@ include_directories( ${COCOS2D_ROOT}/extensions ${COCOS2D_ROOT}/external ${COCOS2D_ROOT}/external/edtaa3func + ${COCOS2D_ROOT}/external/chipmunk/include/chipmunk ${COCOS2D_ROOT}/external/jpeg/include/linux ${COCOS2D_ROOT}/external/tiff/include/linux ${COCOS2D_ROOT}/external/webp/include/linux @@ -131,9 +164,61 @@ include_directories( ${COCOS2D_ROOT}/external/linux-specific/fmod/include/${ARCH_DIR} ${COCOS2D_ROOT}/external/xxhash ) +elseif(APPLE AND IOS) +include_directories( + /usr/local/include/GLFW + /usr/include/GLFW + ${COCOS2D_ROOT} + ${COCOS2D_ROOT}/cocos + ${COCOS2D_ROOT}/cocos/audio/include + ${COCOS2D_ROOT}/cocos/platform + ${COCOS2D_ROOT}/cocos/platform/ios + ${COCOS2D_ROOT}/cocos/editor-support + ${COCOS2D_ROOT}/extensions + ${COCOS2D_ROOT}/external + ${COCOS2D_ROOT}/external/edtaa3func + ${COCOS2D_ROOT}/external/chipmunk/include/chipmunk + ${COCOS2D_ROOT}/external/jpeg/include/ios + ${COCOS2D_ROOT}/external/tiff/include/ios + ${COCOS2D_ROOT}/external/webp/include/ios + ${COCOS2D_ROOT}/external/tinyxml2 + ${COCOS2D_ROOT}/external/unzip + ${COCOS2D_ROOT}/external/freetype2/include/ios + ${COCOS2D_ROOT}/external/websockets/include/ios + ${COCOS2D_ROOT}/external/spidermonkey/include/liniosux + ${COCOS2D_ROOT}/external/xxhash +) +elseif(APPLE) +include_directories( + /usr/local/include/GLFW + /usr/include/GLFW + ${COCOS2D_ROOT} + ${COCOS2D_ROOT}/cocos + ${COCOS2D_ROOT}/cocos/audio/include + ${COCOS2D_ROOT}/cocos/platform + ${COCOS2D_ROOT}/cocos/platform/mac + ${COCOS2D_ROOT}/cocos/editor-support + ${COCOS2D_ROOT}/extensions + ${COCOS2D_ROOT}/external + ${COCOS2D_ROOT}/external/edtaa3func + ${COCOS2D_ROOT}/external/chipmunk/include/chipmunk + ${COCOS2D_ROOT}/external/jpeg/include/mac + ${COCOS2D_ROOT}/external/tiff/include/mac + ${COCOS2D_ROOT}/external/webp/include/mac + ${COCOS2D_ROOT}/external/tinyxml2 + ${COCOS2D_ROOT}/external/unzip + ${COCOS2D_ROOT}/external/freetype2/include/mac + ${COCOS2D_ROOT}/external/websockets/include/mac + ${COCOS2D_ROOT}/external/spidermonkey/include/liniosux + ${COCOS2D_ROOT}/external/xxhash +) +endif() +if(NOT APPLE) ADD_DEFINITIONS(-DLINUX) +endif() +if(LINUX) link_directories( /usr/local/lib ${COCOS2D_ROOT}/external/jpeg/prebuilt/linux/${ARCH_DIR} @@ -145,13 +230,56 @@ link_directories( ${COCOS2D_ROOT}/external/linux-specific/fmod/prebuilt/${ARCH_DIR} ${COCOS2D_ROOT}/external/chipmunk/prebuilt/linux/${ARCH_DIR} ) +elseif(APPLE AND IOS) +link_directories( + /usr/local/lib + ${COCOS2D_ROOT}/external/jpeg/prebuilt/ios + ${COCOS2D_ROOT}/external/tiff/prebuilt/ios + ${COCOS2D_ROOT}/external/webp/prebuilt/ios + ${COCOS2D_ROOT}/external/freetype2/prebuilt/ios + ${COCOS2D_ROOT}/external/websockets/prebuilt/ios + ${COCOS2D_ROOT}/external/chipmunk/prebuilt/ios +) +elseif(APPLE) +if(IOS) +link_directories( +/usr/local/lib + ${COCOS2D_ROOT}/external/jpeg/prebuilt/ios + ${COCOS2D_ROOT}/external/tiff/prebuilt/ios + ${COCOS2D_ROOT}/external/webp/prebuilt/ios + ${COCOS2D_ROOT}/external/freetype2/prebuilt/ios + ${COCOS2D_ROOT}/external/websockets/prebuilt/ios + ${COCOS2D_ROOT}/external/chipmunk/prebuilt/ios +) +else() +link_directories( +/usr/local/lib + ${COCOS2D_ROOT}/external/jpeg/prebuilt/mac + ${COCOS2D_ROOT}/external/tiff/prebuilt/mac + ${COCOS2D_ROOT}/external/webp/prebuilt/mac + ${COCOS2D_ROOT}/external/freetype2/prebuilt/mac + ${COCOS2D_ROOT}/external/websockets/prebuilt/mac + ${COCOS2D_ROOT}/external/chipmunk/prebuilt/mac +) +endif() +endif() + +# build for 3rd party libraries +if(LINUX OR APPLE) +add_subdirectory(${COCOS2D_ROOT}/external/Box2D) +add_subdirectory(${COCOS2D_ROOT}/external/unzip) +add_subdirectory(${COCOS2D_ROOT}/external/xxhash) +add_subdirectory(${COCOS2D_ROOT}/external/tinyxml2) endif() # libcocos2d add_subdirectory(${COCOS2D_ROOT}/cocos) - +if(GAME_HEADERS) +add_executable(${APP_NAME} ${GAME_SRC} ${GAME_HEADERS}) +else() add_executable(${APP_NAME} ${GAME_SRC}) +endif() target_link_libraries(${APP_NAME} cocos2d) diff --git a/templates/cpp-template-default/Classes/HelloWorldScene.cpp b/templates/cpp-template-default/Classes/HelloWorldScene.cpp index cea2c2ccfa..8a437afe99 100644 --- a/templates/cpp-template-default/Classes/HelloWorldScene.cpp +++ b/templates/cpp-template-default/Classes/HelloWorldScene.cpp @@ -54,7 +54,7 @@ bool HelloWorld::init() // add a label shows "Hello World" // create and initialize a label - auto label = LabelTTF::create("Hello World", "Arial", 24); + auto label = Label::createWithTTF("Hello World", "Arial", 24); // position the label on the center of the screen label->setPosition(Vec2(origin.x + visibleSize.width/2, diff --git a/templates/cpp-template-default/Classes/HelloWorldScene.h b/templates/cpp-template-default/Classes/HelloWorldScene.h index 02cacbed5f..dbf4013485 100644 --- a/templates/cpp-template-default/Classes/HelloWorldScene.h +++ b/templates/cpp-template-default/Classes/HelloWorldScene.h @@ -10,7 +10,7 @@ public: static cocos2d::Scene* createScene(); // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone - virtual bool init(); + virtual bool init(); // a selector callback void menuCloseCallback(cocos2d::Ref* pSender); diff --git a/templates/cpp-template-default/Resources/res/.gitkeep b/templates/cpp-template-default/Resources/res/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/templates/cpp-template-default/proj.ios_mac/HelloCpp.xcodeproj/project.pbxproj b/templates/cpp-template-default/proj.ios_mac/HelloCpp.xcodeproj/project.pbxproj index 3ca78d1be6..9834bed23e 100644 --- a/templates/cpp-template-default/proj.ios_mac/HelloCpp.xcodeproj/project.pbxproj +++ b/templates/cpp-template-default/proj.ios_mac/HelloCpp.xcodeproj/project.pbxproj @@ -12,6 +12,8 @@ 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; }; + 3EACC98F19EE6D4300EB3C5E /* res in Resources */ = {isa = PBXBuildFile; fileRef = 3EACC98E19EE6D4300EB3C5E /* res */; }; + 3EACC99019EE6D4300EB3C5E /* res in Resources */ = {isa = PBXBuildFile; fileRef = 3EACC98E19EE6D4300EB3C5E /* res */; }; 46880B7B19C43A67006E1F66 /* CloseNormal.png in Resources */ = {isa = PBXBuildFile; fileRef = 46880B7619C43A67006E1F66 /* CloseNormal.png */; }; 46880B7C19C43A67006E1F66 /* CloseNormal.png in Resources */ = {isa = PBXBuildFile; fileRef = 46880B7619C43A67006E1F66 /* CloseNormal.png */; }; 46880B7D19C43A67006E1F66 /* CloseSelected.png in Resources */ = {isa = PBXBuildFile; fileRef = 46880B7719C43A67006E1F66 /* CloseSelected.png */; }; @@ -55,6 +57,8 @@ 50EF629917ECD46A001EB2F8 /* Icon-100.png in Resources */ = {isa = PBXBuildFile; fileRef = 50EF629517ECD46A001EB2F8 /* Icon-100.png */; }; 50EF62A217ECD613001EB2F8 /* Icon-29.png in Resources */ = {isa = PBXBuildFile; fileRef = 50EF62A017ECD613001EB2F8 /* Icon-29.png */; }; 50EF62A317ECD613001EB2F8 /* Icon-50.png in Resources */ = {isa = PBXBuildFile; fileRef = 50EF62A117ECD613001EB2F8 /* Icon-50.png */; }; + 521A8E6419F0C34300D177D7 /* Default-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 521A8E6219F0C34300D177D7 /* Default-667h@2x.png */; }; + 521A8E6519F0C34300D177D7 /* Default-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 521A8E6319F0C34300D177D7 /* Default-736h@3x.png */; }; BF171245129291EC00B8313A /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF170DB012928DE900B8313A /* OpenGLES.framework */; }; BF1712471292920000B8313A /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = BF170DB412928DE900B8313A /* libz.dylib */; }; BF1C47F01293687400B63C5D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF1C47EA1293683800B63C5D /* QuartzCore.framework */; }; @@ -102,6 +106,7 @@ 1D6058910D05DD3D006BFB54 /* HelloCpp iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "HelloCpp iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 3EACC98E19EE6D4300EB3C5E /* res */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "res"; sourceTree = ""; }; 46880B7619C43A67006E1F66 /* CloseNormal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CloseNormal.png; sourceTree = ""; }; 46880B7719C43A67006E1F66 /* CloseSelected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CloseSelected.png; sourceTree = ""; }; 46880B7919C43A67006E1F66 /* Marker Felt.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Marker Felt.ttf"; sourceTree = ""; }; @@ -142,6 +147,8 @@ 50EF629517ECD46A001EB2F8 /* Icon-100.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-100.png"; sourceTree = ""; }; 50EF62A017ECD613001EB2F8 /* Icon-29.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-29.png"; sourceTree = ""; }; 50EF62A117ECD613001EB2F8 /* Icon-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-50.png"; sourceTree = ""; }; + 521A8E6219F0C34300D177D7 /* Default-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h@2x.png"; sourceTree = ""; }; + 521A8E6319F0C34300D177D7 /* Default-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h@3x.png"; sourceTree = ""; }; BF170DB012928DE900B8313A /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; BF170DB412928DE900B8313A /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; BF1C47EA1293683800B63C5D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; @@ -263,6 +270,7 @@ 46880B7519C43A67006E1F66 /* Resources */ = { isa = PBXGroup; children = ( + 3EACC98E19EE6D4300EB3C5E /* res */, 46880B7619C43A67006E1F66 /* CloseNormal.png */, 46880B7719C43A67006E1F66 /* CloseSelected.png */, 46880B7819C43A67006E1F66 /* fonts */, @@ -315,6 +323,8 @@ 5087E77117EB970100C73F5D /* Icons */ = { isa = PBXGroup; children = ( + 521A8E6219F0C34300D177D7 /* Default-667h@2x.png */, + 521A8E6319F0C34300D177D7 /* Default-736h@3x.png */, 5087E77217EB970100C73F5D /* Default-568h@2x.png */, 5087E77317EB970100C73F5D /* Default.png */, 5087E77417EB970100C73F5D /* Default@2x.png */, @@ -446,15 +456,18 @@ 46880B7D19C43A67006E1F66 /* CloseSelected.png in Resources */, 5087E77D17EB970100C73F5D /* Default-568h@2x.png in Resources */, 5087E78517EB970100C73F5D /* Icon-72.png in Resources */, + 521A8E6519F0C34300D177D7 /* Default-736h@3x.png in Resources */, 50EF62A317ECD613001EB2F8 /* Icon-50.png in Resources */, 5087E78017EB970100C73F5D /* Icon-114.png in Resources */, 46880B7F19C43A67006E1F66 /* Marker Felt.ttf in Resources */, 50EF62A217ECD613001EB2F8 /* Icon-29.png in Resources */, 50EF629617ECD46A001EB2F8 /* Icon-40.png in Resources */, 5087E78217EB970100C73F5D /* Icon-144.png in Resources */, + 3EACC98F19EE6D4300EB3C5E /* res in Resources */, 50EF629817ECD46A001EB2F8 /* Icon-80.png in Resources */, 5087E78417EB970100C73F5D /* Icon-57.png in Resources */, 5087E77E17EB970100C73F5D /* Default.png in Resources */, + 521A8E6419F0C34300D177D7 /* Default-667h@2x.png in Resources */, 46880B7B19C43A67006E1F66 /* CloseNormal.png in Resources */, 50EF629717ECD46A001EB2F8 /* Icon-58.png in Resources */, ); @@ -467,6 +480,7 @@ 46880B8219C43A67006E1F66 /* HelloWorld.png in Resources */, 46880B8019C43A67006E1F66 /* Marker Felt.ttf in Resources */, 503AE0F817EB97AB00D1A890 /* Icon.icns in Resources */, + 3EACC99019EE6D4300EB3C5E /* res in Resources */, 46880B7C19C43A67006E1F66 /* CloseNormal.png in Resources */, 46880B7E19C43A67006E1F66 /* CloseSelected.png in Resources */, ); diff --git a/templates/cpp-template-default/proj.ios_mac/ios/Default-667h@2x.png b/templates/cpp-template-default/proj.ios_mac/ios/Default-667h@2x.png new file mode 100644 index 0000000000..a0f61ec8e6 Binary files /dev/null and b/templates/cpp-template-default/proj.ios_mac/ios/Default-667h@2x.png differ diff --git a/templates/cpp-template-default/proj.ios_mac/ios/Default-736h@3x.png b/templates/cpp-template-default/proj.ios_mac/ios/Default-736h@3x.png new file mode 100644 index 0000000000..dadccee686 Binary files /dev/null and b/templates/cpp-template-default/proj.ios_mac/ios/Default-736h@3x.png differ diff --git a/templates/cpp-template-default/proj.ios_mac/ios/Info.plist b/templates/cpp-template-default/proj.ios_mac/ios/Info.plist index 9613e3c273..5a2a98e47c 100644 --- a/templates/cpp-template-default/proj.ios_mac/ios/Info.plist +++ b/templates/cpp-template-default/proj.ios_mac/ios/Info.plist @@ -55,6 +55,89 @@ ???? CFBundleVersion 1.0 + UILaunchImages + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {414, 736} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {414, 736} + + LSRequiresIPhoneOS UIAppFonts diff --git a/templates/cpp-template-default/proj.wp8-xaml/AppComponent/HelloCppComponent.vcxproj b/templates/cpp-template-default/proj.wp8-xaml/AppComponent/HelloCppComponent.vcxproj index cb1022aa77..001e96c4c4 100644 --- a/templates/cpp-template-default/proj.wp8-xaml/AppComponent/HelloCppComponent.vcxproj +++ b/templates/cpp-template-default/proj.wp8-xaml/AppComponent/HelloCppComponent.vcxproj @@ -62,20 +62,24 @@ - - + + + - - + + + - - + + + - - + + + @@ -83,7 +87,7 @@ - WP8;_WINRT_DLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;COCOS2D_DEBUG=1;%(PreprocessorDefinitions) + CC_ENABLE_CHIPMUNK_INTEGRATION=1;COCOS2D_DEBUG=1;%(PreprocessorDefinitions) Use pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) @@ -103,7 +107,7 @@ - WP8;_WINRT_DLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) + CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) Use pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) @@ -123,7 +127,7 @@ - WP8;_WINRT_DLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;COCOS2D_DEBUG=1;%(PreprocessorDefinitions) + CC_ENABLE_CHIPMUNK_INTEGRATION=1;COCOS2D_DEBUG=1;%(PreprocessorDefinitions) Use pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) @@ -143,7 +147,7 @@ - WP8;_WINRT_DLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) + CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) Use pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) @@ -167,113 +171,42 @@ false - - - {b5af91b3-64ea-44e1-84b0-d759e93758fb} - - - {df125891-eee9-4466-b903-f828fd272158} - - - {20d4035d-fd3f-4fd3-baba-97bc1c38dfc2} - - - {51e5736e-e1a3-4c94-abb7-e92ecef9c12e} - - - {7d4fc6eb-9497-4804-98f3-3eaedc896154} - - - {7daa99e7-8e07-4fef-8374-8ec04e395d2e} - - - {88982c27-5a7b-40a8-86e7-b3187b44b322} - - - {08fb23e4-1517-4edc-b682-da238cdaa83d} - - - {04a0c42f-23bb-469b-a9d8-ca49136adbd4} - - - {c55734a3-702c-4fa1-b950-32c8e169302f} - - - - Create - Create - Create - Create - + + Create + Create + Create + Create + - + - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - + + {7c5dbc42-27f6-4978-aabc-02ba77e2a7f0} + + + {7d4fc6eb-9497-4804-98f3-3eaedc896154} + + + {c55734a3-702c-4fa1-b950-32c8e169302f} + diff --git a/templates/cpp-template-default/proj.wp8-xaml/AppComponent/HelloCppComponent.vcxproj.filters b/templates/cpp-template-default/proj.wp8-xaml/AppComponent/HelloCppComponent.vcxproj.filters index 635d66d9ae..ec4cf74ac2 100644 --- a/templates/cpp-template-default/proj.wp8-xaml/AppComponent/HelloCppComponent.vcxproj.filters +++ b/templates/cpp-template-default/proj.wp8-xaml/AppComponent/HelloCppComponent.vcxproj.filters @@ -1,21 +1,20 @@  - - platform_src + src - platform_src + src - platform_src + src - platform_src + src - platform_src + src Classes @@ -23,26 +22,28 @@ Classes + + src + - - platform_src + src - platform_src + src - platform_src + src - platform_src + src - platform_src + src - platform_src + src Classes @@ -50,27 +51,25 @@ Classes + + src + - - {6fcff44b-bb9f-4ed9-8553-558855bc91e3} - {ddb0f381-1dc4-44a0-ab28-0f672a551265} + + {6fcff44b-bb9f-4ed9-8553-558855bc91e3} + - - - - - - - - - - - - + + + + + + + \ No newline at end of file diff --git a/templates/cpp-template-default/proj.wp8-xaml/AppComponent/pch.cpp b/templates/cpp-template-default/proj.wp8-xaml/AppComponent/pch.cpp deleted file mode 100644 index bcb5590be1..0000000000 --- a/templates/cpp-template-default/proj.wp8-xaml/AppComponent/pch.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "pch.h" diff --git a/templates/cpp-template-default/proj.wp8-xaml/AppComponent/pch.h b/templates/cpp-template-default/proj.wp8-xaml/AppComponent/pch.h deleted file mode 100644 index 5e0bbb907c..0000000000 --- a/templates/cpp-template-default/proj.wp8-xaml/AppComponent/pch.h +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -#include "cocos2d.h" diff --git a/templates/cpp-template-default/proj.wp8-xaml/AppComponent/src/Cocos2dRenderer.cpp b/templates/cpp-template-default/proj.wp8-xaml/AppComponent/src/Cocos2dRenderer.cpp index 608cc6f828..d0d5a5f61c 100644 --- a/templates/cpp-template-default/proj.wp8-xaml/AppComponent/src/Cocos2dRenderer.cpp +++ b/templates/cpp-template-default/proj.wp8-xaml/AppComponent/src/Cocos2dRenderer.cpp @@ -26,7 +26,7 @@ THE SOFTWARE. #include "Cocos2dRenderer.h" #include "cocos2d.h" #include "CCApplication.h" -#include "CCGLViewImpl.h" +#include "CCGLViewImpl-wp8.h" #include "AppDelegate.h" #include @@ -56,11 +56,11 @@ void Cocos2dRenderer::CreateGLResources() GLViewImpl* glview = GLViewImpl::create("Test Cpp"); glview->Create(m_eglDisplay, m_eglContext, m_eglSurface, m_renderTargetSize.Width, m_renderTargetSize.Height,m_orientation); director->setOpenGLView(glview); - CCApplication::getInstance()->run(); glview->SetXamlEventDelegate(m_delegate); glview->SetXamlMessageBoxDelegate(m_messageBoxDelegate); glview->SetXamlEditBoxDelegate(m_editBoxDelegate); - } + CCApplication::getInstance()->run(); + } else { cocos2d::GL::invalidateStateCache(); @@ -71,7 +71,7 @@ void Cocos2dRenderer::CreateGLResources() director->getEventDispatcher()->dispatchEvent(&recreatedEvent); cocos2d::Application::getInstance()->applicationWillEnterForeground(); director->setGLDefaultValues(); - } + } m_loadingComplete = true; } diff --git a/cocos/editor-support/cocosbuilder/proj.wp8/pch.cpp b/templates/cpp-template-default/proj.wp8-xaml/AppComponent/src/pch.cpp similarity index 100% rename from cocos/editor-support/cocosbuilder/proj.wp8/pch.cpp rename to templates/cpp-template-default/proj.wp8-xaml/AppComponent/src/pch.cpp diff --git a/templates/cpp-template-default/proj.wp8-xaml/AppComponent/src/pch.h b/templates/cpp-template-default/proj.wp8-xaml/AppComponent/src/pch.h new file mode 100644 index 0000000000..5dbe96eb9f --- /dev/null +++ b/templates/cpp-template-default/proj.wp8-xaml/AppComponent/src/pch.h @@ -0,0 +1,11 @@ +#pragma once + +#include "targetver.h" + +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif + +#include +#include "cocos2d.h" +#include "cocos-ext.h" \ No newline at end of file diff --git a/templates/cpp-template-default/proj.wp8-xaml/HelloCpp.sln b/templates/cpp-template-default/proj.wp8-xaml/HelloCpp.sln index 40aa8942b1..e70edfa5b2 100644 --- a/templates/cpp-template-default/proj.wp8-xaml/HelloCpp.sln +++ b/templates/cpp-template-default/proj.wp8-xaml/HelloCpp.sln @@ -1,30 +1,18 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 +VisualStudioVersion = 12.0.30723.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HelloCpp", "App\HelloCpp.csproj", "{83CC88FE-7E79-4E1E-A129-742987130B5C}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelloCppComponent", "AppComponent\HelloCppComponent.vcxproj", "{60EC6889-C3C4-45AD-A006-47D9EE689212}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "..\cocos2d\cocos\2d\cocos2d_wp8.vcxproj", "{B5AF91B3-64EA-44E1-84B0-D759E93758FB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CocosDenshion", "..\cocos2d\cocos\audio\proj.wp8\CocosDenshion.vcxproj", "{DF125891-EEE9-4466-B903-F828FD272158}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libExtensions", "..\cocos2d\extensions\proj.wp8\libExtensions.vcxproj", "{04A0C42F-23BB-469B-A9D8-CA49136ADBD4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCocosBuilder", "..\cocos2d\cocos\editor-support\cocosbuilder\proj.wp8\libCocosBuilder.vcxproj", "{20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libCocosStudio", "..\cocos2d\cocos\editor-support\cocostudio\proj.wp8\libCocosStudio.vcxproj", "{51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libSpine", "..\cocos2d\cocos\editor-support\spine\proj.wp8\libSpine.vcxproj", "{7D4FC6EB-9497-4804-98F3-3EAEDC896154}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libLocalStorage", "..\cocos2d\cocos\storage\local-storage\proj.wp8\libLocalStorage.vcxproj", "{88982C27-5A7B-40A8-86E7-B3187B44B322}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libGUI", "..\cocos2d\cocos\ui\proj.wp8\libGUI.vcxproj", "{08FB23E4-1517-4EDC-B682-DA238CDAA83D}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "External", "External", "{1CD6A64E-A2B6-49BC-A5DC-25122C07166A}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Box2D", "..\cocos2d\external\Box2D\proj.wp8\Box2D.vcxproj", "{C55734A3-702C-4FA1-B950-32C8E169302F}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libNetwork", "..\cocos2d\cocos\network\proj.wp8\libNetwork.vcxproj", "{7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libSpine", "..\cocos2d\cocos\editor-support\spine\proj.wp8\libSpine.vcxproj", "{7D4FC6EB-9497-4804-98F3-3EAEDC896154}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d_wp8", "..\cocos2d\cocos\2d\libcocos2d_wp8.vcxproj", "{7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -88,150 +76,6 @@ Global {60EC6889-C3C4-45AD-A006-47D9EE689212}.Release|Win32.Build.0 = Release|Win32 {60EC6889-C3C4-45AD-A006-47D9EE689212}.Release|x86.ActiveCfg = Release|Win32 {60EC6889-C3C4-45AD-A006-47D9EE689212}.Release|x86.Build.0 = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|ARM.ActiveCfg = Debug|ARM - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|ARM.Build.0 = Debug|ARM - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|Win32.ActiveCfg = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|Win32.Build.0 = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|x86.ActiveCfg = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Debug|x86.Build.0 = Debug|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|Any CPU.ActiveCfg = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|ARM.ActiveCfg = Release|ARM - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|ARM.Build.0 = Release|ARM - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|Mixed Platforms.Build.0 = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|Win32.ActiveCfg = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|Win32.Build.0 = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|x86.ActiveCfg = Release|Win32 - {B5AF91B3-64EA-44E1-84B0-D759E93758FB}.Release|x86.Build.0 = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|ARM.ActiveCfg = Debug|ARM - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|ARM.Build.0 = Debug|ARM - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|Win32.ActiveCfg = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|Win32.Build.0 = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|x86.ActiveCfg = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Debug|x86.Build.0 = Debug|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|Any CPU.ActiveCfg = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|ARM.ActiveCfg = Release|ARM - {DF125891-EEE9-4466-B903-F828FD272158}.Release|ARM.Build.0 = Release|ARM - {DF125891-EEE9-4466-B903-F828FD272158}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|Mixed Platforms.Build.0 = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|Win32.ActiveCfg = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|Win32.Build.0 = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|x86.ActiveCfg = Release|Win32 - {DF125891-EEE9-4466-B903-F828FD272158}.Release|x86.Build.0 = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|ARM.ActiveCfg = Debug|ARM - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|ARM.Build.0 = Debug|ARM - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|Win32.ActiveCfg = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|Win32.Build.0 = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|x86.ActiveCfg = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Debug|x86.Build.0 = Debug|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|Any CPU.ActiveCfg = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|ARM.ActiveCfg = Release|ARM - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|ARM.Build.0 = Release|ARM - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|Mixed Platforms.Build.0 = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|Win32.ActiveCfg = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|Win32.Build.0 = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|x86.ActiveCfg = Release|Win32 - {04A0C42F-23BB-469B-A9D8-CA49136ADBD4}.Release|x86.Build.0 = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|ARM.ActiveCfg = Debug|ARM - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|ARM.Build.0 = Debug|ARM - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|Win32.ActiveCfg = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|Win32.Build.0 = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|x86.ActiveCfg = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Debug|x86.Build.0 = Debug|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|Any CPU.ActiveCfg = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|ARM.ActiveCfg = Release|ARM - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|ARM.Build.0 = Release|ARM - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|Mixed Platforms.Build.0 = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|Win32.ActiveCfg = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|Win32.Build.0 = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|x86.ActiveCfg = Release|Win32 - {20D4035D-FD3F-4FD3-BABA-97BC1C38DFC2}.Release|x86.Build.0 = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|ARM.ActiveCfg = Debug|ARM - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|ARM.Build.0 = Debug|ARM - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|Win32.ActiveCfg = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|Win32.Build.0 = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|x86.ActiveCfg = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Debug|x86.Build.0 = Debug|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|Any CPU.ActiveCfg = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|ARM.ActiveCfg = Release|ARM - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|ARM.Build.0 = Release|ARM - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|Mixed Platforms.Build.0 = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|Win32.ActiveCfg = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|Win32.Build.0 = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|x86.ActiveCfg = Release|Win32 - {51E5736E-E1A3-4C94-ABB7-E92ECEF9C12E}.Release|x86.Build.0 = Release|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|ARM.ActiveCfg = Debug|ARM - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|ARM.Build.0 = Debug|ARM - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|Win32.ActiveCfg = Debug|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|Win32.Build.0 = Debug|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|x86.ActiveCfg = Debug|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|x86.Build.0 = Debug|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|Any CPU.ActiveCfg = Release|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|ARM.ActiveCfg = Release|ARM - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|ARM.Build.0 = Release|ARM - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|Mixed Platforms.Build.0 = Release|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|Win32.ActiveCfg = Release|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|Win32.Build.0 = Release|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|x86.ActiveCfg = Release|Win32 - {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|x86.Build.0 = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|ARM.ActiveCfg = Debug|ARM - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|ARM.Build.0 = Debug|ARM - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|Win32.ActiveCfg = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|Win32.Build.0 = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|x86.ActiveCfg = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Debug|x86.Build.0 = Debug|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|Any CPU.ActiveCfg = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|ARM.ActiveCfg = Release|ARM - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|ARM.Build.0 = Release|ARM - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|Mixed Platforms.Build.0 = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|Win32.ActiveCfg = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|Win32.Build.0 = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|x86.ActiveCfg = Release|Win32 - {88982C27-5A7B-40A8-86E7-B3187B44B322}.Release|x86.Build.0 = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|ARM.ActiveCfg = Debug|ARM - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|ARM.Build.0 = Debug|ARM - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|Win32.ActiveCfg = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|Win32.Build.0 = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|x86.ActiveCfg = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Debug|x86.Build.0 = Debug|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|Any CPU.ActiveCfg = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|ARM.ActiveCfg = Release|ARM - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|ARM.Build.0 = Release|ARM - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|Mixed Platforms.Build.0 = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|Win32.ActiveCfg = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|Win32.Build.0 = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|x86.ActiveCfg = Release|Win32 - {08FB23E4-1517-4EDC-B682-DA238CDAA83D}.Release|x86.Build.0 = Release|Win32 {C55734A3-702C-4FA1-B950-32C8E169302F}.Debug|Any CPU.ActiveCfg = Debug|Win32 {C55734A3-702C-4FA1-B950-32C8E169302F}.Debug|ARM.ActiveCfg = Debug|ARM {C55734A3-702C-4FA1-B950-32C8E169302F}.Debug|ARM.Build.0 = Debug|ARM @@ -250,26 +94,48 @@ Global {C55734A3-702C-4FA1-B950-32C8E169302F}.Release|Win32.Build.0 = Release|Win32 {C55734A3-702C-4FA1-B950-32C8E169302F}.Release|x86.ActiveCfg = Release|Win32 {C55734A3-702C-4FA1-B950-32C8E169302F}.Release|x86.Build.0 = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|ARM.ActiveCfg = Debug|ARM - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|ARM.Build.0 = Debug|ARM - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|Mixed Platforms.Build.0 = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|Win32.ActiveCfg = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|Win32.Build.0 = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|x86.ActiveCfg = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Debug|x86.Build.0 = Debug|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|Any CPU.ActiveCfg = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|ARM.ActiveCfg = Release|ARM - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|ARM.Build.0 = Release|ARM - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|Mixed Platforms.ActiveCfg = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|Mixed Platforms.Build.0 = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|Win32.ActiveCfg = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|Win32.Build.0 = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|x86.ActiveCfg = Release|Win32 - {7DAA99E7-8E07-4FEF-8374-8EC04E395D2E}.Release|x86.Build.0 = Release|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|ARM.ActiveCfg = Debug|ARM + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|ARM.Build.0 = Debug|ARM + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|Win32.ActiveCfg = Debug|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|Win32.Build.0 = Debug|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|x86.ActiveCfg = Debug|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Debug|x86.Build.0 = Debug|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|Any CPU.ActiveCfg = Release|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|ARM.ActiveCfg = Release|ARM + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|ARM.Build.0 = Release|ARM + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|Mixed Platforms.Build.0 = Release|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|Win32.ActiveCfg = Release|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|Win32.Build.0 = Release|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|x86.ActiveCfg = Release|Win32 + {7D4FC6EB-9497-4804-98F3-3EAEDC896154}.Release|x86.Build.0 = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|ARM.ActiveCfg = Debug|ARM + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|ARM.Build.0 = Debug|ARM + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|Win32.ActiveCfg = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|Win32.Build.0 = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|x86.ActiveCfg = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Debug|x86.Build.0 = Debug|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|Any CPU.ActiveCfg = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|ARM.ActiveCfg = Release|ARM + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|ARM.Build.0 = Release|ARM + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|Mixed Platforms.Build.0 = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|Win32.ActiveCfg = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|Win32.Build.0 = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|x86.ActiveCfg = Release|Win32 + {7C5DBC42-27F6-4978-AABC-02BA77E2A7F0}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {C55734A3-702C-4FA1-B950-32C8E169302F} = {1CD6A64E-A2B6-49BC-A5DC-25122C07166A} + {7D4FC6EB-9497-4804-98F3-3EAEDC896154} = {1CD6A64E-A2B6-49BC-A5DC-25122C07166A} + EndGlobalSection EndGlobal diff --git a/templates/lua-template-default/cocos-project-template.json b/templates/lua-template-default/cocos-project-template.json index 0eac97ab0f..fa03173624 100644 --- a/templates/lua-template-default/cocos-project-template.json +++ b/templates/lua-template-default/cocos-project-template.json @@ -2,6 +2,13 @@ "do_default":{ "exclude_from_template":[ "frameworks/runtime-src" + ], + "append_dir": [ + { + "from": "cocos/scripting/lua-bindings/script", + "to": "src/cocos", + "exclude": [] + } ] }, "do_add_native_support":{ diff --git a/templates/lua-template-default/frameworks/CMakeLists.txt b/templates/lua-template-default/frameworks/CMakeLists.txt index 1935a83e56..f15068fef4 100644 --- a/templates/lua-template-default/frameworks/CMakeLists.txt +++ b/templates/lua-template-default/frameworks/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8) set(APP_NAME HelloLua) project (${APP_NAME}) -include(cocos2d-x/build/BuildHelpers.CMakeLists.txt) +include(cocos2d-x/cmake/BuildHelpers.CMakeLists.txt) option(DEBUG_MODE "Debug or release?" ON) @@ -78,6 +78,14 @@ link_directories( ${COCOS2D_ROOT}/external/chipmunk/prebuilt/linux/${ARCH_DIR} ) +# build for 3rd party libraries +if(LINUX) +add_subdirectory(${COCOS2D_ROOT}/external/Box2D) +add_subdirectory(${COCOS2D_ROOT}/external/unzip) +add_subdirectory(${COCOS2D_ROOT}/external/xxhash) +add_subdirectory(${COCOS2D_ROOT}/external/tinyxml2) +endif() + # libcocos2d add_subdirectory(${COCOS2D_ROOT}/cocos) diff --git a/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.cpp b/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.cpp index 5db5d224a0..95b4147a41 100644 --- a/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.cpp +++ b/templates/lua-template-default/frameworks/runtime-src/Classes/AppDelegate.cpp @@ -35,6 +35,10 @@ bool AppDelegate::applicationDidFinishLaunching() ScriptEngineManager::getInstance()->setScriptEngine(engine); lua_State* L = engine->getLuaStack()->getLuaState(); lua_module_register(L); + + // If you want to use Quick-Cocos2d-X, please uncomment below code + // register_all_quick_manual(L); + if (engine->executeScriptFile("src/main.lua")) { return false; } diff --git a/templates/lua-template-default/frameworks/runtime-src/Classes/lua_module_register.h b/templates/lua-template-default/frameworks/runtime-src/Classes/lua_module_register.h index 40dd7dd00f..202e56e99a 100644 --- a/templates/lua-template-default/frameworks/runtime-src/Classes/lua_module_register.h +++ b/templates/lua-template-default/frameworks/runtime-src/Classes/lua_module_register.h @@ -10,6 +10,7 @@ #include "spine/lua_cocos2dx_spine_manual.hpp" #include "3d/lua_cocos2dx_3d_manual.h" #include "audioengine/lua_cocos2dx_audioengine_manual.h" +#include "lua/quick/lua_cocos2dx_quick_manual.hpp" int lua_module_register(lua_State* L) { diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.android/build-cfg.json b/templates/lua-template-default/frameworks/runtime-src/proj.android/build-cfg.json index 82ee655658..e63488b974 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.android/build-cfg.json +++ b/templates/lua-template-default/frameworks/runtime-src/proj.android/build-cfg.json @@ -14,37 +14,9 @@ "from": "../../../res", "to": "res" }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosbuilder", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/network", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui", - "to": "" - }, { "from": "../../cocos2d-x/external/lua/luasocket", - "to": "", + "to": "src", "include": [ "*.lua" ] diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj index 98383bf5e2..1d94185add 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj +++ b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj @@ -13,77 +13,7 @@ 15427C79198F1FA200DC375D /* libluacocos2d Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15427C49198F1DE400DC375D /* libluacocos2d Mac.a */; }; 15A8A4491834C64F00142BE0 /* Icon-114.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023810C17EBBCAC00990C9B /* Icon-114.png */; }; 15A8A4881834C90F00142BE0 /* libcurl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A8A4871834C90E00142BE0 /* libcurl.dylib */; }; - 15AA96B6199C668400725633 /* CCBReaderLoad.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96B4199C668400725633 /* CCBReaderLoad.lua */; }; - 15AA96B7199C668400725633 /* CCBReaderLoad.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96B4199C668400725633 /* CCBReaderLoad.lua */; }; - 15AA96B8199C668400725633 /* DeprecatedCocosBuilderClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96B5199C668400725633 /* DeprecatedCocosBuilderClass.lua */; }; - 15AA96B9199C668400725633 /* DeprecatedCocosBuilderClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96B5199C668400725633 /* DeprecatedCocosBuilderClass.lua */; }; - 15AA96BE199C66A100725633 /* CocoStudio.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96BA199C66A100725633 /* CocoStudio.lua */; }; - 15AA96BF199C66A100725633 /* CocoStudio.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96BA199C66A100725633 /* CocoStudio.lua */; }; - 15AA96C0199C66A100725633 /* DeprecatedCocoStudioClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96BB199C66A100725633 /* DeprecatedCocoStudioClass.lua */; }; - 15AA96C1199C66A100725633 /* DeprecatedCocoStudioClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96BB199C66A100725633 /* DeprecatedCocoStudioClass.lua */; }; - 15AA96C2199C66A100725633 /* DeprecatedCocoStudioFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96BC199C66A100725633 /* DeprecatedCocoStudioFunc.lua */; }; - 15AA96C3199C66A100725633 /* DeprecatedCocoStudioFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96BC199C66A100725633 /* DeprecatedCocoStudioFunc.lua */; }; - 15AA96C4199C66A100725633 /* StudioConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96BD199C66A100725633 /* StudioConstants.lua */; }; - 15AA96C5199C66A100725633 /* StudioConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96BD199C66A100725633 /* StudioConstants.lua */; }; - 15AA96CA199C66B500725633 /* DeprecatedExtensionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96C6199C66B500725633 /* DeprecatedExtensionClass.lua */; }; - 15AA96CB199C66B500725633 /* DeprecatedExtensionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96C6199C66B500725633 /* DeprecatedExtensionClass.lua */; }; - 15AA96CC199C66B500725633 /* DeprecatedExtensionEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96C7199C66B500725633 /* DeprecatedExtensionEnum.lua */; }; - 15AA96CD199C66B500725633 /* DeprecatedExtensionEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96C7199C66B500725633 /* DeprecatedExtensionEnum.lua */; }; - 15AA96CE199C66B500725633 /* DeprecatedExtensionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96C8199C66B500725633 /* DeprecatedExtensionFunc.lua */; }; - 15AA96CF199C66B500725633 /* DeprecatedExtensionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96C8199C66B500725633 /* DeprecatedExtensionFunc.lua */; }; - 15AA96D0199C66B500725633 /* ExtensionConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96C9199C66B500725633 /* ExtensionConstants.lua */; }; - 15AA96D1199C66B500725633 /* ExtensionConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96C9199C66B500725633 /* ExtensionConstants.lua */; }; - 15AA96D6199C66D500725633 /* DeprecatedNetworkClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96D2199C66D500725633 /* DeprecatedNetworkClass.lua */; }; - 15AA96D7199C66D500725633 /* DeprecatedNetworkClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96D2199C66D500725633 /* DeprecatedNetworkClass.lua */; }; - 15AA96D8199C66D500725633 /* DeprecatedNetworkEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96D3199C66D500725633 /* DeprecatedNetworkEnum.lua */; }; - 15AA96D9199C66D500725633 /* DeprecatedNetworkEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96D3199C66D500725633 /* DeprecatedNetworkEnum.lua */; }; - 15AA96DA199C66D500725633 /* DeprecatedNetworkFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96D4199C66D500725633 /* DeprecatedNetworkFunc.lua */; }; - 15AA96DB199C66D500725633 /* DeprecatedNetworkFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96D4199C66D500725633 /* DeprecatedNetworkFunc.lua */; }; - 15AA96DC199C66D500725633 /* NetworkConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96D5199C66D500725633 /* NetworkConstants.lua */; }; - 15AA96DD199C66D500725633 /* NetworkConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96D5199C66D500725633 /* NetworkConstants.lua */; }; - 15AA96E2199C66E600725633 /* DeprecatedUIEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96DE199C66E600725633 /* DeprecatedUIEnum.lua */; }; - 15AA96E3199C66E600725633 /* DeprecatedUIEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96DE199C66E600725633 /* DeprecatedUIEnum.lua */; }; - 15AA96E4199C66E600725633 /* DeprecatedUIFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96DF199C66E600725633 /* DeprecatedUIFunc.lua */; }; - 15AA96E5199C66E600725633 /* DeprecatedUIFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96DF199C66E600725633 /* DeprecatedUIFunc.lua */; }; - 15AA96E6199C66E600725633 /* experimentalUIConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96E0199C66E600725633 /* experimentalUIConstants.lua */; }; - 15AA96E7199C66E600725633 /* experimentalUIConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96E0199C66E600725633 /* experimentalUIConstants.lua */; }; - 15AA96E8199C66E600725633 /* GuiConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96E1199C66E600725633 /* GuiConstants.lua */; }; - 15AA96E9199C66E600725633 /* GuiConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA96E1199C66E600725633 /* GuiConstants.lua */; }; 15AECE29195D482800907DB0 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15AECE28195D482800907DB0 /* MediaPlayer.framework */; }; - 15D1FE491998730800302043 /* bitExtend.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE3B1998730800302043 /* bitExtend.lua */; }; - 15D1FE4A1998730800302043 /* bitExtend.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE3B1998730800302043 /* bitExtend.lua */; }; - 15D1FE4B1998730800302043 /* Cocos2d.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE3C1998730800302043 /* Cocos2d.lua */; }; - 15D1FE4C1998730800302043 /* Cocos2d.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE3C1998730800302043 /* Cocos2d.lua */; }; - 15D1FE4D1998730800302043 /* Cocos2dConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE3D1998730800302043 /* Cocos2dConstants.lua */; }; - 15D1FE4E1998730800302043 /* Cocos2dConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE3D1998730800302043 /* Cocos2dConstants.lua */; }; - 15D1FE4F1998730800302043 /* DeprecatedCocos2dClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE3E1998730800302043 /* DeprecatedCocos2dClass.lua */; }; - 15D1FE501998730800302043 /* DeprecatedCocos2dClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE3E1998730800302043 /* DeprecatedCocos2dClass.lua */; }; - 15D1FE511998730800302043 /* DeprecatedCocos2dEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE3F1998730800302043 /* DeprecatedCocos2dEnum.lua */; }; - 15D1FE521998730800302043 /* DeprecatedCocos2dEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE3F1998730800302043 /* DeprecatedCocos2dEnum.lua */; }; - 15D1FE531998730800302043 /* DeprecatedCocos2dFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE401998730800302043 /* DeprecatedCocos2dFunc.lua */; }; - 15D1FE541998730800302043 /* DeprecatedCocos2dFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE401998730800302043 /* DeprecatedCocos2dFunc.lua */; }; - 15D1FE551998730800302043 /* DeprecatedOpenglEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE411998730800302043 /* DeprecatedOpenglEnum.lua */; }; - 15D1FE561998730800302043 /* DeprecatedOpenglEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE411998730800302043 /* DeprecatedOpenglEnum.lua */; }; - 15D1FE571998730800302043 /* DrawPrimitives.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE421998730800302043 /* DrawPrimitives.lua */; }; - 15D1FE581998730800302043 /* DrawPrimitives.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE421998730800302043 /* DrawPrimitives.lua */; }; - 15D1FE591998730800302043 /* extern.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE431998730800302043 /* extern.lua */; }; - 15D1FE5A1998730800302043 /* extern.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE431998730800302043 /* extern.lua */; }; - 15D1FE5B1998730800302043 /* json.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE441998730800302043 /* json.lua */; }; - 15D1FE5C1998730800302043 /* json.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE441998730800302043 /* json.lua */; }; - 15D1FE5D1998730800302043 /* luaj.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE451998730800302043 /* luaj.lua */; }; - 15D1FE5E1998730800302043 /* luaj.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE451998730800302043 /* luaj.lua */; }; - 15D1FE5F1998730800302043 /* luaoc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE461998730800302043 /* luaoc.lua */; }; - 15D1FE601998730800302043 /* luaoc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE461998730800302043 /* luaoc.lua */; }; - 15D1FE611998730800302043 /* Opengl.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE471998730800302043 /* Opengl.lua */; }; - 15D1FE621998730800302043 /* Opengl.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE471998730800302043 /* Opengl.lua */; }; - 15D1FE631998730800302043 /* OpenglConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE481998730800302043 /* OpenglConstants.lua */; }; - 15D1FE641998730800302043 /* OpenglConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE481998730800302043 /* OpenglConstants.lua */; }; - 15D1FE681998732700302043 /* AudioEngine.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE651998732700302043 /* AudioEngine.lua */; }; - 15D1FE691998732700302043 /* AudioEngine.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE651998732700302043 /* AudioEngine.lua */; }; - 15D1FE6A1998732700302043 /* DeprecatedCocosDenshionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE661998732700302043 /* DeprecatedCocosDenshionClass.lua */; }; - 15D1FE6B1998732700302043 /* DeprecatedCocosDenshionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE661998732700302043 /* DeprecatedCocosDenshionClass.lua */; }; - 15D1FE6C1998732700302043 /* DeprecatedCocosDenshionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE671998732700302043 /* DeprecatedCocosDenshionFunc.lua */; }; - 15D1FE6D1998732700302043 /* DeprecatedCocosDenshionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE671998732700302043 /* DeprecatedCocosDenshionFunc.lua */; }; 1AF4C403178663F200122817 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AF4C402178663F200122817 /* libz.dylib */; }; 5023811817EBBCAC00990C9B /* AppController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5023810817EBBCAC00990C9B /* AppController.mm */; }; 5023811917EBBCAC00990C9B /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023810917EBBCAC00990C9B /* Default-568h@2x.png */; }; @@ -116,6 +46,8 @@ 50D7C96C17EBBEDF005D0B91 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50D7C96B17EBBEDF005D0B91 /* OpenGL.framework */; }; 50D7C96E17EBBEE6005D0B91 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50D7C96D17EBBEE6005D0B91 /* AppKit.framework */; }; 50D7C97017EBBEEC005D0B91 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50D7C96F17EBBEEC005D0B91 /* IOKit.framework */; }; + 521A8E6A19F0C3AC00D177D7 /* Default-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 521A8E6819F0C3AC00D177D7 /* Default-667h@2x.png */; }; + 521A8E6B19F0C3AC00D177D7 /* Default-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 521A8E6919F0C3AC00D177D7 /* Default-736h@3x.png */; }; C03781B918BF655400FE4F13 /* res in Resources */ = {isa = PBXBuildFile; fileRef = C03781B718BF655400FE4F13 /* res */; }; C03781BA18BF655400FE4F13 /* res in Resources */ = {isa = PBXBuildFile; fileRef = C03781B718BF655400FE4F13 /* res */; }; C03781BB18BF655400FE4F13 /* src in Resources */ = {isa = PBXBuildFile; fileRef = C03781B818BF655400FE4F13 /* src */; }; @@ -194,43 +126,8 @@ 15427C7E198F201A00DC375D /* lua_module_register.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lua_module_register.h; path = ../Classes/lua_module_register.h; sourceTree = ""; }; 15A8A4031834BDA200142BE0 /* cocos2d_libs.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2d_libs.xcodeproj; path = "../../cocos2d-x/build/cocos2d_libs.xcodeproj"; sourceTree = ""; }; 15A8A4871834C90E00142BE0 /* libcurl.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcurl.dylib; path = usr/lib/libcurl.dylib; sourceTree = SDKROOT; }; - 15AA96B4199C668400725633 /* CCBReaderLoad.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CCBReaderLoad.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosbuilder/CCBReaderLoad.lua"; sourceTree = ""; }; - 15AA96B5199C668400725633 /* DeprecatedCocosBuilderClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocosBuilderClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosbuilder/DeprecatedCocosBuilderClass.lua"; sourceTree = ""; }; - 15AA96BA199C66A100725633 /* CocoStudio.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CocoStudio.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio/CocoStudio.lua"; sourceTree = ""; }; - 15AA96BB199C66A100725633 /* DeprecatedCocoStudioClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocoStudioClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio/DeprecatedCocoStudioClass.lua"; sourceTree = ""; }; - 15AA96BC199C66A100725633 /* DeprecatedCocoStudioFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocoStudioFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio/DeprecatedCocoStudioFunc.lua"; sourceTree = ""; }; - 15AA96BD199C66A100725633 /* StudioConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = StudioConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio/StudioConstants.lua"; sourceTree = ""; }; - 15AA96C6199C66B500725633 /* DeprecatedExtensionClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedExtensionClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionClass.lua"; sourceTree = ""; }; - 15AA96C7199C66B500725633 /* DeprecatedExtensionEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedExtensionEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionEnum.lua"; sourceTree = ""; }; - 15AA96C8199C66B500725633 /* DeprecatedExtensionFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedExtensionFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionFunc.lua"; sourceTree = ""; }; - 15AA96C9199C66B500725633 /* ExtensionConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ExtensionConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension/ExtensionConstants.lua"; sourceTree = ""; }; - 15AA96D2199C66D500725633 /* DeprecatedNetworkClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedNetworkClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/network/DeprecatedNetworkClass.lua"; sourceTree = ""; }; - 15AA96D3199C66D500725633 /* DeprecatedNetworkEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedNetworkEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/network/DeprecatedNetworkEnum.lua"; sourceTree = ""; }; - 15AA96D4199C66D500725633 /* DeprecatedNetworkFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedNetworkFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/network/DeprecatedNetworkFunc.lua"; sourceTree = ""; }; - 15AA96D5199C66D500725633 /* NetworkConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NetworkConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/network/NetworkConstants.lua"; sourceTree = ""; }; - 15AA96DE199C66E600725633 /* DeprecatedUIEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedUIEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui/DeprecatedUIEnum.lua"; sourceTree = ""; }; - 15AA96DF199C66E600725633 /* DeprecatedUIFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedUIFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui/DeprecatedUIFunc.lua"; sourceTree = ""; }; - 15AA96E0199C66E600725633 /* experimentalUIConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = experimentalUIConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui/experimentalUIConstants.lua"; sourceTree = ""; }; - 15AA96E1199C66E600725633 /* GuiConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = GuiConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui/GuiConstants.lua"; sourceTree = ""; }; 15AECE28195D482800907DB0 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/MediaPlayer.framework; sourceTree = DEVELOPER_DIR; }; 15C1568D1683131500D239F2 /* libcurl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcurl.a; path = "../../cocos2d-x/cocos2dx/platform/third_party/ios/libraries/libcurl.a"; sourceTree = ""; }; - 15D1FE3B1998730800302043 /* bitExtend.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = bitExtend.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/bitExtend.lua"; sourceTree = ""; }; - 15D1FE3C1998730800302043 /* Cocos2d.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Cocos2d.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/Cocos2d.lua"; sourceTree = ""; }; - 15D1FE3D1998730800302043 /* Cocos2dConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Cocos2dConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/Cocos2dConstants.lua"; sourceTree = ""; }; - 15D1FE3E1998730800302043 /* DeprecatedCocos2dClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocos2dClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dClass.lua"; sourceTree = ""; }; - 15D1FE3F1998730800302043 /* DeprecatedCocos2dEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocos2dEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dEnum.lua"; sourceTree = ""; }; - 15D1FE401998730800302043 /* DeprecatedCocos2dFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocos2dFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dFunc.lua"; sourceTree = ""; }; - 15D1FE411998730800302043 /* DeprecatedOpenglEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedOpenglEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedOpenglEnum.lua"; sourceTree = ""; }; - 15D1FE421998730800302043 /* DrawPrimitives.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DrawPrimitives.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DrawPrimitives.lua"; sourceTree = ""; }; - 15D1FE431998730800302043 /* extern.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = extern.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/extern.lua"; sourceTree = ""; }; - 15D1FE441998730800302043 /* json.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = json.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/json.lua"; sourceTree = ""; }; - 15D1FE451998730800302043 /* luaj.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = luaj.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/luaj.lua"; sourceTree = ""; }; - 15D1FE461998730800302043 /* luaoc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = luaoc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/luaoc.lua"; sourceTree = ""; }; - 15D1FE471998730800302043 /* Opengl.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Opengl.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/Opengl.lua"; sourceTree = ""; }; - 15D1FE481998730800302043 /* OpenglConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = OpenglConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/OpenglConstants.lua"; sourceTree = ""; }; - 15D1FE651998732700302043 /* AudioEngine.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = AudioEngine.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion/AudioEngine.lua"; sourceTree = ""; }; - 15D1FE661998732700302043 /* DeprecatedCocosDenshionClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocosDenshionClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion/DeprecatedCocosDenshionClass.lua"; sourceTree = ""; }; - 15D1FE671998732700302043 /* DeprecatedCocosDenshionFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocosDenshionFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion/DeprecatedCocosDenshionFunc.lua"; sourceTree = ""; }; 1AF4C402178663F200122817 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 5023810717EBBCAC00990C9B /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = ""; }; 5023810817EBBCAC00990C9B /* AppController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AppController.mm; sourceTree = ""; }; @@ -264,6 +161,8 @@ 50D7C96B17EBBEDF005D0B91 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; 50D7C96D17EBBEE6005D0B91 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 50D7C96F17EBBEEC005D0B91 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; + 521A8E6819F0C3AC00D177D7 /* Default-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h@2x.png"; sourceTree = ""; }; + 521A8E6919F0C3AC00D177D7 /* Default-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h@3x.png"; sourceTree = ""; }; C03781AE18BF654500FE4F13 /* cocos2d_lua_bindings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2d_lua_bindings.xcodeproj; path = "../../cocos2d-x/cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj"; sourceTree = ""; }; C03781B718BF655400FE4F13 /* res */ = {isa = PBXFileReference; lastKnownFileType = folder; name = res; path = ../../../res; sourceTree = ""; }; C03781B818BF655400FE4F13 /* src */ = {isa = PBXFileReference; lastKnownFileType = folder; name = src; path = ../../../src; sourceTree = ""; }; @@ -334,51 +233,11 @@ name = Products; sourceTree = ""; }; - 1A0227A417A3AA1A00B867AD /* Lua Common */ = { - isa = PBXGroup; - children = ( - 15AA96DE199C66E600725633 /* DeprecatedUIEnum.lua */, - 15AA96DF199C66E600725633 /* DeprecatedUIFunc.lua */, - 15AA96E0199C66E600725633 /* experimentalUIConstants.lua */, - 15AA96E1199C66E600725633 /* GuiConstants.lua */, - 15AA96D2199C66D500725633 /* DeprecatedNetworkClass.lua */, - 15AA96D3199C66D500725633 /* DeprecatedNetworkEnum.lua */, - 15AA96D4199C66D500725633 /* DeprecatedNetworkFunc.lua */, - 15AA96D5199C66D500725633 /* NetworkConstants.lua */, - 15AA96C6199C66B500725633 /* DeprecatedExtensionClass.lua */, - 15AA96C7199C66B500725633 /* DeprecatedExtensionEnum.lua */, - 15AA96C8199C66B500725633 /* DeprecatedExtensionFunc.lua */, - 15AA96C9199C66B500725633 /* ExtensionConstants.lua */, - 15AA96BA199C66A100725633 /* CocoStudio.lua */, - 15AA96BB199C66A100725633 /* DeprecatedCocoStudioClass.lua */, - 15AA96BC199C66A100725633 /* DeprecatedCocoStudioFunc.lua */, - 15AA96BD199C66A100725633 /* StudioConstants.lua */, - 15AA96B4199C668400725633 /* CCBReaderLoad.lua */, - 15AA96B5199C668400725633 /* DeprecatedCocosBuilderClass.lua */, - 15D1FE651998732700302043 /* AudioEngine.lua */, - 15D1FE661998732700302043 /* DeprecatedCocosDenshionClass.lua */, - 15D1FE671998732700302043 /* DeprecatedCocosDenshionFunc.lua */, - 15D1FE3B1998730800302043 /* bitExtend.lua */, - 15D1FE3C1998730800302043 /* Cocos2d.lua */, - 15D1FE3D1998730800302043 /* Cocos2dConstants.lua */, - 15D1FE3E1998730800302043 /* DeprecatedCocos2dClass.lua */, - 15D1FE3F1998730800302043 /* DeprecatedCocos2dEnum.lua */, - 15D1FE401998730800302043 /* DeprecatedCocos2dFunc.lua */, - 15D1FE411998730800302043 /* DeprecatedOpenglEnum.lua */, - 15D1FE421998730800302043 /* DrawPrimitives.lua */, - 15D1FE431998730800302043 /* extern.lua */, - 15D1FE441998730800302043 /* json.lua */, - 15D1FE451998730800302043 /* luaj.lua */, - 15D1FE461998730800302043 /* luaoc.lua */, - 15D1FE471998730800302043 /* Opengl.lua */, - 15D1FE481998730800302043 /* OpenglConstants.lua */, - ); - name = "Lua Common"; - sourceTree = ""; - }; 5023810617EBBCAC00990C9B /* ios */ = { isa = PBXGroup; children = ( + 521A8E6819F0C3AC00D177D7 /* Default-667h@2x.png */, + 521A8E6919F0C3AC00D177D7 /* Default-736h@3x.png */, 5023810717EBBCAC00990C9B /* AppController.h */, 5023810817EBBCAC00990C9B /* AppController.mm */, 5023810917EBBCAC00990C9B /* Default-568h@2x.png */, @@ -443,7 +302,6 @@ 5023817117EBBE3400990C9B /* mac */, F293BB7C15EB830F00256477 /* Classes */, F293B3CB15EB7BE500256477 /* Frameworks */, - 1A0227A417A3AA1A00B867AD /* Lua Common */, F293B3C915EB7BE500256477 /* Products */, F293BC4615EB859D00256477 /* Resources */, ); @@ -623,44 +481,9 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 15D1FE4A1998730800302043 /* bitExtend.lua in Resources */, - 15D1FE561998730800302043 /* DeprecatedOpenglEnum.lua in Resources */, - 15D1FE641998730800302043 /* OpenglConstants.lua in Resources */, - 15D1FE541998730800302043 /* DeprecatedCocos2dFunc.lua in Resources */, C03781BA18BF655400FE4F13 /* res in Resources */, - 15D1FE691998732700302043 /* AudioEngine.lua in Resources */, - 15AA96C5199C66A100725633 /* StudioConstants.lua in Resources */, - 15D1FE601998730800302043 /* luaoc.lua in Resources */, - 15AA96D1199C66B500725633 /* ExtensionConstants.lua in Resources */, - 15D1FE5E1998730800302043 /* luaj.lua in Resources */, - 15D1FE6B1998732700302043 /* DeprecatedCocosDenshionClass.lua in Resources */, - 15D1FE5A1998730800302043 /* extern.lua in Resources */, - 15D1FE501998730800302043 /* DeprecatedCocos2dClass.lua in Resources */, - 15D1FE581998730800302043 /* DrawPrimitives.lua in Resources */, - 15AA96CF199C66B500725633 /* DeprecatedExtensionFunc.lua in Resources */, - 15AA96E7199C66E600725633 /* experimentalUIConstants.lua in Resources */, - 15AA96CB199C66B500725633 /* DeprecatedExtensionClass.lua in Resources */, - 15AA96E3199C66E600725633 /* DeprecatedUIEnum.lua in Resources */, - 15AA96B7199C668400725633 /* CCBReaderLoad.lua in Resources */, - 15D1FE5C1998730800302043 /* json.lua in Resources */, - 15AA96E5199C66E600725633 /* DeprecatedUIFunc.lua in Resources */, - 15D1FE4E1998730800302043 /* Cocos2dConstants.lua in Resources */, - 15D1FE521998730800302043 /* DeprecatedCocos2dEnum.lua in Resources */, - 15AA96C1199C66A100725633 /* DeprecatedCocoStudioClass.lua in Resources */, - 15AA96C3199C66A100725633 /* DeprecatedCocoStudioFunc.lua in Resources */, - 15D1FE6D1998732700302043 /* DeprecatedCocosDenshionFunc.lua in Resources */, - 15D1FE4C1998730800302043 /* Cocos2d.lua in Resources */, - 15AA96CD199C66B500725633 /* DeprecatedExtensionEnum.lua in Resources */, - 15AA96DD199C66D500725633 /* NetworkConstants.lua in Resources */, - 15AA96D9199C66D500725633 /* DeprecatedNetworkEnum.lua in Resources */, - 15AA96E9199C66E600725633 /* GuiConstants.lua in Resources */, - 15AA96D7199C66D500725633 /* DeprecatedNetworkClass.lua in Resources */, C03781BC18BF655400FE4F13 /* src in Resources */, 5023817617EBBE3400990C9B /* Icon.icns in Resources */, - 15AA96BF199C66A100725633 /* CocoStudio.lua in Resources */, - 15AA96B9199C668400725633 /* DeprecatedCocosBuilderClass.lua in Resources */, - 15D1FE621998730800302043 /* Opengl.lua in Resources */, - 15AA96DB199C66D500725633 /* DeprecatedNetworkFunc.lua in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -668,59 +491,26 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 15AA96E6199C66E600725633 /* experimentalUIConstants.lua in Resources */, 15A8A4491834C64F00142BE0 /* Icon-114.png in Resources */, 5023811D17EBBCAC00990C9B /* Icon-120.png in Resources */, 5091733B17ECE17A00D62437 /* Icon-100.png in Resources */, 5023811B17EBBCAC00990C9B /* Default@2x.png in Resources */, - 15AA96BE199C66A100725633 /* CocoStudio.lua in Resources */, 5091733617ECE17A00D62437 /* Icon-29.png in Resources */, - 15D1FE631998730800302043 /* OpenglConstants.lua in Resources */, - 15D1FE5D1998730800302043 /* luaj.lua in Resources */, - 15AA96D0199C66B500725633 /* ExtensionConstants.lua in Resources */, 5023811917EBBCAC00990C9B /* Default-568h@2x.png in Resources */, 5091733917ECE17A00D62437 /* Icon-58.png in Resources */, + 521A8E6B19F0C3AC00D177D7 /* Default-736h@3x.png in Resources */, + 521A8E6A19F0C3AC00D177D7 /* Default-667h@2x.png in Resources */, 5023811F17EBBCAC00990C9B /* Icon-152.png in Resources */, 5023812017EBBCAC00990C9B /* Icon-57.png in Resources */, C03781B918BF655400FE4F13 /* res in Resources */, - 15D1FE5B1998730800302043 /* json.lua in Resources */, 5023812217EBBCAC00990C9B /* Icon-76.png in Resources */, - 15AA96E2199C66E600725633 /* DeprecatedUIEnum.lua in Resources */, - 15D1FE681998732700302043 /* AudioEngine.lua in Resources */, - 15AA96E8199C66E600725633 /* GuiConstants.lua in Resources */, - 15AA96CA199C66B500725633 /* DeprecatedExtensionClass.lua in Resources */, - 15D1FE4D1998730800302043 /* Cocos2dConstants.lua in Resources */, - 15D1FE4F1998730800302043 /* DeprecatedCocos2dClass.lua in Resources */, 5091733A17ECE17A00D62437 /* Icon-80.png in Resources */, - 15D1FE6A1998732700302043 /* DeprecatedCocosDenshionClass.lua in Resources */, - 15AA96CC199C66B500725633 /* DeprecatedExtensionEnum.lua in Resources */, - 15D1FE571998730800302043 /* DrawPrimitives.lua in Resources */, - 15D1FE4B1998730800302043 /* Cocos2d.lua in Resources */, 5091733717ECE17A00D62437 /* Icon-40.png in Resources */, - 15D1FE5F1998730800302043 /* luaoc.lua in Resources */, 5023811E17EBBCAC00990C9B /* Icon-144.png in Resources */, - 15AA96B6199C668400725633 /* CCBReaderLoad.lua in Resources */, 5023811A17EBBCAC00990C9B /* Default.png in Resources */, - 15D1FE511998730800302043 /* DeprecatedCocos2dEnum.lua in Resources */, - 15D1FE531998730800302043 /* DeprecatedCocos2dFunc.lua in Resources */, - 15AA96DA199C66D500725633 /* DeprecatedNetworkFunc.lua in Resources */, - 15AA96D8199C66D500725633 /* DeprecatedNetworkEnum.lua in Resources */, - 15AA96B8199C668400725633 /* DeprecatedCocosBuilderClass.lua in Resources */, C03781BB18BF655400FE4F13 /* src in Resources */, - 15AA96C0199C66A100725633 /* DeprecatedCocoStudioClass.lua in Resources */, - 15D1FE591998730800302043 /* extern.lua in Resources */, - 15D1FE551998730800302043 /* DeprecatedOpenglEnum.lua in Resources */, - 15AA96E4199C66E600725633 /* DeprecatedUIFunc.lua in Resources */, - 15D1FE6C1998732700302043 /* DeprecatedCocosDenshionFunc.lua in Resources */, - 15AA96CE199C66B500725633 /* DeprecatedExtensionFunc.lua in Resources */, - 15D1FE611998730800302043 /* Opengl.lua in Resources */, 5091733817ECE17A00D62437 /* Icon-50.png in Resources */, - 15AA96C2199C66A100725633 /* DeprecatedCocoStudioFunc.lua in Resources */, - 15AA96C4199C66A100725633 /* StudioConstants.lua in Resources */, - 15D1FE491998730800302043 /* bitExtend.lua in Resources */, - 15AA96DC199C66D500725633 /* NetworkConstants.lua in Resources */, 5023812117EBBCAC00990C9B /* Icon-72.png in Resources */, - 15AA96D6199C66D500725633 /* DeprecatedNetworkClass.lua in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Default-667h@2x.png b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Default-667h@2x.png new file mode 100644 index 0000000000..a0f61ec8e6 Binary files /dev/null and b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Default-667h@2x.png differ diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Default-736h@3x.png b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Default-736h@3x.png new file mode 100644 index 0000000000..dadccee686 Binary files /dev/null and b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Default-736h@3x.png differ diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Info.plist b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Info.plist index ac80cbf650..a496e7a91a 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Info.plist +++ b/templates/lua-template-default/frameworks/runtime-src/proj.ios_mac/ios/Info.plist @@ -49,6 +49,89 @@ ???? CFBundleVersion 1.0 + UILaunchImages + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {414, 736} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {414, 736} + + LSRequiresIPhoneOS UIPrerenderedIcon diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.win32/build-cfg.json b/templates/lua-template-default/frameworks/runtime-src/proj.win32/build-cfg.json index 051f1647e3..828d1bf7a5 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.win32/build-cfg.json +++ b/templates/lua-template-default/frameworks/runtime-src/proj.win32/build-cfg.json @@ -7,14 +7,6 @@ { "from": "../../../res", "to": "res" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "" } ] } diff --git a/templates/lua-template-default/src/main.lua b/templates/lua-template-default/src/main.lua index 30ef917c36..87bfbb5dac 100644 --- a/templates/lua-template-default/src/main.lua +++ b/templates/lua-template-default/src/main.lua @@ -1,5 +1,9 @@ -require "Cocos2d" -require "Cocos2dConstants" + +cc.FileUtils:getInstance():addSearchPath("src") +cc.FileUtils:getInstance():addSearchPath("res") + +-- CC_USE_DEPRECATED_API = true +require "cocos.init" -- cclog cclog = function(...) @@ -37,17 +41,15 @@ local function main() --set FPS. the default value is 1.0/60 if you don't call this director:setAnimationInterval(1.0 / 60) - cc.FileUtils:getInstance():addSearchPath("src") - cc.FileUtils:getInstance():addSearchPath("res") - local schedulerID = 0 + local schedulerID = 0 --support debug local targetPlatform = cc.Application:getInstance():getTargetPlatform() - if (cc.PLATFORM_OS_IPHONE == targetPlatform) or (cc.PLATFORM_OS_IPAD == targetPlatform) or + if (cc.PLATFORM_OS_IPHONE == targetPlatform) or (cc.PLATFORM_OS_IPAD == targetPlatform) or (cc.PLATFORM_OS_ANDROID == targetPlatform) or (cc.PLATFORM_OS_WINDOWS == targetPlatform) or (cc.PLATFORM_OS_MAC == targetPlatform) then cclog("result is ") - --require('debugger')() - + --require('debugger')() + end require "hello2" cclog("result is " .. myadd(1, 1)) @@ -168,7 +170,7 @@ local function main() listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED ) local eventDispatcher = layerFarm:getEventDispatcher() eventDispatcher:addEventListenerWithSceneGraphPriority(listener, layerFarm) - + local function onNodeEvent(event) if "exit" == event then cc.Director:getInstance():getScheduler():unscheduleScriptEntry(schedulerID) @@ -207,7 +209,7 @@ local function main() menuPopup:setPosition(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2) menuPopup:setVisible(false) layerMenu:addChild(menuPopup) - + -- add the left-bottom "tools" menu to invoke menuPopup local menuToolsItem = cc.MenuItemImage:create("menu1.png", "menu1.png") menuToolsItem:setPosition(0, 0) @@ -222,7 +224,7 @@ local function main() end -- play background music, preload effect - local bgMusicPath = cc.FileUtils:getInstance():fullPathForFilename("background.mp3") + local bgMusicPath = cc.FileUtils:getInstance():fullPathForFilename("background.mp3") cc.SimpleAudioEngine:getInstance():playMusic(bgMusicPath, true) local effectPath = cc.FileUtils:getInstance():fullPathForFilename("effect1.wav") cc.SimpleAudioEngine:getInstance():preloadEffect(effectPath) @@ -231,12 +233,12 @@ local function main() local sceneGame = cc.Scene:create() sceneGame:addChild(createLayerFarm()) sceneGame:addChild(createLayerMenu()) - - if cc.Director:getInstance():getRunningScene() then - cc.Director:getInstance():replaceScene(sceneGame) - else - cc.Director:getInstance():runWithScene(sceneGame) - end + + if cc.Director:getInstance():getRunningScene() then + cc.Director:getInstance():replaceScene(sceneGame) + else + cc.Director:getInstance():runWithScene(sceneGame) + end end diff --git a/templates/lua-template-runtime/cocos-project-template.json b/templates/lua-template-runtime/cocos-project-template.json index 070e2e8b45..be860c7814 100644 --- a/templates/lua-template-runtime/cocos-project-template.json +++ b/templates/lua-template-runtime/cocos-project-template.json @@ -14,144 +14,8 @@ }, "append_dir": [ { - "from": "cocos/scripting/lua-bindings/script/cocos2d", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocos2d", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocos2d", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/network", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/network", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/network", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "external/lua/luasocket", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "include": [ - "*.lua" - ] - }, - { - "from": "external/lua/luasocket", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "include": [ - "*.lua" - ] - }, - { - "from": "external/lua/luasocket", - "to": "runtime/win32", - "include": [ - "*.lua" - ] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosbuilder", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosbuilder", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocosbuilder", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocostudio", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocostudio", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/cocostudio", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/extension", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/extension", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/extension", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/network", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/network", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/network", - "to": "runtime/win32", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/ui", - "to": "runtime/mac/PrebuiltRuntimeLua.app/Contents/Resources", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/ui", - "to": "runtime/ios/PrebuiltRuntimeLua.app", - "exclude": [] - }, - { - "from": "cocos/scripting/lua-bindings/script/ui", - "to": "runtime/win32", + "from": "cocos/scripting/lua-bindings/script", + "to": "src/cocos", "exclude": [] }, { @@ -162,14 +26,35 @@ ] }, { - "from": "external/win32-specific/zlib/prebuilt", + "from": "external/win32-specific/icon/prebuilt", "to": "runtime/win32", "include": [ "*.dll" ] }, { - "from": "external/win32-specific/icon/prebuilt", + "from": "external/win32-specific/MP3Decoder/prebuilt", + "to": "runtime/win32", + "include": [ + "*.dll" + ] + }, + { + "from": "external/win32-specific/OggDecoder/prebuilt", + "to": "runtime/win32", + "include": [ + "*.dll" + ] + }, + { + "from": "external/win32-specific/OpenalSoft/prebuilt", + "to": "runtime/win32", + "include": [ + "*.dll" + ] + }, + { + "from": "external/win32-specific/zlib/prebuilt", "to": "runtime/win32", "include": [ "*.dll" diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/AppDelegate.cpp b/templates/lua-template-runtime/frameworks/runtime-src/Classes/AppDelegate.cpp index 54190dbd03..53ae01817b 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/Classes/AppDelegate.cpp +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/AppDelegate.cpp @@ -13,10 +13,6 @@ using namespace std; AppDelegate::AppDelegate() { -#if (COCOS2D_DEBUG > 0) - // NOTE:Please don't remove this call if you want to debug with Cocos Code IDE - initRuntime(); -#endif } AppDelegate::~AppDelegate() @@ -37,6 +33,11 @@ void AppDelegate::initGLContextAttrs() bool AppDelegate::applicationDidFinishLaunching() { +#if (COCOS2D_DEBUG > 0) + // NOTE:Please don't remove this call if you want to debug with Cocos Code IDE + initRuntime(); +#endif + // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); @@ -58,6 +59,9 @@ bool AppDelegate::applicationDidFinishLaunching() lua_State* L = engine->getLuaStack()->getLuaState(); lua_module_register(L); + // If you want to use Quick-Cocos2d-X, please uncomment below code + // register_all_quick_manual(L); + LuaStack* stack = engine->getLuaStack(); stack->setXXTEAKeyAndSign("2dxLua", strlen("2dxLua"), "XXTEA", strlen("XXTEA")); diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/lua_module_register.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/lua_module_register.h index f6945cd797..88d03e1eda 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/Classes/lua_module_register.h +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/lua_module_register.h @@ -10,6 +10,7 @@ #include "spine/lua_cocos2dx_spine_manual.hpp" #include "3d/lua_cocos2dx_3d_manual.h" #include "audioengine/lua_cocos2dx_audioengine_manual.h" +#include "lua/quick/lua_cocos2dx_quick_manual.hpp" int lua_module_register(lua_State* L) { diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Runtime.cpp b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Runtime.cpp index 0cad710879..95b8e7e994 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Runtime.cpp +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/Runtime.cpp @@ -93,7 +93,7 @@ void startScript(string strDebugArg) if (!strDebugArg.empty()) { // open debugger.lua module - luaopen_debugger(engine->getLuaStack()->getLuaState()); + luaopen_lua_debugger(engine->getLuaStack()->getLuaState()); engine->executeString(strDebugArg.c_str()); } cocos2d::log("debug args = %s", strDebugArg.c_str()); @@ -1033,7 +1033,7 @@ public: dReplyParse.Accept(writer); string msgContent = buffer.GetString(); char msgLength[64] = {0x1, 0}; - sprintf(msgLength + 1, "%zu:", msgContent.size()); + sprintf(msgLength + 1, "%d:", msgContent.size()); string msg(msgLength + msgContent); @@ -1221,7 +1221,7 @@ void initRuntime() auto engine = LuaEngine::getInstance(); ScriptEngineManager::getInstance()->setScriptEngine(engine); register_runtime_override_function(engine->getLuaStack()->getLuaState()); - + static ConsoleCustomCommand *g_customCommand; g_customCommand = new ConsoleCustomCommand(); g_customCommand->init(); diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.c b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.c index cf7bf2a55a..37a696da20 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.c +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.c @@ -1,3123 +1,8660 @@ -/* debugger.c */ +/* lua_debugger.c */ + #if __cplusplus -extern "C"{ +extern "C" { #endif + #include "lua.h" #include "lauxlib.h" #include "lua_debugger.h" -#if __cplusplus -} -#endif -/* ldt_debugger */ -static const char lua_m_ldt_debugger[] = { - 0x1b,0x4c,0x4a,0x01,0x02,0x87,0x01,0x00,0x01,0x0c,0x00,0x06,0x02,0x18,0x32,0x01, - 0x00,0x00,0x34,0x02,0x00,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00,0x00,0x3e,0x02, - 0x02,0x02,0x27,0x03,0x01,0x00,0x13,0x04,0x02,0x00,0x27,0x05,0x4c,0x00,0x49,0x03, - 0x0b,0x80,0x13,0x07,0x01,0x00,0x14,0x07,0x00,0x07,0x10,0x09,0x02,0x00,0x37,0x08, - 0x02,0x02,0x10,0x0a,0x06,0x00,0x14,0x0b,0x01,0x06,0x3e,0x08,0x04,0x02,0x25,0x09, - 0x03,0x00,0x24,0x08,0x09,0x08,0x39,0x08,0x07,0x01,0x4b,0x03,0xf5,0x7f,0x34,0x03, - 0x04,0x00,0x37,0x03,0x05,0x03,0x10,0x04,0x01,0x00,0x40,0x03,0x02,0x00,0x0b,0x63, - 0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x07,0x0d,0x0a,0x08,0x73, - 0x75,0x62,0x08,0x62,0x36,0x34,0x09,0x6d,0x69,0x6d,0x65,0x02,0x96,0x01,0x2b,0x00, - 0x03,0x07,0x00,0x02,0x00,0x06,0x37,0x03,0x00,0x00,0x10,0x04,0x03,0x00,0x37,0x03, - 0x01,0x03,0x10,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x0c,0x63, - 0x6f,0x6e,0x6e,0x65,0x63,0x74,0x08,0x73,0x6b,0x74,0x24,0x00,0x02,0x05,0x00,0x02, - 0x00,0x05,0x37,0x02,0x00,0x00,0x10,0x03,0x02,0x00,0x37,0x02,0x01,0x02,0x10,0x04, - 0x01,0x00,0x40,0x02,0x03,0x00,0x09,0x72,0x65,0x61,0x64,0x08,0x73,0x6b,0x74,0x25, - 0x00,0x02,0x05,0x00,0x02,0x00,0x05,0x37,0x02,0x00,0x00,0x10,0x03,0x02,0x00,0x37, - 0x02,0x01,0x02,0x10,0x04,0x01,0x00,0x40,0x02,0x03,0x00,0x0a,0x77,0x72,0x69,0x74, - 0x65,0x08,0x73,0x6b,0x74,0x21,0x00,0x01,0x03,0x00,0x02,0x00,0x04,0x37,0x01,0x00, - 0x00,0x10,0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x40,0x01,0x02,0x00,0x0a,0x63,0x6c, - 0x6f,0x73,0x65,0x08,0x73,0x6b,0x74,0x8a,0x01,0x00,0x02,0x06,0x00,0x04,0x02,0x19, - 0x0b,0x01,0x00,0x00,0x54,0x02,0x06,0x80,0x37,0x02,0x00,0x00,0x10,0x03,0x02,0x00, - 0x37,0x02,0x01,0x02,0x29,0x04,0x02,0x00,0x3e,0x02,0x03,0x01,0x54,0x02,0x10,0x80, - 0x09,0x01,0x00,0x00,0x54,0x02,0x06,0x80,0x37,0x02,0x00,0x00,0x10,0x03,0x02,0x00, - 0x37,0x02,0x01,0x02,0x29,0x04,0x01,0x00,0x3e,0x02,0x03,0x01,0x54,0x02,0x08,0x80, - 0x37,0x02,0x00,0x00,0x10,0x03,0x02,0x00,0x37,0x02,0x01,0x02,0x34,0x04,0x02,0x00, - 0x37,0x04,0x03,0x04,0x16,0x05,0x01,0x01,0x3e,0x04,0x02,0x00,0x3d,0x02,0x01,0x01, - 0x47,0x00,0x01,0x00,0x0a,0x66,0x6c,0x6f,0x6f,0x72,0x09,0x6d,0x61,0x74,0x68,0x10, - 0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x5f,0x73,0x65,0x74,0x08,0x73,0x6b,0x74,0x00, - 0x80,0x89,0x7a,0x69,0x00,0x00,0x05,0x02,0x05,0x00,0x0e,0x2b,0x00,0x00,0x00,0x37, - 0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x03,0x0e,0x00,0x00,0x00,0x54, - 0x02,0x03,0x80,0x29,0x02,0x00,0x00,0x10,0x03,0x01,0x00,0x46,0x02,0x03,0x00,0x34, - 0x02,0x02,0x00,0x33,0x03,0x03,0x00,0x3a,0x00,0x04,0x03,0x2b,0x04,0x01,0x00,0x40, - 0x02,0x03,0x00,0x00,0xc0,0x01,0xc0,0x08,0x73,0x6b,0x74,0x01,0x00,0x00,0x11,0x73, - 0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x08,0x74,0x63,0x70,0x12, - 0x73,0x6f,0x63,0x6b,0x65,0x74,0x5f,0x63,0x72,0x65,0x61,0x74,0x65,0x9c,0x01,0x00, - 0x01,0x0c,0x01,0x06,0x02,0x1b,0x32,0x01,0x00,0x00,0x35,0x01,0x00,0x00,0x2b,0x01, - 0x00,0x00,0x37,0x01,0x01,0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x27,0x02, - 0x01,0x00,0x13,0x03,0x01,0x00,0x27,0x04,0x4c,0x00,0x49,0x02,0x0d,0x80,0x34,0x06, - 0x00,0x00,0x34,0x07,0x00,0x00,0x13,0x07,0x07,0x00,0x14,0x07,0x00,0x07,0x10,0x09, - 0x01,0x00,0x37,0x08,0x02,0x01,0x10,0x0a,0x05,0x00,0x14,0x0b,0x01,0x05,0x3e,0x08, - 0x04,0x02,0x25,0x09,0x03,0x00,0x24,0x08,0x09,0x08,0x39,0x08,0x07,0x06,0x4b,0x02, - 0xf3,0x7f,0x34,0x02,0x04,0x00,0x37,0x02,0x05,0x02,0x34,0x03,0x00,0x00,0x40,0x02, - 0x02,0x00,0x00,0xc0,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c, - 0x65,0x07,0x0d,0x0a,0x08,0x73,0x75,0x62,0x12,0x62,0x61,0x73,0x65,0x36,0x34,0x5f, - 0x65,0x6e,0x63,0x6f,0x64,0x65,0x06,0x74,0x02,0x96,0x01,0x8a,0x02,0x03,0x00,0x04, - 0x00,0x1a,0x00,0x1e,0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02, - 0x31,0x01,0x02,0x00,0x35,0x01,0x03,0x00,0x33,0x01,0x05,0x00,0x31,0x02,0x04,0x00, - 0x3a,0x02,0x06,0x01,0x31,0x02,0x07,0x00,0x3a,0x02,0x08,0x01,0x31,0x02,0x09,0x00, - 0x3a,0x02,0x0a,0x01,0x31,0x02,0x0b,0x00,0x3a,0x02,0x0c,0x01,0x31,0x02,0x0d,0x00, - 0x3a,0x02,0x0e,0x01,0x3a,0x01,0x0f,0x01,0x33,0x02,0x11,0x00,0x31,0x03,0x10,0x00, - 0x3a,0x03,0x12,0x02,0x37,0x03,0x13,0x00,0x3a,0x03,0x13,0x02,0x31,0x03,0x14,0x00, - 0x3a,0x03,0x15,0x02,0x37,0x03,0x16,0x00,0x3a,0x03,0x17,0x02,0x37,0x03,0x18,0x00, - 0x3a,0x03,0x19,0x02,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x0a,0x75,0x6e,0x62, - 0x36,0x34,0x12,0x62,0x61,0x73,0x65,0x36,0x34,0x5f,0x64,0x65,0x63,0x6f,0x64,0x65, - 0x0b,0x72,0x61,0x77,0x62,0x36,0x34,0x12,0x62,0x61,0x73,0x65,0x36,0x34,0x5f,0x65, - 0x6e,0x63,0x6f,0x64,0x65,0x08,0x62,0x36,0x34,0x00,0x0a,0x73,0x6c,0x65,0x65,0x70, - 0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x01,0x00,0x00,0x00,0x0c,0x5f,0x5f,0x69,0x6e, - 0x64,0x65,0x78,0x0f,0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x00,0x0a, - 0x63,0x6c,0x6f,0x73,0x65,0x00,0x09,0x73,0x65,0x6e,0x64,0x00,0x0c,0x72,0x65,0x63, - 0x65,0x69,0x76,0x65,0x00,0x0c,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x01,0x00,0x00, - 0x00,0x0d,0x62,0x36,0x34,0x5f,0x77,0x72,0x61,0x70,0x00,0x08,0x61,0x70,0x72,0x0c, - 0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x17,0x00,0x01,0x02,0x00,0x00,0x00,0x04,0x0d, - 0x01,0x00,0x00,0x54,0x01,0x01,0x80,0x13,0x01,0x00,0x00,0x48,0x01,0x02,0x00,0xe0, - 0x01,0x00,0x01,0x09,0x02,0x0c,0x00,0x23,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01, - 0x37,0x01,0x01,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x02,0x02,0x25,0x03,0x03,0x00, - 0x3e,0x02,0x02,0x02,0x2b,0x03,0x01,0x00,0x37,0x03,0x04,0x03,0x25,0x04,0x03,0x00, - 0x3e,0x03,0x02,0x00,0x3d,0x01,0x01,0x02,0x2b,0x02,0x00,0x00,0x37,0x02,0x05,0x02, - 0x37,0x02,0x06,0x02,0x3e,0x02,0x01,0x03,0x2b,0x04,0x00,0x00,0x37,0x04,0x07,0x04, - 0x37,0x04,0x08,0x04,0x2b,0x05,0x00,0x00,0x37,0x05,0x09,0x05,0x37,0x05,0x0a,0x05, - 0x10,0x06,0x00,0x00,0x3e,0x05,0x02,0x02,0x2b,0x06,0x00,0x00,0x37,0x06,0x05,0x06, - 0x37,0x06,0x01,0x06,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x3e,0x06,0x03,0x00, - 0x3d,0x04,0x01,0x01,0x34,0x04,0x06,0x00,0x37,0x04,0x0b,0x04,0x10,0x05,0x03,0x00, - 0x40,0x04,0x02,0x00,0x02,0xc0,0x01,0xc0,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0b, - 0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x08,0x61,0x6c, - 0x6c,0x09,0x70,0x75,0x6d,0x70,0x0a,0x74,0x61,0x62,0x6c,0x65,0x09,0x73,0x69,0x6e, - 0x6b,0x09,0x77,0x72,0x61,0x70,0x0b,0x62,0x61,0x73,0x65,0x36,0x34,0x0b,0x65,0x6e, - 0x63,0x6f,0x64,0x65,0x0a,0x63,0x68,0x61,0x69,0x6e,0x0b,0x66,0x69,0x6c,0x74,0x65, - 0x72,0x21,0x00,0x01,0x03,0x01,0x01,0x00,0x05,0x2b,0x01,0x00,0x00,0x37,0x01,0x00, - 0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x48,0x01,0x02,0x00,0x01,0xc0,0x08, - 0x62,0x36,0x34,0x23,0x00,0x01,0x03,0x01,0x01,0x00,0x05,0x2b,0x01,0x00,0x00,0x37, - 0x01,0x00,0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x48,0x01,0x02,0x00,0x01, - 0xc0,0x0a,0x75,0x6e,0x62,0x36,0x34,0xf4,0x01,0x03,0x00,0x06,0x00,0x15,0x00,0x1f, - 0x34,0x00,0x00,0x00,0x07,0x00,0x01,0x00,0x54,0x00,0x03,0x80,0x34,0x00,0x02,0x00, - 0x31,0x01,0x04,0x00,0x3a,0x01,0x03,0x00,0x34,0x00,0x05,0x00,0x25,0x01,0x06,0x00, - 0x3e,0x00,0x02,0x02,0x34,0x01,0x05,0x00,0x25,0x02,0x07,0x00,0x3e,0x01,0x02,0x02, - 0x34,0x02,0x05,0x00,0x25,0x03,0x08,0x00,0x3e,0x02,0x02,0x02,0x34,0x03,0x09,0x00, - 0x37,0x03,0x0a,0x03,0x3e,0x03,0x01,0x02,0x33,0x04,0x0c,0x00,0x37,0x05,0x0b,0x00, - 0x3a,0x05,0x0d,0x04,0x37,0x05,0x0e,0x00,0x3a,0x05,0x0e,0x04,0x31,0x05,0x0f,0x00, - 0x3a,0x05,0x10,0x04,0x31,0x05,0x11,0x00,0x3a,0x05,0x12,0x04,0x31,0x05,0x13,0x00, - 0x3a,0x05,0x14,0x04,0x30,0x00,0x00,0x80,0x48,0x04,0x02,0x00,0x0a,0x75,0x6e,0x62, - 0x36,0x34,0x00,0x0b,0x72,0x61,0x77,0x62,0x36,0x34,0x00,0x08,0x62,0x36,0x34,0x00, - 0x0a,0x73,0x6c,0x65,0x65,0x70,0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x01,0x00,0x00, - 0x08,0x74,0x63,0x70,0x10,0x67,0x65,0x74,0x72,0x65,0x67,0x69,0x73,0x74,0x72,0x79, - 0x0a,0x64,0x65,0x62,0x75,0x67,0x0a,0x6c,0x74,0x6e,0x31,0x32,0x09,0x6d,0x69,0x6d, - 0x65,0x0b,0x73,0x6f,0x63,0x6b,0x65,0x74,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65, - 0x00,0x09,0x67,0x65,0x74,0x6e,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0c,0x4c,0x75,0x61, - 0x20,0x35,0x2e,0x32,0x0d,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x21,0x00,0x03, - 0x07,0x01,0x01,0x00,0x05,0x2b,0x03,0x00,0x00,0x37,0x04,0x00,0x00,0x10,0x05,0x01, - 0x00,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x05,0xc0,0x08,0x73,0x6b,0x74,0x1d, - 0x00,0x02,0x05,0x01,0x01,0x00,0x04,0x2b,0x02,0x00,0x00,0x37,0x03,0x00,0x00,0x10, - 0x04,0x01,0x00,0x40,0x02,0x03,0x00,0x06,0xc0,0x08,0x73,0x6b,0x74,0x1d,0x00,0x02, - 0x05,0x01,0x01,0x00,0x04,0x2b,0x02,0x00,0x00,0x37,0x03,0x00,0x00,0x10,0x04,0x01, - 0x00,0x40,0x02,0x03,0x00,0x07,0xc0,0x08,0x73,0x6b,0x74,0x1d,0x00,0x02,0x05,0x01, - 0x01,0x00,0x04,0x2b,0x02,0x00,0x00,0x37,0x03,0x00,0x00,0x10,0x04,0x01,0x00,0x40, - 0x02,0x03,0x00,0x08,0xc0,0x08,0x73,0x6b,0x74,0x19,0x00,0x01,0x03,0x01,0x01,0x00, - 0x03,0x2b,0x01,0x00,0x00,0x37,0x02,0x00,0x00,0x40,0x01,0x02,0x00,0x09,0xc0,0x08, - 0x73,0x6b,0x74,0x3b,0x00,0x00,0x03,0x02,0x03,0x00,0x07,0x34,0x00,0x00,0x00,0x33, - 0x01,0x01,0x00,0x2b,0x02,0x00,0x00,0x3e,0x02,0x01,0x02,0x3a,0x02,0x02,0x01,0x2b, - 0x02,0x01,0x00,0x40,0x00,0x03,0x00,0x03,0xc0,0x0a,0xc0,0x08,0x73,0x6b,0x74,0x01, - 0x00,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0xe0, - 0x01,0x00,0x01,0x09,0x02,0x0c,0x00,0x23,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01, - 0x37,0x01,0x01,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x02,0x02,0x25,0x03,0x03,0x00, - 0x3e,0x02,0x02,0x02,0x2b,0x03,0x01,0x00,0x37,0x03,0x04,0x03,0x25,0x04,0x03,0x00, - 0x3e,0x03,0x02,0x00,0x3d,0x01,0x01,0x02,0x2b,0x02,0x00,0x00,0x37,0x02,0x05,0x02, - 0x37,0x02,0x06,0x02,0x3e,0x02,0x01,0x03,0x2b,0x04,0x00,0x00,0x37,0x04,0x07,0x04, - 0x37,0x04,0x08,0x04,0x2b,0x05,0x00,0x00,0x37,0x05,0x09,0x05,0x37,0x05,0x0a,0x05, - 0x10,0x06,0x00,0x00,0x3e,0x05,0x02,0x02,0x2b,0x06,0x00,0x00,0x37,0x06,0x05,0x06, - 0x37,0x06,0x01,0x06,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x3e,0x06,0x03,0x00, - 0x3d,0x04,0x01,0x01,0x34,0x04,0x06,0x00,0x37,0x04,0x0b,0x04,0x10,0x05,0x03,0x00, - 0x40,0x04,0x02,0x00,0x0c,0xc0,0x0b,0xc0,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0b, - 0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x08,0x61,0x6c, - 0x6c,0x09,0x70,0x75,0x6d,0x70,0x0a,0x74,0x61,0x62,0x6c,0x65,0x09,0x73,0x69,0x6e, - 0x6b,0x09,0x77,0x72,0x61,0x70,0x0b,0x62,0x61,0x73,0x65,0x36,0x34,0x0b,0x65,0x6e, - 0x63,0x6f,0x64,0x65,0x0a,0x63,0x68,0x61,0x69,0x6e,0x0b,0x66,0x69,0x6c,0x74,0x65, - 0x72,0x21,0x00,0x01,0x03,0x01,0x01,0x00,0x05,0x2b,0x01,0x00,0x00,0x37,0x01,0x00, - 0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x48,0x01,0x02,0x00,0x0b,0xc0,0x08, - 0x62,0x36,0x34,0x23,0x00,0x01,0x03,0x01,0x01,0x00,0x05,0x2b,0x01,0x00,0x00,0x37, - 0x01,0x00,0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x48,0x01,0x02,0x00,0x0b, - 0xc0,0x0a,0x75,0x6e,0x62,0x36,0x34,0xac,0x04,0x03,0x00,0x11,0x00,0x28,0x00,0x48, - 0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x00,0x00, - 0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x37,0x02,0x03,0x01,0x3e,0x02,0x01,0x02, - 0x37,0x03,0x04,0x00,0x37,0x04,0x05,0x00,0x37,0x05,0x06,0x02,0x37,0x05,0x07,0x05, - 0x37,0x05,0x08,0x05,0x37,0x06,0x09,0x02,0x37,0x06,0x07,0x06,0x37,0x06,0x0a,0x06, - 0x37,0x07,0x09,0x02,0x37,0x07,0x07,0x07,0x37,0x07,0x0b,0x07,0x37,0x08,0x06,0x02, - 0x37,0x08,0x07,0x08,0x37,0x08,0x0c,0x08,0x37,0x09,0x06,0x02,0x37,0x09,0x07,0x09, - 0x37,0x09,0x0d,0x09,0x33,0x0a,0x0f,0x00,0x31,0x0b,0x0e,0x00,0x3a,0x0b,0x08,0x0a, - 0x31,0x0b,0x10,0x00,0x3a,0x0b,0x0a,0x0a,0x31,0x0b,0x11,0x00,0x3a,0x0b,0x0b,0x0a, - 0x31,0x0b,0x12,0x00,0x3a,0x0b,0x0c,0x0a,0x31,0x0b,0x13,0x00,0x3a,0x0b,0x0d,0x0a, - 0x3a,0x0a,0x07,0x0a,0x34,0x0b,0x00,0x00,0x25,0x0c,0x14,0x00,0x3e,0x0b,0x02,0x02, - 0x34,0x0c,0x00,0x00,0x25,0x0d,0x15,0x00,0x3e,0x0c,0x02,0x02,0x34,0x0d,0x16,0x00, - 0x37,0x0e,0x17,0x01,0x10,0x0f,0x03,0x00,0x25,0x10,0x18,0x00,0x3e,0x0e,0x03,0x02, - 0x37,0x0e,0x19,0x0e,0x06,0x0e,0x1a,0x00,0x54,0x0e,0x02,0x80,0x29,0x0e,0x01,0x00, - 0x54,0x0f,0x01,0x80,0x29,0x0e,0x02,0x00,0x25,0x0f,0x1b,0x00,0x3e,0x0d,0x03,0x01, - 0x34,0x0d,0x1c,0x00,0x37,0x0d,0x1d,0x0d,0x29,0x0e,0x00,0x00,0x3a,0x0e,0x1e,0x0d, - 0x33,0x0d,0x20,0x00,0x31,0x0e,0x1f,0x00,0x3a,0x0e,0x21,0x0d,0x3a,0x04,0x05,0x0d, - 0x31,0x0e,0x22,0x00,0x3a,0x0e,0x23,0x0d,0x31,0x0e,0x24,0x00,0x3a,0x0e,0x25,0x0d, - 0x31,0x0e,0x26,0x00,0x3a,0x0e,0x27,0x0d,0x30,0x00,0x00,0x80,0x48,0x0d,0x02,0x00, - 0x0a,0x75,0x6e,0x62,0x36,0x34,0x00,0x0b,0x72,0x61,0x77,0x62,0x36,0x34,0x00,0x08, - 0x62,0x36,0x34,0x00,0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x01,0x00,0x00,0x00,0x0b, - 0x73,0x6f,0x63,0x6b,0x65,0x74,0x0b,0x6c,0x6f,0x61,0x64,0x65,0x64,0x0c,0x70,0x61, - 0x63,0x6b,0x61,0x67,0x65,0x33,0x54,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67, - 0x65,0x72,0x20,0x6e,0x65,0x65,0x64,0x73,0x20,0x74,0x68,0x65,0x20,0x72,0x65,0x61, - 0x6c,0x20,0x73,0x6f,0x63,0x6b,0x65,0x74,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, - 0x6e,0x73,0x20,0x21,0x06,0x43,0x09,0x77,0x68,0x61,0x74,0x06,0x53,0x0c,0x67,0x65, - 0x74,0x69,0x6e,0x66,0x6f,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x0a,0x6c,0x74,0x6e, - 0x31,0x32,0x09,0x6d,0x69,0x6d,0x65,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0a, - 0x63,0x6c,0x6f,0x73,0x65,0x0f,0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74, - 0x09,0x73,0x65,0x6e,0x64,0x0c,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x10,0x74,0x63, - 0x70,0x7b,0x63,0x6c,0x69,0x65,0x6e,0x74,0x7d,0x0c,0x63,0x6f,0x6e,0x6e,0x65,0x63, - 0x74,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x10,0x74,0x63,0x70,0x7b,0x6d,0x61, - 0x73,0x74,0x65,0x72,0x7d,0x0a,0x73,0x6c,0x65,0x65,0x70,0x08,0x74,0x63,0x70,0x10, - 0x67,0x65,0x74,0x72,0x65,0x67,0x69,0x73,0x74,0x72,0x79,0x0a,0x64,0x65,0x62,0x75, - 0x67,0x10,0x73,0x6f,0x63,0x6b,0x65,0x74,0x2e,0x63,0x6f,0x72,0x65,0x0c,0x72,0x65, - 0x71,0x75,0x69,0x72,0x65,0x9c,0x02,0x00,0x02,0x07,0x03,0x0b,0x00,0x26,0x0f,0x00, - 0x01,0x00,0x54,0x02,0x22,0x80,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x27,0x03, - 0x8f,0x01,0x2b,0x04,0x01,0x00,0x37,0x04,0x01,0x04,0x37,0x04,0x02,0x04,0x34,0x05, - 0x03,0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x36,0x04,0x05,0x04,0x25,0x05, - 0x04,0x00,0x3e,0x02,0x04,0x02,0x2b,0x03,0x00,0x00,0x37,0x03,0x00,0x03,0x27,0x04, - 0x8f,0x01,0x34,0x05,0x05,0x00,0x37,0x05,0x06,0x05,0x10,0x06,0x02,0x00,0x3e,0x05, - 0x02,0x02,0x07,0x05,0x07,0x00,0x54,0x05,0x02,0x80,0x29,0x05,0x01,0x00,0x54,0x06, - 0x01,0x80,0x29,0x05,0x02,0x00,0x25,0x06,0x08,0x00,0x3e,0x03,0x04,0x01,0x37,0x03, - 0x09,0x00,0x38,0x03,0x01,0x03,0x04,0x02,0x03,0x00,0x54,0x03,0x04,0x80,0x2b,0x03, - 0x02,0x00,0x37,0x03,0x0a,0x03,0x10,0x04,0x02,0x00,0x40,0x03,0x02,0x00,0x37,0x02, - 0x09,0x00,0x48,0x02,0x02,0x00,0x04,0xc0,0x03,0xc0,0x05,0xc0,0x12,0x46,0x6f,0x72, - 0x65,0x69,0x67,0x6e,0x54,0x68,0x72,0x65,0x61,0x64,0x09,0x63,0x6f,0x72,0x6f,0x16, - 0x43,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x69,0x73,0x20,0x64,0x65,0x61, - 0x64,0x09,0x64,0x65,0x61,0x64,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x0e,0x63,0x6f, - 0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x16,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20, - 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62, - 0x65,0x72,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x16,0x61,0x63,0x74,0x69,0x76, - 0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x0b,0x61,0x73,0x73, - 0x65,0x72,0x74,0xc3,0x01,0x00,0x02,0x07,0x02,0x0a,0x00,0x11,0x25,0x02,0x01,0x00, - 0x3a,0x02,0x00,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x02,0x02,0x10,0x03,0x00,0x00, - 0x3e,0x02,0x02,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x03,0x02,0x37,0x03,0x04,0x00, - 0x33,0x04,0x05,0x00,0x33,0x05,0x06,0x00,0x37,0x06,0x07,0x01,0x3a,0x06,0x08,0x05, - 0x3a,0x05,0x09,0x04,0x3e,0x02,0x03,0x01,0x29,0x02,0x01,0x00,0x48,0x02,0x02,0x00, - 0x03,0xc0,0x04,0xc0,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61, - 0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x02,0x0c,0x73,0x75, - 0x63,0x63,0x65,0x73,0x73,0x03,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x0a, - 0x62,0x72,0x65,0x61,0x6b,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73, - 0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78, - 0x6d,0x6c,0x1e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74, - 0x65,0x78,0x74,0x5f,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0a,0x62,0x72,0x65, - 0x61,0x6b,0x0a,0x73,0x74,0x61,0x74,0x65,0x95,0x01,0x00,0x02,0x07,0x01,0x09,0x00, - 0x0c,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x37,0x03,0x01,0x00,0x33,0x04,0x02, - 0x00,0x33,0x05,0x03,0x00,0x37,0x06,0x04,0x00,0x3a,0x06,0x05,0x05,0x37,0x06,0x06, - 0x01,0x3a,0x06,0x07,0x05,0x3a,0x05,0x08,0x04,0x3e,0x02,0x03,0x01,0x47,0x00,0x01, - 0x00,0x04,0xc0,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63, - 0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x0b,0x73,0x74,0x61,0x74,0x75,0x73, - 0x0a,0x73,0x74,0x61,0x74,0x65,0x01,0x00,0x02,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e, - 0x64,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x0b,0x72,0x65,0x61,0x73,0x6f,0x6e,0x07, - 0x6f,0x6b,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e, - 0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0xbb, - 0x01,0x00,0x02,0x07,0x01,0x0a,0x00,0x12,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02, - 0x37,0x03,0x01,0x00,0x33,0x04,0x02,0x00,0x33,0x05,0x03,0x00,0x37,0x06,0x04,0x01, - 0x3a,0x06,0x05,0x05,0x3a,0x05,0x06,0x04,0x3e,0x02,0x03,0x01,0x37,0x02,0x01,0x00, - 0x10,0x03,0x02,0x00,0x37,0x02,0x07,0x02,0x3e,0x02,0x02,0x01,0x34,0x02,0x08,0x00, - 0x37,0x02,0x09,0x02,0x27,0x03,0x01,0x00,0x3e,0x02,0x02,0x01,0x47,0x00,0x01,0x00, - 0x04,0xc0,0x09,0x65,0x78,0x69,0x74,0x07,0x6f,0x73,0x0a,0x63,0x6c,0x6f,0x73,0x65, - 0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f, - 0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x03,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e, - 0x64,0x09,0x73,0x74,0x6f,0x70,0x0b,0x72,0x65,0x61,0x73,0x6f,0x6e,0x07,0x6f,0x6b, - 0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x0c,0x73,0x74,0x6f,0x70,0x70,0x65,0x64,0x01, - 0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08, - 0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x88,0x02,0x00,0x02, - 0x09,0x03,0x0e,0x01,0x1f,0x37,0x02,0x00,0x01,0x2b,0x03,0x00,0x00,0x37,0x03,0x01, - 0x03,0x36,0x03,0x02,0x03,0x0e,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x2b,0x03,0x01, - 0x00,0x36,0x03,0x02,0x03,0x11,0x03,0x03,0x00,0x11,0x03,0x03,0x00,0x2b,0x04,0x02, - 0x00,0x37,0x04,0x02,0x04,0x37,0x05,0x03,0x00,0x33,0x06,0x04,0x00,0x33,0x07,0x05, - 0x00,0x3a,0x02,0x06,0x07,0x0f,0x00,0x03,0x00,0x54,0x08,0x02,0x80,0x25,0x08,0x07, - 0x00,0x54,0x09,0x01,0x80,0x25,0x08,0x08,0x00,0x3a,0x08,0x09,0x07,0x37,0x08,0x0a, - 0x01,0x3a,0x08,0x0b,0x07,0x3a,0x07,0x0c,0x06,0x34,0x07,0x0d,0x00,0x10,0x08,0x03, - 0x00,0x3e,0x07,0x02,0x00,0x3c,0x07,0x00,0x00,0x3e,0x04,0x03,0x01,0x47,0x00,0x01, - 0x00,0x05,0xc0,0x0a,0xc0,0x04,0xc0,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67, - 0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f, - 0x6e,0x5f,0x69,0x64,0x06,0x69,0x0e,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64, - 0x06,0x30,0x06,0x31,0x11,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x5f,0x6e,0x61,0x6d, - 0x65,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x10,0x66,0x65,0x61, - 0x74,0x75,0x72,0x65,0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d, - 0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e, - 0x64,0x5f,0x78,0x6d,0x6c,0x0d,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x06,0x6e, - 0x03,0x80,0x80,0xc0,0x99,0x04,0x2e,0x00,0x00,0x03,0x03,0x01,0x00,0x06,0x2b,0x00, - 0x00,0x00,0x37,0x00,0x00,0x00,0x2b,0x01,0x01,0x00,0x2b,0x02,0x02,0x00,0x39,0x02, - 0x01,0x00,0x47,0x00,0x01,0x00,0x00,0x00,0x02,0xc0,0x03,0xc0,0x0d,0x66,0x65,0x61, - 0x74,0x75,0x72,0x65,0x73,0xcc,0x01,0x01,0x02,0x0a,0x02,0x0d,0x00,0x17,0x37,0x02, - 0x00,0x01,0x37,0x03,0x01,0x01,0x34,0x04,0x02,0x00,0x31,0x05,0x03,0x00,0x3e,0x04, - 0x02,0x02,0x2b,0x05,0x01,0x00,0x37,0x05,0x04,0x05,0x37,0x06,0x05,0x00,0x33,0x07, - 0x06,0x00,0x33,0x08,0x07,0x00,0x3a,0x02,0x08,0x08,0x0f,0x00,0x04,0x00,0x54,0x09, - 0x02,0x80,0x27,0x09,0x01,0x00,0x54,0x0a,0x01,0x80,0x27,0x09,0x00,0x00,0x3a,0x09, - 0x09,0x08,0x37,0x09,0x0a,0x01,0x3a,0x09,0x0b,0x08,0x3a,0x08,0x0c,0x07,0x3e,0x05, - 0x03,0x01,0x30,0x00,0x00,0x80,0x47,0x00,0x01,0x00,0x05,0xc0,0x04,0xc0,0x09,0x61, - 0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f, - 0x69,0x64,0x06,0x69,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x0c,0x66,0x65,0x61, - 0x74,0x75,0x72,0x65,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x10, - 0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x5f,0x73,0x65,0x74,0x01,0x00,0x01,0x08,0x74, - 0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d, - 0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x00,0x0a,0x70,0x63,0x61,0x6c,0x6c,0x06, - 0x76,0x06,0x6e,0x49,0x00,0x03,0x05,0x00,0x06,0x00,0x07,0x33,0x03,0x00,0x00,0x33, - 0x04,0x01,0x00,0x3a,0x00,0x02,0x04,0x3a,0x01,0x03,0x04,0x3a,0x02,0x04,0x04,0x3a, - 0x04,0x05,0x03,0x48,0x03,0x02,0x00,0x09,0x61,0x74,0x74,0x73,0x0d,0x78,0x73,0x69, - 0x3a,0x74,0x79,0x70,0x65,0x09,0x74,0x79,0x70,0x65,0x09,0x6e,0x61,0x6d,0x65,0x01, - 0x00,0x00,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x08,0x6d,0x61,0x70,0xc9,0x04,0x01, - 0x02,0x0a,0x01,0x1b,0x01,0x40,0x31,0x02,0x00,0x00,0x2b,0x03,0x00,0x00,0x37,0x03, - 0x01,0x03,0x37,0x04,0x02,0x00,0x33,0x05,0x03,0x00,0x33,0x06,0x04,0x00,0x37,0x07, - 0x05,0x01,0x3a,0x07,0x06,0x06,0x3a,0x06,0x07,0x05,0x10,0x06,0x02,0x00,0x25,0x07, - 0x08,0x00,0x25,0x08,0x09,0x00,0x3e,0x06,0x03,0x02,0x3b,0x06,0x01,0x05,0x10,0x06, - 0x02,0x00,0x25,0x07,0x0a,0x00,0x25,0x08,0x0b,0x00,0x25,0x09,0x0c,0x00,0x3e,0x06, - 0x04,0x02,0x3b,0x06,0x02,0x05,0x10,0x06,0x02,0x00,0x25,0x07,0x0d,0x00,0x25,0x08, - 0x0e,0x00,0x25,0x09,0x0f,0x00,0x3e,0x06,0x04,0x02,0x3b,0x06,0x03,0x05,0x10,0x06, - 0x02,0x00,0x25,0x07,0x10,0x00,0x25,0x08,0x10,0x00,0x25,0x09,0x11,0x00,0x3e,0x06, - 0x04,0x02,0x3b,0x06,0x04,0x05,0x10,0x06,0x02,0x00,0x25,0x07,0x12,0x00,0x25,0x08, - 0x13,0x00,0x3e,0x06,0x03,0x02,0x3b,0x06,0x05,0x05,0x10,0x06,0x02,0x00,0x25,0x07, - 0x14,0x00,0x25,0x08,0x13,0x00,0x3e,0x06,0x03,0x02,0x3b,0x06,0x06,0x05,0x10,0x06, - 0x02,0x00,0x25,0x07,0x15,0x00,0x25,0x08,0x13,0x00,0x3e,0x06,0x03,0x02,0x3b,0x06, - 0x07,0x05,0x10,0x06,0x02,0x00,0x25,0x07,0x16,0x00,0x25,0x08,0x17,0x00,0x3e,0x06, - 0x03,0x02,0x3b,0x06,0x08,0x05,0x10,0x06,0x02,0x00,0x25,0x07,0x18,0x00,0x25,0x08, - 0x19,0x00,0x3e,0x06,0x03,0x02,0x3b,0x06,0x09,0x05,0x10,0x06,0x02,0x00,0x25,0x07, - 0x1a,0x00,0x25,0x08,0x19,0x00,0x3e,0x06,0x03,0x00,0x3c,0x06,0x00,0x00,0x3e,0x03, - 0x03,0x01,0x47,0x00,0x01,0x00,0x04,0xc0,0x0d,0x6d,0x75,0x6c,0x74,0x69,0x76,0x61, - 0x6c,0x0a,0x61,0x72,0x72,0x61,0x79,0x0d,0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65, - 0x09,0x68,0x61,0x73,0x68,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0b,0x74,0x68,0x72,0x65, - 0x61,0x64,0x0d,0x75,0x73,0x65,0x72,0x64,0x61,0x74,0x61,0x0d,0x72,0x65,0x73,0x6f, - 0x75,0x72,0x63,0x65,0x0d,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x0f,0x78,0x73, - 0x64,0x3a,0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0e, - 0x78,0x73,0x64,0x3a,0x66,0x6c,0x6f,0x61,0x74,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x0b, - 0x6e,0x75,0x6d,0x62,0x65,0x72,0x10,0x78,0x73,0x64,0x3a,0x62,0x6f,0x6f,0x6c,0x65, - 0x61,0x6e,0x09,0x62,0x6f,0x6f,0x6c,0x0c,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x09, - 0x6e,0x75,0x6c,0x6c,0x08,0x6e,0x69,0x6c,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72, - 0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00, - 0x03,0x0e,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x73,0x64,0x25,0x68,0x74,0x74,0x70, - 0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30, - 0x30,0x31,0x2f,0x58,0x4d,0x4c,0x53,0x63,0x68,0x65,0x6d,0x61,0x0c,0x63,0x6f,0x6d, - 0x6d,0x61,0x6e,0x64,0x10,0x74,0x79,0x70,0x65,0x6d,0x61,0x70,0x5f,0x67,0x65,0x74, - 0x0e,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x73,0x69,0x2e,0x68,0x74,0x74,0x70,0x3a, - 0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30,0x30, - 0x31,0x2f,0x58,0x4d,0x4c,0x53,0x63,0x68,0x65,0x6d,0x61,0x2d,0x69,0x6e,0x73,0x74, - 0x61,0x6e,0x63,0x65,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70, - 0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d, - 0x6c,0x00,0x15,0x80,0x80,0xc0,0x99,0x04,0x2d,0x00,0x01,0x03,0x01,0x01,0x00,0x05, - 0x2b,0x01,0x00,0x00,0x29,0x02,0x00,0x00,0x3a,0x02,0x00,0x01,0x29,0x01,0x02,0x00, - 0x48,0x01,0x02,0x00,0x03,0xc0,0x14,0x70,0x72,0x65,0x76,0x5f,0x62,0x72,0x65,0x61, - 0x6b,0x5f,0x6c,0x69,0x6e,0x65,0x3a,0x00,0x01,0x03,0x01,0x03,0x00,0x07,0x2b,0x01, - 0x00,0x00,0x37,0x01,0x00,0x01,0x37,0x01,0x01,0x01,0x25,0x02,0x02,0x00,0x3e,0x01, - 0x02,0x01,0x29,0x01,0x02,0x00,0x48,0x01,0x02,0x00,0x03,0xc0,0x09,0x6f,0x76,0x65, - 0x72,0x0d,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x0b,0x65,0x76,0x65,0x6e,0x74, - 0x73,0x39,0x00,0x01,0x03,0x01,0x03,0x00,0x07,0x2b,0x01,0x00,0x00,0x37,0x01,0x00, - 0x01,0x37,0x01,0x01,0x01,0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x01,0x29,0x01,0x02, - 0x00,0x48,0x01,0x02,0x00,0x03,0xc0,0x08,0x6f,0x75,0x74,0x0d,0x72,0x65,0x67,0x69, - 0x73,0x74,0x65,0x72,0x0b,0x65,0x76,0x65,0x6e,0x74,0x73,0x3a,0x00,0x01,0x03,0x01, - 0x03,0x00,0x07,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x37,0x01,0x01,0x01,0x25, - 0x02,0x02,0x00,0x3e,0x01,0x02,0x01,0x29,0x01,0x02,0x00,0x48,0x01,0x02,0x00,0x03, - 0xc0,0x09,0x69,0x6e,0x74,0x6f,0x0d,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x0b, - 0x65,0x76,0x65,0x6e,0x74,0x73,0x28,0x00,0x00,0x02,0x02,0x01,0x00,0x05,0x2b,0x00, - 0x00,0x00,0x37,0x00,0x00,0x00,0x2b,0x01,0x01,0x00,0x3e,0x01,0x01,0x00,0x3f,0x00, - 0x00,0x00,0x02,0x00,0x07,0x80,0x0d,0x4d,0x75,0x6c,0x74,0x69,0x76,0x61,0x6c,0xaf, - 0x04,0x01,0x03,0x15,0x05,0x15,0x01,0x5e,0x2b,0x03,0x00,0x00,0x25,0x04,0x00,0x00, - 0x25,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x01, - 0x2a,0x03,0x05,0x00,0x37,0x06,0x02,0x00,0x37,0x07,0x03,0x00,0x27,0x08,0x00,0x00, - 0x3e,0x06,0x03,0x02,0x2b,0x07,0x01,0x00,0x37,0x07,0x04,0x07,0x25,0x08,0x05,0x00, - 0x10,0x09,0x02,0x00,0x24,0x08,0x09,0x08,0x10,0x09,0x06,0x00,0x3e,0x07,0x03,0x03, - 0x0e,0x00,0x07,0x00,0x54,0x09,0x07,0x80,0x2b,0x09,0x01,0x00,0x37,0x09,0x04,0x09, - 0x10,0x0a,0x02,0x00,0x10,0x0b,0x06,0x00,0x3e,0x09,0x03,0x03,0x10,0x08,0x0a,0x00, - 0x10,0x07,0x09,0x00,0x0f,0x00,0x07,0x00,0x54,0x09,0x08,0x80,0x34,0x09,0x06,0x00, - 0x31,0x0a,0x07,0x00,0x3e,0x09,0x02,0x03,0x10,0x03,0x0a,0x00,0x10,0x05,0x09,0x00, - 0x0e,0x00,0x05,0x00,0x54,0x09,0x01,0x80,0x10,0x08,0x03,0x00,0x33,0x09,0x08,0x00, - 0x33,0x0a,0x09,0x00,0x37,0x0b,0x0a,0x01,0x3a,0x0b,0x0b,0x0a,0x3a,0x0a,0x0c,0x09, - 0x0e,0x00,0x08,0x00,0x54,0x0a,0x22,0x80,0x37,0x0a,0x0d,0x03,0x09,0x0a,0x00,0x00, - 0x54,0x0b,0x01,0x80,0x38,0x03,0x01,0x03,0x29,0x0b,0x00,0x00,0x27,0x0c,0x00,0x00, - 0x01,0x0c,0x0a,0x00,0x54,0x0c,0x08,0x80,0x2b,0x0c,0x03,0x00,0x37,0x0c,0x0e,0x0c, - 0x27,0x0d,0xff,0xff,0x36,0x0c,0x0d,0x0c,0x36,0x0c,0x0c,0x06,0x13,0x0d,0x0c,0x00, - 0x14,0x0b,0x00,0x0d,0x39,0x03,0x0b,0x0c,0x2b,0x0c,0x02,0x00,0x37,0x0c,0x0f,0x0c, - 0x27,0x0d,0xff,0xff,0x10,0x0e,0x03,0x00,0x0c,0x0f,0x0b,0x00,0x54,0x0f,0x01,0x80, - 0x25,0x0f,0x10,0x00,0x29,0x10,0x00,0x00,0x27,0x11,0x01,0x00,0x27,0x12,0x40,0x1f, - 0x27,0x13,0x00,0x00,0x29,0x14,0x00,0x00,0x3e,0x0c,0x09,0x02,0x3b,0x0c,0x01,0x09, - 0x37,0x0c,0x0c,0x09,0x27,0x0d,0x01,0x00,0x3a,0x0d,0x11,0x0c,0x54,0x0a,0x09,0x80, - 0x37,0x0a,0x0c,0x09,0x27,0x0b,0x00,0x00,0x3a,0x0b,0x11,0x0a,0x2b,0x0a,0x04,0x00, - 0x37,0x0a,0x12,0x0a,0x27,0x0b,0xce,0x00,0x10,0x0c,0x08,0x00,0x3e,0x0a,0x03,0x02, - 0x3b,0x0a,0x01,0x09,0x2b,0x0a,0x04,0x00,0x37,0x0a,0x13,0x0a,0x37,0x0b,0x14,0x00, - 0x10,0x0c,0x09,0x00,0x3e,0x0a,0x03,0x01,0x30,0x00,0x00,0x80,0x47,0x00,0x01,0x00, - 0x09,0xc0,0x05,0xc0,0x07,0xc0,0x08,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73, - 0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0f,0x6d,0x61,0x6b,0x65,0x5f,0x65,0x72,0x72, - 0x6f,0x72,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x05,0x12,0x6d,0x61,0x6b,0x65, - 0x5f,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78, - 0x74,0x06,0x6e,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63, - 0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d, - 0x6d,0x61,0x6e,0x64,0x09,0x65,0x76,0x61,0x6c,0x01,0x00,0x01,0x08,0x74,0x61,0x67, - 0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x00,0x0a,0x70,0x63,0x61,0x6c,0x6c, - 0x0c,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x0b,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x09, - 0x63,0x6f,0x72,0x6f,0x0a,0x73,0x74,0x61,0x63,0x6b,0x13,0x47,0x6f,0x69,0x6e,0x67, - 0x20,0x74,0x6f,0x20,0x65,0x76,0x61,0x6c,0x20,0x0a,0x44,0x45,0x42,0x55,0x47,0x02, - 0xf9,0x06,0x00,0x03,0x0c,0x03,0x2e,0x00,0x73,0x37,0x03,0x00,0x01,0x0f,0x00,0x03, - 0x00,0x54,0x04,0x0e,0x80,0x2b,0x03,0x00,0x00,0x37,0x03,0x01,0x03,0x37,0x03,0x02, - 0x03,0x37,0x04,0x00,0x01,0x36,0x03,0x04,0x03,0x0e,0x00,0x03,0x00,0x54,0x03,0x07, - 0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x27,0x04,0xc8,0x00,0x25,0x05,0x04, - 0x00,0x37,0x06,0x00,0x01,0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x01,0x37,0x03,0x05, - 0x01,0x34,0x04,0x06,0x00,0x37,0x05,0x07,0x01,0x3e,0x04,0x02,0x02,0x10,0x06,0x03, - 0x00,0x37,0x05,0x08,0x03,0x2b,0x07,0x02,0x00,0x37,0x07,0x09,0x07,0x27,0x08,0x01, - 0x00,0x29,0x09,0x02,0x00,0x3e,0x05,0x05,0x02,0x0e,0x00,0x05,0x00,0x54,0x05,0x0b, - 0x80,0x2b,0x05,0x01,0x00,0x37,0x05,0x0a,0x05,0x37,0x06,0x0b,0x00,0x33,0x07,0x0c, - 0x00,0x33,0x08,0x0d,0x00,0x37,0x09,0x0e,0x01,0x3a,0x09,0x0f,0x08,0x3a,0x08,0x10, - 0x07,0x3e,0x05,0x03,0x01,0x29,0x05,0x00,0x00,0x48,0x05,0x02,0x00,0x33,0x05,0x12, - 0x00,0x37,0x06,0x11,0x01,0x3a,0x06,0x13,0x05,0x37,0x06,0x14,0x01,0x0e,0x00,0x06, - 0x00,0x54,0x07,0x01,0x80,0x25,0x06,0x15,0x00,0x3a,0x06,0x16,0x05,0x37,0x06,0x17, - 0x01,0x06,0x06,0x18,0x00,0x54,0x06,0x02,0x80,0x29,0x06,0x01,0x00,0x54,0x07,0x01, - 0x80,0x29,0x06,0x02,0x00,0x3a,0x06,0x19,0x05,0x3a,0x03,0x1a,0x05,0x3a,0x04,0x1b, - 0x05,0x34,0x06,0x06,0x00,0x37,0x07,0x1c,0x01,0x0e,0x00,0x07,0x00,0x54,0x08,0x01, - 0x80,0x27,0x07,0x00,0x00,0x3e,0x06,0x02,0x02,0x3a,0x06,0x1d,0x05,0x37,0x06,0x00, - 0x01,0x0e,0x00,0x06,0x00,0x54,0x07,0x01,0x80,0x25,0x06,0x1e,0x00,0x3a,0x06,0x1f, - 0x05,0x37,0x06,0x11,0x01,0x07,0x06,0x20,0x00,0x54,0x06,0x0d,0x80,0x3a,0x02,0x21, - 0x05,0x2b,0x06,0x01,0x00,0x37,0x06,0x23,0x06,0x27,0x07,0xcf,0x00,0x34,0x08,0x24, - 0x00,0x25,0x09,0x25,0x00,0x10,0x0a,0x02,0x00,0x25,0x0b,0x26,0x00,0x24,0x09,0x0b, - 0x09,0x3e,0x08,0x02,0x00,0x3d,0x06,0x01,0x02,0x3a,0x06,0x22,0x05,0x54,0x06,0x0b, - 0x80,0x37,0x06,0x11,0x01,0x06,0x06,0x27,0x00,0x54,0x06,0x08,0x80,0x2b,0x06,0x01, - 0x00,0x37,0x06,0x03,0x06,0x27,0x07,0xc9,0x00,0x25,0x08,0x28,0x00,0x37,0x09,0x11, - 0x01,0x25,0x0a,0x29,0x00,0x24,0x08,0x0a,0x08,0x3e,0x06,0x03,0x01,0x2b,0x06,0x00, - 0x00,0x37,0x06,0x01,0x06,0x37,0x06,0x2a,0x06,0x10,0x07,0x05,0x00,0x3e,0x06,0x02, - 0x02,0x2b,0x07,0x01,0x00,0x37,0x07,0x0a,0x07,0x37,0x08,0x0b,0x00,0x33,0x09,0x2b, - 0x00,0x33,0x0a,0x2c,0x00,0x37,0x0b,0x0e,0x01,0x3a,0x0b,0x0f,0x0a,0x37,0x0b,0x16, - 0x05,0x3a,0x0b,0x16,0x0a,0x3a,0x06,0x2d,0x0a,0x3a,0x0a,0x10,0x09,0x3e,0x07,0x03, - 0x01,0x47,0x00,0x01,0x00,0x03,0xc0,0x04,0xc0,0x06,0xc0,0x07,0x69,0x64,0x01,0x00, - 0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x13,0x62,0x72,0x65,0x61,0x6b,0x70, - 0x6f,0x69,0x6e,0x74,0x5f,0x73,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d, - 0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x17, - 0x20,0x6e,0x6f,0x74,0x20,0x79,0x65,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74, - 0x65,0x64,0x0d,0x42,0x50,0x20,0x74,0x79,0x70,0x65,0x20,0x09,0x6c,0x69,0x6e,0x65, - 0x06,0x29,0x0d,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x0f,0x6c,0x6f,0x61,0x64, - 0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x0e,0x63,0x6f, - 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x0f,0x65,0x78,0x70,0x72,0x65,0x73,0x73,0x69, - 0x6f,0x6e,0x10,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x12,0x68, - 0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x07,0x3e,0x3d,0x0e, - 0x68,0x69,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x06,0x68,0x0b,0x6c,0x69,0x6e,0x65, - 0x6e,0x6f,0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x0e,0x74,0x65,0x6d,0x70, - 0x6f,0x72,0x61,0x72,0x79,0x06,0x31,0x06,0x72,0x0a,0x73,0x74,0x61,0x74,0x65,0x0c, - 0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x06,0x73,0x09,0x74,0x79,0x70,0x65,0x01,0x00, - 0x01,0x0e,0x68,0x69,0x74,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x03,0x00,0x06,0x74,0x09, - 0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, - 0x13,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x73,0x65,0x74,0x01, - 0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08, - 0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0d,0x62,0x61,0x73, - 0x65,0x5f,0x64,0x69,0x72,0x09,0x66,0x69,0x6e,0x64,0x06,0x6e,0x0d,0x74,0x6f,0x6e, - 0x75,0x6d,0x62,0x65,0x72,0x06,0x66,0x25,0x49,0x6e,0x76,0x61,0x6c,0x69,0x64,0x20, - 0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x70, - 0x65,0x72,0x61,0x74,0x6f,0x72,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x13,0x68, - 0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x10,0x62,0x72, - 0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x06,0x6f,0xdc,0x01,0x00,0x02,0x0a, - 0x02,0x0c,0x01,0x16,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x37,0x03,0x01,0x00, - 0x33,0x04,0x02,0x00,0x33,0x05,0x03,0x00,0x37,0x06,0x04,0x01,0x3a,0x06,0x05,0x05, - 0x3a,0x05,0x06,0x04,0x2b,0x05,0x00,0x00,0x37,0x05,0x07,0x05,0x27,0x06,0xcd,0x00, - 0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x37,0x07,0x09,0x07,0x34,0x08,0x0a,0x00, - 0x37,0x09,0x0b,0x01,0x3e,0x08,0x02,0x00,0x3d,0x07,0x00,0x00,0x3d,0x05,0x01,0x00, - 0x3c,0x05,0x00,0x00,0x3e,0x02,0x03,0x01,0x47,0x00,0x01,0x00,0x04,0xc0,0x03,0xc0, - 0x06,0x64,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0c,0x67,0x65,0x74,0x5f, - 0x78,0x6d,0x6c,0x10,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x0b, - 0x61,0x73,0x73,0x65,0x72,0x74,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e, - 0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c, - 0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x13,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, - 0x6e,0x74,0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65, - 0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f, - 0x78,0x6d,0x6c,0x03,0x80,0x80,0xc0,0x99,0x04,0xe8,0x01,0x00,0x02,0x0b,0x02,0x0b, - 0x01,0x1c,0x33,0x02,0x00,0x00,0x33,0x03,0x01,0x00,0x37,0x04,0x02,0x01,0x3a,0x04, - 0x03,0x03,0x3a,0x03,0x04,0x02,0x34,0x03,0x05,0x00,0x2b,0x04,0x00,0x00,0x37,0x04, - 0x06,0x04,0x37,0x04,0x07,0x04,0x3e,0x04,0x01,0x00,0x3d,0x03,0x00,0x04,0x44,0x06, - 0x08,0x80,0x13,0x08,0x02,0x00,0x14,0x08,0x00,0x08,0x2b,0x09,0x00,0x00,0x37,0x09, - 0x06,0x09,0x37,0x09,0x08,0x09,0x10,0x0a,0x06,0x00,0x3e,0x09,0x02,0x02,0x39,0x09, - 0x08,0x02,0x42,0x06,0x03,0x03,0x4e,0x06,0xf6,0x7f,0x2b,0x03,0x01,0x00,0x37,0x03, - 0x09,0x03,0x37,0x04,0x0a,0x00,0x10,0x05,0x02,0x00,0x3e,0x03,0x03,0x01,0x47,0x00, - 0x01,0x00,0x03,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f, - 0x78,0x6d,0x6c,0x0c,0x67,0x65,0x74,0x5f,0x78,0x6d,0x6c,0x08,0x67,0x65,0x74,0x10, - 0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x0a,0x70,0x61,0x69,0x72, - 0x73,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69, - 0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61, - 0x6e,0x64,0x14,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x6c,0x69, - 0x73,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e, - 0x73,0x65,0x02,0xcf,0x04,0x00,0x02,0x09,0x02,0x18,0x00,0x57,0x2b,0x02,0x00,0x00, - 0x37,0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x34,0x03,0x02,0x00,0x37,0x04,0x03,0x01, - 0x3e,0x03,0x02,0x00,0x3d,0x02,0x00,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x07,0x80, - 0x2b,0x03,0x01,0x00,0x37,0x03,0x04,0x03,0x27,0x04,0xcd,0x00,0x25,0x05,0x05,0x00, - 0x37,0x06,0x03,0x01,0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x01,0x37,0x03,0x06,0x01, - 0x0f,0x00,0x03,0x00,0x54,0x04,0x0e,0x80,0x2b,0x03,0x00,0x00,0x37,0x03,0x00,0x03, - 0x37,0x03,0x07,0x03,0x37,0x04,0x06,0x01,0x36,0x03,0x04,0x03,0x0e,0x00,0x03,0x00, - 0x54,0x03,0x07,0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x04,0x03,0x27,0x04,0xc8,0x00, - 0x25,0x05,0x08,0x00,0x37,0x06,0x06,0x01,0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x01, - 0x33,0x03,0x09,0x00,0x33,0x04,0x0a,0x00,0x37,0x05,0x0b,0x01,0x3a,0x05,0x0c,0x04, - 0x3a,0x04,0x0d,0x03,0x29,0x04,0x01,0x00,0x37,0x05,0x0e,0x02,0x34,0x06,0x02,0x00, - 0x37,0x07,0x0f,0x01,0x3e,0x06,0x02,0x02,0x34,0x07,0x02,0x00,0x37,0x08,0x0e,0x02, - 0x3e,0x07,0x02,0x02,0x04,0x06,0x07,0x00,0x54,0x06,0x01,0x80,0x29,0x04,0x02,0x00, - 0x37,0x06,0x11,0x01,0x0e,0x00,0x06,0x00,0x54,0x07,0x01,0x80,0x37,0x06,0x10,0x02, - 0x3a,0x06,0x10,0x02,0x34,0x06,0x02,0x00,0x37,0x07,0x0f,0x01,0x0e,0x00,0x07,0x00, - 0x54,0x08,0x01,0x80,0x37,0x07,0x0e,0x02,0x3e,0x06,0x02,0x02,0x3a,0x06,0x0e,0x02, - 0x34,0x06,0x02,0x00,0x37,0x07,0x13,0x01,0x0e,0x00,0x07,0x00,0x54,0x08,0x01,0x80, - 0x37,0x07,0x12,0x02,0x3e,0x06,0x02,0x02,0x3a,0x06,0x12,0x02,0x37,0x06,0x06,0x01, - 0x0e,0x00,0x06,0x00,0x54,0x07,0x01,0x80,0x37,0x06,0x14,0x02,0x3a,0x06,0x14,0x02, - 0x0f,0x00,0x04,0x00,0x54,0x06,0x06,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x00,0x06, - 0x37,0x06,0x15,0x06,0x10,0x07,0x05,0x00,0x10,0x08,0x02,0x00,0x3e,0x06,0x03,0x01, - 0x2b,0x06,0x01,0x00,0x37,0x06,0x16,0x06,0x37,0x07,0x17,0x00,0x10,0x08,0x03,0x00, - 0x3e,0x06,0x03,0x01,0x47,0x00,0x01,0x00,0x03,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74, - 0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0b,0x75,0x70,0x64,0x61,0x74,0x65, - 0x12,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x06,0x68, - 0x0e,0x68,0x69,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x06,0x73,0x0a,0x73,0x74,0x61, - 0x74,0x65,0x06,0x6e,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x09,0x61,0x74,0x74,0x72, - 0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06, - 0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x16,0x62,0x72,0x65, - 0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x75,0x70,0x64,0x61,0x74,0x65,0x01,0x00, - 0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x25,0x49, - 0x6e,0x76,0x61,0x6c,0x69,0x64,0x20,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69, - 0x74,0x69,0x6f,0x6e,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x3a,0x20,0x13, - 0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x06,0x6f, - 0x17,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x69, - 0x6e,0x74,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x06,0x64,0x0d,0x74,0x6f,0x6e,0x75, - 0x6d,0x62,0x65,0x72,0x08,0x67,0x65,0x74,0x10,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f, - 0x69,0x6e,0x74,0x73,0x8a,0x02,0x00,0x02,0x07,0x02,0x0d,0x00,0x1e,0x33,0x02,0x00, - 0x00,0x33,0x03,0x01,0x00,0x37,0x04,0x02,0x01,0x3a,0x04,0x03,0x03,0x3a,0x03,0x04, - 0x02,0x37,0x03,0x05,0x01,0x0f,0x00,0x03,0x00,0x54,0x04,0x10,0x80,0x2b,0x03,0x00, - 0x00,0x37,0x03,0x06,0x03,0x37,0x03,0x07,0x03,0x34,0x04,0x08,0x00,0x37,0x05,0x05, - 0x01,0x3e,0x04,0x02,0x00,0x3d,0x03,0x00,0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x07, - 0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x09,0x03,0x27,0x04,0xcd,0x00,0x25,0x05,0x0a, - 0x00,0x37,0x06,0x05,0x01,0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x01,0x2b,0x03,0x01, - 0x00,0x37,0x03,0x0b,0x03,0x37,0x04,0x0c,0x00,0x10,0x05,0x02,0x00,0x3e,0x03,0x03, - 0x01,0x47,0x00,0x01,0x00,0x03,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65, - 0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x17,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x62, - 0x72,0x65,0x61,0x6b,0x70,0x69,0x6e,0x74,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x0d, - 0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x10, - 0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x06,0x64,0x09,0x61,0x74, - 0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69, - 0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x16,0x62, - 0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x72,0x65,0x6d,0x6f,0x76,0x65, - 0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65, - 0xa4,0x02,0x00,0x02,0x0c,0x02,0x10,0x01,0x27,0x27,0x02,0x00,0x00,0x2b,0x03,0x00, - 0x00,0x10,0x04,0x00,0x00,0x37,0x05,0x00,0x01,0x3e,0x03,0x03,0x02,0x27,0x04,0x00, - 0x00,0x34,0x05,0x01,0x00,0x37,0x05,0x02,0x05,0x27,0x06,0x01,0x00,0x49,0x04,0x12, - 0x80,0x10,0x09,0x03,0x00,0x37,0x08,0x03,0x03,0x10,0x0a,0x07,0x00,0x25,0x0b,0x04, - 0x00,0x3e,0x08,0x04,0x02,0x0e,0x00,0x08,0x00,0x54,0x09,0x01,0x80,0x54,0x04,0x0a, - 0x80,0x14,0x02,0x00,0x02,0x37,0x09,0x05,0x08,0x0f,0x00,0x09,0x00,0x54,0x0a,0x01, - 0x80,0x14,0x02,0x00,0x02,0x37,0x09,0x06,0x08,0x07,0x09,0x07,0x00,0x54,0x09,0x01, - 0x80,0x54,0x04,0x01,0x80,0x4b,0x04,0xee,0x7f,0x2b,0x04,0x01,0x00,0x37,0x04,0x08, - 0x04,0x37,0x05,0x09,0x00,0x33,0x06,0x0a,0x00,0x33,0x07,0x0b,0x00,0x37,0x08,0x0c, - 0x01,0x3a,0x08,0x0d,0x07,0x3a,0x02,0x0e,0x07,0x3a,0x07,0x0f,0x06,0x3e,0x04,0x03, - 0x01,0x47,0x00,0x01,0x00,0x0b,0xc0,0x04,0xc0,0x09,0x61,0x74,0x74,0x72,0x0a,0x64, - 0x65,0x70,0x74,0x68,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, - 0x10,0x73,0x74,0x61,0x63,0x6b,0x5f,0x64,0x65,0x70,0x74,0x68,0x01,0x00,0x01,0x08, - 0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74, - 0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x09,0x6d,0x61,0x69,0x6e,0x09,0x77, - 0x68,0x61,0x74,0x0f,0x69,0x73,0x74,0x61,0x69,0x6c,0x63,0x61,0x6c,0x6c,0x07,0x53, - 0x74,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x09,0x68,0x75,0x67,0x65,0x09,0x6d, - 0x61,0x74,0x68,0x06,0x6f,0x02,0xe9,0x01,0x00,0x02,0x06,0x02,0x0d,0x00,0x1d,0x33, - 0x02,0x00,0x00,0x3a,0x01,0x01,0x02,0x37,0x03,0x02,0x00,0x3a,0x03,0x03,0x02,0x2b, - 0x03,0x00,0x00,0x37,0x03,0x04,0x03,0x37,0x04,0x05,0x00,0x3e,0x03,0x02,0x02,0x0f, - 0x00,0x03,0x00,0x54,0x04,0x07,0x80,0x37,0x04,0x06,0x00,0x0f,0x00,0x04,0x00,0x54, - 0x05,0x04,0x80,0x3a,0x03,0x07,0x02,0x37,0x04,0x06,0x00,0x3a,0x04,0x08,0x02,0x54, - 0x04,0x09,0x80,0x2b,0x04,0x01,0x00,0x37,0x05,0x09,0x00,0x36,0x04,0x05,0x04,0x0e, - 0x00,0x04,0x00,0x54,0x05,0x01,0x80,0x25,0x04,0x0a,0x00,0x3a,0x04,0x07,0x02,0x27, - 0x04,0xff,0xff,0x3a,0x04,0x08,0x02,0x33,0x04,0x0b,0x00,0x3a,0x02,0x0c,0x04,0x48, - 0x04,0x02,0x00,0x00,0x00,0x02,0xc0,0x09,0x61,0x74,0x74,0x72,0x01,0x00,0x01,0x08, - 0x74,0x61,0x67,0x0a,0x73,0x74,0x61,0x63,0x6b,0x0e,0x75,0x6e,0x6b,0x6e,0x6f,0x77, - 0x6e,0x3a,0x2f,0x09,0x77,0x68,0x61,0x74,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x0d, - 0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x10,0x63,0x75,0x72,0x72,0x65,0x6e,0x74, - 0x6c,0x69,0x6e,0x65,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x0c,0x67,0x65,0x74,0x5f, - 0x75,0x72,0x69,0x0a,0x77,0x68,0x65,0x72,0x65,0x09,0x6e,0x61,0x6d,0x65,0x0a,0x6c, - 0x65,0x76,0x65,0x6c,0x01,0x00,0x01,0x09,0x74,0x79,0x70,0x65,0x09,0x66,0x69,0x6c, - 0x65,0x92,0x04,0x01,0x02,0x0f,0x03,0x17,0x01,0x47,0x33,0x02,0x00,0x00,0x31,0x03, - 0x01,0x00,0x33,0x04,0x02,0x00,0x33,0x05,0x03,0x00,0x37,0x06,0x04,0x01,0x3a,0x06, - 0x05,0x05,0x3a,0x05,0x06,0x04,0x2b,0x05,0x01,0x00,0x10,0x06,0x00,0x00,0x37,0x07, - 0x07,0x01,0x3e,0x05,0x03,0x02,0x37,0x06,0x08,0x01,0x0f,0x00,0x06,0x00,0x54,0x07, - 0x0f,0x80,0x34,0x06,0x09,0x00,0x37,0x07,0x08,0x01,0x3e,0x06,0x02,0x02,0x13,0x07, - 0x04,0x00,0x14,0x07,0x00,0x07,0x10,0x08,0x03,0x00,0x10,0x0a,0x05,0x00,0x37,0x09, - 0x0a,0x05,0x10,0x0b,0x06,0x00,0x25,0x0c,0x0b,0x00,0x3e,0x09,0x04,0x02,0x10,0x0a, - 0x06,0x00,0x3e,0x08,0x03,0x02,0x39,0x08,0x07,0x04,0x54,0x06,0x23,0x80,0x27,0x06, - 0x00,0x00,0x34,0x07,0x0c,0x00,0x37,0x07,0x0d,0x07,0x27,0x08,0x01,0x00,0x49,0x06, - 0x1e,0x80,0x10,0x0b,0x05,0x00,0x37,0x0a,0x0a,0x05,0x10,0x0c,0x09,0x00,0x25,0x0d, - 0x0e,0x00,0x3e,0x0a,0x04,0x02,0x0e,0x00,0x0a,0x00,0x54,0x0b,0x01,0x80,0x54,0x06, - 0x16,0x80,0x13,0x0b,0x04,0x00,0x14,0x0b,0x00,0x0b,0x10,0x0c,0x03,0x00,0x10,0x0d, - 0x0a,0x00,0x10,0x0e,0x09,0x00,0x3e,0x0c,0x03,0x02,0x39,0x0c,0x0b,0x04,0x37,0x0b, - 0x0f,0x0a,0x0f,0x00,0x0b,0x00,0x54,0x0c,0x07,0x80,0x13,0x0b,0x04,0x00,0x14,0x0b, - 0x00,0x0b,0x33,0x0c,0x10,0x00,0x33,0x0d,0x11,0x00,0x3a,0x09,0x12,0x0d,0x3a,0x0d, - 0x06,0x0c,0x39,0x0c,0x0b,0x04,0x37,0x0b,0x13,0x0a,0x07,0x0b,0x14,0x00,0x54,0x0b, - 0x01,0x80,0x54,0x06,0x01,0x80,0x4b,0x06,0xe2,0x7f,0x2b,0x06,0x02,0x00,0x37,0x06, - 0x15,0x06,0x37,0x07,0x16,0x00,0x10,0x08,0x04,0x00,0x3e,0x06,0x03,0x01,0x30,0x00, - 0x00,0x80,0x47,0x00,0x01,0x00,0x06,0xc0,0x0b,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74, - 0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x09,0x6d,0x61,0x69,0x6e,0x09,0x77, - 0x68,0x61,0x74,0x0a,0x6c,0x65,0x76,0x65,0x6c,0x01,0x00,0x03,0x09,0x74,0x79,0x70, - 0x65,0x09,0x66,0x69,0x6c,0x65,0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x11, - 0x74,0x61,0x69,0x6c,0x72,0x65,0x74,0x75,0x72,0x6e,0x3a,0x2f,0x0b,0x6c,0x69,0x6e, - 0x65,0x6e,0x6f,0x03,0xff,0xff,0xff,0xff,0x0f,0x01,0x00,0x01,0x08,0x74,0x61,0x67, - 0x0a,0x73,0x74,0x61,0x63,0x6b,0x0f,0x69,0x73,0x74,0x61,0x69,0x6c,0x63,0x61,0x6c, - 0x6c,0x09,0x6e,0x53,0x6c,0x74,0x09,0x68,0x75,0x67,0x65,0x09,0x6d,0x61,0x74,0x68, - 0x08,0x6e,0x53,0x6c,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x0d,0x74,0x6f,0x6e, - 0x75,0x6d,0x62,0x65,0x72,0x06,0x64,0x06,0x6f,0x09,0x61,0x74,0x74,0x72,0x13,0x74, - 0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01, - 0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x0e,0x73,0x74,0x61,0x63,0x6b, - 0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70, - 0x6f,0x6e,0x73,0x65,0x00,0x01,0x00,0x02,0x06,0x43,0x0c,0x63,0x63,0x6f,0x64,0x65, - 0x3a,0x2f,0x09,0x74,0x61,0x69,0x6c,0x11,0x74,0x61,0x69,0x6c,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x3a,0x2f,0x02,0xd1,0x02,0x00,0x02,0x0e,0x02,0x14,0x01,0x28,0x37,0x02, - 0x00,0x00,0x38,0x02,0x01,0x02,0x33,0x03,0x01,0x00,0x33,0x04,0x02,0x00,0x37,0x05, - 0x03,0x01,0x3a,0x05,0x04,0x04,0x3a,0x04,0x05,0x03,0x34,0x04,0x06,0x00,0x2b,0x05, - 0x00,0x00,0x37,0x05,0x07,0x05,0x37,0x05,0x08,0x05,0x3e,0x04,0x02,0x04,0x44,0x07, - 0x13,0x80,0x06,0x07,0x09,0x00,0x54,0x09,0x11,0x80,0x13,0x09,0x03,0x00,0x14,0x09, - 0x00,0x09,0x33,0x0a,0x0a,0x00,0x33,0x0b,0x0b,0x00,0x3a,0x07,0x0c,0x0b,0x34,0x0c, - 0x0d,0x00,0x10,0x0d,0x08,0x00,0x3e,0x0c,0x02,0x02,0x3a,0x0c,0x0e,0x0b,0x05,0x08, - 0x02,0x00,0x54,0x0c,0x02,0x80,0x25,0x0c,0x0f,0x00,0x54,0x0d,0x01,0x80,0x25,0x0c, - 0x10,0x00,0x3a,0x0c,0x11,0x0b,0x3a,0x0b,0x05,0x0a,0x39,0x0a,0x09,0x03,0x42,0x07, - 0x03,0x03,0x4e,0x07,0xeb,0x7f,0x2b,0x04,0x01,0x00,0x37,0x04,0x12,0x04,0x37,0x05, - 0x13,0x00,0x10,0x06,0x03,0x00,0x3e,0x04,0x03,0x01,0x47,0x00,0x01,0x00,0x03,0xc0, - 0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0c, - 0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x06,0x30,0x06,0x31,0x09,0x6e,0x61,0x6d,0x65, - 0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x07,0x69,0x64,0x01,0x00,0x00,0x01, - 0x00,0x01,0x08,0x74,0x61,0x67,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, - 0x06,0x6e,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x16,0x61,0x63,0x74,0x69,0x76, - 0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x0a,0x70,0x61,0x69, - 0x72,0x73,0x09,0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74, - 0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d, - 0x61,0x6e,0x64,0x13,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x5f,0x6c,0x69, - 0x73,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e, - 0x73,0x65,0x09,0x63,0x6f,0x72,0x6f,0x02,0xbf,0x03,0x00,0x02,0x09,0x02,0x15,0x00, - 0x31,0x2b,0x02,0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x04,0x00,0x01,0x3e,0x02,0x03, - 0x02,0x34,0x03,0x01,0x00,0x37,0x04,0x02,0x01,0x0e,0x00,0x04,0x00,0x54,0x05,0x01, - 0x80,0x27,0x04,0x00,0x00,0x3e,0x03,0x02,0x02,0x10,0x05,0x02,0x00,0x37,0x04,0x03, - 0x02,0x10,0x06,0x03,0x00,0x25,0x07,0x04,0x00,0x3e,0x04,0x04,0x02,0x0e,0x00,0x04, - 0x00,0x54,0x05,0x09,0x80,0x2b,0x04,0x01,0x00,0x37,0x04,0x05,0x04,0x27,0x05,0x2d, - 0x01,0x25,0x06,0x06,0x00,0x34,0x07,0x07,0x00,0x10,0x08,0x03,0x00,0x3e,0x07,0x02, - 0x02,0x24,0x06,0x07,0x06,0x3e,0x04,0x03,0x02,0x33,0x05,0x08,0x00,0x33,0x06,0x09, - 0x00,0x37,0x07,0x0a,0x01,0x3a,0x07,0x0b,0x06,0x3a,0x06,0x0c,0x05,0x33,0x06,0x0d, - 0x00,0x33,0x07,0x0e,0x00,0x3a,0x07,0x0c,0x06,0x3b,0x06,0x01,0x05,0x33,0x06,0x0f, - 0x00,0x33,0x07,0x10,0x00,0x3a,0x07,0x0c,0x06,0x3b,0x06,0x02,0x05,0x33,0x06,0x11, - 0x00,0x33,0x07,0x12,0x00,0x3a,0x07,0x0c,0x06,0x3b,0x06,0x03,0x05,0x2b,0x06,0x01, - 0x00,0x37,0x06,0x13,0x06,0x37,0x07,0x14,0x00,0x10,0x08,0x05,0x00,0x3e,0x06,0x03, - 0x01,0x47,0x00,0x01,0x00,0x0b,0xc0,0x04,0xc0,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65, - 0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x01,0x00,0x02,0x07,0x69,0x64,0x03,0x01,0x09,0x6e, - 0x61,0x6d,0x65,0x0b,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x01,0x00,0x01,0x08,0x74,0x61, - 0x67,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x01,0x00,0x02,0x07,0x69,0x64,0x03, - 0x02,0x09,0x6e,0x61,0x6d,0x65,0x0c,0x55,0x70,0x76,0x61,0x6c,0x75,0x65,0x01,0x00, - 0x01,0x08,0x74,0x61,0x67,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x01,0x00,0x02, - 0x07,0x69,0x64,0x03,0x00,0x09,0x6e,0x61,0x6d,0x65,0x0a,0x4c,0x6f,0x63,0x61,0x6c, - 0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x09, - 0x61,0x74,0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e, - 0x5f,0x69,0x64,0x06,0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, - 0x12,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x6e,0x61,0x6d,0x65,0x73,0x01,0x00, - 0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0d,0x74, - 0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x19,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20, - 0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x0a,0x65,0x72,0x72, - 0x6f,0x72,0x06,0x66,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x06,0x64,0x0d,0x74, - 0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x06,0x6f,0xba,0x04,0x00,0x02,0x18,0x05,0x18, - 0x01,0x54,0x34,0x02,0x00,0x00,0x37,0x03,0x01,0x01,0x0e,0x00,0x03,0x00,0x54,0x04, - 0x01,0x80,0x27,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x2b,0x03,0x00,0x00,0x37,0x03, - 0x02,0x03,0x36,0x03,0x02,0x03,0x0e,0x00,0x03,0x00,0x54,0x04,0x09,0x80,0x2b,0x03, - 0x01,0x00,0x37,0x03,0x03,0x03,0x27,0x04,0x2e,0x01,0x25,0x05,0x04,0x00,0x34,0x06, - 0x05,0x00,0x10,0x07,0x02,0x00,0x3e,0x06,0x02,0x02,0x24,0x05,0x06,0x05,0x3e,0x03, - 0x03,0x02,0x34,0x04,0x00,0x00,0x37,0x05,0x06,0x01,0x0e,0x00,0x05,0x00,0x54,0x06, - 0x01,0x80,0x27,0x05,0x00,0x00,0x3e,0x04,0x02,0x02,0x2b,0x05,0x02,0x00,0x10,0x06, - 0x00,0x00,0x37,0x07,0x07,0x01,0x3e,0x05,0x03,0x02,0x37,0x06,0x08,0x00,0x10,0x07, - 0x05,0x00,0x10,0x08,0x04,0x00,0x3e,0x06,0x03,0x02,0x33,0x07,0x09,0x00,0x33,0x08, - 0x0a,0x00,0x37,0x09,0x0b,0x01,0x3a,0x09,0x0c,0x08,0x2b,0x09,0x00,0x00,0x3a,0x09, - 0x0d,0x08,0x3a,0x08,0x0e,0x07,0x09,0x02,0x00,0x00,0x54,0x08,0x03,0x80,0x34,0x08, - 0x0f,0x00,0x0e,0x00,0x08,0x00,0x54,0x09,0x04,0x80,0x34,0x08,0x10,0x00,0x36,0x09, - 0x03,0x06,0x3e,0x08,0x02,0x02,0x37,0x08,0x11,0x08,0x36,0x09,0x03,0x06,0x29,0x0a, - 0x00,0x00,0x54,0x0b,0x17,0x80,0x13,0x0d,0x07,0x00,0x14,0x0d,0x00,0x0d,0x2b,0x0e, - 0x03,0x00,0x37,0x0e,0x12,0x0e,0x10,0x0f,0x02,0x00,0x10,0x10,0x0c,0x00,0x10,0x11, - 0x0b,0x00,0x29,0x12,0x00,0x00,0x27,0x13,0x00,0x00,0x2b,0x14,0x04,0x00,0x37,0x14, - 0x13,0x14,0x37,0x14,0x14,0x14,0x27,0x15,0x00,0x00,0x2b,0x16,0x04,0x00,0x37,0x16, - 0x13,0x16,0x37,0x16,0x15,0x16,0x09,0x02,0x00,0x00,0x54,0x17,0x02,0x80,0x29,0x17, - 0x01,0x00,0x54,0x18,0x01,0x80,0x29,0x17,0x02,0x00,0x3e,0x0e,0x0a,0x02,0x39,0x0e, - 0x0d,0x07,0x41,0x0b,0x03,0x03,0x4e,0x0b,0xe7,0x7f,0x2b,0x08,0x01,0x00,0x37,0x08, - 0x16,0x08,0x37,0x09,0x17,0x00,0x10,0x0a,0x07,0x00,0x3e,0x08,0x03,0x01,0x47,0x00, - 0x01,0x00,0x08,0xc0,0x04,0xc0,0x0b,0xc0,0x07,0xc0,0x05,0xc0,0x08,0x73,0x6b,0x74, - 0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0d,0x6d,0x61,0x78,0x5f,0x64,0x61, - 0x74,0x61,0x11,0x6d,0x61,0x78,0x5f,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x0d, - 0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x12,0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72, - 0x6f,0x70,0x65,0x72,0x74,0x79,0x0d,0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x11, - 0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x09,0x6e,0x65,0x78, - 0x74,0x09,0x61,0x74,0x74,0x72,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x13,0x74, - 0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01, - 0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x10,0x63,0x6f,0x6e,0x74,0x65, - 0x78,0x74,0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65, - 0x73,0x70,0x6f,0x6e,0x73,0x65,0x0a,0x73,0x74,0x61,0x63,0x6b,0x06,0x6f,0x06,0x64, - 0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x16,0x4e,0x6f,0x20,0x73,0x75,0x63, - 0x68,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f, - 0x72,0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x06,0x63,0x0d,0x74,0x6f,0x6e,0x75, - 0x6d,0x62,0x65,0x72,0x02,0x20,0x00,0x02,0x04,0x00,0x01,0x00,0x03,0x34,0x02,0x00, - 0x00,0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x11,0x67,0x65,0x74,0x6d,0x65,0x74, - 0x61,0x74,0x61,0x62,0x6c,0x65,0x24,0x00,0x03,0x06,0x00,0x01,0x00,0x04,0x34,0x03, - 0x00,0x00,0x10,0x04,0x01,0x00,0x10,0x05,0x02,0x00,0x40,0x03,0x03,0x00,0x11,0x73, - 0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0xa8,0x06,0x00,0x02,0x15, - 0x06,0x24,0x00,0x7a,0x34,0x02,0x00,0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x01,0x03, - 0x37,0x04,0x02,0x01,0x3e,0x03,0x02,0x02,0x10,0x04,0x03,0x00,0x37,0x03,0x03,0x03, - 0x25,0x05,0x04,0x00,0x3e,0x03,0x03,0x00,0x3d,0x02,0x00,0x03,0x34,0x04,0x05,0x00, - 0x37,0x05,0x06,0x01,0x0e,0x00,0x05,0x00,0x54,0x06,0x01,0x80,0x10,0x05,0x02,0x00, - 0x3e,0x04,0x02,0x02,0x10,0x02,0x04,0x00,0x2b,0x04,0x01,0x00,0x37,0x04,0x07,0x04, - 0x36,0x04,0x02,0x04,0x0e,0x00,0x04,0x00,0x54,0x05,0x09,0x80,0x2b,0x04,0x02,0x00, - 0x37,0x04,0x08,0x04,0x27,0x05,0x2e,0x01,0x25,0x06,0x09,0x00,0x34,0x07,0x0a,0x00, - 0x10,0x08,0x02,0x00,0x3e,0x07,0x02,0x02,0x24,0x06,0x07,0x06,0x3e,0x04,0x03,0x02, - 0x34,0x05,0x05,0x00,0x37,0x06,0x0b,0x01,0x0e,0x00,0x06,0x00,0x54,0x07,0x01,0x80, - 0x27,0x06,0x00,0x00,0x3e,0x05,0x02,0x02,0x2b,0x06,0x03,0x00,0x10,0x07,0x00,0x00, - 0x37,0x08,0x0c,0x01,0x3e,0x06,0x03,0x02,0x34,0x07,0x05,0x00,0x37,0x08,0x0d,0x01, - 0x0e,0x00,0x08,0x00,0x54,0x09,0x03,0x80,0x2b,0x08,0x00,0x00,0x37,0x08,0x0e,0x08, - 0x37,0x08,0x0f,0x08,0x3e,0x07,0x02,0x02,0x27,0x08,0x00,0x00,0x01,0x07,0x08,0x00, - 0x54,0x08,0x01,0x80,0x29,0x07,0x00,0x00,0x34,0x08,0x05,0x00,0x37,0x09,0x10,0x01, - 0x0e,0x00,0x09,0x00,0x54,0x0a,0x01,0x80,0x27,0x09,0x00,0x00,0x3e,0x08,0x02,0x02, - 0x37,0x09,0x11,0x00,0x10,0x0a,0x06,0x00,0x10,0x0b,0x05,0x00,0x3e,0x09,0x03,0x02, - 0x2b,0x0a,0x02,0x00,0x37,0x0a,0x00,0x0a,0x27,0x0b,0xce,0x00,0x2b,0x0c,0x00,0x00, - 0x37,0x0c,0x12,0x0c,0x25,0x0d,0x13,0x00,0x10,0x0e,0x03,0x00,0x24,0x0d,0x0e,0x0d, - 0x2b,0x0e,0x04,0x00,0x3e,0x0c,0x03,0x00,0x3d,0x0a,0x01,0x02,0x34,0x0b,0x14,0x00, - 0x27,0x0c,0x02,0x00,0x2b,0x0d,0x02,0x00,0x37,0x0d,0x00,0x0d,0x27,0x0e,0x2c,0x01, - 0x34,0x0f,0x15,0x00,0x10,0x10,0x0a,0x00,0x36,0x11,0x04,0x09,0x3e,0x0f,0x03,0x00, - 0x3d,0x0d,0x01,0x00,0x3d,0x0b,0x01,0x02,0x2b,0x0c,0x05,0x00,0x37,0x0c,0x16,0x0c, - 0x10,0x0d,0x02,0x00,0x10,0x0e,0x0b,0x00,0x10,0x0f,0x03,0x00,0x10,0x10,0x03,0x00, - 0x2b,0x11,0x00,0x00,0x37,0x11,0x0e,0x11,0x37,0x11,0x17,0x11,0x2b,0x12,0x00,0x00, - 0x37,0x12,0x0e,0x12,0x37,0x12,0x18,0x12,0x10,0x13,0x08,0x00,0x10,0x14,0x07,0x00, - 0x3e,0x0c,0x09,0x02,0x10,0x0e,0x03,0x00,0x37,0x0d,0x03,0x03,0x25,0x0f,0x19,0x00, - 0x3e,0x0d,0x03,0x02,0x05,0x0d,0x03,0x00,0x54,0x0d,0x03,0x80,0x37,0x0d,0x1a,0x0c, - 0x25,0x0e,0x1c,0x00,0x3a,0x0e,0x1b,0x0d,0x2b,0x0d,0x02,0x00,0x37,0x0d,0x1d,0x0d, - 0x37,0x0e,0x1e,0x00,0x33,0x0f,0x1f,0x00,0x33,0x10,0x20,0x00,0x37,0x11,0x21,0x01, - 0x3a,0x11,0x22,0x10,0x2b,0x11,0x01,0x00,0x3a,0x11,0x23,0x10,0x3a,0x10,0x1a,0x0f, - 0x3b,0x0c,0x01,0x0f,0x3e,0x0d,0x03,0x01,0x47,0x00,0x01,0x00,0x05,0xc0,0x08,0xc0, - 0x04,0xc0,0x0b,0xc0,0x0c,0xc0,0x07,0xc0,0x0c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74, - 0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06, - 0x69,0x01,0x00,0x01,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x11,0x70,0x72,0x6f, - 0x70,0x65,0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x01,0x00,0x01,0x08,0x74,0x61,0x67, - 0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65, - 0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0c,0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x09,0x74, - 0x79,0x70,0x65,0x09,0x61,0x74,0x74,0x72,0x17,0x5e,0x5b,0x25,0x77,0x5f,0x5d,0x2b, - 0x25,0x5b,0x2e,0x2d,0x25,0x62,0x5b,0x5d,0x25,0x5d,0x24,0x11,0x6d,0x61,0x78,0x5f, - 0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x0e,0x6d,0x61,0x78,0x5f,0x64,0x65,0x70, - 0x74,0x68,0x12,0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79, - 0x0a,0x70,0x63,0x61,0x6c,0x6c,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x0c,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x0b,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x0a,0x73,0x74,0x61, - 0x63,0x6b,0x06,0x70,0x0d,0x6d,0x61,0x78,0x5f,0x64,0x61,0x74,0x61,0x0d,0x66,0x65, - 0x61,0x74,0x75,0x72,0x65,0x73,0x06,0x6d,0x06,0x6f,0x06,0x64,0x0d,0x74,0x6f,0x73, - 0x74,0x72,0x69,0x6e,0x67,0x16,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x63,0x6f, - 0x6e,0x74,0x65,0x78,0x74,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x0c,0x43,0x6f, - 0x6e,0x74,0x65,0x78,0x74,0x06,0x63,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72, - 0x14,0x5e,0x28,0x25,0x2d,0x3f,0x25,0x64,0x2b,0x29,0x7c,0x28,0x2e,0x2a,0x29,0x24, - 0x0a,0x6d,0x61,0x74,0x63,0x68,0x06,0x6e,0x0a,0x75,0x6e,0x62,0x36,0x34,0x0b,0x61, - 0x73,0x73,0x65,0x72,0x74,0x38,0x00,0x02,0x05,0x01,0x02,0x00,0x08,0x27,0x02,0xff, - 0xff,0x3a,0x02,0x00,0x01,0x2b,0x02,0x00,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00, - 0x00,0x10,0x04,0x01,0x00,0x3e,0x02,0x03,0x01,0x47,0x00,0x01,0x00,0x0a,0xc0,0x11, - 0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x06,0x6d,0xf7,0x04, - 0x00,0x03,0x13,0x05,0x1d,0x00,0x62,0x34,0x03,0x00,0x00,0x2b,0x04,0x00,0x00,0x37, - 0x04,0x01,0x04,0x37,0x05,0x02,0x01,0x3e,0x04,0x02,0x02,0x10,0x05,0x04,0x00,0x37, - 0x04,0x03,0x04,0x25,0x06,0x04,0x00,0x3e,0x04,0x03,0x00,0x3d,0x03,0x00,0x03,0x34, - 0x05,0x05,0x00,0x37,0x06,0x06,0x01,0x0e,0x00,0x06,0x00,0x54,0x07,0x01,0x80,0x10, - 0x06,0x03,0x00,0x3e,0x05,0x02,0x02,0x10,0x03,0x05,0x00,0x2b,0x05,0x01,0x00,0x37, - 0x05,0x07,0x05,0x36,0x05,0x03,0x05,0x0e,0x00,0x05,0x00,0x54,0x06,0x09,0x80,0x2b, - 0x05,0x02,0x00,0x37,0x05,0x08,0x05,0x27,0x06,0x2e,0x01,0x25,0x07,0x09,0x00,0x34, - 0x08,0x0a,0x00,0x10,0x09,0x03,0x00,0x3e,0x08,0x02,0x02,0x24,0x07,0x08,0x07,0x3e, - 0x05,0x03,0x02,0x34,0x06,0x05,0x00,0x37,0x07,0x0b,0x01,0x0e,0x00,0x07,0x00,0x54, - 0x08,0x01,0x80,0x27,0x07,0x00,0x00,0x3e,0x06,0x02,0x02,0x2b,0x07,0x03,0x00,0x10, - 0x08,0x00,0x00,0x37,0x09,0x0c,0x01,0x3e,0x07,0x03,0x02,0x37,0x08,0x0d,0x00,0x10, - 0x09,0x07,0x00,0x10,0x0a,0x06,0x00,0x3e,0x08,0x03,0x02,0x34,0x09,0x0e,0x00,0x27, - 0x0a,0x02,0x00,0x2b,0x0b,0x02,0x00,0x37,0x0b,0x00,0x0b,0x27,0x0c,0xce,0x00,0x34, - 0x0d,0x0f,0x00,0x2b,0x0e,0x02,0x00,0x37,0x0e,0x00,0x0e,0x27,0x0f,0xce,0x00,0x2b, - 0x10,0x00,0x00,0x37,0x10,0x10,0x10,0x25,0x11,0x11,0x00,0x10,0x12,0x02,0x00,0x24, - 0x11,0x12,0x11,0x10,0x12,0x08,0x00,0x3e,0x10,0x03,0x00,0x3d,0x0e,0x01,0x00,0x3d, - 0x0d,0x00,0x00,0x3d,0x0b,0x01,0x00,0x3d,0x09,0x01,0x02,0x2b,0x0a,0x02,0x00,0x37, - 0x0a,0x00,0x0a,0x27,0x0b,0xce,0x00,0x2b,0x0c,0x00,0x00,0x37,0x0c,0x10,0x0c,0x10, - 0x0d,0x04,0x00,0x25,0x0e,0x12,0x00,0x24,0x0d,0x0e,0x0d,0x34,0x0e,0x13,0x00,0x33, - 0x0f,0x14,0x00,0x3a,0x09,0x15,0x0f,0x2b,0x10,0x04,0x00,0x3e,0x0e,0x03,0x00,0x3d, - 0x0c,0x01,0x00,0x3d,0x0a,0x01,0x02,0x2b,0x0b,0x02,0x00,0x37,0x0b,0x00,0x0b,0x27, - 0x0c,0xce,0x00,0x34,0x0d,0x0f,0x00,0x10,0x0e,0x0a,0x00,0x36,0x0f,0x05,0x08,0x3e, - 0x0d,0x03,0x00,0x3d,0x0b,0x01,0x01,0x2b,0x0b,0x02,0x00,0x37,0x0b,0x16,0x0b,0x37, - 0x0c,0x17,0x00,0x33,0x0d,0x18,0x00,0x33,0x0e,0x19,0x00,0x37,0x0f,0x1a,0x01,0x3a, - 0x0f,0x1b,0x0e,0x3a,0x0e,0x1c,0x0d,0x3e,0x0b,0x03,0x01,0x47,0x00,0x01,0x00,0x05, - 0xc0,0x08,0xc0,0x04,0xc0,0x0b,0xc0,0x0c,0xc0,0x09,0x61,0x74,0x74,0x72,0x13,0x74, - 0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01, - 0x00,0x01,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x03,0x01,0x01,0x00,0x01,0x08, - 0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74, - 0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x0a,0x76,0x61,0x6c,0x75,0x65,0x01, - 0x00,0x00,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0d, - 0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x0c,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x0b,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x0a,0x70,0x63,0x61,0x6c,0x6c,0x0b,0x73,0x65, - 0x6c,0x65,0x63,0x74,0x0a,0x73,0x74,0x61,0x63,0x6b,0x06,0x6f,0x06,0x64,0x0d,0x74, - 0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x16,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20, - 0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x0c, - 0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x06,0x63,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62, - 0x65,0x72,0x14,0x5e,0x28,0x25,0x2d,0x3f,0x25,0x64,0x2b,0x29,0x7c,0x28,0x2e,0x2a, - 0x29,0x24,0x0a,0x6d,0x61,0x74,0x63,0x68,0x06,0x6e,0x0a,0x75,0x6e,0x62,0x36,0x34, - 0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0xfd,0x05,0x00,0x02,0x10,0x03,0x26,0x02,0x7c, - 0x29,0x02,0x00,0x00,0x37,0x03,0x00,0x01,0x0f,0x00,0x03,0x00,0x54,0x04,0x06,0x80, - 0x2b,0x03,0x00,0x00,0x37,0x03,0x01,0x03,0x37,0x04,0x00,0x01,0x3e,0x03,0x02,0x02, - 0x10,0x02,0x03,0x00,0x54,0x03,0x18,0x80,0x37,0x03,0x02,0x00,0x10,0x04,0x03,0x00, - 0x37,0x03,0x03,0x03,0x27,0x05,0x00,0x00,0x25,0x06,0x04,0x00,0x3e,0x03,0x04,0x02, - 0x37,0x02,0x05,0x03,0x34,0x03,0x06,0x00,0x10,0x05,0x02,0x00,0x37,0x04,0x07,0x02, - 0x27,0x06,0x01,0x00,0x27,0x07,0x01,0x00,0x3e,0x04,0x04,0x02,0x06,0x04,0x08,0x00, - 0x54,0x04,0x02,0x80,0x29,0x04,0x01,0x00,0x54,0x05,0x01,0x80,0x29,0x04,0x02,0x00, - 0x3e,0x03,0x02,0x01,0x10,0x04,0x02,0x00,0x37,0x03,0x07,0x02,0x27,0x05,0x02,0x00, - 0x3e,0x03,0x03,0x02,0x10,0x02,0x03,0x00,0x34,0x03,0x09,0x00,0x37,0x03,0x0a,0x03, - 0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x03,0x0e,0x00,0x03,0x00,0x54,0x05,0x06,0x80, - 0x2b,0x05,0x01,0x00,0x37,0x05,0x0b,0x05,0x27,0x06,0x64,0x00,0x10,0x07,0x04,0x00, - 0x33,0x08,0x0c,0x00,0x3e,0x05,0x04,0x01,0x10,0x06,0x03,0x00,0x37,0x05,0x0d,0x03, - 0x27,0x07,0x01,0x00,0x3e,0x05,0x03,0x02,0x07,0x05,0x0e,0x00,0x54,0x05,0x08,0x80, - 0x2b,0x05,0x01,0x00,0x37,0x05,0x0b,0x05,0x27,0x06,0x64,0x00,0x37,0x07,0x00,0x01, - 0x25,0x08,0x0f,0x00,0x24,0x07,0x08,0x07,0x33,0x08,0x10,0x00,0x3e,0x05,0x04,0x01, - 0x10,0x06,0x03,0x00,0x37,0x05,0x11,0x03,0x25,0x07,0x12,0x00,0x27,0x08,0x00,0x00, - 0x3e,0x05,0x04,0x01,0x32,0x05,0x00,0x00,0x34,0x06,0x13,0x00,0x37,0x07,0x14,0x01, - 0x0e,0x00,0x07,0x00,0x54,0x08,0x01,0x80,0x27,0x07,0x00,0x00,0x3e,0x06,0x02,0x02, - 0x34,0x07,0x13,0x00,0x37,0x08,0x15,0x01,0x0e,0x00,0x08,0x00,0x54,0x09,0x02,0x80, - 0x34,0x08,0x16,0x00,0x37,0x08,0x17,0x08,0x3e,0x07,0x02,0x02,0x27,0x08,0x00,0x00, - 0x10,0x0a,0x03,0x00,0x37,0x09,0x18,0x03,0x3e,0x09,0x02,0x04,0x54,0x0c,0x0c,0x80, - 0x14,0x08,0x00,0x08,0x03,0x06,0x08,0x00,0x54,0x0d,0x06,0x80,0x03,0x08,0x07,0x00, - 0x54,0x0d,0x04,0x80,0x13,0x0d,0x05,0x00,0x14,0x0d,0x00,0x0d,0x39,0x0c,0x0d,0x05, - 0x54,0x0d,0x03,0x80,0x03,0x07,0x08,0x00,0x54,0x0d,0x01,0x80,0x54,0x09,0x02,0x80, - 0x41,0x0c,0x03,0x02,0x4e,0x0c,0xf2,0x7f,0x10,0x0a,0x03,0x00,0x37,0x09,0x19,0x03, - 0x3e,0x09,0x02,0x01,0x13,0x09,0x05,0x00,0x14,0x09,0x00,0x09,0x25,0x0a,0x1a,0x00, - 0x39,0x0a,0x09,0x05,0x2b,0x09,0x01,0x00,0x37,0x09,0x1b,0x09,0x37,0x0a,0x1c,0x00, - 0x33,0x0b,0x1d,0x00,0x33,0x0c,0x1e,0x00,0x37,0x0d,0x1f,0x01,0x3a,0x0d,0x20,0x0c, - 0x3a,0x0c,0x21,0x0b,0x2b,0x0c,0x02,0x00,0x37,0x0c,0x22,0x0c,0x34,0x0d,0x23,0x00, - 0x37,0x0d,0x24,0x0d,0x10,0x0e,0x05,0x00,0x25,0x0f,0x25,0x00,0x3e,0x0d,0x03,0x00, - 0x3d,0x0c,0x00,0x00,0x3c,0x0c,0x01,0x00,0x3e,0x09,0x03,0x01,0x47,0x00,0x01,0x00, - 0x06,0xc0,0x04,0xc0,0x05,0xc0,0x06,0x0a,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a, - 0x74,0x61,0x62,0x6c,0x65,0x08,0x62,0x36,0x34,0x09,0x61,0x74,0x74,0x72,0x13,0x74, - 0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x06,0x69,0x01, - 0x00,0x02,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x03,0x01,0x0c,0x63,0x6f,0x6d, - 0x6d,0x61,0x6e,0x64,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x01,0x00,0x01,0x08,0x74, - 0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d, - 0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x05,0x0a,0x63,0x6c,0x6f,0x73,0x65,0x0a, - 0x6c,0x69,0x6e,0x65,0x73,0x09,0x68,0x75,0x67,0x65,0x09,0x6d,0x61,0x74,0x68,0x06, - 0x65,0x06,0x62,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x08,0x73,0x65,0x74, - 0x09,0x73,0x65,0x65,0x6b,0x01,0x00,0x01,0x0c,0x73,0x75,0x63,0x63,0x65,0x73,0x73, - 0x03,0x00,0x11,0x20,0x69,0x73,0x20,0x62,0x79,0x74,0x65,0x63,0x6f,0x64,0x65,0x06, - 0x21,0x09,0x72,0x65,0x61,0x64,0x01,0x00,0x01,0x0c,0x73,0x75,0x63,0x63,0x65,0x73, - 0x73,0x03,0x00,0x0a,0x65,0x72,0x72,0x6f,0x72,0x09,0x6f,0x70,0x65,0x6e,0x07,0x69, - 0x6f,0x06,0x40,0x08,0x73,0x75,0x62,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x0b,0x73, - 0x6f,0x75,0x72,0x63,0x65,0x06,0x53,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x09, - 0x63,0x6f,0x72,0x6f,0x0d,0x67,0x65,0x74,0x5f,0x70,0x61,0x74,0x68,0x06,0x66,0x02, - 0x03,0x80,0x80,0xc0,0x99,0x04,0xbc,0x02,0x00,0x02,0x07,0x03,0x12,0x00,0x2a,0x37, - 0x02,0x00,0x01,0x07,0x02,0x01,0x00,0x54,0x02,0x08,0x80,0x34,0x02,0x02,0x00,0x2b, - 0x03,0x00,0x00,0x34,0x04,0x02,0x00,0x37,0x04,0x03,0x04,0x2b,0x05,0x00,0x00,0x36, - 0x04,0x05,0x04,0x39,0x04,0x03,0x02,0x54,0x02,0x13,0x80,0x34,0x02,0x02,0x00,0x2b, - 0x03,0x00,0x00,0x34,0x04,0x04,0x00,0x33,0x05,0x06,0x00,0x37,0x06,0x05,0x00,0x3a, - 0x06,0x05,0x05,0x2b,0x06,0x00,0x00,0x3a,0x06,0x07,0x05,0x37,0x06,0x00,0x01,0x07, - 0x06,0x08,0x00,0x54,0x06,0x04,0x80,0x2b,0x06,0x01,0x00,0x37,0x06,0x09,0x06,0x0e, - 0x00,0x06,0x00,0x54,0x07,0x02,0x80,0x2b,0x06,0x01,0x00,0x37,0x06,0x0a,0x06,0x3e, - 0x04,0x03,0x02,0x39,0x04,0x03,0x02,0x2b,0x02,0x02,0x00,0x37,0x02,0x0b,0x02,0x37, - 0x03,0x05,0x00,0x33,0x04,0x0c,0x00,0x33,0x05,0x0d,0x00,0x2b,0x06,0x00,0x00,0x3a, - 0x06,0x0e,0x05,0x37,0x06,0x0f,0x01,0x3a,0x06,0x10,0x05,0x3a,0x05,0x11,0x04,0x3e, - 0x02,0x03,0x01,0x47,0x00,0x01,0x00,0x00,0xc0,0x00,0x00,0x01,0x00,0x09,0x61,0x74, - 0x74,0x72,0x13,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69, - 0x64,0x06,0x69,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x01,0x00,0x01,0x0c,0x73, - 0x75,0x63,0x63,0x65,0x73,0x73,0x06,0x31,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d, - 0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0d,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d, - 0x6c,0x14,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75,0x74,0x70,0x75, - 0x74,0x10,0x63,0x6f,0x70,0x79,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x06,0x31,0x09, - 0x6d,0x6f,0x64,0x65,0x01,0x00,0x00,0x08,0x73,0x6b,0x74,0x11,0x73,0x65,0x74,0x6d, - 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x09,0x62,0x61,0x73,0x65,0x07,0x69,0x6f, - 0x06,0x30,0x06,0x63,0x18,0x01,0x01,0x02,0x02,0x01,0x00,0x03,0x31,0x01,0x00,0x00, - 0x30,0x00,0x00,0x80,0x48,0x01,0x02,0x00,0x03,0xc0,0x04,0xc0,0x00,0xc9,0x07,0x03, - 0x00,0x11,0x00,0x4d,0x00,0x68,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00,0x34,0x01, - 0x00,0x00,0x37,0x01,0x02,0x01,0x34,0x02,0x03,0x00,0x25,0x03,0x04,0x00,0x3e,0x02, - 0x02,0x02,0x34,0x03,0x03,0x00,0x25,0x04,0x05,0x00,0x3e,0x03,0x02,0x02,0x34,0x04, - 0x03,0x00,0x25,0x05,0x06,0x00,0x3e,0x04,0x02,0x02,0x34,0x05,0x03,0x00,0x25,0x06, - 0x07,0x00,0x3e,0x05,0x02,0x02,0x34,0x06,0x03,0x00,0x25,0x07,0x08,0x00,0x3e,0x06, - 0x02,0x02,0x34,0x07,0x03,0x00,0x25,0x08,0x09,0x00,0x3e,0x07,0x02,0x02,0x34,0x08, - 0x03,0x00,0x25,0x09,0x0a,0x00,0x3e,0x08,0x02,0x02,0x37,0x09,0x0b,0x05,0x32,0x0a, - 0x00,0x00,0x31,0x0b,0x0c,0x00,0x31,0x0c,0x0e,0x00,0x3a,0x0c,0x0d,0x0a,0x31,0x0c, - 0x10,0x00,0x3a,0x0c,0x0f,0x0a,0x31,0x0c,0x12,0x00,0x3a,0x0c,0x11,0x0a,0x31,0x0c, - 0x14,0x00,0x3a,0x0c,0x13,0x0a,0x31,0x0c,0x16,0x00,0x3a,0x0c,0x15,0x0a,0x31,0x0c, - 0x18,0x00,0x3a,0x0c,0x17,0x0a,0x31,0x0c,0x1a,0x00,0x3a,0x0c,0x19,0x0a,0x31,0x0c, - 0x1c,0x00,0x3a,0x0c,0x1b,0x0a,0x31,0x0c,0x1e,0x00,0x3a,0x0c,0x1d,0x0a,0x31,0x0c, - 0x20,0x00,0x3a,0x0c,0x1f,0x0a,0x31,0x0c,0x22,0x00,0x3a,0x0c,0x21,0x0a,0x31,0x0c, - 0x24,0x00,0x3a,0x0c,0x23,0x0a,0x31,0x0c,0x26,0x00,0x3a,0x0c,0x25,0x0a,0x31,0x0c, - 0x28,0x00,0x3a,0x0c,0x27,0x0a,0x31,0x0c,0x2a,0x00,0x3a,0x0c,0x29,0x0a,0x31,0x0c, - 0x2c,0x00,0x3a,0x0c,0x2b,0x0a,0x31,0x0c,0x2e,0x00,0x3a,0x0c,0x2d,0x0a,0x31,0x0c, - 0x30,0x00,0x3a,0x0c,0x2f,0x0a,0x31,0x0c,0x32,0x00,0x3a,0x0c,0x31,0x0a,0x31,0x0c, - 0x34,0x00,0x3a,0x0c,0x33,0x0a,0x31,0x0c,0x36,0x00,0x3a,0x0c,0x35,0x0a,0x33,0x0c, - 0x38,0x00,0x37,0x0d,0x37,0x07,0x3a,0x0d,0x37,0x0c,0x34,0x0d,0x39,0x00,0x32,0x0e, - 0x00,0x00,0x33,0x0f,0x3b,0x00,0x31,0x10,0x3a,0x00,0x3a,0x10,0x3c,0x0f,0x31,0x10, - 0x3d,0x00,0x3a,0x10,0x3e,0x0f,0x3e,0x0d,0x03,0x02,0x3a,0x0d,0x3f,0x0c,0x37,0x0d, - 0x40,0x05,0x3a,0x0d,0x41,0x0c,0x3a,0x0c,0x3c,0x0c,0x31,0x0d,0x43,0x00,0x3a,0x0d, - 0x42,0x0a,0x31,0x0d,0x45,0x00,0x3a,0x0d,0x44,0x0a,0x31,0x0d,0x47,0x00,0x3a,0x0d, - 0x46,0x0a,0x31,0x0d,0x49,0x00,0x3a,0x0d,0x48,0x0a,0x31,0x0d,0x4a,0x00,0x10,0x0e, - 0x0d,0x00,0x25,0x0f,0x4b,0x00,0x3e,0x0e,0x02,0x02,0x3a,0x0e,0x4b,0x0a,0x10,0x0e, - 0x0d,0x00,0x25,0x0f,0x4c,0x00,0x3e,0x0e,0x02,0x02,0x3a,0x0e,0x4c,0x0a,0x30,0x00, - 0x00,0x80,0x48,0x0a,0x02,0x00,0x0b,0x73,0x74,0x64,0x65,0x72,0x72,0x0b,0x73,0x74, - 0x64,0x6f,0x75,0x74,0x00,0x00,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x00,0x11,0x70, - 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x73,0x65,0x74,0x00,0x13,0x70,0x72,0x6f, - 0x70,0x65,0x72,0x74,0x79,0x5f,0x76,0x61,0x6c,0x75,0x65,0x00,0x11,0x70,0x72,0x6f, - 0x70,0x65,0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x10,0x65,0x6e,0x76,0x69,0x72,0x6f, - 0x6e,0x6d,0x65,0x6e,0x74,0x0d,0x65,0x76,0x61,0x6c,0x5f,0x65,0x6e,0x76,0x0e,0x6d, - 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0f,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e, - 0x64,0x65,0x78,0x00,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x01,0x00,0x00,0x00, - 0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x01,0x00,0x00, - 0x0e,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x00,0x10,0x63,0x6f,0x6e,0x74, - 0x65,0x78,0x74,0x5f,0x67,0x65,0x74,0x00,0x12,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74, - 0x5f,0x6e,0x61,0x6d,0x65,0x73,0x00,0x13,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, - 0x65,0x5f,0x6c,0x69,0x73,0x74,0x00,0x0e,0x73,0x74,0x61,0x63,0x6b,0x5f,0x67,0x65, - 0x74,0x00,0x10,0x73,0x74,0x61,0x63,0x6b,0x5f,0x64,0x65,0x70,0x74,0x68,0x00,0x16, - 0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x72,0x65,0x6d,0x6f,0x76, - 0x65,0x00,0x16,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x75,0x70, - 0x64,0x61,0x74,0x65,0x00,0x14,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74, - 0x5f,0x6c,0x69,0x73,0x74,0x00,0x13,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e, - 0x74,0x5f,0x67,0x65,0x74,0x00,0x13,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e, - 0x74,0x5f,0x73,0x65,0x74,0x00,0x09,0x65,0x76,0x61,0x6c,0x00,0x0e,0x73,0x74,0x65, - 0x70,0x5f,0x69,0x6e,0x74,0x6f,0x00,0x0d,0x73,0x74,0x65,0x70,0x5f,0x6f,0x75,0x74, - 0x00,0x0e,0x73,0x74,0x65,0x70,0x5f,0x6f,0x76,0x65,0x72,0x00,0x08,0x72,0x75,0x6e, - 0x00,0x10,0x74,0x79,0x70,0x65,0x6d,0x61,0x70,0x5f,0x67,0x65,0x74,0x00,0x10,0x66, - 0x65,0x61,0x74,0x75,0x72,0x65,0x5f,0x73,0x65,0x74,0x00,0x10,0x66,0x65,0x61,0x74, - 0x75,0x72,0x65,0x5f,0x67,0x65,0x74,0x00,0x09,0x73,0x74,0x6f,0x70,0x00,0x0b,0x73, - 0x74,0x61,0x74,0x75,0x73,0x00,0x0a,0x62,0x72,0x65,0x61,0x6b,0x00,0x08,0x6c,0x6f, - 0x67,0x15,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x6e,0x74,0x65, - 0x78,0x74,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e,0x74,0x72, - 0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x16,0x64,0x65,0x62,0x75,0x67,0x67, - 0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x12,0x64,0x65,0x62,0x75, - 0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x12,0x64,0x65,0x62,0x75,0x67,0x67, - 0x65,0x72,0x2e,0x64,0x62,0x67,0x70,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, - 0x2e,0x63,0x6f,0x72,0x65,0x0a,0x64,0x65,0x62,0x75,0x67,0x0c,0x72,0x65,0x71,0x75, - 0x69,0x72,0x65,0x0a,0x79,0x69,0x65,0x6c,0x64,0x09,0x77,0x72,0x61,0x70,0x0e,0x63, - 0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x1b,0x00,0x01,0x03,0x00,0x01,0x00,0x03, - 0x34,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x40,0x01,0x02,0x00,0x0c,0x67,0x65,0x74, - 0x66,0x65,0x6e,0x76,0x7e,0x00,0x02,0x04,0x03,0x01,0x00,0x1b,0x2b,0x02,0x00,0x00, - 0x36,0x02,0x02,0x01,0x2b,0x03,0x01,0x00,0x36,0x02,0x03,0x02,0x37,0x02,0x00,0x02, - 0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x00,0x00,0x36,0x02,0x02,0x01, - 0x37,0x02,0x00,0x02,0x48,0x02,0x02,0x00,0x54,0x02,0x0e,0x80,0x2b,0x02,0x02,0x00, - 0x36,0x02,0x02,0x01,0x2b,0x03,0x01,0x00,0x36,0x02,0x03,0x02,0x37,0x02,0x00,0x02, - 0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x02,0x00,0x36,0x02,0x02,0x01, - 0x37,0x02,0x00,0x02,0x48,0x02,0x02,0x00,0x54,0x02,0x02,0x80,0x32,0x02,0x00,0x00, - 0x48,0x02,0x02,0x00,0x47,0x00,0x01,0x00,0x03,0xc0,0x07,0xc0,0x04,0xc0,0x09,0x5f, - 0x45,0x4e,0x56,0x83,0x01,0x00,0x02,0x04,0x04,0x00,0x00,0x1d,0x2b,0x02,0x00,0x00, - 0x36,0x02,0x02,0x00,0x2b,0x03,0x01,0x00,0x36,0x02,0x03,0x02,0x36,0x02,0x01,0x02, - 0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x00,0x00,0x36,0x02,0x02,0x00, - 0x36,0x02,0x01,0x02,0x48,0x02,0x02,0x00,0x54,0x02,0x10,0x80,0x2b,0x02,0x02,0x00, - 0x36,0x02,0x02,0x00,0x2b,0x03,0x01,0x00,0x36,0x02,0x03,0x02,0x36,0x02,0x01,0x02, - 0x0f,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x02,0x00,0x36,0x02,0x02,0x00, - 0x36,0x02,0x01,0x02,0x48,0x02,0x02,0x00,0x54,0x02,0x04,0x80,0x2b,0x02,0x03,0x00, - 0x36,0x02,0x02,0x00,0x36,0x02,0x01,0x02,0x48,0x02,0x02,0x00,0x47,0x00,0x01,0x00, - 0x03,0xc0,0x07,0xc0,0x04,0xc0,0x05,0xc0,0x77,0x00,0x03,0x05,0x04,0x00,0x00,0x1a, - 0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x2b,0x04,0x01,0x00,0x36,0x03,0x04,0x03, - 0x36,0x03,0x01,0x03,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x2b,0x03,0x00,0x00, - 0x36,0x03,0x03,0x00,0x39,0x02,0x01,0x03,0x54,0x03,0x0e,0x80,0x2b,0x03,0x02,0x00, - 0x36,0x03,0x03,0x00,0x2b,0x04,0x01,0x00,0x36,0x03,0x04,0x03,0x36,0x03,0x01,0x03, - 0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x2b,0x03,0x02,0x00,0x36,0x03,0x03,0x00, - 0x39,0x02,0x01,0x03,0x54,0x03,0x03,0x80,0x2b,0x03,0x03,0x00,0x36,0x03,0x03,0x00, - 0x39,0x02,0x01,0x03,0x47,0x00,0x01,0x00,0x03,0xc0,0x07,0xc0,0x04,0xc0,0x05,0xc0, - 0xd1,0x02,0x00,0x01,0x0f,0x03,0x0a,0x01,0x41,0x33,0x01,0x00,0x00,0x34,0x02,0x01, - 0x00,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x2b,0x04,0x01,0x00,0x36,0x03,0x04, - 0x03,0x3e,0x02,0x02,0x04,0x44,0x05,0x13,0x80,0x13,0x07,0x01,0x00,0x14,0x07,0x00, - 0x07,0x25,0x08,0x02,0x00,0x34,0x09,0x03,0x00,0x10,0x0a,0x05,0x00,0x3e,0x09,0x02, - 0x02,0x25,0x0a,0x04,0x00,0x34,0x0b,0x03,0x00,0x10,0x0c,0x06,0x00,0x3e,0x0b,0x02, - 0x02,0x25,0x0c,0x05,0x00,0x34,0x0d,0x03,0x00,0x2b,0x0e,0x00,0x00,0x36,0x0e,0x0e, - 0x00,0x36,0x0e,0x05,0x0e,0x3e,0x0d,0x02,0x02,0x25,0x0e,0x06,0x00,0x24,0x08,0x0e, - 0x08,0x39,0x08,0x07,0x01,0x42,0x05,0x03,0x03,0x4e,0x05,0xeb,0x7f,0x13,0x02,0x01, - 0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x07,0x00,0x39,0x03,0x02,0x01,0x34,0x02,0x01, - 0x00,0x2b,0x03,0x02,0x00,0x36,0x03,0x03,0x00,0x2b,0x04,0x01,0x00,0x36,0x03,0x04, - 0x03,0x3e,0x02,0x02,0x04,0x44,0x05,0x13,0x80,0x13,0x07,0x01,0x00,0x14,0x07,0x00, - 0x07,0x25,0x08,0x02,0x00,0x34,0x09,0x03,0x00,0x10,0x0a,0x05,0x00,0x3e,0x09,0x02, - 0x02,0x25,0x0a,0x04,0x00,0x34,0x0b,0x03,0x00,0x10,0x0c,0x06,0x00,0x3e,0x0b,0x02, - 0x02,0x25,0x0c,0x05,0x00,0x34,0x0d,0x03,0x00,0x2b,0x0e,0x02,0x00,0x36,0x0e,0x0e, - 0x00,0x36,0x0e,0x05,0x0e,0x3e,0x0d,0x02,0x02,0x25,0x0e,0x06,0x00,0x24,0x08,0x0e, - 0x08,0x39,0x08,0x07,0x01,0x42,0x05,0x03,0x03,0x4e,0x05,0xeb,0x7f,0x34,0x02,0x08, - 0x00,0x37,0x02,0x09,0x02,0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x03,0xc0,0x07, - 0xc0,0x04,0xc0,0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65, - 0x10,0x55,0x70,0x76,0x61,0x6c,0x75,0x65,0x73,0x3a,0x20,0x0a,0x06,0x0a,0x07,0x29, - 0x3d,0x06,0x28,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x06,0x09,0x0a,0x70, - 0x61,0x69,0x72,0x73,0x01,0x02,0x00,0x00,0x0e,0x4c,0x6f,0x63,0x61,0x6c,0x73,0x3a, - 0x20,0x0a,0x02,0xb2,0x01,0x00,0x02,0x0a,0x02,0x08,0x00,0x18,0x2b,0x02,0x00,0x00, - 0x36,0x02,0x02,0x00,0x36,0x02,0x01,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x08,0x80, - 0x34,0x03,0x00,0x00,0x25,0x04,0x01,0x00,0x34,0x05,0x02,0x00,0x10,0x06,0x01,0x00, - 0x3e,0x05,0x02,0x02,0x25,0x06,0x03,0x00,0x24,0x04,0x06,0x04,0x3e,0x03,0x02,0x01, - 0x2b,0x03,0x01,0x00,0x36,0x03,0x03,0x00,0x34,0x04,0x04,0x00,0x27,0x05,0x02,0x00, - 0x37,0x06,0x05,0x03,0x10,0x07,0x06,0x00,0x37,0x06,0x06,0x06,0x37,0x08,0x07,0x03, - 0x10,0x09,0x02,0x00,0x3e,0x06,0x04,0x00,0x3f,0x04,0x01,0x00,0x07,0xc0,0x08,0xc0, - 0x0a,0x6c,0x65,0x76,0x65,0x6c,0x0d,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x09, - 0x63,0x6f,0x72,0x6f,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x16,0x20,0x64,0x6f,0x65, - 0x73,0x20,0x6e,0x6f,0x74,0x20,0x65,0x78,0x69,0x73,0x74,0x73,0x2e,0x0d,0x74,0x6f, - 0x73,0x74,0x72,0x69,0x6e,0x67,0x0f,0x54,0x68,0x65,0x20,0x6c,0x6f,0x63,0x61,0x6c, - 0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x8b,0x01,0x00,0x03,0x0a,0x02,0x05,0x00,0x15, - 0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x36,0x03,0x01,0x03,0x0f,0x00,0x03,0x00, - 0x54,0x04,0x0a,0x80,0x2b,0x04,0x01,0x00,0x36,0x04,0x04,0x00,0x37,0x05,0x00,0x04, - 0x10,0x06,0x05,0x00,0x37,0x05,0x01,0x05,0x37,0x07,0x02,0x04,0x10,0x08,0x03,0x00, - 0x10,0x09,0x02,0x00,0x3e,0x05,0x05,0x01,0x54,0x04,0x05,0x80,0x34,0x04,0x03,0x00, - 0x25,0x05,0x04,0x00,0x10,0x06,0x01,0x00,0x24,0x05,0x06,0x05,0x3e,0x04,0x02,0x01, - 0x47,0x00,0x01,0x00,0x07,0xc0,0x08,0xc0,0x16,0x43,0x61,0x6e,0x6e,0x6f,0x74,0x20, - 0x73,0x65,0x74,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72, - 0x0a,0x6c,0x65,0x76,0x65,0x6c,0x0d,0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x09, - 0x63,0x6f,0x72,0x6f,0x46,0x00,0x02,0x06,0x01,0x01,0x00,0x0e,0x34,0x02,0x00,0x00, - 0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x10,0x04,0x01,0x00,0x3e,0x02,0x03,0x03, - 0x0f,0x00,0x02,0x00,0x54,0x04,0x04,0x80,0x10,0x04,0x02,0x00,0x36,0x05,0x02,0x00, - 0x46,0x04,0x03,0x00,0x54,0x04,0x02,0x80,0x29,0x04,0x00,0x00,0x48,0x04,0x02,0x00, - 0x47,0x00,0x01,0x00,0x07,0xc0,0x09,0x6e,0x65,0x78,0x74,0xa8,0x01,0x00,0x02,0x08, - 0x02,0x07,0x00,0x16,0x2b,0x02,0x00,0x00,0x36,0x02,0x02,0x00,0x36,0x02,0x01,0x02, - 0x0e,0x00,0x02,0x00,0x54,0x03,0x08,0x80,0x34,0x03,0x00,0x00,0x25,0x04,0x01,0x00, - 0x34,0x05,0x02,0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x25,0x06,0x03,0x00, - 0x24,0x04,0x06,0x04,0x3e,0x03,0x02,0x01,0x34,0x03,0x04,0x00,0x27,0x04,0x02,0x00, - 0x34,0x05,0x05,0x00,0x37,0x05,0x06,0x05,0x2b,0x06,0x01,0x00,0x36,0x06,0x06,0x00, - 0x10,0x07,0x02,0x00,0x3e,0x05,0x03,0x00,0x3f,0x03,0x01,0x00,0x07,0xc0,0x08,0xc0, - 0x0f,0x67,0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x0a,0x64,0x65,0x62,0x75, - 0x67,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x17,0x20,0x64,0x6f,0x65,0x73,0x20,0x6e, - 0x6f,0x74,0x20,0x65,0x78,0x69,0x74,0x73,0x74,0x73,0x2e,0x0d,0x74,0x6f,0x73,0x74, - 0x72,0x69,0x6e,0x67,0x0f,0x54,0x68,0x65,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x0a, - 0x65,0x72,0x72,0x6f,0x72,0x82,0x01,0x00,0x03,0x08,0x02,0x04,0x00,0x13,0x2b,0x03, - 0x00,0x00,0x36,0x03,0x03,0x00,0x36,0x03,0x01,0x03,0x0f,0x00,0x03,0x00,0x54,0x04, - 0x08,0x80,0x34,0x04,0x00,0x00,0x37,0x04,0x01,0x04,0x2b,0x05,0x01,0x00,0x36,0x05, - 0x05,0x00,0x10,0x06,0x03,0x00,0x10,0x07,0x02,0x00,0x3e,0x04,0x04,0x01,0x54,0x04, - 0x05,0x80,0x34,0x04,0x02,0x00,0x25,0x05,0x03,0x00,0x10,0x06,0x01,0x00,0x24,0x05, - 0x06,0x05,0x3e,0x04,0x02,0x01,0x47,0x00,0x01,0x00,0x07,0xc0,0x08,0xc0,0x18,0x43, - 0x61,0x6e,0x6e,0x6f,0x74,0x20,0x73,0x65,0x74,0x20,0x75,0x70,0x76,0x61,0x6c,0x75, - 0x65,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x0f,0x73,0x65,0x74,0x75,0x70,0x76,0x61, - 0x6c,0x75,0x65,0x0a,0x64,0x65,0x62,0x75,0x67,0x46,0x00,0x02,0x06,0x01,0x01,0x00, - 0x0e,0x34,0x02,0x00,0x00,0x2b,0x03,0x00,0x00,0x36,0x03,0x03,0x00,0x10,0x04,0x01, - 0x00,0x3e,0x02,0x03,0x03,0x0f,0x00,0x02,0x00,0x54,0x04,0x04,0x80,0x10,0x04,0x02, - 0x00,0x36,0x05,0x02,0x00,0x46,0x04,0x03,0x00,0x54,0x04,0x02,0x80,0x29,0x04,0x00, - 0x00,0x48,0x04,0x02,0x00,0x47,0x00,0x01,0x00,0x07,0xc0,0x09,0x6e,0x65,0x78,0x74, - 0xe9,0x04,0x00,0x03,0x10,0x08,0x14,0x00,0x6e,0x32,0x03,0x00,0x00,0x32,0x04,0x00, - 0x00,0x27,0x05,0x00,0x00,0x01,0x02,0x05,0x00,0x54,0x05,0x09,0x80,0x2b,0x05,0x00, - 0x00,0x37,0x05,0x00,0x05,0x27,0x06,0x2d,0x01,0x25,0x07,0x01,0x00,0x34,0x08,0x02, - 0x00,0x10,0x09,0x02,0x00,0x3e,0x08,0x02,0x02,0x24,0x07,0x08,0x07,0x3e,0x05,0x03, - 0x01,0x10,0x06,0x01,0x00,0x37,0x05,0x03,0x01,0x10,0x07,0x02,0x00,0x25,0x08,0x04, - 0x00,0x3e,0x05,0x04,0x02,0x0e,0x00,0x05,0x00,0x54,0x06,0x09,0x80,0x2b,0x05,0x00, - 0x00,0x37,0x05,0x00,0x05,0x27,0x06,0x2d,0x01,0x25,0x07,0x01,0x00,0x34,0x08,0x02, - 0x00,0x10,0x09,0x02,0x00,0x3e,0x08,0x02,0x02,0x24,0x07,0x08,0x07,0x3e,0x05,0x03, - 0x02,0x37,0x05,0x05,0x05,0x27,0x06,0x01,0x00,0x34,0x07,0x06,0x00,0x37,0x07,0x07, - 0x07,0x27,0x08,0x01,0x00,0x49,0x06,0x12,0x80,0x10,0x0b,0x01,0x00,0x37,0x0a,0x08, - 0x01,0x10,0x0c,0x02,0x00,0x10,0x0d,0x09,0x00,0x3e,0x0a,0x04,0x03,0x0e,0x00,0x0a, - 0x00,0x54,0x0c,0x02,0x80,0x54,0x06,0x0a,0x80,0x54,0x0c,0x08,0x80,0x10,0x0d,0x0a, - 0x00,0x37,0x0c,0x09,0x0a,0x27,0x0e,0x01,0x00,0x27,0x0f,0x01,0x00,0x3e,0x0c,0x04, - 0x02,0x06,0x0c,0x0a,0x00,0x54,0x0c,0x01,0x80,0x39,0x09,0x0a,0x03,0x4b,0x06,0xee, - 0x7f,0x27,0x06,0x01,0x00,0x34,0x07,0x06,0x00,0x37,0x07,0x07,0x07,0x27,0x08,0x01, - 0x00,0x49,0x06,0x0a,0x80,0x34,0x0a,0x0b,0x00,0x37,0x0a,0x0c,0x0a,0x10,0x0b,0x05, - 0x00,0x10,0x0c,0x09,0x00,0x3e,0x0a,0x03,0x03,0x0e,0x00,0x0a,0x00,0x54,0x0c,0x01, - 0x80,0x54,0x06,0x02,0x80,0x39,0x09,0x0a,0x04,0x4b,0x06,0xf6,0x7f,0x34,0x06,0x0d, - 0x00,0x32,0x07,0x00,0x08,0x2b,0x08,0x01,0x00,0x39,0x03,0x08,0x07,0x2b,0x08,0x02, - 0x00,0x33,0x09,0x0e,0x00,0x3a,0x02,0x0f,0x09,0x3a,0x01,0x10,0x09,0x39,0x09,0x08, - 0x07,0x37,0x08,0x11,0x00,0x3e,0x06,0x03,0x02,0x10,0x03,0x06,0x00,0x34,0x06,0x0d, - 0x00,0x32,0x07,0x00,0x08,0x2b,0x08,0x01,0x00,0x39,0x04,0x08,0x07,0x2b,0x08,0x02, - 0x00,0x39,0x05,0x08,0x07,0x37,0x08,0x12,0x00,0x3e,0x06,0x03,0x02,0x10,0x04,0x06, - 0x00,0x34,0x06,0x0d,0x00,0x32,0x07,0x00,0x10,0x2b,0x08,0x03,0x00,0x39,0x03,0x08, - 0x07,0x2b,0x08,0x04,0x00,0x39,0x04,0x08,0x07,0x2b,0x08,0x05,0x00,0x32,0x09,0x00, - 0x00,0x39,0x09,0x08,0x07,0x10,0x08,0x00,0x00,0x3e,0x06,0x03,0x02,0x34,0x07,0x13, - 0x00,0x10,0x08,0x06,0x00,0x2b,0x09,0x06,0x00,0x2b,0x0a,0x07,0x00,0x10,0x0b,0x05, - 0x00,0x10,0x0c,0x06,0x00,0x3e,0x0a,0x03,0x00,0x3d,0x07,0x02,0x01,0x48,0x06,0x02, - 0x00,0x01,0xc0,0x07,0xc0,0x08,0xc0,0x03,0xc0,0x04,0xc0,0x06,0xc0,0x05,0xc0,0x09, - 0x80,0x0b,0x72,0x61,0x77,0x73,0x65,0x74,0x11,0x55,0x70,0x76,0x61,0x6c,0x43,0x6f, - 0x6e,0x74,0x65,0x78,0x74,0x11,0x4c,0x6f,0x63,0x61,0x6c,0x43,0x6f,0x6e,0x74,0x65, - 0x78,0x74,0x09,0x63,0x6f,0x72,0x6f,0x0a,0x6c,0x65,0x76,0x65,0x6c,0x01,0x00,0x00, - 0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0f,0x67,0x65, - 0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x0a,0x64,0x65,0x62,0x75,0x67,0x06,0x28, - 0x08,0x73,0x75,0x62,0x0d,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x09,0x68,0x75, - 0x67,0x65,0x09,0x6d,0x61,0x74,0x68,0x09,0x66,0x75,0x6e,0x63,0x06,0x66,0x0c,0x67, - 0x65,0x74,0x69,0x6e,0x66,0x6f,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x1a, - 0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65, - 0x76,0x65,0x6c,0x3a,0x20,0x0a,0x65,0x72,0x72,0x6f,0x72,0x77,0x00,0x02,0x09,0x02, - 0x02,0x00,0x18,0x38,0x02,0x01,0x00,0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x29, - 0x02,0x02,0x00,0x2b,0x03,0x00,0x00,0x36,0x03,0x02,0x03,0x0e,0x00,0x03,0x00,0x54, - 0x04,0x03,0x80,0x32,0x03,0x00,0x00,0x2b,0x04,0x00,0x00,0x39,0x03,0x02,0x04,0x36, - 0x04,0x01,0x03,0x0e,0x00,0x04,0x00,0x54,0x05,0x09,0x80,0x2b,0x05,0x01,0x00,0x37, - 0x05,0x00,0x05,0x10,0x06,0x05,0x00,0x37,0x05,0x01,0x05,0x10,0x07,0x00,0x00,0x10, - 0x08,0x01,0x00,0x3e,0x05,0x04,0x02,0x10,0x04,0x05,0x00,0x39,0x04,0x01,0x03,0x48, - 0x04,0x02,0x00,0x00,0xc0,0x00,0x00,0x08,0x6e,0x65,0x77,0x0c,0x43,0x6f,0x6e,0x74, - 0x65,0x78,0x74,0x1a,0x01,0x00,0x02,0x01,0x01,0x00,0x04,0x32,0x00,0x00,0x00,0x31, - 0x01,0x00,0x00,0x30,0x00,0x00,0x80,0x48,0x01,0x02,0x00,0x00,0xc0,0x00,0xa8,0x03, - 0x03,0x00,0x0d,0x00,0x20,0x00,0x3b,0x32,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0x25, - 0x02,0x01,0x00,0x3e,0x01,0x02,0x02,0x34,0x02,0x00,0x00,0x25,0x03,0x02,0x00,0x3e, - 0x02,0x02,0x02,0x32,0x03,0x00,0x00,0x32,0x04,0x00,0x00,0x32,0x05,0x00,0x00,0x32, - 0x06,0x00,0x00,0x32,0x07,0x00,0x00,0x32,0x08,0x00,0x00,0x29,0x09,0x00,0x00,0x34, - 0x0a,0x03,0x00,0x07,0x0a,0x04,0x00,0x54,0x0a,0x02,0x80,0x31,0x09,0x05,0x00,0x54, - 0x0a,0x04,0x80,0x34,0x0a,0x03,0x00,0x07,0x0a,0x06,0x00,0x54,0x0a,0x01,0x80,0x31, - 0x09,0x07,0x00,0x33,0x0a,0x09,0x00,0x3b,0x03,0x00,0x0a,0x3b,0x05,0x01,0x0a,0x3b, - 0x04,0x02,0x0a,0x27,0x0b,0xff,0xff,0x39,0x06,0x0b,0x0a,0x3a,0x07,0x0a,0x0a,0x31, - 0x0b,0x0b,0x00,0x3a,0x0b,0x0c,0x0a,0x31,0x0b,0x0d,0x00,0x3a,0x0b,0x0e,0x0a,0x31, - 0x0b,0x0f,0x00,0x3a,0x0b,0x10,0x0a,0x33,0x0b,0x12,0x00,0x31,0x0c,0x11,0x00,0x3a, - 0x0c,0x0c,0x0b,0x31,0x0c,0x13,0x00,0x3a,0x0c,0x0e,0x0b,0x31,0x0c,0x14,0x00,0x3a, - 0x0c,0x15,0x0b,0x3a,0x0b,0x16,0x0a,0x33,0x0b,0x18,0x00,0x31,0x0c,0x17,0x00,0x3a, - 0x0c,0x0c,0x0b,0x31,0x0c,0x19,0x00,0x3a,0x0c,0x0e,0x0b,0x31,0x0c,0x1a,0x00,0x3a, - 0x0c,0x15,0x0b,0x3a,0x0b,0x1b,0x0a,0x31,0x0b,0x1c,0x00,0x3a,0x0b,0x1d,0x0a,0x3a, - 0x0a,0x08,0x00,0x31,0x0a,0x1f,0x00,0x3a,0x0a,0x1e,0x00,0x30,0x00,0x00,0x80,0x48, - 0x00,0x02,0x00,0x00,0x13,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x4d,0x61,0x6e,0x61, - 0x67,0x65,0x72,0x08,0x6e,0x65,0x77,0x00,0x11,0x55,0x70,0x76,0x61,0x6c,0x43,0x6f, - 0x6e,0x74,0x65,0x78,0x74,0x00,0x00,0x01,0x00,0x00,0x00,0x11,0x4c,0x6f,0x63,0x61, - 0x6c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0d,0x69,0x74,0x65,0x72,0x61,0x74,0x6f, - 0x72,0x00,0x00,0x01,0x00,0x00,0x00,0x0f,0x5f,0x5f,0x74,0x6f,0x73,0x74,0x72,0x69, - 0x6e,0x67,0x00,0x0f,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e,0x64,0x65,0x78,0x00,0x0c, - 0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x00,0x0a,0x53,0x54,0x4f,0x52,0x45,0x01,0x00, - 0x00,0x0c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x00,0x0c,0x4c,0x75,0x61,0x20,0x35, - 0x2e,0x32,0x00,0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x0d,0x5f,0x56,0x45,0x52, - 0x53,0x49,0x4f,0x4e,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74, - 0x69,0x6c,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x64,0x62,0x67,0x70, - 0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x43,0x00,0x01,0x08,0x00,0x02,0x00,0x0a, - 0x32,0x01,0x00,0x00,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00, - 0x3e,0x02,0x03,0x04,0x54,0x05,0x01,0x80,0x39,0x06,0x05,0x01,0x41,0x05,0x03,0x03, - 0x4e,0x05,0xfd,0x7f,0x48,0x01,0x02,0x00,0x11,0x25,0x2d,0x28,0x25,0x77,0x29,0x20, - 0x28,0x25,0x53,0x2b,0x29,0x0b,0x67,0x6d,0x61,0x74,0x63,0x68,0xe1,0x01,0x00,0x01, - 0x09,0x02,0x07,0x00,0x23,0x2a,0x01,0x03,0x00,0x10,0x05,0x00,0x00,0x37,0x04,0x00, - 0x00,0x25,0x06,0x01,0x00,0x27,0x07,0x01,0x00,0x29,0x08,0x02,0x00,0x3e,0x04,0x05, - 0x02,0x0f,0x00,0x04,0x00,0x54,0x05,0x0d,0x80,0x10,0x05,0x00,0x00,0x37,0x04,0x02, - 0x00,0x25,0x06,0x03,0x00,0x3e,0x04,0x03,0x04,0x10,0x03,0x06,0x00,0x10,0x02,0x05, - 0x00,0x10,0x01,0x04,0x00,0x2b,0x04,0x00,0x00,0x37,0x04,0x04,0x04,0x10,0x05,0x03, - 0x00,0x3e,0x04,0x02,0x02,0x10,0x03,0x04,0x00,0x54,0x04,0x06,0x80,0x10,0x05,0x00, - 0x00,0x37,0x04,0x02,0x00,0x25,0x06,0x05,0x00,0x3e,0x04,0x03,0x03,0x10,0x02,0x05, - 0x00,0x10,0x01,0x04,0x00,0x10,0x04,0x01,0x00,0x2b,0x05,0x01,0x00,0x37,0x05,0x06, - 0x05,0x10,0x06,0x02,0x00,0x3e,0x05,0x02,0x02,0x10,0x06,0x03,0x00,0x46,0x04,0x04, - 0x00,0x00,0xc0,0x08,0xc0,0x0e,0x61,0x72,0x67,0x5f,0x70,0x61,0x72,0x73,0x65,0x13, - 0x5e,0x28,0x25,0x53,0x2b,0x29,0x25,0x73,0x2b,0x28,0x2e,0x2a,0x29,0x24,0x0a,0x75, - 0x6e,0x62,0x36,0x34,0x21,0x5e,0x28,0x25,0x53,0x2b,0x29,0x25,0x73,0x2b,0x28,0x2e, - 0x2a,0x29,0x25,0x73,0x2b,0x25,0x2d,0x25,0x2d,0x25,0x73,0x2a,0x28,0x2e,0x2a,0x29, - 0x24,0x0a,0x6d,0x61,0x74,0x63,0x68,0x07,0x2d,0x2d,0x09,0x66,0x69,0x6e,0x64,0x68, - 0x00,0x01,0x06,0x01,0x02,0x01,0x15,0x32,0x01,0x00,0x00,0x51,0x02,0x10,0x80,0x10, - 0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x27,0x04,0x01,0x00,0x3e,0x02,0x03,0x03,0x0e, - 0x00,0x02,0x00,0x54,0x04,0x03,0x80,0x29,0x04,0x00,0x00,0x10,0x05,0x03,0x00,0x46, - 0x04,0x03,0x00,0x07,0x02,0x01,0x00,0x54,0x04,0x01,0x80,0x54,0x02,0x04,0x80,0x13, - 0x04,0x01,0x00,0x14,0x04,0x00,0x04,0x39,0x02,0x04,0x01,0x54,0x02,0xef,0x7f,0x2b, - 0x02,0x00,0x00,0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x07,0xc0,0x06,0x00,0x0c, - 0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x02,0x71,0x00,0x03,0x07,0x03,0x05,0x00,0x0f, - 0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x33,0x05,0x00,0x00,0x3a,0x00,0x01,0x05, - 0x3a,0x01,0x02,0x05,0x0c,0x06,0x02,0x00,0x54,0x06,0x01,0x80,0x32,0x06,0x00,0x00, - 0x3a,0x06,0x03,0x05,0x2b,0x06,0x02,0x00,0x37,0x06,0x04,0x06,0x3e,0x04,0x03,0x02, - 0x27,0x05,0x02,0x00,0x3e,0x03,0x03,0x01,0x47,0x00,0x01,0x00,0x01,0xc0,0x02,0xc0, - 0x08,0xc0,0x17,0x44,0x42,0x47,0x50,0x5f,0x45,0x52,0x52,0x5f,0x4d,0x45,0x54,0x41, - 0x54,0x41,0x42,0x4c,0x45,0x09,0x61,0x74,0x74,0x72,0x0c,0x6d,0x65,0x73,0x73,0x61, - 0x67,0x65,0x09,0x63,0x6f,0x64,0x65,0x01,0x00,0x00,0x37,0x02,0x02,0x05,0x01,0x01, - 0x00,0x0a,0x0e,0x00,0x01,0x00,0x54,0x02,0x05,0x80,0x2b,0x02,0x00,0x00,0x37,0x02, - 0x00,0x02,0x10,0x03,0x00,0x00,0x43,0x04,0x02,0x02,0x3e,0x02,0x03,0x01,0x10,0x02, - 0x01,0x00,0x43,0x03,0x02,0x00,0x45,0x02,0x01,0x00,0x08,0xc0,0x0a,0x65,0x72,0x72, - 0x6f,0x72,0x86,0x04,0x00,0x01,0x0e,0x07,0x0f,0x01,0x6c,0x2b,0x01,0x00,0x00,0x2b, - 0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x00,0x00,0x37, - 0x04,0x01,0x00,0x24,0x03,0x04,0x03,0x39,0x03,0x02,0x01,0x2b,0x01,0x00,0x00,0x2b, - 0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x02,0x00,0x39, - 0x03,0x02,0x01,0x2b,0x01,0x01,0x00,0x37,0x02,0x03,0x00,0x0e,0x00,0x02,0x00,0x54, - 0x03,0x01,0x80,0x32,0x02,0x00,0x00,0x3e,0x01,0x02,0x04,0x44,0x04,0x1c,0x80,0x2b, - 0x06,0x02,0x00,0x10,0x07,0x04,0x00,0x3e,0x06,0x02,0x02,0x07,0x06,0x04,0x00,0x54, - 0x06,0x17,0x80,0x2b,0x06,0x00,0x00,0x2b,0x07,0x00,0x00,0x13,0x07,0x07,0x00,0x14, - 0x07,0x00,0x07,0x10,0x08,0x04,0x00,0x25,0x09,0x05,0x00,0x2b,0x0a,0x03,0x00,0x10, - 0x0b,0x05,0x00,0x3e,0x0a,0x02,0x02,0x10,0x0b,0x0a,0x00,0x37,0x0a,0x06,0x0a,0x25, - 0x0c,0x07,0x00,0x2b,0x0d,0x04,0x00,0x3e,0x0a,0x04,0x02,0x25,0x0b,0x08,0x00,0x24, - 0x08,0x0b,0x08,0x39,0x08,0x07,0x06,0x2b,0x06,0x00,0x00,0x2b,0x07,0x00,0x00,0x13, - 0x07,0x07,0x00,0x14,0x07,0x00,0x07,0x25,0x08,0x02,0x00,0x39,0x08,0x07,0x06,0x42, - 0x04,0x03,0x03,0x4e,0x04,0xe2,0x7f,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13, - 0x02,0x02,0x00,0x29,0x03,0x00,0x00,0x39,0x03,0x02,0x01,0x38,0x01,0x01,0x00,0x0f, - 0x00,0x01,0x00,0x54,0x02,0x2a,0x80,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13, - 0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x09,0x00,0x39,0x03,0x02,0x01,0x2b, - 0x01,0x05,0x00,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x04,0x54,0x04,0x14,0x80,0x2b, - 0x06,0x02,0x00,0x10,0x07,0x05,0x00,0x3e,0x06,0x02,0x02,0x07,0x06,0x0a,0x00,0x54, - 0x06,0x04,0x80,0x2b,0x06,0x06,0x00,0x10,0x07,0x05,0x00,0x3e,0x06,0x02,0x01,0x54, - 0x06,0x0b,0x80,0x2b,0x06,0x00,0x00,0x2b,0x07,0x00,0x00,0x13,0x07,0x07,0x00,0x14, - 0x07,0x00,0x07,0x25,0x08,0x0b,0x00,0x2b,0x09,0x03,0x00,0x10,0x0a,0x05,0x00,0x3e, - 0x09,0x02,0x02,0x25,0x0a,0x0c,0x00,0x24,0x08,0x0a,0x08,0x39,0x08,0x07,0x06,0x41, - 0x04,0x03,0x03,0x4e,0x04,0xea,0x7f,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13, - 0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25,0x03,0x0d,0x00,0x37,0x04,0x01,0x00,0x25, - 0x05,0x09,0x00,0x24,0x03,0x05,0x03,0x39,0x03,0x02,0x01,0x54,0x01,0x06,0x80,0x2b, - 0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13,0x02,0x02,0x00,0x14,0x02,0x00,0x02,0x25, - 0x03,0x0e,0x00,0x39,0x03,0x02,0x01,0x47,0x00,0x01,0x00,0x01,0xc0,0x00,0x00,0x01, - 0x00,0x02,0x00,0x03,0x00,0x04,0x00,0x02,0xc0,0x07,0x2f,0x3e,0x07,0x3c,0x2f,0x08, - 0x5d,0x5d,0x3e,0x0e,0x3c,0x21,0x5b,0x43,0x44,0x41,0x54,0x41,0x5b,0x0a,0x74,0x61, - 0x62,0x6c,0x65,0x06,0x3e,0x06,0x22,0x0a,0x5b,0x22,0x26,0x3c,0x5d,0x09,0x67,0x73, - 0x75,0x62,0x07,0x3d,0x22,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x09,0x61,0x74,0x74, - 0x72,0x06,0x20,0x08,0x74,0x61,0x67,0x06,0x3c,0x02,0x38,0x01,0x01,0x05,0x06,0x01, - 0x00,0x09,0x32,0x01,0x00,0x00,0x31,0x02,0x00,0x00,0x10,0x03,0x02,0x00,0x10,0x04, - 0x00,0x00,0x3e,0x03,0x02,0x01,0x2b,0x03,0x05,0x00,0x10,0x04,0x01,0x00,0x30,0x00, - 0x00,0x80,0x40,0x03,0x02,0x00,0x04,0xc0,0x03,0xc0,0x06,0xc0,0x09,0xc0,0x05,0xc0, - 0x07,0xc0,0x00,0xf9,0x01,0x00,0x02,0x09,0x03,0x0a,0x00,0x20,0x37,0x02,0x00,0x01, - 0x0e,0x00,0x02,0x00,0x54,0x02,0x02,0x80,0x32,0x02,0x00,0x00,0x3a,0x02,0x00,0x01, - 0x37,0x02,0x00,0x01,0x25,0x03,0x02,0x00,0x3a,0x03,0x01,0x02,0x25,0x02,0x03,0x00, - 0x2b,0x03,0x00,0x00,0x37,0x03,0x04,0x03,0x10,0x04,0x01,0x00,0x3e,0x03,0x02,0x02, - 0x24,0x02,0x03,0x02,0x2b,0x03,0x01,0x00,0x37,0x03,0x05,0x03,0x25,0x04,0x06,0x00, - 0x25,0x05,0x07,0x00,0x10,0x06,0x02,0x00,0x24,0x05,0x06,0x05,0x3e,0x03,0x03,0x01, - 0x10,0x04,0x00,0x00,0x37,0x03,0x08,0x00,0x2b,0x05,0x02,0x00,0x13,0x06,0x02,0x00, - 0x3e,0x05,0x02,0x02,0x25,0x06,0x09,0x00,0x10,0x07,0x02,0x00,0x25,0x08,0x09,0x00, - 0x24,0x05,0x08,0x05,0x3e,0x03,0x03,0x01,0x47,0x00,0x01,0x00,0x08,0xc0,0x00,0xc0, - 0x06,0xc0,0x06,0x00,0x09,0x73,0x65,0x6e,0x64,0x0a,0x53,0x65,0x6e,0x64,0x20,0x0a, - 0x44,0x45,0x42,0x55,0x47,0x08,0x6c,0x6f,0x67,0x0c,0x6c,0x6f,0x6d,0x32,0x73,0x74, - 0x72,0x2d,0x3c,0x3f,0x78,0x6d,0x6c,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x3d, - 0x22,0x31,0x2e,0x30,0x22,0x20,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x3d,0x22, - 0x55,0x54,0x46,0x2d,0x38,0x22,0x20,0x3f,0x3e,0x0a,0x1d,0x75,0x72,0x6e,0x3a,0x64, - 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x5f,0x70,0x72,0x6f,0x74,0x6f,0x63,0x6f,0x6c, - 0x5f,0x76,0x31,0x0a,0x78,0x6d,0x6c,0x6e,0x73,0x09,0x61,0x74,0x74,0x72,0x66,0x00, - 0x02,0x06,0x01,0x05,0x00,0x0d,0x33,0x02,0x00,0x00,0x33,0x03,0x01,0x00,0x3a,0x00, - 0x02,0x03,0x3a,0x03,0x03,0x02,0x0f,0x00,0x01,0x00,0x54,0x03,0x06,0x80,0x33,0x03, - 0x04,0x00,0x2b,0x04,0x00,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02,0x3b,0x04, - 0x01,0x03,0x3b,0x03,0x01,0x02,0x48,0x02,0x02,0x00,0x06,0xc0,0x01,0x00,0x01,0x08, - 0x74,0x61,0x67,0x0c,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x09,0x61,0x74,0x74,0x72, - 0x09,0x63,0x6f,0x64,0x65,0x01,0x00,0x00,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0a, - 0x65,0x72,0x72,0x6f,0x72,0xd5,0x02,0x03,0x00,0x0b,0x00,0x1b,0x00,0x21,0x34,0x00, - 0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x02,0x00,0x34,0x02, - 0x03,0x00,0x34,0x03,0x04,0x00,0x34,0x04,0x05,0x00,0x34,0x05,0x06,0x00,0x34,0x06, - 0x07,0x00,0x34,0x07,0x08,0x00,0x37,0x07,0x09,0x07,0x32,0x08,0x00,0x00,0x31,0x09, - 0x0b,0x00,0x3a,0x09,0x0a,0x08,0x31,0x09,0x0d,0x00,0x3a,0x09,0x0c,0x08,0x31,0x09, - 0x0f,0x00,0x3a,0x09,0x0e,0x08,0x32,0x09,0x00,0x00,0x3a,0x09,0x10,0x08,0x31,0x09, - 0x11,0x00,0x3a,0x09,0x02,0x08,0x31,0x09,0x13,0x00,0x3a,0x09,0x12,0x08,0x33,0x09, - 0x14,0x00,0x31,0x0a,0x16,0x00,0x3a,0x0a,0x15,0x08,0x31,0x0a,0x18,0x00,0x3a,0x0a, - 0x17,0x08,0x31,0x0a,0x1a,0x00,0x3a,0x0a,0x19,0x08,0x30,0x00,0x00,0x80,0x48,0x08, - 0x02,0x00,0x00,0x0f,0x6d,0x61,0x6b,0x65,0x5f,0x65,0x72,0x72,0x6f,0x72,0x00,0x0d, - 0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x00,0x0c,0x6c,0x6f,0x6d,0x32,0x73,0x74, - 0x72,0x01,0x00,0x03,0x06,0x3c,0x09,0x26,0x6c,0x74,0x3b,0x06,0x26,0x0a,0x26,0x61, - 0x6d,0x70,0x3b,0x06,0x22,0x0b,0x26,0x71,0x75,0x6f,0x74,0x3b,0x00,0x0b,0x61,0x73, - 0x73,0x65,0x72,0x74,0x00,0x17,0x44,0x42,0x47,0x50,0x5f,0x45,0x52,0x52,0x5f,0x4d, - 0x45,0x54,0x41,0x54,0x41,0x42,0x4c,0x45,0x00,0x10,0x72,0x65,0x61,0x64,0x5f,0x70, - 0x61,0x63,0x6b,0x65,0x74,0x00,0x0e,0x63,0x6d,0x64,0x5f,0x70,0x61,0x72,0x73,0x65, - 0x00,0x0e,0x61,0x72,0x67,0x5f,0x70,0x61,0x72,0x73,0x65,0x0b,0x63,0x6f,0x6e,0x63, - 0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e, - 0x67,0x0b,0x69,0x70,0x61,0x69,0x72,0x73,0x0a,0x70,0x61,0x69,0x72,0x73,0x09,0x74, - 0x79,0x70,0x65,0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65, - 0x0a,0x65,0x72,0x72,0x6f,0x72,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e, - 0x75,0x74,0x69,0x6c,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x10,0x00,0x00,0x01, - 0x00,0x01,0x00,0x02,0x25,0x00,0x00,0x00,0x48,0x00,0x02,0x00,0x05,0x22,0x00,0x01, - 0x03,0x01,0x00,0x01,0x06,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x13,0x02,0x02, - 0x00,0x14,0x02,0x00,0x02,0x39,0x00,0x02,0x01,0x47,0x00,0x01,0x00,0x13,0xc0,0x02, - 0x5e,0x00,0x04,0x09,0x02,0x02,0x00,0x10,0x2b,0x04,0x00,0x00,0x37,0x04,0x00,0x04, - 0x2b,0x05,0x01,0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x36,0x04,0x05,0x04, - 0x0e,0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x2b,0x04,0x00,0x00,0x37,0x04,0x00,0x04, - 0x37,0x04,0x01,0x04,0x10,0x05,0x00,0x00,0x10,0x06,0x01,0x00,0x10,0x07,0x02,0x00, - 0x10,0x08,0x03,0x00,0x40,0x04,0x05,0x00,0x14,0xc0,0x04,0xc0,0x0c,0x64,0x65,0x66, - 0x61,0x75,0x6c,0x74,0x0f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x46, - 0x00,0x04,0x0a,0x03,0x01,0x00,0x0c,0x2b,0x04,0x00,0x00,0x37,0x04,0x00,0x04,0x10, - 0x05,0x00,0x00,0x2b,0x06,0x01,0x00,0x10,0x07,0x01,0x00,0x3e,0x06,0x02,0x02,0x2b, - 0x07,0x02,0x00,0x10,0x08,0x01,0x00,0x3e,0x07,0x02,0x02,0x10,0x08,0x02,0x00,0x10, - 0x09,0x03,0x00,0x40,0x04,0x06,0x00,0x14,0xc0,0x04,0xc0,0x03,0xc0,0x0d,0x70,0x72, - 0x6f,0x70,0x65,0x72,0x74,0x79,0xd0,0x02,0x00,0x04,0x0f,0x04,0x09,0x00,0x3f,0x2b, - 0x04,0x00,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02,0x2b,0x05,0x01,0x00,0x37, - 0x05,0x00,0x05,0x36,0x05,0x04,0x05,0x0f,0x00,0x05,0x00,0x54,0x06,0x08,0x80,0x10, - 0x06,0x05,0x00,0x10,0x07,0x00,0x00,0x10,0x08,0x01,0x00,0x10,0x09,0x02,0x00,0x10, - 0x0a,0x03,0x00,0x3e,0x06,0x05,0x02,0x29,0x07,0x02,0x00,0x46,0x06,0x03,0x00,0x27, - 0x06,0x01,0x00,0x2b,0x07,0x02,0x00,0x13,0x07,0x07,0x00,0x27,0x08,0x01,0x00,0x49, - 0x06,0x0d,0x80,0x2b,0x0a,0x02,0x00,0x36,0x0a,0x09,0x0a,0x10,0x0b,0x00,0x00,0x10, - 0x0c,0x01,0x00,0x10,0x0d,0x02,0x00,0x10,0x0e,0x03,0x00,0x3e,0x0a,0x05,0x02,0x0f, - 0x00,0x0a,0x00,0x54,0x0b,0x03,0x80,0x10,0x0b,0x0a,0x00,0x29,0x0c,0x02,0x00,0x46, - 0x0b,0x03,0x00,0x4b,0x06,0xf3,0x7f,0x2b,0x05,0x03,0x00,0x10,0x06,0x00,0x00,0x10, - 0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x3e,0x05,0x05,0x02,0x0f, - 0x00,0x04,0x00,0x54,0x06,0x12,0x80,0x0f,0x00,0x05,0x00,0x54,0x06,0x10,0x80,0x2b, - 0x06,0x01,0x00,0x37,0x06,0x01,0x06,0x25,0x07,0x02,0x00,0x10,0x08,0x04,0x00,0x10, - 0x09,0x05,0x00,0x25,0x0a,0x03,0x00,0x37,0x0b,0x04,0x05,0x37,0x0b,0x05,0x0b,0x25, - 0x0c,0x06,0x00,0x24,0x0a,0x0c,0x0a,0x3e,0x06,0x05,0x02,0x0f,0x00,0x06,0x00,0x54, - 0x07,0x03,0x80,0x37,0x07,0x04,0x06,0x25,0x08,0x08,0x00,0x3a,0x08,0x07,0x07,0x10, - 0x06,0x05,0x00,0x29,0x07,0x01,0x00,0x46,0x06,0x03,0x00,0x08,0xc0,0x14,0xc0,0x13, - 0xc0,0x15,0xc0,0x0c,0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x09,0x74,0x79,0x70,0x65, - 0x06,0x5d,0x0d,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x09,0x61,0x74,0x74,0x72, - 0x0f,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x5b,0x0e,0x6d,0x65,0x74,0x61, - 0x74,0x61,0x62,0x6c,0x65,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x0f,0x69,0x6e, - 0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0xa5,0x01,0x00,0x02,0x0a,0x02,0x07,0x01, - 0x1b,0x32,0x02,0x00,0x00,0x27,0x03,0x01,0x00,0x37,0x04,0x00,0x01,0x27,0x05,0x01, - 0x00,0x49,0x03,0x07,0x80,0x2b,0x07,0x00,0x00,0x37,0x07,0x01,0x07,0x10,0x08,0x00, - 0x00,0x10,0x09,0x06,0x00,0x3e,0x07,0x03,0x02,0x39,0x07,0x06,0x02,0x4b,0x03,0xf9, - 0x7f,0x37,0x03,0x02,0x01,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x13,0x03,0x02, - 0x00,0x14,0x03,0x00,0x03,0x25,0x04,0x03,0x00,0x39,0x04,0x03,0x02,0x25,0x03,0x04, - 0x00,0x2b,0x04,0x01,0x00,0x10,0x05,0x02,0x00,0x25,0x06,0x05,0x00,0x3e,0x04,0x03, - 0x02,0x25,0x05,0x06,0x00,0x24,0x03,0x05,0x03,0x48,0x03,0x02,0x00,0x00,0xc0,0x11, - 0xc0,0x06,0x29,0x07,0x2c,0x20,0x0e,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28, - 0x08,0x2e,0x2e,0x2e,0x0d,0x69,0x73,0x76,0x61,0x72,0x61,0x72,0x67,0x0d,0x67,0x65, - 0x74,0x6c,0x6f,0x63,0x61,0x6c,0x0c,0x6e,0x70,0x61,0x72,0x61,0x6d,0x73,0x02,0x63, - 0x00,0x01,0x05,0x03,0x04,0x00,0x12,0x25,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x10, - 0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x07,0x02,0x01,0x00,0x54,0x02,0x06,0x80,0x2b, - 0x02,0x01,0x00,0x25,0x03,0x02,0x00,0x10,0x04,0x00,0x00,0x3e,0x02,0x03,0x02,0x0e, - 0x00,0x02,0x00,0x54,0x03,0x03,0x80,0x2b,0x02,0x02,0x00,0x10,0x03,0x00,0x00,0x3e, - 0x02,0x02,0x02,0x25,0x03,0x03,0x00,0x24,0x01,0x03,0x01,0x48,0x01,0x02,0x00,0x04, - 0xc0,0x10,0xc0,0x03,0xc0,0x06,0x5d,0x07,0x25,0x71,0x0b,0x73,0x74,0x72,0x69,0x6e, - 0x67,0x06,0x5b,0xd2,0x01,0x00,0x01,0x06,0x04,0x08,0x01,0x24,0x2b,0x01,0x00,0x00, - 0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x07,0x01,0x00,0x00,0x54,0x02,0x05,0x80, - 0x2b,0x02,0x01,0x00,0x25,0x03,0x01,0x00,0x10,0x04,0x00,0x00,0x40,0x02,0x03,0x00, - 0x54,0x02,0x19,0x80,0x06,0x01,0x02,0x00,0x54,0x02,0x02,0x80,0x07,0x01,0x03,0x00, - 0x54,0x02,0x04,0x80,0x2b,0x02,0x02,0x00,0x10,0x03,0x00,0x00,0x40,0x02,0x02,0x00, - 0x54,0x02,0x11,0x80,0x2b,0x02,0x03,0x00,0x37,0x02,0x04,0x02,0x37,0x02,0x05,0x02, - 0x2b,0x03,0x03,0x00,0x37,0x03,0x04,0x03,0x39,0x00,0x02,0x03,0x2b,0x03,0x03,0x00, - 0x37,0x03,0x04,0x03,0x14,0x04,0x00,0x02,0x3a,0x04,0x05,0x03,0x25,0x03,0x06,0x00, - 0x2b,0x04,0x02,0x00,0x10,0x05,0x02,0x00,0x3e,0x04,0x02,0x02,0x25,0x05,0x07,0x00, - 0x24,0x03,0x05,0x03,0x48,0x03,0x02,0x00,0x47,0x00,0x01,0x00,0x04,0xc0,0x10,0xc0, - 0x03,0xc0,0x14,0xc0,0x06,0x5d,0x0f,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65, - 0x5b,0x06,0x6e,0x0e,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x0c,0x62,0x6f, - 0x6f,0x6c,0x65,0x61,0x6e,0x0b,0x6e,0x75,0x6d,0x62,0x65,0x72,0x07,0x25,0x71,0x0b, - 0x73,0x74,0x72,0x69,0x6e,0x67,0x02,0x2d,0x00,0x02,0x06,0x01,0x02,0x00,0x08,0x10, - 0x02,0x00,0x00,0x25,0x03,0x00,0x00,0x2b,0x04,0x00,0x00,0x10,0x05,0x01,0x00,0x3e, - 0x04,0x02,0x02,0x25,0x05,0x01,0x00,0x24,0x02,0x05,0x02,0x48,0x02,0x02,0x00,0x19, - 0xc0,0x06,0x5d,0x06,0x5b,0x25,0x00,0x04,0x09,0x01,0x00,0x00,0x07,0x2b,0x04,0x00, - 0x00,0x10,0x05,0x00,0x00,0x10,0x06,0x01,0x00,0x10,0x07,0x02,0x00,0x10,0x08,0x03, - 0x00,0x3e,0x04,0x05,0x02,0x48,0x04,0x02,0x00,0x16,0xc0,0x69,0x00,0x04,0x0b,0x02, - 0x06,0x00,0x10,0x2b,0x04,0x00,0x00,0x37,0x04,0x00,0x04,0x10,0x05,0x00,0x00,0x25, - 0x06,0x01,0x00,0x2b,0x07,0x01,0x00,0x25,0x08,0x02,0x00,0x10,0x09,0x01,0x00,0x3e, - 0x07,0x03,0x02,0x10,0x08,0x07,0x00,0x37,0x07,0x03,0x07,0x25,0x09,0x04,0x00,0x25, - 0x0a,0x05,0x00,0x3e,0x07,0x04,0x02,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x40, - 0x04,0x06,0x00,0x14,0xc0,0x10,0xc0,0x07,0x5c,0x6e,0x07,0x5c,0x0a,0x09,0x67,0x73, - 0x75,0x62,0x07,0x25,0x71,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0d,0x70,0x72,0x6f, - 0x70,0x65,0x72,0x74,0x79,0xb6,0x04,0x00,0x04,0x0e,0x06,0x16,0x00,0x61,0x2b,0x04, - 0x00,0x00,0x37,0x04,0x00,0x04,0x10,0x05,0x01,0x00,0x25,0x06,0x01,0x00,0x3e,0x04, - 0x03,0x02,0x29,0x05,0x00,0x00,0x37,0x06,0x02,0x04,0x06,0x06,0x03,0x00,0x54,0x06, - 0x2b,0x80,0x37,0x06,0x04,0x04,0x0f,0x00,0x06,0x00,0x54,0x07,0x06,0x80,0x2b,0x06, - 0x01,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x04,0x00,0x3e,0x06,0x03,0x02,0x0e,0x00, - 0x06,0x00,0x54,0x07,0x03,0x80,0x2b,0x06,0x02,0x00,0x10,0x07,0x01,0x00,0x3e,0x06, - 0x02,0x02,0x37,0x07,0x05,0x04,0x10,0x08,0x07,0x00,0x37,0x07,0x06,0x07,0x27,0x09, - 0x01,0x00,0x27,0x0a,0x01,0x00,0x3e,0x07,0x04,0x02,0x07,0x07,0x07,0x00,0x54,0x07, - 0x0d,0x80,0x10,0x07,0x06,0x00,0x25,0x08,0x08,0x00,0x2b,0x09,0x03,0x00,0x37,0x09, - 0x09,0x09,0x25,0x0a,0x07,0x00,0x37,0x0b,0x05,0x04,0x24,0x0a,0x0b,0x0a,0x3e,0x09, - 0x02,0x02,0x25,0x0a,0x08,0x00,0x2b,0x0b,0x02,0x00,0x37,0x0c,0x0a,0x04,0x3e,0x0b, - 0x02,0x02,0x24,0x06,0x0b,0x07,0x2b,0x07,0x04,0x00,0x37,0x07,0x0b,0x07,0x10,0x08, - 0x00,0x00,0x25,0x09,0x0c,0x00,0x10,0x0a,0x06,0x00,0x10,0x0b,0x02,0x00,0x10,0x0c, - 0x03,0x00,0x3e,0x07,0x06,0x02,0x10,0x05,0x07,0x00,0x54,0x06,0x0b,0x80,0x2b,0x06, - 0x04,0x00,0x37,0x06,0x0b,0x06,0x10,0x07,0x00,0x00,0x25,0x08,0x0d,0x00,0x2b,0x09, - 0x02,0x00,0x10,0x0a,0x01,0x00,0x3e,0x09,0x02,0x02,0x10,0x0a,0x02,0x00,0x10,0x0b, - 0x03,0x00,0x3e,0x06,0x06,0x02,0x10,0x05,0x06,0x00,0x0e,0x00,0x05,0x00,0x54,0x06, - 0x02,0x80,0x29,0x06,0x00,0x00,0x48,0x06,0x02,0x00,0x2b,0x06,0x05,0x00,0x0f,0x00, - 0x06,0x00,0x54,0x07,0x03,0x80,0x2b,0x06,0x05,0x00,0x10,0x07,0x01,0x00,0x3e,0x06, - 0x02,0x02,0x0f,0x00,0x06,0x00,0x54,0x07,0x15,0x80,0x2b,0x07,0x05,0x00,0x27,0x08, - 0x00,0x00,0x3e,0x07,0x02,0x02,0x04,0x06,0x07,0x00,0x54,0x07,0x10,0x80,0x2b,0x07, - 0x04,0x00,0x37,0x07,0x0e,0x07,0x25,0x08,0x0f,0x00,0x10,0x09,0x06,0x00,0x10,0x0a, - 0x05,0x00,0x25,0x0b,0x10,0x00,0x37,0x0c,0x11,0x05,0x37,0x0c,0x12,0x0c,0x25,0x0d, - 0x13,0x00,0x24,0x0b,0x0d,0x0b,0x3e,0x07,0x05,0x02,0x0f,0x00,0x07,0x00,0x54,0x08, - 0x03,0x80,0x37,0x08,0x11,0x07,0x25,0x09,0x15,0x00,0x3a,0x09,0x14,0x08,0x48,0x05, - 0x02,0x00,0x00,0xc0,0x17,0xc0,0x03,0xc0,0x01,0xc0,0x14,0xc0,0x0a,0xc0,0x0c,0x73, - 0x70,0x65,0x63,0x69,0x61,0x6c,0x09,0x74,0x79,0x70,0x65,0x06,0x5d,0x0d,0x66,0x75, - 0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x09,0x61,0x74,0x74,0x72,0x11,0x65,0x6e,0x76,0x69, - 0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x5b,0x10,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e, - 0x6d,0x65,0x6e,0x74,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x0d,0x66,0x75,0x6e, - 0x63,0x74,0x69,0x6f,0x6e,0x13,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x28, - 0x4c,0x75,0x61,0x29,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x10,0x6c,0x69, - 0x6e,0x65,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x0c,0x67,0x65,0x74,0x5f,0x75,0x72, - 0x69,0x06,0x0a,0x06,0x40,0x08,0x73,0x75,0x62,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65, - 0x0c,0x6e,0x70,0x61,0x72,0x61,0x6d,0x73,0x06,0x43,0x09,0x77,0x68,0x61,0x74,0x0a, - 0x6e,0x53,0x66,0x6c,0x75,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0xff,0x01,0x00, - 0x04,0x14,0x06,0x04,0x01,0x34,0x2b,0x04,0x00,0x00,0x10,0x05,0x00,0x00,0x10,0x06, - 0x01,0x00,0x10,0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x3e,0x04,0x05,0x03,0x0f,0x00, - 0x04,0x00,0x54,0x06,0x02,0x80,0x0f,0x00,0x05,0x00,0x54,0x06,0x01,0x80,0x48,0x04, - 0x02,0x00,0x29,0x06,0x02,0x00,0x27,0x07,0x01,0x00,0x2b,0x08,0x01,0x00,0x10,0x09, - 0x01,0x00,0x29,0x0a,0x00,0x00,0x44,0x0b,0x18,0x80,0x2b,0x0d,0x02,0x00,0x37,0x0d, - 0x00,0x0d,0x2b,0x0e,0x03,0x00,0x10,0x0f,0x0b,0x00,0x3e,0x0e,0x02,0x02,0x10,0x0f, - 0x0c,0x00,0x10,0x10,0x04,0x00,0x2b,0x11,0x04,0x00,0x10,0x12,0x03,0x00,0x10,0x13, - 0x0b,0x00,0x3e,0x11,0x03,0x00,0x3d,0x0d,0x03,0x01,0x0f,0x00,0x06,0x00,0x54,0x0d, - 0x09,0x80,0x2b,0x0d,0x05,0x00,0x10,0x0e,0x01,0x00,0x10,0x0f,0x07,0x00,0x3e,0x0d, - 0x03,0x02,0x0b,0x0d,0x00,0x00,0x54,0x0d,0x02,0x80,0x29,0x06,0x01,0x00,0x54,0x0d, - 0x01,0x80,0x29,0x06,0x02,0x00,0x14,0x07,0x00,0x07,0x42,0x0b,0x03,0x03,0x4e,0x0b, - 0xe6,0x7f,0x0f,0x00,0x06,0x00,0x54,0x08,0x06,0x80,0x27,0x08,0x01,0x00,0x01,0x08, - 0x07,0x00,0x54,0x08,0x03,0x80,0x37,0x08,0x01,0x04,0x25,0x09,0x03,0x00,0x3a,0x09, - 0x02,0x08,0x48,0x04,0x02,0x00,0x16,0xc0,0x06,0xc0,0x14,0xc0,0x18,0xc0,0x1a,0xc0, - 0x07,0xc0,0x0d,0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0x09,0x74,0x79,0x70,0x65, - 0x09,0x61,0x74,0x74,0x72,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x02,0xd9,0x01, - 0x00,0x04,0x11,0x02,0x07,0x01,0x2b,0x37,0x04,0x00,0x01,0x09,0x04,0x00,0x00,0x54, - 0x04,0x08,0x80,0x2b,0x04,0x00,0x00,0x37,0x04,0x01,0x04,0x10,0x05,0x00,0x00,0x38, - 0x06,0x01,0x01,0x10,0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x40,0x04,0x05,0x00,0x54, - 0x04,0x1f,0x80,0x2b,0x04,0x00,0x00,0x37,0x04,0x02,0x04,0x10,0x05,0x00,0x00,0x25, - 0x06,0x03,0x00,0x25,0x07,0x04,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x3e, - 0x04,0x06,0x02,0x0e,0x00,0x04,0x00,0x54,0x05,0x02,0x80,0x29,0x05,0x00,0x00,0x48, - 0x05,0x02,0x00,0x27,0x05,0x01,0x00,0x37,0x06,0x00,0x01,0x27,0x07,0x01,0x00,0x49, - 0x05,0x0e,0x80,0x2b,0x09,0x00,0x00,0x37,0x09,0x01,0x09,0x2b,0x0a,0x01,0x00,0x10, - 0x0b,0x08,0x00,0x3e,0x0a,0x02,0x02,0x36,0x0b,0x08,0x01,0x10,0x0c,0x04,0x00,0x10, - 0x0d,0x03,0x00,0x25,0x0e,0x05,0x00,0x10,0x0f,0x08,0x00,0x25,0x10,0x06,0x00,0x24, - 0x0d,0x10,0x0d,0x3e,0x09,0x05,0x01,0x4b,0x05,0xf2,0x7f,0x48,0x04,0x02,0x00,0x47, - 0x00,0x01,0x00,0x14,0xc0,0x18,0xc0,0x06,0x5d,0x06,0x5b,0x05,0x0d,0x6d,0x75,0x6c, - 0x74,0x69,0x76,0x61,0x6c,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0c,0x69, - 0x6e,0x73,0x70,0x65,0x63,0x74,0x06,0x6e,0x02,0x46,0x02,0x00,0x05,0x03,0x03,0x01, - 0x0b,0x2b,0x00,0x00,0x00,0x33,0x01,0x01,0x00,0x2b,0x02,0x01,0x00,0x25,0x03,0x00, - 0x00,0x43,0x04,0x00,0x00,0x3d,0x02,0x01,0x02,0x3a,0x02,0x02,0x01,0x43,0x02,0x00, - 0x00,0x3c,0x02,0x00,0x00,0x2b,0x02,0x02,0x00,0x40,0x00,0x03,0x00,0x09,0xc0,0x0b, - 0xc0,0x12,0xc0,0x06,0x6e,0x01,0x00,0x00,0x06,0x23,0x03,0x80,0x80,0xc0,0x99,0x04, - 0x33,0x00,0x00,0x05,0x04,0x01,0x00,0x07,0x2b,0x00,0x00,0x00,0x37,0x00,0x00,0x00, - 0x2b,0x01,0x01,0x00,0x2b,0x02,0x02,0x00,0x29,0x03,0x00,0x00,0x2b,0x04,0x03,0x00, - 0x40,0x00,0x05,0x00,0x03,0x00,0x02,0x80,0x01,0xc0,0x03,0x80,0x0c,0x69,0x6e,0x73, - 0x70,0x65,0x63,0x74,0xef,0x05,0x01,0x09,0x1b,0x09,0x13,0x02,0x90,0x01,0x0e,0x00, - 0x03,0x00,0x54,0x09,0x06,0x80,0x25,0x09,0x00,0x00,0x2b,0x0a,0x00,0x00,0x10,0x0b, - 0x02,0x00,0x3e,0x0a,0x02,0x02,0x25,0x0b,0x01,0x00,0x24,0x03,0x0b,0x09,0x0e,0x00, - 0x08,0x00,0x54,0x09,0x04,0x80,0x2b,0x09,0x01,0x00,0x10,0x0a,0x02,0x00,0x3e,0x09, - 0x02,0x02,0x10,0x02,0x09,0x00,0x2b,0x09,0x02,0x00,0x31,0x0a,0x02,0x00,0x3e,0x09, - 0x02,0x02,0x32,0x0a,0x00,0x00,0x29,0x0b,0x00,0x00,0x29,0x0c,0x02,0x00,0x20,0x0d, - 0x05,0x06,0x2b,0x0e,0x04,0x00,0x10,0x0f,0x00,0x00,0x3e,0x0e,0x02,0x02,0x25,0x0f, - 0x03,0x00,0x24,0x0e,0x0f,0x0e,0x51,0x0f,0x73,0x80,0x2b,0x0f,0x05,0x00,0x2b,0x10, - 0x06,0x00,0x10,0x11,0x09,0x00,0x0f,0x00,0x0c,0x00,0x54,0x12,0x04,0x80,0x13,0x12, - 0x0a,0x00,0x36,0x12,0x12,0x0a,0x0e,0x00,0x12,0x00,0x54,0x13,0x01,0x80,0x29,0x12, - 0x00,0x00,0x3e,0x10,0x03,0x00,0x3d,0x0f,0x00,0x07,0x13,0x15,0x0a,0x00,0x36,0x15, - 0x15,0x0a,0x04,0x15,0x13,0x00,0x54,0x15,0x10,0x80,0x51,0x15,0x0f,0x80,0x13,0x15, - 0x0a,0x00,0x36,0x15,0x15,0x0a,0x37,0x16,0x04,0x15,0x2b,0x17,0x07,0x00,0x37,0x17, - 0x06,0x17,0x10,0x18,0x0e,0x00,0x37,0x19,0x04,0x15,0x37,0x19,0x05,0x19,0x24,0x18, - 0x19,0x18,0x3e,0x17,0x02,0x02,0x3a,0x17,0x05,0x16,0x13,0x16,0x0a,0x00,0x29,0x17, - 0x00,0x00,0x39,0x17,0x16,0x0a,0x54,0x15,0xec,0x7f,0x2b,0x15,0x08,0x00,0x10,0x16, - 0x09,0x00,0x3e,0x15,0x02,0x02,0x07,0x15,0x07,0x00,0x54,0x15,0x01,0x80,0x54,0x0f, - 0x4d,0x80,0x33,0x15,0x08,0x00,0x33,0x16,0x09,0x00,0x3a,0x05,0x0a,0x16,0x0f,0x00, - 0x13,0x00,0x54,0x17,0x02,0x80,0x27,0x17,0x00,0x00,0x54,0x18,0x01,0x80,0x10,0x17, - 0x06,0x00,0x3a,0x17,0x0b,0x16,0x3a,0x11,0x0c,0x16,0x3a,0x10,0x0d,0x16,0x3a,0x14, - 0x05,0x16,0x13,0x17,0x12,0x00,0x3a,0x17,0x0e,0x16,0x3a,0x16,0x04,0x15,0x2b,0x16, - 0x07,0x00,0x37,0x16,0x0f,0x16,0x0f,0x00,0x07,0x00,0x54,0x17,0x07,0x80,0x10,0x18, - 0x12,0x00,0x37,0x17,0x10,0x12,0x27,0x19,0x01,0x00,0x10,0x1a,0x07,0x00,0x3e,0x17, - 0x04,0x02,0x0e,0x00,0x17,0x00,0x54,0x18,0x01,0x80,0x10,0x17,0x12,0x00,0x3e,0x16, - 0x02,0x00,0x3c,0x16,0x00,0x00,0x0f,0x00,0x13,0x00,0x54,0x16,0x28,0x80,0x37,0x16, - 0x04,0x13,0x27,0x17,0x01,0x00,0x3a,0x17,0x11,0x16,0x37,0x16,0x04,0x13,0x37,0x17, - 0x04,0x13,0x37,0x17,0x12,0x17,0x0e,0x00,0x17,0x00,0x54,0x18,0x01,0x80,0x27,0x17, - 0x00,0x00,0x14,0x17,0x01,0x17,0x3a,0x17,0x12,0x16,0x13,0x16,0x13,0x00,0x03,0x16, - 0x05,0x00,0x54,0x16,0x03,0x80,0x13,0x16,0x0a,0x00,0x02,0x16,0x04,0x00,0x54,0x16, - 0x02,0x80,0x29,0x0c,0x01,0x00,0x54,0x16,0x01,0x80,0x29,0x0c,0x02,0x00,0x05,0x13, - 0x0b,0x00,0x54,0x16,0x09,0x80,0x0f,0x00,0x0c,0x00,0x54,0x16,0x06,0x80,0x27,0x16, - 0x00,0x00,0x02,0x0d,0x16,0x00,0x54,0x16,0x02,0x80,0x29,0x0c,0x01,0x00,0x54,0x16, - 0x01,0x80,0x29,0x0c,0x02,0x00,0x15,0x0d,0x01,0x0d,0x0f,0x00,0x0c,0x00,0x54,0x16, - 0x99,0x7f,0x13,0x16,0x13,0x00,0x14,0x16,0x01,0x16,0x39,0x15,0x16,0x13,0x13,0x16, - 0x0a,0x00,0x14,0x16,0x01,0x16,0x39,0x15,0x16,0x0a,0x54,0x16,0x92,0x7f,0x10,0x0b, - 0x15,0x00,0x29,0x0c,0x02,0x00,0x13,0x16,0x0a,0x00,0x14,0x16,0x01,0x16,0x39,0x15, - 0x16,0x0a,0x54,0x0f,0x8c,0x7f,0x30,0x00,0x00,0x80,0x48,0x0b,0x02,0x00,0x19,0xc0, - 0x18,0xc0,0x0d,0xc0,0x14,0xc0,0x03,0xc0,0x05,0xc0,0x0f,0xc0,0x02,0xc0,0x0e,0xc0, - 0x10,0x6e,0x75,0x6d,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x0d,0x63,0x68,0x69, - 0x6c,0x64,0x72,0x65,0x6e,0x08,0x73,0x75,0x62,0x08,0x62,0x36,0x34,0x09,0x73,0x69, - 0x7a,0x65,0x09,0x6e,0x61,0x6d,0x65,0x09,0x74,0x79,0x70,0x65,0x09,0x70,0x61,0x67, - 0x65,0x0d,0x70,0x61,0x67,0x65,0x73,0x69,0x7a,0x65,0x01,0x00,0x02,0x0d,0x63,0x68, - 0x69,0x6c,0x64,0x72,0x65,0x6e,0x03,0x00,0x0d,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e, - 0x67,0x0b,0x62,0x61,0x73,0x65,0x36,0x34,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0d, - 0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x09,0x64,0x65,0x61,0x64,0x0b,0x72,0x61, - 0x77,0x62,0x36,0x34,0x0d,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x09,0x61,0x74, - 0x74,0x72,0x06,0x7c,0x00,0x06,0x5d,0x0b,0x28,0x2e,0x2e,0x2e,0x29,0x5b,0x03,0x80, - 0x80,0xc0,0x99,0x04,0x02,0xf0,0x05,0x03,0x00,0x1d,0x00,0x3a,0x00,0x58,0x34,0x00, - 0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x00,0x00,0x25,0x02, - 0x02,0x00,0x3e,0x01,0x02,0x02,0x34,0x02,0x00,0x00,0x25,0x03,0x03,0x00,0x3e,0x02, - 0x02,0x02,0x34,0x03,0x04,0x00,0x34,0x04,0x05,0x00,0x34,0x05,0x06,0x00,0x34,0x06, - 0x07,0x00,0x34,0x07,0x08,0x00,0x34,0x08,0x09,0x00,0x34,0x09,0x0a,0x00,0x34,0x0a, - 0x0b,0x00,0x34,0x0b,0x0c,0x00,0x34,0x0c,0x0d,0x00,0x37,0x0c,0x0e,0x0c,0x34,0x0d, - 0x0d,0x00,0x37,0x0d,0x0f,0x0d,0x34,0x0e,0x0d,0x00,0x37,0x0e,0x10,0x0e,0x34,0x0f, - 0x0d,0x00,0x37,0x0f,0x11,0x0f,0x34,0x10,0x12,0x00,0x37,0x10,0x13,0x10,0x34,0x11, - 0x14,0x00,0x37,0x11,0x15,0x11,0x33,0x12,0x17,0x00,0x31,0x13,0x16,0x00,0x3a,0x13, - 0x18,0x12,0x32,0x13,0x00,0x00,0x32,0x14,0x00,0x00,0x32,0x15,0x00,0x00,0x3a,0x15, - 0x19,0x14,0x3a,0x0c,0x1a,0x14,0x31,0x15,0x1c,0x00,0x3a,0x15,0x1b,0x14,0x31,0x15, - 0x1e,0x00,0x3a,0x15,0x1d,0x14,0x31,0x15,0x1f,0x00,0x31,0x16,0x20,0x00,0x31,0x17, - 0x21,0x00,0x31,0x18,0x22,0x00,0x3a,0x18,0x23,0x14,0x10,0x19,0x09,0x00,0x33,0x1a, - 0x25,0x00,0x33,0x1b,0x26,0x00,0x3e,0x19,0x03,0x02,0x3a,0x19,0x24,0x14,0x31,0x19, - 0x27,0x00,0x31,0x1a,0x28,0x00,0x3a,0x1a,0x29,0x14,0x37,0x1b,0x19,0x14,0x3a,0x15, - 0x2a,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15,0x2b,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15, - 0x2c,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15,0x2d,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15, - 0x2e,0x1b,0x37,0x1b,0x19,0x14,0x3a,0x15,0x2f,0x1b,0x37,0x1b,0x19,0x14,0x31,0x1c, - 0x30,0x00,0x3a,0x1c,0x2d,0x1b,0x37,0x1b,0x19,0x14,0x31,0x1c,0x31,0x00,0x3a,0x1c, - 0x12,0x1b,0x37,0x1b,0x19,0x14,0x31,0x1c,0x33,0x00,0x3a,0x1c,0x32,0x1b,0x37,0x1b, - 0x19,0x14,0x31,0x1c,0x34,0x00,0x3a,0x1c,0x14,0x1b,0x37,0x1b,0x19,0x14,0x31,0x1c, - 0x35,0x00,0x39,0x1c,0x12,0x1b,0x31,0x1b,0x37,0x00,0x3a,0x1b,0x36,0x14,0x31,0x1b, - 0x39,0x00,0x3a,0x1b,0x38,0x14,0x30,0x00,0x00,0x80,0x48,0x14,0x02,0x00,0x00,0x12, - 0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x00,0x0d,0x4d, - 0x75,0x6c,0x74,0x69,0x76,0x61,0x6c,0x00,0x00,0x00,0x0d,0x66,0x75,0x6e,0x63,0x74, - 0x69,0x6f,0x6e,0x00,0x00,0x0c,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x0b,0x74,0x68, - 0x72,0x65,0x61,0x64,0x0d,0x75,0x73,0x65,0x72,0x64,0x61,0x74,0x61,0x08,0x6e,0x69, - 0x6c,0x0c,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x0b,0x6e,0x75,0x6d,0x62,0x65,0x72, - 0x12,0x6d,0x61,0x6b,0x65,0x5f,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x00,0x00, - 0x01,0x00,0x01,0x0b,0x5f,0x5f,0x6d,0x6f,0x64,0x65,0x06,0x76,0x01,0x00,0x01,0x06, - 0x6e,0x03,0x00,0x0e,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x1b,0x67,0x65, - 0x6e,0x65,0x72,0x61,0x74,0x65,0x5f,0x70,0x72,0x69,0x6e,0x74,0x61,0x62,0x6c,0x65, - 0x5f,0x6b,0x65,0x79,0x00,0x00,0x00,0x00,0x00,0x0c,0x69,0x6e,0x73,0x70,0x65,0x63, - 0x74,0x00,0x0e,0x61,0x64,0x64,0x5f,0x70,0x72,0x6f,0x62,0x65,0x0d,0x70,0x72,0x6f, - 0x70,0x65,0x72,0x74,0x79,0x0f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73, - 0x0f,0x5f,0x5f,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x01,0x00,0x00,0x00,0x0b, - 0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0b,0x66,0x6f,0x72, - 0x6d,0x61,0x74,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x72,0x65,0x73,0x75,0x6d, - 0x65,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x0a, - 0x79,0x69,0x65,0x6c,0x64,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x0b, - 0x73,0x65,0x6c,0x65,0x63,0x74,0x0c,0x67,0x65,0x74,0x66,0x65,0x6e,0x76,0x11,0x73, - 0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x11,0x67,0x65,0x74,0x6d, - 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0b,0x72,0x61,0x77,0x67,0x65,0x74,0x09, - 0x6e,0x65,0x78,0x74,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x09,0x74,0x79,0x70,0x65, - 0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x12,0x64,0x65,0x62,0x75,0x67,0x67, - 0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x16,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, - 0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x0a,0x64,0x65,0x62,0x75,0x67,0x0c, - 0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x84,0x05,0x00,0x01,0x06,0x02,0x20,0x02,0x6b, - 0x37,0x01,0x00,0x00,0x07,0x01,0x01,0x00,0x54,0x02,0x12,0x80,0x37,0x02,0x02,0x00, - 0x0f,0x00,0x02,0x00,0x54,0x03,0x02,0x80,0x25,0x01,0x02,0x00,0x54,0x02,0x56,0x80, - 0x37,0x02,0x03,0x00,0x0f,0x00,0x02,0x00,0x54,0x03,0x02,0x80,0x25,0x02,0x04,0x00, - 0x54,0x03,0x01,0x80,0x25,0x02,0x01,0x00,0x2b,0x03,0x00,0x00,0x37,0x04,0x05,0x00, - 0x16,0x04,0x00,0x04,0x3e,0x03,0x02,0x02,0x25,0x04,0x06,0x00,0x24,0x01,0x04,0x02, - 0x54,0x02,0x49,0x80,0x07,0x01,0x07,0x00,0x54,0x02,0x0a,0x80,0x37,0x02,0x05,0x00, - 0x09,0x02,0x00,0x00,0x54,0x02,0x02,0x80,0x25,0x01,0x08,0x00,0x54,0x02,0x42,0x80, - 0x37,0x02,0x05,0x00,0x09,0x02,0x01,0x00,0x54,0x02,0x3f,0x80,0x25,0x01,0x09,0x00, - 0x54,0x02,0x3d,0x80,0x06,0x01,0x0a,0x00,0x54,0x02,0x04,0x80,0x06,0x01,0x0b,0x00, - 0x54,0x02,0x02,0x80,0x07,0x01,0x0c,0x00,0x54,0x02,0x0d,0x80,0x37,0x02,0x0d,0x00, - 0x0f,0x00,0x02,0x00,0x54,0x03,0x06,0x80,0x10,0x02,0x01,0x00,0x25,0x03,0x0e,0x00, - 0x37,0x04,0x0d,0x00,0x24,0x02,0x04,0x02,0x0c,0x01,0x02,0x00,0x54,0x03,0x03,0x80, - 0x25,0x02,0x0f,0x00,0x10,0x03,0x01,0x00,0x24,0x01,0x03,0x02,0x54,0x02,0x2a,0x80, - 0x07,0x01,0x10,0x00,0x54,0x02,0x02,0x80,0x25,0x01,0x11,0x00,0x54,0x02,0x26,0x80, - 0x07,0x01,0x12,0x00,0x54,0x02,0x06,0x80,0x2b,0x02,0x01,0x00,0x37,0x03,0x13,0x00, - 0x3e,0x02,0x02,0x02,0x25,0x03,0x14,0x00,0x24,0x01,0x03,0x02,0x54,0x02,0x1e,0x80, - 0x07,0x01,0x15,0x00,0x54,0x02,0x06,0x80,0x2b,0x02,0x01,0x00,0x37,0x03,0x13,0x00, - 0x3e,0x02,0x02,0x02,0x25,0x03,0x16,0x00,0x24,0x01,0x03,0x02,0x54,0x02,0x16,0x80, - 0x07,0x01,0x17,0x00,0x54,0x02,0x04,0x80,0x2b,0x02,0x01,0x00,0x37,0x03,0x18,0x00, - 0x40,0x02,0x02,0x00,0x54,0x02,0x10,0x80,0x07,0x01,0x19,0x00,0x54,0x02,0x0e,0x80, - 0x37,0x02,0x18,0x00,0x37,0x02,0x03,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x02,0x80, - 0x25,0x02,0x03,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x1a,0x00,0x25,0x03,0x1b,0x00, - 0x2b,0x04,0x00,0x00,0x37,0x05,0x05,0x00,0x16,0x05,0x00,0x05,0x3e,0x04,0x02,0x02, - 0x24,0x01,0x04,0x02,0x37,0x00,0x18,0x00,0x37,0x02,0x1c,0x00,0x0f,0x00,0x02,0x00, - 0x54,0x03,0x03,0x80,0x25,0x02,0x1d,0x00,0x10,0x03,0x01,0x00,0x24,0x01,0x03,0x02, - 0x37,0x02,0x1e,0x00,0x0f,0x00,0x02,0x00,0x54,0x03,0x03,0x80,0x25,0x02,0x1f,0x00, - 0x10,0x03,0x01,0x00,0x24,0x01,0x03,0x02,0x48,0x01,0x02,0x00,0x03,0xc0,0x0a,0xc0, - 0x0e,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x20,0x0d,0x76,0x6f,0x6c,0x61,0x74, - 0x69,0x6c,0x65,0x0b,0x63,0x6f,0x6e,0x73,0x74,0x20,0x0a,0x63,0x6f,0x6e,0x73,0x74, - 0x06,0x3a,0x0b,0x73,0x69,0x67,0x6e,0x65,0x64,0x0d,0x62,0x69,0x74,0x66,0x69,0x65, - 0x6c,0x64,0x09,0x74,0x79,0x70,0x65,0x0a,0x66,0x69,0x65,0x6c,0x64,0x06,0x26,0x08, - 0x72,0x65,0x66,0x06,0x2a,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79, - 0x70,0x65,0x08,0x70,0x74,0x72,0x13,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20, - 0x28,0x46,0x46,0x49,0x29,0x09,0x66,0x75,0x6e,0x63,0x0f,0x61,0x6e,0x6f,0x6e,0x79, - 0x6d,0x6f,0x75,0x73,0x20,0x06,0x20,0x09,0x6e,0x61,0x6d,0x65,0x0a,0x75,0x6e,0x69, - 0x6f,0x6e,0x09,0x65,0x6e,0x75,0x6d,0x0b,0x73,0x74,0x72,0x75,0x63,0x74,0x10,0x6c, - 0x6f,0x6e,0x67,0x20,0x64,0x6f,0x75,0x62,0x6c,0x65,0x0b,0x64,0x6f,0x75,0x62,0x6c, - 0x65,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x07,0x5f,0x74,0x09,0x73,0x69,0x7a,0x65,0x09, - 0x75,0x69,0x6e,0x74,0x0d,0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x09,0x62,0x6f, - 0x6f,0x6c,0x08,0x69,0x6e,0x74,0x09,0x77,0x68,0x61,0x74,0x10,0x20,0x9b,0x01,0x00, - 0x05,0x0b,0x04,0x04,0x00,0x1d,0x2b,0x05,0x00,0x00,0x10,0x06,0x01,0x00,0x3e,0x05, - 0x02,0x02,0x07,0x05,0x00,0x00,0x54,0x05,0x08,0x80,0x2b,0x05,0x01,0x00,0x10,0x06, - 0x00,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x10,0x0a, - 0x04,0x00,0x40,0x05,0x06,0x00,0x54,0x05,0x0f,0x80,0x2b,0x05,0x02,0x00,0x37,0x05, - 0x01,0x05,0x10,0x06,0x00,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09, - 0x03,0x00,0x3e,0x05,0x05,0x02,0x0f,0x00,0x05,0x00,0x54,0x06,0x05,0x80,0x37,0x06, - 0x02,0x05,0x2b,0x07,0x03,0x00,0x10,0x08,0x04,0x00,0x3e,0x07,0x02,0x02,0x3a,0x07, - 0x03,0x06,0x48,0x05,0x02,0x00,0x47,0x00,0x01,0x00,0x05,0xc0,0x0c,0x80,0x00,0xc0, - 0x0a,0xc0,0x09,0x74,0x79,0x70,0x65,0x09,0x61,0x74,0x74,0x72,0x0c,0x69,0x6e,0x73, - 0x70,0x65,0x63,0x74,0x0a,0x63,0x64,0x61,0x74,0x61,0xb4,0x01,0x00,0x05,0x13,0x05, - 0x04,0x00,0x22,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x00,0x00,0x2b, - 0x07,0x01,0x00,0x10,0x08,0x04,0x00,0x3e,0x07,0x02,0x02,0x2b,0x08,0x02,0x00,0x10, - 0x09,0x01,0x00,0x3e,0x08,0x02,0x02,0x10,0x09,0x02,0x00,0x10,0x0a,0x03,0x00,0x3e, - 0x05,0x06,0x02,0x0f,0x00,0x05,0x00,0x54,0x06,0x13,0x80,0x10,0x07,0x04,0x00,0x37, - 0x06,0x01,0x04,0x3e,0x06,0x02,0x04,0x54,0x09,0x0d,0x80,0x37,0x0a,0x02,0x09,0x2b, - 0x0b,0x03,0x00,0x10,0x0c,0x0a,0x00,0x36,0x0d,0x0a,0x01,0x10,0x0e,0x05,0x00,0x10, - 0x0f,0x03,0x00,0x2b,0x10,0x04,0x00,0x25,0x11,0x03,0x00,0x10,0x12,0x0a,0x00,0x3e, - 0x10,0x03,0x02,0x24,0x0f,0x10,0x0f,0x10,0x10,0x09,0x00,0x3e,0x0b,0x06,0x01,0x41, - 0x09,0x03,0x02,0x4e,0x09,0xf1,0x7f,0x48,0x05,0x02,0x00,0x00,0xc0,0x0a,0xc0,0x03, - 0xc0,0x0d,0xc0,0x07,0xc0,0x09,0x5b,0x25,0x71,0x5d,0x09,0x6e,0x61,0x6d,0x65,0x0c, - 0x6d,0x65,0x6d,0x62,0x65,0x72,0x73,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79, - 0xb6,0x02,0x00,0x05,0x14,0x05,0x08,0x01,0x3e,0x37,0x05,0x00,0x04,0x37,0x06,0x01, - 0x04,0x06,0x06,0x02,0x00,0x54,0x06,0x03,0x80,0x37,0x06,0x01,0x04,0x0e,0x00,0x06, - 0x00,0x54,0x07,0x04,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x03,0x06,0x10,0x07,0x01, - 0x00,0x3e,0x06,0x02,0x02,0x0f,0x00,0x06,0x00,0x54,0x07,0x02,0x80,0x37,0x07,0x01, - 0x05,0x21,0x06,0x07,0x06,0x2b,0x07,0x01,0x00,0x10,0x08,0x05,0x00,0x3e,0x07,0x02, - 0x02,0x2b,0x08,0x02,0x00,0x37,0x08,0x04,0x08,0x10,0x09,0x00,0x00,0x10,0x0a,0x07, - 0x00,0x25,0x0b,0x05,0x00,0x2b,0x0c,0x03,0x00,0x10,0x0d,0x06,0x00,0x3e,0x0c,0x02, - 0x02,0x0e,0x00,0x0c,0x00,0x54,0x0d,0x01,0x80,0x25,0x0c,0x06,0x00,0x25,0x0d,0x07, - 0x00,0x24,0x0a,0x0d,0x0a,0x2b,0x0b,0x03,0x00,0x10,0x0c,0x01,0x00,0x3e,0x0b,0x02, - 0x02,0x10,0x0c,0x02,0x00,0x10,0x0d,0x03,0x00,0x3e,0x08,0x06,0x02,0x0f,0x00,0x08, - 0x00,0x54,0x09,0x16,0x80,0x0f,0x00,0x06,0x00,0x54,0x09,0x14,0x80,0x27,0x09,0x00, - 0x00,0x15,0x0a,0x00,0x06,0x27,0x0b,0x01,0x00,0x49,0x09,0x10,0x80,0x25,0x0d,0x05, - 0x00,0x2b,0x0e,0x03,0x00,0x10,0x0f,0x0c,0x00,0x3e,0x0e,0x02,0x02,0x25,0x0f,0x07, - 0x00,0x24,0x0d,0x0f,0x0d,0x2b,0x0e,0x04,0x00,0x10,0x0f,0x0d,0x00,0x36,0x10,0x0c, - 0x01,0x10,0x11,0x08,0x00,0x10,0x12,0x03,0x00,0x10,0x13,0x0d,0x00,0x24,0x12,0x13, - 0x12,0x10,0x13,0x05,0x00,0x3e,0x0e,0x06,0x01,0x4b,0x09,0xf0,0x7f,0x48,0x08,0x02, - 0x00,0x02,0xc0,0x0a,0xc0,0x00,0xc0,0x03,0xc0,0x0d,0xc0,0x06,0x5d,0x05,0x06,0x5b, - 0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0b,0x73,0x69,0x7a,0x65,0x6f,0x66, - 0x09,0x6e,0x6f,0x6e,0x65,0x09,0x73,0x69,0x7a,0x65,0x11,0x65,0x6c,0x65,0x6d,0x65, - 0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x02,0xff,0x01,0x00,0x05,0x0e,0x03,0x0b,0x01, - 0x2d,0x32,0x05,0x00,0x00,0x10,0x07,0x04,0x00,0x37,0x06,0x00,0x04,0x3e,0x06,0x02, - 0x04,0x54,0x09,0x09,0x80,0x13,0x0a,0x05,0x00,0x14,0x0a,0x00,0x0a,0x2b,0x0b,0x00, - 0x00,0x37,0x0c,0x01,0x09,0x3e,0x0b,0x02,0x02,0x25,0x0c,0x02,0x00,0x37,0x0d,0x03, - 0x09,0x24,0x0b,0x0d,0x0b,0x39,0x0b,0x0a,0x05,0x41,0x09,0x03,0x02,0x4e,0x09,0xf5, - 0x7f,0x37,0x06,0x04,0x04,0x0f,0x00,0x06,0x00,0x54,0x07,0x04,0x80,0x13,0x06,0x05, - 0x00,0x14,0x06,0x00,0x06,0x25,0x07,0x05,0x00,0x39,0x07,0x06,0x05,0x2b,0x06,0x00, - 0x00,0x37,0x07,0x06,0x04,0x3e,0x06,0x02,0x02,0x25,0x07,0x02,0x00,0x37,0x08,0x03, - 0x04,0x25,0x09,0x07,0x00,0x2b,0x0a,0x01,0x00,0x10,0x0b,0x05,0x00,0x25,0x0c,0x08, - 0x00,0x3e,0x0a,0x03,0x02,0x25,0x0b,0x09,0x00,0x24,0x06,0x0b,0x06,0x2b,0x07,0x02, - 0x00,0x37,0x07,0x0a,0x07,0x10,0x08,0x00,0x00,0x2b,0x09,0x00,0x00,0x10,0x0a,0x04, - 0x00,0x3e,0x09,0x02,0x02,0x10,0x0a,0x06,0x00,0x10,0x0b,0x02,0x00,0x10,0x0c,0x03, - 0x00,0x40,0x07,0x06,0x00,0x0a,0xc0,0x08,0xc0,0x00,0xc0,0x0d,0x70,0x72,0x6f,0x70, - 0x65,0x72,0x74,0x79,0x06,0x29,0x07,0x2c,0x20,0x06,0x28,0x10,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x5f,0x74,0x79,0x70,0x65,0x08,0x2e,0x2e,0x2e,0x0b,0x76,0x61,0x72,0x61, - 0x72,0x67,0x09,0x6e,0x61,0x6d,0x65,0x06,0x20,0x09,0x74,0x79,0x70,0x65,0x0e,0x61, - 0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x02,0x92,0x01,0x00,0x05,0x0c,0x04,0x04, - 0x00,0x1a,0x2b,0x05,0x00,0x00,0x10,0x06,0x01,0x00,0x3e,0x05,0x02,0x02,0x10,0x07, - 0x04,0x00,0x37,0x06,0x00,0x04,0x3e,0x06,0x02,0x04,0x54,0x09,0x05,0x80,0x37,0x0a, - 0x01,0x09,0x05,0x0a,0x05,0x00,0x54,0x0a,0x02,0x80,0x37,0x05,0x02,0x09,0x54,0x06, - 0x02,0x80,0x41,0x09,0x03,0x02,0x4e,0x09,0xf9,0x7f,0x2b,0x06,0x01,0x00,0x37,0x06, - 0x03,0x06,0x10,0x07,0x00,0x00,0x2b,0x08,0x02,0x00,0x10,0x09,0x04,0x00,0x3e,0x08, - 0x02,0x02,0x2b,0x09,0x03,0x00,0x10,0x0a,0x05,0x00,0x3e,0x09,0x02,0x02,0x10,0x0a, - 0x02,0x00,0x10,0x0b,0x03,0x00,0x40,0x06,0x06,0x00,0x04,0xc0,0x00,0xc0,0x0a,0xc0, - 0x03,0xc0,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x09,0x6e,0x61,0x6d,0x65, - 0x0a,0x76,0x61,0x6c,0x75,0x65,0x0b,0x76,0x61,0x6c,0x75,0x65,0x73,0xb8,0x01,0x00, - 0x05,0x0c,0x05,0x05,0x00,0x1d,0x2b,0x05,0x00,0x00,0x10,0x06,0x04,0x00,0x3e,0x05, - 0x02,0x02,0x2b,0x06,0x01,0x00,0x37,0x06,0x00,0x06,0x0e,0x00,0x06,0x00,0x54,0x06, - 0x0a,0x80,0x2b,0x06,0x02,0x00,0x37,0x06,0x01,0x06,0x10,0x07,0x00,0x00,0x10,0x08, - 0x05,0x00,0x2b,0x09,0x03,0x00,0x10,0x0a,0x01,0x00,0x3e,0x09,0x02,0x02,0x10,0x0a, - 0x02,0x00,0x10,0x0b,0x03,0x00,0x40,0x06,0x06,0x00,0x2b,0x06,0x04,0x00,0x10,0x07, - 0x00,0x00,0x10,0x08,0x01,0x00,0x10,0x09,0x02,0x00,0x10,0x0a,0x03,0x00,0x37,0x0b, - 0x02,0x04,0x3e,0x06,0x06,0x02,0x0f,0x00,0x06,0x00,0x54,0x07,0x02,0x80,0x37,0x07, - 0x03,0x06,0x3a,0x05,0x04,0x07,0x48,0x06,0x02,0x00,0x0a,0xc0,0x09,0xc0,0x00,0xc0, - 0x03,0xc0,0x0d,0xc0,0x09,0x74,0x79,0x70,0x65,0x09,0x61,0x74,0x74,0x72,0x11,0x65, - 0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x0d,0x70,0x72,0x6f,0x70, - 0x65,0x72,0x74,0x79,0x17,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x5f,0x72,0x65,0x66, - 0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x50,0x00,0x05,0x0b,0x04,0x01,0x00,0x0e,0x2b, - 0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x00,0x00,0x2b,0x07,0x01,0x00,0x10, - 0x08,0x04,0x00,0x3e,0x07,0x02,0x02,0x2b,0x08,0x02,0x00,0x2b,0x09,0x03,0x00,0x10, - 0x0a,0x01,0x00,0x3e,0x09,0x02,0x00,0x3d,0x08,0x00,0x02,0x10,0x09,0x02,0x00,0x10, - 0x0a,0x03,0x00,0x40,0x05,0x06,0x00,0x00,0xc0,0x0a,0xc0,0x03,0xc0,0x04,0xc0,0x0d, - 0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x46,0x00,0x05,0x0b,0x03,0x01,0x00,0x0c, - 0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x00,0x00,0x2b,0x07,0x01,0x00, - 0x10,0x08,0x04,0x00,0x3e,0x07,0x02,0x02,0x2b,0x08,0x02,0x00,0x10,0x09,0x01,0x00, - 0x3e,0x08,0x02,0x02,0x10,0x09,0x02,0x00,0x10,0x0a,0x03,0x00,0x40,0x05,0x06,0x00, - 0x00,0xc0,0x0a,0xc0,0x03,0xc0,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x2a, - 0x00,0x05,0x0b,0x01,0x01,0x00,0x07,0x2b,0x05,0x00,0x00,0x10,0x06,0x00,0x00,0x10, - 0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x37,0x0a,0x00,0x04,0x40, - 0x05,0x06,0x00,0x0c,0x80,0x09,0x74,0x79,0x70,0x65,0xba,0x01,0x00,0x05,0x0b,0x06, - 0x04,0x00,0x23,0x2b,0x05,0x00,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x01,0x00,0x3e, - 0x05,0x02,0x02,0x04,0x05,0x01,0x00,0x54,0x05,0x13,0x80,0x0e,0x00,0x04,0x00,0x54, - 0x05,0x05,0x80,0x2b,0x05,0x01,0x00,0x37,0x05,0x00,0x05,0x10,0x06,0x01,0x00,0x3e, - 0x05,0x02,0x02,0x10,0x04,0x05,0x00,0x2b,0x05,0x02,0x00,0x37,0x06,0x01,0x04,0x36, - 0x05,0x06,0x05,0x0e,0x00,0x05,0x00,0x54,0x06,0x01,0x80,0x2b,0x05,0x03,0x00,0x10, - 0x06,0x00,0x00,0x10,0x07,0x01,0x00,0x10,0x08,0x02,0x00,0x10,0x09,0x03,0x00,0x10, - 0x0a,0x04,0x00,0x40,0x05,0x06,0x00,0x2b,0x05,0x04,0x00,0x37,0x05,0x02,0x05,0x10, - 0x06,0x00,0x00,0x25,0x07,0x03,0x00,0x2b,0x08,0x05,0x00,0x10,0x09,0x01,0x00,0x3e, - 0x08,0x02,0x02,0x10,0x09,0x02,0x00,0x10,0x0a,0x03,0x00,0x40,0x05,0x06,0x00,0x02, - 0xc0,0x01,0xc0,0x0e,0xc0,0x0b,0xc0,0x00,0xc0,0x03,0xc0,0x0a,0x63,0x74,0x79,0x70, - 0x65,0x0d,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x09,0x77,0x68,0x61,0x74,0x0b, - 0x74,0x79,0x70,0x65,0x6f,0x66,0xcb,0x03,0x03,0x00,0x10,0x00,0x27,0x00,0x35,0x34, - 0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x00,0x00,0x25, - 0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x34,0x02,0x00,0x00,0x25,0x03,0x03,0x00,0x3e, - 0x02,0x02,0x02,0x34,0x03,0x04,0x00,0x34,0x04,0x05,0x00,0x34,0x05,0x06,0x00,0x34, - 0x06,0x07,0x00,0x34,0x07,0x08,0x00,0x37,0x07,0x09,0x07,0x34,0x08,0x0a,0x00,0x37, - 0x08,0x0b,0x08,0x32,0x09,0x00,0x00,0x29,0x0a,0x02,0x00,0x3a,0x0a,0x0c,0x09,0x31, - 0x0a,0x0d,0x00,0x37,0x0b,0x0e,0x00,0x37,0x0b,0x0f,0x0b,0x29,0x0c,0x00,0x00,0x31, - 0x0d,0x10,0x00,0x33,0x0e,0x12,0x00,0x31,0x0f,0x11,0x00,0x3a,0x0f,0x13,0x0e,0x31, - 0x0f,0x14,0x00,0x3a,0x0f,0x15,0x0e,0x31,0x0f,0x16,0x00,0x3a,0x0f,0x17,0x0e,0x31, - 0x0f,0x18,0x00,0x3a,0x0f,0x19,0x0e,0x31,0x0f,0x1a,0x00,0x3a,0x0f,0x1b,0x0e,0x31, - 0x0f,0x1c,0x00,0x3a,0x0f,0x1d,0x0e,0x31,0x0f,0x1e,0x00,0x3a,0x0f,0x1f,0x0e,0x37, - 0x0f,0x13,0x0e,0x3a,0x0f,0x20,0x0e,0x37,0x0f,0x1d,0x0e,0x3a,0x0f,0x21,0x0e,0x31, - 0x0f,0x23,0x00,0x3a,0x0f,0x22,0x0e,0x37,0x0f,0x22,0x0e,0x3a,0x0f,0x24,0x0e,0x31, - 0x0c,0x25,0x00,0x37,0x0f,0x0e,0x00,0x3a,0x0c,0x26,0x0f,0x30,0x00,0x00,0x80,0x48, - 0x09,0x02,0x00,0x0a,0x63,0x64,0x61,0x74,0x61,0x00,0x0d,0x62,0x69,0x74,0x66,0x69, - 0x65,0x6c,0x64,0x00,0x0a,0x66,0x69,0x65,0x6c,0x64,0x0a,0x66,0x6c,0x6f,0x61,0x74, - 0x0a,0x75,0x6e,0x69,0x6f,0x6e,0x08,0x70,0x74,0x72,0x00,0x08,0x69,0x6e,0x74,0x00, - 0x08,0x72,0x65,0x66,0x00,0x09,0x65,0x6e,0x75,0x6d,0x00,0x09,0x66,0x75,0x6e,0x63, - 0x00,0x0a,0x61,0x72,0x72,0x61,0x79,0x00,0x0b,0x73,0x74,0x72,0x75,0x63,0x74,0x01, - 0x00,0x00,0x00,0x00,0x0b,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0f,0x69,0x6e,0x73,0x70, - 0x65,0x63,0x74,0x6f,0x72,0x73,0x00,0x17,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x5f, - 0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x0b,0x63,0x6f,0x6e,0x63,0x61, - 0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74,0x0b,0x73, - 0x74,0x72,0x69,0x6e,0x67,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x09,0x74,0x79,0x70, - 0x65,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0d,0x74,0x6f,0x73,0x74,0x72, - 0x69,0x6e,0x67,0x08,0x66,0x66,0x69,0x21,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, - 0x2e,0x70,0x6c,0x75,0x67,0x69,0x6e,0x73,0x2e,0x66,0x66,0x69,0x2e,0x72,0x65,0x66, - 0x6c,0x65,0x63,0x74,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e, - 0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x0c,0x72,0x65,0x71,0x75, - 0x69,0x72,0x65,0x55,0x00,0x01,0x05,0x01,0x03,0x02,0x0d,0x08,0x00,0x00,0x00,0x54, - 0x01,0x0a,0x80,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x25,0x02,0x01,0x00,0x10, - 0x03,0x00,0x00,0x3e,0x01,0x03,0x02,0x2b,0x02,0x00,0x00,0x37,0x02,0x02,0x02,0x14, - 0x03,0x01,0x01,0x38,0x04,0x03,0x01,0x40,0x02,0x03,0x00,0x47,0x00,0x01,0x00,0x00, - 0xc0,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0e,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f, - 0x74,0x2a,0x09,0x63,0x61,0x73,0x74,0x00,0x08,0x4c,0x00,0x01,0x05,0x00,0x04,0x00, - 0x0a,0x34,0x01,0x00,0x00,0x34,0x02,0x01,0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02, - 0x02,0x10,0x03,0x02,0x00,0x37,0x02,0x02,0x02,0x25,0x04,0x03,0x00,0x3e,0x02,0x03, - 0x02,0x27,0x03,0x10,0x00,0x40,0x01,0x03,0x00,0x09,0x25,0x78,0x2a,0x24,0x0a,0x6d, - 0x61,0x74,0x63,0x68,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x0d,0x74,0x6f, - 0x6e,0x75,0x6d,0x62,0x65,0x72,0x0b,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x47,0x00, - 0x01,0x00,0x2c,0x00,0x02,0x04,0x00,0x02,0x00,0x04,0x34,0x02,0x00,0x00,0x25,0x03, - 0x01,0x00,0x3e,0x02,0x02,0x01,0x47,0x00,0x01,0x00,0x13,0x54,0x4f,0x44,0x4f,0x3a, - 0x20,0x43,0x54,0x41,0x5f,0x4e,0x4f,0x4e,0x45,0x0a,0x65,0x72,0x72,0x6f,0x72,0x2c, - 0x00,0x02,0x04,0x00,0x02,0x00,0x04,0x34,0x02,0x00,0x00,0x25,0x03,0x01,0x00,0x3e, - 0x02,0x02,0x01,0x47,0x00,0x01,0x00,0x13,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x43,0x54, - 0x41,0x5f,0x51,0x55,0x41,0x4c,0x0a,0x65,0x72,0x72,0x6f,0x72,0x44,0x00,0x02,0x04, - 0x00,0x04,0x00,0x07,0x37,0x02,0x00,0x00,0x27,0x03,0x02,0x00,0x23,0x00,0x02,0x03, - 0x3a,0x00,0x01,0x01,0x37,0x02,0x02,0x01,0x3a,0x00,0x03,0x02,0x47,0x00,0x01,0x00, - 0x0a,0x61,0x6c,0x69,0x67,0x6e,0x0f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, - 0x73,0x0e,0x61,0x6c,0x69,0x67,0x6e,0x6d,0x65,0x6e,0x74,0x0a,0x76,0x61,0x6c,0x75, - 0x65,0x45,0x00,0x02,0x04,0x00,0x04,0x00,0x06,0x29,0x02,0x02,0x00,0x3a,0x02,0x00, - 0x01,0x37,0x02,0x01,0x01,0x37,0x03,0x03,0x01,0x3a,0x03,0x02,0x02,0x47,0x00,0x01, - 0x00,0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x0c,0x73,0x75,0x62,0x74,0x79,0x70,0x65, - 0x0f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x73,0x10,0x74,0x72,0x61,0x6e, - 0x73,0x70,0x61,0x72,0x65,0x6e,0x74,0x21,0x00,0x02,0x03,0x00,0x02,0x00,0x03,0x37, - 0x02,0x01,0x00,0x3a,0x02,0x00,0x01,0x47,0x00,0x01,0x00,0x09,0x6e,0x61,0x6d,0x65, - 0x0d,0x73,0x79,0x6d,0x5f,0x6e,0x61,0x6d,0x65,0x2b,0x00,0x02,0x04,0x00,0x02,0x00, - 0x04,0x34,0x02,0x00,0x00,0x25,0x03,0x01,0x00,0x3e,0x02,0x02,0x01,0x47,0x00,0x01, - 0x00,0x12,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x43,0x54,0x41,0x5f,0x42,0x41,0x44,0x0a, - 0x65,0x72,0x72,0x6f,0x72,0x8a,0x09,0x00,0x01,0x0d,0x09,0x1e,0x03,0xe9,0x01,0x2b, - 0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x36,0x01,0x00,0x01,0x2b,0x02,0x01,0x00,0x37, - 0x02,0x01,0x02,0x37,0x03,0x02,0x01,0x27,0x04,0x1c,0x00,0x3e,0x02,0x03,0x02,0x2b, - 0x03,0x02,0x00,0x36,0x03,0x02,0x03,0x38,0x04,0x01,0x03,0x34,0x05,0x03,0x00,0x33, - 0x06,0x04,0x00,0x3a,0x04,0x05,0x06,0x3a,0x00,0x06,0x06,0x2b,0x07,0x03,0x00,0x37, - 0x08,0x07,0x01,0x3e,0x07,0x02,0x02,0x3a,0x07,0x07,0x06,0x2b,0x07,0x04,0x00,0x36, - 0x07,0x04,0x07,0x3e,0x05,0x03,0x02,0x27,0x06,0x05,0x00,0x13,0x07,0x03,0x00,0x27, - 0x08,0x01,0x00,0x49,0x06,0x15,0x80,0x2b,0x0a,0x01,0x00,0x37,0x0a,0x08,0x0a,0x37, - 0x0b,0x02,0x01,0x36,0x0c,0x09,0x03,0x38,0x0c,0x01,0x0c,0x3e,0x0a,0x03,0x02,0x08, - 0x0a,0x00,0x00,0x54,0x0a,0x0c,0x80,0x36,0x0a,0x09,0x03,0x38,0x0a,0x03,0x0a,0x07, - 0x0a,0x09,0x00,0x54,0x0a,0x04,0x80,0x36,0x0a,0x09,0x03,0x38,0x0a,0x02,0x0a,0x3a, - 0x0a,0x05,0x05,0x54,0x0a,0x04,0x80,0x36,0x0a,0x09,0x03,0x38,0x0a,0x02,0x0a,0x29, - 0x0b,0x02,0x00,0x39,0x0b,0x0a,0x05,0x4b,0x06,0xeb,0x7f,0x27,0x06,0x05,0x00,0x03, - 0x02,0x06,0x00,0x54,0x06,0x0f,0x80,0x2b,0x06,0x01,0x00,0x37,0x06,0x0b,0x06,0x27, - 0x07,0x01,0x00,0x2b,0x08,0x01,0x00,0x37,0x08,0x08,0x08,0x2b,0x09,0x01,0x00,0x37, - 0x09,0x01,0x09,0x37,0x0a,0x02,0x01,0x27,0x0b,0x10,0x00,0x3e,0x09,0x03,0x02,0x27, - 0x0a,0x0f,0x00,0x3e,0x08,0x03,0x00,0x3d,0x06,0x01,0x02,0x3a,0x06,0x0a,0x05,0x54, - 0x06,0x0e,0x80,0x07,0x04,0x0c,0x00,0x54,0x06,0x0c,0x80,0x2b,0x06,0x05,0x00,0x2b, - 0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x2b,0x08,0x01,0x00,0x37,0x08,0x01,0x08,0x37, - 0x09,0x02,0x01,0x27,0x0a,0x10,0x00,0x3e,0x08,0x03,0x02,0x27,0x09,0x03,0x00,0x3e, - 0x07,0x03,0x02,0x36,0x06,0x07,0x06,0x3a,0x06,0x0d,0x05,0x38,0x06,0x02,0x03,0x06, - 0x06,0x0e,0x00,0x54,0x06,0x13,0x80,0x38,0x06,0x02,0x03,0x2b,0x07,0x01,0x00,0x37, - 0x07,0x08,0x07,0x37,0x08,0x02,0x01,0x28,0x09,0x01,0x00,0x3e,0x07,0x03,0x02,0x2b, - 0x08,0x06,0x00,0x36,0x08,0x06,0x08,0x0f,0x00,0x08,0x00,0x54,0x09,0x08,0x80,0x09, - 0x07,0x00,0x00,0x54,0x08,0x02,0x80,0x29,0x07,0x00,0x00,0x54,0x08,0x04,0x80,0x2b, - 0x08,0x07,0x00,0x10,0x09,0x07,0x00,0x3e,0x08,0x02,0x02,0x10,0x07,0x08,0x00,0x39, - 0x07,0x06,0x05,0x38,0x06,0x03,0x03,0x06,0x06,0x0e,0x00,0x54,0x06,0x0d,0x80,0x38, - 0x06,0x03,0x03,0x37,0x07,0x0f,0x01,0x39,0x07,0x06,0x05,0x07,0x06,0x0f,0x00,0x54, - 0x07,0x08,0x80,0x2b,0x07,0x01,0x00,0x37,0x07,0x10,0x07,0x36,0x08,0x06,0x05,0x3e, - 0x07,0x02,0x02,0x09,0x07,0x00,0x00,0x54,0x07,0x02,0x80,0x25,0x07,0x11,0x00,0x39, - 0x07,0x06,0x05,0x07,0x04,0x12,0x00,0x54,0x06,0x1b,0x80,0x2b,0x06,0x08,0x00,0x2b, - 0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x2b,0x08,0x01,0x00,0x37,0x08,0x01,0x08,0x37, - 0x09,0x02,0x01,0x27,0x0a,0x10,0x00,0x3e,0x08,0x03,0x02,0x27,0x09,0xff,0x00,0x3e, - 0x07,0x03,0x02,0x36,0x06,0x07,0x06,0x37,0x07,0x13,0x05,0x0f,0x00,0x07,0x00,0x54, - 0x08,0x0b,0x80,0x37,0x07,0x13,0x05,0x32,0x08,0x00,0x00,0x3a,0x08,0x14,0x07,0x10, - 0x08,0x06,0x00,0x10,0x09,0x05,0x00,0x10,0x0a,0x07,0x00,0x3e,0x08,0x03,0x01,0x37, - 0x08,0x06,0x05,0x3a,0x08,0x06,0x07,0x10,0x05,0x07,0x00,0x54,0x07,0x31,0x80,0x3a, - 0x06,0x15,0x05,0x54,0x06,0x2f,0x80,0x07,0x04,0x16,0x00,0x54,0x06,0x2d,0x80,0x37, - 0x06,0x17,0x05,0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x37,0x08,0x02,0x01,0x27, - 0x09,0x7f,0x00,0x3e,0x07,0x03,0x02,0x17,0x07,0x02,0x07,0x1e,0x06,0x07,0x06,0x3a, - 0x06,0x17,0x05,0x2b,0x06,0x01,0x00,0x37,0x06,0x08,0x06,0x2b,0x07,0x01,0x00,0x37, - 0x07,0x01,0x07,0x37,0x08,0x02,0x01,0x27,0x09,0x08,0x00,0x3e,0x07,0x03,0x02,0x27, - 0x08,0x7f,0x00,0x3e,0x06,0x03,0x02,0x17,0x06,0x02,0x06,0x3a,0x06,0x0f,0x05,0x33, - 0x06,0x18,0x00,0x37,0x07,0x19,0x05,0x3a,0x07,0x19,0x06,0x37,0x07,0x1a,0x05,0x3a, - 0x07,0x1a,0x06,0x37,0x07,0x1b,0x05,0x3a,0x07,0x1b,0x06,0x37,0x07,0x1c,0x05,0x3a, - 0x07,0x1c,0x06,0x2b,0x07,0x01,0x00,0x37,0x07,0x08,0x07,0x2b,0x08,0x01,0x00,0x37, - 0x08,0x01,0x08,0x37,0x09,0x02,0x01,0x27,0x0a,0x10,0x00,0x3e,0x08,0x03,0x02,0x27, - 0x09,0x7f,0x00,0x3e,0x07,0x03,0x02,0x3a,0x07,0x0f,0x06,0x3a,0x06,0x13,0x05,0x2a, - 0x06,0x09,0x00,0x3a,0x09,0x1c,0x05,0x3a,0x08,0x1b,0x05,0x3a,0x07,0x1a,0x05,0x3a, - 0x06,0x19,0x05,0x38,0x06,0x04,0x03,0x0f,0x00,0x06,0x00,0x54,0x07,0x24,0x80,0x37, - 0x06,0x1d,0x01,0x08,0x06,0x00,0x00,0x54,0x06,0x21,0x80,0x51,0x06,0x20,0x80,0x2b, - 0x06,0x00,0x00,0x37,0x06,0x00,0x06,0x37,0x07,0x1d,0x01,0x36,0x06,0x07,0x06,0x2b, - 0x07,0x02,0x00,0x2b,0x08,0x01,0x00,0x37,0x08,0x01,0x08,0x37,0x09,0x02,0x06,0x27, - 0x0a,0x1c,0x00,0x3e,0x08,0x03,0x02,0x36,0x07,0x08,0x07,0x38,0x07,0x01,0x07,0x06, - 0x07,0x12,0x00,0x54,0x07,0x01,0x80,0x54,0x06,0x11,0x80,0x2b,0x07,0x01,0x00,0x37, - 0x07,0x08,0x07,0x37,0x08,0x02,0x06,0x28,0x09,0x01,0x00,0x3e,0x07,0x03,0x02,0x08, - 0x07,0x00,0x00,0x54,0x07,0x01,0x80,0x54,0x06,0x09,0x80,0x2b,0x07,0x07,0x00,0x37, - 0x08,0x1d,0x01,0x3e,0x07,0x02,0x02,0x10,0x09,0x07,0x00,0x37,0x08,0x15,0x07,0x10, - 0x0a,0x05,0x00,0x3e,0x08,0x03,0x01,0x10,0x01,0x06,0x00,0x54,0x06,0xdc,0x7f,0x48, - 0x05,0x02,0x00,0x05,0x80,0x01,0xc0,0x07,0xc0,0x03,0xc0,0x09,0xc0,0x0b,0xc0,0x08, - 0xc0,0x0c,0xc0,0x0a,0xc0,0x08,0x73,0x69,0x62,0x0d,0x75,0x6e,0x73,0x69,0x67,0x6e, - 0x65,0x64,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x0a,0x63,0x6f,0x6e,0x73, - 0x74,0x09,0x62,0x6f,0x6f,0x6c,0x01,0x00,0x01,0x09,0x77,0x68,0x61,0x74,0x08,0x69, - 0x6e,0x74,0x0b,0x6f,0x66,0x66,0x73,0x65,0x74,0x0d,0x62,0x69,0x74,0x66,0x69,0x65, - 0x6c,0x64,0x08,0x43,0x54,0x41,0x0f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, - 0x73,0x09,0x74,0x79,0x70,0x65,0x0b,0x61,0x74,0x74,0x72,0x69,0x62,0x09,0x6e,0x6f, - 0x6e,0x65,0x09,0x62,0x6e,0x6f,0x74,0x09,0x73,0x69,0x7a,0x65,0x05,0x0f,0x63,0x6f, - 0x6e,0x76,0x65,0x6e,0x74,0x69,0x6f,0x6e,0x09,0x66,0x75,0x6e,0x63,0x0b,0x6c,0x73, - 0x68,0x69,0x66,0x74,0x0e,0x61,0x6c,0x69,0x67,0x6e,0x6d,0x65,0x6e,0x74,0x0c,0x73, - 0x75,0x62,0x77,0x68,0x61,0x74,0x09,0x62,0x61,0x6e,0x64,0x09,0x6e,0x61,0x6d,0x65, - 0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x09,0x77,0x68,0x61,0x74,0x01,0x00,0x00,0x11, - 0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x09,0x69,0x6e,0x66, - 0x6f,0x0b,0x72,0x73,0x68,0x69,0x66,0x74,0x08,0x74,0x61,0x62,0x00,0xfe,0xff,0x07, - 0x10,0x6b,0x00,0x02,0x05,0x02,0x05,0x01,0x11,0x51,0x02,0x0f,0x80,0x2b,0x02,0x00, - 0x00,0x37,0x02,0x00,0x02,0x37,0x03,0x01,0x01,0x36,0x02,0x03,0x02,0x37,0x03,0x02, - 0x02,0x09,0x03,0x00,0x00,0x54,0x03,0x01,0x80,0x47,0x00,0x01,0x00,0x2b,0x03,0x01, - 0x00,0x37,0x04,0x02,0x02,0x3e,0x03,0x02,0x02,0x10,0x01,0x03,0x00,0x37,0x03,0x03, - 0x01,0x06,0x03,0x04,0x00,0x54,0x03,0xf0,0x7f,0x48,0x01,0x02,0x00,0x05,0x80,0x0c, - 0xc0,0x0b,0x61,0x74,0x74,0x72,0x69,0x62,0x09,0x77,0x68,0x61,0x74,0x08,0x73,0x69, - 0x62,0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x08,0x74,0x61,0x62,0x00,0x83,0x01,0x00, - 0x01,0x04,0x03,0x05,0x00,0x15,0x37,0x01,0x00,0x00,0x0f,0x00,0x01,0x00,0x54,0x02, - 0x0e,0x80,0x51,0x01,0x0d,0x80,0x2b,0x01,0x00,0x00,0x37,0x02,0x00,0x00,0x37,0x02, - 0x01,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x2b,0x02,0x01,0x00,0x37,0x02, - 0x02,0x02,0x37,0x03,0x03,0x00,0x36,0x02,0x03,0x02,0x37,0x02,0x04,0x02,0x3e,0x01, - 0x02,0x02,0x10,0x00,0x01,0x00,0x54,0x01,0xef,0x7f,0x2b,0x01,0x02,0x00,0x29,0x02, - 0x00,0x00,0x10,0x03,0x00,0x00,0x46,0x01,0x04,0x00,0x0c,0xc0,0x05,0x80,0x0d,0xc0, - 0x08,0x73,0x69,0x62,0x0b,0x74,0x79,0x70,0x65,0x69,0x64,0x08,0x74,0x61,0x62,0x0c, - 0x73,0x75,0x62,0x74,0x79,0x70,0x65,0x0f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74, - 0x65,0x73,0x84,0x01,0x00,0x02,0x09,0x01,0x02,0x01,0x1b,0x34,0x02,0x00,0x00,0x10, - 0x03,0x01,0x00,0x3e,0x02,0x02,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x0b,0x80,0x2b, - 0x03,0x00,0x00,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x04,0x54,0x06,0x04,0x80,0x09, - 0x02,0x00,0x00,0x54,0x07,0x01,0x80,0x48,0x06,0x02,0x00,0x15,0x02,0x00,0x02,0x41, - 0x06,0x03,0x02,0x4e,0x06,0xfa,0x7f,0x54,0x03,0x0a,0x80,0x2b,0x03,0x00,0x00,0x10, - 0x04,0x00,0x00,0x3e,0x03,0x02,0x04,0x54,0x06,0x04,0x80,0x37,0x07,0x01,0x06,0x05, - 0x07,0x01,0x00,0x54,0x07,0x01,0x80,0x48,0x06,0x02,0x00,0x41,0x06,0x03,0x02,0x4e, - 0x06,0xfa,0x7f,0x47,0x00,0x01,0x00,0x0e,0xc0,0x09,0x6e,0x61,0x6d,0x65,0x0d,0x74, - 0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x02,0x3b,0x00,0x01,0x05,0x02,0x02,0x00,0x08, - 0x2b,0x01,0x00,0x00,0x34,0x02,0x00,0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x01,0x03, - 0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x00,0x3d,0x02,0x00,0x00,0x3f,0x01,0x00,0x00, - 0x0c,0xc0,0x00,0xc0,0x0b,0x74,0x79,0x70,0x65,0x6f,0x66,0x0d,0x74,0x6f,0x6e,0x75, - 0x6d,0x62,0x65,0x72,0x43,0x00,0x01,0x05,0x02,0x02,0x00,0x0a,0x2b,0x01,0x00,0x00, - 0x34,0x02,0x00,0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x01,0x03,0x10,0x04,0x00,0x00, - 0x3e,0x03,0x02,0x00,0x3d,0x02,0x00,0x02,0x12,0x02,0x02,0x00,0x36,0x01,0x02,0x01, - 0x48,0x01,0x02,0x00,0x06,0x80,0x00,0xc0,0x0b,0x74,0x79,0x70,0x65,0x6f,0x66,0x0d, - 0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x97,0x12,0x03,0x00,0x12,0x00,0x5c,0x01, - 0xe9,0x01,0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01, - 0x00,0x00,0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x32,0x02,0x00,0x00,0x37,0x03, - 0x03,0x00,0x25,0x04,0x04,0x00,0x3e,0x03,0x02,0x01,0x31,0x03,0x05,0x00,0x31,0x04, - 0x06,0x00,0x29,0x05,0x00,0x00,0x34,0x06,0x07,0x00,0x37,0x06,0x08,0x06,0x31,0x07, - 0x09,0x00,0x3e,0x06,0x02,0x02,0x37,0x07,0x0a,0x00,0x25,0x08,0x0b,0x00,0x3e,0x07, - 0x02,0x02,0x37,0x08,0x0c,0x00,0x10,0x09,0x07,0x00,0x37,0x0a,0x0c,0x00,0x10,0x0b, - 0x07,0x00,0x10,0x0c,0x04,0x00,0x10,0x0d,0x06,0x00,0x3e,0x0c,0x02,0x00,0x3d,0x0a, - 0x01,0x02,0x38,0x0a,0x02,0x0a,0x3e,0x08,0x03,0x02,0x37,0x09,0x0c,0x00,0x25,0x0a, - 0x0d,0x00,0x37,0x0b,0x0c,0x00,0x25,0x0c,0x0e,0x00,0x25,0x0d,0x0f,0x00,0x3e,0x0b, - 0x03,0x00,0x3d,0x09,0x01,0x02,0x27,0x0a,0x00,0x00,0x34,0x0b,0x10,0x00,0x37,0x0b, - 0x11,0x0b,0x34,0x0c,0x12,0x00,0x36,0x0d,0x0a,0x08,0x1f,0x0d,0x09,0x0d,0x3e,0x0c, - 0x02,0x00,0x3d,0x0b,0x00,0x02,0x27,0x0c,0x40,0x00,0x01,0x0c,0x0b,0x00,0x54,0x0b, - 0x03,0x80,0x51,0x0b,0x02,0x80,0x14,0x0a,0x00,0x0a,0x54,0x0b,0xf3,0x7f,0x51,0x0b, - 0x0c,0x80,0x15,0x0a,0x00,0x0a,0x37,0x0b,0x0c,0x00,0x25,0x0c,0x13,0x00,0x36,0x0d, - 0x0a,0x08,0x3e,0x0b,0x03,0x02,0x10,0x05,0x0b,0x00,0x37,0x0b,0x0c,0x00,0x10,0x0c, - 0x07,0x00,0x37,0x0d,0x14,0x05,0x3e,0x0b,0x03,0x02,0x05,0x0b,0x08,0x00,0x54,0x0b, - 0xf3,0x7f,0x29,0x06,0x00,0x00,0x32,0x07,0x00,0x00,0x3b,0x07,0x00,0x07,0x37,0x08, - 0x0c,0x00,0x25,0x09,0x0b,0x00,0x10,0x0a,0x04,0x00,0x10,0x0b,0x07,0x00,0x3e,0x0a, - 0x02,0x00,0x3d,0x08,0x01,0x02,0x38,0x08,0x02,0x08,0x37,0x09,0x0c,0x00,0x25,0x0a, - 0x0b,0x00,0x10,0x0b,0x08,0x00,0x3e,0x09,0x03,0x02,0x37,0x0a,0x15,0x00,0x25,0x0b, - 0x16,0x00,0x3e,0x0a,0x02,0x02,0x0f,0x00,0x0a,0x00,0x54,0x0b,0x02,0x80,0x27,0x0a, - 0x00,0x00,0x54,0x0b,0x01,0x80,0x27,0x0a,0x01,0x00,0x37,0x0b,0x0c,0x00,0x25,0x0c, - 0x0d,0x00,0x37,0x0d,0x0c,0x00,0x25,0x0e,0x17,0x00,0x37,0x0f,0x18,0x05,0x3e,0x0d, - 0x03,0x00,0x3d,0x0b,0x01,0x02,0x39,0x0b,0x0a,0x09,0x38,0x06,0x00,0x07,0x32,0x07, - 0x0e,0x00,0x33,0x08,0x19,0x00,0x33,0x09,0x1a,0x00,0x3b,0x09,0x05,0x08,0x33,0x09, - 0x1b,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x1c,0x00,0x3b,0x09,0x07,0x08,0x33,0x09, - 0x1d,0x00,0x3b,0x09,0x08,0x08,0x33,0x09,0x1e,0x00,0x3b,0x09,0x09,0x08,0x33,0x09, - 0x1f,0x00,0x3b,0x09,0x0a,0x08,0x3b,0x08,0x00,0x07,0x33,0x08,0x20,0x00,0x33,0x09, - 0x21,0x00,0x3b,0x09,0x05,0x08,0x33,0x09,0x22,0x00,0x3b,0x09,0x06,0x08,0x33,0x09, - 0x23,0x00,0x3b,0x09,0x07,0x08,0x33,0x09,0x24,0x00,0x3b,0x09,0x08,0x08,0x3b,0x08, - 0x01,0x07,0x33,0x08,0x25,0x00,0x33,0x09,0x26,0x00,0x3b,0x09,0x05,0x08,0x33,0x09, - 0x27,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x28,0x00,0x3b,0x09,0x07,0x08,0x3b,0x08, - 0x02,0x07,0x33,0x08,0x29,0x00,0x33,0x09,0x2a,0x00,0x3b,0x09,0x05,0x08,0x33,0x09, - 0x2b,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x2c,0x00,0x3b,0x09,0x07,0x08,0x33,0x09, - 0x2d,0x00,0x3b,0x09,0x08,0x08,0x33,0x09,0x2e,0x00,0x3b,0x09,0x09,0x08,0x3b,0x08, - 0x03,0x07,0x33,0x08,0x2f,0x00,0x33,0x09,0x30,0x00,0x3b,0x09,0x05,0x08,0x33,0x09, - 0x31,0x00,0x3b,0x09,0x06,0x08,0x3b,0x08,0x04,0x07,0x33,0x08,0x32,0x00,0x3b,0x08, - 0x05,0x07,0x33,0x08,0x33,0x00,0x33,0x09,0x34,0x00,0x3b,0x09,0x05,0x08,0x33,0x09, - 0x35,0x00,0x3b,0x09,0x06,0x08,0x3b,0x08,0x06,0x07,0x33,0x08,0x36,0x00,0x3b,0x08, - 0x07,0x07,0x33,0x08,0x37,0x00,0x3b,0x08,0x08,0x07,0x33,0x08,0x38,0x00,0x3b,0x08, - 0x09,0x07,0x33,0x08,0x39,0x00,0x33,0x09,0x3a,0x00,0x3b,0x09,0x05,0x08,0x33,0x09, - 0x3b,0x00,0x3b,0x09,0x06,0x08,0x33,0x09,0x3c,0x00,0x3b,0x09,0x07,0x08,0x33,0x09, - 0x3d,0x00,0x3b,0x09,0x08,0x08,0x3b,0x08,0x0a,0x07,0x33,0x08,0x3e,0x00,0x33,0x09, - 0x3f,0x00,0x3b,0x09,0x05,0x08,0x3b,0x08,0x0b,0x07,0x33,0x08,0x40,0x00,0x3b,0x08, - 0x0c,0x07,0x33,0x08,0x41,0x00,0x3b,0x08,0x0d,0x07,0x33,0x08,0x42,0x00,0x32,0x09, - 0x00,0x00,0x34,0x0a,0x43,0x00,0x10,0x0b,0x07,0x00,0x3e,0x0a,0x02,0x04,0x54,0x0d, - 0x05,0x80,0x38,0x0f,0x01,0x0e,0x33,0x10,0x44,0x00,0x32,0x11,0x00,0x00,0x3a,0x11, - 0x0f,0x10,0x39,0x10,0x0f,0x09,0x41,0x0d,0x03,0x03,0x4e,0x0d,0xf9,0x7f,0x32,0x0a, - 0x06,0x00,0x31,0x0b,0x45,0x00,0x3b,0x0b,0x00,0x0a,0x31,0x0b,0x46,0x00,0x3b,0x0b, - 0x01,0x0a,0x31,0x0b,0x47,0x00,0x3b,0x0b,0x02,0x0a,0x31,0x0b,0x48,0x00,0x3b,0x0b, - 0x03,0x0a,0x31,0x0b,0x49,0x00,0x3b,0x0b,0x04,0x0a,0x31,0x0b,0x4a,0x00,0x3b,0x0b, - 0x05,0x0a,0x33,0x0b,0x4b,0x00,0x31,0x0c,0x4c,0x00,0x31,0x0d,0x4d,0x00,0x31,0x0e, - 0x4e,0x00,0x37,0x0f,0x4f,0x09,0x37,0x0f,0x0f,0x0f,0x3a,0x0e,0x50,0x0f,0x37,0x0f, - 0x51,0x09,0x37,0x0f,0x0f,0x0f,0x3a,0x0e,0x52,0x0f,0x37,0x0f,0x53,0x09,0x37,0x0f, - 0x0f,0x0f,0x3a,0x0e,0x54,0x0f,0x31,0x0f,0x55,0x00,0x37,0x10,0x4f,0x09,0x37,0x10, - 0x0f,0x10,0x3a,0x0f,0x56,0x10,0x37,0x10,0x51,0x09,0x37,0x10,0x0f,0x10,0x3a,0x0f, - 0x57,0x10,0x37,0x10,0x53,0x09,0x37,0x10,0x0f,0x10,0x3a,0x0f,0x58,0x10,0x31,0x10, - 0x59,0x00,0x3a,0x10,0x0a,0x02,0x31,0x10,0x5b,0x00,0x3a,0x10,0x5a,0x02,0x30,0x00, - 0x00,0x80,0x48,0x02,0x02,0x00,0x00,0x11,0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74, - 0x61,0x62,0x6c,0x65,0x00,0x0a,0x76,0x61,0x6c,0x75,0x65,0x0d,0x61,0x72,0x67,0x75, - 0x6d,0x65,0x6e,0x74,0x0b,0x6d,0x65,0x6d,0x62,0x65,0x72,0x00,0x0b,0x76,0x61,0x6c, - 0x75,0x65,0x73,0x09,0x65,0x6e,0x75,0x6d,0x0e,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e, - 0x74,0x73,0x09,0x66,0x75,0x6e,0x63,0x0c,0x6d,0x65,0x6d,0x62,0x65,0x72,0x73,0x0b, - 0x73,0x74,0x72,0x75,0x63,0x74,0x00,0x00,0x00,0x01,0x04,0x00,0x0a,0x63,0x64,0x65, - 0x63,0x6c,0x0d,0x74,0x68,0x69,0x73,0x63,0x61,0x6c,0x6c,0x0d,0x66,0x61,0x73,0x74, - 0x63,0x61,0x6c,0x6c,0x0c,0x73,0x74,0x64,0x63,0x61,0x6c,0x6c,0x00,0x00,0x00,0x00, - 0x00,0x00,0x01,0x00,0x00,0x0b,0x69,0x70,0x61,0x69,0x72,0x73,0x01,0x00,0x04,0x11, - 0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x02,0x0f,0x76,0x61, - 0x6c,0x75,0x65,0x5f,0x74,0x79,0x70,0x65,0x02,0x09,0x74,0x79,0x70,0x65,0x02,0x10, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x5f,0x74,0x79,0x70,0x65,0x02,0x01,0x04,0x00,0x00, - 0x07,0x6b,0x77,0x08,0x54,0x4f,0x4b,0x09,0x73,0x69,0x7a,0x65,0x01,0x05,0x00,0x00, - 0x0b,0x65,0x78,0x74,0x65,0x72,0x6e,0x08,0x43,0x49,0x44,0x05,0x02,0x01,0x03,0x00, - 0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x05,0x00,0x00, - 0x0d,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x09,0x74,0x79,0x70,0x65,0x0a,0x76, - 0x61,0x6c,0x75,0x65,0x02,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x04,0x0d,0x75, - 0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x08, - 0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x01,0x03,0x00,0x00,0x03,0x80,0x80, - 0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80, - 0x40,0x09,0x62,0x6f,0x6f,0x6c,0x01,0x05,0x00,0x00,0x0d,0x62,0x69,0x74,0x66,0x69, - 0x65,0x6c,0x64,0x05,0x0b,0x6f,0x66,0x66,0x73,0x65,0x74,0x02,0x01,0x05,0x00,0x00, - 0x0a,0x66,0x69,0x65,0x6c,0x64,0x09,0x74,0x79,0x70,0x65,0x0b,0x6f,0x66,0x66,0x73, - 0x65,0x74,0x02,0x01,0x05,0x00,0x00,0x0b,0x61,0x74,0x74,0x72,0x69,0x62,0x09,0x74, - 0x79,0x70,0x65,0x0a,0x76,0x61,0x6c,0x75,0x65,0x02,0x01,0x05,0x00,0x00,0x0c,0x74, - 0x79,0x70,0x65,0x64,0x65,0x66,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74, - 0x79,0x70,0x65,0x05,0x01,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x02,0x13,0x73, - 0x73,0x65,0x5f,0x72,0x65,0x67,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x01,0x03,0x00, - 0x00,0x03,0x80,0x80,0x80,0x04,0x0b,0x76,0x61,0x72,0x61,0x72,0x67,0x01,0x05,0x00, - 0x00,0x09,0x66,0x75,0x6e,0x63,0x10,0x72,0x65,0x74,0x75,0x72,0x6e,0x5f,0x74,0x79, - 0x70,0x65,0x0a,0x6e,0x61,0x72,0x67,0x73,0x02,0x01,0x05,0x00,0x00,0x09,0x65,0x6e, - 0x75,0x6d,0x09,0x74,0x79,0x70,0x65,0x09,0x73,0x69,0x7a,0x65,0x02,0x01,0x03,0x00, - 0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x01, - 0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x05, - 0x00,0x00,0x09,0x76,0x6f,0x69,0x64,0x05,0x09,0x73,0x69,0x7a,0x65,0x01,0x01,0x03, - 0x00,0x00,0x03,0x80,0x80,0x40,0x08,0x76,0x6c,0x61,0x01,0x03,0x00,0x00,0x03,0x80, - 0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x01,0x03,0x00,0x00, - 0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x03,0x00,0x00,0x03, - 0x80,0x80,0x80,0x20,0x0c,0x63,0x6f,0x6d,0x70,0x6c,0x65,0x78,0x01,0x03,0x00,0x00, - 0x03,0x80,0x80,0x80,0x40,0x0b,0x76,0x65,0x63,0x74,0x6f,0x72,0x01,0x05,0x00,0x00, - 0x0a,0x61,0x72,0x72,0x61,0x79,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74, - 0x79,0x70,0x65,0x09,0x73,0x69,0x7a,0x65,0x01,0x01,0x04,0x00,0x00,0x03,0x80,0x80, - 0x80,0x04,0x08,0x72,0x65,0x66,0x0c,0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x01,0x03, - 0x00,0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65, - 0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01, - 0x05,0x00,0x00,0x08,0x70,0x74,0x72,0x11,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f, - 0x74,0x79,0x70,0x65,0x09,0x73,0x69,0x7a,0x65,0x01,0x01,0x03,0x00,0x00,0x03,0x80, - 0x80,0x40,0x08,0x76,0x6c,0x61,0x01,0x04,0x00,0x00,0x03,0x80,0x80,0x80,0x04,0x0a, - 0x75,0x6e,0x69,0x6f,0x6e,0x0c,0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x01,0x03,0x00, - 0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x01, - 0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73,0x74,0x01,0x05, - 0x00,0x00,0x0b,0x73,0x74,0x72,0x75,0x63,0x74,0x05,0x09,0x73,0x69,0x7a,0x65,0x02, - 0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x02,0x09,0x6c,0x6f,0x6e,0x67,0x01,0x03, - 0x00,0x00,0x03,0x80,0x80,0x80,0x04,0x0d,0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64, - 0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x08,0x0d,0x76,0x6f,0x6c,0x61,0x74,0x69, - 0x6c,0x65,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80,0x10,0x0a,0x63,0x6f,0x6e,0x73, - 0x74,0x01,0x04,0x00,0x00,0x03,0x80,0x80,0x80,0x20,0x0a,0x66,0x6c,0x6f,0x61,0x74, - 0x0c,0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x01,0x03,0x00,0x00,0x03,0x80,0x80,0x80, - 0x40,0x09,0x62,0x6f,0x6f,0x6c,0x01,0x05,0x00,0x00,0x08,0x69,0x6e,0x74,0x05,0x09, - 0x73,0x69,0x7a,0x65,0x01,0x0c,0x6d,0x69,0x73,0x63,0x6d,0x61,0x70,0x0e,0x75,0x69, - 0x6e,0x74,0x70,0x74,0x72,0x5f,0x74,0x07,0x6c,0x65,0x08,0x61,0x62,0x69,0x06,0x67, - 0x0d,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x2a,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62, - 0x65,0x72,0x08,0x61,0x62,0x73,0x09,0x6d,0x61,0x74,0x68,0x0c,0x5f,0x5f,0x69,0x6e, - 0x64,0x65,0x78,0x10,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x2a,0x0d, - 0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x09,0x63,0x61,0x73,0x74,0x0e,0x75,0x69, - 0x6e,0x74,0x33,0x32,0x5f,0x74,0x2a,0x0b,0x74,0x79,0x70,0x65,0x6f,0x66,0x00,0x0b, - 0x63,0x72,0x65,0x61,0x74,0x65,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, - 0x00,0x00,0xac,0x02,0x20,0x20,0x74,0x79,0x70,0x65,0x64,0x65,0x66,0x20,0x73,0x74, - 0x72,0x75,0x63,0x74,0x20,0x43,0x54,0x79,0x70,0x65,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x20,0x69,0x6e,0x66,0x6f,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x20,0x73,0x69,0x7a, - 0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x31,0x36,0x5f,0x74,0x20, - 0x73,0x69,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x31,0x36,0x5f, - 0x74,0x20,0x6e,0x65,0x78,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74, - 0x33,0x32,0x5f,0x74,0x20,0x6e,0x61,0x6d,0x65,0x3b,0x0a,0x20,0x20,0x7d,0x20,0x43, - 0x54,0x79,0x70,0x65,0x3b,0x0a,0x20,0x20,0x0a,0x20,0x20,0x74,0x79,0x70,0x65,0x64, - 0x65,0x66,0x20,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x43,0x54,0x53,0x74,0x61,0x74, - 0x65,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x43,0x54,0x79,0x70,0x65,0x20,0x2a,0x74, - 0x61,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74, - 0x20,0x74,0x6f,0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32, - 0x5f,0x74,0x20,0x73,0x69,0x7a,0x65,0x74,0x61,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x6f,0x69,0x64,0x20,0x2a,0x4c,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x6f,0x69, - 0x64,0x20,0x2a,0x67,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x6f,0x69,0x64,0x20,0x2a, - 0x66,0x69,0x6e,0x61,0x6c,0x69,0x7a,0x65,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, - 0x6f,0x69,0x64,0x20,0x2a,0x6d,0x69,0x73,0x63,0x6d,0x61,0x70,0x3b,0x0a,0x20,0x20, - 0x7d,0x20,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x3b,0x0a,0x09,0x63,0x64,0x65,0x66, - 0x08,0x62,0x69,0x74,0x08,0x66,0x66,0x69,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65, - 0x02,0x6f,0x00,0x02,0x0a,0x00,0x06,0x00,0x13,0x32,0x02,0x00,0x00,0x10,0x04,0x00, - 0x00,0x37,0x03,0x00,0x00,0x25,0x05,0x01,0x00,0x0c,0x06,0x01,0x00,0x54,0x06,0x01, - 0x80,0x25,0x06,0x02,0x00,0x25,0x07,0x03,0x00,0x24,0x05,0x07,0x05,0x3e,0x03,0x03, - 0x04,0x54,0x06,0x05,0x80,0x34,0x07,0x04,0x00,0x37,0x07,0x05,0x07,0x10,0x08,0x02, - 0x00,0x10,0x09,0x06,0x00,0x3e,0x07,0x03,0x01,0x41,0x06,0x03,0x02,0x4e,0x06,0xf9, - 0x7f,0x48,0x02,0x02,0x00,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x0a,0x74,0x61,0x62, - 0x6c,0x65,0x07,0x5d,0x2b,0x06,0x2f,0x07,0x5b,0x5e,0x0b,0x67,0x6d,0x61,0x74,0x63, - 0x68,0x40,0x00,0x01,0x08,0x00,0x02,0x00,0x0b,0x32,0x01,0x00,0x00,0x10,0x03,0x00, - 0x00,0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x3e,0x02,0x03,0x04,0x54,0x05,0x02, - 0x80,0x29,0x06,0x02,0x00,0x39,0x06,0x05,0x01,0x41,0x05,0x03,0x02,0x4e,0x05,0xfc, - 0x7f,0x48,0x01,0x02,0x00,0x0a,0x5b,0x5e,0x3b,0x5d,0x2b,0x0b,0x67,0x6d,0x61,0x74, - 0x63,0x68,0xe0,0x01,0x00,0x01,0x0b,0x01,0x04,0x01,0x2e,0x10,0x02,0x00,0x00,0x37, - 0x01,0x00,0x00,0x27,0x03,0x01,0x00,0x27,0x04,0x06,0x00,0x3e,0x01,0x04,0x02,0x07, - 0x01,0x01,0x00,0x54,0x01,0x06,0x80,0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x27, - 0x03,0x08,0x00,0x3e,0x01,0x03,0x02,0x10,0x00,0x01,0x00,0x54,0x01,0x20,0x80,0x2b, - 0x01,0x00,0x00,0x37,0x01,0x02,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x1c,0x80,0x34, - 0x01,0x03,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x02,0x02,0x3e,0x01,0x02,0x04,0x44, - 0x04,0x15,0x80,0x13,0x06,0x00,0x00,0x13,0x07,0x04,0x00,0x01,0x07,0x06,0x00,0x54, - 0x06,0x11,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x02,0x06,0x10,0x08,0x00,0x00,0x37, - 0x07,0x00,0x00,0x27,0x09,0x01,0x00,0x13,0x0a,0x04,0x00,0x3e,0x07,0x04,0x02,0x36, - 0x06,0x07,0x06,0x0f,0x00,0x06,0x00,0x54,0x07,0x07,0x80,0x10,0x07,0x00,0x00,0x37, - 0x06,0x00,0x00,0x13,0x08,0x04,0x00,0x14,0x08,0x00,0x08,0x3e,0x06,0x03,0x02,0x10, - 0x00,0x06,0x00,0x54,0x01,0x02,0x80,0x42,0x04,0x03,0x03,0x4e,0x04,0xe9,0x7f,0x48, - 0x00,0x02,0x00,0x02,0xc0,0x0a,0x70,0x61,0x69,0x72,0x73,0x11,0x73,0x65,0x61,0x72, - 0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x0b,0x61,0x73,0x73,0x65,0x74,0x73,0x08, - 0x73,0x75,0x62,0x02,0xa5,0x01,0x00,0x01,0x0b,0x01,0x03,0x01,0x21,0x2b,0x01,0x00, - 0x00,0x37,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x1c,0x80,0x34,0x01,0x01, - 0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x3e,0x01,0x02,0x04,0x44,0x04,0x15, - 0x80,0x13,0x06,0x00,0x00,0x13,0x07,0x04,0x00,0x01,0x07,0x06,0x00,0x54,0x06,0x11, - 0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x00,0x06,0x10,0x08,0x00,0x00,0x37,0x07,0x02, - 0x00,0x27,0x09,0x01,0x00,0x13,0x0a,0x04,0x00,0x3e,0x07,0x04,0x02,0x36,0x06,0x07, - 0x06,0x0f,0x00,0x06,0x00,0x54,0x07,0x07,0x80,0x10,0x07,0x00,0x00,0x37,0x06,0x02, - 0x00,0x13,0x08,0x04,0x00,0x14,0x08,0x00,0x08,0x3e,0x06,0x03,0x02,0x10,0x00,0x06, - 0x00,0x54,0x01,0x02,0x80,0x42,0x04,0x03,0x03,0x4e,0x04,0xe9,0x7f,0x48,0x00,0x02, - 0x00,0x02,0xc0,0x08,0x73,0x75,0x62,0x0a,0x70,0x61,0x69,0x72,0x73,0x11,0x73,0x65, - 0x61,0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x02,0xa5,0x01,0x00,0x01,0x0b, - 0x01,0x03,0x01,0x21,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x0f,0x00,0x01,0x00, - 0x54,0x02,0x1c,0x80,0x34,0x01,0x01,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02, - 0x3e,0x01,0x02,0x04,0x44,0x04,0x15,0x80,0x13,0x06,0x00,0x00,0x13,0x07,0x04,0x00, - 0x01,0x07,0x06,0x00,0x54,0x06,0x11,0x80,0x2b,0x06,0x00,0x00,0x37,0x06,0x00,0x06, - 0x10,0x08,0x00,0x00,0x37,0x07,0x02,0x00,0x27,0x09,0x01,0x00,0x13,0x0a,0x04,0x00, - 0x3e,0x07,0x04,0x02,0x36,0x06,0x07,0x06,0x0f,0x00,0x06,0x00,0x54,0x07,0x07,0x80, - 0x10,0x07,0x00,0x00,0x37,0x06,0x02,0x00,0x13,0x08,0x04,0x00,0x14,0x08,0x00,0x08, - 0x3e,0x06,0x03,0x02,0x10,0x00,0x06,0x00,0x54,0x01,0x02,0x80,0x42,0x04,0x03,0x03, - 0x4e,0x04,0xe9,0x7f,0x48,0x00,0x02,0x00,0x02,0xc0,0x08,0x73,0x75,0x62,0x0a,0x70, - 0x61,0x69,0x72,0x73,0x11,0x73,0x65,0x61,0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68, - 0x73,0x02,0xda,0x02,0x00,0x01,0x06,0x05,0x09,0x01,0x43,0x29,0x01,0x00,0x00,0x10, - 0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x27,0x04,0x01,0x00,0x27,0x05,0x01,0x00,0x3e, - 0x02,0x04,0x02,0x07,0x02,0x01,0x00,0x54,0x02,0x15,0x80,0x10,0x03,0x00,0x00,0x37, - 0x02,0x00,0x00,0x27,0x04,0x02,0x00,0x3e,0x02,0x03,0x02,0x2b,0x03,0x00,0x00,0x37, - 0x03,0x02,0x03,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x2b,0x03,0x01,0x00,0x10, - 0x04,0x02,0x00,0x3e,0x03,0x02,0x02,0x10,0x02,0x03,0x00,0x2b,0x03,0x00,0x00,0x37, - 0x03,0x03,0x03,0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x02,0x2b,0x04,0x00,0x00,0x37, - 0x04,0x04,0x04,0x10,0x05,0x03,0x00,0x40,0x04,0x02,0x00,0x54,0x02,0x25,0x80,0x10, - 0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x13,0x04,0x00,0x00,0x15,0x04,0x00,0x04,0x27, - 0x05,0xff,0xff,0x3e,0x02,0x04,0x02,0x10,0x03,0x02,0x00,0x37,0x02,0x05,0x02,0x3e, - 0x02,0x02,0x02,0x07,0x02,0x06,0x00,0x54,0x02,0x18,0x80,0x2b,0x02,0x02,0x00,0x07, - 0x02,0x07,0x00,0x54,0x02,0x05,0x80,0x2b,0x02,0x03,0x00,0x10,0x03,0x00,0x00,0x3e, - 0x02,0x02,0x02,0x10,0x00,0x02,0x00,0x54,0x02,0x07,0x80,0x2b,0x02,0x02,0x00,0x07, - 0x02,0x08,0x00,0x54,0x02,0x04,0x80,0x2b,0x02,0x04,0x00,0x10,0x03,0x00,0x00,0x3e, - 0x02,0x02,0x02,0x10,0x00,0x02,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x03,0x02,0x10, - 0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x2b,0x03,0x00,0x00,0x37,0x03,0x04,0x03,0x10, - 0x04,0x02,0x00,0x40,0x03,0x02,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x48, - 0x02,0x02,0x00,0x47,0x00,0x01,0x00,0x02,0xc0,0x09,0xc0,0x03,0x80,0x07,0xc0,0x08, - 0xc0,0x08,0x69,0x6f,0x73,0x0c,0x61,0x6e,0x64,0x72,0x6f,0x69,0x64,0x09,0x2e,0x6c, - 0x75,0x61,0x0a,0x6c,0x6f,0x77,0x65,0x72,0x10,0x74,0x6f,0x5f,0x66,0x69,0x6c,0x65, - 0x5f,0x75,0x72,0x69,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x0d,0x62, - 0x61,0x73,0x65,0x5f,0x64,0x69,0x72,0x06,0x40,0x08,0x73,0x75,0x62,0x06,0x19,0x00, - 0x01,0x03,0x00,0x01,0x00,0x04,0x25,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x24,0x01, - 0x02,0x01,0x48,0x01,0x02,0x00,0x06,0x25,0x98,0x04,0x01,0x01,0x12,0x02,0x16,0x00, - 0x5e,0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x27,0x03,0x01,0x00,0x27,0x04,0x01, - 0x00,0x3e,0x01,0x04,0x02,0x07,0x01,0x01,0x00,0x54,0x01,0x54,0x80,0x29,0x01,0x00, - 0x00,0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x27,0x04,0x02,0x00,0x3e,0x02,0x03, - 0x02,0x2b,0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x02,0x00,0x3e,0x03,0x02, - 0x02,0x2b,0x04,0x01,0x00,0x34,0x05,0x03,0x00,0x37,0x05,0x04,0x05,0x25,0x06,0x05, - 0x00,0x3e,0x04,0x03,0x02,0x2b,0x05,0x00,0x00,0x37,0x05,0x06,0x05,0x10,0x06,0x02, - 0x00,0x3e,0x05,0x02,0x02,0x34,0x06,0x07,0x00,0x37,0x06,0x08,0x06,0x10,0x07,0x04, - 0x00,0x25,0x08,0x09,0x00,0x3e,0x06,0x03,0x01,0x34,0x06,0x0a,0x00,0x10,0x07,0x04, - 0x00,0x3e,0x06,0x02,0x04,0x54,0x09,0x30,0x80,0x2b,0x0b,0x00,0x00,0x37,0x0b,0x06, - 0x0b,0x10,0x0c,0x0a,0x00,0x3e,0x0b,0x02,0x02,0x05,0x0b,0x05,0x00,0x54,0x0b,0x2a, - 0x80,0x34,0x0b,0x0b,0x00,0x37,0x0b,0x0c,0x0b,0x2b,0x0c,0x00,0x00,0x37,0x0c,0x02, - 0x0c,0x10,0x0d,0x0a,0x00,0x3e,0x0c,0x02,0x02,0x25,0x0d,0x0d,0x00,0x31,0x0e,0x0e, - 0x00,0x3e,0x0b,0x04,0x02,0x34,0x0c,0x0b,0x00,0x37,0x0c,0x0c,0x0c,0x10,0x0d,0x0b, - 0x00,0x25,0x0e,0x0f,0x00,0x25,0x0f,0x10,0x00,0x3e,0x0c,0x04,0x02,0x34,0x0d,0x0b, - 0x00,0x37,0x0d,0x11,0x0d,0x10,0x0e,0x03,0x00,0x10,0x0f,0x0c,0x00,0x3e,0x0d,0x03, - 0x02,0x0f,0x00,0x0d,0x00,0x54,0x0e,0x14,0x80,0x34,0x0e,0x0b,0x00,0x37,0x0e,0x0c, - 0x0e,0x10,0x0f,0x0d,0x00,0x25,0x10,0x12,0x00,0x25,0x11,0x13,0x00,0x3e,0x0e,0x04, - 0x02,0x10,0x0d,0x0e,0x00,0x0f,0x00,0x01,0x00,0x54,0x0e,0x0a,0x80,0x34,0x0e,0x0b, - 0x00,0x37,0x0e,0x14,0x0e,0x10,0x0f,0x01,0x00,0x3e,0x0e,0x02,0x02,0x34,0x0f,0x0b, - 0x00,0x37,0x0f,0x14,0x0f,0x10,0x10,0x0d,0x00,0x3e,0x0f,0x02,0x02,0x01,0x0f,0x0e, - 0x00,0x54,0x0e,0x01,0x80,0x10,0x01,0x0d,0x00,0x41,0x09,0x03,0x03,0x4e,0x09,0xce, - 0x7f,0x0f,0x00,0x01,0x00,0x54,0x06,0x05,0x80,0x25,0x06,0x15,0x00,0x10,0x07,0x01, - 0x00,0x24,0x06,0x07,0x06,0x30,0x00,0x00,0x80,0x48,0x06,0x02,0x00,0x29,0x01,0x01, - 0x00,0x30,0x00,0x00,0x80,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0xc0,0x0f,0x6d,0x6f, - 0x64,0x75,0x6c,0x65,0x3a,0x2f,0x2f,0x2f,0x08,0x6c,0x65,0x6e,0x06,0x2e,0x06,0x2f, - 0x0a,0x6d,0x61,0x74,0x63,0x68,0x09,0x28,0x2e,0x2b,0x29,0x09,0x25,0x25,0x25,0x3f, - 0x00,0x1f,0x5b,0x25,0x5e,0x25,0x24,0x25,0x28,0x25,0x29,0x25,0x25,0x25,0x2e,0x25, - 0x5b,0x25,0x5d,0x25,0x2a,0x25,0x2b,0x25,0x2d,0x25,0x3f,0x5d,0x09,0x67,0x73,0x75, - 0x62,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0b,0x69,0x70,0x61,0x69,0x72,0x73,0x0a, - 0x3f,0x2e,0x6c,0x75,0x61,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x0a,0x74,0x61,0x62, - 0x6c,0x65,0x15,0x69,0x73,0x5f,0x70,0x61,0x74,0x68,0x5f,0x61,0x62,0x73,0x6f,0x6c, - 0x75,0x74,0x65,0x06,0x3b,0x09,0x70,0x61,0x74,0x68,0x0c,0x70,0x61,0x63,0x6b,0x61, - 0x67,0x65,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x06,0x40,0x08,0x73, - 0x75,0x62,0x93,0x01,0x00,0x01,0x04,0x04,0x03,0x00,0x1c,0x2b,0x01,0x00,0x00,0x36, - 0x01,0x00,0x01,0x0a,0x01,0x00,0x00,0x54,0x02,0x01,0x80,0x48,0x01,0x02,0x00,0x2b, - 0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x07,0x02,0x02,0x00,0x54, - 0x02,0x0b,0x80,0x2b,0x02,0x02,0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x10, - 0x01,0x02,0x00,0x0e,0x00,0x01,0x00,0x54,0x02,0x09,0x80,0x2b,0x02,0x03,0x00,0x10, - 0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x10,0x01,0x02,0x00,0x54,0x02,0x04,0x80,0x2b, - 0x02,0x03,0x00,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x10,0x01,0x02,0x00,0x2b, - 0x02,0x00,0x00,0x39,0x01,0x00,0x02,0x48,0x01,0x02,0x00,0x04,0xc0,0x01,0xc0,0x0b, - 0xc0,0x0a,0xc0,0x0b,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x08,0x75,0x72,0x69,0x0d,0x66, - 0x65,0x61,0x74,0x75,0x72,0x65,0x73,0xd6,0x01,0x00,0x01,0x0c,0x03,0x08,0x00,0x27, - 0x34,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00,0x00, - 0x3e,0x02,0x02,0x00,0x3d,0x01,0x00,0x02,0x37,0x02,0x02,0x01,0x07,0x02,0x03,0x00, - 0x54,0x02,0x05,0x80,0x2b,0x02,0x01,0x00,0x37,0x02,0x04,0x02,0x10,0x03,0x01,0x00, - 0x40,0x02,0x02,0x00,0x54,0x02,0x18,0x80,0x34,0x02,0x05,0x00,0x2b,0x03,0x02,0x00, - 0x3e,0x02,0x02,0x04,0x44,0x05,0x12,0x80,0x05,0x06,0x00,0x00,0x54,0x07,0x10,0x80, - 0x34,0x07,0x00,0x00,0x10,0x09,0x05,0x00,0x37,0x08,0x06,0x05,0x27,0x0a,0x01,0x00, - 0x27,0x0b,0x01,0x00,0x3e,0x08,0x04,0x02,0x06,0x08,0x07,0x00,0x54,0x08,0x02,0x80, - 0x29,0x08,0x01,0x00,0x54,0x09,0x01,0x80,0x29,0x08,0x02,0x00,0x3e,0x07,0x02,0x01, - 0x10,0x08,0x05,0x00,0x37,0x07,0x06,0x05,0x27,0x09,0x02,0x00,0x40,0x07,0x03,0x00, - 0x42,0x05,0x03,0x03,0x4e,0x05,0xec,0x7f,0x47,0x00,0x01,0x00,0x00,0xc0,0x02,0xc0, - 0x04,0xc0,0x06,0x40,0x08,0x73,0x75,0x62,0x0a,0x70,0x61,0x69,0x72,0x73,0x0c,0x74, - 0x6f,0x5f,0x70,0x61,0x74,0x68,0x09,0x66,0x69,0x6c,0x65,0x0b,0x73,0x63,0x68,0x65, - 0x6d,0x65,0x0a,0x70,0x61,0x72,0x73,0x65,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0xe4, - 0x01,0x00,0x01,0x09,0x00,0x0b,0x01,0x2a,0x32,0x01,0x00,0x00,0x10,0x03,0x00,0x00, - 0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x3e,0x02,0x03,0x04,0x54,0x05,0x11,0x80, - 0x07,0x05,0x02,0x00,0x54,0x06,0x08,0x80,0x13,0x06,0x01,0x00,0x08,0x06,0x00,0x00, - 0x54,0x06,0x05,0x80,0x34,0x06,0x03,0x00,0x37,0x06,0x04,0x06,0x10,0x07,0x01,0x00, - 0x3e,0x06,0x02,0x01,0x54,0x06,0x07,0x80,0x06,0x05,0x05,0x00,0x54,0x06,0x05,0x80, - 0x34,0x06,0x03,0x00,0x37,0x06,0x06,0x06,0x10,0x07,0x01,0x00,0x10,0x08,0x05,0x00, - 0x3e,0x06,0x03,0x01,0x41,0x05,0x03,0x02,0x4e,0x05,0xed,0x7f,0x10,0x03,0x00,0x00, - 0x37,0x02,0x07,0x00,0x27,0x04,0x01,0x00,0x27,0x05,0x01,0x00,0x3e,0x02,0x04,0x02, - 0x07,0x02,0x08,0x00,0x54,0x02,0x02,0x80,0x25,0x02,0x08,0x00,0x54,0x03,0x01,0x80, - 0x25,0x02,0x09,0x00,0x34,0x03,0x03,0x00,0x37,0x03,0x0a,0x03,0x10,0x04,0x01,0x00, - 0x25,0x05,0x08,0x00,0x3e,0x03,0x03,0x02,0x24,0x02,0x03,0x02,0x48,0x02,0x02,0x00, - 0x0b,0x63,0x6f,0x6e,0x63,0x61,0x74,0x05,0x06,0x2f,0x08,0x73,0x75,0x62,0x0b,0x69, - 0x6e,0x73,0x65,0x72,0x74,0x06,0x2e,0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x0a,0x74, - 0x61,0x62,0x6c,0x65,0x07,0x2e,0x2e,0x0a,0x5b,0x5e,0x2f,0x5d,0x2b,0x0b,0x67,0x6d, - 0x61,0x74,0x63,0x68,0x00,0x87,0x01,0x00,0x00,0x04,0x00,0x07,0x00,0x15,0x34,0x00, - 0x00,0x00,0x37,0x00,0x01,0x00,0x25,0x01,0x02,0x00,0x3e,0x00,0x02,0x02,0x0f,0x00, - 0x00,0x00,0x54,0x01,0x0d,0x80,0x10,0x02,0x00,0x00,0x37,0x01,0x03,0x00,0x25,0x03, - 0x04,0x00,0x3e,0x01,0x03,0x02,0x10,0x03,0x00,0x00,0x37,0x02,0x05,0x00,0x3e,0x02, - 0x02,0x01,0x06,0x01,0x06,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x54,0x03, - 0x01,0x80,0x29,0x02,0x02,0x00,0x48,0x02,0x02,0x00,0x29,0x01,0x01,0x00,0x48,0x01, - 0x02,0x00,0x0f,0x57,0x69,0x6e,0x64,0x6f,0x77,0x73,0x5f,0x4e,0x54,0x0a,0x63,0x6c, - 0x6f,0x73,0x65,0x07,0x2a,0x6c,0x09,0x72,0x65,0x61,0x64,0x0e,0x65,0x63,0x68,0x6f, - 0x20,0x25,0x6f,0x73,0x25,0x0a,0x70,0x6f,0x70,0x65,0x6e,0x07,0x69,0x6f,0x79,0x00, - 0x01,0x04,0x01,0x06,0x01,0x0f,0x34,0x01,0x00,0x00,0x37,0x01,0x01,0x01,0x10,0x02, - 0x00,0x00,0x25,0x03,0x02,0x00,0x3e,0x01,0x03,0x02,0x08,0x01,0x00,0x00,0x54,0x01, - 0x03,0x80,0x25,0x01,0x02,0x00,0x10,0x02,0x00,0x00,0x24,0x00,0x02,0x01,0x2b,0x01, - 0x00,0x00,0x37,0x01,0x03,0x01,0x33,0x02,0x04,0x00,0x3a,0x00,0x05,0x02,0x40,0x01, - 0x02,0x00,0x02,0x00,0x09,0x70,0x61,0x74,0x68,0x01,0x00,0x02,0x0b,0x73,0x63,0x68, - 0x65,0x6d,0x65,0x09,0x66,0x69,0x6c,0x65,0x0e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69, - 0x74,0x79,0x05,0x0a,0x62,0x75,0x69,0x6c,0x64,0x06,0x2f,0x09,0x66,0x69,0x6e,0x64, - 0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x02,0x39,0x00,0x01,0x05,0x00,0x02,0x00,0x0b, - 0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x27,0x03,0x01,0x00,0x27,0x04,0x01,0x00, - 0x3e,0x01,0x04,0x02,0x06,0x01,0x01,0x00,0x54,0x01,0x02,0x80,0x29,0x01,0x01,0x00, - 0x54,0x02,0x01,0x80,0x29,0x01,0x02,0x00,0x48,0x01,0x02,0x00,0x06,0x2f,0x08,0x73, - 0x75,0x62,0x27,0x00,0x01,0x03,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x37,0x01, - 0x00,0x01,0x37,0x02,0x01,0x00,0x40,0x01,0x02,0x00,0x02,0x00,0x09,0x70,0x61,0x74, - 0x68,0x0d,0x75,0x6e,0x65,0x73,0x63,0x61,0x70,0x65,0x23,0x00,0x01,0x04,0x00,0x02, - 0x00,0x04,0x10,0x02,0x00,0x00,0x37,0x01,0x00,0x00,0x25,0x03,0x01,0x00,0x40,0x01, - 0x03,0x00,0x0a,0x5e,0x25,0x61,0x3a,0x2f,0x0a,0x6d,0x61,0x74,0x63,0x68,0x50,0x00, - 0x01,0x05,0x01,0x04,0x00,0x08,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x33,0x02, - 0x01,0x00,0x25,0x03,0x02,0x00,0x10,0x04,0x00,0x00,0x24,0x03,0x04,0x03,0x3a,0x03, - 0x03,0x02,0x40,0x01,0x02,0x00,0x02,0x00,0x09,0x70,0x61,0x74,0x68,0x06,0x2f,0x01, - 0x00,0x02,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x09,0x66,0x69,0x6c,0x65,0x0e,0x61, - 0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x05,0x0a,0x62,0x75,0x69,0x6c,0x64,0x44, - 0x00,0x01,0x05,0x01,0x05,0x00,0x09,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x37, - 0x02,0x01,0x00,0x3e,0x01,0x02,0x02,0x10,0x02,0x01,0x00,0x37,0x01,0x02,0x01,0x25, - 0x03,0x03,0x00,0x25,0x04,0x04,0x00,0x40,0x01,0x04,0x00,0x02,0x00,0x05,0x07,0x5e, - 0x2f,0x09,0x67,0x73,0x75,0x62,0x09,0x70,0x61,0x74,0x68,0x0d,0x75,0x6e,0x65,0x73, - 0x63,0x61,0x70,0x65,0x40,0x00,0x01,0x06,0x01,0x04,0x00,0x0a,0x2b,0x01,0x00,0x00, - 0x10,0x03,0x00,0x00,0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x25,0x05,0x02,0x00, - 0x3e,0x02,0x04,0x02,0x10,0x03,0x02,0x00,0x37,0x02,0x03,0x02,0x3e,0x02,0x02,0x00, - 0x3f,0x01,0x00,0x00,0x03,0xc0,0x0a,0x6c,0x6f,0x77,0x65,0x72,0x06,0x2f,0x06,0x5c, - 0x09,0x67,0x73,0x75,0x62,0x7c,0x00,0x00,0x04,0x01,0x07,0x00,0x12,0x34,0x00,0x00, - 0x00,0x37,0x00,0x01,0x00,0x25,0x01,0x02,0x00,0x3e,0x00,0x02,0x02,0x0f,0x00,0x00, - 0x00,0x54,0x01,0x0b,0x80,0x10,0x02,0x00,0x00,0x37,0x01,0x03,0x00,0x25,0x03,0x04, - 0x00,0x3e,0x01,0x03,0x02,0x10,0x03,0x00,0x00,0x37,0x02,0x05,0x00,0x3e,0x02,0x02, - 0x01,0x2b,0x02,0x00,0x00,0x37,0x02,0x06,0x02,0x10,0x03,0x01,0x00,0x40,0x02,0x02, - 0x00,0x47,0x00,0x01,0x00,0x01,0x00,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x0a,0x63,0x6c,0x6f,0x73,0x65,0x07,0x2a,0x6c,0x09,0x72,0x65,0x61,0x64,0x0e, - 0x65,0x63,0x68,0x6f,0x20,0x25,0x63,0x64,0x25,0x0a,0x70,0x6f,0x70,0x65,0x6e,0x07, - 0x69,0x6f,0xd1,0x05,0x01,0x03,0x08,0x04,0x20,0x00,0x6b,0x0f,0x00,0x00,0x00,0x54, - 0x03,0x0b,0x80,0x06,0x00,0x00,0x00,0x54,0x03,0x09,0x80,0x06,0x00,0x01,0x00,0x54, - 0x03,0x07,0x80,0x06,0x00,0x02,0x00,0x54,0x03,0x05,0x80,0x06,0x00,0x03,0x00,0x54, - 0x03,0x03,0x80,0x34,0x03,0x04,0x00,0x25,0x04,0x05,0x00,0x3e,0x03,0x02,0x01,0x0f, - 0x00,0x00,0x00,0x54,0x03,0x02,0x80,0x2c,0x00,0x00,0x00,0x54,0x03,0x0b,0x80,0x31, - 0x03,0x06,0x00,0x34,0x04,0x07,0x00,0x10,0x05,0x03,0x00,0x3e,0x04,0x02,0x03,0x0f, - 0x00,0x04,0x00,0x54,0x06,0x04,0x80,0x0f,0x00,0x05,0x00,0x54,0x06,0x02,0x80,0x2d, - 0x00,0x01,0x00,0x54,0x06,0x01,0x80,0x2d,0x00,0x00,0x00,0x2b,0x03,0x00,0x00,0x06, - 0x03,0x00,0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x00,0x00,0x06,0x03,0x02,0x00,0x54, - 0x03,0x03,0x80,0x2b,0x03,0x00,0x00,0x07,0x03,0x03,0x00,0x54,0x03,0x15,0x80,0x2b, - 0x03,0x01,0x00,0x25,0x04,0x09,0x00,0x3a,0x04,0x08,0x03,0x2b,0x03,0x01,0x00,0x0c, - 0x04,0x01,0x00,0x54,0x04,0x04,0x80,0x34,0x04,0x0b,0x00,0x37,0x04,0x0c,0x04,0x25, - 0x05,0x0d,0x00,0x3e,0x04,0x02,0x02,0x3a,0x04,0x0a,0x03,0x2b,0x03,0x01,0x00,0x31, - 0x04,0x0f,0x00,0x3a,0x04,0x0e,0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x11,0x00,0x3a, - 0x04,0x10,0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x13,0x00,0x3a,0x04,0x12,0x03,0x54, - 0x03,0x19,0x80,0x2b,0x03,0x01,0x00,0x25,0x04,0x14,0x00,0x3a,0x04,0x08,0x03,0x2b, - 0x03,0x01,0x00,0x31,0x04,0x15,0x00,0x3a,0x04,0x10,0x03,0x2b,0x03,0x01,0x00,0x31, - 0x04,0x16,0x00,0x3a,0x04,0x0e,0x03,0x2b,0x03,0x01,0x00,0x31,0x04,0x17,0x00,0x3a, - 0x04,0x12,0x03,0x2b,0x03,0x01,0x00,0x37,0x03,0x18,0x03,0x2b,0x04,0x01,0x00,0x31, - 0x05,0x19,0x00,0x3a,0x05,0x18,0x04,0x31,0x04,0x1a,0x00,0x2b,0x05,0x01,0x00,0x0c, - 0x06,0x01,0x00,0x54,0x06,0x02,0x80,0x10,0x06,0x04,0x00,0x3e,0x06,0x01,0x02,0x3a, - 0x06,0x0a,0x05,0x30,0x03,0x00,0x80,0x2b,0x03,0x01,0x00,0x2b,0x04,0x01,0x00,0x37, - 0x04,0x0a,0x04,0x10,0x05,0x04,0x00,0x37,0x04,0x1b,0x04,0x25,0x06,0x1c,0x00,0x25, - 0x07,0x1d,0x00,0x3e,0x04,0x04,0x02,0x3a,0x04,0x0a,0x03,0x0f,0x00,0x02,0x00,0x54, - 0x03,0x05,0x80,0x2b,0x03,0x01,0x00,0x2b,0x04,0x03,0x00,0x10,0x05,0x02,0x00,0x3e, - 0x04,0x02,0x02,0x3a,0x04,0x1e,0x03,0x2b,0x03,0x01,0x00,0x37,0x03,0x0a,0x03,0x0e, - 0x00,0x03,0x00,0x54,0x03,0x03,0x80,0x34,0x03,0x04,0x00,0x25,0x04,0x1f,0x00,0x3e, - 0x03,0x02,0x01,0x47,0x00,0x01,0x00,0x03,0x80,0x02,0xc0,0x00,0xc0,0x06,0xc0,0x2f, - 0x55,0x6e,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x64,0x65,0x74,0x65,0x72,0x6d, - 0x69,0x6e,0x65,0x20,0x74,0x68,0x65,0x20,0x77,0x6f,0x72,0x6b,0x69,0x6e,0x67,0x20, - 0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x2e,0x11,0x73,0x65,0x61,0x72,0x63, - 0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x09,0x25,0x25,0x32,0x30,0x06,0x20,0x09,0x67, - 0x73,0x75,0x62,0x00,0x00,0x0e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x00, - 0x00,0x00,0x06,0x5c,0x00,0x0c,0x74,0x6f,0x5f,0x70,0x61,0x74,0x68,0x00,0x15,0x69, - 0x73,0x5f,0x70,0x61,0x74,0x68,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x00, - 0x10,0x74,0x6f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x75,0x72,0x69,0x08,0x50,0x57,0x44, - 0x0b,0x67,0x65,0x74,0x65,0x6e,0x76,0x07,0x6f,0x73,0x0d,0x62,0x61,0x73,0x65,0x5f, - 0x64,0x69,0x72,0x06,0x2f,0x0d,0x70,0x61,0x74,0x68,0x5f,0x73,0x65,0x70,0x0a,0x70, - 0x63,0x61,0x6c,0x6c,0x00,0x59,0x55,0x6e,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20, - 0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x69,0x7a,0x65,0x20,0x70,0x6c,0x61,0x74,0x66, - 0x6f,0x72,0x6d,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x3a,0x20,0x65,0x78,0x65, - 0x63,0x75,0x74,0x69,0x6f,0x6e,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20, - 0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x62,0x65,0x20,0x27,0x75,0x6e,0x69,0x78,0x27, - 0x20,0x6f,0x72,0x20,0x27,0x77,0x69,0x6e,0x27,0x2e,0x0a,0x65,0x72,0x72,0x6f,0x72, - 0x08,0x69,0x6f,0x73,0x0c,0x61,0x6e,0x64,0x72,0x6f,0x69,0x64,0x08,0x77,0x69,0x6e, - 0x09,0x75,0x6e,0x69,0x78,0xbd,0x01,0x03,0x00,0x0d,0x00,0x12,0x00,0x1a,0x34,0x00, - 0x00,0x00,0x25,0x01,0x01,0x00,0x3e,0x00,0x02,0x02,0x34,0x01,0x00,0x00,0x25,0x02, - 0x02,0x00,0x3e,0x01,0x02,0x02,0x32,0x02,0x00,0x00,0x29,0x03,0x00,0x00,0x32,0x04, - 0x00,0x00,0x31,0x05,0x03,0x00,0x31,0x06,0x04,0x00,0x31,0x07,0x05,0x00,0x31,0x08, - 0x06,0x00,0x31,0x09,0x07,0x00,0x31,0x0a,0x08,0x00,0x31,0x0b,0x09,0x00,0x31,0x0c, - 0x0b,0x00,0x3a,0x0c,0x0a,0x02,0x31,0x0c,0x0d,0x00,0x3a,0x0c,0x0c,0x02,0x31,0x0c, - 0x0f,0x00,0x3a,0x0c,0x0e,0x02,0x31,0x0c,0x11,0x00,0x3a,0x0c,0x10,0x02,0x30,0x00, - 0x00,0x80,0x48,0x02,0x02,0x00,0x00,0x09,0x69,0x6e,0x69,0x74,0x00,0x0e,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x00,0x0d,0x67,0x65,0x74,0x5f,0x70,0x61,0x74, - 0x68,0x00,0x0c,0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x11, - 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x72,0x6c,0x0c,0x72,0x65,0x71, - 0x75,0x69,0x72,0x65,0x3c,0x00,0x01,0x04,0x02,0x02,0x00,0x07,0x34,0x01,0x00,0x00, - 0x2b,0x02,0x01,0x00,0x36,0x02,0x00,0x02,0x25,0x03,0x01,0x00,0x3e,0x01,0x03,0x02, - 0x2c,0x00,0x01,0x00,0x48,0x00,0x02,0x00,0x02,0x80,0x01,0xc0,0x12,0x4e,0x6f,0x20, - 0x73,0x75,0x63,0x68,0x20,0x6c,0x65,0x76,0x65,0x6c,0x0b,0x61,0x73,0x73,0x65,0x72, - 0x74,0xf1,0x01,0x00,0x03,0x0a,0x00,0x09,0x00,0x22,0x34,0x03,0x00,0x00,0x10,0x04, - 0x00,0x00,0x3e,0x03,0x02,0x02,0x37,0x04,0x01,0x03,0x37,0x05,0x02,0x03,0x36,0x05, - 0x01,0x05,0x36,0x06,0x01,0x04,0x0b,0x06,0x00,0x00,0x54,0x06,0x07,0x80,0x34,0x06, - 0x03,0x00,0x25,0x07,0x04,0x00,0x34,0x08,0x05,0x00,0x10,0x09,0x01,0x00,0x3e,0x08, - 0x02,0x02,0x24,0x07,0x08,0x07,0x3e,0x06,0x02,0x01,0x0e,0x00,0x05,0x00,0x54,0x06, - 0x08,0x80,0x34,0x06,0x03,0x00,0x25,0x07,0x06,0x00,0x34,0x08,0x05,0x00,0x10,0x09, - 0x01,0x00,0x3e,0x08,0x02,0x02,0x25,0x09,0x07,0x00,0x24,0x07,0x09,0x07,0x3e,0x06, - 0x02,0x01,0x34,0x06,0x08,0x00,0x10,0x07,0x05,0x00,0x10,0x08,0x02,0x00,0x3e,0x07, - 0x02,0x00,0x3d,0x06,0x00,0x02,0x10,0x02,0x06,0x00,0x39,0x02,0x01,0x04,0x47,0x00, - 0x01,0x00,0x0b,0x61,0x73,0x73,0x65,0x72,0x74,0x12,0x20,0x69,0x73,0x20,0x72,0x65, - 0x61,0x64,0x2d,0x6f,0x6e,0x6c,0x79,0x11,0x54,0x68,0x65,0x20,0x66,0x65,0x61,0x74, - 0x75,0x72,0x65,0x20,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x15,0x4e,0x6f, - 0x20,0x73,0x75,0x63,0x68,0x20,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x20,0x0a,0x65, - 0x72,0x72,0x6f,0x72,0x0f,0x76,0x61,0x6c,0x69,0x64,0x61,0x74,0x6f,0x72,0x73,0x0c, - 0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x11,0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74, - 0x61,0x62,0x6c,0x65,0x1d,0x00,0x03,0x07,0x01,0x00,0x00,0x05,0x2b,0x03,0x00,0x00, - 0x38,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00, - 0x03,0xc0,0x1d,0x00,0x03,0x07,0x01,0x00,0x00,0x05,0x2b,0x03,0x00,0x00,0x38,0x04, - 0x01,0x00,0x10,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x04,0xc0, - 0x21,0x00,0x04,0x09,0x01,0x00,0x00,0x06,0x2b,0x04,0x00,0x00,0x38,0x05,0x01,0x00, - 0x10,0x06,0x01,0x00,0x10,0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x40,0x04,0x05,0x00, - 0x05,0xc0,0x2a,0x00,0x01,0x04,0x01,0x01,0x00,0x05,0x34,0x01,0x00,0x00,0x32,0x02, - 0x03,0x00,0x3b,0x00,0x01,0x02,0x2b,0x03,0x00,0x00,0x40,0x01,0x03,0x00,0x06,0xc0, - 0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x1e,0x00,0x03, - 0x07,0x01,0x00,0x01,0x05,0x2b,0x03,0x00,0x00,0x38,0x04,0x01,0x00,0x14,0x05,0x00, - 0x01,0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x03,0xc0,0x04,0x1e,0x00,0x03,0x07, - 0x01,0x00,0x01,0x05,0x2b,0x03,0x00,0x00,0x38,0x04,0x01,0x00,0x14,0x05,0x00,0x01, - 0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x04,0xc0,0x04,0x22,0x00,0x04,0x09,0x01, - 0x00,0x01,0x06,0x2b,0x04,0x00,0x00,0x38,0x05,0x01,0x00,0x14,0x06,0x00,0x01,0x10, - 0x07,0x02,0x00,0x10,0x08,0x03,0x00,0x40,0x04,0x05,0x00,0x05,0xc0,0x04,0x2a,0x00, - 0x01,0x04,0x01,0x01,0x00,0x05,0x34,0x01,0x00,0x00,0x32,0x02,0x03,0x00,0x3b,0x00, - 0x01,0x02,0x2b,0x03,0x00,0x00,0x40,0x01,0x03,0x00,0x07,0xc0,0x11,0x73,0x65,0x74, - 0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x3a,0x00,0x03,0x0b,0x01,0x03,0x01, - 0x0a,0x2b,0x03,0x00,0x00,0x38,0x04,0x01,0x00,0x14,0x05,0x00,0x01,0x10,0x07,0x02, - 0x00,0x37,0x06,0x00,0x02,0x25,0x08,0x01,0x00,0x25,0x09,0x02,0x00,0x27,0x0a,0x01, - 0x00,0x3e,0x06,0x05,0x00,0x3f,0x03,0x02,0x00,0x03,0xc0,0x05,0x06,0x74,0x09,0x67, - 0x73,0x75,0x62,0x04,0x39,0x00,0x03,0x0b,0x01,0x03,0x00,0x0a,0x2b,0x03,0x00,0x00, - 0x38,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x10,0x07,0x02,0x00,0x37,0x06,0x00,0x02, - 0x25,0x08,0x01,0x00,0x25,0x09,0x02,0x00,0x27,0x0a,0x01,0x00,0x3e,0x06,0x05,0x00, - 0x3f,0x03,0x02,0x00,0x03,0xc0,0x05,0x06,0x74,0x09,0x67,0x73,0x75,0x62,0x8d,0x01, - 0x00,0x01,0x0a,0x00,0x08,0x00,0x16,0x34,0x01,0x00,0x00,0x37,0x01,0x01,0x01,0x3e, - 0x01,0x01,0x02,0x27,0x02,0x02,0x00,0x34,0x03,0x02,0x00,0x37,0x03,0x03,0x03,0x27, - 0x04,0x01,0x00,0x49,0x02,0x0d,0x80,0x34,0x06,0x04,0x00,0x34,0x07,0x00,0x00,0x37, - 0x07,0x05,0x07,0x10,0x08,0x05,0x00,0x25,0x09,0x06,0x00,0x3e,0x07,0x03,0x00,0x3d, - 0x06,0x00,0x02,0x37,0x06,0x07,0x06,0x05,0x06,0x01,0x00,0x54,0x06,0x02,0x80,0x1e, - 0x06,0x00,0x05,0x48,0x06,0x02,0x00,0x4b,0x02,0xf3,0x7f,0x47,0x00,0x01,0x00,0x09, - 0x66,0x75,0x6e,0x63,0x06,0x66,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x0b,0x61, - 0x73,0x73,0x65,0x72,0x74,0x09,0x68,0x75,0x67,0x65,0x09,0x6d,0x61,0x74,0x68,0x0c, - 0x67,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x0a,0x64,0x65,0x62,0x75,0x67,0x44,0x00,0x03, - 0x0a,0x02,0x03,0x01,0x0c,0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x10,0x05,0x01, - 0x00,0x3e,0x04,0x02,0x02,0x15,0x04,0x00,0x04,0x10,0x06,0x02,0x00,0x37,0x05,0x00, - 0x02,0x25,0x07,0x01,0x00,0x25,0x08,0x02,0x00,0x27,0x09,0x01,0x00,0x3e,0x05,0x05, - 0x00,0x3f,0x03,0x01,0x00,0x03,0xc0,0x0d,0xc0,0x05,0x06,0x74,0x09,0x67,0x73,0x75, - 0x62,0x02,0x28,0x00,0x03,0x06,0x02,0x00,0x01,0x07,0x2b,0x03,0x00,0x00,0x2b,0x04, - 0x01,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02,0x15,0x04,0x00,0x04,0x10,0x05, - 0x02,0x00,0x40,0x03,0x03,0x00,0x04,0xc0,0x0d,0xc0,0x02,0x2c,0x00,0x04,0x08,0x02, - 0x00,0x01,0x08,0x2b,0x04,0x00,0x00,0x2b,0x05,0x01,0x00,0x10,0x06,0x01,0x00,0x3e, - 0x05,0x02,0x02,0x15,0x05,0x00,0x05,0x10,0x06,0x02,0x00,0x10,0x07,0x03,0x00,0x40, - 0x04,0x04,0x00,0x05,0xc0,0x0d,0xc0,0x02,0x3f,0x00,0x03,0x0a,0x02,0x03,0x00,0x0b, - 0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02, - 0x10,0x06,0x02,0x00,0x37,0x05,0x00,0x02,0x25,0x07,0x01,0x00,0x25,0x08,0x02,0x00, - 0x27,0x09,0x01,0x00,0x3e,0x05,0x05,0x00,0x3f,0x03,0x01,0x00,0x03,0xc0,0x0d,0xc0, - 0x05,0x06,0x74,0x09,0x67,0x73,0x75,0x62,0x23,0x00,0x03,0x06,0x02,0x00,0x00,0x06, - 0x2b,0x03,0x00,0x00,0x2b,0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x3e,0x04,0x02,0x02, - 0x10,0x05,0x02,0x00,0x40,0x03,0x03,0x00,0x04,0xc0,0x0d,0xc0,0x27,0x00,0x04,0x08, - 0x02,0x00,0x00,0x07,0x2b,0x04,0x00,0x00,0x2b,0x05,0x01,0x00,0x10,0x06,0x01,0x00, - 0x3e,0x05,0x02,0x02,0x10,0x06,0x02,0x00,0x10,0x07,0x03,0x00,0x40,0x04,0x04,0x00, - 0x05,0xc0,0x0d,0xc0,0x2f,0x00,0x01,0x03,0x02,0x00,0x00,0x09,0x0f,0x00,0x00,0x00, - 0x54,0x01,0x05,0x80,0x2b,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02, - 0x0e,0x00,0x01,0x00,0x54,0x02,0x01,0x80,0x2b,0x01,0x01,0x00,0x48,0x01,0x02,0x00, - 0x0e,0xc0,0x0c,0x80,0x4f,0x00,0x02,0x07,0x02,0x00,0x00,0x11,0x2b,0x02,0x00,0x00, - 0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x03,0x0e,0x00,0x02,0x00,0x54,0x04,0x04,0x80, - 0x29,0x04,0x00,0x00,0x10,0x05,0x03,0x00,0x46,0x04,0x03,0x00,0x54,0x04,0x07,0x80, - 0x0d,0x04,0x02,0x00,0x54,0x04,0x04,0x80,0x2b,0x04,0x01,0x00,0x10,0x05,0x02,0x00, - 0x10,0x06,0x01,0x00,0x3e,0x04,0x03,0x02,0x48,0x04,0x02,0x00,0x47,0x00,0x01,0x00, - 0x08,0xc0,0x0a,0xc0,0x15,0x00,0x02,0x04,0x01,0x00,0x00,0x03,0x2b,0x02,0x00,0x00, - 0x10,0x03,0x01,0x00,0x40,0x02,0x02,0x00,0x09,0xc0,0x19,0x00,0x03,0x06,0x01,0x00, - 0x00,0x04,0x2b,0x03,0x00,0x00,0x10,0x04,0x01,0x00,0x10,0x05,0x02,0x00,0x40,0x03, - 0x03,0x00,0x0a,0xc0,0x3e,0x00,0x03,0x07,0x01,0x00,0x01,0x0d,0x0f,0x00,0x00,0x00, - 0x54,0x03,0x06,0x80,0x2b,0x03,0x00,0x00,0x10,0x04,0x00,0x00,0x10,0x05,0x01,0x00, - 0x10,0x06,0x02,0x00,0x40,0x03,0x04,0x00,0x54,0x03,0x04,0x80,0x2b,0x03,0x00,0x00, - 0x14,0x04,0x00,0x01,0x10,0x05,0x02,0x00,0x40,0x03,0x03,0x00,0x47,0x00,0x01,0x00, - 0x09,0xc0,0x02,0x1d,0x00,0x02,0x07,0x01,0x00,0x00,0x05,0x2b,0x02,0x00,0x00,0x10, - 0x03,0x00,0x00,0x2a,0x04,0x05,0x00,0x10,0x06,0x01,0x00,0x40,0x02,0x05,0x00,0x08, - 0xc0,0xcf,0x01,0x02,0x02,0x08,0x02,0x09,0x00,0x22,0x2b,0x02,0x00,0x00,0x36,0x02, - 0x00,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x27,0x02,0xff,0xff,0x2b,0x03, - 0x01,0x00,0x01,0x03,0x02,0x00,0x54,0x02,0x01,0x80,0x47,0x00,0x01,0x00,0x34,0x02, - 0x00,0x00,0x25,0x03,0x01,0x00,0x43,0x04,0x02,0x00,0x3d,0x02,0x01,0x02,0x27,0x03, - 0x00,0x00,0x01,0x03,0x02,0x00,0x54,0x02,0x05,0x80,0x10,0x03,0x01,0x00,0x37,0x02, - 0x02,0x01,0x43,0x04,0x02,0x00,0x3d,0x02,0x01,0x02,0x10,0x01,0x02,0x00,0x34,0x02, - 0x03,0x00,0x37,0x02,0x04,0x02,0x37,0x02,0x05,0x02,0x10,0x03,0x02,0x00,0x37,0x02, - 0x06,0x02,0x34,0x04,0x07,0x00,0x37,0x04,0x02,0x04,0x25,0x05,0x08,0x00,0x10,0x06, - 0x00,0x00,0x10,0x07,0x01,0x00,0x3e,0x04,0x04,0x00,0x3d,0x02,0x01,0x01,0x47,0x00, - 0x01,0x00,0x01,0xc0,0x02,0x80,0x14,0x44,0x45,0x42,0x55,0x47,0x47,0x45,0x52,0x09, - 0x25,0x73,0x09,0x25,0x73,0x0a,0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0a,0x77,0x72, - 0x69,0x74,0x65,0x0b,0x73,0x74,0x64,0x65,0x72,0x72,0x09,0x62,0x61,0x73,0x65,0x07, - 0x69,0x6f,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74,0x06,0x23,0x0b,0x73,0x65,0x6c,0x65, - 0x63,0x74,0xc7,0x09,0x03,0x00,0x13,0x00,0x47,0x00,0x7d,0x32,0x00,0x00,0x00,0x33, - 0x01,0x00,0x00,0x37,0x02,0x01,0x01,0x34,0x03,0x03,0x00,0x32,0x04,0x00,0x00,0x33, - 0x05,0x10,0x00,0x33,0x06,0x04,0x00,0x34,0x07,0x05,0x00,0x3a,0x07,0x06,0x06,0x34, - 0x07,0x07,0x00,0x3a,0x07,0x08,0x06,0x34,0x07,0x05,0x00,0x3a,0x07,0x09,0x06,0x34, - 0x07,0x05,0x00,0x3a,0x07,0x0a,0x06,0x34,0x07,0x05,0x00,0x3a,0x07,0x0b,0x06,0x34, - 0x07,0x05,0x00,0x3a,0x07,0x0c,0x06,0x34,0x07,0x07,0x00,0x3a,0x07,0x0d,0x06,0x31, - 0x07,0x0e,0x00,0x3a,0x07,0x0f,0x06,0x3a,0x06,0x11,0x05,0x33,0x06,0x12,0x00,0x34, - 0x07,0x13,0x00,0x3a,0x07,0x14,0x06,0x3a,0x06,0x15,0x05,0x31,0x06,0x16,0x00,0x3a, - 0x06,0x17,0x05,0x3e,0x03,0x03,0x02,0x3a,0x03,0x02,0x00,0x34,0x03,0x18,0x00,0x37, - 0x03,0x19,0x03,0x34,0x04,0x18,0x00,0x37,0x04,0x1a,0x04,0x34,0x05,0x18,0x00,0x37, - 0x05,0x1b,0x05,0x33,0x06,0x1d,0x00,0x31,0x07,0x1c,0x00,0x3a,0x07,0x19,0x06,0x31, - 0x07,0x1e,0x00,0x3a,0x07,0x1a,0x06,0x31,0x07,0x1f,0x00,0x3a,0x07,0x1b,0x06,0x3a, - 0x06,0x15,0x06,0x31,0x07,0x21,0x00,0x3a,0x07,0x20,0x00,0x33,0x07,0x23,0x00,0x31, - 0x08,0x22,0x00,0x3a,0x08,0x19,0x07,0x31,0x08,0x24,0x00,0x3a,0x08,0x1a,0x07,0x31, - 0x08,0x25,0x00,0x3a,0x08,0x1b,0x07,0x3a,0x07,0x15,0x07,0x31,0x08,0x27,0x00,0x3a, - 0x08,0x26,0x00,0x34,0x08,0x13,0x00,0x07,0x08,0x28,0x00,0x54,0x08,0x31,0x80,0x34, - 0x08,0x29,0x00,0x34,0x09,0x2a,0x00,0x34,0x0a,0x2b,0x00,0x34,0x0b,0x18,0x00,0x37, - 0x0b,0x19,0x0b,0x29,0x0c,0x00,0x00,0x31,0x0d,0x2c,0x00,0x3a,0x0d,0x19,0x07,0x31, - 0x0d,0x2d,0x00,0x3a,0x0d,0x19,0x06,0x31,0x0d,0x2e,0x00,0x34,0x0e,0x2f,0x00,0x34, - 0x0f,0x30,0x00,0x25,0x10,0x31,0x00,0x3e,0x0e,0x03,0x02,0x0f,0x00,0x0e,0x00,0x54, - 0x0f,0x09,0x80,0x33,0x0e,0x32,0x00,0x31,0x0f,0x33,0x00,0x3a,0x0f,0x19,0x0e,0x31, - 0x0f,0x34,0x00,0x3a,0x0f,0x1a,0x0e,0x31,0x0f,0x35,0x00,0x3a,0x0f,0x1b,0x0e,0x10, - 0x0c,0x0e,0x00,0x54,0x0e,0x08,0x80,0x33,0x0e,0x36,0x00,0x31,0x0f,0x37,0x00,0x3a, - 0x0f,0x19,0x0e,0x31,0x0f,0x38,0x00,0x3a,0x0f,0x1a,0x0e,0x31,0x0f,0x39,0x00,0x3a, - 0x0f,0x1b,0x0e,0x10,0x0c,0x0e,0x00,0x37,0x0e,0x26,0x00,0x31,0x0f,0x3a,0x00,0x3a, - 0x0f,0x26,0x00,0x31,0x0f,0x3c,0x00,0x3a,0x0f,0x3b,0x00,0x34,0x0f,0x03,0x00,0x32, - 0x10,0x00,0x00,0x33,0x11,0x3f,0x00,0x31,0x12,0x3e,0x00,0x3a,0x12,0x15,0x11,0x31, - 0x12,0x40,0x00,0x3a,0x12,0x17,0x11,0x3e,0x0f,0x03,0x02,0x3a,0x0f,0x3d,0x00,0x30, - 0x08,0x0b,0x80,0x34,0x08,0x13,0x00,0x07,0x08,0x41,0x00,0x54,0x08,0x08,0x80,0x34, - 0x08,0x42,0x00,0x34,0x09,0x18,0x00,0x37,0x09,0x19,0x09,0x31,0x0a,0x43,0x00,0x3a, - 0x0a,0x19,0x00,0x31,0x0a,0x44,0x00,0x3a,0x0a,0x3b,0x00,0x30,0x08,0x00,0x80,0x31, - 0x08,0x46,0x00,0x3a,0x08,0x45,0x00,0x30,0x00,0x00,0x80,0x48,0x00,0x02,0x00,0x00, - 0x08,0x6c,0x6f,0x67,0x00,0x00,0x09,0x6c,0x6f,0x61,0x64,0x0c,0x4c,0x75,0x61,0x20, - 0x35,0x2e,0x32,0x00,0x01,0x00,0x00,0x00,0x0d,0x65,0x76,0x61,0x6c,0x5f,0x65,0x6e, - 0x76,0x00,0x0b,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x00,0x00,0x00,0x00,0x01,0x02,0x00, - 0x00,0x09,0x6d,0x61,0x69,0x6e,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x09,0x6d,0x61, - 0x69,0x6e,0x08,0x6a,0x69,0x74,0x07,0x5f,0x47,0x0b,0x72,0x61,0x77,0x67,0x65,0x74, - 0x00,0x00,0x00,0x0c,0x73,0x65,0x74,0x66,0x65,0x6e,0x76,0x0c,0x67,0x65,0x74,0x66, - 0x65,0x6e,0x76,0x0f,0x6c,0x6f,0x61,0x64,0x73,0x74,0x72,0x69,0x6e,0x67,0x0c,0x4c, - 0x75,0x61,0x20,0x35,0x2e,0x31,0x00,0x12,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54, - 0x68,0x72,0x65,0x61,0x64,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x12,0x46,0x6f,0x72, - 0x65,0x69,0x67,0x6e,0x54,0x68,0x72,0x65,0x61,0x64,0x00,0x00,0x01,0x00,0x00,0x00, - 0x0d,0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x0d,0x67,0x65,0x74,0x6c,0x6f,0x63, - 0x61,0x6c,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x0a,0x64,0x65,0x62,0x75,0x67, - 0x0f,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e,0x64,0x65,0x78,0x00,0x0c,0x5f,0x5f,0x69, - 0x6e,0x64,0x65,0x78,0x15,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x5f,0x76,0x65, - 0x72,0x73,0x69,0x6f,0x6e,0x0d,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x01,0x00, - 0x0f,0x12,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x5f,0x6e,0x61,0x6d,0x65,0x08, - 0x4c,0x75,0x61,0x0d,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x0a,0x55,0x54,0x46, - 0x2d,0x38,0x1e,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x5f,0x73,0x75,0x70,0x70, - 0x6f,0x72,0x74,0x73,0x5f,0x74,0x68,0x72,0x65,0x61,0x64,0x73,0x03,0x00,0x10,0x73, - 0x68,0x6f,0x77,0x5f,0x68,0x69,0x64,0x64,0x65,0x6e,0x03,0x01,0x08,0x75,0x72,0x69, - 0x09,0x66,0x69,0x6c,0x65,0x0e,0x6c,0x6f,0x67,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x0c, - 0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x13,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x73, - 0x5f,0x61,0x73,0x79,0x6e,0x63,0x03,0x01,0x16,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c, - 0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x73,0x03,0x00,0x0d,0x6d,0x61,0x78, - 0x5f,0x64,0x61,0x74,0x61,0x03,0xff,0xff,0x03,0x12,0x64,0x61,0x74,0x61,0x5f,0x65, - 0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x0b,0x62,0x61,0x73,0x65,0x36,0x34,0x0e,0x6d, - 0x61,0x78,0x5f,0x64,0x65,0x70,0x74,0x68,0x03,0x01,0x19,0x62,0x72,0x65,0x61,0x6b, - 0x70,0x6f,0x69,0x6e,0x74,0x5f,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x73,0x08, - 0x4c,0x75,0x61,0x11,0x6d,0x61,0x78,0x5f,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e, - 0x03,0x20,0x15,0x70,0x72,0x6f,0x74,0x6f,0x63,0x6f,0x6c,0x5f,0x76,0x65,0x72,0x73, - 0x69,0x6f,0x6e,0x03,0x01,0x15,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74, - 0x5f,0x74,0x79,0x70,0x65,0x73,0x15,0x6c,0x69,0x6e,0x65,0x20,0x63,0x6f,0x6e,0x64, - 0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x0f,0x76,0x61,0x6c,0x69,0x64,0x61,0x74,0x6f, - 0x72,0x73,0x01,0x00,0x00,0x0e,0x6c,0x6f,0x67,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x00, - 0x08,0x75,0x72,0x69,0x10,0x73,0x68,0x6f,0x77,0x5f,0x68,0x69,0x64,0x64,0x65,0x6e, - 0x0e,0x6d,0x61,0x78,0x5f,0x64,0x65,0x70,0x74,0x68,0x0d,0x6d,0x61,0x78,0x5f,0x64, - 0x61,0x74,0x61,0x11,0x6d,0x61,0x78,0x5f,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e, - 0x0d,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69, - 0x6e,0x67,0x16,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x5f,0x73,0x65,0x73,0x73, - 0x69,0x6f,0x6e,0x73,0x0d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x01,0x00,0x00, - 0x11,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0d,0x66,0x65, - 0x61,0x74,0x75,0x72,0x65,0x73,0x0c,0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x01,0x00, - 0x05,0x09,0x49,0x4e,0x46,0x4f,0x03,0x02,0x0b,0x44,0x45,0x54,0x41,0x49,0x4c,0x03, - 0x03,0x0a,0x44,0x45,0x42,0x55,0x47,0x03,0x04,0x0c,0x57,0x41,0x52,0x4e,0x49,0x4e, - 0x47,0x03,0x01,0x0a,0x45,0x52,0x52,0x4f,0x52,0x03,0x00,0x3c,0x00,0x01,0x05,0x01, - 0x03,0x00,0x08,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x25,0x02,0x01,0x00,0x2b, - 0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x00,0x3f, - 0x01,0x01,0x00,0x00,0x00,0x09,0x62,0x79,0x74,0x65,0x0b,0x25,0x25,0x25,0x30,0x32, - 0x78,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74,0x3b,0x01,0x01,0x05,0x01,0x03,0x00,0x07, - 0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x10,0x02,0x00,0x00,0x25,0x03,0x01,0x00, - 0x31,0x04,0x02,0x00,0x30,0x00,0x00,0x80,0x40,0x01,0x04,0x00,0x00,0xc0,0x00,0x14, - 0x28,0x5b,0x5e,0x41,0x2d,0x5a,0x61,0x2d,0x7a,0x30,0x2d,0x39,0x5f,0x5d,0x29,0x09, - 0x67,0x73,0x75,0x62,0x40,0x00,0x01,0x09,0x01,0x01,0x00,0x0c,0x32,0x01,0x00,0x00, - 0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x04, - 0x54,0x05,0x03,0x80,0x36,0x07,0x05,0x00,0x27,0x08,0x01,0x00,0x39,0x08,0x07,0x01, - 0x41,0x05,0x03,0x03,0x4e,0x05,0xfb,0x7f,0x48,0x01,0x02,0x00,0x01,0xc0,0x0b,0x69, - 0x70,0x61,0x69,0x72,0x73,0x5a,0x00,0x01,0x05,0x02,0x03,0x00,0x0f,0x2b,0x01,0x00, - 0x00,0x36,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x02,0x80,0x48,0x00,0x02, - 0x00,0x54,0x01,0x08,0x80,0x2b,0x01,0x01,0x00,0x37,0x01,0x00,0x01,0x25,0x02,0x01, - 0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02, - 0x00,0x3f,0x01,0x01,0x00,0x47,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x09,0x62,0x79, - 0x74,0x65,0x0b,0x25,0x25,0x25,0x30,0x32,0x78,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74, - 0x3d,0x01,0x01,0x05,0x02,0x03,0x00,0x07,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01, - 0x10,0x02,0x00,0x00,0x25,0x03,0x01,0x00,0x31,0x04,0x02,0x00,0x30,0x00,0x00,0x80, - 0x40,0x01,0x04,0x00,0x00,0xc0,0x05,0xc0,0x00,0x14,0x28,0x5b,0x5e,0x41,0x2d,0x5a, - 0x61,0x2d,0x7a,0x30,0x2d,0x39,0x5f,0x5d,0x29,0x09,0x67,0x73,0x75,0x62,0x39,0x00, - 0x01,0x05,0x02,0x02,0x00,0x08,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x2b,0x02, - 0x01,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00,0x00,0x27,0x04,0x10,0x00,0x3e,0x02, - 0x03,0x00,0x3f,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x0d,0x74,0x6f,0x6e,0x75,0x6d, - 0x62,0x65,0x72,0x09,0x63,0x68,0x61,0x72,0x36,0x01,0x01,0x05,0x02,0x03,0x00,0x07, - 0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x10,0x02,0x00,0x00,0x25,0x03,0x01,0x00, - 0x31,0x04,0x02,0x00,0x30,0x00,0x00,0x80,0x40,0x01,0x04,0x00,0x00,0xc0,0x01,0xc0, - 0x00,0x0d,0x25,0x25,0x28,0x25,0x78,0x25,0x78,0x29,0x09,0x67,0x73,0x75,0x62,0x27, - 0x00,0x01,0x02,0x00,0x02,0x00,0x07,0x06,0x00,0x00,0x00,0x54,0x01,0x02,0x80,0x48, - 0x00,0x02,0x00,0x54,0x01,0x02,0x80,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x47, - 0x00,0x01,0x00,0x05,0x07,0x2e,0x2f,0x2b,0x00,0x01,0x02,0x00,0x02,0x00,0x07,0x06, - 0x00,0x00,0x00,0x54,0x01,0x03,0x80,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x54, - 0x01,0x01,0x80,0x48,0x00,0x02,0x00,0x47,0x00,0x01,0x00,0x05,0x0b,0x2e,0x2e,0x2f, - 0x2e,0x2e,0x2f,0x2a,0x00,0x01,0x02,0x00,0x02,0x00,0x07,0x06,0x00,0x00,0x00,0x54, - 0x01,0x03,0x80,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x54,0x01,0x01,0x80,0x48, - 0x00,0x02,0x00,0x47,0x00,0x01,0x00,0x05,0x0a,0x2e,0x2e,0x2f,0x2e,0x2e,0xa7,0x02, - 0x01,0x02,0x08,0x01,0x0c,0x00,0x37,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02,0x10, - 0x03,0x01,0x00,0x27,0x04,0x01,0x00,0x27,0x05,0x01,0x00,0x3e,0x02,0x04,0x02,0x07, - 0x02,0x01,0x00,0x54,0x02,0x01,0x80,0x30,0x00,0x2d,0x80,0x2b,0x02,0x00,0x00,0x37, - 0x02,0x02,0x02,0x10,0x03,0x00,0x00,0x25,0x04,0x03,0x00,0x25,0x05,0x04,0x00,0x3e, - 0x02,0x04,0x02,0x10,0x03,0x02,0x00,0x10,0x04,0x01,0x00,0x24,0x02,0x04,0x03,0x2b, - 0x03,0x00,0x00,0x37,0x03,0x02,0x03,0x10,0x04,0x02,0x00,0x25,0x05,0x05,0x00,0x31, - 0x06,0x06,0x00,0x3e,0x03,0x04,0x02,0x10,0x02,0x03,0x00,0x2b,0x03,0x00,0x00,0x37, - 0x03,0x02,0x03,0x10,0x04,0x02,0x00,0x25,0x05,0x07,0x00,0x25,0x06,0x01,0x00,0x3e, - 0x03,0x04,0x02,0x10,0x02,0x03,0x00,0x29,0x03,0x00,0x00,0x04,0x03,0x02,0x00,0x54, - 0x04,0x0a,0x80,0x51,0x04,0x09,0x80,0x10,0x03,0x02,0x00,0x2b,0x04,0x00,0x00,0x37, - 0x04,0x02,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x08,0x00,0x31,0x07,0x09,0x00,0x3e, - 0x04,0x04,0x02,0x10,0x02,0x04,0x00,0x54,0x04,0xf4,0x7f,0x2b,0x04,0x00,0x00,0x37, - 0x04,0x02,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x0a,0x00,0x31,0x07,0x0b,0x00,0x3e, - 0x04,0x04,0x02,0x10,0x02,0x04,0x00,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x48, - 0x01,0x02,0x00,0x00,0xc0,0x00,0x12,0x28,0x5b,0x5e,0x2f,0x5d,0x2a,0x2f,0x25,0x2e, - 0x25,0x2e,0x29,0x24,0x00,0x12,0x28,0x5b,0x5e,0x2f,0x5d,0x2a,0x2f,0x25,0x2e,0x25, - 0x2e,0x2f,0x29,0x09,0x2f,0x25,0x2e,0x24,0x00,0x0f,0x28,0x5b,0x5e,0x2f,0x5d,0x2a, - 0x25,0x2e,0x2f,0x29,0x05,0x0b,0x5b,0x5e,0x2f,0x5d,0x2a,0x24,0x09,0x67,0x73,0x75, - 0x62,0x06,0x2f,0x08,0x73,0x75,0x62,0x23,0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b, - 0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02, - 0xc0,0x05,0x0d,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x21,0x00,0x01,0x02,0x01, - 0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48, - 0x01,0x02,0x00,0x02,0xc0,0x05,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x24,0x00,0x01, - 0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01, - 0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x0e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69, - 0x74,0x79,0x20,0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a,0x00, - 0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x0a,0x71,0x75, - 0x65,0x72,0x79,0x21,0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00,0x00,0x3a, - 0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05,0x0b,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x23,0x00,0x01,0x02,0x01,0x02,0x00,0x04,0x2b,0x01,0x00, - 0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02,0x00,0x02,0xc0,0x05, - 0x0d,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x1f,0x00,0x01,0x02,0x01,0x02,0x00, - 0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02, - 0x00,0x02,0xc0,0x05,0x09,0x70,0x6f,0x72,0x74,0x23,0x00,0x01,0x02,0x01,0x02,0x00, - 0x04,0x2b,0x01,0x00,0x00,0x3a,0x00,0x00,0x01,0x25,0x01,0x01,0x00,0x48,0x01,0x02, - 0x00,0x02,0xc0,0x05,0x0d,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x8e,0x04,0x01, - 0x02,0x09,0x02,0x18,0x00,0x5e,0x32,0x02,0x00,0x00,0x2b,0x03,0x00,0x00,0x37,0x03, - 0x00,0x03,0x0c,0x04,0x01,0x00,0x54,0x04,0x01,0x80,0x10,0x04,0x02,0x00,0x3e,0x03, - 0x02,0x04,0x54,0x06,0x01,0x80,0x39,0x07,0x06,0x02,0x41,0x06,0x03,0x03,0x4e,0x06, - 0xfd,0x7f,0x0f,0x00,0x00,0x00,0x54,0x03,0x02,0x80,0x07,0x00,0x01,0x00,0x54,0x03, - 0x03,0x80,0x29,0x03,0x00,0x00,0x25,0x04,0x02,0x00,0x30,0x00,0x4b,0x80,0x2b,0x03, - 0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x00,0x00,0x25,0x05,0x04,0x00,0x31,0x06, - 0x05,0x00,0x3e,0x03,0x04,0x02,0x10,0x00,0x03,0x00,0x2b,0x03,0x01,0x00,0x37,0x03, - 0x03,0x03,0x10,0x04,0x00,0x00,0x25,0x05,0x06,0x00,0x31,0x06,0x07,0x00,0x3e,0x03, - 0x04,0x02,0x10,0x00,0x03,0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04, - 0x00,0x00,0x25,0x05,0x08,0x00,0x31,0x06,0x09,0x00,0x3e,0x03,0x04,0x02,0x10,0x00, - 0x03,0x00,0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x00,0x00,0x25,0x05, - 0x0a,0x00,0x31,0x06,0x0b,0x00,0x3e,0x03,0x04,0x02,0x10,0x00,0x03,0x00,0x2b,0x03, - 0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x00,0x00,0x25,0x05,0x0c,0x00,0x31,0x06, - 0x0d,0x00,0x3e,0x03,0x04,0x02,0x10,0x00,0x03,0x00,0x06,0x00,0x01,0x00,0x54,0x03, - 0x01,0x80,0x3a,0x00,0x0e,0x02,0x37,0x03,0x0f,0x02,0x0e,0x00,0x03,0x00,0x54,0x04, - 0x02,0x80,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x2b,0x04,0x01,0x00,0x37,0x04, - 0x03,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x10,0x00,0x31,0x07,0x11,0x00,0x3e,0x04, - 0x04,0x02,0x10,0x03,0x04,0x00,0x2b,0x04,0x01,0x00,0x37,0x04,0x03,0x04,0x10,0x05, - 0x03,0x00,0x25,0x06,0x12,0x00,0x31,0x07,0x13,0x00,0x3e,0x04,0x04,0x02,0x10,0x03, - 0x04,0x00,0x06,0x03,0x01,0x00,0x54,0x04,0x01,0x80,0x3a,0x03,0x14,0x02,0x37,0x04, - 0x15,0x02,0x0e,0x00,0x04,0x00,0x54,0x05,0x02,0x80,0x30,0x00,0x00,0x80,0x48,0x02, - 0x02,0x00,0x2b,0x05,0x01,0x00,0x37,0x05,0x03,0x05,0x10,0x06,0x04,0x00,0x25,0x07, - 0x12,0x00,0x31,0x08,0x16,0x00,0x3e,0x05,0x04,0x02,0x10,0x04,0x05,0x00,0x3a,0x04, - 0x17,0x02,0x30,0x00,0x00,0x80,0x48,0x02,0x02,0x00,0x46,0x03,0x03,0x00,0x01,0xc0, - 0x00,0xc0,0x09,0x75,0x73,0x65,0x72,0x00,0x0d,0x75,0x73,0x65,0x72,0x69,0x6e,0x66, - 0x6f,0x09,0x68,0x6f,0x73,0x74,0x00,0x0e,0x3a,0x28,0x5b,0x5e,0x3a,0x5d,0x2a,0x29, - 0x24,0x00,0x0e,0x5e,0x28,0x5b,0x5e,0x40,0x5d,0x2a,0x29,0x40,0x0e,0x61,0x75,0x74, - 0x68,0x6f,0x72,0x69,0x74,0x79,0x09,0x70,0x61,0x74,0x68,0x00,0x0b,0x25,0x3b,0x28, - 0x2e,0x2a,0x29,0x00,0x0b,0x25,0x3f,0x28,0x2e,0x2a,0x29,0x00,0x0f,0x5e,0x2f,0x2f, - 0x28,0x5b,0x5e,0x2f,0x5d,0x2a,0x29,0x00,0x19,0x5e,0x28,0x5b,0x25,0x77,0x5d,0x5b, - 0x25,0x77,0x25,0x2b,0x25,0x2d,0x25,0x2e,0x5d,0x2a,0x29,0x25,0x3a,0x00,0x0b,0x23, - 0x28,0x2e,0x2a,0x29,0x24,0x09,0x67,0x73,0x75,0x62,0x10,0x69,0x6e,0x76,0x61,0x6c, - 0x69,0x64,0x20,0x75,0x72,0x6c,0x05,0x0a,0x70,0x61,0x69,0x72,0x73,0xa0,0x03,0x00, - 0x01,0x08,0x00,0x14,0x00,0x4a,0x34,0x01,0x00,0x00,0x37,0x02,0x01,0x00,0x0e,0x00, - 0x02,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x02,0x00,0x3e,0x01,0x02,0x02,0x34,0x02, - 0x03,0x00,0x10,0x03,0x01,0x00,0x3e,0x02,0x02,0x02,0x37,0x03,0x04,0x00,0x0f,0x00, - 0x03,0x00,0x54,0x04,0x04,0x80,0x10,0x03,0x02,0x00,0x25,0x04,0x05,0x00,0x37,0x05, - 0x04,0x00,0x24,0x02,0x05,0x03,0x37,0x03,0x06,0x00,0x0f,0x00,0x03,0x00,0x54,0x04, - 0x04,0x80,0x10,0x03,0x02,0x00,0x25,0x04,0x07,0x00,0x37,0x05,0x06,0x00,0x24,0x02, - 0x05,0x03,0x37,0x03,0x08,0x00,0x37,0x04,0x09,0x00,0x0f,0x00,0x04,0x00,0x54,0x05, - 0x1a,0x80,0x37,0x03,0x09,0x00,0x37,0x04,0x0a,0x00,0x0f,0x00,0x04,0x00,0x54,0x05, - 0x04,0x80,0x10,0x04,0x03,0x00,0x25,0x05,0x0b,0x00,0x37,0x06,0x0a,0x00,0x24,0x03, - 0x06,0x04,0x37,0x04,0x0c,0x00,0x37,0x05,0x0d,0x00,0x0f,0x00,0x05,0x00,0x54,0x06, - 0x08,0x80,0x37,0x04,0x0d,0x00,0x37,0x05,0x0e,0x00,0x0f,0x00,0x05,0x00,0x54,0x06, - 0x04,0x80,0x10,0x05,0x04,0x00,0x25,0x06,0x0b,0x00,0x37,0x07,0x0e,0x00,0x24,0x04, - 0x07,0x05,0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80,0x10,0x05,0x04,0x00,0x25,0x06, - 0x0f,0x00,0x10,0x07,0x03,0x00,0x24,0x03,0x07,0x05,0x0f,0x00,0x03,0x00,0x54,0x04, - 0x04,0x80,0x25,0x04,0x10,0x00,0x10,0x05,0x03,0x00,0x10,0x06,0x02,0x00,0x24,0x02, - 0x06,0x04,0x37,0x04,0x11,0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80,0x37,0x04, - 0x11,0x00,0x25,0x05,0x0b,0x00,0x10,0x06,0x02,0x00,0x24,0x02,0x06,0x04,0x37,0x04, - 0x12,0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x04,0x80,0x10,0x04,0x02,0x00,0x25,0x05, - 0x13,0x00,0x37,0x06,0x12,0x00,0x24,0x02,0x06,0x04,0x48,0x02,0x02,0x00,0x06,0x23, - 0x0d,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65, - 0x07,0x2f,0x2f,0x06,0x40,0x0d,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x09,0x75, - 0x73,0x65,0x72,0x0d,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x06,0x3a,0x09,0x70, - 0x6f,0x72,0x74,0x09,0x68,0x6f,0x73,0x74,0x0e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69, - 0x74,0x79,0x06,0x3f,0x0a,0x71,0x75,0x65,0x72,0x79,0x06,0x3b,0x0b,0x70,0x61,0x72, - 0x61,0x6d,0x73,0x0f,0x62,0x75,0x69,0x6c,0x64,0x5f,0x70,0x61,0x74,0x68,0x05,0x09, - 0x70,0x61,0x74,0x68,0x0f,0x70,0x61,0x72,0x73,0x65,0x5f,0x70,0x61,0x74,0x68,0xfa, - 0x02,0x00,0x02,0x06,0x02,0x0b,0x00,0x4a,0x2b,0x02,0x00,0x00,0x37,0x02,0x00,0x02, - 0x10,0x03,0x00,0x00,0x3e,0x02,0x02,0x02,0x07,0x02,0x01,0x00,0x54,0x02,0x06,0x80, - 0x35,0x00,0x02,0x00,0x34,0x02,0x03,0x00,0x34,0x03,0x02,0x00,0x3e,0x02,0x02,0x02, - 0x10,0x00,0x02,0x00,0x54,0x02,0x04,0x80,0x34,0x02,0x04,0x00,0x10,0x03,0x00,0x00, - 0x3e,0x02,0x02,0x02,0x35,0x02,0x02,0x00,0x34,0x02,0x04,0x00,0x10,0x03,0x01,0x00, - 0x3e,0x02,0x02,0x02,0x34,0x03,0x02,0x00,0x0e,0x00,0x03,0x00,0x54,0x03,0x02,0x80, - 0x48,0x01,0x02,0x00,0x54,0x03,0x31,0x80,0x0e,0x00,0x02,0x00,0x54,0x03,0x02,0x80, - 0x48,0x00,0x02,0x00,0x54,0x03,0x2d,0x80,0x37,0x03,0x05,0x02,0x0f,0x00,0x03,0x00, - 0x54,0x04,0x02,0x80,0x48,0x01,0x02,0x00,0x54,0x03,0x28,0x80,0x34,0x03,0x02,0x00, - 0x37,0x03,0x05,0x03,0x3a,0x03,0x05,0x02,0x37,0x03,0x06,0x02,0x0e,0x00,0x03,0x00, - 0x54,0x03,0x1f,0x80,0x34,0x03,0x02,0x00,0x37,0x03,0x06,0x03,0x3a,0x03,0x06,0x02, - 0x37,0x03,0x07,0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x10,0x80,0x34,0x03,0x02,0x00, - 0x37,0x03,0x07,0x03,0x3a,0x03,0x07,0x02,0x37,0x03,0x08,0x02,0x0e,0x00,0x03,0x00, - 0x54,0x03,0x13,0x80,0x34,0x03,0x02,0x00,0x37,0x03,0x08,0x03,0x3a,0x03,0x08,0x02, - 0x37,0x03,0x09,0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x0d,0x80,0x34,0x03,0x02,0x00, - 0x37,0x03,0x09,0x03,0x3a,0x03,0x09,0x02,0x54,0x03,0x09,0x80,0x2b,0x03,0x01,0x00, - 0x34,0x04,0x02,0x00,0x37,0x04,0x07,0x04,0x0e,0x00,0x04,0x00,0x54,0x05,0x01,0x80, - 0x25,0x04,0x0a,0x00,0x37,0x05,0x07,0x02,0x3e,0x03,0x03,0x02,0x3a,0x03,0x07,0x02, - 0x34,0x03,0x03,0x00,0x10,0x04,0x02,0x00,0x40,0x03,0x02,0x00,0x47,0x00,0x01,0x00, - 0x01,0xc0,0x07,0xc0,0x05,0x0a,0x71,0x75,0x65,0x72,0x79,0x0b,0x70,0x61,0x72,0x61, - 0x6d,0x73,0x09,0x70,0x61,0x74,0x68,0x0e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74, - 0x79,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x0a,0x70,0x61,0x72,0x73,0x65,0x0a,0x62, - 0x75,0x69,0x6c,0x64,0x10,0x62,0x61,0x73,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64, - 0x0a,0x74,0x61,0x62,0x6c,0x65,0x09,0x74,0x79,0x70,0x65,0x2a,0x00,0x01,0x04,0x02, - 0x01,0x00,0x06,0x2b,0x01,0x00,0x00,0x37,0x01,0x00,0x01,0x2b,0x02,0x01,0x00,0x10, - 0x03,0x00,0x00,0x3e,0x01,0x03,0x01,0x47,0x00,0x01,0x00,0x01,0x00,0x01,0xc0,0x0b, - 0x69,0x6e,0x73,0x65,0x72,0x74,0xe6,0x01,0x01,0x01,0x08,0x02,0x09,0x00,0x29,0x32, - 0x01,0x00,0x00,0x0e,0x00,0x00,0x00,0x54,0x02,0x01,0x80,0x25,0x00,0x00,0x00,0x2b, - 0x02,0x00,0x00,0x37,0x02,0x01,0x02,0x10,0x03,0x00,0x00,0x25,0x04,0x02,0x00,0x31, - 0x05,0x03,0x00,0x3e,0x02,0x04,0x01,0x27,0x02,0x01,0x00,0x13,0x03,0x01,0x00,0x27, - 0x04,0x01,0x00,0x49,0x02,0x05,0x80,0x34,0x06,0x04,0x00,0x36,0x07,0x05,0x01,0x3e, - 0x06,0x02,0x02,0x39,0x06,0x05,0x01,0x4b,0x02,0xfb,0x7f,0x2b,0x02,0x00,0x00,0x37, - 0x02,0x05,0x02,0x10,0x03,0x00,0x00,0x27,0x04,0x01,0x00,0x27,0x05,0x01,0x00,0x3e, - 0x02,0x04,0x02,0x07,0x02,0x06,0x00,0x54,0x02,0x02,0x80,0x27,0x02,0x01,0x00,0x3a, - 0x02,0x07,0x01,0x2b,0x02,0x00,0x00,0x37,0x02,0x05,0x02,0x10,0x03,0x00,0x00,0x27, - 0x04,0xff,0xff,0x27,0x05,0xff,0xff,0x3e,0x02,0x04,0x02,0x07,0x02,0x06,0x00,0x54, - 0x02,0x02,0x80,0x27,0x02,0x01,0x00,0x3a,0x02,0x08,0x01,0x30,0x00,0x00,0x80,0x48, - 0x01,0x02,0x00,0x00,0xc0,0x02,0xc0,0x11,0x69,0x73,0x5f,0x64,0x69,0x72,0x65,0x63, - 0x74,0x6f,0x72,0x79,0x10,0x69,0x73,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65, - 0x06,0x2f,0x08,0x73,0x75,0x62,0x0d,0x75,0x6e,0x65,0x73,0x63,0x61,0x70,0x65,0x00, - 0x0c,0x28,0x5b,0x5e,0x2f,0x5d,0x2b,0x29,0x09,0x67,0x73,0x75,0x62,0x05,0x9e,0x02, - 0x00,0x02,0x0b,0x01,0x04,0x01,0x3e,0x25,0x02,0x00,0x00,0x13,0x03,0x00,0x00,0x0f, - 0x00,0x01,0x00,0x54,0x04,0x18,0x80,0x27,0x04,0x01,0x00,0x15,0x05,0x00,0x03,0x27, - 0x06,0x01,0x00,0x49,0x04,0x07,0x80,0x10,0x08,0x02,0x00,0x36,0x09,0x07,0x00,0x24, - 0x02,0x09,0x08,0x10,0x08,0x02,0x00,0x25,0x09,0x01,0x00,0x24,0x02,0x09,0x08,0x4b, - 0x04,0xf9,0x7f,0x27,0x04,0x00,0x00,0x01,0x04,0x03,0x00,0x54,0x04,0x25,0x80,0x10, - 0x04,0x02,0x00,0x36,0x05,0x03,0x00,0x24,0x02,0x05,0x04,0x37,0x04,0x02,0x00,0x0f, - 0x00,0x04,0x00,0x54,0x05,0x1f,0x80,0x10,0x04,0x02,0x00,0x25,0x05,0x01,0x00,0x24, - 0x02,0x05,0x04,0x54,0x04,0x1b,0x80,0x27,0x04,0x01,0x00,0x15,0x05,0x00,0x03,0x27, - 0x06,0x01,0x00,0x49,0x04,0x09,0x80,0x10,0x08,0x02,0x00,0x2b,0x09,0x00,0x00,0x36, - 0x0a,0x07,0x00,0x3e,0x09,0x02,0x02,0x24,0x02,0x09,0x08,0x10,0x08,0x02,0x00,0x25, - 0x09,0x01,0x00,0x24,0x02,0x09,0x08,0x4b,0x04,0xf7,0x7f,0x27,0x04,0x00,0x00,0x01, - 0x04,0x03,0x00,0x54,0x04,0x0b,0x80,0x10,0x04,0x02,0x00,0x2b,0x05,0x00,0x00,0x36, - 0x06,0x03,0x00,0x3e,0x05,0x02,0x02,0x24,0x02,0x05,0x04,0x37,0x04,0x02,0x00,0x0f, - 0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x10,0x04,0x02,0x00,0x25,0x05,0x01,0x00,0x24, - 0x02,0x05,0x04,0x37,0x04,0x03,0x00,0x0f,0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x25, - 0x04,0x01,0x00,0x10,0x05,0x02,0x00,0x24,0x02,0x05,0x04,0x48,0x02,0x02,0x00,0x06, - 0xc0,0x10,0x69,0x73,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x11,0x69,0x73, - 0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x06,0x2f,0x05,0x02,0xbf,0x02, - 0x03,0x00,0x09,0x00,0x19,0x00,0x27,0x34,0x00,0x00,0x00,0x25,0x01,0x01,0x00,0x3e, - 0x00,0x02,0x02,0x34,0x01,0x02,0x00,0x34,0x02,0x00,0x00,0x25,0x03,0x03,0x00,0x3e, - 0x02,0x02,0x02,0x32,0x03,0x00,0x00,0x34,0x04,0x04,0x00,0x0f,0x00,0x04,0x00,0x54, - 0x05,0x04,0x80,0x34,0x04,0x04,0x00,0x27,0x05,0x01,0x00,0x10,0x06,0x03,0x00,0x3e, - 0x04,0x03,0x01,0x25,0x04,0x05,0x00,0x35,0x04,0x06,0x00,0x31,0x04,0x07,0x00,0x35, - 0x04,0x08,0x00,0x31,0x04,0x09,0x00,0x10,0x05,0x04,0x00,0x33,0x06,0x0a,0x00,0x3e, - 0x05,0x02,0x02,0x31,0x06,0x0b,0x00,0x31,0x07,0x0c,0x00,0x35,0x07,0x0d,0x00,0x31, - 0x07,0x0e,0x00,0x31,0x08,0x0f,0x00,0x35,0x08,0x10,0x00,0x31,0x08,0x11,0x00,0x35, - 0x08,0x12,0x00,0x31,0x08,0x13,0x00,0x35,0x08,0x14,0x00,0x31,0x08,0x15,0x00,0x35, - 0x08,0x16,0x00,0x31,0x08,0x17,0x00,0x35,0x08,0x18,0x00,0x30,0x00,0x00,0x80,0x48, - 0x03,0x02,0x00,0x0f,0x62,0x75,0x69,0x6c,0x64,0x5f,0x70,0x61,0x74,0x68,0x00,0x0f, - 0x70,0x61,0x72,0x73,0x65,0x5f,0x70,0x61,0x74,0x68,0x00,0x0d,0x61,0x62,0x73,0x6f, - 0x6c,0x75,0x74,0x65,0x00,0x0a,0x62,0x75,0x69,0x6c,0x64,0x00,0x0a,0x70,0x61,0x72, - 0x73,0x65,0x00,0x00,0x0d,0x75,0x6e,0x65,0x73,0x63,0x61,0x70,0x65,0x00,0x00,0x01, - 0x11,0x00,0x00,0x06,0x2d,0x06,0x5f,0x06,0x2e,0x06,0x21,0x06,0x7e,0x06,0x2a,0x06, - 0x27,0x06,0x28,0x06,0x29,0x06,0x3a,0x06,0x40,0x06,0x26,0x06,0x3d,0x06,0x2b,0x06, - 0x24,0x06,0x2c,0x00,0x0b,0x65,0x73,0x63,0x61,0x70,0x65,0x00,0x0d,0x5f,0x56,0x45, - 0x52,0x53,0x49,0x4f,0x4e,0x0e,0x55,0x52,0x4c,0x20,0x31,0x2e,0x30,0x2e,0x31,0x0c, - 0x73,0x65,0x74,0x66,0x65,0x6e,0x76,0x0a,0x74,0x61,0x62,0x6c,0x65,0x07,0x5f,0x47, - 0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x1d, - 0x00,0x02,0x06,0x01,0x00,0x00,0x05,0x2b,0x02,0x00,0x00,0x10,0x03,0x00,0x00,0x27, - 0x04,0x01,0x00,0x10,0x05,0x01,0x00,0x40,0x02,0x04,0x00,0x14,0xc0,0x3d,0x00,0x01, - 0x03,0x00,0x04,0x00,0x08,0x34,0x01,0x00,0x00,0x37,0x01,0x01,0x01,0x37,0x01,0x02, - 0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x01,0x34,0x01,0x00,0x00,0x37,0x01,0x03, - 0x01,0x48,0x01,0x02,0x00,0x0b,0x73,0x74,0x64,0x6f,0x75,0x74,0x0b,0x6f,0x75,0x74, - 0x70,0x75,0x74,0x09,0x62,0x61,0x73,0x65,0x07,0x69,0x6f,0x0b,0x00,0x00,0x01,0x00, - 0x00,0x00,0x01,0x47,0x00,0x01,0x00,0x8b,0x02,0x02,0x01,0x08,0x02,0x10,0x01,0x28, - 0x32,0x01,0x03,0x00,0x43,0x02,0x01,0x00,0x3c,0x02,0x00,0x00,0x27,0x02,0x01,0x00, - 0x34,0x03,0x00,0x00,0x25,0x04,0x01,0x00,0x43,0x05,0x01,0x00,0x3d,0x03,0x01,0x02, - 0x27,0x04,0x01,0x00,0x49,0x02,0x05,0x80,0x34,0x06,0x02,0x00,0x36,0x07,0x05,0x01, - 0x3e,0x06,0x02,0x02,0x39,0x06,0x05,0x01,0x4b,0x02,0xfb,0x7f,0x34,0x02,0x03,0x00, - 0x37,0x02,0x04,0x02,0x10,0x03,0x01,0x00,0x3e,0x02,0x02,0x02,0x10,0x03,0x02,0x00, - 0x37,0x02,0x05,0x02,0x25,0x04,0x06,0x00,0x25,0x05,0x07,0x00,0x3e,0x02,0x04,0x02, - 0x10,0x01,0x02,0x00,0x2b,0x02,0x00,0x00,0x37,0x02,0x08,0x02,0x37,0x03,0x09,0x00, - 0x33,0x04,0x0a,0x00,0x33,0x05,0x0c,0x00,0x37,0x06,0x0b,0x00,0x3a,0x06,0x0d,0x05, - 0x3a,0x05,0x0e,0x04,0x2b,0x05,0x01,0x00,0x37,0x05,0x0f,0x05,0x10,0x06,0x01,0x00, - 0x3e,0x05,0x02,0x00,0x3c,0x05,0x00,0x00,0x3e,0x02,0x03,0x01,0x47,0x00,0x01,0x00, - 0x05,0xc0,0x03,0xc0,0x08,0x62,0x36,0x34,0x09,0x61,0x74,0x74,0x72,0x09,0x74,0x79, - 0x70,0x65,0x01,0x00,0x00,0x09,0x6d,0x6f,0x64,0x65,0x01,0x00,0x01,0x08,0x74,0x61, - 0x67,0x0b,0x73,0x74,0x72,0x65,0x61,0x6d,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65,0x6e, - 0x64,0x5f,0x78,0x6d,0x6c,0x07,0x0d,0x0a,0x06,0x0a,0x09,0x67,0x73,0x75,0x62,0x0b, - 0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0d,0x74,0x6f,0x73, - 0x74,0x72,0x69,0x6e,0x67,0x06,0x23,0x0b,0x73,0x65,0x6c,0x65,0x63,0x74,0x03,0x80, - 0x80,0xc0,0x99,0x04,0x68,0x02,0x01,0x04,0x01,0x05,0x00,0x0f,0x2b,0x01,0x00,0x00, - 0x37,0x01,0x00,0x01,0x37,0x01,0x01,0x01,0x10,0x02,0x00,0x00,0x43,0x03,0x01,0x00, - 0x3d,0x01,0x01,0x01,0x34,0x01,0x02,0x00,0x37,0x01,0x03,0x01,0x37,0x02,0x04,0x00, - 0x36,0x01,0x02,0x01,0x10,0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x43,0x03,0x01,0x00, - 0x3d,0x01,0x01,0x01,0x47,0x00,0x01,0x00,0x02,0xc0,0x09,0x6d,0x6f,0x64,0x65,0x09, - 0x62,0x61,0x73,0x65,0x07,0x69,0x6f,0x0a,0x77,0x72,0x69,0x74,0x65,0x14,0x72,0x65, - 0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x25,0x02,0x01, - 0x04,0x00,0x02,0x00,0x05,0x37,0x01,0x00,0x00,0x10,0x02,0x01,0x00,0x37,0x01,0x01, - 0x01,0x43,0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x0a,0x66,0x6c,0x75,0x73,0x68,0x08, - 0x6f,0x75,0x74,0x25,0x02,0x01,0x04,0x00,0x02,0x00,0x05,0x37,0x01,0x00,0x00,0x10, - 0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x43,0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x0a, - 0x63,0x6c,0x6f,0x73,0x65,0x08,0x6f,0x75,0x74,0x27,0x02,0x01,0x04,0x00,0x02,0x00, - 0x05,0x37,0x01,0x00,0x00,0x10,0x02,0x01,0x00,0x37,0x01,0x01,0x01,0x43,0x03,0x01, - 0x00,0x3f,0x01,0x01,0x00,0x0c,0x73,0x65,0x74,0x76,0x62,0x75,0x66,0x08,0x6f,0x75, - 0x74,0x24,0x02,0x01,0x04,0x00,0x02,0x00,0x05,0x37,0x01,0x00,0x00,0x10,0x02,0x01, - 0x00,0x37,0x01,0x01,0x01,0x43,0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x09,0x73,0x65, - 0x65,0x6b,0x08,0x6f,0x75,0x74,0x1f,0x00,0x02,0x03,0x00,0x00,0x00,0x06,0x02,0x01, - 0x00,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x54,0x03,0x01,0x80,0x29,0x02, - 0x02,0x00,0x48,0x02,0x02,0x00,0x1f,0x00,0x02,0x03,0x00,0x00,0x00,0x06,0x04,0x00, - 0x01,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x54,0x03,0x01,0x80,0x29,0x02, - 0x02,0x00,0x48,0x02,0x02,0x00,0x24,0x00,0x02,0x03,0x00,0x00,0x01,0x07,0x22,0x02, - 0x01,0x00,0x08,0x02,0x00,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x54,0x03, - 0x01,0x80,0x29,0x02,0x02,0x00,0x48,0x02,0x02,0x00,0x00,0x42,0x00,0x01,0x03,0x01, - 0x00,0x01,0x0e,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x0b,0x01,0x00,0x00,0x54, - 0x01,0x04,0x80,0x2b,0x01,0x00,0x00,0x27,0x02,0x01,0x00,0x39,0x02,0x00,0x01,0x54, - 0x01,0x05,0x80,0x2b,0x01,0x00,0x00,0x2b,0x02,0x00,0x00,0x36,0x02,0x00,0x02,0x14, - 0x02,0x00,0x02,0x39,0x02,0x00,0x01,0x47,0x00,0x01,0x00,0x1b,0xc0,0x02,0x56,0x00, - 0x01,0x03,0x01,0x00,0x01,0x13,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x0e,0x00, - 0x01,0x00,0x54,0x01,0x0b,0x80,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x27,0x02, - 0x01,0x00,0x01,0x02,0x01,0x00,0x54,0x01,0x06,0x80,0x2b,0x01,0x00,0x00,0x2b,0x02, - 0x00,0x00,0x36,0x02,0x00,0x02,0x15,0x02,0x00,0x02,0x39,0x02,0x00,0x01,0x54,0x01, - 0x03,0x80,0x2b,0x01,0x00,0x00,0x29,0x02,0x00,0x00,0x39,0x02,0x00,0x01,0x47,0x00, - 0x01,0x00,0x1b,0xc0,0x02,0x15,0x00,0x01,0x02,0x01,0x00,0x00,0x03,0x2b,0x01,0x00, - 0x00,0x36,0x01,0x00,0x01,0x48,0x01,0x02,0x00,0x1b,0xc0,0xe4,0x01,0x00,0x02,0x0d, - 0x03,0x06,0x00,0x2c,0x37,0x02,0x00,0x01,0x10,0x03,0x00,0x00,0x2b,0x04,0x00,0x00, - 0x36,0x04,0x02,0x04,0x0e,0x00,0x04,0x00,0x54,0x05,0x02,0x80,0x29,0x05,0x00,0x00, - 0x48,0x05,0x02,0x00,0x36,0x05,0x03,0x04,0x0e,0x00,0x05,0x00,0x54,0x06,0x02,0x80, - 0x29,0x06,0x00,0x00,0x48,0x06,0x02,0x00,0x2b,0x06,0x01,0x00,0x10,0x07,0x00,0x00, - 0x3e,0x06,0x02,0x01,0x27,0x06,0x01,0x00,0x13,0x07,0x05,0x00,0x27,0x08,0x01,0x00, - 0x49,0x06,0x0c,0x80,0x36,0x0a,0x09,0x05,0x37,0x0a,0x01,0x0a,0x37,0x0b,0x01,0x01, - 0x05,0x0a,0x0b,0x00,0x54,0x0a,0x06,0x80,0x34,0x0a,0x02,0x00,0x37,0x0a,0x03,0x0a, - 0x10,0x0b,0x05,0x00,0x10,0x0c,0x09,0x00,0x3e,0x0a,0x03,0x01,0x54,0x06,0x01,0x80, - 0x4b,0x06,0xf4,0x7f,0x32,0x05,0x00,0x00,0x2b,0x06,0x02,0x00,0x37,0x07,0x04,0x01, - 0x3e,0x06,0x02,0x01,0x34,0x06,0x02,0x00,0x37,0x06,0x05,0x06,0x10,0x07,0x05,0x00, - 0x10,0x08,0x01,0x00,0x3e,0x06,0x03,0x01,0x37,0x06,0x04,0x01,0x39,0x05,0x06,0x04, - 0x47,0x00,0x01,0x00,0x16,0xc0,0x1d,0xc0,0x1c,0xc0,0x0b,0x69,0x6e,0x73,0x65,0x72, - 0x74,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x0a, - 0x74,0x61,0x62,0x6c,0x65,0x07,0x69,0x64,0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d, - 0x65,0xa0,0x02,0x00,0x01,0x08,0x06,0x0b,0x01,0x2f,0x2b,0x01,0x00,0x00,0x14,0x02, - 0x00,0x01,0x2c,0x00,0x02,0x00,0x3a,0x01,0x00,0x00,0x2b,0x02,0x01,0x00,0x37,0x02, - 0x01,0x02,0x37,0x03,0x02,0x00,0x3e,0x02,0x02,0x02,0x2b,0x03,0x01,0x00,0x37,0x03, - 0x03,0x03,0x33,0x04,0x05,0x00,0x37,0x05,0x04,0x02,0x3a,0x05,0x04,0x04,0x2b,0x05, - 0x02,0x00,0x37,0x05,0x06,0x05,0x37,0x06,0x07,0x02,0x3e,0x05,0x02,0x02,0x3a,0x05, - 0x07,0x04,0x3e,0x03,0x02,0x02,0x3a,0x03,0x02,0x00,0x2b,0x03,0x03,0x00,0x37,0x04, - 0x02,0x00,0x36,0x03,0x04,0x03,0x0e,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x32,0x03, - 0x00,0x00,0x2b,0x04,0x03,0x00,0x37,0x05,0x02,0x00,0x39,0x03,0x05,0x04,0x37,0x04, - 0x08,0x00,0x36,0x04,0x04,0x03,0x0e,0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x32,0x04, - 0x00,0x00,0x37,0x05,0x08,0x00,0x39,0x04,0x05,0x03,0x2b,0x05,0x04,0x00,0x37,0x06, - 0x08,0x00,0x3e,0x05,0x02,0x01,0x34,0x05,0x09,0x00,0x37,0x05,0x0a,0x05,0x10,0x06, - 0x04,0x00,0x10,0x07,0x00,0x00,0x3e,0x05,0x03,0x01,0x2b,0x05,0x05,0x00,0x39,0x00, - 0x01,0x05,0x48,0x01,0x02,0x00,0x1a,0x80,0x08,0xc0,0x04,0xc0,0x16,0xc0,0x1c,0xc0, - 0x17,0xc0,0x0b,0x69,0x6e,0x73,0x65,0x72,0x74,0x0a,0x74,0x61,0x62,0x6c,0x65,0x0b, - 0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x09,0x70,0x61,0x74,0x68,0x0e,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x01,0x00,0x01,0x0e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69, - 0x74,0x79,0x05,0x0b,0x73,0x63,0x68,0x65,0x6d,0x65,0x0a,0x62,0x75,0x69,0x6c,0x64, - 0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x0a,0x70,0x61,0x72,0x73,0x65,0x07, - 0x69,0x64,0x02,0x91,0x05,0x00,0x02,0x14,0x06,0x17,0x01,0x69,0x10,0x03,0x00,0x00, - 0x37,0x02,0x00,0x00,0x25,0x04,0x01,0x00,0x13,0x04,0x04,0x00,0x14,0x04,0x00,0x04, - 0x3e,0x02,0x03,0x02,0x34,0x03,0x02,0x00,0x2b,0x04,0x00,0x00,0x3e,0x03,0x02,0x04, - 0x44,0x06,0x0c,0x80,0x10,0x09,0x06,0x00,0x37,0x08,0x03,0x06,0x10,0x0a,0x02,0x00, - 0x3e,0x08,0x03,0x03,0x35,0x09,0x04,0x00,0x35,0x08,0x05,0x00,0x34,0x08,0x04,0x00, - 0x13,0x09,0x06,0x00,0x05,0x08,0x09,0x00,0x54,0x08,0x02,0x80,0x10,0x00,0x06,0x00, - 0x54,0x03,0x02,0x80,0x42,0x06,0x03,0x03,0x4e,0x06,0xf2,0x7f,0x2b,0x03,0x00,0x00, - 0x36,0x03,0x00,0x03,0x0f,0x00,0x03,0x00,0x54,0x04,0x03,0x80,0x2b,0x03,0x00,0x00, - 0x36,0x03,0x00,0x03,0x36,0x03,0x01,0x03,0x0e,0x00,0x03,0x00,0x54,0x04,0x02,0x80, - 0x29,0x04,0x00,0x00,0x48,0x04,0x02,0x00,0x29,0x04,0x01,0x00,0x34,0x05,0x02,0x00, - 0x10,0x06,0x03,0x00,0x3e,0x05,0x02,0x04,0x44,0x08,0x3e,0x80,0x37,0x0a,0x06,0x09, - 0x07,0x0a,0x07,0x00,0x54,0x0a,0x3b,0x80,0x29,0x0a,0x02,0x00,0x37,0x0b,0x08,0x09, - 0x0f,0x00,0x0b,0x00,0x54,0x0c,0x1f,0x80,0x2b,0x0b,0x01,0x00,0x37,0x0b,0x09,0x0b, - 0x10,0x0c,0x0b,0x00,0x37,0x0b,0x0a,0x0b,0x2b,0x0d,0x02,0x00,0x37,0x0d,0x0b,0x0d, - 0x27,0x0e,0x00,0x00,0x3e,0x0b,0x04,0x02,0x2b,0x0c,0x03,0x00,0x37,0x0d,0x08,0x09, - 0x10,0x0e,0x0b,0x00,0x3e,0x0c,0x03,0x01,0x34,0x0c,0x0c,0x00,0x37,0x0d,0x08,0x09, - 0x3e,0x0c,0x02,0x03,0x0e,0x00,0x0c,0x00,0x54,0x0e,0x07,0x80,0x2b,0x0e,0x04,0x00, - 0x25,0x0f,0x0d,0x00,0x25,0x10,0x0e,0x00,0x10,0x11,0x00,0x00,0x10,0x12,0x01,0x00, - 0x10,0x13,0x0d,0x00,0x3e,0x0e,0x06,0x01,0x0f,0x00,0x0c,0x00,0x54,0x0e,0x04,0x80, - 0x10,0x0a,0x0d,0x00,0x54,0x0e,0x03,0x80,0x29,0x0a,0x01,0x00,0x54,0x0e,0x01,0x80, - 0x29,0x0a,0x02,0x00,0x0f,0x00,0x0a,0x00,0x54,0x0b,0x16,0x80,0x37,0x0b,0x0f,0x09, - 0x14,0x0b,0x00,0x0b,0x3a,0x0b,0x0f,0x09,0x2b,0x0b,0x05,0x00,0x37,0x0b,0x10,0x0b, - 0x37,0x0b,0x11,0x0b,0x37,0x0c,0x12,0x09,0x36,0x0b,0x0c,0x0b,0x37,0x0c,0x0f,0x09, - 0x37,0x0d,0x13,0x09,0x3e,0x0b,0x03,0x02,0x0f,0x00,0x0b,0x00,0x54,0x0c,0x09,0x80, - 0x37,0x0b,0x14,0x09,0x0f,0x00,0x0b,0x00,0x54,0x0c,0x05,0x80,0x2b,0x0b,0x05,0x00, - 0x37,0x0b,0x10,0x0b,0x37,0x0b,0x15,0x0b,0x37,0x0c,0x16,0x09,0x3e,0x0b,0x02,0x01, - 0x29,0x04,0x02,0x00,0x42,0x08,0x03,0x03,0x4e,0x08,0xc0,0x7f,0x48,0x04,0x02,0x00, - 0x16,0xc0,0x07,0xc0,0x12,0x80,0x13,0x80,0x09,0xc0,0x02,0xc0,0x07,0x69,0x64,0x0b, - 0x72,0x65,0x6d,0x6f,0x76,0x65,0x0e,0x74,0x65,0x6d,0x70,0x6f,0x72,0x61,0x72,0x79, - 0x0e,0x68,0x69,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x12,0x68,0x69,0x74,0x5f,0x63, - 0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x13,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e, - 0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x10,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, - 0x6e,0x74,0x73,0x0e,0x68,0x69,0x74,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x3c,0x43,0x6f, - 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x65,0x76,0x61,0x6c,0x75,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x66,0x61,0x69,0x6c,0x65,0x64,0x20,0x66,0x6f,0x72,0x20,0x62,0x72, - 0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20,0x61,0x74,0x20,0x25,0x73,0x3a,0x25, - 0x64,0x3a,0x20,0x25,0x73,0x0a,0x45,0x52,0x52,0x4f,0x52,0x0a,0x70,0x63,0x61,0x6c, - 0x6c,0x09,0x63,0x6f,0x72,0x6f,0x08,0x6e,0x65,0x77,0x0c,0x43,0x6f,0x6e,0x74,0x65, - 0x78,0x74,0x0e,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x0c,0x65,0x6e,0x61, - 0x62,0x6c,0x65,0x64,0x0a,0x73,0x74,0x61,0x74,0x65,0x06,0x69,0x06,0x6a,0x09,0x66, - 0x69,0x6e,0x64,0x0a,0x70,0x61,0x69,0x72,0x73,0x0c,0x66,0x69,0x6c,0x65,0x3a,0x2f, - 0x2f,0x08,0x73,0x75,0x62,0x02,0x2d,0x00,0x01,0x02,0x01,0x00,0x00,0x09,0x0f,0x00, - 0x00,0x00,0x54,0x01,0x04,0x80,0x2b,0x01,0x00,0x00,0x36,0x01,0x00,0x01,0x48,0x01, - 0x02,0x00,0x54,0x01,0x02,0x80,0x2b,0x01,0x00,0x00,0x48,0x01,0x02,0x00,0x47,0x00, - 0x01,0x00,0x17,0xc0,0x8b,0x02,0x00,0x01,0x0a,0x03,0x05,0x00,0x37,0x2b,0x01,0x00, - 0x00,0x36,0x01,0x00,0x01,0x0f,0x00,0x01,0x00,0x54,0x02,0x31,0x80,0x2b,0x02,0x00, - 0x00,0x29,0x03,0x00,0x00,0x39,0x03,0x00,0x02,0x2b,0x02,0x01,0x00,0x37,0x03,0x00, - 0x01,0x36,0x02,0x03,0x02,0x37,0x03,0x01,0x01,0x36,0x02,0x03,0x02,0x27,0x03,0x01, - 0x00,0x13,0x04,0x02,0x00,0x27,0x05,0x01,0x00,0x49,0x03,0x0a,0x80,0x36,0x07,0x06, - 0x02,0x05,0x07,0x01,0x00,0x54,0x07,0x06,0x80,0x34,0x07,0x02,0x00,0x37,0x07,0x03, - 0x07,0x10,0x08,0x02,0x00,0x10,0x09,0x06,0x00,0x3e,0x07,0x03,0x01,0x54,0x03,0x01, - 0x80,0x4b,0x03,0xf6,0x7f,0x2b,0x03,0x02,0x00,0x37,0x04,0x01,0x01,0x3e,0x03,0x02, - 0x01,0x34,0x03,0x04,0x00,0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x02,0x0e,0x00,0x03, - 0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x01,0x00,0x37,0x04,0x00,0x01,0x36,0x03,0x04, - 0x03,0x37,0x04,0x01,0x01,0x29,0x05,0x00,0x00,0x39,0x05,0x04,0x03,0x34,0x03,0x04, - 0x00,0x2b,0x04,0x01,0x00,0x37,0x05,0x00,0x01,0x36,0x04,0x05,0x04,0x3e,0x03,0x02, - 0x02,0x0e,0x00,0x03,0x00,0x54,0x03,0x04,0x80,0x2b,0x03,0x01,0x00,0x37,0x04,0x00, - 0x01,0x29,0x05,0x00,0x00,0x39,0x05,0x04,0x03,0x29,0x03,0x02,0x00,0x48,0x03,0x02, - 0x00,0x29,0x02,0x01,0x00,0x48,0x02,0x02,0x00,0x17,0xc0,0x16,0xc0,0x1d,0xc0,0x09, - 0x6e,0x65,0x78,0x74,0x0b,0x72,0x65,0x6d,0x6f,0x76,0x65,0x0a,0x74,0x61,0x62,0x6c, - 0x65,0x0b,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x0d,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d, - 0x65,0x91,0x02,0x00,0x01,0x09,0x01,0x09,0x00,0x27,0x2b,0x01,0x00,0x00,0x36,0x01, - 0x00,0x01,0x0e,0x00,0x01,0x00,0x54,0x02,0x07,0x80,0x29,0x02,0x00,0x00,0x25,0x03, - 0x00,0x00,0x34,0x04,0x01,0x00,0x10,0x05,0x00,0x00,0x3e,0x04,0x02,0x02,0x24,0x03, - 0x04,0x03,0x46,0x02,0x03,0x00,0x33,0x02,0x02,0x00,0x32,0x03,0x00,0x00,0x3a,0x03, - 0x03,0x02,0x34,0x03,0x04,0x00,0x10,0x04,0x01,0x00,0x3e,0x03,0x02,0x04,0x44,0x06, - 0x02,0x80,0x37,0x08,0x03,0x02,0x39,0x07,0x06,0x08,0x42,0x06,0x03,0x03,0x4e,0x06, - 0xfc,0x7f,0x37,0x03,0x05,0x01,0x0f,0x00,0x03,0x00,0x54,0x04,0x04,0x80,0x33,0x03, - 0x06,0x00,0x37,0x04,0x05,0x01,0x3b,0x04,0x01,0x03,0x3b,0x03,0x01,0x02,0x37,0x03, - 0x03,0x02,0x29,0x04,0x00,0x00,0x3a,0x04,0x05,0x03,0x37,0x03,0x03,0x02,0x29,0x04, - 0x00,0x00,0x3a,0x04,0x07,0x03,0x37,0x03,0x03,0x02,0x29,0x04,0x00,0x00,0x3a,0x04, - 0x08,0x03,0x48,0x02,0x02,0x00,0x17,0xc0,0x0e,0x74,0x65,0x6d,0x70,0x6f,0x72,0x61, - 0x72,0x79,0x0e,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x01,0x00,0x01,0x08, - 0x74,0x61,0x67,0x0f,0x65,0x78,0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e,0x0f,0x65, - 0x78,0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e,0x0a,0x70,0x61,0x69,0x72,0x73,0x09, - 0x61,0x74,0x74,0x72,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x0f,0x62,0x72,0x65,0x61, - 0x6b,0x70,0x6f,0x69,0x6e,0x74,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x19, - 0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, - 0x6e,0x74,0x3a,0x20,0xae,0x01,0x00,0x01,0x08,0x05,0x05,0x00,0x19,0x2b,0x01,0x00, - 0x00,0x37,0x01,0x00,0x01,0x38,0x01,0x01,0x01,0x2b,0x02,0x01,0x00,0x25,0x03,0x01, - 0x00,0x25,0x04,0x02,0x00,0x10,0x05,0x00,0x00,0x34,0x06,0x03,0x00,0x10,0x07,0x01, - 0x00,0x3e,0x06,0x02,0x02,0x2b,0x07,0x02,0x00,0x36,0x07,0x01,0x07,0x3e,0x02,0x06, - 0x01,0x07,0x00,0x04,0x00,0x54,0x02,0x02,0x80,0x2f,0x03,0x02,0x00,0x54,0x02,0x07, - 0x80,0x2b,0x02,0x04,0x00,0x32,0x03,0x03,0x00,0x3b,0x00,0x01,0x03,0x2b,0x04,0x02, - 0x00,0x36,0x04,0x01,0x04,0x3b,0x04,0x02,0x03,0x39,0x03,0x01,0x02,0x47,0x00,0x01, - 0x00,0x12,0x80,0x09,0xc0,0x15,0xc0,0x19,0x80,0x18,0xc0,0x09,0x69,0x6e,0x74,0x6f, - 0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x24,0x52,0x65,0x67,0x69,0x73,0x74, - 0x65,0x72,0x65,0x64,0x20,0x25,0x73,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x66,0x6f, - 0x72,0x20,0x25,0x73,0x20,0x28,0x25,0x64,0x29,0x0a,0x44,0x45,0x42,0x55,0x47,0x09, - 0x63,0x6f,0x72,0x6f,0xf8,0x01,0x00,0x01,0x0a,0x06,0x07,0x00,0x2a,0x2b,0x01,0x00, - 0x00,0x0f,0x00,0x01,0x00,0x54,0x02,0x06,0x80,0x2b,0x01,0x01,0x00,0x37,0x01,0x00, - 0x01,0x04,0x01,0x00,0x00,0x54,0x01,0x02,0x80,0x29,0x01,0x02,0x00,0x48,0x01,0x02, - 0x00,0x2b,0x01,0x02,0x00,0x37,0x01,0x01,0x01,0x38,0x01,0x01,0x01,0x2b,0x02,0x03, - 0x00,0x36,0x02,0x01,0x02,0x0f,0x00,0x02,0x00,0x54,0x03,0x18,0x80,0x34,0x03,0x02, - 0x00,0x10,0x04,0x02,0x00,0x3e,0x03,0x02,0x03,0x2b,0x05,0x04,0x00,0x36,0x05,0x01, - 0x05,0x07,0x03,0x03,0x00,0x54,0x06,0x06,0x80,0x03,0x05,0x04,0x00,0x54,0x06,0x04, - 0x80,0x2b,0x06,0x01,0x00,0x37,0x06,0x00,0x06,0x05,0x06,0x00,0x00,0x54,0x06,0x04, - 0x80,0x07,0x03,0x04,0x00,0x54,0x06,0x09,0x80,0x01,0x05,0x04,0x00,0x54,0x06,0x07, - 0x80,0x2b,0x06,0x05,0x00,0x25,0x07,0x05,0x00,0x25,0x08,0x06,0x00,0x10,0x09,0x03, - 0x00,0x3e,0x06,0x04,0x01,0x29,0x06,0x02,0x00,0x48,0x06,0x02,0x00,0x29,0x03,0x01, - 0x00,0x48,0x03,0x02,0x00,0x19,0x80,0x02,0xc0,0x12,0x80,0x18,0xc0,0x15,0xc0,0x09, - 0xc0,0x16,0x45,0x76,0x65,0x6e,0x74,0x20,0x25,0x73,0x20,0x6d,0x61,0x74,0x63,0x68, - 0x65,0x64,0x21,0x0a,0x44,0x45,0x42,0x55,0x47,0x08,0x6f,0x75,0x74,0x09,0x6f,0x76, - 0x65,0x72,0x0b,0x75,0x6e,0x70,0x61,0x63,0x6b,0x09,0x63,0x6f,0x72,0x6f,0x14,0x70, - 0x72,0x65,0x76,0x5f,0x62,0x72,0x65,0x61,0x6b,0x5f,0x6c,0x69,0x6e,0x65,0x32,0x00, - 0x00,0x03,0x03,0x01,0x00,0x08,0x2b,0x00,0x00,0x00,0x2b,0x01,0x01,0x00,0x37,0x01, - 0x00,0x01,0x38,0x01,0x01,0x01,0x29,0x02,0x00,0x00,0x39,0x02,0x01,0x00,0x2f,0x02, - 0x00,0x00,0x47,0x00,0x01,0x00,0x18,0xc0,0x12,0x80,0x19,0x80,0x09,0x63,0x6f,0x72, - 0x6f,0x9b,0x01,0x00,0x02,0x06,0x01,0x09,0x00,0x12,0x37,0x02,0x00,0x00,0x37,0x03, - 0x02,0x00,0x3a,0x03,0x01,0x02,0x37,0x02,0x00,0x00,0x0c,0x03,0x01,0x00,0x54,0x03, - 0x01,0x80,0x25,0x03,0x04,0x00,0x3a,0x03,0x03,0x02,0x2b,0x02,0x00,0x00,0x37,0x02, - 0x05,0x02,0x37,0x03,0x06,0x00,0x33,0x04,0x07,0x00,0x37,0x05,0x00,0x00,0x3a,0x05, - 0x08,0x04,0x3e,0x02,0x03,0x01,0x29,0x02,0x00,0x00,0x3a,0x02,0x00,0x00,0x47,0x00, - 0x01,0x00,0x05,0xc0,0x09,0x61,0x74,0x74,0x72,0x01,0x00,0x01,0x08,0x74,0x61,0x67, - 0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x08,0x73,0x6b,0x74,0x0d,0x73,0x65, - 0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x07,0x6f,0x6b,0x0b,0x72,0x65,0x61,0x73,0x6f,0x6e, - 0x0a,0x73,0x74,0x61,0x74,0x65,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x15,0x70,0x72, - 0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0xcf,0x01, - 0x00,0x00,0x07,0x04,0x08,0x00,0x1e,0x34,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0x2b, - 0x02,0x00,0x00,0x2b,0x03,0x01,0x00,0x3a,0x03,0x02,0x01,0x3a,0x02,0x01,0x00,0x34, - 0x00,0x03,0x00,0x2b,0x01,0x02,0x00,0x37,0x01,0x04,0x01,0x37,0x01,0x05,0x01,0x3e, - 0x00,0x02,0x04,0x44,0x03,0x04,0x80,0x2b,0x05,0x03,0x00,0x37,0x05,0x06,0x05,0x10, - 0x06,0x04,0x00,0x3e,0x05,0x02,0x01,0x42,0x03,0x03,0x03,0x4e,0x03,0xfa,0x7f,0x2b, - 0x00,0x03,0x00,0x37,0x00,0x06,0x00,0x3e,0x00,0x01,0x01,0x2b,0x00,0x02,0x00,0x37, - 0x00,0x04,0x00,0x2b,0x01,0x02,0x00,0x37,0x01,0x04,0x01,0x32,0x02,0x00,0x00,0x32, - 0x03,0x00,0x00,0x3a,0x03,0x07,0x01,0x3a,0x02,0x05,0x00,0x47,0x00,0x01,0x00,0x0e, - 0xc0,0x0c,0xc0,0x02,0xc0,0x01,0xc0,0x0e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72, - 0x6f,0x0c,0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69, - 0x64,0x16,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69, - 0x6e,0x65,0x73,0x0a,0x70,0x61,0x69,0x72,0x73,0x09,0x77,0x72,0x61,0x70,0x0b,0x72, - 0x65,0x73,0x75,0x6d,0x65,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x23, - 0x00,0x00,0x04,0x04,0x00,0x00,0x05,0x2b,0x00,0x00,0x00,0x2b,0x01,0x01,0x00,0x2b, - 0x02,0x02,0x00,0x2b,0x03,0x03,0x00,0x40,0x00,0x04,0x00,0x07,0xc0,0x00,0xc0,0x05, - 0xc0,0x06,0xc0,0xb7,0x08,0x01,0x02,0x14,0x07,0x26,0x01,0xa5,0x01,0x37,0x02,0x00, - 0x00,0x10,0x03,0x02,0x00,0x37,0x02,0x01,0x02,0x29,0x04,0x00,0x00,0x3e,0x02,0x03, - 0x01,0x0b,0x01,0x00,0x00,0x54,0x02,0x02,0x80,0x29,0x02,0x01,0x00,0x54,0x03,0x01, - 0x80,0x29,0x02,0x02,0x00,0x37,0x03,0x02,0x00,0x0f,0x00,0x03,0x00,0x54,0x04,0x08, - 0x80,0x0e,0x00,0x02,0x00,0x54,0x03,0x06,0x80,0x25,0x03,0x04,0x00,0x3a,0x03,0x03, - 0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x05,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02, - 0x01,0x2b,0x03,0x01,0x00,0x37,0x03,0x07,0x03,0x37,0x04,0x08,0x00,0x3e,0x03,0x02, - 0x02,0x3a,0x03,0x06,0x00,0x51,0x03,0x7f,0x80,0x0c,0x03,0x01,0x00,0x54,0x03,0x04, - 0x80,0x2b,0x03,0x02,0x00,0x37,0x03,0x09,0x03,0x37,0x04,0x00,0x00,0x3e,0x03,0x02, - 0x02,0x0e,0x00,0x03,0x00,0x54,0x04,0x07,0x80,0x2b,0x04,0x03,0x00,0x25,0x05,0x0a, - 0x00,0x25,0x06,0x0b,0x00,0x3e,0x04,0x03,0x01,0x2b,0x04,0x04,0x00,0x3e,0x04,0x01, - 0x01,0x30,0x03,0x70,0x80,0x29,0x01,0x00,0x00,0x2b,0x04,0x03,0x00,0x25,0x05,0x0c, - 0x00,0x10,0x06,0x03,0x00,0x3e,0x04,0x03,0x01,0x2b,0x04,0x02,0x00,0x37,0x04,0x0d, - 0x04,0x10,0x05,0x03,0x00,0x3e,0x04,0x02,0x04,0x2b,0x07,0x05,0x00,0x36,0x07,0x04, - 0x07,0x0f,0x00,0x07,0x00,0x54,0x08,0x4e,0x80,0x34,0x08,0x0e,0x00,0x31,0x09,0x0f, - 0x00,0x2b,0x0a,0x06,0x00,0x37,0x0a,0x10,0x0a,0x3e,0x08,0x03,0x03,0x0e,0x00,0x08, - 0x00,0x54,0x0a,0x34,0x80,0x2a,0x0a,0x0c,0x00,0x34,0x0d,0x11,0x00,0x10,0x0e,0x09, - 0x00,0x3e,0x0d,0x02,0x02,0x07,0x0d,0x12,0x00,0x54,0x0d,0x0d,0x80,0x34,0x0d,0x13, - 0x00,0x10,0x0e,0x09,0x00,0x3e,0x0d,0x02,0x02,0x2b,0x0e,0x02,0x00,0x37,0x0e,0x14, - 0x0e,0x05,0x0d,0x0e,0x00,0x54,0x0d,0x06,0x80,0x37,0x0d,0x15,0x09,0x37,0x0e,0x16, - 0x09,0x37,0x0c,0x17,0x09,0x10,0x0b,0x0e,0x00,0x10,0x0a,0x0d,0x00,0x54,0x0d,0x07, - 0x80,0x27,0x0d,0xe6,0x03,0x34,0x0e,0x18,0x00,0x10,0x0f,0x09,0x00,0x3e,0x0e,0x02, - 0x02,0x32,0x0c,0x00,0x00,0x10,0x0b,0x0e,0x00,0x10,0x0a,0x0d,0x00,0x2b,0x0d,0x03, - 0x00,0x25,0x0e,0x19,0x00,0x25,0x0f,0x1a,0x00,0x10,0x10,0x04,0x00,0x10,0x11,0x0a, - 0x00,0x34,0x12,0x18,0x00,0x10,0x13,0x0b,0x00,0x3e,0x12,0x02,0x00,0x3d,0x0d,0x04, - 0x01,0x10,0x0d,0x04,0x00,0x37,0x0e,0x1d,0x05,0x3a,0x0e,0x1c,0x0c,0x3a,0x0d,0x1b, - 0x0c,0x2b,0x0d,0x02,0x00,0x37,0x0d,0x1e,0x0d,0x37,0x0e,0x00,0x00,0x33,0x0f,0x1f, - 0x00,0x3a,0x0c,0x17,0x0f,0x2b,0x10,0x02,0x00,0x37,0x10,0x20,0x10,0x10,0x11,0x0a, - 0x00,0x10,0x12,0x0b,0x00,0x3e,0x10,0x03,0x00,0x3c,0x10,0x00,0x00,0x3e,0x0d,0x03, - 0x01,0x54,0x0a,0x27,0x80,0x0f,0x00,0x09,0x00,0x54,0x0a,0x07,0x80,0x33,0x0a,0x21, - 0x00,0x3a,0x04,0x1b,0x0a,0x37,0x0b,0x1d,0x05,0x3a,0x0b,0x1c,0x0a,0x3a,0x0a,0x02, - 0x00,0x30,0x03,0x20,0x80,0x54,0x0a,0x1e,0x80,0x0b,0x09,0x00,0x00,0x54,0x0a,0x04, - 0x80,0x0f,0x00,0x02,0x00,0x54,0x0a,0x02,0x80,0x30,0x03,0x1a,0x80,0x54,0x0a,0x18, - 0x80,0x0b,0x09,0x01,0x00,0x54,0x0a,0x16,0x80,0x29,0x02,0x01,0x00,0x54,0x08,0x14, - 0x80,0x2b,0x08,0x03,0x00,0x25,0x09,0x22,0x00,0x10,0x0a,0x04,0x00,0x24,0x09,0x0a, - 0x09,0x3e,0x08,0x02,0x01,0x2b,0x08,0x02,0x00,0x37,0x08,0x1e,0x08,0x37,0x09,0x00, - 0x00,0x33,0x0a,0x23,0x00,0x33,0x0b,0x24,0x00,0x3a,0x04,0x1b,0x0b,0x37,0x0c,0x1d, - 0x05,0x3a,0x0c,0x1c,0x0b,0x3a,0x0b,0x17,0x0a,0x2b,0x0b,0x02,0x00,0x37,0x0b,0x20, - 0x0b,0x27,0x0c,0x04,0x00,0x3e,0x0b,0x02,0x00,0x3c,0x0b,0x00,0x00,0x3e,0x08,0x03, - 0x01,0x30,0x03,0x80,0x7f,0x29,0x03,0x00,0x00,0x3a,0x03,0x06,0x00,0x25,0x03,0x25, - 0x00,0x3a,0x03,0x03,0x00,0x37,0x03,0x00,0x00,0x10,0x04,0x03,0x00,0x37,0x03,0x01, - 0x03,0x27,0x05,0x00,0x00,0x3e,0x03,0x03,0x01,0x30,0x00,0x00,0x80,0x47,0x00,0x01, - 0x00,0x02,0xc0,0x07,0xc0,0x05,0xc0,0x09,0xc0,0x16,0xc0,0x06,0xc0,0x01,0xc0,0x0c, - 0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x01,0x00,0x00,0x01,0x00,0x01,0x08,0x74,0x61, - 0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x1a,0x47,0x6f,0x74,0x20,0x75, - 0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x3a,0x20, - 0x01,0x00,0x00,0x0f,0x6d,0x61,0x6b,0x65,0x5f,0x65,0x72,0x72,0x6f,0x72,0x01,0x00, - 0x01,0x08,0x74,0x61,0x67,0x0d,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0d,0x73, - 0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x06,0x69,0x13,0x74,0x72,0x61,0x6e,0x73,0x61, - 0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x0c,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, - 0x1f,0x43,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x25,0x73,0x20,0x63,0x61,0x75,0x73, - 0x65,0x64,0x3a,0x20,0x28,0x25,0x64,0x29,0x20,0x25,0x73,0x0a,0x45,0x52,0x52,0x4f, - 0x52,0x0d,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x09,0x61,0x74,0x74,0x72,0x0c, - 0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x09,0x63,0x6f,0x64,0x65,0x17,0x44,0x42,0x47, - 0x50,0x5f,0x45,0x52,0x52,0x5f,0x4d,0x45,0x54,0x41,0x54,0x41,0x42,0x4c,0x45,0x11, - 0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0a,0x74,0x61,0x62, - 0x6c,0x65,0x09,0x74,0x79,0x70,0x65,0x0e,0x74,0x72,0x61,0x63,0x65,0x62,0x61,0x63, - 0x6b,0x00,0x0b,0x78,0x70,0x63,0x61,0x6c,0x6c,0x0e,0x63,0x6d,0x64,0x5f,0x70,0x61, - 0x72,0x73,0x65,0x0a,0x44,0x45,0x42,0x55,0x47,0x1d,0x6c,0x6f,0x73,0x74,0x20,0x64, - 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69, - 0x6f,0x6e,0x0c,0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x10,0x72,0x65,0x61,0x64,0x5f, - 0x70,0x61,0x63,0x6b,0x65,0x74,0x09,0x63,0x6f,0x72,0x6f,0x13,0x43,0x6f,0x6e,0x74, - 0x65,0x78,0x74,0x4d,0x61,0x6e,0x61,0x67,0x65,0x72,0x0a,0x73,0x74,0x61,0x63,0x6b, - 0x1e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78, - 0x74,0x5f,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x0a,0x62,0x72,0x65,0x61,0x6b, - 0x0a,0x73,0x74,0x61,0x74,0x65,0x15,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f, - 0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0f,0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f, - 0x75,0x74,0x08,0x73,0x6b,0x74,0x03,0x80,0x80,0xc0,0x99,0x04,0xf5,0x03,0x00,0x01, - 0x09,0x08,0x11,0x00,0x53,0x2a,0x01,0x02,0x00,0x2b,0x03,0x00,0x00,0x37,0x03,0x00, - 0x03,0x04,0x03,0x00,0x00,0x54,0x03,0x21,0x80,0x2b,0x03,0x00,0x00,0x37,0x03,0x01, - 0x03,0x37,0x03,0x02,0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x02,0x0a,0x03,0x00, - 0x00,0x54,0x03,0x1a,0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x03,0x03,0x10,0x04,0x03, - 0x00,0x37,0x03,0x04,0x03,0x27,0x05,0x00,0x00,0x25,0x06,0x05,0x00,0x3e,0x03,0x04, - 0x02,0x2b,0x04,0x02,0x00,0x37,0x04,0x06,0x04,0x37,0x05,0x07,0x03,0x3e,0x04,0x02, - 0x02,0x0f,0x00,0x04,0x00,0x54,0x05,0x0d,0x80,0x2b,0x05,0x03,0x00,0x04,0x04,0x05, - 0x00,0x54,0x05,0x0a,0x80,0x2b,0x05,0x04,0x00,0x04,0x04,0x05,0x00,0x54,0x05,0x07, - 0x80,0x2b,0x05,0x00,0x00,0x37,0x05,0x01,0x05,0x37,0x05,0x08,0x05,0x10,0x06,0x04, - 0x00,0x10,0x07,0x00,0x00,0x3e,0x05,0x03,0x02,0x10,0x01,0x05,0x00,0x0e,0x00,0x01, - 0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x00,0x00,0x37,0x03,0x09,0x03,0x37,0x03,0x0a, - 0x03,0x10,0x04,0x00,0x00,0x3e,0x03,0x02,0x02,0x10,0x01,0x03,0x00,0x0f,0x00,0x01, - 0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x00,0x00,0x3a,0x00,0x00,0x03,0x2b,0x03,0x00, - 0x00,0x37,0x03,0x09,0x03,0x37,0x03,0x0b,0x03,0x3e,0x03,0x01,0x01,0x0e,0x00,0x01, - 0x00,0x54,0x03,0x09,0x80,0x2b,0x03,0x05,0x00,0x37,0x03,0x0c,0x03,0x2b,0x04,0x01, - 0x00,0x37,0x04,0x0d,0x04,0x3e,0x03,0x02,0x02,0x10,0x02,0x03,0x00,0x0f,0x00,0x02, - 0x00,0x54,0x03,0x01,0x80,0x29,0x01,0x02,0x00,0x0f,0x00,0x01,0x00,0x54,0x03,0x0f, - 0x80,0x2b,0x03,0x00,0x00,0x3a,0x00,0x00,0x03,0x34,0x03,0x0e,0x00,0x2b,0x04,0x06, - 0x00,0x2b,0x05,0x01,0x00,0x10,0x06,0x02,0x00,0x3e,0x03,0x04,0x03,0x0e,0x00,0x03, - 0x00,0x54,0x05,0x06,0x80,0x2b,0x05,0x07,0x00,0x25,0x06,0x0f,0x00,0x25,0x07,0x10, - 0x00,0x10,0x08,0x04,0x00,0x24,0x07,0x08,0x07,0x3e,0x05,0x03,0x01,0x47,0x00,0x01, - 0x00,0x02,0xc0,0x12,0x80,0x04,0xc0,0x10,0x80,0x11,0x80,0x05,0xc0,0x17,0xc0,0x09, - 0xc0,0x1d,0x45,0x72,0x72,0x6f,0x72,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x64,0x65, - 0x62,0x75,0x67,0x20,0x6c,0x6f,0x6f,0x70,0x3a,0x20,0x0a,0x45,0x52,0x52,0x4f,0x52, - 0x0a,0x70,0x63,0x61,0x6c,0x6c,0x08,0x73,0x6b,0x74,0x10,0x72,0x65,0x61,0x64,0x5f, - 0x70,0x61,0x63,0x6b,0x65,0x74,0x0c,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x0f,0x64, - 0x6f,0x65,0x73,0x5f,0x6d,0x61,0x74,0x63,0x68,0x0b,0x65,0x76,0x65,0x6e,0x74,0x73, - 0x07,0x61,0x74,0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x0c,0x67,0x65,0x74,0x5f,0x75, - 0x72,0x69,0x06,0x53,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x09,0x63,0x6f,0x72, - 0x6f,0x0a,0x67,0x75,0x65,0x73,0x73,0x10,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, - 0x6e,0x74,0x73,0x14,0x70,0x72,0x65,0x76,0x5f,0x62,0x72,0x65,0x61,0x6b,0x5f,0x6c, - 0x69,0x6e,0x65,0x2f,0x00,0x01,0x03,0x02,0x00,0x00,0x09,0x51,0x01,0x07,0x80,0x2b, - 0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x01,0x2b,0x01,0x01,0x00,0x3e, - 0x01,0x01,0x02,0x10,0x00,0x01,0x00,0x54,0x01,0xf8,0x7f,0x47,0x00,0x01,0x00,0x18, - 0xc0,0x0d,0xc0,0xa7,0x02,0x00,0x02,0x07,0x07,0x08,0x01,0x34,0x2b,0x02,0x00,0x00, - 0x3e,0x02,0x01,0x02,0x0e,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x00,0x00, - 0x07,0x00,0x01,0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x01,0x00,0x2b,0x04,0x01,0x00, - 0x36,0x04,0x02,0x04,0x14,0x04,0x00,0x04,0x39,0x04,0x02,0x03,0x54,0x03,0x26,0x80, - 0x07,0x00,0x02,0x00,0x54,0x03,0x01,0x80,0x54,0x03,0x23,0x80,0x06,0x00,0x03,0x00, - 0x54,0x03,0x02,0x80,0x07,0x00,0x04,0x00,0x54,0x03,0x06,0x80,0x2b,0x03,0x01,0x00, - 0x2b,0x04,0x01,0x00,0x36,0x04,0x02,0x04,0x15,0x04,0x00,0x04,0x39,0x04,0x02,0x03, - 0x54,0x03,0x19,0x80,0x2b,0x03,0x02,0x00,0x2b,0x04,0x03,0x00,0x37,0x04,0x06,0x04, - 0x2b,0x05,0x00,0x00,0x3e,0x05,0x01,0x00,0x3d,0x04,0x00,0x02,0x3a,0x04,0x05,0x03, - 0x2b,0x03,0x02,0x00,0x37,0x03,0x05,0x03,0x38,0x03,0x01,0x03,0x07,0x03,0x00,0x00, - 0x54,0x03,0x04,0x80,0x2b,0x03,0x04,0x00,0x10,0x04,0x01,0x00,0x3e,0x03,0x02,0x01, - 0x54,0x03,0x06,0x80,0x34,0x03,0x07,0x00,0x2b,0x04,0x05,0x00,0x2b,0x05,0x06,0x00, - 0x10,0x06,0x01,0x00,0x3e,0x04,0x03,0x00,0x3d,0x03,0x00,0x01,0x2b,0x03,0x02,0x00, - 0x29,0x04,0x00,0x00,0x3a,0x04,0x05,0x03,0x47,0x00,0x01,0x00,0x0a,0xc0,0x15,0xc0, - 0x12,0x80,0x03,0xc0,0x18,0xc0,0x0e,0xc0,0x19,0xc0,0x0b,0x61,0x73,0x73,0x65,0x72, - 0x74,0x12,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x09, - 0x63,0x6f,0x72,0x6f,0x10,0x74,0x61,0x69,0x6c,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, - 0x0b,0x72,0x65,0x74,0x75,0x72,0x6e,0x0e,0x74,0x61,0x69,0x6c,0x20,0x63,0x61,0x6c, - 0x6c,0x09,0x63,0x61,0x6c,0x6c,0x09,0x6d,0x61,0x69,0x6e,0x02,0xfc,0x02,0x00,0x02, - 0x07,0x08,0x0d,0x02,0x45,0x2b,0x02,0x00,0x00,0x3e,0x02,0x01,0x02,0x0e,0x00,0x02, - 0x00,0x54,0x03,0x01,0x80,0x25,0x02,0x00,0x00,0x07,0x00,0x01,0x00,0x54,0x03,0x0f, - 0x80,0x2b,0x03,0x01,0x00,0x37,0x03,0x02,0x03,0x27,0x04,0x02,0x00,0x25,0x05,0x03, - 0x00,0x3e,0x03,0x03,0x02,0x37,0x03,0x04,0x03,0x07,0x03,0x05,0x00,0x54,0x03,0x01, - 0x80,0x47,0x00,0x01,0x00,0x2b,0x03,0x02,0x00,0x2b,0x04,0x02,0x00,0x36,0x04,0x02, - 0x04,0x14,0x04,0x00,0x04,0x39,0x04,0x02,0x03,0x54,0x03,0x2e,0x80,0x06,0x00,0x06, - 0x00,0x54,0x03,0x02,0x80,0x07,0x00,0x07,0x00,0x54,0x03,0x0f,0x80,0x27,0x03,0x02, - 0x00,0x2b,0x04,0x01,0x00,0x37,0x04,0x02,0x04,0x10,0x05,0x03,0x00,0x25,0x06,0x08, - 0x00,0x3e,0x04,0x03,0x02,0x0f,0x00,0x04,0x00,0x54,0x05,0x03,0x80,0x51,0x04,0x02, - 0x80,0x14,0x03,0x00,0x03,0x54,0x04,0xf6,0x7f,0x2b,0x04,0x02,0x00,0x15,0x05,0x01, - 0x03,0x39,0x05,0x02,0x04,0x54,0x03,0x1b,0x80,0x07,0x00,0x09,0x00,0x54,0x03,0x19, - 0x80,0x2b,0x03,0x03,0x00,0x2b,0x04,0x04,0x00,0x37,0x04,0x0b,0x04,0x2b,0x05,0x00, - 0x00,0x3e,0x05,0x01,0x00,0x3d,0x04,0x00,0x02,0x3a,0x04,0x0a,0x03,0x2b,0x03,0x03, - 0x00,0x37,0x03,0x0a,0x03,0x38,0x03,0x01,0x03,0x07,0x03,0x00,0x00,0x54,0x03,0x04, - 0x80,0x2b,0x03,0x05,0x00,0x10,0x04,0x01,0x00,0x3e,0x03,0x02,0x01,0x54,0x03,0x06, - 0x80,0x34,0x03,0x0c,0x00,0x2b,0x04,0x06,0x00,0x2b,0x05,0x07,0x00,0x10,0x06,0x01, - 0x00,0x3e,0x04,0x03,0x00,0x3d,0x03,0x00,0x01,0x2b,0x03,0x03,0x00,0x29,0x04,0x00, - 0x00,0x3a,0x04,0x0a,0x03,0x47,0x00,0x01,0x00,0x0a,0xc0,0x01,0xc0,0x15,0xc0,0x12, - 0x80,0x03,0xc0,0x18,0xc0,0x0e,0xc0,0x19,0xc0,0x0b,0x61,0x73,0x73,0x65,0x72,0x74, - 0x12,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x09,0x63, - 0x6f,0x72,0x6f,0x09,0x6c,0x69,0x6e,0x65,0x06,0x66,0x10,0x74,0x61,0x69,0x6c,0x20, - 0x72,0x65,0x74,0x75,0x72,0x6e,0x0b,0x72,0x65,0x74,0x75,0x72,0x6e,0x06,0x43,0x09, - 0x77,0x68,0x61,0x74,0x06,0x53,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x09,0x63, - 0x61,0x6c,0x6c,0x09,0x6d,0x61,0x69,0x6e,0x02,0x04,0x96,0x01,0x02,0x01,0x04,0x03, - 0x04,0x00,0x18,0x2b,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x07, - 0x01,0x00,0x00,0x54,0x01,0x11,0x80,0x2b,0x01,0x01,0x00,0x37,0x01,0x01,0x01,0x37, - 0x01,0x02,0x01,0x36,0x01,0x00,0x01,0x2b,0x02,0x01,0x00,0x37,0x02,0x01,0x02,0x37, - 0x02,0x03,0x02,0x29,0x03,0x00,0x00,0x39,0x03,0x01,0x02,0x2b,0x02,0x01,0x00,0x37, - 0x02,0x01,0x02,0x37,0x02,0x02,0x02,0x29,0x03,0x00,0x00,0x39,0x03,0x00,0x02,0x2b, - 0x02,0x02,0x00,0x29,0x03,0x00,0x00,0x39,0x03,0x00,0x02,0x43,0x01,0x01,0x00,0x45, - 0x01,0x00,0x00,0x0c,0x00,0x0d,0x00,0x07,0x00,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69, - 0x64,0x0e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72,0x6f,0x16,0x61,0x63,0x74,0x69, - 0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x09,0x64,0x65, - 0x61,0x64,0xea,0x01,0x02,0x01,0x06,0x06,0x06,0x01,0x29,0x2b,0x01,0x00,0x00,0x36, - 0x01,0x00,0x01,0x0e,0x00,0x01,0x00,0x54,0x01,0x1e,0x80,0x2b,0x01,0x00,0x00,0x27, - 0x02,0x00,0x00,0x39,0x02,0x00,0x01,0x2b,0x01,0x01,0x00,0x37,0x01,0x00,0x01,0x2b, - 0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x14,0x02,0x00,0x02,0x3a, - 0x02,0x01,0x01,0x2b,0x01,0x01,0x00,0x37,0x01,0x00,0x01,0x37,0x01,0x02,0x01,0x2b, - 0x02,0x01,0x00,0x37,0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x39,0x00,0x02,0x01,0x2b, - 0x01,0x01,0x00,0x37,0x01,0x00,0x01,0x37,0x01,0x03,0x01,0x2b,0x02,0x01,0x00,0x37, - 0x02,0x00,0x02,0x37,0x02,0x01,0x02,0x39,0x02,0x00,0x01,0x2b,0x01,0x02,0x00,0x37, - 0x01,0x04,0x01,0x10,0x02,0x00,0x00,0x2b,0x03,0x03,0x00,0x25,0x04,0x05,0x00,0x3e, - 0x01,0x04,0x01,0x2b,0x01,0x04,0x00,0x10,0x02,0x00,0x00,0x2b,0x03,0x05,0x00,0x10, - 0x04,0x00,0x00,0x43,0x05,0x01,0x00,0x3d,0x03,0x01,0x00,0x3f,0x01,0x01,0x00,0x07, - 0x00,0x0d,0x00,0x04,0x00,0x0b,0x00,0x15,0xc0,0x0e,0x00,0x08,0x72,0x6c,0x63,0x0c, - 0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x0e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72, - 0x6f,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x06,0x6e,0x16,0x61,0x63,0x74,0x69, - 0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x02,0x29,0x02, - 0x01,0x03,0x00,0x01,0x00,0x07,0x0e,0x00,0x00,0x00,0x54,0x01,0x03,0x80,0x34,0x01, - 0x00,0x00,0x43,0x02,0x01,0x02,0x3e,0x01,0x02,0x01,0x43,0x01,0x01,0x00,0x45,0x01, - 0x00,0x00,0x0a,0x65,0x72,0x72,0x6f,0x72,0x38,0x02,0x00,0x04,0x02,0x02,0x00,0x07, - 0x2b,0x00,0x00,0x00,0x34,0x01,0x00,0x00,0x37,0x01,0x01,0x01,0x2b,0x02,0x01,0x00, - 0x43,0x03,0x00,0x00,0x3d,0x01,0x01,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x01,0xc0, - 0x0b,0x72,0x65,0x73,0x75,0x6d,0x65,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, - 0x65,0x37,0x01,0x01,0x03,0x01,0x03,0x00,0x07,0x34,0x01,0x00,0x00,0x37,0x01,0x01, - 0x01,0x10,0x02,0x00,0x00,0x3e,0x01,0x02,0x02,0x31,0x02,0x02,0x00,0x30,0x00,0x00, - 0x80,0x48,0x02,0x02,0x00,0x16,0xc0,0x00,0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x0e, - 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x93,0x0d,0x01,0x07,0x1a,0x0f,0x3f, - 0x01,0xf4,0x01,0x0c,0x07,0x00,0x00,0x54,0x07,0x07,0x80,0x34,0x07,0x00,0x00,0x37, - 0x07,0x01,0x07,0x25,0x08,0x02,0x00,0x3e,0x07,0x02,0x02,0x0e,0x00,0x07,0x00,0x54, - 0x08,0x01,0x80,0x25,0x07,0x03,0x00,0x0c,0x08,0x01,0x00,0x54,0x08,0x07,0x80,0x34, - 0x08,0x00,0x00,0x37,0x08,0x01,0x08,0x25,0x09,0x04,0x00,0x3e,0x08,0x02,0x02,0x0e, - 0x00,0x08,0x00,0x54,0x09,0x01,0x80,0x25,0x08,0x05,0x00,0x0c,0x09,0x02,0x00,0x54, - 0x09,0x07,0x80,0x34,0x09,0x00,0x00,0x37,0x09,0x01,0x09,0x25,0x0a,0x06,0x00,0x3e, - 0x09,0x02,0x02,0x0e,0x00,0x09,0x00,0x54,0x0a,0x01,0x80,0x25,0x09,0x07,0x00,0x0c, - 0x0a,0x04,0x00,0x54,0x0a,0x07,0x80,0x34,0x0a,0x00,0x00,0x37,0x0a,0x01,0x0a,0x25, - 0x0b,0x08,0x00,0x3e,0x0a,0x02,0x02,0x0e,0x00,0x0a,0x00,0x54,0x0b,0x01,0x80,0x29, - 0x0a,0x00,0x00,0x0c,0x0b,0x05,0x00,0x54,0x0b,0x07,0x80,0x34,0x0b,0x00,0x00,0x37, - 0x0b,0x01,0x0b,0x25,0x0c,0x09,0x00,0x3e,0x0b,0x02,0x02,0x0e,0x00,0x0b,0x00,0x54, - 0x0c,0x01,0x80,0x29,0x0b,0x00,0x00,0x2b,0x0c,0x00,0x00,0x37,0x0c,0x0a,0x0c,0x10, - 0x0d,0x0a,0x00,0x10,0x0e,0x0b,0x00,0x10,0x0f,0x06,0x00,0x3e,0x0c,0x04,0x01,0x0c, - 0x0c,0x03,0x00,0x54,0x0c,0x07,0x80,0x34,0x0c,0x00,0x00,0x37,0x0c,0x01,0x0c,0x25, - 0x0d,0x0b,0x00,0x3e,0x0c,0x02,0x02,0x0e,0x00,0x0c,0x00,0x54,0x0d,0x01,0x80,0x25, - 0x0c,0x0c,0x00,0x34,0x0d,0x0d,0x00,0x10,0x0e,0x0c,0x00,0x3e,0x0d,0x02,0x02,0x2b, - 0x0e,0x01,0x00,0x2b,0x0f,0x01,0x00,0x2b,0x10,0x01,0x00,0x37,0x11,0x0e,0x0d,0x37, - 0x12,0x0f,0x0d,0x37,0x13,0x10,0x0d,0x3a,0x13,0x10,0x10,0x3a,0x12,0x0f,0x0f,0x3a, - 0x11,0x0e,0x0e,0x34,0x0e,0x11,0x00,0x37,0x0f,0x12,0x0d,0x3e,0x0f,0x01,0x00,0x3d, - 0x0e,0x00,0x02,0x10,0x10,0x0e,0x00,0x37,0x0f,0x13,0x0e,0x29,0x11,0x00,0x00,0x3e, - 0x0f,0x03,0x01,0x2a,0x0f,0x10,0x00,0x34,0x11,0x14,0x00,0x34,0x12,0x15,0x00,0x37, - 0x12,0x16,0x12,0x25,0x13,0x17,0x00,0x2b,0x14,0x02,0x00,0x3e,0x12,0x03,0x00,0x3d, - 0x11,0x00,0x01,0x34,0x11,0x14,0x00,0x34,0x12,0x15,0x00,0x37,0x12,0x16,0x12,0x25, - 0x13,0x18,0x00,0x10,0x14,0x07,0x00,0x10,0x15,0x08,0x00,0x3e,0x12,0x04,0x00,0x3d, - 0x11,0x00,0x01,0x10,0x12,0x0e,0x00,0x37,0x11,0x19,0x0e,0x10,0x13,0x07,0x00,0x10, - 0x14,0x08,0x00,0x3e,0x11,0x04,0x03,0x10,0x10,0x12,0x00,0x10,0x0f,0x11,0x00,0x27, - 0x11,0x01,0x00,0x27,0x12,0x04,0x00,0x27,0x13,0x01,0x00,0x49,0x11,0x1a,0x80,0x0f, - 0x00,0x0f,0x00,0x54,0x15,0x05,0x80,0x34,0x15,0x14,0x00,0x25,0x16,0x1a,0x00,0x3e, - 0x15,0x02,0x01,0x54,0x11,0x14,0x80,0x54,0x15,0x12,0x80,0x37,0x15,0x1b,0x0d,0x28, - 0x16,0x00,0x00,0x3e,0x15,0x02,0x01,0x34,0x15,0x14,0x00,0x34,0x16,0x15,0x00,0x37, - 0x16,0x16,0x16,0x25,0x17,0x1c,0x00,0x10,0x18,0x07,0x00,0x10,0x19,0x08,0x00,0x3e, - 0x16,0x04,0x00,0x3d,0x15,0x00,0x01,0x10,0x16,0x0e,0x00,0x37,0x15,0x19,0x0e,0x10, - 0x17,0x07,0x00,0x10,0x18,0x08,0x00,0x3e,0x15,0x04,0x03,0x10,0x10,0x16,0x00,0x10, - 0x0f,0x15,0x00,0x4b,0x11,0xe6,0x7f,0x0f,0x00,0x10,0x00,0x54,0x11,0x09,0x80,0x34, - 0x11,0x1d,0x00,0x34,0x12,0x15,0x00,0x37,0x12,0x16,0x12,0x25,0x13,0x1e,0x00,0x10, - 0x14,0x07,0x00,0x10,0x15,0x08,0x00,0x10,0x16,0x10,0x00,0x3e,0x12,0x05,0x00,0x3d, - 0x11,0x00,0x01,0x2b,0x11,0x00,0x00,0x37,0x11,0x1f,0x11,0x2b,0x12,0x04,0x00,0x37, - 0x12,0x20,0x12,0x27,0x13,0x01,0x00,0x3e,0x12,0x02,0x02,0x37,0x12,0x21,0x12,0x3e, - 0x11,0x02,0x02,0x2c,0x03,0x11,0x00,0x2b,0x11,0x00,0x00,0x37,0x11,0x1f,0x11,0x2b, - 0x12,0x04,0x00,0x37,0x12,0x20,0x12,0x37,0x13,0x12,0x0d,0x3e,0x12,0x02,0x02,0x37, - 0x12,0x21,0x12,0x3e,0x11,0x02,0x02,0x2c,0x05,0x11,0x00,0x29,0x11,0x00,0x00,0x27, - 0x12,0x02,0x00,0x34,0x13,0x22,0x00,0x37,0x13,0x23,0x13,0x27,0x14,0x01,0x00,0x49, - 0x12,0x0e,0x80,0x2b,0x16,0x04,0x00,0x37,0x16,0x20,0x16,0x10,0x17,0x15,0x00,0x3e, - 0x16,0x02,0x02,0x0e,0x00,0x16,0x00,0x54,0x17,0x01,0x80,0x54,0x12,0x07,0x80,0x2b, - 0x17,0x00,0x00,0x37,0x17,0x1f,0x17,0x37,0x18,0x21,0x16,0x3e,0x17,0x02,0x02,0x0c, - 0x11,0x17,0x00,0x54,0x18,0x00,0x80,0x4b,0x12,0xf2,0x7f,0x0e,0x00,0x11,0x00,0x54, - 0x12,0x01,0x80,0x25,0x11,0x24,0x00,0x2b,0x12,0x06,0x00,0x3e,0x12,0x01,0x02,0x0e, - 0x00,0x12,0x00,0x54,0x13,0x01,0x80,0x25,0x12,0x25,0x00,0x2b,0x13,0x07,0x00,0x27, - 0x14,0x01,0x00,0x39,0x14,0x12,0x13,0x34,0x13,0x26,0x00,0x34,0x14,0x00,0x00,0x37, - 0x14,0x27,0x14,0x3e,0x14,0x01,0x00,0x3d,0x13,0x00,0x02,0x25,0x14,0x28,0x00,0x34, - 0x15,0x26,0x00,0x10,0x16,0x12,0x00,0x3e,0x15,0x02,0x02,0x24,0x13,0x15,0x13,0x2b, - 0x14,0x08,0x00,0x37,0x14,0x29,0x14,0x10,0x15,0x0e,0x00,0x33,0x16,0x2a,0x00,0x33, - 0x17,0x2b,0x00,0x3a,0x09,0x2c,0x17,0x3a,0x13,0x2d,0x17,0x34,0x18,0x26,0x00,0x10, - 0x19,0x12,0x00,0x3e,0x18,0x02,0x02,0x3a,0x18,0x2e,0x17,0x3a,0x11,0x2f,0x17,0x3a, - 0x17,0x30,0x16,0x3e,0x14,0x03,0x01,0x33,0x14,0x31,0x00,0x3a,0x0e,0x32,0x14,0x3a, - 0x13,0x33,0x14,0x2b,0x15,0x01,0x00,0x37,0x15,0x34,0x15,0x2b,0x16,0x06,0x00,0x3e, - 0x15,0x02,0x02,0x3a,0x15,0x35,0x14,0x2c,0x09,0x14,0x00,0x2b,0x15,0x0a,0x00,0x10, - 0x16,0x14,0x00,0x3e,0x15,0x02,0x01,0x2b,0x15,0x04,0x00,0x37,0x15,0x36,0x15,0x2b, - 0x16,0x0b,0x00,0x25,0x17,0x37,0x00,0x3e,0x15,0x03,0x01,0x31,0x15,0x38,0x00,0x34, - 0x16,0x39,0x00,0x31,0x17,0x3b,0x00,0x3a,0x17,0x3a,0x16,0x31,0x16,0x3c,0x00,0x34, - 0x17,0x39,0x00,0x31,0x18,0x3e,0x00,0x3a,0x18,0x3d,0x17,0x30,0x00,0x00,0x80,0x48, - 0x14,0x02,0x00,0x04,0xc0,0x03,0xc0,0x00,0xc0,0x10,0x80,0x01,0xc0,0x11,0x80,0x0a, - 0xc0,0x15,0xc0,0x05,0xc0,0x12,0x80,0x17,0xc0,0x1a,0x80,0x0f,0xc0,0x02,0xc0,0x0e, - 0xc0,0x00,0x09,0x77,0x72,0x61,0x70,0x00,0x00,0x0b,0x72,0x65,0x73,0x75,0x6d,0x65, - 0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x00,0x08,0x72,0x6c,0x63,0x0c, - 0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x09,0x63,0x6f,0x72,0x6f,0x12,0x43,0x75,0x72, - 0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x07,0x69,0x64,0x08,0x73,0x6b, - 0x74,0x01,0x00,0x01,0x0a,0x73,0x74,0x61,0x74,0x65,0x0d,0x73,0x74,0x61,0x72,0x74, - 0x69,0x6e,0x67,0x09,0x61,0x74,0x74,0x72,0x0c,0x66,0x69,0x6c,0x65,0x75,0x72,0x69, - 0x0b,0x74,0x68,0x72,0x65,0x61,0x64,0x0c,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x0b, - 0x69,0x64,0x65,0x6b,0x65,0x79,0x01,0x00,0x04,0x0d,0x6c,0x61,0x6e,0x67,0x75,0x61, - 0x67,0x65,0x08,0x4c,0x75,0x61,0x0b,0x70,0x61,0x72,0x65,0x6e,0x74,0x05,0x0a,0x61, - 0x70,0x70,0x69,0x64,0x0d,0x4c,0x75,0x61,0x20,0x44,0x42,0x47,0x70,0x15,0x70,0x72, - 0x6f,0x74,0x6f,0x63,0x6f,0x6c,0x5f,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x08,0x31, - 0x2e,0x30,0x01,0x00,0x01,0x08,0x74,0x61,0x67,0x09,0x69,0x6e,0x69,0x74,0x0d,0x73, - 0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x06,0x5f,0x09,0x74,0x69,0x6d,0x65,0x0d,0x74, - 0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x09,0x6d,0x61,0x69,0x6e,0x0e,0x75,0x6e,0x6b, - 0x6e,0x6f,0x77,0x6e,0x3a,0x2f,0x09,0x68,0x75,0x67,0x65,0x09,0x6d,0x61,0x74,0x68, - 0x0b,0x73,0x6f,0x75,0x72,0x63,0x65,0x0c,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x0c, - 0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x21,0x43,0x61,0x6e,0x6e,0x6f,0x74,0x20,0x63, - 0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x6f,0x20,0x25,0x73,0x3a,0x25,0x64,0x20, - 0x3a,0x20,0x25,0x73,0x0a,0x65,0x72,0x72,0x6f,0x72,0x30,0x44,0x65,0x62,0x75,0x67, - 0x67,0x65,0x72,0x3a,0x20,0x52,0x65,0x74,0x72,0x79,0x69,0x6e,0x67,0x20,0x74,0x6f, - 0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x6f,0x20,0x25,0x73,0x3a,0x25, - 0x73,0x20,0x2e,0x2e,0x2e,0x20,0x0a,0x73,0x6c,0x65,0x65,0x70,0x22,0x44,0x65,0x62, - 0x75,0x67,0x67,0x65,0x72,0x3a,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f, - 0x6e,0x20,0x73,0x75,0x63,0x63,0x65,0x65,0x64,0x2e,0x0c,0x63,0x6f,0x6e,0x6e,0x65, - 0x63,0x74,0x2e,0x44,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x3a,0x20,0x54,0x72,0x79, - 0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74, - 0x6f,0x20,0x25,0x73,0x3a,0x25,0x73,0x20,0x2e,0x2e,0x2e,0x20,0x11,0x44,0x65,0x62, - 0x75,0x67,0x67,0x65,0x72,0x20,0x76,0x25,0x73,0x0b,0x66,0x6f,0x72,0x6d,0x61,0x74, - 0x0b,0x73,0x74,0x72,0x69,0x6e,0x67,0x0a,0x70,0x72,0x69,0x6e,0x74,0x0f,0x73,0x65, - 0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x0b,0x63,0x72,0x65,0x61,0x74,0x65,0x0b, - 0x61,0x73,0x73,0x65,0x72,0x74,0x0a,0x75,0x6e,0x62,0x36,0x34,0x0b,0x72,0x61,0x77, - 0x62,0x36,0x34,0x08,0x62,0x36,0x34,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x21, + +/* debugger */ +static const char lua_m_debugger[] = { + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a, + 0x2d,0x2d,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29, + 0x20,0x32,0x30,0x31,0x31,0x2d,0x32,0x30,0x31,0x32,0x20,0x53,0x69,0x65,0x72,0x72, + 0x61,0x20,0x57,0x69,0x72,0x65,0x6c,0x65,0x73,0x73,0x20,0x61,0x6e,0x64,0x20,0x6f, + 0x74,0x68,0x65,0x72,0x73,0x2e,0x0a,0x2d,0x2d,0x20,0x41,0x6c,0x6c,0x20,0x72,0x69, + 0x67,0x68,0x74,0x73,0x20,0x72,0x65,0x73,0x65,0x72,0x76,0x65,0x64,0x2e,0x20,0x54, + 0x68,0x69,0x73,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,0x61,0x6e,0x64,0x20, + 0x74,0x68,0x65,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70,0x61,0x6e,0x79,0x69,0x6e,0x67, + 0x20,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x73,0x0a,0x2d,0x2d,0x20,0x61,0x72, + 0x65,0x20,0x6d,0x61,0x64,0x65,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65, + 0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x74,0x65,0x72,0x6d,0x73, + 0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x45,0x63,0x6c,0x69,0x70,0x73,0x65,0x20, + 0x50,0x75,0x62,0x6c,0x69,0x63,0x20,0x4c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x76, + 0x31,0x2e,0x30,0x0a,0x2d,0x2d,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x61,0x63,0x63, + 0x6f,0x6d,0x70,0x61,0x6e,0x69,0x65,0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x64,0x69, + 0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x61,0x6e,0x64,0x20, + 0x69,0x73,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x61,0x74,0x0a, + 0x2d,0x2d,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x65,0x63, + 0x6c,0x69,0x70,0x73,0x65,0x2e,0x6f,0x72,0x67,0x2f,0x6c,0x65,0x67,0x61,0x6c,0x2f, + 0x65,0x70,0x6c,0x2d,0x76,0x31,0x30,0x2e,0x68,0x74,0x6d,0x6c,0x0a,0x2d,0x2d,0x0a, + 0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x74,0x72,0x69,0x62,0x75,0x74,0x6f,0x72,0x73,0x3a, + 0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57, + 0x69,0x72,0x65,0x6c,0x65,0x73,0x73,0x20,0x2d,0x20,0x69,0x6e,0x69,0x74,0x69,0x61, + 0x6c,0x20,0x41,0x50,0x49,0x20,0x61,0x6e,0x64,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d, + 0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x44,0x65,0x62,0x75, + 0x67,0x67,0x65,0x72,0x20,0x75,0x73,0x69,0x6e,0x67,0x20,0x44,0x42,0x47,0x70,0x20, + 0x70,0x72,0x6f,0x74,0x6f,0x63,0x6f,0x6c,0x2e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x54,0x68,0x65, + 0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x73,0x20, + 0x61,0x20,0x73,0x69,0x6e,0x67,0x6c,0x65,0x20,0x69,0x6e,0x69,0x74,0x20,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x74,0x61,0x6b, + 0x65,0x73,0x20,0x36,0x20,0x70,0x61,0x72,0x61,0x6d,0x65,0x74,0x65,0x72,0x73,0x20, + 0x28,0x49,0x44,0x45,0x48,0x4f,0x53,0x54,0x2c,0x20,0x49,0x44,0x45,0x50,0x4f,0x52, + 0x54,0x2c,0x20,0x49,0x44,0x45,0x4b,0x45,0x59,0x2c,0x20,0x54,0x52,0x41,0x4e,0x53, + 0x50,0x4f,0x52,0x54,0x2c,0x20,0x50,0x4c,0x41,0x54,0x46,0x4f,0x52,0x4d,0x2c,0x20, + 0x57,0x4f,0x52,0x4b,0x49,0x4e,0x47,0x44,0x49,0x52,0x29,0x2e,0x0a,0x2d,0x2d,0x0a, + 0x2d,0x2d,0x20,0x49,0x44,0x45,0x48,0x4f,0x53,0x54,0x3a,0x20,0x74,0x68,0x65,0x20, + 0x68,0x6f,0x73,0x74,0x20,0x6e,0x61,0x6d,0x65,0x20,0x6f,0x72,0x20,0x74,0x68,0x65, + 0x20,0x69,0x70,0x20,0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x20,0x6f,0x66,0x20,0x74, + 0x68,0x65,0x20,0x44,0x42,0x47,0x50,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x28, + 0x73,0x6f,0x20,0x79,0x6f,0x75,0x72,0x20,0x69,0x64,0x65,0x29,0x0a,0x2d,0x2d,0x20, + 0x69,0x66,0x20,0x48,0x4f,0x53,0x54,0x20,0x69,0x73,0x20,0x6e,0x69,0x6c,0x2c,0x20, + 0x74,0x68,0x65,0x20,0x44,0x42,0x47,0x50,0x5f,0x49,0x44,0x45,0x48,0x4f,0x53,0x54, + 0x20,0x65,0x6e,0x76,0x20,0x76,0x61,0x72,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64, + 0x2e,0x0a,0x2d,0x2d,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x20,0x65,0x6e,0x76,0x20, + 0x76,0x61,0x72,0x20,0x69,0x73,0x20,0x6e,0x69,0x6c,0x2c,0x20,0x74,0x68,0x65,0x20, + 0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x27,0x31, + 0x32,0x37,0x2e,0x30,0x2e,0x30,0x2e,0x31,0x27,0x20,0x69,0x73,0x20,0x75,0x73,0x65, + 0x64,0x2e,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x49,0x44,0x45,0x50,0x4f,0x52,0x54, + 0x3a,0x20,0x74,0x68,0x65,0x20,0x70,0x6f,0x72,0x74,0x20,0x6f,0x66,0x20,0x74,0x68, + 0x65,0x20,0x44,0x42,0x47,0x50,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x28,0x6d, + 0x75,0x73,0x74,0x20,0x62,0x65,0x20,0x63,0x6f,0x6e,0x66,0x69,0x67,0x75,0x72,0x65, + 0x20,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x49,0x44,0x45,0x29,0x0a,0x2d,0x2d,0x20, + 0x69,0x66,0x20,0x50,0x4f,0x52,0x54,0x20,0x69,0x73,0x20,0x6e,0x69,0x6c,0x2c,0x20, + 0x74,0x68,0x65,0x20,0x44,0x42,0x47,0x50,0x5f,0x49,0x44,0x45,0x50,0x4f,0x52,0x54, + 0x20,0x65,0x6e,0x76,0x20,0x76,0x61,0x72,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64, + 0x2e,0x0a,0x2d,0x2d,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x20,0x65,0x6e,0x76,0x20, + 0x76,0x61,0x72,0x20,0x69,0x73,0x20,0x6e,0x69,0x6c,0x2c,0x20,0x74,0x68,0x65,0x20, + 0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x27,0x31, + 0x30,0x30,0x30,0x30,0x27,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x2e,0x0a,0x2d, + 0x2d,0x0a,0x2d,0x2d,0x20,0x49,0x44,0x45,0x49,0x44,0x45,0x4b,0x45,0x59,0x3a,0x20, + 0x61,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x69, + 0x73,0x20,0x75,0x73,0x65,0x64,0x20,0x61,0x73,0x20,0x73,0x65,0x73,0x73,0x69,0x6f, + 0x6e,0x20,0x6b,0x65,0x79,0x0a,0x2d,0x2d,0x20,0x69,0x66,0x20,0x49,0x44,0x45,0x4b, + 0x45,0x59,0x20,0x69,0x73,0x20,0x6e,0x69,0x6c,0x2c,0x20,0x74,0x68,0x65,0x20,0x44, + 0x42,0x47,0x50,0x5f,0x49,0x44,0x45,0x4b,0x45,0x59,0x20,0x65,0x6e,0x76,0x20,0x76, + 0x61,0x72,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x2e,0x0a,0x2d,0x2d,0x20,0x69, + 0x66,0x20,0x74,0x68,0x65,0x20,0x65,0x6e,0x76,0x20,0x76,0x61,0x72,0x20,0x69,0x73, + 0x20,0x6e,0x69,0x6c,0x2c,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x66,0x61,0x75,0x6c, + 0x74,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x27,0x6c,0x75,0x61,0x69,0x64,0x65,0x6b, + 0x65,0x79,0x27,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x2e,0x0a,0x2d,0x2d,0x0a, + 0x2d,0x2d,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x52,0x54,0x3a,0x20,0x28,0x61, + 0x64,0x76,0x61,0x6e,0x63,0x65,0x64,0x20,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c, + 0x20,0x70,0x61,0x72,0x61,0x6d,0x65,0x74,0x65,0x72,0x29,0x20,0x74,0x68,0x65,0x20, + 0x6d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x6e,0x61,0x6d,0x65,0x20,0x6f,0x66,0x20,0x77, + 0x68,0x69,0x63,0x68,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x20,0x74, + 0x68,0x65,0x20,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x20,0x69,0x6e,0x74, + 0x65,0x72,0x66,0x61,0x63,0x65,0x20,0x75,0x73,0x65,0x64,0x20,0x74,0x6f,0x20,0x64, + 0x6f,0x20,0x74,0x68,0x65,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e, + 0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72, + 0x2e,0x0a,0x2d,0x2d,0x20,0x62,0x79,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20, + 0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x75,0x73,0x65, + 0x20,0x61,0x6e,0x20,0x20,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x20,0x69,0x6d, + 0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x62,0x61,0x73, + 0x65,0x64,0x20,0x6f,0x6e,0x20,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74,0x2c, + 0x20,0x62,0x75,0x74,0x20,0x69,0x66,0x20,0x63,0x61,0x6e,0x20,0x6e,0x6f,0x74,0x20, + 0x75,0x73,0x65,0x20,0x69,0x74,0x2c,0x20,0x79,0x6f,0x75,0x20,0x63,0x6f,0x75,0x6c, + 0x64,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x20,0x6f,0x72,0x20,0x75, + 0x73,0x65,0x20,0x61,0x6e,0x6f,0x74,0x68,0x65,0x72,0x20,0x74,0x72,0x61,0x6e,0x73, + 0x70,0x6f,0x72,0x74,0x20,0x6c,0x61,0x79,0x65,0x72,0x20,0x69,0x6d,0x70,0x6c,0x65, + 0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x0a,0x2d,0x2d,0x20,0x69,0x66, + 0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x52,0x54,0x20,0x69,0x73,0x20,0x6e,0x69, + 0x6c,0x2c,0x20,0x74,0x68,0x65,0x20,0x44,0x42,0x47,0x50,0x5f,0x54,0x52,0x41,0x4e, + 0x53,0x50,0x4f,0x52,0x54,0x20,0x65,0x6e,0x76,0x20,0x76,0x61,0x72,0x20,0x69,0x73, + 0x20,0x75,0x73,0x65,0x64,0x2e,0x0a,0x2d,0x2d,0x20,0x69,0x66,0x20,0x74,0x68,0x65, + 0x20,0x65,0x6e,0x76,0x20,0x76,0x61,0x72,0x20,0x69,0x73,0x20,0x6e,0x69,0x6c,0x2c, + 0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x76,0x61,0x6c, + 0x75,0x65,0x20,0x27,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61, + 0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74, + 0x27,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x20,0x3a,0x20,0x74,0x68,0x69,0x73, + 0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20, + 0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x62, + 0x61,0x73,0x65,0x64,0x20,0x6f,0x6e,0x20,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65, + 0x74,0x2e,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x50,0x4c,0x41,0x54,0x46,0x4f,0x52, + 0x4d,0x3a,0x20,0x28,0x61,0x64,0x76,0x61,0x6e,0x63,0x65,0x64,0x20,0x6f,0x70,0x74, + 0x69,0x6f,0x6e,0x61,0x6c,0x20,0x70,0x61,0x72,0x61,0x6d,0x65,0x74,0x65,0x72,0x29, + 0x20,0x27,0x75,0x6e,0x69,0x78,0x27,0x20,0x6f,0x72,0x20,0x27,0x77,0x69,0x6e,0x33, + 0x32,0x27,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x77,0x68,0x69,0x63,0x68,0x20, + 0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x74,0x68,0x65,0x20,0x6b,0x69,0x6e,0x64,0x20, + 0x6f,0x66,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x6f,0x6e,0x20,0x77, + 0x68,0x69,0x63,0x68,0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d, + 0x20,0x74,0x6f,0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x69,0x73,0x20,0x65,0x78,0x65, + 0x63,0x75,0x74,0x65,0x64,0x2e,0x0a,0x2d,0x2d,0x20,0x62,0x79,0x20,0x64,0x65,0x66, + 0x61,0x75,0x6c,0x74,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x20,0x77,0x69,0x6c,0x6c,0x20,0x74,0x72,0x79,0x20,0x74,0x6f,0x20,0x67,0x75, + 0x65,0x73,0x73,0x20,0x69,0x74,0x20,0x61,0x6e,0x64,0x20,0x73,0x75,0x72,0x65,0x6c, + 0x79,0x20,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x2c,0x20,0x69,0x66,0x20,0x66,0x6f, + 0x72,0x20,0x73,0x6f,0x6d,0x65,0x20,0x72,0x65,0x61,0x73,0x6f,0x6e,0x73,0x20,0x69, + 0x74,0x20,0x66,0x61,0x69,0x6c,0x73,0x20,0x79,0x6f,0x75,0x20,0x63,0x6f,0x75,0x6c, + 0x64,0x20,0x68,0x65,0x6c,0x70,0x20,0x69,0x74,0x20,0x62,0x79,0x20,0x70,0x72,0x65, + 0x63,0x69,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x65,0x78,0x65,0x63,0x75,0x74,0x69, + 0x6f,0x6e,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x2e,0x0a,0x2d,0x2d,0x20, + 0x69,0x66,0x20,0x50,0x4c,0x41,0x54,0x46,0x4f,0x52,0x4d,0x20,0x69,0x73,0x20,0x6e, + 0x69,0x6c,0x2c,0x20,0x74,0x68,0x65,0x20,0x44,0x42,0x47,0x50,0x5f,0x50,0x4c,0x41, + 0x54,0x46,0x4f,0x52,0x4d,0x20,0x65,0x6e,0x76,0x20,0x76,0x61,0x72,0x20,0x69,0x73, + 0x20,0x75,0x73,0x65,0x64,0x2e,0x0a,0x2d,0x2d,0x20,0x69,0x66,0x20,0x74,0x68,0x65, + 0x20,0x65,0x6e,0x76,0x20,0x76,0x61,0x72,0x20,0x69,0x73,0x20,0x6e,0x69,0x6c,0x2c, + 0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x77,0x69, + 0x6c,0x6c,0x20,0x74,0x72,0x79,0x20,0x74,0x6f,0x20,0x67,0x75,0x65,0x73,0x73,0x20, + 0x69,0x74,0x2e,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x57,0x4f,0x52,0x4b,0x49,0x4e, + 0x47,0x44,0x49,0x52,0x3a,0x20,0x28,0x61,0x64,0x76,0x61,0x6e,0x63,0x65,0x64,0x20, + 0x6f,0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x70,0x61,0x72,0x61,0x6d,0x65,0x74, + 0x65,0x72,0x29,0x20,0x74,0x68,0x65,0x20,0x77,0x6f,0x72,0x6b,0x69,0x6e,0x67,0x20, + 0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x69,0x6e,0x20,0x77,0x68,0x69, + 0x63,0x68,0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,0x74, + 0x6f,0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x69,0x73,0x20,0x65,0x78,0x65,0x63,0x75, + 0x74,0x65,0x64,0x2e,0x0a,0x2d,0x2d,0x20,0x62,0x79,0x20,0x64,0x65,0x66,0x61,0x75, + 0x6c,0x74,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20, + 0x77,0x69,0x6c,0x6c,0x20,0x74,0x72,0x79,0x20,0x74,0x6f,0x20,0x67,0x75,0x65,0x73, + 0x73,0x20,0x69,0x74,0x20,0x61,0x6e,0x64,0x20,0x73,0x75,0x72,0x65,0x6c,0x79,0x20, + 0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x2c,0x20,0x69,0x66,0x20,0x66,0x6f,0x72,0x20, + 0x73,0x6f,0x6d,0x65,0x20,0x72,0x65,0x61,0x73,0x6f,0x6e,0x73,0x20,0x69,0x74,0x20, + 0x66,0x61,0x69,0x6c,0x73,0x20,0x79,0x6f,0x75,0x20,0x63,0x6f,0x75,0x6c,0x64,0x20, + 0x68,0x65,0x6c,0x70,0x20,0x69,0x74,0x20,0x62,0x79,0x20,0x70,0x72,0x65,0x63,0x69, + 0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x77,0x6f,0x72,0x6b,0x69,0x6e,0x67,0x20,0x64, + 0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x2e,0x0a,0x2d,0x2d,0x20,0x69,0x66,0x20, + 0x57,0x4f,0x52,0x4b,0x49,0x4e,0x47,0x44,0x49,0x52,0x20,0x69,0x73,0x20,0x6e,0x69, + 0x6c,0x2c,0x20,0x74,0x68,0x65,0x20,0x44,0x42,0x47,0x50,0x5f,0x57,0x4f,0x52,0x4b, + 0x49,0x4e,0x47,0x44,0x49,0x52,0x20,0x65,0x6e,0x76,0x20,0x76,0x61,0x72,0x20,0x69, + 0x73,0x20,0x75,0x73,0x65,0x64,0x2e,0x0a,0x2d,0x2d,0x20,0x69,0x66,0x20,0x74,0x68, + 0x65,0x20,0x65,0x6e,0x76,0x20,0x76,0x61,0x72,0x20,0x69,0x73,0x20,0x6e,0x69,0x6c, + 0x2c,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x77, + 0x69,0x6c,0x6c,0x20,0x74,0x72,0x79,0x20,0x74,0x6f,0x20,0x67,0x75,0x65,0x73,0x73, + 0x20,0x69,0x74,0x2e,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x4b,0x6e,0x6f,0x77,0x6e, + 0x20,0x49,0x73,0x73,0x75,0x65,0x73,0x3a,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x2a,0x20, + 0x46,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x63,0x61,0x6e,0x6e,0x6f,0x74, + 0x20,0x62,0x65,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x75,0x73,0x69,0x6e, + 0x67,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x61, + 0x6e,0x64,0x20,0x74,0x68,0x65,0x6e,0x20,0x63,0x61,0x6c,0x6c,0x65,0x64,0x20,0x69, + 0x6e,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,0x62,0x65,0x63,0x61,0x75,0x73, + 0x65,0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d, + 0x65,0x6e,0x74,0x20,0x69,0x73,0x20,0x6d,0x61,0x70,0x70,0x65,0x64,0x20,0x64,0x69, + 0x72,0x65,0x63,0x74,0x6c,0x79,0x20,0x74,0x6f,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20, + 0x20,0x61,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x69,0x6e,0x74,0x65, + 0x72,0x6e,0x61,0x6c,0x20,0x73,0x74,0x72,0x75,0x63,0x74,0x75,0x72,0x65,0x20,0x77, + 0x68,0x69,0x63,0x68,0x20,0x63,0x61,0x6e,0x6e,0x6f,0x74,0x20,0x62,0x65,0x20,0x70, + 0x65,0x72,0x73,0x69,0x73,0x74,0x65,0x64,0x20,0x28,0x69,0x2e,0x65,0x2e,0x20,0x75, + 0x73,0x65,0x64,0x20,0x6f,0x75,0x74,0x73,0x69,0x64,0x65,0x20,0x6f,0x66,0x20,0x74, + 0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x5f,0x68,0x6f,0x6f,0x6b,0x29,0x2e,0x0a, + 0x2d,0x2d,0x20,0x20,0x20,0x2a,0x20,0x54,0x68,0x65,0x20,0x44,0x4c,0x54,0x4b,0x20, + 0x63,0x6c,0x69,0x65,0x6e,0x74,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74, + 0x61,0x74,0x69,0x6f,0x6e,0x20,0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x68, + 0x61,0x6e,0x64,0x6c,0x65,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x66,0x6f, + 0x72,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x69,0x65,0x73,0x2e,0x20,0x41,0x73, + 0x20,0x61,0x20,0x77,0x6f,0x72,0x6b,0x61,0x72,0x6f,0x75,0x6e,0x64,0x2c,0x20,0x74, + 0x68,0x65,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x69,0x73,0x20,0x65,0x6e, + 0x63,0x6f,0x64,0x65,0x64,0x20,0x69,0x6e,0x74,0x6f,0x20,0x74,0x68,0x65,0x0a,0x2d, + 0x2d,0x20,0x20,0x20,0x20,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x20,0x61, + 0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x20,0x6f,0x66,0x20,0x65,0x61,0x63,0x68, + 0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x61,0x6e,0x64,0x20,0x69,0x73, + 0x20,0x75,0x73,0x65,0x64,0x20,0x6c,0x69,0x6b,0x65,0x77,0x69,0x73,0x65,0x20,0x69, + 0x6e,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x20,0x63, + 0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x2e,0x20,0x54,0x68,0x65,0x20,0x73,0x79,0x6e, + 0x74,0x61,0x78,0x20,0x69,0x73,0x20,0x22,0x3c,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74, + 0x20,0x49,0x44,0x3e,0x7c,0x3c,0x66,0x75,0x6c,0x6c,0x20,0x6e,0x61,0x6d,0x65,0x3e, + 0x22,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x2a,0x20,0x44,0x79,0x6e,0x61,0x6d,0x69,0x63, + 0x20,0x63,0x6f,0x64,0x65,0x20,0x28,0x63,0x6f,0x6d,0x70,0x69,0x6c,0x65,0x64,0x20, + 0x77,0x69,0x74,0x68,0x20,0x6c,0x6f,0x61,0x64,0x20,0x6f,0x72,0x20,0x6c,0x6f,0x61, + 0x64,0x73,0x74,0x72,0x69,0x6e,0x67,0x29,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20, + 0x68,0x61,0x6e,0x64,0x6c,0x65,0x64,0x20,0x28,0x74,0x68,0x65,0x20,0x64,0x65,0x62, + 0x75,0x67,0x67,0x65,0x72,0x20,0x77,0x69,0x6c,0x6c,0x20,0x73,0x74,0x65,0x70,0x20, + 0x6f,0x76,0x65,0x72,0x20,0x69,0x74,0x2c,0x20,0x6c,0x69,0x6b,0x65,0x20,0x43,0x20, + 0x63,0x6f,0x64,0x65,0x29,0x0a,0x2d,0x2d,0x20,0x44,0x65,0x73,0x69,0x67,0x6e,0x20, + 0x6e,0x6f,0x74,0x65,0x73,0x3a,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x2a,0x20,0x54,0x68, + 0x65,0x20,0x77,0x68,0x6f,0x6c,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, + 0x20,0x73,0x74,0x61,0x74,0x65,0x20,0x69,0x73,0x20,0x6b,0x65,0x70,0x74,0x20,0x69, + 0x6e,0x20,0x61,0x20,0x28,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x29,0x20, + 0x75,0x6e,0x69,0x71,0x75,0x65,0x20,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x20,0x74, + 0x61,0x62,0x6c,0x65,0x20,0x69,0x6e,0x20,0x6f,0x72,0x64,0x65,0x72,0x20,0x74,0x6f, + 0x20,0x65,0x61,0x73,0x65,0x20,0x65,0x76,0x65,0x6e,0x74,0x75,0x61,0x6c,0x20,0x61, + 0x64,0x61,0x70,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x61,0x20,0x6d, + 0x75,0x6c,0x74,0x69,0x2d,0x74,0x68,0x72,0x65,0x61,0x64,0x65,0x64,0x0a,0x2d,0x2d, + 0x20,0x20,0x20,0x20,0x20,0x6d,0x6f,0x64,0x65,0x6c,0x2c,0x20,0x61,0x73,0x20,0x44, + 0x42,0x47,0x70,0x20,0x6e,0x65,0x65,0x64,0x73,0x20,0x6f,0x6e,0x65,0x20,0x63,0x6f, + 0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x65,0x72,0x20,0x74,0x68,0x72, + 0x65,0x61,0x64,0x2e,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x2a,0x20,0x46,0x75,0x6c,0x6c, + 0x20,0x6e,0x61,0x6d,0x65,0x73,0x20,0x6f,0x66,0x20,0x70,0x72,0x6f,0x70,0x65,0x72, + 0x74,0x69,0x65,0x73,0x20,0x61,0x72,0x65,0x20,0x62,0x61,0x73,0x65,0x36,0x34,0x20, + 0x65,0x6e,0x63,0x6f,0x64,0x65,0x64,0x20,0x62,0x65,0x63,0x61,0x75,0x73,0x65,0x20, + 0x74,0x68,0x65,0x79,0x20,0x63,0x61,0x6e,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e, + 0x20,0x61,0x72,0x62,0x69,0x74,0x72,0x61,0x72,0x79,0x20,0x64,0x61,0x74,0x61,0x20, + 0x28,0x73,0x70,0x61,0x63,0x65,0x73,0x2c,0x20,0x65,0x73,0x63,0x61,0x70,0x65,0x20, + 0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x2c,0x20,0x2e,0x2e,0x2e,0x29, + 0x2c,0x20,0x74,0x68,0x69,0x73,0x20,0x6d,0x61,0x6b,0x65,0x73,0x0a,0x2d,0x2d,0x20, + 0x20,0x20,0x20,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x70,0x61,0x72,0x73, + 0x69,0x6e,0x67,0x20,0x6d,0x75,0x6e,0x63,0x68,0x20,0x65,0x61,0x73,0x69,0x65,0x72, + 0x20,0x61,0x6e,0x64,0x20,0x66,0x61,0x73,0x74,0x65,0x72,0x0a,0x2d,0x2d,0x20,0x20, + 0x20,0x2a,0x20,0x54,0x68,0x69,0x73,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, + 0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x73,0x20,0x61,0x73,0x79,0x6e,0x63,0x68, + 0x72,0x6f,0x6e,0x6f,0x75,0x73,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x3a, + 0x20,0x61,0x6e,0x79,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x63,0x61,0x6e, + 0x20,0x62,0x65,0x20,0x64,0x6f,0x6e,0x65,0x20,0x61,0x74,0x20,0x61,0x6e,0x79,0x20, + 0x74,0x69,0x6d,0x65,0x2c,0x20,0x62,0x75,0x74,0x20,0x73,0x6f,0x6d,0x65,0x20,0x6f, + 0x66,0x20,0x74,0x68,0x65,0x6d,0x20,0x28,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x61, + 0x74,0x69,0x6f,0x6e,0x73,0x29,0x20,0x63,0x61,0x6e,0x20,0x6c,0x65,0x61,0x64,0x20, + 0x74,0x6f,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x63,0x6f,0x6e,0x73, + 0x69,0x73,0x74,0x65,0x6e,0x74,0x20,0x73,0x74,0x61,0x74,0x65,0x73,0x2e,0x20,0x49, + 0x6e,0x20,0x61,0x64,0x64,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x74,0x68,0x69,0x73, + 0x20,0x68,0x61,0x76,0x65,0x20,0x61,0x20,0x71,0x75,0x69,0x74,0x65,0x20,0x62,0x69, + 0x67,0x20,0x6f,0x76,0x65,0x72,0x68,0x65,0x61,0x64,0x20,0x28,0x7e,0x36,0x36,0x25, + 0x29,0x2c,0x20,0x69,0x66,0x20,0x70,0x65,0x72,0x66,0x6f,0x72,0x6d,0x61,0x6e,0x63, + 0x65,0x20,0x69,0x73,0x20,0x61,0x6e,0x20,0x69,0x73,0x73,0x75,0x65,0x2c,0x20,0x61, + 0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20, + 0x74,0x6f,0x20,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x0a,0x2d,0x2d,0x20,0x20,0x20, + 0x20,0x20,0x61,0x73,0x79,0x6e,0x63,0x20,0x6d,0x6f,0x64,0x65,0x20,0x63,0x6f,0x75, + 0x6c,0x64,0x20,0x62,0x65,0x20,0x64,0x6f,0x6e,0x65,0x2e,0x0a,0x2d,0x2d,0x20,0x20, + 0x20,0x2a,0x20,0x41,0x6c,0x6c,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x20, + 0x61,0x72,0x65,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x65,0x64,0x20, + 0x69,0x6e,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, + 0x73,0x2c,0x20,0x73,0x65,0x65,0x20,0x74,0x68,0x69,0x73,0x20,0x63,0x6f,0x6d,0x6d, + 0x65,0x6e,0x74,0x73,0x20,0x6f,0x6e,0x20,0x74,0x68,0x69,0x73,0x20,0x74,0x61,0x62, + 0x6c,0x65,0x20,0x74,0x6f,0x20,0x61,0x64,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c, + 0x20,0x64,0x65,0x74,0x61,0x69,0x6c,0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x63, + 0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e, + 0x74,0x61,0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x2a,0x20,0x54,0x68, + 0x65,0x20,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x73,0x20,0x69, + 0x6e,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x61,0x72,0x65,0x20,0x65,0x76,0x61,0x6c, + 0x75,0x61,0x74,0x65,0x64,0x20,0x75,0x73,0x65,0x72,0x20,0x63,0x6f,0x64,0x65,0x20, + 0x28,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x2a,0x20,0x61,0x6e,0x64,0x20, + 0x65,0x76,0x61,0x6c,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x2c,0x20,0x63, + 0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x62,0x72,0x65,0x61,0x6b, + 0x70,0x6f,0x69,0x6e,0x74,0x73,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x20,0x69,0x73,0x20, + 0x61,0x20,0x72,0x65,0x61,0x64,0x2f,0x77,0x72,0x69,0x74,0x65,0x0a,0x2d,0x2d,0x20, + 0x20,0x20,0x20,0x20,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x20,0x6f,0x66,0x20,0x74, + 0x68,0x65,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e, + 0x6d,0x65,0x6e,0x74,0x20,0x6f,0x66,0x20,0x61,0x20,0x67,0x69,0x76,0x65,0x6e,0x20, + 0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x28,0x63,0x61,0x6e, + 0x20,0x62,0x65,0x20,0x61,0x63,0x63,0x65,0x73,0x73,0x65,0x64,0x20,0x77,0x69,0x74, + 0x68,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x20,0x6e,0x61,0x6d,0x65,0x73, + 0x29,0x2e,0x20,0x53,0x65,0x65,0x20,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x66, + 0x6f,0x72,0x20,0x61,0x64,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x64,0x65, + 0x74,0x61,0x69,0x6c,0x73,0x2e,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x43,0x6f, + 0x6e,0x74,0x65,0x78,0x74,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x74,0x69,0x61,0x74, + 0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x70,0x6f,0x6f,0x6c,0x65,0x64,0x20,0x69,0x6e, + 0x73,0x69,0x64,0x65,0x20,0x61,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x69,0x6e,0x67, + 0x20,0x6c,0x6f,0x6f,0x70,0x20,0x77,0x69,0x74,0x68,0x20,0x43,0x6f,0x6e,0x74,0x65, + 0x78,0x74,0x4d,0x61,0x6e,0x61,0x67,0x65,0x72,0x20,0x28,0x65,0x61,0x63,0x68,0x20, + 0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x69,0x73,0x20,0x69, + 0x6e,0x73,0x74,0x61,0x6e,0x74,0x69,0x61,0x74,0x65,0x64,0x20,0x6f,0x6e,0x6c,0x79, + 0x20,0x6f,0x6e,0x63,0x65,0x29,0x2e,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x2a,0x20,0x4f, + 0x75,0x74,0x70,0x75,0x74,0x20,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x69,0x73,0x20,0x64,0x6f,0x6e,0x65,0x20,0x62,0x79,0x20,0x72,0x65,0x64, + 0x65,0x66,0x69,0x6e,0x69,0x6e,0x67,0x20,0x70,0x72,0x69,0x6e,0x74,0x20,0x61,0x6e, + 0x64,0x20,0x73,0x6f,0x6d,0x65,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x69,0x6e, + 0x73,0x69,0x64,0x65,0x20,0x74,0x68,0x65,0x20,0x69,0x6f,0x20,0x74,0x61,0x62,0x6c, + 0x65,0x2e,0x20,0x53,0x65,0x65,0x20,0x22,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x72, + 0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x61,0x6e,0x64,0x6c, + 0x69,0x6e,0x67,0x22,0x20,0x66,0x6f,0x72,0x20,0x64,0x65,0x74,0x61,0x69,0x6c,0x73, + 0x2e,0x0a,0x2d,0x2d,0x20,0x54,0x6f,0x64,0x6f,0x20,0x6c,0x69,0x73,0x74,0x3a,0x0a, + 0x2d,0x2d,0x20,0x20,0x20,0x2a,0x20,0x4f,0x76,0x65,0x72,0x72,0x69,0x64,0x65,0x20, + 0x49,0x2f,0x4f,0x20,0x69,0x6e,0x20,0x69,0x6e,0x69,0x74,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x73,0x74,0x65,0x61,0x64,0x20,0x6f,0x66,0x20, + 0x6f,0x6e,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x6c,0x6f,0x61,0x64,0x69,0x6e, + 0x67,0x2e,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x2a,0x20,0x41,0x6c,0x6c,0x6f,0x77,0x20, + 0x74,0x6f,0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d, + 0x61,0x74,0x69,0x63,0x61,0x6c,0x6c,0x79,0x20,0x28,0x64,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x2e,0x62,0x72,0x65,0x61,0x6b,0x28,0x29,0x29,0x2e,0x0a,0x2d,0x2d,0x20, + 0x20,0x20,0x2a,0x20,0x42,0x72,0x65,0x61,0x6b,0x2d,0x6f,0x6e,0x2d,0x65,0x72,0x72, + 0x6f,0x72,0x20,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x20,0x28,0x62,0x72,0x65,0x61, + 0x6b,0x20,0x69,0x66,0x20,0x61,0x6e,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x69,0x73, + 0x20,0x74,0x68,0x72,0x6f,0x77,0x6e,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x72, + 0x65,0x20,0x69,0x73,0x20,0x6e,0x6f,0x20,0x70,0x63,0x61,0x6c,0x6c,0x20,0x69,0x6e, + 0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x74,0x6f,0x20,0x68,0x61,0x6e,0x64,0x6c,0x65, + 0x20,0x69,0x74,0x29,0x2e,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x2a,0x20,0x55,0x73,0x65, + 0x20,0x6e,0x65,0x77,0x20,0x35,0x2e,0x32,0x20,0x66,0x61,0x63,0x69,0x6c,0x69,0x74, + 0x69,0x65,0x73,0x20,0x74,0x6f,0x20,0x70,0x72,0x6f,0x76,0x69,0x64,0x65,0x20,0x69, + 0x6e,0x66,0x6f,0x72,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x20,0x61,0x62,0x6f,0x75, + 0x74,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x28,0x61,0x72,0x67,0x75, + 0x6d,0x65,0x6e,0x74,0x73,0x20,0x6e,0x61,0x6d,0x65,0x73,0x2c,0x20,0x76,0x61,0x72, + 0x61,0x72,0x67,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x2a, + 0x20,0x41,0x6c,0x6c,0x6f,0x77,0x20,0x74,0x6f,0x20,0x73,0x65,0x65,0x20,0x2e,0x2e, + 0x2e,0x20,0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x20,0x66,0x6f,0x72,0x20,0x76,0x61, + 0x72,0x61,0x72,0x67,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x28, + 0x35,0x2e,0x32,0x20,0x6f,0x6e,0x6c,0x79,0x29,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x2a, + 0x20,0x49,0x6e,0x73,0x70,0x65,0x63,0x74,0x20,0x4c,0x75,0x61,0x4a,0x49,0x54,0x20, + 0x43,0x20,0x64,0x61,0x74,0x61,0x20,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6c, + 0x75,0x61,0x2d,0x75,0x73,0x65,0x72,0x73,0x2e,0x6f,0x72,0x67,0x2f,0x6c,0x69,0x73, + 0x74,0x73,0x2f,0x6c,0x75,0x61,0x2d,0x6c,0x2f,0x32,0x30,0x31,0x31,0x2d,0x30,0x32, + 0x2f,0x6d,0x73,0x67,0x30,0x31,0x30,0x31,0x32,0x2e,0x68,0x74,0x6d,0x6c,0x29,0x2d, + 0x2d,0x20,0x2f,0x21,0x5c,0x20,0x54,0x68,0x69,0x73,0x20,0x66,0x69,0x6c,0x65,0x20, + 0x69,0x73,0x20,0x61,0x75,0x74,0x6f,0x2d,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65, + 0x64,0x2e,0x20,0x44,0x6f,0x20,0x6e,0x6f,0x74,0x20,0x61,0x6c,0x74,0x65,0x72,0x20, + 0x6d,0x61,0x6e,0x75,0x61,0x6c,0x6c,0x79,0x20,0x2f,0x21,0x5c,0x0a,0x0a,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d, + 0x2d,0x20,0x20,0x53,0x75,0x62,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x73,0x20,0x62,0x6f, + 0x64,0x79,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x20,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20, 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f, - 0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74,0x13,0x44,0x42,0x47, - 0x50,0x5f,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x52,0x54,0x09,0x69,0x6e,0x69,0x74, - 0x14,0x44,0x42,0x47,0x50,0x5f,0x57,0x4f,0x52,0x4b,0x49,0x4e,0x47,0x44,0x49,0x52, - 0x12,0x44,0x42,0x47,0x50,0x5f,0x50,0x4c,0x41,0x54,0x46,0x4f,0x52,0x4d,0x0e,0x6c, - 0x75,0x61,0x69,0x64,0x65,0x6b,0x65,0x79,0x10,0x44,0x42,0x47,0x50,0x5f,0x49,0x44, - 0x45,0x4b,0x45,0x59,0x0a,0x31,0x30,0x30,0x30,0x30,0x11,0x44,0x42,0x47,0x50,0x5f, - 0x49,0x44,0x45,0x50,0x4f,0x52,0x54,0x0e,0x31,0x32,0x37,0x2e,0x30,0x2e,0x30,0x2e, - 0x31,0x11,0x44,0x42,0x47,0x50,0x5f,0x49,0x44,0x45,0x48,0x4f,0x53,0x54,0x0b,0x67, - 0x65,0x74,0x65,0x6e,0x76,0x07,0x6f,0x73,0x01,0x80,0x80,0x80,0xff,0x03,0x9a,0x0e, - 0x03,0x00,0x20,0x00,0x7e,0x00,0xef,0x01,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x03,0x00,0x3a,0x01,0x02,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x05,0x00,0x3a,0x01,0x04,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x07,0x00,0x3a,0x01,0x06,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x09,0x00,0x3a,0x01,0x08,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x0b,0x00,0x3a,0x01,0x0a,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x0d,0x00,0x3a,0x01,0x0c,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x0f,0x00,0x3a,0x01,0x0e,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x11,0x00,0x3a,0x01,0x10,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x13,0x00,0x3a,0x01,0x12,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x15,0x00,0x3a,0x01,0x14,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x17,0x00,0x3a,0x01,0x16,0x00,0x34,0x00,0x00,0x00,0x37,0x00,0x01,0x00, - 0x31,0x01,0x19,0x00,0x3a,0x01,0x18,0x00,0x25,0x00,0x1a,0x00,0x34,0x01,0x1b,0x00, - 0x25,0x02,0x1c,0x00,0x3e,0x01,0x02,0x02,0x32,0x02,0x00,0x00,0x34,0x03,0x00,0x00, - 0x37,0x03,0x1d,0x03,0x3a,0x02,0x1e,0x03,0x34,0x03,0x1b,0x00,0x25,0x04,0x16,0x00, - 0x3e,0x03,0x02,0x02,0x34,0x04,0x1b,0x00,0x25,0x05,0x14,0x00,0x3e,0x04,0x02,0x02, - 0x34,0x05,0x1b,0x00,0x25,0x06,0x0c,0x00,0x3e,0x05,0x02,0x02,0x34,0x06,0x1b,0x00, - 0x25,0x07,0x08,0x00,0x3e,0x06,0x02,0x02,0x34,0x07,0x1b,0x00,0x25,0x08,0x0a,0x00, - 0x3e,0x07,0x02,0x02,0x34,0x08,0x1b,0x00,0x25,0x09,0x18,0x00,0x3e,0x08,0x02,0x02, - 0x37,0x09,0x1f,0x03,0x34,0x0a,0x20,0x00,0x37,0x0a,0x21,0x0a,0x34,0x0b,0x20,0x00, - 0x37,0x0b,0x22,0x0b,0x34,0x0c,0x20,0x00,0x37,0x0c,0x23,0x0c,0x34,0x0d,0x20,0x00, - 0x37,0x0d,0x24,0x0d,0x34,0x0e,0x20,0x00,0x37,0x0e,0x25,0x0e,0x34,0x0f,0x20,0x00, - 0x37,0x0f,0x26,0x0f,0x2a,0x10,0x12,0x00,0x33,0x13,0x28,0x00,0x34,0x14,0x29,0x00, - 0x32,0x15,0x00,0x00,0x33,0x16,0x2a,0x00,0x3e,0x14,0x03,0x02,0x3a,0x14,0x2b,0x13, - 0x34,0x14,0x29,0x00,0x32,0x15,0x00,0x00,0x33,0x16,0x2c,0x00,0x3e,0x14,0x03,0x02, - 0x3a,0x14,0x2d,0x13,0x3a,0x13,0x27,0x02,0x29,0x13,0x00,0x00,0x3a,0x13,0x2e,0x02, - 0x29,0x13,0x00,0x00,0x34,0x14,0x2f,0x00,0x07,0x14,0x30,0x00,0x54,0x14,0x03,0x80, - 0x34,0x14,0x31,0x00,0x10,0x13,0x14,0x00,0x54,0x14,0x0b,0x80,0x34,0x14,0x2f,0x00, - 0x07,0x14,0x32,0x00,0x54,0x14,0x03,0x80,0x37,0x14,0x33,0x01,0x31,0x13,0x34,0x00, - 0x30,0x14,0x05,0x80,0x34,0x14,0x35,0x00,0x34,0x15,0x2f,0x00,0x25,0x16,0x36,0x00, - 0x24,0x15,0x16,0x15,0x3e,0x14,0x02,0x01,0x34,0x14,0x37,0x00,0x33,0x15,0x3a,0x00, - 0x34,0x16,0x37,0x00,0x37,0x16,0x39,0x16,0x3a,0x16,0x39,0x15,0x34,0x16,0x37,0x00, - 0x37,0x16,0x3b,0x16,0x3a,0x16,0x3b,0x15,0x34,0x16,0x37,0x00,0x37,0x16,0x3c,0x16, - 0x3a,0x16,0x3c,0x15,0x34,0x16,0x37,0x00,0x37,0x16,0x3d,0x16,0x3a,0x16,0x3d,0x15, - 0x3a,0x15,0x38,0x14,0x34,0x14,0x37,0x00,0x31,0x15,0x3e,0x00,0x3a,0x15,0x39,0x14, - 0x31,0x14,0x3f,0x00,0x33,0x15,0x42,0x00,0x31,0x16,0x41,0x00,0x3a,0x16,0x43,0x15, - 0x3a,0x14,0x44,0x15,0x3a,0x14,0x45,0x15,0x3a,0x14,0x46,0x15,0x3a,0x14,0x47,0x15, - 0x3a,0x15,0x40,0x02,0x37,0x15,0x40,0x02,0x37,0x16,0x40,0x02,0x3a,0x16,0x48,0x15, - 0x33,0x15,0x4b,0x00,0x31,0x16,0x4a,0x00,0x3a,0x16,0x43,0x15,0x31,0x16,0x4c,0x00, - 0x3a,0x16,0x44,0x15,0x31,0x16,0x4d,0x00,0x3a,0x16,0x45,0x15,0x31,0x16,0x4e,0x00, - 0x3a,0x16,0x46,0x15,0x31,0x16,0x4f,0x00,0x3a,0x16,0x47,0x15,0x3a,0x15,0x49,0x02, - 0x37,0x15,0x49,0x02,0x37,0x16,0x49,0x02,0x3a,0x16,0x48,0x15,0x34,0x15,0x29,0x00, - 0x32,0x16,0x00,0x00,0x33,0x17,0x50,0x00,0x3e,0x15,0x03,0x02,0x33,0x16,0x59,0x00, - 0x33,0x17,0x53,0x00,0x31,0x18,0x52,0x00,0x3a,0x18,0x54,0x17,0x31,0x18,0x55,0x00, - 0x3a,0x18,0x56,0x17,0x31,0x18,0x57,0x00,0x3a,0x18,0x58,0x17,0x3a,0x17,0x5a,0x16, - 0x3a,0x16,0x51,0x02,0x32,0x16,0x00,0x00,0x3a,0x16,0x5b,0x02,0x32,0x16,0x00,0x00, - 0x32,0x17,0x00,0x00,0x32,0x18,0x00,0x00,0x29,0x19,0x00,0x00,0x27,0x1a,0x00,0x00, - 0x32,0x1b,0x00,0x00,0x31,0x1c,0x5c,0x00,0x31,0x1d,0x5d,0x00,0x37,0x1e,0x51,0x02, - 0x31,0x1f,0x5f,0x00,0x3a,0x1f,0x5e,0x1e,0x37,0x1e,0x51,0x02,0x31,0x1f,0x61,0x00, - 0x3a,0x1f,0x60,0x1e,0x37,0x1e,0x51,0x02,0x31,0x1f,0x63,0x00,0x3a,0x1f,0x62,0x1e, - 0x37,0x1e,0x51,0x02,0x31,0x1f,0x65,0x00,0x3a,0x1f,0x64,0x1e,0x37,0x1e,0x51,0x02, - 0x31,0x1f,0x67,0x00,0x3a,0x1f,0x66,0x1e,0x37,0x1e,0x51,0x02,0x31,0x1f,0x69,0x00, - 0x3a,0x1f,0x68,0x1e,0x37,0x1e,0x51,0x02,0x31,0x1f,0x6b,0x00,0x3a,0x1f,0x6a,0x1e, - 0x37,0x1e,0x5b,0x02,0x31,0x1f,0x6d,0x00,0x3a,0x1f,0x6c,0x1e,0x37,0x1e,0x5b,0x02, - 0x31,0x1f,0x6f,0x00,0x3a,0x1f,0x6e,0x1e,0x37,0x1e,0x5b,0x02,0x31,0x1f,0x71,0x00, - 0x3a,0x1f,0x70,0x1e,0x30,0x16,0x00,0x80,0x31,0x16,0x73,0x00,0x3a,0x16,0x72,0x02, - 0x31,0x16,0x74,0x00,0x31,0x17,0x75,0x00,0x31,0x18,0x76,0x00,0x10,0x19,0x0b,0x00, - 0x31,0x1a,0x77,0x00,0x3e,0x19,0x02,0x02,0x31,0x1a,0x78,0x00,0x34,0x1b,0x79,0x00, - 0x34,0x1c,0x7a,0x00,0x25,0x1d,0x7b,0x00,0x3e,0x1b,0x03,0x02,0x0f,0x00,0x1b,0x00, - 0x54,0x1c,0x01,0x80,0x31,0x1a,0x7c,0x00,0x31,0x1b,0x7d,0x00,0x30,0x00,0x00,0x80, - 0x48,0x1b,0x02,0x00,0x00,0x00,0x08,0x6a,0x69,0x74,0x07,0x5f,0x47,0x0b,0x72,0x61, - 0x77,0x67,0x65,0x74,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x70,0x72,0x65,0x76,0x69, - 0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x72,0x65,0x73,0x70, - 0x6f,0x6e,0x73,0x65,0x00,0x0c,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x00,0x0f,0x64, - 0x6f,0x65,0x73,0x5f,0x6d,0x61,0x74,0x63,0x68,0x00,0x0d,0x72,0x65,0x67,0x69,0x73, - 0x74,0x65,0x72,0x00,0x0c,0x67,0x65,0x74,0x5f,0x78,0x6d,0x6c,0x00,0x0b,0x72,0x65, - 0x6d,0x6f,0x76,0x65,0x00,0x08,0x67,0x65,0x74,0x00,0x07,0x61,0x74,0x00,0x0b,0x69, - 0x6e,0x73,0x65,0x72,0x74,0x00,0x0b,0x75,0x70,0x64,0x61,0x74,0x65,0x00,0x0a,0x67, - 0x75,0x65,0x73,0x73,0x00,0x00,0x0b,0x65,0x76,0x65,0x6e,0x74,0x73,0x13,0x68,0x69, - 0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x01,0x00,0x00,0x06, - 0x25,0x00,0x07,0x3d,0x3d,0x00,0x07,0x3e,0x3d,0x01,0x00,0x00,0x00,0x10,0x62,0x72, - 0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x01,0x00,0x01,0x0b,0x5f,0x5f,0x6d, - 0x6f,0x64,0x65,0x06,0x6b,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x10,0x63,0x6f, - 0x70,0x79,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x0c,0x5f,0x5f,0x69,0x6e,0x64,0x65, - 0x78,0x09,0x73,0x65,0x65,0x6b,0x0c,0x73,0x65,0x74,0x76,0x62,0x75,0x66,0x0a,0x63, - 0x6c,0x6f,0x73,0x65,0x0a,0x66,0x6c,0x75,0x73,0x68,0x0a,0x77,0x72,0x69,0x74,0x65, - 0x01,0x00,0x00,0x00,0x14,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75, - 0x74,0x70,0x75,0x74,0x00,0x00,0x0b,0x73,0x74,0x64,0x65,0x72,0x72,0x0b,0x73,0x74, - 0x64,0x6f,0x75,0x74,0x0a,0x73,0x74,0x64,0x69,0x6e,0x01,0x00,0x00,0x0b,0x6f,0x75, - 0x74,0x70,0x75,0x74,0x09,0x62,0x61,0x73,0x65,0x07,0x69,0x6f,0x16,0x69,0x73,0x20, - 0x6e,0x6f,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,0x2e,0x0a,0x65, - 0x72,0x72,0x6f,0x72,0x00,0x0f,0x73,0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65, - 0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e,0x32,0x0c,0x73,0x65,0x74,0x66,0x65,0x6e,0x76, - 0x0c,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x0d,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f, - 0x4e,0x14,0x70,0x72,0x65,0x76,0x5f,0x62,0x72,0x65,0x61,0x6b,0x5f,0x6c,0x69,0x6e, - 0x65,0x0e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72,0x6f,0x01,0x00,0x01,0x0b,0x5f, - 0x5f,0x6d,0x6f,0x64,0x65,0x06,0x6b,0x0c,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x01, - 0x00,0x01,0x0b,0x5f,0x5f,0x6d,0x6f,0x64,0x65,0x06,0x76,0x11,0x73,0x65,0x74,0x6d, - 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x01,0x00,0x01,0x06,0x6e,0x03,0x00,0x16, - 0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, - 0x73,0x0b,0x73,0x74,0x61,0x74,0x75,0x73,0x0b,0x72,0x65,0x73,0x75,0x6d,0x65,0x0a, - 0x79,0x69,0x65,0x6c,0x64,0x09,0x77,0x72,0x61,0x70,0x0b,0x63,0x72,0x65,0x61,0x74, - 0x65,0x0c,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x0e,0x63,0x6f,0x72,0x6f,0x75,0x74, - 0x69,0x6e,0x65,0x08,0x6c,0x6f,0x67,0x12,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, - 0x2e,0x63,0x6f,0x72,0x65,0x0b,0x6c,0x6f,0x61,0x64,0x65,0x64,0x0a,0x64,0x65,0x62, - 0x75,0x67,0x0c,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x0a,0x31,0x2e,0x31,0x2e,0x30, - 0x00,0x11,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x72,0x6c,0x00,0x12, - 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x00,0x16,0x64, - 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d, - 0x00,0x21,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x75,0x67,0x69, - 0x6e,0x73,0x2e,0x66,0x66,0x69,0x2e,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x00,0x19, - 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x75,0x67,0x69,0x6e,0x73, - 0x2e,0x66,0x66,0x69,0x00,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69, - 0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x00,0x12,0x64,0x65, - 0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x64,0x62,0x67,0x70,0x00,0x15,0x64,0x65,0x62, - 0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x00,0x16,0x64, - 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73, - 0x00,0x27,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73, - 0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74,0x5f,0x73, - 0x63,0x68,0x65,0x64,0x00,0x21,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74, - 0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b, - 0x65,0x74,0x00,0x1b,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61, - 0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x61,0x70,0x72,0x0c,0x70,0x72,0x65,0x6c,0x6f, - 0x61,0x64,0x0c,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x00, + 0x72,0x74,0x2e,0x61,0x70,0x72,0x0a,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x2e,0x70, + 0x72,0x65,0x6c,0x6f,0x61,0x64,0x5b,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, + 0x2e,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x61,0x70,0x72,0x22,0x5d, + 0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x2e,0x2e,0x2e,0x29, + 0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63, + 0x29,0x20,0x32,0x30,0x31,0x31,0x2d,0x32,0x30,0x31,0x32,0x20,0x53,0x69,0x65,0x72, + 0x72,0x61,0x20,0x57,0x69,0x72,0x65,0x6c,0x65,0x73,0x73,0x20,0x61,0x6e,0x64,0x20, + 0x6f,0x74,0x68,0x65,0x72,0x73,0x2e,0x0a,0x2d,0x2d,0x20,0x41,0x6c,0x6c,0x20,0x72, + 0x69,0x67,0x68,0x74,0x73,0x20,0x72,0x65,0x73,0x65,0x72,0x76,0x65,0x64,0x2e,0x20, + 0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,0x61,0x6e,0x64, + 0x20,0x74,0x68,0x65,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70,0x61,0x6e,0x79,0x69,0x6e, + 0x67,0x20,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x73,0x0a,0x2d,0x2d,0x20,0x61, + 0x72,0x65,0x20,0x6d,0x61,0x64,0x65,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c, + 0x65,0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x74,0x65,0x72,0x6d, + 0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x45,0x63,0x6c,0x69,0x70,0x73,0x65, + 0x20,0x50,0x75,0x62,0x6c,0x69,0x63,0x20,0x4c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20, + 0x76,0x31,0x2e,0x30,0x0a,0x2d,0x2d,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x61,0x63, + 0x63,0x6f,0x6d,0x70,0x61,0x6e,0x69,0x65,0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x64, + 0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x61,0x6e,0x64, + 0x20,0x69,0x73,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x61,0x74, + 0x0a,0x2d,0x2d,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x65, + 0x63,0x6c,0x69,0x70,0x73,0x65,0x2e,0x6f,0x72,0x67,0x2f,0x6c,0x65,0x67,0x61,0x6c, + 0x2f,0x65,0x70,0x6c,0x2d,0x76,0x31,0x30,0x2e,0x68,0x74,0x6d,0x6c,0x0a,0x2d,0x2d, + 0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x74,0x72,0x69,0x62,0x75,0x74,0x6f,0x72,0x73, + 0x3a,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20, + 0x57,0x69,0x72,0x65,0x6c,0x65,0x73,0x73,0x20,0x2d,0x20,0x69,0x6e,0x69,0x74,0x69, + 0x61,0x6c,0x20,0x41,0x50,0x49,0x20,0x61,0x6e,0x64,0x20,0x69,0x6d,0x70,0x6c,0x65, + 0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x41,0x70,0x61, + 0x63,0x68,0x65,0x20,0x50,0x6f,0x72,0x74,0x61,0x62,0x6c,0x65,0x20,0x52,0x75,0x6e, + 0x74,0x69,0x6d,0x65,0x20,0x62,0x61,0x63,0x6b,0x65,0x6e,0x64,0x20,0x66,0x6f,0x72, + 0x20,0x44,0x42,0x47,0x50,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x0a, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a, + 0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x61,0x70,0x72,0x20,0x3d,0x20,0x72,0x65,0x71, + 0x75,0x69,0x72,0x65,0x20,0x22,0x61,0x70,0x72,0x22,0x0a,0x0a,0x2d,0x2d,0x20,0x62, + 0x61,0x73,0x65,0x20,0x36,0x34,0x20,0x77,0x72,0x61,0x70,0x70,0x69,0x6e,0x67,0x0a, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x36,0x34,0x5f,0x77,0x72,0x61, + 0x70,0x28,0x73,0x72,0x63,0x29,0x0a,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74, + 0x20,0x3d,0x20,0x7b,0x7d,0x0a,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x36, + 0x34,0x5f,0x73,0x72,0x63,0x20,0x3d,0x20,0x6d,0x69,0x6d,0x65,0x2e,0x62,0x36,0x34, + 0x28,0x73,0x72,0x63,0x29,0x0a,0x20,0x20,0x66,0x6f,0x72,0x20,0x69,0x3d,0x31,0x2c, + 0x20,0x23,0x62,0x36,0x34,0x5f,0x73,0x72,0x63,0x2c,0x20,0x37,0x36,0x20,0x64,0x6f, + 0x20,0x74,0x5b,0x23,0x74,0x2b,0x31,0x5d,0x20,0x3d,0x20,0x62,0x36,0x34,0x5f,0x73, + 0x72,0x63,0x3a,0x73,0x75,0x62,0x28,0x69,0x2c,0x20,0x69,0x2b,0x37,0x35,0x29,0x2e, + 0x2e,0x22,0x5c,0x72,0x5c,0x6e,0x22,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x63,0x6f,0x6e,0x63,0x61, + 0x74,0x28,0x74,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x20,0x69,0x6d,0x70, + 0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73,0x20,0x61,0x20,0x73,0x75,0x62,0x73,0x65,0x74, + 0x20,0x6f,0x66,0x20,0x4c,0x75,0x61,0x53,0x6f,0x63,0x6b,0x65,0x74,0x20,0x41,0x50, + 0x49,0x20,0x75,0x73,0x69,0x6e,0x67,0x20,0x41,0x50,0x52,0x0a,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x53,0x4f,0x43,0x4b,0x45,0x54,0x5f,0x4d,0x54,0x20,0x3d,0x20,0x7b,0x0a, + 0x20,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x64,0x64,0x72,0x65, + 0x73,0x73,0x2c,0x20,0x70,0x6f,0x72,0x74,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x3a,0x63,0x6f,0x6e,0x6e,0x65,0x63, + 0x74,0x28,0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x2c,0x20,0x70,0x6f,0x72,0x74,0x29, + 0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x20, + 0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c, + 0x20,0x6e,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x3a, + 0x72,0x65,0x61,0x64,0x28,0x6e,0x29,0x20,0x65,0x6e,0x64,0x2c,0x20,0x2d,0x2d,0x20, + 0x6f,0x6e,0x6c,0x79,0x20,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x20,0x72,0x65,0x61, + 0x64,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x0a,0x20,0x20,0x73,0x65,0x6e,0x64, + 0x20,0x20,0x20,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73, + 0x65,0x6c,0x66,0x2c,0x20,0x64,0x61,0x74,0x61,0x29,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x6c,0x66,0x2e, + 0x73,0x6b,0x74,0x3a,0x77,0x72,0x69,0x74,0x65,0x28,0x64,0x61,0x74,0x61,0x29,0x20, + 0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x63,0x6c,0x6f,0x73,0x65,0x20,0x20,0x20,0x3d, + 0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x29,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x3a,0x63, + 0x6c,0x6f,0x73,0x65,0x28,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x73,0x65, + 0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x73,0x65,0x63,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x20,0x20,0x20,0x20,0x73,0x65,0x63,0x20,0x3d,0x3d, + 0x20,0x6e,0x69,0x6c,0x20,0x74,0x68,0x65,0x6e,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73, + 0x6b,0x74,0x3a,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x5f,0x73,0x65,0x74,0x28,0x74, + 0x72,0x75,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20, + 0x73,0x65,0x63,0x20,0x3d,0x3d,0x20,0x30,0x20,0x20,0x20,0x74,0x68,0x65,0x6e,0x20, + 0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x3a,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74, + 0x5f,0x73,0x65,0x74,0x28,0x66,0x61,0x6c,0x73,0x65,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x3a, + 0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x5f,0x73,0x65,0x74,0x28,0x6d,0x61,0x74,0x68, + 0x2e,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x73,0x65,0x63,0x20,0x2a,0x20,0x31,0x30,0x30, + 0x30,0x30,0x30,0x30,0x29,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x65,0x6e,0x64, + 0x0a,0x7d,0x0a,0x53,0x4f,0x43,0x4b,0x45,0x54,0x5f,0x4d,0x54,0x2e,0x5f,0x5f,0x69, + 0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x53,0x4f,0x43,0x4b,0x45,0x54,0x5f,0x4d,0x54, + 0x0a,0x0a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x63, + 0x72,0x65,0x61,0x74,0x65,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x28,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73, + 0x6b,0x74,0x2c,0x20,0x65,0x72,0x72,0x20,0x3d,0x20,0x61,0x70,0x72,0x2e,0x73,0x6f, + 0x63,0x6b,0x65,0x74,0x5f,0x63,0x72,0x65,0x61,0x74,0x65,0x28,0x27,0x74,0x63,0x70, + 0x27,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20, + 0x73,0x6b,0x74,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x6e,0x69,0x6c,0x2c,0x20,0x65,0x72,0x72,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x74,0x6d,0x65,0x74, + 0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x7b,0x73,0x6b,0x74,0x20,0x3d,0x20,0x73,0x6b, + 0x74,0x7d,0x2c,0x20,0x53,0x4f,0x43,0x4b,0x45,0x54,0x5f,0x4d,0x54,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x73,0x6c,0x65,0x65, + 0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x61,0x70,0x72,0x2e,0x73,0x6c,0x65, + 0x65,0x70,0x2c,0x20,0x2d,0x2d,0x20,0x65,0x78,0x61,0x63,0x74,0x20,0x73,0x61,0x6d, + 0x65,0x20,0x41,0x50,0x49,0x20,0x61,0x73,0x20,0x4c,0x75,0x61,0x53,0x6f,0x63,0x6b, + 0x65,0x74,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x42,0x61,0x73,0x65,0x36, + 0x34,0x20,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x20,0x66,0x75,0x6e,0x63,0x74,0x69, + 0x6f,0x6e,0x73,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x20,0x45,0x6e,0x63,0x6f, + 0x64,0x65,0x73,0x20,0x61,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x69,0x6e,0x74, + 0x6f,0x20,0x42,0x61,0x73,0x65,0x36,0x34,0x20,0x77,0x69,0x74,0x68,0x20,0x6c,0x69, + 0x6e,0x65,0x20,0x77,0x72,0x61,0x70,0x70,0x69,0x6e,0x67,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x64,0x61,0x74,0x61,0x20,0x28, + 0x73,0x74,0x72,0x69,0x6e,0x67,0x29,0x20,0x64,0x61,0x74,0x61,0x20,0x74,0x6f,0x20, + 0x65,0x6e,0x63,0x6f,0x64,0x65,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61,0x73,0x65,0x36,0x34,0x20,0x65,0x6e,0x63, + 0x6f,0x64,0x65,0x64,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x0a,0x20,0x20,0x20,0x20, + 0x62,0x36,0x34,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x64, + 0x61,0x74,0x61,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x20,0x3d, + 0x20,0x7b,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x62,0x36,0x34,0x5f,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x61,0x70,0x72, + 0x2e,0x62,0x61,0x73,0x65,0x36,0x34,0x5f,0x65,0x6e,0x63,0x6f,0x64,0x65,0x28,0x64, + 0x61,0x74,0x61,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72, + 0x20,0x69,0x3d,0x31,0x2c,0x20,0x23,0x62,0x36,0x34,0x5f,0x64,0x61,0x74,0x61,0x2c, + 0x20,0x37,0x36,0x20,0x64,0x6f,0x20,0x74,0x5b,0x23,0x74,0x2b,0x31,0x5d,0x20,0x3d, + 0x20,0x62,0x36,0x34,0x5f,0x64,0x61,0x74,0x61,0x3a,0x73,0x75,0x62,0x28,0x69,0x2c, + 0x20,0x69,0x2b,0x37,0x35,0x29,0x2e,0x2e,0x22,0x5c,0x72,0x5c,0x6e,0x22,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x74, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x2d,0x20,0x45,0x6e,0x63,0x6f,0x64,0x65,0x73,0x20,0x61,0x20,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x20,0x69,0x6e,0x74,0x6f,0x20,0x42,0x61,0x73,0x65,0x36,0x34, + 0x2c,0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x61,0x6e,0x79,0x20,0x65,0x78, + 0x74,0x72,0x61,0x20,0x70,0x61,0x72,0x73,0x69,0x6e,0x67,0x20,0x28,0x77,0x72,0x61, + 0x70,0x70,0x69,0x6e,0x67,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x64,0x61,0x74,0x61,0x20,0x28, + 0x73,0x74,0x72,0x69,0x6e,0x67,0x29,0x20,0x64,0x61,0x74,0x61,0x20,0x74,0x6f,0x20, + 0x65,0x6e,0x63,0x6f,0x64,0x65,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x65,0x63,0x6f,0x64,0x65,0x64,0x20,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x0a,0x20,0x20,0x20,0x20,0x72,0x61,0x77,0x62,0x36,0x34,0x20, + 0x3d,0x20,0x61,0x70,0x72,0x2e,0x62,0x61,0x73,0x65,0x36,0x34,0x5f,0x65,0x6e,0x63, + 0x6f,0x64,0x65,0x2c,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x20,0x44,0x65, + 0x63,0x6f,0x64,0x65,0x73,0x20,0x62,0x61,0x73,0x65,0x36,0x34,0x20,0x64,0x61,0x74, + 0x61,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20, + 0x64,0x61,0x74,0x61,0x20,0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x29,0x20,0x62,0x61, + 0x73,0x65,0x36,0x34,0x20,0x65,0x6e,0x63,0x6f,0x64,0x65,0x64,0x20,0x64,0x61,0x74, + 0x61,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x64,0x65,0x63,0x6f,0x64,0x65,0x64,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x0a, + 0x20,0x20,0x20,0x20,0x75,0x6e,0x62,0x36,0x34,0x20,0x3d,0x20,0x61,0x70,0x72,0x2e, + 0x62,0x61,0x73,0x65,0x36,0x34,0x5f,0x64,0x65,0x63,0x6f,0x64,0x65,0x2c,0x0a,0x7d, + 0x0a,0x0a,0x65,0x6e,0x64,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x45,0x6e,0x64,0x20,0x6f,0x66, + 0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e, + 0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x61,0x70,0x72,0x0a,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x0a,0x2d,0x2d,0x20,0x20,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x64,0x65,0x62,0x75, + 0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x6c, + 0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74,0x0a,0x70,0x61,0x63,0x6b,0x61,0x67,0x65, + 0x2e,0x70,0x72,0x65,0x6c,0x6f,0x61,0x64,0x5b,0x22,0x64,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61, + 0x73,0x6f,0x63,0x6b,0x65,0x74,0x22,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x70,0x79, + 0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x32,0x30,0x31,0x31,0x2d,0x32, + 0x30,0x31,0x32,0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65,0x6c, + 0x65,0x73,0x73,0x20,0x61,0x6e,0x64,0x20,0x6f,0x74,0x68,0x65,0x72,0x73,0x2e,0x0a, + 0x2d,0x2d,0x20,0x41,0x6c,0x6c,0x20,0x72,0x69,0x67,0x68,0x74,0x73,0x20,0x72,0x65, + 0x73,0x65,0x72,0x76,0x65,0x64,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6f, + 0x67,0x72,0x61,0x6d,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x20,0x61,0x63,0x63, + 0x6f,0x6d,0x70,0x61,0x6e,0x79,0x69,0x6e,0x67,0x20,0x6d,0x61,0x74,0x65,0x72,0x69, + 0x61,0x6c,0x73,0x0a,0x2d,0x2d,0x20,0x61,0x72,0x65,0x20,0x6d,0x61,0x64,0x65,0x20, + 0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x75,0x6e,0x64,0x65,0x72,0x20, + 0x74,0x68,0x65,0x20,0x74,0x65,0x72,0x6d,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65, + 0x20,0x45,0x63,0x6c,0x69,0x70,0x73,0x65,0x20,0x50,0x75,0x62,0x6c,0x69,0x63,0x20, + 0x4c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x76,0x31,0x2e,0x30,0x0a,0x2d,0x2d,0x20, + 0x77,0x68,0x69,0x63,0x68,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70,0x61,0x6e,0x69,0x65, + 0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x64,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74, + 0x69,0x6f,0x6e,0x2c,0x20,0x61,0x6e,0x64,0x20,0x69,0x73,0x20,0x61,0x76,0x61,0x69, + 0x6c,0x61,0x62,0x6c,0x65,0x20,0x61,0x74,0x0a,0x2d,0x2d,0x20,0x68,0x74,0x74,0x70, + 0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x65,0x63,0x6c,0x69,0x70,0x73,0x65,0x2e,0x6f, + 0x72,0x67,0x2f,0x6c,0x65,0x67,0x61,0x6c,0x2f,0x65,0x70,0x6c,0x2d,0x76,0x31,0x30, + 0x2e,0x68,0x74,0x6d,0x6c,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x74, + 0x72,0x69,0x62,0x75,0x74,0x6f,0x72,0x73,0x3a,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20, + 0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65,0x6c,0x65,0x73,0x73, + 0x20,0x2d,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x20,0x41,0x50,0x49,0x20,0x61, + 0x6e,0x64,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f, + 0x6e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x0a,0x2d,0x2d,0x20,0x4c,0x75,0x61,0x53,0x6f,0x63,0x6b,0x65,0x74,0x20,0x62, + 0x61,0x63,0x6b,0x65,0x6e,0x64,0x20,0x66,0x6f,0x72,0x20,0x44,0x42,0x47,0x50,0x20, + 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x2d,0x2d,0x20,0x69,0x6e, + 0x20,0x6f,0x72,0x64,0x65,0x72,0x20,0x74,0x6f,0x20,0x62,0x65,0x20,0x61,0x73,0x20, + 0x6c,0x69,0x67,0x68,0x74,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x61,0x73,0x20,0x70, + 0x6f,0x73,0x73,0x69,0x62,0x6c,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x4c,0x75,0x61, + 0x73,0x6f,0x63,0x6b,0x65,0x74,0x2c,0x20,0x63,0x6f,0x72,0x65,0x20,0x41,0x50,0x49, + 0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x0a,0x2d,0x2d,0x20,0x64,0x69,0x72,0x65, + 0x63,0x74,0x6c,0x79,0x20,0x28,0x74,0x6f,0x20,0x6e,0x6f,0x20,0x61,0x64,0x64,0x20, + 0x79,0x65,0x74,0x20,0x61,0x6e,0x6f,0x74,0x68,0x65,0x72,0x20,0x6c,0x61,0x79,0x65, + 0x72,0x29,0x0a,0x0a,0x2d,0x2d,0x46,0x49,0x58,0x4d,0x45,0x3a,0x20,0x72,0x65,0x6d, + 0x6f,0x76,0x65,0x20,0x74,0x68,0x69,0x73,0x20,0x68,0x61,0x63,0x6b,0x20,0x61,0x73, + 0x20,0x73,0x6f,0x6f,0x6e,0x20,0x61,0x73,0x20,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b, + 0x65,0x74,0x20,0x6f,0x66,0x66,0x69,0x63,0x69,0x61,0x6c,0x6c,0x79,0x20,0x73,0x75, + 0x70,0x70,0x6f,0x72,0x74,0x20,0x35,0x2e,0x32,0x0a,0x69,0x66,0x20,0x5f,0x56,0x45, + 0x52,0x53,0x49,0x4f,0x4e,0x20,0x3d,0x3d,0x20,0x22,0x4c,0x75,0x61,0x20,0x35,0x2e, + 0x32,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e, + 0x67,0x65,0x74,0x6e,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28, + 0x74,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x20,0x61,0x6e,0x64,0x20, + 0x23,0x74,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x73,0x6f,0x63,0x6b,0x65,0x74,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69, + 0x72,0x65,0x20,0x22,0x73,0x6f,0x63,0x6b,0x65,0x74,0x22,0x0a,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x6d,0x69,0x6d,0x65,0x20,0x20,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69, + 0x72,0x65,0x20,0x22,0x6d,0x69,0x6d,0x65,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x6c,0x74,0x6e,0x31,0x32,0x20,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65, + 0x20,0x22,0x6c,0x74,0x6e,0x31,0x32,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72, + 0x65,0x67,0x20,0x3d,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x67,0x65,0x74,0x72,0x65, + 0x67,0x69,0x73,0x74,0x72,0x79,0x28,0x29,0x0a,0x0a,0x0a,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x3d, + 0x20,0x73,0x6f,0x63,0x6b,0x65,0x74,0x2e,0x74,0x63,0x70,0x2c,0x0a,0x20,0x20,0x20, + 0x20,0x73,0x6c,0x65,0x65,0x70,0x20,0x20,0x3d,0x20,0x73,0x6f,0x63,0x6b,0x65,0x74, + 0x2e,0x73,0x6c,0x65,0x65,0x70,0x2c,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x42,0x61,0x73,0x65,0x36,0x34,0x20,0x72,0x65,0x6c,0x61,0x74,0x65,0x64,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d, + 0x20,0x45,0x6e,0x63,0x6f,0x64,0x65,0x73,0x20,0x61,0x20,0x73,0x74,0x72,0x69,0x6e, + 0x67,0x20,0x69,0x6e,0x74,0x6f,0x20,0x42,0x61,0x73,0x65,0x36,0x34,0x20,0x77,0x69, + 0x74,0x68,0x20,0x6c,0x69,0x6e,0x65,0x20,0x77,0x72,0x61,0x70,0x70,0x69,0x6e,0x67, + 0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x64, + 0x61,0x74,0x61,0x20,0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x29,0x20,0x64,0x61,0x74, + 0x61,0x20,0x74,0x6f,0x20,0x65,0x6e,0x63,0x6f,0x64,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61,0x73,0x65,0x36, + 0x34,0x20,0x65,0x6e,0x63,0x6f,0x64,0x65,0x64,0x20,0x73,0x74,0x72,0x69,0x6e,0x67, + 0x0a,0x20,0x20,0x20,0x20,0x62,0x36,0x34,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x64,0x61,0x74,0x61,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x20,0x3d, + 0x20,0x6c,0x74,0x6e,0x31,0x32,0x2e,0x66,0x69,0x6c,0x74,0x65,0x72,0x2e,0x63,0x68, + 0x61,0x69,0x6e,0x28,0x6d,0x69,0x6d,0x65,0x2e,0x65,0x6e,0x63,0x6f,0x64,0x65,0x28, + 0x22,0x62,0x61,0x73,0x65,0x36,0x34,0x22,0x29,0x2c,0x20,0x6d,0x69,0x6d,0x65,0x2e, + 0x77,0x72,0x61,0x70,0x28,0x22,0x62,0x61,0x73,0x65,0x36,0x34,0x22,0x29,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x69, + 0x6e,0x6b,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x3d,0x20,0x6c,0x74,0x6e, + 0x31,0x32,0x2e,0x73,0x69,0x6e,0x6b,0x2e,0x74,0x61,0x62,0x6c,0x65,0x28,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x74,0x6e,0x31,0x32,0x2e,0x70,0x75, + 0x6d,0x70,0x2e,0x61,0x6c,0x6c,0x28,0x6c,0x74,0x6e,0x31,0x32,0x2e,0x73,0x6f,0x75, + 0x72,0x63,0x65,0x2e,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x64,0x61,0x74,0x61,0x29, + 0x2c,0x20,0x6c,0x74,0x6e,0x31,0x32,0x2e,0x73,0x69,0x6e,0x6b,0x2e,0x63,0x68,0x61, + 0x69,0x6e,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x2c,0x20,0x73,0x69,0x6e,0x6b,0x29, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x6f,0x75, + 0x74,0x70,0x75,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x0a, + 0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x20,0x45,0x6e,0x63,0x6f,0x64,0x65,0x73,0x20, + 0x61,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x69,0x6e,0x74,0x6f,0x20,0x42,0x61, + 0x73,0x65,0x36,0x34,0x2c,0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x61,0x6e, + 0x79,0x20,0x65,0x78,0x74,0x72,0x61,0x20,0x70,0x61,0x72,0x73,0x69,0x6e,0x67,0x20, + 0x28,0x77,0x72,0x61,0x70,0x70,0x69,0x6e,0x67,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x64,0x61, + 0x74,0x61,0x20,0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x29,0x20,0x64,0x61,0x74,0x61, + 0x20,0x74,0x6f,0x20,0x65,0x6e,0x63,0x6f,0x64,0x65,0x0a,0x20,0x20,0x20,0x20,0x2d, + 0x2d,0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x65,0x63,0x6f,0x64,0x65, + 0x64,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x0a,0x20,0x20,0x20,0x20,0x72,0x61,0x77, + 0x62,0x36,0x34,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x64, + 0x61,0x74,0x61,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x28,0x6d,0x69,0x6d,0x65,0x2e,0x62,0x36,0x34,0x28,0x64,0x61, + 0x74,0x61,0x29,0x29,0x20,0x2d,0x2d,0x20,0x66,0x69,0x72,0x73,0x74,0x20,0x72,0x65, + 0x73,0x75,0x6c,0x74,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x6c,0x6f,0x77,0x2d, + 0x6c,0x65,0x76,0x65,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69, + 0x73,0x20,0x66,0x69,0x6e,0x65,0x20,0x68,0x65,0x72,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x65,0x6e,0x64,0x2c,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x20,0x44,0x65, + 0x63,0x6f,0x64,0x65,0x73,0x20,0x62,0x61,0x73,0x65,0x36,0x34,0x20,0x64,0x61,0x74, + 0x61,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20, + 0x64,0x61,0x74,0x61,0x20,0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x29,0x20,0x62,0x61, + 0x73,0x65,0x36,0x34,0x20,0x65,0x6e,0x63,0x6f,0x64,0x65,0x64,0x20,0x64,0x61,0x74, + 0x61,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x64,0x65,0x63,0x6f,0x64,0x65,0x64,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x0a, + 0x20,0x20,0x20,0x20,0x75,0x6e,0x62,0x36,0x34,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x28,0x64,0x61,0x74,0x61,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x6d,0x69,0x6d,0x65,0x2e, + 0x75,0x6e,0x62,0x36,0x34,0x28,0x64,0x61,0x74,0x61,0x29,0x29,0x20,0x2d,0x2d,0x20, + 0x66,0x69,0x72,0x73,0x74,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x6f,0x66,0x20, + 0x74,0x68,0x65,0x20,0x6c,0x6f,0x77,0x2d,0x6c,0x65,0x76,0x65,0x6c,0x20,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x66,0x69,0x6e,0x65,0x20,0x68, + 0x65,0x72,0x65,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x7d,0x0a,0x0a, + 0x65,0x6e,0x64,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x45,0x6e,0x64,0x20,0x6f,0x66,0x20,0x6d, + 0x6f,0x64,0x75,0x6c,0x65,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72, + 0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65, + 0x74,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x20,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20, + 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f, + 0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74,0x5f,0x73,0x63,0x68, + 0x65,0x64,0x0a,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x2e,0x70,0x72,0x65,0x6c,0x6f, + 0x61,0x64,0x5b,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61, + 0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74, + 0x5f,0x73,0x63,0x68,0x65,0x64,0x22,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x70,0x79, + 0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x32,0x30,0x31,0x31,0x2d,0x32, + 0x30,0x31,0x32,0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65,0x6c, + 0x65,0x73,0x73,0x20,0x61,0x6e,0x64,0x20,0x6f,0x74,0x68,0x65,0x72,0x73,0x2e,0x0a, + 0x2d,0x2d,0x20,0x41,0x6c,0x6c,0x20,0x72,0x69,0x67,0x68,0x74,0x73,0x20,0x72,0x65, + 0x73,0x65,0x72,0x76,0x65,0x64,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6f, + 0x67,0x72,0x61,0x6d,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x20,0x61,0x63,0x63, + 0x6f,0x6d,0x70,0x61,0x6e,0x79,0x69,0x6e,0x67,0x20,0x6d,0x61,0x74,0x65,0x72,0x69, + 0x61,0x6c,0x73,0x0a,0x2d,0x2d,0x20,0x61,0x72,0x65,0x20,0x6d,0x61,0x64,0x65,0x20, + 0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x75,0x6e,0x64,0x65,0x72,0x20, + 0x74,0x68,0x65,0x20,0x74,0x65,0x72,0x6d,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65, + 0x20,0x45,0x63,0x6c,0x69,0x70,0x73,0x65,0x20,0x50,0x75,0x62,0x6c,0x69,0x63,0x20, + 0x4c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x76,0x31,0x2e,0x30,0x0a,0x2d,0x2d,0x20, + 0x77,0x68,0x69,0x63,0x68,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70,0x61,0x6e,0x69,0x65, + 0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x64,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74, + 0x69,0x6f,0x6e,0x2c,0x20,0x61,0x6e,0x64,0x20,0x69,0x73,0x20,0x61,0x76,0x61,0x69, + 0x6c,0x61,0x62,0x6c,0x65,0x20,0x61,0x74,0x0a,0x2d,0x2d,0x20,0x68,0x74,0x74,0x70, + 0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x65,0x63,0x6c,0x69,0x70,0x73,0x65,0x2e,0x6f, + 0x72,0x67,0x2f,0x6c,0x65,0x67,0x61,0x6c,0x2f,0x65,0x70,0x6c,0x2d,0x76,0x31,0x30, + 0x2e,0x68,0x74,0x6d,0x6c,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x74, + 0x72,0x69,0x62,0x75,0x74,0x6f,0x72,0x73,0x3a,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20, + 0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65,0x6c,0x65,0x73,0x73, + 0x20,0x2d,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x20,0x41,0x50,0x49,0x20,0x61, + 0x6e,0x64,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f, + 0x6e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x0a,0x2d,0x2d,0x20,0x4c,0x75,0x61,0x53,0x6f,0x63,0x6b,0x65,0x74,0x20,0x77, + 0x69,0x74,0x68,0x20,0x4c,0x75,0x61,0x53,0x63,0x68,0x65,0x64,0x20,0x62,0x61,0x63, + 0x6b,0x65,0x6e,0x64,0x20,0x66,0x6f,0x72,0x20,0x44,0x42,0x47,0x50,0x20,0x64,0x65, + 0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x2d,0x2d,0x20,0x41,0x73,0x20,0x4c, + 0x75,0x61,0x53,0x68,0x65,0x64,0x20,0x74,0x6f,0x74,0x61,0x6c,0x6c,0x79,0x20,0x68, + 0x69,0x64,0x65,0x73,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x20,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x2c,0x20,0x74,0x68,0x69,0x73,0x20,0x6d,0x6f, + 0x64,0x75,0x6c,0x65,0x20,0x4d,0x55,0x53,0x54,0x20,0x62,0x65,0x20,0x6c,0x6f,0x61, + 0x64,0x65,0x64,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x76,0x65,0x72,0x79,0x20, + 0x73,0x74,0x61,0x72,0x74,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6f, + 0x67,0x72,0x61,0x6d,0x0a,0x2d,0x2d,0x20,0x28,0x62,0x65,0x66,0x6f,0x72,0x65,0x20, + 0x6c,0x6f,0x61,0x64,0x69,0x6e,0x67,0x20,0x73,0x63,0x68,0x65,0x64,0x29,0x20,0x74, + 0x6f,0x20,0x63,0x61,0x74,0x63,0x68,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63, + 0x65,0x73,0x20,0x74,0x6f,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x2e,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x73,0x6f,0x63,0x6b,0x65,0x74,0x63,0x6f,0x72,0x65,0x20,0x3d,0x20,0x72,0x65, + 0x71,0x75,0x69,0x72,0x65,0x22,0x73,0x6f,0x63,0x6b,0x65,0x74,0x2e,0x63,0x6f,0x72, + 0x65,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x20, + 0x20,0x20,0x20,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x64, + 0x65,0x62,0x75,0x67,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x67,0x20, + 0x3d,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x67,0x65,0x74,0x72,0x65,0x67,0x69,0x73, + 0x74,0x72,0x79,0x28,0x29,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x6c,0x6f, + 0x63,0x6b,0x69,0x6e,0x67,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x20,0x3d,0x20,0x73, + 0x6f,0x63,0x6b,0x65,0x74,0x63,0x6f,0x72,0x65,0x2e,0x74,0x63,0x70,0x0a,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x73,0x6c,0x65,0x65, + 0x70,0x20,0x20,0x20,0x3d,0x20,0x73,0x6f,0x63,0x6b,0x65,0x74,0x63,0x6f,0x72,0x65, + 0x2e,0x73,0x6c,0x65,0x65,0x70,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x6c, + 0x6f,0x63,0x6b,0x69,0x6e,0x67,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x20,0x20, + 0x20,0x3d,0x20,0x72,0x65,0x67,0x5b,0x22,0x74,0x63,0x70,0x7b,0x6d,0x61,0x73,0x74, + 0x65,0x72,0x7d,0x22,0x5d,0x2e,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x6f, + 0x6e,0x6e,0x65,0x63,0x74,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x6c,0x6f,0x63, + 0x6b,0x69,0x6e,0x67,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x20,0x20,0x20,0x20,0x3d, + 0x20,0x72,0x65,0x67,0x5b,0x22,0x74,0x63,0x70,0x7b,0x63,0x6c,0x69,0x65,0x6e,0x74, + 0x7d,0x22,0x5d,0x2e,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x72,0x65,0x63,0x65, + 0x69,0x76,0x65,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69, + 0x6e,0x67,0x73,0x65,0x6e,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x72, + 0x65,0x67,0x5b,0x22,0x74,0x63,0x70,0x7b,0x63,0x6c,0x69,0x65,0x6e,0x74,0x7d,0x22, + 0x5d,0x2e,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x73,0x65,0x6e,0x64,0x0a,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x73,0x65,0x74, + 0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x20,0x3d,0x20,0x72,0x65,0x67,0x5b,0x22,0x74, + 0x63,0x70,0x7b,0x6d,0x61,0x73,0x74,0x65,0x72,0x7d,0x22,0x5d,0x2e,0x5f,0x5f,0x69, + 0x6e,0x64,0x65,0x78,0x2e,0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x0a, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x63,0x6c, + 0x6f,0x73,0x65,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x72,0x65,0x67,0x5b,0x22, + 0x74,0x63,0x70,0x7b,0x6d,0x61,0x73,0x74,0x65,0x72,0x7d,0x22,0x5d,0x2e,0x5f,0x5f, + 0x69,0x6e,0x64,0x65,0x78,0x2e,0x63,0x6c,0x6f,0x73,0x65,0x0a,0x0a,0x2d,0x2d,0x20, + 0x77,0x65,0x20,0x63,0x61,0x6e,0x6e,0x6f,0x74,0x20,0x73,0x65,0x74,0x20,0x61,0x20, + 0x6e,0x65,0x77,0x20,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x20,0x64,0x69, + 0x72,0x65,0x63,0x74,0x6c,0x79,0x20,0x6f,0x6e,0x20,0x73,0x6f,0x63,0x6b,0x65,0x74, + 0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x2c,0x20,0x73,0x6f,0x20,0x77,0x72,0x61,0x70, + 0x20,0x69,0x74,0x20,0x69,0x6e,0x74,0x6f,0x20,0x61,0x20,0x6e,0x65,0x77,0x20,0x74, + 0x61,0x62,0x6c,0x65,0x0a,0x2d,0x2d,0x20,0x61,0x6e,0x64,0x20,0x66,0x6f,0x72,0x77, + 0x61,0x72,0x64,0x20,0x61,0x6c,0x6c,0x20,0x63,0x61,0x6c,0x6c,0x73,0x2e,0x0a,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x74,0x63,0x70, + 0x20,0x3d,0x20,0x7b,0x0a,0x20,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x20, + 0x20,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c, + 0x66,0x2c,0x20,0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x2c,0x20,0x70,0x6f,0x72,0x74, + 0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e, + 0x67,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b, + 0x74,0x2c,0x20,0x61,0x64,0x64,0x72,0x65,0x73,0x73,0x2c,0x20,0x70,0x6f,0x72,0x74, + 0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x72,0x65,0x63,0x65,0x69,0x76,0x65, + 0x20,0x20,0x20,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73, + 0x65,0x6c,0x66,0x2c,0x20,0x6e,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x6c,0x6f,0x63,0x6b, + 0x69,0x6e,0x67,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x28,0x73,0x65,0x6c,0x66,0x2e, + 0x73,0x6b,0x74,0x2c,0x20,0x6e,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x73, + 0x65,0x6e,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x64,0x61,0x74,0x61,0x29, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x73,0x65,0x6e,0x64,0x28,0x73,0x65, + 0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x64,0x61,0x74,0x61,0x29,0x20,0x65,0x6e, + 0x64,0x2c,0x0a,0x20,0x20,0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x20, + 0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c, + 0x20,0x73,0x65,0x63,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x73, + 0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73, + 0x6b,0x74,0x2c,0x20,0x73,0x65,0x63,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20, + 0x63,0x6c,0x6f,0x73,0x65,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x29,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x63,0x6c,0x6f,0x73,0x65,0x28, + 0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x7d, + 0x0a,0x0a,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x74,0x63,0x70,0x2e,0x5f,0x5f, + 0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67, + 0x74,0x63,0x70,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6d,0x69,0x6d,0x65,0x20, + 0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x6d,0x69,0x6d,0x65, + 0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6c,0x74,0x6e,0x31,0x32,0x20,0x3d,0x20, + 0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x6c,0x74,0x6e,0x31,0x32,0x22,0x0a, + 0x0a,0x2d,0x2d,0x20,0x76,0x65,0x72,0x69,0x66,0x79,0x20,0x74,0x68,0x61,0x74,0x20, + 0x74,0x68,0x65,0x20,0x73,0x6f,0x63,0x6b,0x65,0x74,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x20,0x61,0x72,0x65,0x20,0x74,0x68,0x65,0x20,0x72,0x65,0x61,0x6c, + 0x20,0x6f,0x6e,0x65,0x73,0x20,0x61,0x6e,0x64,0x20,0x6e,0x6f,0x74,0x20,0x73,0x63, + 0x68,0x65,0x64,0x20,0x6e,0x6f,0x74,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67, + 0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x73,0x0a,0x61,0x73,0x73,0x65,0x72,0x74, + 0x28,0x64,0x65,0x62,0x75,0x67,0x2e,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x62, + 0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x63,0x72,0x65,0x61,0x74,0x65,0x2c,0x20,0x22, + 0x53,0x22,0x29,0x2e,0x77,0x68,0x61,0x74,0x20,0x3d,0x3d,0x20,0x22,0x43,0x22,0x2c, + 0x20,0x22,0x54,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x6e, + 0x65,0x65,0x64,0x73,0x20,0x74,0x68,0x65,0x20,0x72,0x65,0x61,0x6c,0x20,0x73,0x6f, + 0x63,0x6b,0x65,0x74,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x21, + 0x22,0x29,0x0a,0x2d,0x2d,0x20,0x63,0x6c,0x65,0x61,0x6e,0x75,0x70,0x20,0x74,0x68, + 0x65,0x20,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x2e,0x6c,0x6f,0x61,0x64,0x65,0x64, + 0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x28,0x73,0x6f,0x63,0x6b,0x65,0x74,0x2e,0x63, + 0x6f,0x72,0x65,0x20,0x61,0x64,0x64,0x73,0x20,0x73,0x6f,0x63,0x6b,0x65,0x74,0x20, + 0x66,0x69,0x65,0x6c,0x64,0x20,0x69,0x6e,0x74,0x6f,0x20,0x69,0x74,0x29,0x0a,0x70, + 0x61,0x63,0x6b,0x61,0x67,0x65,0x2e,0x6c,0x6f,0x61,0x64,0x65,0x64,0x2e,0x73,0x6f, + 0x63,0x6b,0x65,0x74,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x0a,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x20, + 0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65, + 0x28,0x7b,0x20,0x73,0x6b,0x74,0x20,0x3d,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e, + 0x67,0x63,0x72,0x65,0x61,0x74,0x65,0x28,0x29,0x20,0x7d,0x2c,0x20,0x62,0x6c,0x6f, + 0x63,0x6b,0x69,0x6e,0x67,0x74,0x63,0x70,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x73,0x6c,0x65,0x65,0x70,0x20,0x20,0x3d,0x20,0x62,0x6c,0x6f,0x63, + 0x6b,0x69,0x6e,0x67,0x73,0x6c,0x65,0x65,0x70,0x2c,0x0a,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x42,0x61,0x73,0x65,0x36,0x34,0x20,0x72,0x65,0x6c,0x61,0x74,0x65, + 0x64,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x2d,0x20,0x45,0x6e,0x63,0x6f,0x64,0x65,0x73,0x20,0x61,0x20,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x20,0x69,0x6e,0x74,0x6f,0x20,0x42,0x61,0x73,0x65,0x36,0x34, + 0x20,0x77,0x69,0x74,0x68,0x20,0x6c,0x69,0x6e,0x65,0x20,0x77,0x72,0x61,0x70,0x70, + 0x69,0x6e,0x67,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61, + 0x6d,0x20,0x64,0x61,0x74,0x61,0x20,0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x29,0x20, + 0x64,0x61,0x74,0x61,0x20,0x74,0x6f,0x20,0x65,0x6e,0x63,0x6f,0x64,0x65,0x0a,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61, + 0x73,0x65,0x36,0x34,0x20,0x65,0x6e,0x63,0x6f,0x64,0x65,0x64,0x20,0x73,0x74,0x72, + 0x69,0x6e,0x67,0x0a,0x20,0x20,0x20,0x20,0x62,0x36,0x34,0x20,0x3d,0x20,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x64,0x61,0x74,0x61,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x69,0x6c,0x74,0x65, + 0x72,0x20,0x3d,0x20,0x6c,0x74,0x6e,0x31,0x32,0x2e,0x66,0x69,0x6c,0x74,0x65,0x72, + 0x2e,0x63,0x68,0x61,0x69,0x6e,0x28,0x6d,0x69,0x6d,0x65,0x2e,0x65,0x6e,0x63,0x6f, + 0x64,0x65,0x28,0x22,0x62,0x61,0x73,0x65,0x36,0x34,0x22,0x29,0x2c,0x20,0x6d,0x69, + 0x6d,0x65,0x2e,0x77,0x72,0x61,0x70,0x28,0x22,0x62,0x61,0x73,0x65,0x36,0x34,0x22, + 0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x73,0x69,0x6e,0x6b,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x3d,0x20, + 0x6c,0x74,0x6e,0x31,0x32,0x2e,0x73,0x69,0x6e,0x6b,0x2e,0x74,0x61,0x62,0x6c,0x65, + 0x28,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x74,0x6e,0x31,0x32, + 0x2e,0x70,0x75,0x6d,0x70,0x2e,0x61,0x6c,0x6c,0x28,0x6c,0x74,0x6e,0x31,0x32,0x2e, + 0x73,0x6f,0x75,0x72,0x63,0x65,0x2e,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x64,0x61, + 0x74,0x61,0x29,0x2c,0x20,0x6c,0x74,0x6e,0x31,0x32,0x2e,0x73,0x69,0x6e,0x6b,0x2e, + 0x63,0x68,0x61,0x69,0x6e,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x2c,0x20,0x73,0x69, + 0x6e,0x6b,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74, + 0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64, + 0x2c,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x20,0x45,0x6e,0x63,0x6f,0x64, + 0x65,0x73,0x20,0x61,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x69,0x6e,0x74,0x6f, + 0x20,0x42,0x61,0x73,0x65,0x36,0x34,0x2c,0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74, + 0x20,0x61,0x6e,0x79,0x20,0x65,0x78,0x74,0x72,0x61,0x20,0x70,0x61,0x72,0x73,0x69, + 0x6e,0x67,0x20,0x28,0x77,0x72,0x61,0x70,0x70,0x69,0x6e,0x67,0x2c,0x20,0x2e,0x2e, + 0x2e,0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d, + 0x20,0x64,0x61,0x74,0x61,0x20,0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x29,0x20,0x64, + 0x61,0x74,0x61,0x20,0x74,0x6f,0x20,0x65,0x6e,0x63,0x6f,0x64,0x65,0x0a,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x65,0x63, + 0x6f,0x64,0x65,0x64,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x0a,0x20,0x20,0x20,0x20, + 0x72,0x61,0x77,0x62,0x36,0x34,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x28,0x64,0x61,0x74,0x61,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x6d,0x69,0x6d,0x65,0x2e,0x62,0x36,0x34, + 0x28,0x64,0x61,0x74,0x61,0x29,0x29,0x20,0x2d,0x2d,0x20,0x66,0x69,0x72,0x73,0x74, + 0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x6c, + 0x6f,0x77,0x2d,0x6c,0x65,0x76,0x65,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x69,0x73,0x20,0x66,0x69,0x6e,0x65,0x20,0x68,0x65,0x72,0x65,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d, + 0x20,0x44,0x65,0x63,0x6f,0x64,0x65,0x73,0x20,0x62,0x61,0x73,0x65,0x36,0x34,0x20, + 0x64,0x61,0x74,0x61,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72, + 0x61,0x6d,0x20,0x64,0x61,0x74,0x61,0x20,0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x29, + 0x20,0x62,0x61,0x73,0x65,0x36,0x34,0x20,0x65,0x6e,0x63,0x6f,0x64,0x65,0x64,0x20, + 0x64,0x61,0x74,0x61,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x64,0x65,0x63,0x6f,0x64,0x65,0x64,0x20,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x0a,0x20,0x20,0x20,0x20,0x75,0x6e,0x62,0x36,0x34,0x20,0x3d,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x64,0x61,0x74,0x61,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x6d,0x69, + 0x6d,0x65,0x2e,0x75,0x6e,0x62,0x36,0x34,0x28,0x64,0x61,0x74,0x61,0x29,0x29,0x20, + 0x2d,0x2d,0x20,0x66,0x69,0x72,0x73,0x74,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20, + 0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x6c,0x6f,0x77,0x2d,0x6c,0x65,0x76,0x65,0x6c, + 0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x66,0x69,0x6e, + 0x65,0x20,0x68,0x65,0x72,0x65,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a, + 0x7d,0x0a,0x0a,0x65,0x6e,0x64,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x45,0x6e,0x64,0x20,0x6f, + 0x66,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, + 0x2e,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x6c,0x75,0x61,0x73,0x6f, + 0x63,0x6b,0x65,0x74,0x5f,0x73,0x63,0x68,0x65,0x64,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d, + 0x20,0x20,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x2e,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x0a,0x70,0x61,0x63,0x6b,0x61, + 0x67,0x65,0x2e,0x70,0x72,0x65,0x6c,0x6f,0x61,0x64,0x5b,0x22,0x64,0x65,0x62,0x75, + 0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x22,0x5d,0x20, + 0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x2e,0x2e,0x2e,0x29,0x0a, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a, + 0x2d,0x2d,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29, + 0x20,0x32,0x30,0x31,0x31,0x2d,0x32,0x30,0x31,0x32,0x20,0x53,0x69,0x65,0x72,0x72, + 0x61,0x20,0x57,0x69,0x72,0x65,0x6c,0x65,0x73,0x73,0x20,0x61,0x6e,0x64,0x20,0x6f, + 0x74,0x68,0x65,0x72,0x73,0x2e,0x0a,0x2d,0x2d,0x20,0x41,0x6c,0x6c,0x20,0x72,0x69, + 0x67,0x68,0x74,0x73,0x20,0x72,0x65,0x73,0x65,0x72,0x76,0x65,0x64,0x2e,0x20,0x54, + 0x68,0x69,0x73,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,0x61,0x6e,0x64,0x20, + 0x74,0x68,0x65,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70,0x61,0x6e,0x79,0x69,0x6e,0x67, + 0x20,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x73,0x0a,0x2d,0x2d,0x20,0x61,0x72, + 0x65,0x20,0x6d,0x61,0x64,0x65,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65, + 0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x74,0x65,0x72,0x6d,0x73, + 0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x45,0x63,0x6c,0x69,0x70,0x73,0x65,0x20, + 0x50,0x75,0x62,0x6c,0x69,0x63,0x20,0x4c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x76, + 0x31,0x2e,0x30,0x0a,0x2d,0x2d,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x61,0x63,0x63, + 0x6f,0x6d,0x70,0x61,0x6e,0x69,0x65,0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x64,0x69, + 0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x61,0x6e,0x64,0x20, + 0x69,0x73,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x61,0x74,0x0a, + 0x2d,0x2d,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x65,0x63, + 0x6c,0x69,0x70,0x73,0x65,0x2e,0x6f,0x72,0x67,0x2f,0x6c,0x65,0x67,0x61,0x6c,0x2f, + 0x65,0x70,0x6c,0x2d,0x76,0x31,0x30,0x2e,0x68,0x74,0x6d,0x6c,0x0a,0x2d,0x2d,0x0a, + 0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x74,0x72,0x69,0x62,0x75,0x74,0x6f,0x72,0x73,0x3a, + 0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57, + 0x69,0x72,0x65,0x6c,0x65,0x73,0x73,0x20,0x2d,0x20,0x69,0x6e,0x69,0x74,0x69,0x61, + 0x6c,0x20,0x41,0x50,0x49,0x20,0x61,0x6e,0x64,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d, + 0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x6d,0x6d, + 0x61,0x6e,0x64,0x73,0x20,0x68,0x61,0x6e,0x64,0x6c,0x65,0x72,0x73,0x20,0x66,0x6f, + 0x72,0x20,0x44,0x42,0x47,0x70,0x20,0x70,0x72,0x6f,0x74,0x6f,0x63,0x6f,0x6c,0x2e, + 0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x0a,0x2d,0x2d,0x20,0x44,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x63,0x6f,0x6d, + 0x6d,0x61,0x6e,0x64,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x2e,0x20, + 0x45,0x61,0x63,0x68,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x61, + 0x6e,0x64,0x6c,0x65,0x20,0x61,0x20,0x64,0x69,0x66,0x66,0x65,0x72,0x65,0x6e,0x74, + 0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x2e,0x0a,0x2d,0x2d,0x20,0x41,0x20,0x63, + 0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20, + 0x69,0x73,0x20,0x63,0x61,0x6c,0x6c,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x33, + 0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x0a,0x2d,0x2d,0x20,0x20,0x20, + 0x31,0x2e,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x73,0x65,0x73, + 0x73,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x0a,0x2d,0x2d, + 0x20,0x20,0x20,0x32,0x2e,0x20,0x74,0x68,0x65,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e, + 0x64,0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x20,0x61,0x73,0x20,0x74, + 0x61,0x62,0x6c,0x65,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x33,0x2e,0x20,0x74,0x68,0x65, + 0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x64,0x61,0x74,0x61,0x2c,0x20,0x69, + 0x66,0x20,0x61,0x6e,0x79,0x0a,0x2d,0x2d,0x20,0x54,0x68,0x65,0x20,0x72,0x65,0x73, + 0x75,0x6c,0x74,0x20,0x69,0x73,0x20,0x65,0x69,0x74,0x68,0x65,0x72,0x20,0x3a,0x0a, + 0x2d,0x2d,0x20,0x20,0x20,0x2a,0x20,0x74,0x72,0x75,0x65,0x20,0x28,0x6f,0x72,0x20, + 0x61,0x6e,0x79,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x65,0x76,0x61,0x6c,0x75,0x61, + 0x74,0x65,0x64,0x20,0x74,0x6f,0x20,0x74,0x72,0x75,0x65,0x29,0x20,0x3a,0x20,0x74, + 0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x77,0x69,0x6c,0x6c, + 0x20,0x72,0x65,0x73,0x75,0x6d,0x65,0x20,0x74,0x68,0x65,0x20,0x65,0x78,0x65,0x63, + 0x75,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x61,0x70,0x70, + 0x6c,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x28,0x63,0x6f,0x6e,0x74,0x69,0x6e, + 0x75,0x61,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x29,0x0a, + 0x2d,0x2d,0x20,0x20,0x20,0x2a,0x20,0x66,0x61,0x6c,0x73,0x65,0x20,0x3a,0x20,0x6f, + 0x6e,0x6c,0x79,0x20,0x69,0x6e,0x20,0x61,0x73,0x79,0x6e,0x63,0x20,0x6d,0x6f,0x64, + 0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20, + 0x57,0x49,0x4c,0x4c,0x20,0x77,0x61,0x69,0x74,0x20,0x66,0x6f,0x72,0x20,0x66,0x75, + 0x72,0x74,0x68,0x65,0x72,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x20,0x69, + 0x6e,0x73,0x74,0x65,0x61,0x64,0x20,0x6f,0x66,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e, + 0x75,0x69,0x6e,0x67,0x20,0x28,0x74,0x79,0x70,0x69,0x63,0x61,0x6c,0x6c,0x79,0x2c, + 0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x29,0x0a, + 0x2d,0x2d,0x20,0x20,0x20,0x2a,0x20,0x6e,0x69,0x6c,0x2f,0x6e,0x6f,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x3a,0x20,0x69,0x6e,0x20,0x73,0x79,0x6e,0x63,0x20,0x6d, + 0x6f,0x64,0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x20,0x77,0x69,0x6c,0x6c,0x20,0x77,0x61,0x69,0x74,0x20,0x66,0x6f,0x72,0x20, + 0x61,0x6e,0x6f,0x74,0x68,0x65,0x72,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x2e, + 0x20,0x49,0x6e,0x20,0x61,0x73,0x79,0x6e,0x63,0x20,0x6d,0x6f,0x64,0x65,0x20,0x74, + 0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x77,0x69,0x6c,0x6c, + 0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x20,0x74,0x68,0x65,0x20,0x65,0x78, + 0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63, + 0x6f,0x77,0x72,0x61,0x70,0x2c,0x20,0x63,0x6f,0x79,0x69,0x65,0x6c,0x64,0x20,0x3d, + 0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x77,0x72,0x61,0x70,0x2c, + 0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x79,0x69,0x65,0x6c,0x64, + 0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x3d,0x20,0x72, + 0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x22,0x0a,0x0a, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x72,0x65,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x64, + 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x72,0x65,0x22,0x0a,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x64,0x62,0x67,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62, + 0x75,0x67,0x67,0x65,0x72,0x2e,0x64,0x62,0x67,0x70,0x22,0x0a,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x75,0x74,0x69,0x6c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67, + 0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20, + 0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x22,0x0a,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20, + 0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67, + 0x67,0x65,0x72,0x2e,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f, + 0x6e,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65, + 0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x6e,0x74,0x65, + 0x78,0x74,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6c,0x6f,0x67,0x20,0x3d,0x20, + 0x75,0x74,0x69,0x6c,0x2e,0x6c,0x6f,0x67,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x4d,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x20,0x2d,0x2d,0x20,0x63,0x6f,0x6d,0x6d,0x61, + 0x6e,0x64,0x20,0x68,0x61,0x6e,0x64,0x6c,0x65,0x72,0x73,0x20,0x74,0x61,0x62,0x6c, + 0x65,0x0a,0x0a,0x2d,0x2d,0x2d,0x20,0x47,0x65,0x74,0x73,0x20,0x74,0x68,0x65,0x20, + 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x62,0x65,0x68,0x69,0x6e,0x64, + 0x20,0x61,0x6e,0x20,0x69,0x64,0x0a,0x2d,0x2d,0x20,0x54,0x68,0x72,0x6f,0x77,0x73, + 0x20,0x65,0x72,0x72,0x6f,0x72,0x73,0x20,0x6f,0x6e,0x20,0x75,0x6e,0x6b,0x6e,0x6f, + 0x77,0x6e,0x20,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x73,0x0a,0x2d, + 0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x20,0x63,0x6f,0x72,0x6f,0x5f,0x69, + 0x64,0x20,0x20,0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x6f,0x72,0x20,0x6e,0x69, + 0x6c,0x29,0x20,0x43,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x69,0x64,0x65, + 0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x20,0x6f,0x72,0x20,0x6e,0x69,0x6c,0x20,0x28, + 0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, + 0x65,0x29,0x0a,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x43,0x6f, + 0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65, + 0x20,0x6f,0x72,0x20,0x6e,0x69,0x6c,0x20,0x28,0x69,0x66,0x20,0x63,0x6f,0x72,0x6f, + 0x5f,0x69,0x64,0x20,0x77,0x61,0x73,0x20,0x6e,0x69,0x6c,0x20,0x6f,0x72,0x20,0x69, + 0x66,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x69,0x73,0x20,0x74, + 0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x63,0x6f,0x72,0x6f,0x75, + 0x74,0x69,0x6e,0x65,0x29,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x20,0x67,0x65,0x74,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69, + 0x6e,0x65,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x63,0x6f,0x72,0x6f,0x5f,0x69,0x64, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x63,0x6f,0x72,0x6f,0x5f,0x69,0x64, + 0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x63,0x6f,0x72,0x6f,0x20,0x3d,0x20,0x64,0x62,0x67,0x70,0x2e, + 0x61,0x73,0x73,0x65,0x72,0x74,0x28,0x33,0x39,0x39,0x2c,0x20,0x63,0x6f,0x72,0x65, + 0x2e,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, + 0x65,0x73,0x2e,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x5b,0x74,0x6f,0x6e,0x75,0x6d, + 0x62,0x65,0x72,0x28,0x63,0x6f,0x72,0x6f,0x5f,0x69,0x64,0x29,0x5d,0x2c,0x20,0x22, + 0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, + 0x65,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70, + 0x2e,0x61,0x73,0x73,0x65,0x72,0x74,0x28,0x33,0x39,0x39,0x2c,0x20,0x63,0x6f,0x72, + 0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x73,0x74,0x61,0x74,0x75,0x73,0x28,0x63,0x6f, + 0x72,0x6f,0x29,0x20,0x7e,0x3d,0x20,0x22,0x64,0x65,0x61,0x64,0x22,0x2c,0x20,0x22, + 0x43,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x69,0x73,0x20,0x64,0x65,0x61, + 0x64,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x63, + 0x6f,0x72,0x6f,0x20,0x7e,0x3d,0x20,0x73,0x65,0x6c,0x66,0x2e,0x63,0x6f,0x72,0x6f, + 0x5b,0x31,0x5d,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x75,0x74,0x69,0x6c,0x2e,0x46,0x6f,0x72,0x65,0x69,0x67,0x6e,0x54,0x68,0x72,0x65, + 0x61,0x64,0x28,0x63,0x6f,0x72,0x6f,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x73,0x65,0x6c,0x66,0x2e,0x63,0x6f,0x72,0x6f,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x4d, + 0x5b,0x22,0x62,0x72,0x65,0x61,0x6b,0x22,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x74,0x61,0x74,0x65,0x20, + 0x3d,0x20,0x22,0x62,0x72,0x65,0x61,0x6b,0x22,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d, + 0x20,0x73,0x65,0x6e,0x64,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x74, + 0x6f,0x20,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x20,0x63,0x6f,0x6d,0x6d,0x61, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x72,0x65,0x2e,0x70,0x72,0x65,0x76, + 0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x72,0x65,0x73, + 0x70,0x6f,0x6e,0x73,0x65,0x28,0x73,0x65,0x6c,0x66,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x73,0x70, + 0x6f,0x6e,0x73,0x65,0x20,0x74,0x6f,0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x63,0x6f, + 0x6d,0x6d,0x61,0x6e,0x64,0x20,0x69,0x74,0x73,0x65,0x6c,0x66,0x0a,0x20,0x20,0x20, + 0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73, + 0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d, + 0x20,0x22,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74, + 0x72,0x20,0x3d,0x20,0x7b,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20, + 0x22,0x62,0x72,0x65,0x61,0x6b,0x22,0x2c,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63, + 0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x69, + 0x2c,0x20,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x20,0x3d,0x20,0x31,0x20,0x7d,0x20, + 0x7d,0x20,0x29,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66, + 0x61,0x6c,0x73,0x65,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69, + 0x6f,0x6e,0x20,0x4d,0x2e,0x73,0x74,0x61,0x74,0x75,0x73,0x28,0x73,0x65,0x6c,0x66, + 0x2c,0x20,0x61,0x72,0x67,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70, + 0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73, + 0x6b,0x74,0x2c,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73, + 0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, + 0x20,0x3d,0x20,0x22,0x73,0x74,0x61,0x74,0x75,0x73,0x22,0x2c,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x61,0x73,0x6f,0x6e,0x20,0x3d,0x20,0x22,0x6f, + 0x6b,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x74, + 0x75,0x73,0x20,0x3d,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x74,0x61,0x74,0x65,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63, + 0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x69, + 0x20,0x7d,0x20,0x7d,0x20,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x73,0x74,0x6f,0x70,0x28,0x73,0x65,0x6c,0x66, + 0x2c,0x20,0x61,0x72,0x67,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70, + 0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73, + 0x6b,0x74,0x2c,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73, + 0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, + 0x20,0x3d,0x20,0x22,0x73,0x74,0x6f,0x70,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x61,0x73,0x6f,0x6e,0x20,0x3d,0x20,0x22,0x6f,0x6b,0x22, + 0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x74,0x75,0x73, + 0x20,0x3d,0x20,0x22,0x73,0x74,0x6f,0x70,0x70,0x65,0x64,0x22,0x2c,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f, + 0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x69,0x20,0x7d,0x20, + 0x7d,0x20,0x29,0x0a,0x20,0x20,0x20,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74, + 0x3a,0x63,0x6c,0x6f,0x73,0x65,0x28,0x29,0x0a,0x20,0x20,0x20,0x20,0x6f,0x73,0x2e, + 0x65,0x78,0x69,0x74,0x28,0x31,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x5f, + 0x67,0x65,0x74,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6e,0x61,0x6d,0x65,0x20,0x3d, + 0x20,0x61,0x72,0x67,0x73,0x2e,0x6e,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x3d,0x20,0x75,0x74,0x69, + 0x6c,0x2e,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x5b,0x6e,0x61,0x6d,0x65,0x5d, + 0x20,0x6f,0x72,0x20,0x28,0x6e,0x6f,0x74,0x20,0x6e,0x6f,0x74,0x20,0x4d,0x5b,0x6e, + 0x61,0x6d,0x65,0x5d,0x29,0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x73, + 0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74, + 0x2c,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73,0x70,0x6f, + 0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, + 0x20,0x3d,0x20,0x22,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x5f,0x67,0x65,0x74,0x22, + 0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x65,0x61,0x74, + 0x75,0x72,0x65,0x5f,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x6e,0x61,0x6d,0x65,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x70,0x70,0x6f, + 0x72,0x74,0x65,0x64,0x20,0x3d,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20, + 0x61,0x6e,0x64,0x20,0x22,0x31,0x22,0x20,0x6f,0x72,0x20,0x22,0x30,0x22,0x2c,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x72,0x61,0x6e,0x73,0x61, + 0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e, + 0x69,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x6f,0x73, + 0x74,0x72,0x69,0x6e,0x67,0x28,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x29,0x20, + 0x7d,0x20,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x4d,0x2e,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x5f,0x73,0x65,0x74,0x28, + 0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75, + 0x65,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x6e,0x2c,0x20,0x61,0x72,0x67,0x73, + 0x2e,0x76,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x63, + 0x63,0x65,0x73,0x73,0x20,0x3d,0x20,0x70,0x63,0x61,0x6c,0x6c,0x28,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x20,0x75,0x74,0x69,0x6c,0x2e,0x66,0x65,0x61, + 0x74,0x75,0x72,0x65,0x73,0x5b,0x6e,0x61,0x6d,0x65,0x5d,0x20,0x3d,0x20,0x76,0x61, + 0x6c,0x75,0x65,0x20,0x65,0x6e,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67, + 0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e, + 0x73,0x6b,0x74,0x2c,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65, + 0x73,0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e, + 0x64,0x20,0x3d,0x20,0x22,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x5f,0x73,0x65,0x74, + 0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x65,0x61,0x74,0x75, + 0x72,0x65,0x20,0x3d,0x20,0x6e,0x61,0x6d,0x65,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x20,0x3d,0x20,0x73,0x75,0x63, + 0x63,0x65,0x73,0x73,0x20,0x61,0x6e,0x64,0x20,0x31,0x20,0x6f,0x72,0x20,0x30,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63, + 0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x69, + 0x0a,0x20,0x20,0x20,0x20,0x7d,0x20,0x7d,0x20,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x74,0x79,0x70,0x65,0x6d, + 0x61,0x70,0x5f,0x67,0x65,0x74,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67, + 0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x65,0x6e,0x74,0x79,0x70,0x65,0x28,0x6e,0x61, + 0x6d,0x65,0x2c,0x20,0x74,0x79,0x70,0x65,0x2c,0x20,0x78,0x73,0x64,0x74,0x79,0x70, + 0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x6d,0x61,0x70,0x22,0x2c, + 0x20,0x61,0x74,0x74,0x73,0x20,0x3d,0x20,0x7b,0x20,0x6e,0x61,0x6d,0x65,0x20,0x3d, + 0x20,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x74,0x79, + 0x70,0x65,0x2c,0x20,0x5b,0x22,0x78,0x73,0x69,0x3a,0x74,0x79,0x70,0x65,0x22,0x5d, + 0x20,0x3d,0x20,0x78,0x73,0x64,0x74,0x79,0x70,0x65,0x20,0x7d,0x20,0x7d,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70, + 0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73, + 0x6b,0x74,0x2c,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73, + 0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6d, + 0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20,0x22,0x74,0x79,0x70,0x65,0x6d,0x61,0x70,0x5f, + 0x67,0x65,0x74,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64, + 0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x69,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5b,0x22,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78, + 0x73,0x69,0x22,0x5d,0x20,0x3d,0x20,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77, + 0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x31,0x2f,0x58, + 0x4d,0x4c,0x53,0x63,0x68,0x65,0x6d,0x61,0x2d,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63, + 0x65,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x5b,0x22,0x78,0x6d,0x6c,0x6e,0x73,0x3a,0x78,0x73,0x64,0x22,0x5d,0x20,0x3d,0x20, + 0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,0x6f, + 0x72,0x67,0x2f,0x32,0x30,0x30,0x31,0x2f,0x58,0x4d,0x4c,0x53,0x63,0x68,0x65,0x6d, + 0x61,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65,0x6e,0x74,0x79,0x70,0x65,0x28,0x22, + 0x6e,0x69,0x6c,0x22,0x2c,0x20,0x22,0x6e,0x75,0x6c,0x6c,0x22,0x29,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65,0x6e,0x74,0x79,0x70,0x65,0x28,0x22, + 0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x22,0x2c,0x20,0x22,0x62,0x6f,0x6f,0x6c,0x22, + 0x2c,0x20,0x22,0x78,0x73,0x64,0x3a,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x22,0x29, + 0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65,0x6e,0x74,0x79,0x70, + 0x65,0x28,0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x2c,0x20,0x22,0x66,0x6c,0x6f, + 0x61,0x74,0x22,0x2c,0x20,0x22,0x78,0x73,0x64,0x3a,0x66,0x6c,0x6f,0x61,0x74,0x22, + 0x29,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65,0x6e,0x74,0x79, + 0x70,0x65,0x28,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x2c,0x20,0x22,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x22,0x2c,0x20,0x22,0x78,0x73,0x64,0x3a,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x22,0x29,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65, + 0x6e,0x74,0x79,0x70,0x65,0x28,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22, + 0x2c,0x20,0x22,0x72,0x65,0x73,0x6f,0x75,0x72,0x63,0x65,0x22,0x29,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65,0x6e,0x74,0x79,0x70,0x65,0x28,0x22, + 0x75,0x73,0x65,0x72,0x64,0x61,0x74,0x61,0x22,0x2c,0x20,0x22,0x72,0x65,0x73,0x6f, + 0x75,0x72,0x63,0x65,0x22,0x29,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x67,0x65,0x6e,0x74,0x79,0x70,0x65,0x28,0x22,0x74,0x68,0x72,0x65,0x61,0x64,0x22, + 0x2c,0x20,0x22,0x72,0x65,0x73,0x6f,0x75,0x72,0x63,0x65,0x22,0x29,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65,0x6e,0x74,0x79,0x70,0x65,0x28,0x22, + 0x74,0x61,0x62,0x6c,0x65,0x22,0x2c,0x20,0x22,0x68,0x61,0x73,0x68,0x22,0x29,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65,0x6e,0x74,0x79,0x70,0x65, + 0x28,0x22,0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0x22,0x2c,0x20,0x22,0x61,0x72, + 0x72,0x61,0x79,0x22,0x29,0x2c,0x20,0x2d,0x2d,0x20,0x61,0x72,0x74,0x69,0x66,0x69, + 0x63,0x69,0x61,0x6c,0x20,0x74,0x79,0x70,0x65,0x20,0x74,0x6f,0x20,0x72,0x65,0x70, + 0x72,0x65,0x73,0x65,0x6e,0x74,0x20,0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0x73, + 0x20,0x28,0x31,0x2d,0x6e,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x6f,0x75,0x73, + 0x20,0x69,0x6e,0x64,0x65,0x78,0x65,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x67,0x65,0x6e,0x74,0x79,0x70,0x65,0x28,0x22,0x6d,0x75,0x6c,0x74,0x69, + 0x76,0x61,0x6c,0x22,0x2c,0x20,0x22,0x61,0x72,0x72,0x61,0x79,0x22,0x29,0x2c,0x20, + 0x2d,0x2d,0x20,0x75,0x73,0x65,0x64,0x20,0x74,0x6f,0x20,0x72,0x65,0x70,0x72,0x65, + 0x73,0x65,0x6e,0x74,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x61,0x6c,0x75, + 0x65,0x73,0x0a,0x20,0x20,0x20,0x20,0x7d,0x20,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x72,0x75,0x6e,0x28,0x73, + 0x65,0x6c,0x66,0x29,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x72,0x65,0x2e,0x70,0x72, + 0x65,0x76,0x5f,0x62,0x72,0x65,0x61,0x6b,0x5f,0x6c,0x69,0x6e,0x65,0x20,0x3d,0x20, + 0x6e,0x69,0x6c,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74, + 0x72,0x75,0x65,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x4d,0x2e,0x73,0x74,0x65,0x70,0x5f,0x6f,0x76,0x65,0x72,0x28,0x73,0x65, + 0x6c,0x66,0x29,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x72,0x65,0x2e,0x65,0x76,0x65, + 0x6e,0x74,0x73,0x2e,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x28,0x22,0x6f,0x76, + 0x65,0x72,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x74,0x72,0x75,0x65,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69, + 0x6f,0x6e,0x20,0x4d,0x2e,0x73,0x74,0x65,0x70,0x5f,0x6f,0x75,0x74,0x28,0x73,0x65, + 0x6c,0x66,0x29,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x72,0x65,0x2e,0x65,0x76,0x65, + 0x6e,0x74,0x73,0x2e,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x28,0x22,0x6f,0x75, + 0x74,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74, + 0x72,0x75,0x65,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x4d,0x2e,0x73,0x74,0x65,0x70,0x5f,0x69,0x6e,0x74,0x6f,0x28,0x73,0x65, + 0x6c,0x66,0x29,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x72,0x65,0x2e,0x65,0x76,0x65, + 0x6e,0x74,0x73,0x2e,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x28,0x22,0x69,0x6e, + 0x74,0x6f,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x74,0x72,0x75,0x65,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69, + 0x6f,0x6e,0x20,0x4d,0x2e,0x65,0x76,0x61,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20, + 0x61,0x72,0x67,0x73,0x2c,0x20,0x64,0x61,0x74,0x61,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x67,0x28,0x22,0x44,0x45,0x42,0x55,0x47,0x22,0x2c,0x20,0x22,0x47,0x6f, + 0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x65,0x76,0x61,0x6c,0x20,0x22,0x2e,0x2e,0x64, + 0x61,0x74,0x61,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72, + 0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x65,0x72,0x72,0x2c,0x20,0x73,0x75,0x63,0x63, + 0x65,0x73,0x73,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x65,0x6e, + 0x76,0x20,0x3d,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x74,0x61,0x63,0x6b,0x28,0x73, + 0x65,0x6c,0x66,0x2e,0x63,0x6f,0x72,0x6f,0x2c,0x20,0x30,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x2d,0x2d,0x20,0x66,0x69,0x72,0x73,0x74,0x2c,0x20,0x74,0x72,0x79,0x20,0x74, + 0x6f,0x20,0x6c,0x6f,0x61,0x64,0x20,0x61,0x73,0x20,0x65,0x78,0x70,0x72,0x65,0x73, + 0x73,0x69,0x6f,0x6e,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x44,0x42,0x47,0x70, + 0x20,0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72, + 0x74,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x68,0x65, + 0x72,0x65,0x2c,0x20,0x73,0x65,0x65,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x62, + 0x75,0x67,0x73,0x2e,0x61,0x63,0x74,0x69,0x76,0x65,0x73,0x74,0x61,0x74,0x65,0x2e, + 0x63,0x6f,0x6d,0x2f,0x73,0x68,0x6f,0x77,0x5f,0x62,0x75,0x67,0x2e,0x63,0x67,0x69, + 0x3f,0x69,0x64,0x3d,0x38,0x31,0x31,0x37,0x38,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x2c,0x20,0x65,0x72,0x72,0x20,0x3d,0x20, + 0x75,0x74,0x69,0x6c,0x2e,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x28,0x22,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x22,0x2e,0x2e,0x64,0x61,0x74,0x61,0x2c,0x20,0x65,0x6e,0x76, + 0x29,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x69,0x66,0x20,0x69,0x74,0x20, + 0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x61,0x6e,0x20,0x65,0x78,0x70,0x72,0x65,0x73, + 0x73,0x69,0x6f,0x6e,0x2c,0x20,0x74,0x72,0x79,0x20,0x61,0x73,0x20,0x73,0x74,0x61, + 0x74,0x65,0x6d,0x65,0x6e,0x74,0x20,0x28,0x61,0x73,0x73,0x69,0x67,0x6e,0x6d,0x65, + 0x6e,0x74,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x6e,0x6f,0x74,0x20,0x66,0x75,0x6e,0x63,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x2c,0x20,0x65,0x72,0x72,0x20, + 0x3d,0x20,0x75,0x74,0x69,0x6c,0x2e,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x28,0x64,0x61, + 0x74,0x61,0x2c,0x20,0x65,0x6e,0x76,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64, + 0x0a,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x66,0x75,0x6e,0x63,0x20,0x74,0x68, + 0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x63,0x63,0x65, + 0x73,0x73,0x2c,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x70,0x63,0x61, + 0x6c,0x6c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69, + 0x6f,0x6e,0x2e,0x4d,0x75,0x6c,0x74,0x69,0x76,0x61,0x6c,0x28,0x66,0x75,0x6e,0x63, + 0x28,0x29,0x29,0x20,0x65,0x6e,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x20, + 0x74,0x68,0x65,0x6e,0x20,0x65,0x72,0x72,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c, + 0x74,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20, + 0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73, + 0x65,0x20,0x3d,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73, + 0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b, + 0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20,0x22,0x65,0x76,0x61,0x6c, + 0x22,0x2c,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69, + 0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x69,0x20,0x7d,0x20,0x7d,0x0a,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x65,0x72,0x72,0x20,0x74,0x68, + 0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x6e,0x72,0x65,0x73,0x75,0x6c,0x74,0x73,0x20,0x3d,0x20,0x72,0x65,0x73,0x75, + 0x6c,0x74,0x2e,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x6e,0x72,0x65,0x73,0x75,0x6c,0x74,0x73,0x20,0x3d,0x3d,0x20,0x31,0x20,0x74,0x68, + 0x65,0x6e,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x72,0x65,0x73,0x75, + 0x6c,0x74,0x5b,0x31,0x5d,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x73,0x74,0x6f,0x72,0x65,0x20,0x72,0x65,0x73,0x75, + 0x6c,0x74,0x20,0x66,0x6f,0x72,0x20,0x66,0x75,0x72,0x74,0x68,0x65,0x72,0x20,0x75, + 0x73,0x65,0x20,0x28,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x2a,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x54,0x4f,0x44,0x4f,0x3a, + 0x20,0x74,0x68,0x69,0x73,0x20,0x63,0x6f,0x75,0x6c,0x64,0x20,0x62,0x65,0x20,0x6f, + 0x70,0x74,0x69,0x6d,0x69,0x7a,0x65,0x64,0x3a,0x20,0x74,0x68,0x69,0x73,0x20,0x69, + 0x73,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x75,0x73,0x65,0x64,0x20,0x66,0x6f,0x72,0x20, + 0x45,0x78,0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e,0x73,0x20,0x76,0x69,0x65,0x77, + 0x20,0x61,0x6e,0x64,0x20,0x74,0x6f,0x74,0x61,0x6c,0x6c,0x79,0x20,0x75,0x73,0x65, + 0x6c,0x65,0x73,0x73,0x20,0x66,0x6f,0x72,0x20,0x69,0x6e,0x74,0x65,0x72,0x61,0x63, + 0x74,0x69,0x76,0x65,0x20,0x63,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x2c,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73, + 0x6f,0x20,0x73,0x74,0x6f,0x72,0x69,0x6e,0x67,0x20,0x72,0x65,0x73,0x75,0x6c,0x74, + 0x20,0x6f,0x72,0x20,0x6e,0x6f,0x74,0x20,0x63,0x6f,0x75,0x6c,0x64,0x20,0x62,0x65, + 0x20,0x73,0x65,0x74,0x20,0x62,0x79,0x20,0x61,0x6e,0x20,0x61,0x72,0x67,0x75,0x6d, + 0x65,0x6e,0x74,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x69,0x64,0x78,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x6e,0x72,0x65,0x73,0x75,0x6c,0x74,0x73,0x20,0x3e,0x20,0x30,0x20,0x74,0x68, + 0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x63,0x61,0x63,0x68,0x65,0x20,0x3d,0x20,0x65,0x6e,0x76, + 0x5b,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2e,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74, + 0x5b,0x2d,0x31,0x5d,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x23,0x63,0x61,0x63,0x68,0x65,0x20,0x2b, + 0x20,0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63, + 0x61,0x63,0x68,0x65,0x5b,0x69,0x64,0x78,0x5d,0x20,0x3d,0x20,0x72,0x65,0x73,0x75, + 0x6c,0x74,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x41,0x73,0x20,0x6f,0x66, + 0x20,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x2c,0x20,0x74,0x68,0x65,0x20,0x6d,0x61, + 0x78,0x69,0x6d,0x75,0x6d,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x73,0x69,0x7a,0x65, + 0x20,0x28,0x61,0x6e,0x64,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x63,0x6f,0x75, + 0x6e,0x74,0x29,0x20,0x69,0x73,0x20,0x38,0x30,0x30,0x30,0x2c,0x20,0x74,0x68,0x69, + 0x73,0x20,0x6c,0x69,0x6d,0x69,0x74,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x20, + 0x74,0x6f,0x20,0x66,0x69,0x74,0x20,0x61,0x6c,0x6c,0x20,0x72,0x65,0x73,0x75,0x6c, + 0x74,0x73,0x20,0x69,0x6e,0x20,0x6f,0x6e,0x65,0x20,0x70,0x61,0x67,0x65,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x5b, + 0x31,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69, + 0x6f,0x6e,0x2e,0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79, + 0x28,0x2d,0x31,0x2c,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x69,0x64,0x78, + 0x20,0x6f,0x72,0x20,0x22,0x22,0x2c,0x20,0x6e,0x69,0x6c,0x2c,0x20,0x31,0x2c,0x20, + 0x38,0x30,0x30,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6e,0x69,0x6c,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x2e,0x61, + 0x74,0x74,0x72,0x2e,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x20,0x3d,0x20,0x31,0x0a, + 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x2e,0x61,0x74,0x74,0x72,0x2e,0x73, + 0x75,0x63,0x63,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x5b,0x31,0x5d,0x20,0x3d, + 0x20,0x64,0x62,0x67,0x70,0x2e,0x6d,0x61,0x6b,0x65,0x5f,0x65,0x72,0x72,0x6f,0x72, + 0x28,0x32,0x30,0x36,0x2c,0x20,0x65,0x72,0x72,0x29,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64, + 0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x72, + 0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f, + 0x69,0x6e,0x74,0x5f,0x73,0x65,0x74,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72, + 0x67,0x73,0x2c,0x20,0x64,0x61,0x74,0x61,0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x61,0x72,0x67,0x73,0x2e,0x6f,0x20,0x61,0x6e,0x64,0x20,0x6e,0x6f,0x74,0x20, + 0x63,0x6f,0x72,0x65,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73, + 0x2e,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x5b, + 0x61,0x72,0x67,0x73,0x2e,0x6f,0x5d,0x20,0x74,0x68,0x65,0x6e,0x20,0x64,0x62,0x67, + 0x70,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x32,0x30,0x30,0x2c,0x20,0x22,0x49,0x6e, + 0x76,0x61,0x6c,0x69,0x64,0x20,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74, + 0x69,0x6f,0x6e,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x3a,0x20,0x22,0x2e, + 0x2e,0x61,0x72,0x67,0x73,0x2e,0x6f,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x2c, + 0x20,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x66, + 0x2c,0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e, + 0x6e,0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x69,0x66,0x20,0x69,0x74,0x20,0x69, + 0x73,0x20,0x6e,0x6f,0x74,0x20,0x69,0x6e,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74, + 0x20,0x70,0x72,0x6f,0x6a,0x65,0x63,0x74,0x20,0x70,0x61,0x74,0x68,0x2c,0x20,0x69, + 0x67,0x6e,0x6f,0x72,0x65,0x20,0x74,0x68,0x65,0x20,0x62,0x72,0x65,0x61,0x6b,0x70, + 0x6f,0x69,0x6e,0x74,0x5f,0x73,0x65,0x74,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, + 0x2c,0x20,0x73,0x65,0x6e,0x64,0x20,0x65,0x6d,0x70,0x74,0x79,0x20,0x72,0x65,0x73, + 0x70,0x6f,0x6e,0x73,0x65,0x20,0x74,0x6f,0x20,0x61,0x76,0x6f,0x69,0x64,0x20,0x62, + 0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x20,0x28,0x61,0x64,0x64,0x20,0x62,0x79,0x20, + 0x67,0x75,0x61,0x6e,0x79,0x75,0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e, + 0x6f,0x74,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x3a,0x66,0x69,0x6e,0x64, + 0x28,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x2e,0x62,0x61,0x73,0x65,0x5f,0x64, + 0x69,0x72,0x2c,0x31,0x2c,0x74,0x72,0x75,0x65,0x29,0x20,0x74,0x68,0x65,0x6e,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e, + 0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20, + 0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73, + 0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x63,0x6f,0x6d, + 0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20,0x22,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, + 0x6e,0x74,0x5f,0x73,0x65,0x74,0x22,0x2c,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63, + 0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x69, + 0x7d,0x20,0x7d,0x20,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x6e,0x69,0x6c,0x3b,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e, + 0x64,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x70,0x20,0x3d, + 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x79,0x70,0x65,0x20, + 0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x74,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x73,0x74,0x61,0x74,0x65,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x73, + 0x20,0x6f,0x72,0x20,0x22,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x22,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x65,0x6d,0x70,0x6f,0x72,0x61,0x72,0x79, + 0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x72,0x20,0x3d,0x3d,0x20,0x22,0x31,0x22, + 0x2c,0x20,0x2d,0x2d,0x20,0x22,0x30,0x22,0x20,0x6f,0x72,0x20,0x6e,0x69,0x6c,0x20, + 0x6d,0x61,0x6b,0x65,0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x70,0x72,0x6f,0x70,0x65, + 0x72,0x74,0x79,0x20,0x66,0x61,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x68,0x69,0x74,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x30,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d, + 0x65,0x20,0x3d,0x20,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x2c,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x20,0x3d,0x20,0x6c, + 0x69,0x6e,0x65,0x6e,0x6f,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68, + 0x69,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75,0x6d, + 0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e,0x68,0x20,0x6f,0x72,0x20,0x30,0x29, + 0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x74,0x5f,0x63,0x6f, + 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x6f, + 0x20,0x6f,0x72,0x20,0x22,0x3e,0x3d,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x61,0x72,0x67,0x73,0x2e,0x74,0x20,0x3d, + 0x3d,0x20,0x22,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x22,0x20, + 0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x70,0x2e, + 0x65,0x78,0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x64,0x61,0x74, + 0x61,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x74,0x68,0x65, + 0x20,0x65,0x78,0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x63, + 0x6f,0x6d,0x70,0x69,0x6c,0x65,0x64,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x6f,0x6e,0x63, + 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x70,0x2e,0x63,0x6f,0x6e, + 0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x64,0x62,0x67,0x70,0x2e,0x61,0x73, + 0x73,0x65,0x72,0x74,0x28,0x32,0x30,0x37,0x2c,0x20,0x6c,0x6f,0x61,0x64,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x28,0x22,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x22,0x20, + 0x2e,0x2e,0x20,0x64,0x61,0x74,0x61,0x20,0x2e,0x2e,0x20,0x22,0x29,0x22,0x29,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x61,0x72,0x67,0x73, + 0x2e,0x74,0x20,0x7e,0x3d,0x20,0x22,0x6c,0x69,0x6e,0x65,0x22,0x20,0x74,0x68,0x65, + 0x6e,0x20,0x64,0x62,0x67,0x70,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x32,0x30,0x31, + 0x2c,0x20,0x22,0x42,0x50,0x20,0x74,0x79,0x70,0x65,0x20,0x22,0x20,0x2e,0x2e,0x20, + 0x61,0x72,0x67,0x73,0x2e,0x74,0x20,0x2e,0x2e,0x20,0x22,0x20,0x6e,0x6f,0x74,0x20, + 0x79,0x65,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,0x22,0x29,0x20, + 0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62, + 0x70,0x69,0x64,0x20,0x3d,0x20,0x63,0x6f,0x72,0x65,0x2e,0x62,0x72,0x65,0x61,0x6b, + 0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e,0x69,0x6e,0x73,0x65,0x72,0x74,0x28,0x62,0x70, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f, + 0x78,0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x7b,0x20, + 0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x22, + 0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x63,0x6f,0x6d,0x6d,0x61, + 0x6e,0x64,0x20,0x3d,0x20,0x22,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74, + 0x5f,0x73,0x65,0x74,0x22,0x2c,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69, + 0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x69,0x2c,0x20, + 0x73,0x74,0x61,0x74,0x65,0x20,0x3d,0x20,0x62,0x70,0x2e,0x73,0x74,0x61,0x74,0x65, + 0x2c,0x20,0x69,0x64,0x20,0x3d,0x20,0x62,0x70,0x69,0x64,0x20,0x7d,0x20,0x7d,0x20, + 0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20, + 0x4d,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x67,0x65,0x74, + 0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73, + 0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d, + 0x20,0x22,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x74,0x74,0x72,0x20, + 0x3d,0x20,0x7b,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20,0x22,0x62, + 0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x67,0x65,0x74,0x22,0x2c,0x20, + 0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d, + 0x20,0x61,0x72,0x67,0x73,0x2e,0x69,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x61,0x73, + 0x73,0x65,0x72,0x74,0x28,0x32,0x30,0x35,0x2c,0x20,0x63,0x6f,0x72,0x65,0x2e,0x62, + 0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e,0x67,0x65,0x74,0x5f,0x78, + 0x6d,0x6c,0x28,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73, + 0x2e,0x64,0x29,0x29,0x29,0x20,0x7d,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f, + 0x69,0x6e,0x74,0x5f,0x6c,0x69,0x73,0x74,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61, + 0x72,0x67,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62, + 0x70,0x73,0x20,0x3d,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65, + 0x73,0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20, + 0x7b,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20,0x22,0x62,0x72,0x65, + 0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x6c,0x69,0x73,0x74,0x22,0x2c,0x20,0x74, + 0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20, + 0x61,0x72,0x67,0x73,0x2e,0x69,0x20,0x7d,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6f,0x72,0x20,0x69,0x64,0x2c,0x20,0x62,0x70,0x20,0x69,0x6e,0x20,0x70,0x61,0x69, + 0x72,0x73,0x28,0x63,0x6f,0x72,0x65,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, + 0x6e,0x74,0x73,0x2e,0x67,0x65,0x74,0x28,0x29,0x29,0x20,0x64,0x6f,0x20,0x62,0x70, + 0x73,0x5b,0x23,0x62,0x70,0x73,0x20,0x2b,0x20,0x31,0x5d,0x20,0x3d,0x20,0x63,0x6f, + 0x72,0x65,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e,0x67, + 0x65,0x74,0x5f,0x78,0x6d,0x6c,0x28,0x69,0x64,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c, + 0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x62,0x70,0x73,0x29,0x0a, + 0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e, + 0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x75,0x70,0x64,0x61,0x74, + 0x65,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x70,0x20,0x3d,0x20,0x63,0x6f,0x72, + 0x65,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e,0x67,0x65, + 0x74,0x28,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e, + 0x64,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x62, + 0x70,0x20,0x74,0x68,0x65,0x6e,0x20,0x64,0x62,0x67,0x70,0x2e,0x65,0x72,0x72,0x6f, + 0x72,0x28,0x32,0x30,0x35,0x2c,0x20,0x22,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20, + 0x62,0x72,0x65,0x61,0x6b,0x70,0x69,0x6e,0x74,0x20,0x22,0x2e,0x2e,0x61,0x72,0x67, + 0x73,0x2e,0x64,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x61,0x72,0x67,0x73,0x2e,0x6f,0x20,0x61,0x6e,0x64,0x20,0x6e,0x6f,0x74,0x20,0x63, + 0x6f,0x72,0x65,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e, + 0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x5b,0x61, + 0x72,0x67,0x73,0x2e,0x6f,0x5d,0x20,0x74,0x68,0x65,0x6e,0x20,0x64,0x62,0x67,0x70, + 0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x32,0x30,0x30,0x2c,0x20,0x22,0x49,0x6e,0x76, + 0x61,0x6c,0x69,0x64,0x20,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69, + 0x6f,0x6e,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x3a,0x20,0x22,0x2e,0x2e, + 0x61,0x72,0x67,0x73,0x2e,0x6f,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x3d, + 0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73,0x70,0x6f,0x6e, + 0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x63,0x6f, + 0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20,0x22,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f, + 0x69,0x6e,0x74,0x5f,0x75,0x70,0x64,0x61,0x74,0x65,0x22,0x2c,0x20,0x74,0x72,0x61, + 0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72, + 0x67,0x73,0x2e,0x69,0x20,0x7d,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x6e,0x65,0x65,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x20,0x3d,0x20, + 0x66,0x61,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x6f,0x6c,0x64,0x6c,0x69,0x6e,0x65,0x20,0x3d,0x20,0x62,0x70,0x2e,0x6c,0x69,0x6e, + 0x65,0x6e,0x6f,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x74,0x6f,0x6e,0x75,0x6d, + 0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e,0x6e,0x29,0x20,0x7e,0x3d,0x20,0x74, + 0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x62,0x70,0x2e,0x6c,0x69,0x6e,0x65,0x6e, + 0x6f,0x29,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6e,0x65,0x65,0x64,0x55,0x70,0x64,0x61,0x74,0x65,0x20,0x3d,0x20,0x74,0x72,0x75, + 0x65,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x62,0x70, + 0x2e,0x73,0x74,0x61,0x74,0x65,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x73,0x20, + 0x6f,0x72,0x20,0x62,0x70,0x2e,0x73,0x74,0x61,0x74,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x62,0x70,0x2e,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75, + 0x6d,0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e,0x6e,0x20,0x6f,0x72,0x20,0x62, + 0x70,0x2e,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x29,0x0a,0x20,0x20,0x20,0x20,0x62,0x70, + 0x2e,0x68,0x69,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x74,0x6f,0x6e, + 0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e,0x68,0x20,0x6f,0x72,0x20, + 0x62,0x70,0x2e,0x68,0x69,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x62,0x70,0x2e,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69, + 0x6f,0x6e,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x6f,0x20,0x6f,0x72,0x20,0x62, + 0x70,0x2e,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x0a, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x65,0x65,0x64,0x55,0x70,0x64,0x61,0x74, + 0x65,0x20,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x63,0x6f,0x72,0x65,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73, + 0x2e,0x75,0x70,0x64,0x61,0x74,0x65,0x28,0x6f,0x6c,0x64,0x6c,0x69,0x6e,0x65,0x2c, + 0x20,0x62,0x70,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73, + 0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73, + 0x65,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x20,0x4d,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x72,0x65, + 0x6d,0x6f,0x76,0x65,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x73,0x70,0x6f, + 0x6e,0x73,0x65,0x20,0x3d,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72, + 0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d, + 0x20,0x7b,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20,0x22,0x62,0x72, + 0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x72,0x65,0x6d,0x6f,0x76,0x65,0x22, + 0x2c,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64, + 0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x69,0x20,0x7d,0x20,0x7d,0x0a,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x20,0x61,0x72,0x67,0x73,0x2e,0x64,0x20,0x6d,0x61,0x79,0x20, + 0x62,0x65,0x20,0x6e,0x69,0x6c,0x2c,0x20,0x62,0x65,0x63,0x61,0x75,0x73,0x65,0x20, + 0x74,0x68,0x65,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20,0x64, + 0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x62,0x65,0x6c,0x6f,0x6e,0x67,0x20,0x74, + 0x6f,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x70,0x72,0x6f,0x6a,0x65,0x63, + 0x74,0x20,0x28,0x61,0x64,0x64,0x20,0x62,0x79,0x20,0x67,0x75,0x61,0x6e,0x79,0x75, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x61,0x72,0x67,0x73,0x2e,0x64,0x20, + 0x61,0x6e,0x64,0x20,0x6e,0x6f,0x74,0x20,0x63,0x6f,0x72,0x65,0x2e,0x62,0x72,0x65, + 0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x28, + 0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e,0x64,0x29, + 0x29,0x20,0x74,0x68,0x65,0x6e,0x20,0x64,0x62,0x67,0x70,0x2e,0x65,0x72,0x72,0x6f, + 0x72,0x28,0x32,0x30,0x35,0x2c,0x20,0x22,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20, + 0x62,0x72,0x65,0x61,0x6b,0x70,0x69,0x6e,0x74,0x20,0x22,0x2e,0x2e,0x61,0x72,0x67, + 0x73,0x2e,0x64,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67, + 0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e, + 0x73,0x6b,0x74,0x2c,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x29,0x0a,0x65, + 0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x73, + 0x74,0x61,0x63,0x6b,0x5f,0x64,0x65,0x70,0x74,0x68,0x28,0x73,0x65,0x6c,0x66,0x2c, + 0x20,0x61,0x72,0x67,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x30,0x0a,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x72,0x6f,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f, + 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20, + 0x61,0x72,0x67,0x73,0x2e,0x6f,0x29,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20, + 0x6c,0x65,0x76,0x65,0x6c,0x20,0x3d,0x20,0x30,0x2c,0x20,0x6d,0x61,0x74,0x68,0x2e, + 0x68,0x75,0x67,0x65,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x6e,0x66,0x6f,0x20,0x3d,0x20,0x63,0x6f,0x72, + 0x6f,0x3a,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x6c,0x65,0x76,0x65,0x6c,0x2c, + 0x20,0x22,0x53,0x74,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, + 0x66,0x20,0x6e,0x6f,0x74,0x20,0x69,0x6e,0x66,0x6f,0x20,0x74,0x68,0x65,0x6e,0x20, + 0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x6e,0x64,0x20,0x2d,0x2d,0x20,0x65,0x6e,0x64, + 0x20,0x6f,0x66,0x20,0x73,0x74,0x61,0x63,0x6b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x64,0x65,0x70,0x74,0x68,0x20, + 0x2b,0x20,0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x69, + 0x6e,0x66,0x6f,0x2e,0x69,0x73,0x74,0x61,0x69,0x6c,0x63,0x61,0x6c,0x6c,0x20,0x74, + 0x68,0x65,0x6e,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x64,0x65,0x70,0x74, + 0x68,0x20,0x2b,0x20,0x31,0x20,0x65,0x6e,0x64,0x20,0x2d,0x2d,0x20,0x61,0x20,0x27, + 0x66,0x61,0x6b,0x65,0x27,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x69,0x73,0x20,0x61, + 0x64,0x64,0x65,0x64,0x20,0x69,0x6e,0x20,0x74,0x68,0x61,0x74,0x20,0x63,0x61,0x73, + 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x69,0x6e,0x66, + 0x6f,0x2e,0x77,0x68,0x61,0x74,0x20,0x3d,0x3d,0x20,0x22,0x6d,0x61,0x69,0x6e,0x22, + 0x20,0x74,0x68,0x65,0x6e,0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x6e,0x64,0x20, + 0x2d,0x2d,0x20,0x6c,0x65,0x76,0x65,0x6c,0x73,0x20,0x62,0x65,0x6c,0x6f,0x77,0x20, + 0x6d,0x61,0x69,0x6e,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x61,0x72,0x65,0x20,0x6e, + 0x6f,0x74,0x20,0x69,0x6e,0x74,0x65,0x72,0x65,0x73,0x74,0x69,0x6e,0x67,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e, + 0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b, + 0x74,0x2c,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73,0x70, + 0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20, + 0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20,0x22,0x73,0x74,0x61,0x63,0x6b, + 0x5f,0x64,0x65,0x70,0x74,0x68,0x22,0x2c,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63, + 0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x69, + 0x2c,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x64,0x65,0x70,0x74,0x68,0x7d, + 0x20,0x7d,0x20,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69, + 0x6f,0x6e,0x20,0x4d,0x2e,0x73,0x74,0x61,0x63,0x6b,0x5f,0x67,0x65,0x74,0x28,0x73, + 0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x29,0x20,0x2d,0x2d,0x20,0x54,0x4f, + 0x44,0x4f,0x3a,0x20,0x64,0x79,0x6e,0x61,0x6d,0x69,0x63,0x20,0x63,0x6f,0x64,0x65, + 0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x20, + 0x55,0x52,0x49,0x73,0x20,0x74,0x6f,0x20,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x79, + 0x20,0x75,0x6e,0x72,0x65,0x61,0x63,0x68,0x61,0x62,0x6c,0x65,0x20,0x73,0x74,0x61, + 0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x73,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x77,0x68,0x61,0x74,0x32,0x75,0x72,0x69,0x20,0x3d,0x20,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x61,0x69,0x6c,0x20,0x3d,0x20, + 0x22,0x74,0x61,0x69,0x6c,0x72,0x65,0x74,0x75,0x72,0x6e,0x3a,0x2f,0x22,0x2c,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x20,0x20,0x20,0x20,0x3d,0x20,0x22, + 0x63,0x63,0x6f,0x64,0x65,0x3a,0x2f,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x20,0x6d,0x61,0x6b,0x65,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x28,0x69, + 0x6e,0x66,0x6f,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d, + 0x20,0x7b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x3d,0x20,0x6c,0x65,0x76,0x65,0x6c, + 0x2c,0x20,0x77,0x68,0x65,0x72,0x65,0x20,0x3d,0x20,0x69,0x6e,0x66,0x6f,0x2e,0x6e, + 0x61,0x6d,0x65,0x2c,0x20,0x74,0x79,0x70,0x65,0x3d,0x22,0x66,0x69,0x6c,0x65,0x22, + 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x75,0x72,0x69,0x20,0x3d,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x2e, + 0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x28,0x69,0x6e,0x66,0x6f,0x2e,0x73,0x6f,0x75, + 0x72,0x63,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x75,0x72,0x69,0x20,0x61,0x6e,0x64,0x20,0x69,0x6e,0x66,0x6f,0x2e,0x63,0x75,0x72, + 0x72,0x65,0x6e,0x74,0x6c,0x69,0x6e,0x65,0x20,0x74,0x68,0x65,0x6e,0x20,0x2d,0x2d, + 0x20,0x72,0x65,0x61,0x63,0x68,0x61,0x62,0x6c,0x65,0x20,0x6c,0x65,0x76,0x65,0x6c, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x74,0x74, + 0x72,0x2e,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x75,0x72,0x69, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x74,0x74, + 0x72,0x2e,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x20,0x3d,0x20,0x69,0x6e,0x66,0x6f,0x2e, + 0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x69,0x6e,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x61,0x74,0x74,0x72,0x2e,0x66,0x69,0x6c,0x65,0x6e,0x61, + 0x6d,0x65,0x20,0x3d,0x20,0x77,0x68,0x61,0x74,0x32,0x75,0x72,0x69,0x5b,0x69,0x6e, + 0x66,0x6f,0x2e,0x77,0x68,0x61,0x74,0x5d,0x20,0x6f,0x72,0x20,0x22,0x75,0x6e,0x6b, + 0x6e,0x6f,0x77,0x6e,0x3a,0x2f,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x61,0x74,0x74,0x72,0x2e,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x20, + 0x3d,0x20,0x2d,0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x73,0x74,0x61,0x63,0x6b,0x22,0x2c, + 0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x61,0x74,0x74,0x72,0x20,0x7d,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x6e,0x6f,0x64,0x65,0x20,0x3d,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d, + 0x20,0x22,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74, + 0x72,0x20,0x3d,0x20,0x7b,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20, + 0x22,0x73,0x74,0x61,0x63,0x6b,0x5f,0x67,0x65,0x74,0x22,0x2c,0x20,0x74,0x72,0x61, + 0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72, + 0x67,0x73,0x2e,0x69,0x7d,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x63,0x6f,0x72,0x6f,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x63,0x6f,0x72, + 0x6f,0x75,0x74,0x69,0x6e,0x65,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67, + 0x73,0x2e,0x6f,0x29,0x0a,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x61,0x72,0x67, + 0x73,0x2e,0x64,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x74,0x61,0x63,0x6b,0x5f,0x6c,0x65,0x76, + 0x65,0x6c,0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72, + 0x67,0x73,0x2e,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6e,0x6f, + 0x64,0x65,0x5b,0x23,0x6e,0x6f,0x64,0x65,0x2b,0x31,0x5d,0x20,0x3d,0x20,0x6d,0x61, + 0x6b,0x65,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x28,0x63,0x6f,0x72,0x6f,0x3a,0x67,0x65, + 0x74,0x69,0x6e,0x66,0x6f,0x28,0x73,0x74,0x61,0x63,0x6b,0x5f,0x6c,0x65,0x76,0x65, + 0x6c,0x2c,0x20,0x22,0x6e,0x53,0x6c,0x22,0x29,0x2c,0x20,0x73,0x74,0x61,0x63,0x6b, + 0x5f,0x6c,0x65,0x76,0x65,0x6c,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x69,0x3d,0x30, + 0x2c,0x20,0x6d,0x61,0x74,0x68,0x2e,0x68,0x75,0x67,0x65,0x20,0x64,0x6f,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x69,0x6e,0x66,0x6f,0x20,0x3d,0x20,0x63,0x6f,0x72,0x6f,0x3a,0x67,0x65,0x74, + 0x69,0x6e,0x66,0x6f,0x28,0x69,0x2c,0x20,0x22,0x6e,0x53,0x6c,0x74,0x22,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e, + 0x6f,0x74,0x20,0x69,0x6e,0x66,0x6f,0x20,0x74,0x68,0x65,0x6e,0x20,0x62,0x72,0x65, + 0x61,0x6b,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x6e,0x6f,0x64,0x65,0x5b,0x23,0x6e,0x6f,0x64,0x65,0x2b,0x31,0x5d, + 0x20,0x3d,0x20,0x6d,0x61,0x6b,0x65,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x28,0x69,0x6e, + 0x66,0x6f,0x2c,0x20,0x69,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x61,0x64,0x64,0x20,0x61,0x20,0x66,0x61,0x6b,0x65, + 0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x6f,0x66,0x20,0x73,0x74,0x61,0x63,0x6b,0x20, + 0x66,0x6f,0x72,0x20,0x74,0x61,0x69,0x6c,0x20,0x63,0x61,0x6c,0x6c,0x73,0x20,0x28, + 0x74,0x65,0x6c,0x6c,0x73,0x20,0x75,0x73,0x65,0x72,0x20,0x74,0x68,0x61,0x74,0x20, + 0x74,0x68,0x65,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x61,0x73, + 0x20,0x6e,0x6f,0x74,0x20,0x62,0x65,0x65,0x6e,0x20,0x63,0x61,0x6c,0x6c,0x65,0x64, + 0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6c,0x79,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x69,0x6e,0x66,0x6f,0x2e,0x69, + 0x73,0x74,0x61,0x69,0x6c,0x63,0x61,0x6c,0x6c,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6e, + 0x6f,0x64,0x65,0x5b,0x23,0x6e,0x6f,0x64,0x65,0x2b,0x31,0x5d,0x20,0x3d,0x20,0x7b, + 0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x73,0x74,0x61,0x63,0x6b,0x22,0x2c,0x20, + 0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x3d,0x69, + 0x2c,0x20,0x74,0x79,0x70,0x65,0x3d,0x22,0x66,0x69,0x6c,0x65,0x22,0x2c,0x20,0x66, + 0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x74,0x61,0x69,0x6c,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x3a,0x2f,0x22,0x2c,0x20,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x3d,0x2d, + 0x31,0x20,0x7d,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x69,0x6e,0x66,0x6f,0x2e,0x77,0x68,0x61,0x74,0x20,0x3d, + 0x3d,0x20,0x22,0x6d,0x61,0x69,0x6e,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x62,0x72, + 0x65,0x61,0x6b,0x20,0x65,0x6e,0x64,0x20,0x2d,0x2d,0x20,0x6c,0x65,0x76,0x65,0x6c, + 0x73,0x20,0x62,0x65,0x6c,0x6f,0x77,0x20,0x6d,0x61,0x69,0x6e,0x20,0x63,0x68,0x75, + 0x6e,0x6b,0x20,0x61,0x72,0x65,0x20,0x6e,0x6f,0x74,0x20,0x69,0x6e,0x74,0x65,0x72, + 0x65,0x73,0x74,0x69,0x6e,0x67,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20, + 0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65, + 0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x6e,0x6f,0x64,0x65,0x29,0x0a,0x65,0x6e, + 0x64,0x0a,0x0a,0x2d,0x2d,0x2d,0x20,0x4c,0x69,0x73,0x74,0x73,0x20,0x61,0x6c,0x6c, + 0x20,0x61,0x63,0x74,0x69,0x76,0x65,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, + 0x65,0x73,0x2e,0x0a,0x2d,0x2d,0x20,0x52,0x65,0x74,0x75,0x72,0x6e,0x73,0x20,0x61, + 0x20,0x6c,0x69,0x73,0x74,0x20,0x6f,0x66,0x20,0x61,0x63,0x74,0x69,0x76,0x65,0x20, + 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x20,0x77,0x69,0x74,0x68,0x20, + 0x74,0x68,0x65,0x69,0x72,0x20,0x69,0x64,0x20,0x28,0x61,0x6e,0x20,0x61,0x72,0x62, + 0x69,0x74,0x72,0x61,0x72,0x79,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x29,0x20,0x74, + 0x6f,0x20,0x71,0x75,0x65,0x72,0x79,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x61,0x6e, + 0x64,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x69,0x65,0x73,0x2e,0x20,0x54,0x68, + 0x65,0x20,0x69,0x64,0x20,0x69,0x73,0x0a,0x2d,0x2d,0x20,0x67,0x75,0x61,0x72,0x61, + 0x6e,0x74,0x65,0x65,0x64,0x20,0x74,0x6f,0x20,0x62,0x65,0x20,0x75,0x6e,0x69,0x71, + 0x75,0x65,0x20,0x61,0x6e,0x64,0x20,0x73,0x74,0x61,0x62,0x6c,0x65,0x20,0x66,0x6f, + 0x72,0x20,0x61,0x6c,0x6c,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20, + 0x6c,0x69,0x66,0x65,0x20,0x28,0x74,0x68,0x65,0x79,0x20,0x63,0x61,0x6e,0x20,0x62, + 0x65,0x20,0x72,0x65,0x75,0x73,0x65,0x64,0x20,0x61,0x73,0x20,0x6c,0x6f,0x6e,0x67, + 0x20,0x61,0x73,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x65,0x78, + 0x69,0x73,0x74,0x73,0x29,0x2e,0x0a,0x2d,0x2d,0x20,0x4f,0x74,0x68,0x65,0x72,0x73, + 0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x20,0x73,0x75,0x63,0x68,0x20,0x61, + 0x73,0x20,0x73,0x74,0x61,0x63,0x6b,0x5f,0x67,0x65,0x74,0x20,0x6f,0x72,0x20,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x2a,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e, + 0x64,0x73,0x20,0x74,0x61,0x6b,0x65,0x73,0x20,0x61,0x6e,0x20,0x61,0x64,0x64,0x69, + 0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x2d,0x6f,0x20,0x73,0x77,0x69,0x74,0x63,0x68, + 0x20,0x74,0x6f,0x20,0x71,0x75,0x65,0x72,0x79,0x20,0x61,0x20,0x70,0x61,0x72,0x74, + 0x69,0x63,0x75,0x6c,0x61,0x72,0x20,0x63,0x4f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, + 0x2e,0x0a,0x2d,0x2d,0x20,0x49,0x66,0x20,0x74,0x68,0x65,0x20,0x73,0x77,0x69,0x74, + 0x63,0x68,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x67,0x69,0x76,0x65,0x6e,0x2c, + 0x20,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69, + 0x6e,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x75,0x73,0x65,0x64,0x2e, + 0x0a,0x2d,0x2d,0x20,0x49,0x6e,0x20,0x63,0x61,0x73,0x65,0x20,0x6f,0x66,0x20,0x65, + 0x72,0x72,0x6f,0x72,0x20,0x6f,0x6e,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, + 0x65,0x73,0x20,0x28,0x6d,0x6f,0x73,0x74,0x20,0x6c,0x69,0x6b,0x65,0x6c,0x79,0x20, + 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x6e,0x6f,0x74,0x20,0x66,0x6f, + 0x75,0x6e,0x64,0x20,0x6f,0x72,0x20,0x64,0x65,0x61,0x64,0x29,0x2c,0x20,0x61,0x6e, + 0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x33,0x39,0x39,0x20,0x69,0x73,0x20,0x74,0x68, + 0x72,0x6f,0x77,0x6e,0x2e,0x0a,0x2d,0x2d,0x20,0x4e,0x6f,0x74,0x65,0x20,0x74,0x68, + 0x65,0x72,0x65,0x20,0x69,0x73,0x20,0x61,0x6e,0x20,0x69,0x6d,0x70,0x6f,0x72,0x74, + 0x61,0x6e,0x74,0x20,0x6c,0x69,0x6d,0x69,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x64, + 0x75,0x65,0x20,0x74,0x6f,0x20,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x20,0x63,0x6f, + 0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e, + 0x74,0x61,0x74,0x69,0x6f,0x6e,0x3a,0x20,0x79,0x6f,0x75,0x20,0x63,0x61,0x6e,0x6e, + 0x6f,0x74,0x20,0x71,0x75,0x65,0x72,0x79,0x20,0x6d,0x61,0x69,0x6e,0x20,0x22,0x63, + 0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x22,0x20,0x66,0x72,0x6f,0x6d,0x0a,0x2d, + 0x2d,0x20,0x61,0x6e,0x6f,0x74,0x68,0x65,0x72,0x20,0x6f,0x6e,0x65,0x2c,0x20,0x73, + 0x6f,0x20,0x6d,0x61,0x69,0x6e,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, + 0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x69,0x6e,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x65,0x64,0x20,0x6c,0x69,0x73,0x74,0x20,0x28,0x74,0x68,0x69,0x73,0x20,0x77, + 0x69,0x6c,0x6c,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x77,0x69,0x74,0x68,0x20, + 0x4c,0x75,0x61,0x20,0x35,0x2e,0x32,0x29,0x2e,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20, + 0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x61,0x20,0x6e,0x6f,0x6e,0x2d,0x73,0x74, + 0x61,0x6e,0x64,0x61,0x72,0x64,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x2e,0x20, + 0x54,0x68,0x65,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x65,0x64,0x20,0x58,0x4d,0x4c, + 0x20,0x68,0x61,0x73,0x20,0x74,0x68,0x65,0x20,0x66,0x6f,0x6c,0x6c,0x6f,0x77,0x69, + 0x6e,0x67,0x20,0x73,0x74,0x72,0x75,0x63,0x75,0x74,0x75,0x72,0x65,0x3a,0x0a,0x2d, + 0x2d,0x20,0x20,0x20,0x20,0x20,0x3c,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20, + 0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x3d,0x22,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69, + 0x6e,0x65,0x5f,0x6c,0x69,0x73,0x74,0x22,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63, + 0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x3d,0x22,0x30,0x22,0x3e,0x0a,0x2d,0x2d,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x3c,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, + 0x20,0x6e,0x61,0x6d,0x65,0x3d,0x22,0x3c,0x73,0x6f,0x6d,0x65,0x20,0x70,0x72,0x69, + 0x6e,0x74,0x74,0x61,0x62,0x6c,0x65,0x20,0x6e,0x61,0x6d,0x65,0x3e,0x22,0x20,0x69, + 0x64,0x3d,0x22,0x3c,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x69,0x64, + 0x3e,0x22,0x20,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x3d,0x22,0x30,0x7c,0x31,0x22, + 0x20,0x2f,0x3e,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2e,0x2e,0x2e, + 0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x3c,0x2f,0x72,0x65,0x73,0x70,0x6f,0x6e, + 0x73,0x65,0x3e,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x63, + 0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x5f,0x6c,0x69,0x73,0x74,0x28,0x73,0x65, + 0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x20,0x3d,0x20,0x73,0x65, + 0x6c,0x66,0x2e,0x63,0x6f,0x72,0x6f,0x5b,0x31,0x5d,0x0a,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x20, + 0x3d,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73,0x70,0x6f, + 0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x63, + 0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20,0x22,0x63,0x6f,0x72,0x6f,0x75,0x74, + 0x69,0x6e,0x65,0x5f,0x6c,0x69,0x73,0x74,0x22,0x2c,0x20,0x74,0x72,0x61,0x6e,0x73, + 0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73, + 0x2e,0x69,0x20,0x7d,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x61,0x73, + 0x20,0x61,0x6e,0x79,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x20,0x6f, + 0x6e,0x20,0x6d,0x61,0x69,0x6e,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, + 0x20,0x77,0x69,0x6c,0x6c,0x20,0x66,0x61,0x69,0x6c,0x2c,0x20,0x69,0x74,0x20,0x69, + 0x73,0x20,0x6e,0x6f,0x74,0x20,0x79,0x65,0x74,0x20,0x6c,0x69,0x73,0x74,0x65,0x64, + 0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, + 0x65,0x73,0x5b,0x31,0x5d,0x20,0x3d,0x20,0x7b,0x20,0x6e,0x61,0x6d,0x65,0x20,0x3d, + 0x20,0x22,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x22,0x2c,0x20,0x61,0x74, + 0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x69,0x64,0x20,0x3d,0x20,0x30,0x2c,0x20,0x6e, + 0x61,0x6d,0x65,0x20,0x3d,0x20,0x22,0x6d,0x61,0x69,0x6e,0x22,0x2c,0x20,0x72,0x75, + 0x6e,0x6e,0x69,0x6e,0x67,0x20,0x3d,0x20,0x28,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67, + 0x20,0x3d,0x3d,0x20,0x6e,0x69,0x6c,0x29,0x20,0x61,0x6e,0x64,0x20,0x22,0x31,0x22, + 0x20,0x6f,0x72,0x20,0x22,0x30,0x22,0x20,0x7d,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, + 0x66,0x6f,0x72,0x20,0x69,0x64,0x2c,0x20,0x63,0x6f,0x72,0x6f,0x20,0x69,0x6e,0x20, + 0x70,0x61,0x69,0x72,0x73,0x28,0x63,0x6f,0x72,0x65,0x2e,0x61,0x63,0x74,0x69,0x76, + 0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x2e,0x66,0x72,0x6f, + 0x6d,0x5f,0x69,0x64,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x69,0x64,0x20,0x7e,0x3d,0x20,0x22,0x6e,0x22,0x20,0x74,0x68, + 0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63, + 0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x5b,0x23,0x63,0x6f,0x72,0x6f,0x75, + 0x74,0x69,0x6e,0x65,0x73,0x20,0x2b,0x20,0x31,0x5d,0x20,0x3d,0x20,0x7b,0x20,0x74, + 0x61,0x67,0x20,0x3d,0x20,0x22,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x22, + 0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x69,0x64,0x20,0x3d,0x20, + 0x69,0x64,0x2c,0x20,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x74,0x6f,0x73,0x74,0x72, + 0x69,0x6e,0x67,0x28,0x63,0x6f,0x72,0x6f,0x29,0x2c,0x20,0x72,0x75,0x6e,0x6e,0x69, + 0x6e,0x67,0x20,0x3d,0x20,0x28,0x63,0x6f,0x72,0x6f,0x20,0x3d,0x3d,0x20,0x72,0x75, + 0x6e,0x6e,0x69,0x6e,0x67,0x29,0x20,0x61,0x6e,0x64,0x20,0x22,0x31,0x22,0x20,0x6f, + 0x72,0x20,0x22,0x30,0x22,0x20,0x7d,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20, + 0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28, + 0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74, + 0x69,0x6e,0x65,0x73,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x6e,0x61, + 0x6d,0x65,0x73,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x72,0x6f,0x20,0x3d, + 0x20,0x67,0x65,0x74,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x28,0x73, + 0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x2e,0x6f,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x3d,0x20,0x74, + 0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e,0x64,0x20,0x6f, + 0x72,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69, + 0x6e,0x66,0x6f,0x20,0x3d,0x20,0x63,0x6f,0x72,0x6f,0x3a,0x67,0x65,0x74,0x69,0x6e, + 0x66,0x6f,0x28,0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x22,0x66,0x22,0x29,0x20,0x6f, + 0x72,0x20,0x64,0x62,0x67,0x70,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x33,0x30,0x31, + 0x2c,0x20,0x22,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x73,0x74,0x61,0x63,0x6b, + 0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x22,0x2e,0x2e,0x74,0x6f,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x28,0x6c,0x65,0x76,0x65,0x6c,0x29,0x29,0x0a,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x41,0x6c,0x6c,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x73,0x20, + 0x61,0x72,0x65,0x20,0x61,0x6c,0x77,0x61,0x79,0x73,0x20,0x70,0x61,0x73,0x73,0x65, + 0x64,0x2c,0x20,0x65,0x76,0x65,0x6e,0x20,0x69,0x66,0x20,0x65,0x6d,0x70,0x74,0x79, + 0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x68,0x6f,0x77,0x20,0x44,0x4c, + 0x54,0x4b,0x20,0x65,0x78,0x70,0x65,0x63,0x74,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78, + 0x74,0x2c,0x20,0x77,0x68,0x61,0x74,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x6f,0x74, + 0x68,0x65,0x72,0x73,0x20,0x3f,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x73,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73, + 0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b, + 0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20,0x22,0x63,0x6f,0x6e,0x74, + 0x65,0x78,0x74,0x5f,0x6e,0x61,0x6d,0x65,0x73,0x22,0x2c,0x20,0x74,0x72,0x61,0x6e, + 0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67, + 0x73,0x2e,0x69,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, + 0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22, + 0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x6e,0x61,0x6d,0x65,0x20, + 0x3d,0x20,0x22,0x4c,0x6f,0x63,0x61,0x6c,0x22,0x2c,0x20,0x20,0x20,0x69,0x64,0x20, + 0x3d,0x20,0x30,0x20,0x7d,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x63,0x6f,0x6e,0x74,0x65,0x78, + 0x74,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x6e,0x61,0x6d, + 0x65,0x20,0x3d,0x20,0x22,0x55,0x70,0x76,0x61,0x6c,0x75,0x65,0x22,0x2c,0x20,0x69, + 0x64,0x20,0x3d,0x20,0x32,0x20,0x7d,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x63,0x6f,0x6e,0x74, + 0x65,0x78,0x74,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x6e, + 0x61,0x6d,0x65,0x20,0x3d,0x20,0x22,0x47,0x6c,0x6f,0x62,0x61,0x6c,0x22,0x2c,0x20, + 0x20,0x69,0x64,0x20,0x3d,0x20,0x31,0x20,0x7d,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x20, + 0x20,0x7d,0x0a,0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e, + 0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20, + 0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x73,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78, + 0x74,0x5f,0x67,0x65,0x74,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x78,0x74,0x5f, + 0x6e,0x75,0x6d,0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61, + 0x72,0x67,0x73,0x2e,0x63,0x20,0x6f,0x72,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x78,0x74,0x5f,0x69,0x64,0x20,0x3d,0x20,0x63, + 0x6f,0x6e,0x74,0x65,0x78,0x74,0x2e,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5b,0x63, + 0x78,0x74,0x5f,0x6e,0x75,0x6d,0x5d,0x20,0x6f,0x72,0x20,0x64,0x62,0x67,0x70,0x2e, + 0x65,0x72,0x72,0x6f,0x72,0x28,0x33,0x30,0x32,0x2c,0x20,0x22,0x4e,0x6f,0x20,0x73, + 0x75,0x63,0x68,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x20,0x22,0x2e,0x2e, + 0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x63,0x78,0x74,0x5f,0x6e,0x75,0x6d, + 0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6c,0x65,0x76, + 0x65,0x6c,0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72, + 0x67,0x73,0x2e,0x64,0x20,0x6f,0x72,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x72,0x6f,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f, + 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20, + 0x61,0x72,0x67,0x73,0x2e,0x6f,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x63,0x78,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x74,0x61, + 0x63,0x6b,0x28,0x63,0x6f,0x72,0x6f,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x29,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x72,0x6f,0x70,0x65, + 0x72,0x74,0x69,0x65,0x73,0x20,0x3d,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20, + 0x22,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72, + 0x20,0x3d,0x20,0x7b,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20,0x22, + 0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x67,0x65,0x74,0x22,0x2c,0x20,0x74,0x72, + 0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61, + 0x72,0x67,0x73,0x2e,0x69,0x2c,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x3d, + 0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x7d,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x69,0x74,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x76,0x65, + 0x72,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x73,0x20,0x64,0x69,0x66,0x66, + 0x65,0x72,0x65,0x6e,0x74,0x20,0x28,0x74,0x68,0x69,0x73,0x20,0x63,0x6f,0x75,0x6c, + 0x64,0x20,0x62,0x65,0x20,0x75,0x6e,0x69,0x66,0x69,0x65,0x64,0x20,0x69,0x6e,0x20, + 0x4c,0x75,0x61,0x20,0x35,0x2e,0x32,0x20,0x74,0x68,0x61,0x6e,0x6b,0x73,0x20,0x74, + 0x6f,0x20,0x5f,0x5f,0x70,0x61,0x69,0x72,0x73,0x20,0x6d,0x65,0x74,0x61,0x6d,0x65, + 0x74,0x68,0x6f,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x6e,0x61, + 0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x20,0x69,0x6e,0x20,0x28,0x63,0x78,0x74,0x5f, + 0x6e,0x75,0x6d,0x20,0x3d,0x3d,0x20,0x31,0x20,0x61,0x6e,0x64,0x20,0x6e,0x65,0x78, + 0x74,0x20,0x6f,0x72,0x20,0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c, + 0x65,0x28,0x63,0x78,0x74,0x5b,0x63,0x78,0x74,0x5f,0x69,0x64,0x5d,0x29,0x2e,0x69, + 0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x29,0x2c,0x20,0x63,0x78,0x74,0x5b,0x63,0x78, + 0x74,0x5f,0x69,0x64,0x5d,0x2c,0x20,0x6e,0x69,0x6c,0x20,0x64,0x6f,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x74,0x68,0x65,0x20,0x44,0x42,0x47, + 0x70,0x20,0x73,0x70,0x65,0x63,0x69,0x66,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, + 0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x63,0x6c,0x65,0x61,0x72,0x20,0x61,0x62,0x6f, + 0x75,0x74,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x6f,0x66,0x20, + 0x61,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f,0x67,0x65,0x74,0x2c,0x20,0x62, + 0x75,0x74,0x20,0x61,0x20,0x72,0x65,0x63,0x75,0x72,0x73,0x69,0x76,0x65,0x20,0x67, + 0x65,0x74,0x20,0x63,0x6f,0x75,0x6c,0x64,0x20,0x62,0x65,0x20,0x2a,0x72,0x65,0x61, + 0x6c,0x6c,0x79,0x2a,0x20,0x73,0x6c,0x6f,0x77,0x20,0x69,0x6e,0x20,0x4c,0x75,0x61, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74, + 0x69,0x65,0x73,0x5b,0x23,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x69,0x65,0x73,0x20, + 0x2b,0x20,0x31,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63, + 0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72,0x6f,0x70,0x65,0x72, + 0x74,0x79,0x28,0x63,0x78,0x74,0x5f,0x6e,0x75,0x6d,0x2c,0x20,0x76,0x61,0x6c,0x2c, + 0x20,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x6e,0x69,0x6c,0x2c,0x20,0x30,0x2c,0x20,0x75, + 0x74,0x69,0x6c,0x2e,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x2e,0x6d,0x61,0x78, + 0x5f,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x20,0x30,0x2c,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x75,0x74,0x69,0x6c,0x2e,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x2e, + 0x6d,0x61,0x78,0x5f,0x64,0x61,0x74,0x61,0x2c,0x20,0x63,0x78,0x74,0x5f,0x6e,0x75, + 0x6d,0x20,0x7e,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78, + 0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x70,0x72,0x6f, + 0x70,0x65,0x72,0x74,0x69,0x65,0x73,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d, + 0x20,0x20,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x2a,0x20,0x63,0x6f,0x6d, + 0x6d,0x61,0x6e,0x64,0x73,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x54,0x68,0x69,0x73,0x20,0x69,0x6e, + 0x20,0x74,0x68,0x65,0x20,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74, + 0x20,0x69,0x6e,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x70,0x72,0x6f,0x70,0x65,0x72, + 0x74,0x69,0x65,0x73,0x20,0x61,0x72,0x65,0x20,0x67,0x65,0x74,0x20,0x6f,0x72,0x20, + 0x73,0x65,0x74,0x2e,0x0a,0x2d,0x2d,0x20,0x49,0x74,0x20,0x6e,0x6f,0x74,0x61,0x62, + 0x6c,0x79,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x20,0x61,0x20,0x63,0x6f,0x6c, + 0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x66,0x20,0x70,0x72,0x6f,0x78,0x79, + 0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x68,0x61,0x6e, + 0x64,0x6c,0x65,0x20,0x74,0x72,0x61,0x6e,0x73,0x70,0x61,0x72,0x65,0x6e,0x74,0x65, + 0x6c,0x79,0x20,0x67,0x65,0x74,0x2f,0x73,0x65,0x74,0x20,0x6f,0x70,0x65,0x72,0x61, + 0x74,0x69,0x6f,0x6e,0x73,0x20,0x6f,0x6e,0x20,0x73,0x70,0x65,0x63,0x69,0x61,0x6c, + 0x20,0x66,0x69,0x65,0x6c,0x64,0x73,0x0a,0x2d,0x2d,0x20,0x61,0x6e,0x64,0x20,0x74, + 0x68,0x65,0x20,0x63,0x61,0x63,0x68,0x65,0x20,0x6f,0x66,0x20,0x63,0x6f,0x6d,0x70, + 0x6c,0x65,0x78,0x20,0x6b,0x65,0x79,0x73,0x2e,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x65,0x76,0x61,0x6c,0x75,0x61,0x74, + 0x69,0x6f,0x6e,0x5f,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x20, + 0x3d,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68, + 0x65,0x20,0x3d,0x20,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f, + 0x6e,0x2e,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x2c,0x0a,0x20,0x20,0x20, + 0x20,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x20,0x3d,0x20,0x73,0x65,0x74, + 0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x7b,0x20,0x7d,0x2c,0x20,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78, + 0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66, + 0x2c,0x20,0x74,0x62,0x6c,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x65, + 0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x74,0x62,0x6c,0x29,0x20, + 0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x6e, + 0x65,0x77,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69, + 0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x74,0x62,0x6c,0x2c,0x20,0x6d,0x74, + 0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61, + 0x74,0x61,0x62,0x6c,0x65,0x28,0x74,0x62,0x6c,0x2c,0x20,0x6d,0x74,0x29,0x20,0x65, + 0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7d,0x29,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x20,0x3d,0x20,0x75,0x74, + 0x69,0x6c,0x2e,0x65,0x76,0x61,0x6c,0x5f,0x65,0x6e,0x76,0x2c,0x0a,0x7d,0x0a,0x2d, + 0x2d,0x20,0x74,0x6f,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x74,0x6f,0x20,0x62, + 0x65,0x20,0x73,0x65,0x74,0x20,0x61,0x73,0x20,0x6d,0x65,0x74,0x61,0x74,0x61,0x62, + 0x6c,0x65,0x0a,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x65,0x76,0x61,0x6c, + 0x75,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65, + 0x6e,0x74,0x2e,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x70,0x72,0x6f, + 0x70,0x65,0x72,0x74,0x79,0x5f,0x65,0x76,0x61,0x6c,0x75,0x61,0x74,0x69,0x6f,0x6e, + 0x5f,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x0a,0x0a,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74, + 0x79,0x5f,0x67,0x65,0x74,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x54,0x4f,0x44,0x4f,0x20,0x42,0x55,0x47, + 0x20,0x45,0x43,0x4c,0x49,0x50,0x53,0x45,0x20,0x54,0x4f,0x4f,0x4c,0x53,0x4c,0x49, + 0x4e,0x55,0x58,0x2d,0x39,0x39,0x20,0x33,0x35,0x32,0x33,0x31,0x36,0x0a,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x78,0x74,0x5f,0x6e,0x75,0x6d,0x2c, + 0x20,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x61,0x73,0x73,0x65,0x72,0x74,0x28,0x75, + 0x74,0x69,0x6c,0x2e,0x75,0x6e,0x62,0x36,0x34,0x28,0x61,0x72,0x67,0x73,0x2e,0x6e, + 0x29,0x3a,0x6d,0x61,0x74,0x63,0x68,0x28,0x22,0x5e,0x28,0x25,0x2d,0x3f,0x25,0x64, + 0x2b,0x29,0x7c,0x28,0x2e,0x2a,0x29,0x24,0x22,0x29,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x63,0x78,0x74,0x5f,0x6e,0x75,0x6d,0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62, + 0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e,0x63,0x20,0x6f,0x72,0x20,0x63,0x78,0x74, + 0x5f,0x6e,0x75,0x6d,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x63,0x78,0x74,0x5f,0x69,0x64,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74, + 0x2e,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5b,0x63,0x78,0x74,0x5f,0x6e,0x75,0x6d, + 0x5d,0x20,0x6f,0x72,0x20,0x64,0x62,0x67,0x70,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28, + 0x33,0x30,0x32,0x2c,0x20,0x22,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x63,0x6f, + 0x6e,0x74,0x65,0x78,0x74,0x3a,0x20,0x22,0x2e,0x2e,0x74,0x6f,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x28,0x63,0x78,0x74,0x5f,0x6e,0x75,0x6d,0x29,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x3d,0x20,0x74, + 0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e,0x64,0x20,0x6f, + 0x72,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63, + 0x6f,0x72,0x6f,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74, + 0x69,0x6e,0x65,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x2e,0x6f, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x69,0x7a,0x65, + 0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73, + 0x2e,0x6d,0x20,0x6f,0x72,0x20,0x75,0x74,0x69,0x6c,0x2e,0x66,0x65,0x61,0x74,0x75, + 0x72,0x65,0x73,0x2e,0x6d,0x61,0x78,0x5f,0x64,0x61,0x74,0x61,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x73,0x69,0x7a,0x65,0x20,0x3c,0x20,0x30,0x20,0x74,0x68, + 0x65,0x6e,0x20,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x20,0x65,0x6e, + 0x64,0x20,0x2d,0x2d,0x20,0x63,0x61,0x6c,0x6c,0x20,0x66,0x72,0x6f,0x6d,0x20,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x76,0x61,0x6c,0x75,0x65,0x0a,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x61,0x67,0x65,0x20,0x3d,0x20,0x74, + 0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e,0x70,0x20,0x6f, + 0x72,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63, + 0x78,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x74,0x61,0x63,0x6b,0x28, + 0x63,0x6f,0x72,0x6f,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x3d,0x20,0x64, + 0x62,0x67,0x70,0x2e,0x61,0x73,0x73,0x65,0x72,0x74,0x28,0x32,0x30,0x36,0x2c,0x20, + 0x75,0x74,0x69,0x6c,0x2e,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x28,0x22,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x22,0x2e,0x2e,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x70,0x72,0x6f, + 0x70,0x65,0x72,0x74,0x79,0x5f,0x65,0x76,0x61,0x6c,0x75,0x61,0x74,0x69,0x6f,0x6e, + 0x5f,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x29,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x72,0x6f,0x70,0x20,0x3d,0x20, + 0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x32,0x2c,0x20,0x64,0x62,0x67,0x70,0x2e,0x61, + 0x73,0x73,0x65,0x72,0x74,0x28,0x33,0x30,0x30,0x2c,0x20,0x70,0x63,0x61,0x6c,0x6c, + 0x28,0x63,0x68,0x75,0x6e,0x6b,0x2c,0x20,0x63,0x78,0x74,0x5b,0x63,0x78,0x74,0x5f, + 0x69,0x64,0x5d,0x29,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x74,0x72, + 0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x6d,0x61,0x6b,0x65,0x5f,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x63,0x78,0x74,0x5f,0x6e,0x75,0x6d,0x2c, + 0x20,0x70,0x72,0x6f,0x70,0x2c,0x20,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x6e,0x61,0x6d, + 0x65,0x2c,0x20,0x75,0x74,0x69,0x6c,0x2e,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73, + 0x2e,0x6d,0x61,0x78,0x5f,0x64,0x65,0x70,0x74,0x68,0x2c,0x20,0x75,0x74,0x69,0x6c, + 0x2e,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x2e,0x6d,0x61,0x78,0x5f,0x63,0x68, + 0x69,0x6c,0x64,0x72,0x65,0x6e,0x2c,0x20,0x70,0x61,0x67,0x65,0x2c,0x20,0x73,0x69, + 0x7a,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x6d,0x61,0x6b,0x65,0x5f, + 0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20, + 0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x66,0x6c,0x61,0x67,0x20,0x73,0x70,0x65, + 0x63,0x69,0x61,0x6c,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x73,0x20,0x61, + 0x73,0x20,0x73,0x75,0x63,0x68,0x20,0x77,0x68,0x65,0x6e,0x20,0x74,0x68,0x65,0x79, + 0x20,0x61,0x72,0x65,0x20,0x61,0x74,0x20,0x72,0x6f,0x6f,0x74,0x20,0x6f,0x66,0x20, + 0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65, + 0x73,0x20,0x71,0x75,0x65,0x72,0x69,0x65,0x73,0x20,0x61,0x72,0x65,0x20,0x69,0x6e, + 0x20,0x74,0x68,0x65,0x20,0x66,0x6f,0x72,0x6d,0x20,0x22,0x3c,0x70,0x72,0x6f,0x78, + 0x79,0x20,0x6e,0x61,0x6d,0x65,0x3e,0x5b,0x28,0x2e,0x2e,0x2e,0x29,0x5b,0x61,0x5d, + 0x5b,0x62,0x5d,0x3c,0x2e,0x2e,0x2e,0x3e,0x5d,0x22,0x0a,0x20,0x20,0x20,0x20,0x2d, + 0x2d,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x73,0x75,0x63,0x68,0x20,0x70,0x61,0x72, + 0x73,0x69,0x6e,0x67,0x20,0x69,0x73,0x20,0x66,0x61,0x72,0x20,0x66,0x72,0x6f,0x6d, + 0x20,0x70,0x65,0x72,0x66,0x65,0x63,0x74,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x6e,0x61,0x6d,0x65,0x3a,0x6d,0x61,0x74,0x63,0x68,0x28,0x22,0x5e,0x5b,0x25,0x77, + 0x5f,0x5d,0x2b,0x25,0x5b,0x2e,0x2d,0x25,0x62,0x5b,0x5d,0x25,0x5d,0x24,0x22,0x29, + 0x20,0x3d,0x3d,0x20,0x6e,0x61,0x6d,0x65,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65, + 0x73,0x70,0x6f,0x6e,0x73,0x65,0x2e,0x61,0x74,0x74,0x72,0x2e,0x74,0x79,0x70,0x65, + 0x20,0x3d,0x20,0x22,0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x22,0x20,0x65,0x6e,0x64, + 0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78, + 0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x7b,0x20,0x74, + 0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61, + 0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20, + 0x3d,0x20,0x22,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x22, + 0x2c,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64, + 0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x69,0x2c,0x20,0x63,0x6f,0x6e,0x74,0x65, + 0x78,0x74,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x7d,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73, + 0x70,0x6f,0x6e,0x73,0x65,0x20,0x7d,0x20,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72, + 0x74,0x79,0x5f,0x76,0x61,0x6c,0x75,0x65,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61, + 0x72,0x67,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x61,0x72,0x67,0x73,0x2e,0x6d,0x20, + 0x3d,0x20,0x2d,0x31,0x0a,0x20,0x20,0x20,0x20,0x4d,0x2e,0x70,0x72,0x6f,0x70,0x65, + 0x72,0x74,0x79,0x5f,0x67,0x65,0x74,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72, + 0x67,0x73,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x4d,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x73,0x65,0x74, + 0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x2c,0x20,0x64,0x61,0x74, + 0x61,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x78,0x74, + 0x5f,0x6e,0x75,0x6d,0x2c,0x20,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x61,0x73,0x73, + 0x65,0x72,0x74,0x28,0x75,0x74,0x69,0x6c,0x2e,0x75,0x6e,0x62,0x36,0x34,0x28,0x61, + 0x72,0x67,0x73,0x2e,0x6e,0x29,0x3a,0x6d,0x61,0x74,0x63,0x68,0x28,0x22,0x5e,0x28, + 0x25,0x2d,0x3f,0x25,0x64,0x2b,0x29,0x7c,0x28,0x2e,0x2a,0x29,0x24,0x22,0x29,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x63,0x78,0x74,0x5f,0x6e,0x75,0x6d,0x20,0x3d,0x20,0x74, + 0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e,0x63,0x20,0x6f, + 0x72,0x20,0x63,0x78,0x74,0x5f,0x6e,0x75,0x6d,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x63,0x78,0x74,0x5f,0x69,0x64,0x20,0x3d,0x20,0x63,0x6f, + 0x6e,0x74,0x65,0x78,0x74,0x2e,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5b,0x63,0x78, + 0x74,0x5f,0x6e,0x75,0x6d,0x5d,0x20,0x6f,0x72,0x20,0x64,0x62,0x67,0x70,0x2e,0x65, + 0x72,0x72,0x6f,0x72,0x28,0x33,0x30,0x32,0x2c,0x20,0x22,0x4e,0x6f,0x20,0x73,0x75, + 0x63,0x68,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x20,0x22,0x2e,0x2e,0x74, + 0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x63,0x78,0x74,0x5f,0x6e,0x75,0x6d,0x29, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6c,0x65,0x76,0x65, + 0x6c,0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72,0x67, + 0x73,0x2e,0x64,0x20,0x6f,0x72,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x63,0x6f,0x72,0x6f,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x63, + 0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61, + 0x72,0x67,0x73,0x2e,0x6f,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x63,0x78,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x74,0x61,0x63, + 0x6b,0x28,0x63,0x6f,0x72,0x6f,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x29,0x0a,0x0a, + 0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x65,0x76,0x61,0x6c,0x75,0x61,0x74,0x65,0x20, + 0x74,0x68,0x65,0x20,0x6e,0x65,0x77,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x69,0x6e, + 0x20,0x74,0x68,0x65,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x74,0x65, + 0x78,0x74,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x76,0x61,0x6c, + 0x75,0x65,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x32,0x2c,0x20,0x64, + 0x62,0x67,0x70,0x2e,0x61,0x73,0x73,0x65,0x72,0x74,0x28,0x32,0x30,0x36,0x2c,0x20, + 0x70,0x63,0x61,0x6c,0x6c,0x28,0x64,0x62,0x67,0x70,0x2e,0x61,0x73,0x73,0x65,0x72, + 0x74,0x28,0x32,0x30,0x36,0x2c,0x20,0x75,0x74,0x69,0x6c,0x2e,0x6c,0x6f,0x61,0x64, + 0x69,0x6e,0x28,0x22,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x2e,0x2e,0x64,0x61, + 0x74,0x61,0x2c,0x20,0x63,0x78,0x74,0x29,0x29,0x29,0x29,0x29,0x0a,0x0a,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x68,0x75,0x6e,0x6b,0x20,0x3d,0x20, + 0x64,0x62,0x67,0x70,0x2e,0x61,0x73,0x73,0x65,0x72,0x74,0x28,0x32,0x30,0x36,0x2c, + 0x20,0x75,0x74,0x69,0x6c,0x2e,0x6c,0x6f,0x61,0x64,0x69,0x6e,0x28,0x6e,0x61,0x6d, + 0x65,0x20,0x2e,0x2e,0x20,0x22,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x22,0x2c, + 0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x7b,0x20, + 0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x7d,0x2c, + 0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x65,0x76,0x61,0x6c,0x75,0x61, + 0x74,0x69,0x6f,0x6e,0x5f,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74, + 0x29,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x61,0x73,0x73, + 0x65,0x72,0x74,0x28,0x32,0x30,0x36,0x2c,0x20,0x70,0x63,0x61,0x6c,0x6c,0x28,0x63, + 0x68,0x75,0x6e,0x6b,0x2c,0x20,0x63,0x78,0x74,0x5b,0x63,0x78,0x74,0x5f,0x69,0x64, + 0x5d,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e, + 0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20, + 0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73, + 0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x73,0x75,0x63, + 0x63,0x65,0x73,0x73,0x20,0x3d,0x20,0x31,0x2c,0x20,0x74,0x72,0x61,0x6e,0x73,0x61, + 0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e, + 0x69,0x20,0x7d,0x20,0x7d,0x20,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x54, + 0x4f,0x44,0x4f,0x20,0x64,0x79,0x6e,0x61,0x6d,0x69,0x63,0x20,0x63,0x6f,0x64,0x65, + 0x20,0x68,0x61,0x6e,0x64,0x6c,0x69,0x6e,0x67,0x0a,0x2d,0x2d,0x20,0x54,0x68,0x65, + 0x20,0x44,0x42,0x47,0x70,0x20,0x73,0x70,0x65,0x63,0x69,0x66,0x69,0x63,0x61,0x74, + 0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x63,0x6c,0x65,0x61,0x72, + 0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x74,0x68,0x65,0x20,0x6c,0x69,0x6e,0x65,0x20, + 0x6e,0x75,0x6d,0x62,0x65,0x72,0x20,0x6d,0x65,0x61,0x6e,0x69,0x6e,0x67,0x2c,0x20, + 0x74,0x68,0x69,0x73,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74, + 0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x31,0x2d,0x62,0x61,0x73,0x65,0x64,0x20,0x61, + 0x6e,0x64,0x20,0x6e,0x75,0x6d,0x62,0x65,0x72,0x73,0x20,0x61,0x72,0x65,0x20,0x69, + 0x6e,0x63,0x6c,0x75,0x73,0x69,0x76,0x65,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x4d,0x2e,0x73,0x6f,0x75,0x72,0x63,0x65,0x28,0x73,0x65,0x6c,0x66,0x2c, + 0x20,0x61,0x72,0x67,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x70,0x61,0x74,0x68,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x61,0x72,0x67, + 0x73,0x2e,0x66,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d, + 0x2e,0x67,0x65,0x74,0x5f,0x70,0x61,0x74,0x68,0x28,0x61,0x72,0x67,0x73,0x2e,0x66, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x73,0x65,0x6c,0x66,0x2e,0x63, + 0x6f,0x72,0x6f,0x3a,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x30,0x2c,0x20,0x22, + 0x53,0x22,0x29,0x2e,0x73,0x6f,0x75,0x72,0x63,0x65,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x61,0x73,0x73,0x65,0x72,0x74,0x28,0x70,0x61,0x74,0x68,0x3a,0x73, + 0x75,0x62,0x28,0x31,0x2c,0x31,0x29,0x20,0x3d,0x3d,0x20,0x22,0x40,0x22,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x70, + 0x61,0x74,0x68,0x3a,0x73,0x75,0x62,0x28,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x69,0x6c, + 0x65,0x2c,0x20,0x65,0x72,0x72,0x20,0x3d,0x20,0x69,0x6f,0x2e,0x6f,0x70,0x65,0x6e, + 0x28,0x70,0x61,0x74,0x68,0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f, + 0x74,0x20,0x66,0x69,0x6c,0x65,0x20,0x74,0x68,0x65,0x6e,0x20,0x64,0x62,0x67,0x70, + 0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x31,0x30,0x30,0x2c,0x20,0x65,0x72,0x72,0x2c, + 0x20,0x7b,0x20,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x20,0x7d, + 0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x54,0x72,0x79, + 0x20,0x74,0x6f,0x20,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x79,0x20,0x63,0x6f,0x6d, + 0x70,0x69,0x6c,0x65,0x64,0x20,0x66,0x69,0x6c,0x65,0x73,0x0a,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x66,0x69,0x6c,0x65,0x3a,0x72,0x65,0x61,0x64,0x28,0x31,0x29,0x20, + 0x3d,0x3d,0x20,0x22,0x5c,0x30,0x33,0x33,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x64, + 0x62,0x67,0x70,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28,0x31,0x30,0x30,0x2c,0x20,0x61, + 0x72,0x67,0x73,0x2e,0x66,0x2e,0x2e,0x22,0x20,0x69,0x73,0x20,0x62,0x79,0x74,0x65, + 0x63,0x6f,0x64,0x65,0x22,0x2c,0x20,0x7b,0x20,0x73,0x75,0x63,0x63,0x65,0x73,0x73, + 0x20,0x3d,0x20,0x30,0x20,0x7d,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20, + 0x66,0x69,0x6c,0x65,0x3a,0x73,0x65,0x65,0x6b,0x28,0x22,0x73,0x65,0x74,0x22,0x2c, + 0x20,0x30,0x29,0x0a,0x0a,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x73,0x72,0x63,0x6c,0x69,0x6e,0x65,0x73,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x20, + 0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x65,0x67,0x69,0x6e,0x6c,0x69, + 0x6e,0x65,0x2c,0x20,0x65,0x6e,0x64,0x6c,0x69,0x6e,0x65,0x2c,0x20,0x63,0x75,0x72, + 0x72,0x65,0x6e,0x74,0x6c,0x69,0x6e,0x65,0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75,0x6d, + 0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e,0x62,0x20,0x6f,0x72,0x20,0x30,0x29, + 0x2c,0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x61,0x72,0x67,0x73,0x2e, + 0x65,0x20,0x6f,0x72,0x20,0x6d,0x61,0x74,0x68,0x2e,0x68,0x75,0x67,0x65,0x29,0x2c, + 0x20,0x30,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x6c,0x69,0x6e,0x65,0x20, + 0x69,0x6e,0x20,0x66,0x69,0x6c,0x65,0x3a,0x6c,0x69,0x6e,0x65,0x73,0x28,0x29,0x20, + 0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x75,0x72,0x72,0x65, + 0x6e,0x74,0x6c,0x69,0x6e,0x65,0x20,0x3d,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74, + 0x6c,0x69,0x6e,0x65,0x20,0x2b,0x20,0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x69,0x6e,0x65,0x20, + 0x3e,0x3d,0x20,0x62,0x65,0x67,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x61,0x6e,0x64, + 0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x69,0x6e,0x65,0x20,0x3c,0x3d,0x20, + 0x65,0x6e,0x64,0x6c,0x69,0x6e,0x65,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x6c,0x69,0x6e,0x65, + 0x73,0x5b,0x23,0x73,0x72,0x63,0x6c,0x69,0x6e,0x65,0x73,0x20,0x2b,0x20,0x31,0x5d, + 0x20,0x3d,0x20,0x6c,0x69,0x6e,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x69, + 0x6e,0x65,0x20,0x3e,0x3d,0x20,0x65,0x6e,0x64,0x6c,0x69,0x6e,0x65,0x20,0x74,0x68, + 0x65,0x6e,0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x66,0x69,0x6c,0x65,0x3a,0x63,0x6c, + 0x6f,0x73,0x65,0x28,0x29,0x0a,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x6c,0x69,0x6e, + 0x65,0x73,0x5b,0x23,0x73,0x72,0x63,0x6c,0x69,0x6e,0x65,0x73,0x20,0x2b,0x20,0x31, + 0x5d,0x20,0x3d,0x20,0x22,0x22,0x20,0x2d,0x2d,0x20,0x74,0x6f,0x20,0x61,0x64,0x64, + 0x20,0x61,0x20,0x74,0x72,0x61,0x69,0x6c,0x69,0x6e,0x67,0x20,0x5c,0x6e,0x0a,0x0a, + 0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d, + 0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x7b,0x20,0x74,0x61, + 0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x74, + 0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d, + 0x20,0x22,0x73,0x6f,0x75,0x72,0x63,0x65,0x22,0x2c,0x20,0x74,0x72,0x61,0x6e,0x73, + 0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73, + 0x2e,0x69,0x2c,0x20,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x20,0x3d,0x20,0x31,0x7d, + 0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x75,0x74,0x69,0x6c,0x2e,0x62,0x36,0x34,0x28,0x74,0x61,0x62,0x6c,0x65,0x2e,0x63, + 0x6f,0x6e,0x63,0x61,0x74,0x28,0x73,0x72,0x63,0x6c,0x69,0x6e,0x65,0x73,0x2c,0x20, + 0x22,0x5c,0x6e,0x22,0x29,0x29,0x20,0x7d,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d, + 0x2d,0x20,0x46,0x61,0x63,0x74,0x6f,0x72,0x79,0x20,0x66,0x6f,0x72,0x20,0x62,0x6f, + 0x74,0x68,0x20,0x73,0x74,0x64,0x6f,0x75,0x74,0x20,0x61,0x6e,0x64,0x20,0x73,0x74, + 0x64,0x65,0x72,0x72,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x2c,0x20,0x63, + 0x68,0x61,0x6e,0x67,0x65,0x20,0x66,0x69,0x6c,0x65,0x20,0x64,0x65,0x73,0x63,0x72, + 0x69,0x70,0x74,0x6f,0x72,0x20,0x69,0x6e,0x20,0x69,0x6f,0x0a,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x75,0x74,0x70,0x75, + 0x74,0x5f,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x5f,0x68,0x61,0x6e,0x64,0x6c,0x65, + 0x72,0x5f,0x66,0x61,0x63,0x74,0x6f,0x72,0x79,0x28,0x6d,0x6f,0x64,0x65,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x61,0x72,0x67,0x73,0x2e, + 0x63,0x20,0x3d,0x3d,0x20,0x22,0x30,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x2d,0x2d, + 0x20,0x64,0x69,0x73,0x61,0x62,0x6c,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x6f,0x5b,0x6d,0x6f,0x64,0x65,0x5d,0x20,0x3d,0x20, + 0x69,0x6f,0x2e,0x62,0x61,0x73,0x65,0x5b,0x6d,0x6f,0x64,0x65,0x5d,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6f,0x5b,0x6d,0x6f,0x64,0x65,0x5d,0x20, + 0x3d,0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x7b, + 0x20,0x73,0x6b,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c, + 0x20,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x20,0x6d,0x6f,0x64,0x65,0x20,0x7d,0x2c,0x20, + 0x61,0x72,0x67,0x73,0x2e,0x63,0x20,0x3d,0x3d,0x20,0x22,0x31,0x22,0x20,0x61,0x6e, + 0x64,0x20,0x63,0x6f,0x72,0x65,0x2e,0x63,0x6f,0x70,0x79,0x5f,0x6f,0x75,0x74,0x70, + 0x75,0x74,0x20,0x6f,0x72,0x20,0x63,0x6f,0x72,0x65,0x2e,0x72,0x65,0x64,0x69,0x72, + 0x65,0x63,0x74,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65, + 0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20, + 0x22,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72, + 0x20,0x3d,0x20,0x7b,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20,0x6d, + 0x6f,0x64,0x65,0x2c,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e, + 0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x69,0x2c,0x20,0x73,0x75, + 0x63,0x63,0x65,0x73,0x73,0x20,0x3d,0x20,0x22,0x31,0x22,0x20,0x7d,0x20,0x7d,0x20, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x4d, + 0x2e,0x73,0x74,0x64,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74, + 0x5f,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x5f,0x68,0x61,0x6e,0x64,0x6c,0x65,0x72, + 0x5f,0x66,0x61,0x63,0x74,0x6f,0x72,0x79,0x28,0x22,0x73,0x74,0x64,0x6f,0x75,0x74, + 0x22,0x29,0x0a,0x4d,0x2e,0x73,0x74,0x64,0x65,0x72,0x72,0x20,0x3d,0x20,0x6f,0x75, + 0x74,0x70,0x75,0x74,0x5f,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x5f,0x68,0x61,0x6e, + 0x64,0x6c,0x65,0x72,0x5f,0x66,0x61,0x63,0x74,0x6f,0x72,0x79,0x28,0x22,0x73,0x74, + 0x64,0x65,0x72,0x72,0x22,0x29,0x0a,0x0a,0x0a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x4d,0x0a,0x0a,0x65,0x6e,0x64,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x45,0x6e,0x64,0x20,0x6f, + 0x66,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, + 0x2e,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20, + 0x20,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, + 0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0a,0x70,0x61,0x63,0x6b,0x61,0x67,0x65, + 0x2e,0x70,0x72,0x65,0x6c,0x6f,0x61,0x64,0x5b,0x22,0x64,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x5d,0x20,0x3d,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20, + 0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x32,0x30, + 0x31,0x31,0x2d,0x32,0x30,0x31,0x32,0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57, + 0x69,0x72,0x65,0x6c,0x65,0x73,0x73,0x20,0x61,0x6e,0x64,0x20,0x6f,0x74,0x68,0x65, + 0x72,0x73,0x2e,0x0a,0x2d,0x2d,0x20,0x41,0x6c,0x6c,0x20,0x72,0x69,0x67,0x68,0x74, + 0x73,0x20,0x72,0x65,0x73,0x65,0x72,0x76,0x65,0x64,0x2e,0x20,0x54,0x68,0x69,0x73, + 0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65, + 0x20,0x61,0x63,0x63,0x6f,0x6d,0x70,0x61,0x6e,0x79,0x69,0x6e,0x67,0x20,0x6d,0x61, + 0x74,0x65,0x72,0x69,0x61,0x6c,0x73,0x0a,0x2d,0x2d,0x20,0x61,0x72,0x65,0x20,0x6d, + 0x61,0x64,0x65,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x75,0x6e, + 0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x74,0x65,0x72,0x6d,0x73,0x20,0x6f,0x66, + 0x20,0x74,0x68,0x65,0x20,0x45,0x63,0x6c,0x69,0x70,0x73,0x65,0x20,0x50,0x75,0x62, + 0x6c,0x69,0x63,0x20,0x4c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x76,0x31,0x2e,0x30, + 0x0a,0x2d,0x2d,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70, + 0x61,0x6e,0x69,0x65,0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x64,0x69,0x73,0x74,0x72, + 0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x61,0x6e,0x64,0x20,0x69,0x73,0x20, + 0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x61,0x74,0x0a,0x2d,0x2d,0x20, + 0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x65,0x63,0x6c,0x69,0x70, + 0x73,0x65,0x2e,0x6f,0x72,0x67,0x2f,0x6c,0x65,0x67,0x61,0x6c,0x2f,0x65,0x70,0x6c, + 0x2d,0x76,0x31,0x30,0x2e,0x68,0x74,0x6d,0x6c,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20, + 0x43,0x6f,0x6e,0x74,0x72,0x69,0x62,0x75,0x74,0x6f,0x72,0x73,0x3a,0x0a,0x2d,0x2d, + 0x20,0x20,0x20,0x20,0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65, + 0x6c,0x65,0x73,0x73,0x20,0x2d,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x20,0x41, + 0x50,0x49,0x20,0x61,0x6e,0x64,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74, + 0x61,0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x20,0x43,0x6f,0x6e,0x74,0x65,0x78, + 0x74,0x20,0x68,0x61,0x6e,0x64,0x6c,0x69,0x6e,0x67,0x3a,0x20,0x61,0x6c,0x6c,0x6f, + 0x77,0x73,0x20,0x74,0x6f,0x20,0x65,0x76,0x61,0x6c,0x75,0x61,0x74,0x65,0x20,0x63, + 0x6f,0x64,0x65,0x20,0x73,0x6e,0x69,0x70,0x70,0x65,0x74,0x73,0x20,0x69,0x6e,0x20, + 0x74,0x68,0x65,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x6f,0x66,0x20,0x61, + 0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x4d,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x64,0x62,0x67,0x70,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22, + 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x64,0x62,0x67,0x70,0x22,0x0a,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x75,0x74,0x69,0x6c,0x20,0x3d,0x20,0x72,0x65,0x71,0x75, + 0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74, + 0x69,0x6c,0x22,0x0a,0x0a,0x2d,0x2d,0x20,0x6d,0x61,0x6b,0x65,0x20,0x75,0x6e,0x69, + 0x71,0x75,0x65,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x20,0x74,0x6f,0x20,0x61,0x63, + 0x63,0x65,0x73,0x73,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x73,0x0a,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x2c,0x20,0x55,0x50,0x56,0x41,0x4c, + 0x2c,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x2c,0x20,0x45,0x56,0x41,0x4c,0x2c,0x20, + 0x53,0x54,0x4f,0x52,0x45,0x2c,0x20,0x48,0x41,0x4e,0x44,0x4c,0x45,0x20,0x3d,0x20, + 0x7b,0x7d,0x2c,0x20,0x7b,0x7d,0x2c,0x20,0x7b,0x7d,0x2c,0x20,0x7b,0x7d,0x2c,0x20, + 0x7b,0x7d,0x2c,0x20,0x7b,0x7d,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x67,0x65, + 0x74,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x73,0x0a,0x69,0x66,0x20,0x5f,0x56,0x45,0x52, + 0x53,0x49,0x4f,0x4e,0x20,0x3d,0x3d,0x20,0x22,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31, + 0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x67,0x65,0x74,0x67,0x6c, + 0x6f,0x62,0x61,0x6c,0x73,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x28,0x66,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x65,0x74,0x66,0x65, + 0x6e,0x76,0x28,0x66,0x29,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6c,0x73,0x65,0x69,0x66, + 0x20,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x20,0x3d,0x3d,0x20,0x22,0x4c,0x75, + 0x61,0x20,0x35,0x2e,0x32,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20, + 0x67,0x65,0x74,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x73,0x20,0x3d,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x2c,0x20,0x63,0x78,0x74,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x27,0x67,0x6c,0x6f,0x62,0x61,0x6c, + 0x27,0x20,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x3a,0x20,0x74, + 0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x65,0x69,0x74,0x68,0x65,0x72,0x20,0x74,0x68, + 0x65,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x5f,0x45,0x4e,0x56,0x20,0x6f,0x72,0x20, + 0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x20,0x5f,0x45,0x4e,0x56,0x2e,0x20,0x41,0x20, + 0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x20,0x63,0x61,0x73,0x65,0x20,0x68,0x61,0x70, + 0x70,0x65,0x6e,0x20,0x77,0x68,0x65,0x6e,0x20,0x61,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64, + 0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63, + 0x65,0x20,0x61,0x6e,0x79,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x76,0x61,0x72, + 0x69,0x61,0x62,0x6c,0x65,0x3a,0x20,0x74,0x68,0x65,0x20,0x75,0x70,0x76,0x61,0x6c, + 0x75,0x65,0x20,0x5f,0x45,0x4e,0x56,0x20,0x6d,0x61,0x79,0x20,0x6e,0x6f,0x74,0x20, + 0x65,0x78,0x69,0x73,0x74,0x20,0x61,0x74,0x20,0x61,0x6c,0x6c,0x2e,0x20,0x49,0x6e, + 0x20,0x74,0x68,0x69,0x73,0x20,0x63,0x61,0x73,0x65,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x65,0x6e, + 0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74, + 0x20,0x72,0x65,0x6c,0x65,0x76,0x61,0x6e,0x74,0x20,0x73,0x6f,0x20,0x69,0x74,0x20, + 0x69,0x73,0x20,0x66,0x69,0x78,0x65,0x64,0x20,0x74,0x6f,0x20,0x61,0x6e,0x20,0x65, + 0x6d,0x70,0x74,0x79,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x20,0x41,0x6e,0x6f,0x74, + 0x68,0x65,0x72,0x20,0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x20,0x77,0x6f,0x75, + 0x6c,0x64,0x20,0x62,0x65,0x20,0x74,0x6f,0x20,0x73,0x65,0x74,0x20,0x69,0x74,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x74,0x6f,0x20,0x74,0x68, + 0x65,0x20,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x20,0x66,0x72, + 0x6f,0x6d,0x20,0x61,0x62,0x6f,0x76,0x65,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6c, + 0x65,0x76,0x65,0x6c,0x20,0x62,0x75,0x74,0x20,0x69,0x74,0x20,0x77,0x6f,0x75,0x6c, + 0x64,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x73,0x6f,0x6d,0x65,0x20,0x6f, + 0x76,0x65,0x72,0x68,0x65,0x61,0x64,0x20,0x28,0x65,0x73,0x70,0x65,0x63,0x69,0x61, + 0x6c,0x6c,0x79,0x20,0x69,0x66,0x20,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x6c,0x65,0x76,0x65,0x6c, + 0x73,0x20,0x6d,0x75,0x73,0x74,0x20,0x62,0x65,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e, + 0x74,0x69,0x61,0x74,0x65,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x20,0x20,0x20,0x20,0x63,0x78,0x74,0x5b,0x4c,0x4f,0x43,0x41,0x4c, + 0x5d,0x5b,0x53,0x54,0x4f,0x52,0x45,0x5d,0x5b,0x22,0x5f,0x45,0x4e,0x56,0x22,0x5d, + 0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x78,0x74, + 0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5d,0x5b,0x22,0x5f,0x45,0x4e,0x56,0x22,0x5d,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x63, + 0x78,0x74,0x5b,0x55,0x50,0x56,0x41,0x4c,0x5d,0x5b,0x53,0x54,0x4f,0x52,0x45,0x5d, + 0x5b,0x22,0x5f,0x45,0x4e,0x56,0x22,0x5d,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x63,0x78,0x74,0x5b,0x55,0x50,0x56,0x41,0x4c,0x5d,0x5b, + 0x22,0x5f,0x45,0x4e,0x56,0x22,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x7b,0x20,0x7d,0x20, + 0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a, + 0x0a,0x2d,0x2d,0x2d,0x20,0x43,0x61,0x70,0x74,0x75,0x72,0x65,0x73,0x20,0x76,0x61, + 0x72,0x69,0x61,0x62,0x6c,0x65,0x73,0x20,0x66,0x6f,0x72,0x20,0x67,0x69,0x76,0x65, + 0x6e,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x2e,0x20,0x54, + 0x68,0x65,0x20,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x20,0x63,0x6f,0x6e,0x74,0x61, + 0x69,0x6e,0x73,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x2c,0x20,0x75,0x70,0x76,0x61,0x6c, + 0x75,0x65,0x73,0x20,0x61,0x6e,0x64,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x76, + 0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x73,0x2e,0x0a,0x2d,0x2d,0x20,0x54,0x68,0x65, + 0x20,0x63,0x61,0x70,0x74,0x75,0x72,0x65,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20, + 0x73,0x65,0x65,0x6e,0x20,0x61,0x73,0x20,0x61,0x20,0x70,0x72,0x6f,0x78,0x79,0x20, + 0x74,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x73,0x74,0x61, + 0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x3a,0x20,0x61,0x6e,0x79,0x20,0x76,0x61, + 0x6c,0x75,0x65,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x71,0x75,0x65,0x72,0x69, + 0x65,0x64,0x20,0x6f,0x72,0x20,0x73,0x65,0x74,0x20,0x6e,0x6f,0x20,0x6d,0x61,0x74, + 0x74,0x65,0x72,0x0a,0x2d,0x2d,0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x61,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x6f,0x72,0x20,0x61,0x6e,0x20,0x75,0x70,0x76,0x61,0x6c, + 0x75,0x65,0x2e,0x0a,0x2d,0x2d,0x20,0x54,0x68,0x65,0x20,0x69,0x6e,0x64,0x69,0x76, + 0x69,0x64,0x75,0x61,0x6c,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x61,0x6e,0x64,0x20, + 0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74, + 0x20,0x61,0x72,0x65,0x20,0x61,0x6c,0x73,0x6f,0x20,0x61,0x76,0x61,0x69,0x6c,0x61, + 0x62,0x6c,0x65,0x20,0x61,0x6e,0x64,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x71, + 0x75,0x65,0x72,0x69,0x65,0x64,0x20,0x61,0x6e,0x64,0x20,0x6d,0x6f,0x64,0x69,0x66, + 0x69,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x69,0x6e,0x64,0x65,0x78,0x65,0x64, + 0x20,0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x6f,0x2e,0x0a,0x2d, + 0x2d,0x20,0x54,0x68,0x65,0x73,0x65,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x73,0x20, + 0x61,0x72,0x65,0x20,0x4e,0x4f,0x54,0x20,0x70,0x65,0x72,0x73,0x69,0x73,0x74,0x61, + 0x6e,0x74,0x20,0x61,0x6e,0x64,0x20,0x6d,0x75,0x73,0x74,0x20,0x6e,0x6f,0x74,0x20, + 0x62,0x65,0x20,0x75,0x73,0x65,0x64,0x20,0x6f,0x75,0x74,0x73,0x69,0x64,0x65,0x20, + 0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x6c,0x6f,0x6f, + 0x70,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x69, + 0x61,0x74,0x65,0x64,0x20,0x74,0x68,0x65,0x6d,0x20,0x21,0x0a,0x4d,0x2e,0x43,0x6f, + 0x6e,0x74,0x65,0x78,0x74,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d, + 0x20,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x69,0x64,0x65,0x6e,0x74,0x69,0x66, + 0x69,0x65,0x72,0x73,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x61,0x63,0x63,0x65, + 0x73,0x73,0x65,0x64,0x20,0x62,0x79,0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x44,0x42, + 0x47,0x70,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x49,0x44,0x0a,0x20,0x20, + 0x20,0x20,0x5b,0x30,0x5d,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x5b,0x31,0x5d,0x20,0x3d,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x2c, + 0x20,0x2d,0x2d,0x20,0x44,0x4c,0x54,0x4b,0x20,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61, + 0x6c,0x20,0x49,0x44,0x20,0x66,0x6f,0x72,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x73, + 0x20,0x69,0x73,0x20,0x31,0x0a,0x20,0x20,0x20,0x20,0x5b,0x32,0x5d,0x20,0x3d,0x20, + 0x55,0x50,0x56,0x41,0x4c,0x2c,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x45,0x56, + 0x41,0x4c,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x20,0x74,0x6f,0x20,0x6b,0x65, + 0x65,0x70,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x73,0x20,0x66,0x72,0x6f,0x6d,0x20, + 0x65,0x76,0x61,0x6c,0x20,0x69,0x6e,0x20,0x63,0x61,0x63,0x68,0x65,0x20,0x69,0x6e, + 0x20,0x6f,0x72,0x64,0x65,0x72,0x20,0x74,0x6f,0x20,0x62,0x72,0x6f,0x77,0x73,0x65, + 0x20,0x6f,0x72,0x20,0x6d,0x6f,0x64,0x69,0x66,0x79,0x20,0x74,0x68,0x65,0x6d,0x2c, + 0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x73,0x20,0x61,0x72,0x65,0x20,0x73,0x74,0x6f, + 0x72,0x65,0x64,0x20,0x61,0x73,0x20,0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0x0a, + 0x20,0x20,0x20,0x20,0x5b,0x2d,0x31,0x5d,0x20,0x3d,0x20,0x45,0x56,0x41,0x4c,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x53,0x54,0x4f,0x52,0x45,0x20,0x3d,0x20,0x53,0x54,0x4f, + 0x52,0x45,0x2c,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x67,0x65,0x74,0x73, + 0x20,0x61,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x20,0x62,0x79,0x20,0x6e, + 0x61,0x6d,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74, + 0x20,0x68,0x61,0x6e,0x64,0x6c,0x69,0x6e,0x67,0x20,0x6f,0x66,0x20,0x4c,0x75,0x61, + 0x20,0x73,0x63,0x6f,0x70,0x65,0x20,0x63,0x68,0x61,0x69,0x6e,0x0a,0x20,0x20,0x20, + 0x20,0x2d,0x2d,0x20,0x74,0x68,0x65,0x20,0x6f,0x72,0x20,0x63,0x68,0x61,0x69,0x6e, + 0x20,0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x77,0x6f,0x72,0x6b,0x20,0x68, + 0x65,0x72,0x65,0x20,0x62,0x65,0x61,0x63,0x61,0x75,0x73,0x65,0x20,0x5f,0x5f,0x69, + 0x6e,0x64,0x65,0x78,0x20,0x6d,0x65,0x74,0x61,0x6d,0x65,0x74,0x68,0x6f,0x64,0x20, + 0x77,0x6f,0x75,0x6c,0x64,0x20,0x72,0x61,0x69,0x73,0x65,0x20,0x61,0x6e,0x20,0x65, + 0x72,0x72,0x6f,0x72,0x20,0x69,0x6e,0x73,0x74,0x65,0x61,0x64,0x20,0x6f,0x66,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x69,0x6e,0x67,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20, + 0x20,0x20,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6b,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x20,0x20,0x20,0x20,0x73,0x65,0x6c, + 0x66,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5d,0x5b,0x53,0x54,0x4f,0x52,0x45,0x5d,0x5b, + 0x6b,0x5d,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73, + 0x65,0x6c,0x66,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5d,0x5b,0x6b,0x5d,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x73,0x65,0x6c, + 0x66,0x5b,0x55,0x50,0x56,0x41,0x4c,0x5d,0x5b,0x53,0x54,0x4f,0x52,0x45,0x5d,0x5b, + 0x6b,0x5d,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73, + 0x65,0x6c,0x66,0x5b,0x55,0x50,0x56,0x41,0x4c,0x5d,0x5b,0x6b,0x5d,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x73,0x65,0x6c,0x66,0x5b,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5d,0x5b,0x6b, + 0x5d,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6b, + 0x2c,0x20,0x76,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x20,0x20,0x20,0x20,0x73,0x65,0x6c,0x66,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5d,0x5b, + 0x53,0x54,0x4f,0x52,0x45,0x5d,0x5b,0x6b,0x5d,0x20,0x74,0x68,0x65,0x6e,0x20,0x73, + 0x65,0x6c,0x66,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5d,0x5b,0x6b,0x5d,0x20,0x3d,0x20, + 0x76,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66, + 0x20,0x73,0x65,0x6c,0x66,0x5b,0x55,0x50,0x56,0x41,0x4c,0x5d,0x5b,0x53,0x54,0x4f, + 0x52,0x45,0x5d,0x5b,0x6b,0x5d,0x20,0x74,0x68,0x65,0x6e,0x20,0x73,0x65,0x6c,0x66, + 0x5b,0x55,0x50,0x56,0x41,0x4c,0x5d,0x5b,0x6b,0x5d,0x20,0x3d,0x20,0x76,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x20,0x73,0x65,0x6c,0x66, + 0x5b,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5d,0x5b,0x6b,0x5d,0x20,0x3d,0x20,0x76,0x20, + 0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x0a,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x6f,0x6e,0x6c,0x79,0x20, + 0x21,0x21,0x0a,0x20,0x20,0x20,0x20,0x5f,0x5f,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e, + 0x67,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c, + 0x66,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x62,0x75,0x66,0x20,0x3d,0x20,0x7b,0x20,0x22,0x4c,0x6f,0x63,0x61,0x6c,0x73, + 0x3a,0x20,0x5c,0x6e,0x22,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x66,0x6f,0x72,0x20,0x6b,0x2c,0x76,0x20,0x69,0x6e,0x20,0x70,0x61,0x69,0x72,0x73, + 0x28,0x73,0x65,0x6c,0x66,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5d,0x5b,0x53,0x54,0x4f, + 0x52,0x45,0x5d,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x5b,0x23,0x62,0x75,0x66,0x2b,0x31,0x5d,0x20, + 0x3d,0x20,0x22,0x5c,0x74,0x22,0x2e,0x2e,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67, + 0x28,0x6b,0x29,0x2e,0x2e,0x22,0x28,0x22,0x2e,0x2e,0x74,0x6f,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x28,0x76,0x29,0x2e,0x2e,0x22,0x29,0x3d,0x22,0x2e,0x2e,0x74,0x6f,0x73, + 0x74,0x72,0x69,0x6e,0x67,0x28,0x73,0x65,0x6c,0x66,0x5b,0x4c,0x4f,0x43,0x41,0x4c, + 0x5d,0x5b,0x6b,0x5d,0x29,0x2e,0x2e,0x22,0x5c,0x6e,0x22,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x62,0x75,0x66,0x5b,0x23,0x62,0x75,0x66,0x2b,0x31,0x5d,0x20,0x3d,0x20,0x22,0x55, + 0x70,0x76,0x61,0x6c,0x75,0x65,0x73,0x3a,0x20,0x5c,0x6e,0x22,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x6b,0x2c,0x76,0x20,0x69,0x6e,0x20, + 0x70,0x61,0x69,0x72,0x73,0x28,0x73,0x65,0x6c,0x66,0x5b,0x55,0x50,0x56,0x41,0x4c, + 0x5d,0x5b,0x53,0x54,0x4f,0x52,0x45,0x5d,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x5b,0x23,0x62,0x75, + 0x66,0x2b,0x31,0x5d,0x20,0x3d,0x20,0x22,0x5c,0x74,0x22,0x2e,0x2e,0x74,0x6f,0x73, + 0x74,0x72,0x69,0x6e,0x67,0x28,0x6b,0x29,0x2e,0x2e,0x22,0x28,0x22,0x2e,0x2e,0x74, + 0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x76,0x29,0x2e,0x2e,0x22,0x29,0x3d,0x22, + 0x2e,0x2e,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x73,0x65,0x6c,0x66,0x5b, + 0x55,0x50,0x56,0x41,0x4c,0x5d,0x5b,0x6b,0x5d,0x29,0x2e,0x2e,0x22,0x5c,0x6e,0x22, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x61,0x62,0x6c, + 0x65,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x62,0x75,0x66,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x0a,0x20,0x20,0x20,0x20,0x4c,0x6f,0x63,0x61, + 0x6c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6b,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x73,0x65,0x6c,0x66,0x5b, + 0x53,0x54,0x4f,0x52,0x45,0x5d,0x5b,0x6b,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x69,0x6e,0x64, + 0x65,0x78,0x20,0x74,0x68,0x65,0x6e,0x20,0x65,0x72,0x72,0x6f,0x72,0x28,0x22,0x54, + 0x68,0x65,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x22,0x2e,0x2e,0x74,0x6f,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x28,0x6b,0x29,0x2e,0x2e,0x22,0x20,0x64,0x6f,0x65,0x73,0x20, + 0x6e,0x6f,0x74,0x20,0x65,0x78,0x69,0x73,0x74,0x73,0x2e,0x22,0x29,0x20,0x65,0x6e, + 0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x68,0x61,0x6e,0x64,0x6c,0x65,0x20,0x3d,0x20,0x73,0x65,0x6c, + 0x66,0x5b,0x48,0x41,0x4e,0x44,0x4c,0x45,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x6c, + 0x65,0x63,0x74,0x28,0x32,0x2c,0x20,0x68,0x61,0x6e,0x64,0x6c,0x65,0x2e,0x63,0x6f, + 0x72,0x6f,0x3a,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x28,0x68,0x61,0x6e,0x64, + 0x6c,0x65,0x2e,0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x29, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e,0x64,0x65, + 0x78,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c, + 0x66,0x2c,0x20,0x6b,0x2c,0x20,0x76,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x6e,0x64,0x65,0x78, + 0x20,0x3d,0x20,0x73,0x65,0x6c,0x66,0x5b,0x53,0x54,0x4f,0x52,0x45,0x5d,0x5b,0x6b, + 0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x68,0x61,0x6e,0x64,0x6c,0x65,0x20,0x3d,0x20,0x73,0x65,0x6c,0x66,0x5b, + 0x48,0x41,0x4e,0x44,0x4c,0x45,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x61,0x6e,0x64,0x6c,0x65,0x2e,0x63, + 0x6f,0x72,0x6f,0x3a,0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x28,0x68,0x61,0x6e, + 0x64,0x6c,0x65,0x2e,0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78, + 0x2c,0x20,0x76,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x65,0x6c,0x73,0x65,0x20,0x65,0x72,0x72,0x6f,0x72,0x28,0x22,0x43,0x61,0x6e, + 0x6e,0x6f,0x74,0x20,0x73,0x65,0x74,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x22,0x20, + 0x2e,0x2e,0x20,0x6b,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d, + 0x2d,0x20,0x4c,0x75,0x61,0x20,0x35,0x2e,0x32,0x20,0x72,0x65,0x61,0x64,0x79,0x20, + 0x3a,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x5f,0x5f,0x70, + 0x61,0x69,0x72,0x73,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28, + 0x73,0x65,0x6c,0x66,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x65,0x74, + 0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x73,0x65,0x6c,0x66,0x29,0x2e, + 0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x2c,0x20,0x73,0x65,0x6c,0x66,0x2c,0x20, + 0x6e,0x69,0x6c,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x70,0x72,0x65,0x76,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x6b,0x65,0x79,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20, + 0x6e,0x65,0x78,0x74,0x28,0x73,0x65,0x6c,0x66,0x5b,0x53,0x54,0x4f,0x52,0x45,0x5d, + 0x2c,0x20,0x70,0x72,0x65,0x76,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6b,0x65,0x79,0x20,0x74,0x68,0x65,0x6e,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x65,0x79,0x2c,0x20,0x73,0x65,0x6c,0x66, + 0x5b,0x6b,0x65,0x79,0x5d,0x20,0x65,0x6c,0x73,0x65,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x6e,0x69,0x6c,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7d,0x2c,0x0a,0x0a,0x20, + 0x20,0x20,0x20,0x55,0x70,0x76,0x61,0x6c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20, + 0x3d,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x69,0x6e, + 0x64,0x65,0x78,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73, + 0x65,0x6c,0x66,0x2c,0x20,0x6b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20, + 0x3d,0x20,0x73,0x65,0x6c,0x66,0x5b,0x53,0x54,0x4f,0x52,0x45,0x5d,0x5b,0x6b,0x5d, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x6e,0x6f,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x74,0x68,0x65,0x6e,0x20,0x65, + 0x72,0x72,0x6f,0x72,0x28,0x22,0x54,0x68,0x65,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x22,0x2e,0x2e,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x6b,0x29,0x2e,0x2e, + 0x22,0x20,0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x65,0x78,0x69,0x74,0x73, + 0x74,0x73,0x2e,0x22,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x6c, + 0x65,0x63,0x74,0x28,0x32,0x2c,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x67,0x65,0x74, + 0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x28,0x73,0x65,0x6c,0x66,0x5b,0x48,0x41,0x4e, + 0x44,0x4c,0x45,0x5d,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x29,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6b, + 0x2c,0x20,0x76,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x73, + 0x65,0x6c,0x66,0x5b,0x53,0x54,0x4f,0x52,0x45,0x5d,0x5b,0x6b,0x5d,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x69,0x6e,0x64, + 0x65,0x78,0x20,0x74,0x68,0x65,0x6e,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x73,0x65, + 0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x28,0x73,0x65,0x6c,0x66,0x5b,0x48,0x41, + 0x4e,0x44,0x4c,0x45,0x5d,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x76,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, + 0x65,0x20,0x65,0x72,0x72,0x6f,0x72,0x28,0x22,0x43,0x61,0x6e,0x6e,0x6f,0x74,0x20, + 0x73,0x65,0x74,0x20,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x20,0x22,0x20,0x2e,0x2e, + 0x20,0x6b,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x4c,0x75,0x61,0x20,0x35,0x2e,0x32,0x20,0x72,0x65,0x61,0x64,0x79,0x20,0x3a,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x5f,0x5f,0x70,0x61, + 0x69,0x72,0x73,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73, + 0x65,0x6c,0x66,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x65,0x74,0x6d, + 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x73,0x65,0x6c,0x66,0x29,0x2e,0x69, + 0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x2c,0x20,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6e, + 0x69,0x6c,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x74,0x65,0x72,0x61,0x74,0x6f,0x72,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x70,0x72,0x65,0x76,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x6b,0x65,0x79,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6e, + 0x65,0x78,0x74,0x28,0x73,0x65,0x6c,0x66,0x5b,0x53,0x54,0x4f,0x52,0x45,0x5d,0x2c, + 0x20,0x70,0x72,0x65,0x76,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x6b,0x65,0x79,0x20,0x74,0x68,0x65,0x6e,0x20,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x6b,0x65,0x79,0x2c,0x20,0x73,0x65,0x6c,0x66,0x5b, + 0x6b,0x65,0x79,0x5d,0x20,0x65,0x6c,0x73,0x65,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x6e,0x69,0x6c,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7d,0x2c,0x0a,0x0a,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x63,0x6f, + 0x6e,0x73,0x74,0x72,0x75,0x63,0x74,0x6f,0x72,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d, + 0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x63,0x6f,0x72,0x6f,0x20,0x20,0x28,0x75, + 0x74,0x69,0x6c,0x2e,0x2a,0x54,0x68,0x72,0x65,0x61,0x64,0x20,0x69,0x6e,0x73,0x74, + 0x61,0x6e,0x63,0x65,0x29,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20, + 0x74,0x6f,0x20,0x6d,0x61,0x70,0x20,0x74,0x6f,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d, + 0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x28,0x6e, + 0x75,0x6d,0x62,0x65,0x72,0x29,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76, + 0x65,0x6c,0x20,0x64,0x6f,0x20,0x64,0x75,0x6d,0x70,0x20,0x28,0x73,0x63,0x72,0x69, + 0x70,0x74,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x6e,0x65,0x77,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69, + 0x6f,0x6e,0x28,0x63,0x6c,0x73,0x2c,0x20,0x63,0x6f,0x72,0x6f,0x2c,0x20,0x6c,0x65, + 0x76,0x65,0x6c,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x73,0x2c,0x20,0x75,0x70,0x76,0x61,0x6c, + 0x75,0x65,0x73,0x20,0x3d,0x20,0x7b,0x7d,0x2c,0x20,0x7b,0x7d,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x3c,0x20, + 0x30,0x20,0x74,0x68,0x65,0x6e,0x20,0x64,0x62,0x67,0x70,0x2e,0x65,0x72,0x72,0x6f, + 0x72,0x28,0x33,0x30,0x31,0x2c,0x20,0x22,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20, + 0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x3a,0x20,0x22,0x2e,0x2e, + 0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x6c,0x65,0x76,0x65,0x6c,0x29,0x29, + 0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x20,0x3d,0x20,0x28,0x63,0x6f,0x72,0x6f,0x3a, + 0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x22, + 0x66,0x22,0x29,0x20,0x6f,0x72,0x20,0x64,0x62,0x67,0x70,0x2e,0x65,0x72,0x72,0x6f, + 0x72,0x28,0x33,0x30,0x31,0x2c,0x20,0x22,0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20, + 0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x3a,0x20,0x22,0x2e,0x2e, + 0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x6c,0x65,0x76,0x65,0x6c,0x29,0x29, + 0x29,0x2e,0x66,0x75,0x6e,0x63,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c, + 0x65,0x73,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x69, + 0x3d,0x31,0x2c,0x20,0x6d,0x61,0x74,0x68,0x2e,0x68,0x75,0x67,0x65,0x20,0x64,0x6f, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x20,0x3d,0x20,0x63, + 0x6f,0x72,0x6f,0x3a,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x28,0x6c,0x65,0x76, + 0x65,0x6c,0x2c,0x20,0x69,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x6e,0x61,0x6d,0x65,0x20,0x74, + 0x68,0x65,0x6e,0x20,0x62,0x72,0x65,0x61,0x6b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x6e,0x61,0x6d, + 0x65,0x3a,0x73,0x75,0x62,0x28,0x31,0x2c,0x31,0x29,0x20,0x7e,0x3d,0x20,0x22,0x28, + 0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x2d,0x2d,0x20,0x73,0x6b,0x69,0x70,0x20,0x69, + 0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x73,0x5b,0x6e,0x61,0x6d,0x65,0x5d,0x20,0x3d,0x20,0x69,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x73, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x69,0x3d,0x31, + 0x2c,0x20,0x6d,0x61,0x74,0x68,0x2e,0x68,0x75,0x67,0x65,0x20,0x64,0x6f,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x20,0x3d,0x20,0x64,0x65,0x62, + 0x75,0x67,0x2e,0x67,0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x28,0x66,0x75, + 0x6e,0x63,0x2c,0x20,0x69,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x6e,0x61,0x6d,0x65,0x20,0x74, + 0x68,0x65,0x6e,0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x70,0x76,0x61,0x6c,0x75, + 0x65,0x73,0x5b,0x6e,0x61,0x6d,0x65,0x5d,0x20,0x3d,0x20,0x69,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x73,0x20,0x3d,0x20,0x73,0x65,0x74,0x6d,0x65, + 0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x7b,0x20,0x5b,0x53,0x54,0x4f,0x52,0x45, + 0x5d,0x20,0x3d,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x73,0x2c,0x20,0x5b,0x48,0x41,0x4e, + 0x44,0x4c,0x45,0x5d,0x20,0x3d,0x20,0x7b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x3d, + 0x20,0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x63,0x6f,0x72,0x6f,0x20,0x3d,0x20,0x63, + 0x6f,0x72,0x6f,0x20,0x7d,0x20,0x7d,0x2c,0x20,0x63,0x6c,0x73,0x2e,0x4c,0x6f,0x63, + 0x61,0x6c,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x73,0x65, + 0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x7b,0x20,0x5b,0x53,0x54, + 0x4f,0x52,0x45,0x5d,0x20,0x3d,0x20,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c, + 0x20,0x5b,0x48,0x41,0x4e,0x44,0x4c,0x45,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63, + 0x20,0x7d,0x2c,0x20,0x63,0x6c,0x73,0x2e,0x55,0x70,0x76,0x61,0x6c,0x43,0x6f,0x6e, + 0x74,0x65,0x78,0x74,0x29,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x73,0x65, + 0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x7b,0x20,0x5b,0x4c,0x4f, + 0x43,0x41,0x4c,0x5d,0x20,0x3d,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x73,0x2c,0x20,0x5b, + 0x55,0x50,0x56,0x41,0x4c,0x5d,0x20,0x3d,0x20,0x75,0x70,0x76,0x61,0x6c,0x75,0x65, + 0x73,0x2c,0x20,0x5b,0x45,0x56,0x41,0x4c,0x5d,0x20,0x3d,0x20,0x7b,0x7d,0x20,0x7d, + 0x2c,0x20,0x63,0x6c,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72, + 0x61,0x77,0x73,0x65,0x74,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x47,0x4c, + 0x4f,0x42,0x41,0x4c,0x2c,0x20,0x67,0x65,0x74,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x73, + 0x28,0x66,0x75,0x6e,0x63,0x2c,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x29,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72, + 0x65,0x73,0x75,0x6c,0x74,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x7d, + 0x0a,0x0a,0x2d,0x2d,0x2d,0x20,0x48,0x61,0x6e,0x64,0x6c,0x65,0x20,0x63,0x61,0x63, + 0x68,0x69,0x6e,0x67,0x20,0x6f,0x66,0x20,0x61,0x6c,0x6c,0x20,0x69,0x6e,0x73,0x74, + 0x61,0x6e,0x74,0x69,0x61,0x74,0x65,0x64,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74, + 0x2e,0x0a,0x2d,0x2d,0x20,0x52,0x65,0x74,0x75,0x72,0x6e,0x73,0x20,0x61,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x74,0x61, + 0x6b,0x65,0x73,0x20,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x65,0x74,0x65,0x72,0x73, + 0x3a,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x61,0x6e,0x64,0x20,0x73,0x74,0x61, + 0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x61,0x6e,0x64,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x73,0x20,0x74,0x68,0x65,0x20,0x63,0x6f,0x72,0x72,0x65,0x73,0x70, + 0x6f,0x6e,0x64,0x69,0x6e,0x67,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2e,0x20, + 0x49,0x66,0x20,0x74,0x68,0x69,0x73,0x0a,0x2d,0x2d,0x20,0x63,0x6f,0x6e,0x74,0x65, + 0x78,0x74,0x20,0x68,0x61,0x73,0x20,0x62,0x65,0x65,0x6e,0x20,0x61,0x6c,0x72,0x65, + 0x61,0x64,0x79,0x20,0x71,0x75,0x65,0x72,0x69,0x65,0x64,0x20,0x74,0x68,0x65,0x72, + 0x65,0x20,0x69,0x73,0x20,0x6e,0x6f,0x20,0x6e,0x65,0x77,0x20,0x69,0x6e,0x73,0x74, + 0x61,0x6e,0x74,0x69,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x20,0x41,0x20,0x43,0x6f,0x6e, + 0x74,0x65,0x78,0x74,0x4d,0x61,0x6e,0x61,0x67,0x65,0x72,0x20,0x69,0x73,0x20,0x76, + 0x61,0x6c,0x69,0x64,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x64,0x75,0x72,0x69,0x6e,0x67, + 0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x6c,0x6f,0x6f,0x70,0x0a, + 0x2d,0x2d,0x20,0x6f,0x6e,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x69,0x74,0x20,0x68, + 0x61,0x73,0x20,0x62,0x65,0x65,0x6e,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x74,0x69, + 0x61,0x74,0x65,0x64,0x2e,0x20,0x52,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73, + 0x20,0x74,0x6f,0x20,0x61,0x20,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x4d,0x61,0x6e, + 0x61,0x67,0x65,0x72,0x20,0x6d,0x75,0x73,0x74,0x20,0x62,0x65,0x20,0x6c,0x6f,0x73, + 0x74,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x65,0x6e,0x64,0x20, + 0x6f,0x66,0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x6c,0x6f,0x6f,0x70,0x20,0x28,0x73, + 0x6f,0x0a,0x2d,0x2d,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x73,0x20,0x63,0x61,0x6e, + 0x20,0x62,0x65,0x20,0x63,0x6f,0x6c,0x6c,0x65,0x63,0x74,0x65,0x64,0x29,0x2e,0x0a, + 0x2d,0x2d,0x20,0x49,0x66,0x20,0x61,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20, + 0x63,0x61,0x6e,0x6e,0x6f,0x74,0x20,0x62,0x65,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e, + 0x74,0x69,0x61,0x74,0x65,0x64,0x2c,0x20,0x61,0x6e,0x20,0x33,0x30,0x31,0x20,0x44, + 0x42,0x47,0x50,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x69,0x73,0x20,0x74,0x68,0x72, + 0x6f,0x77,0x6e,0x2e,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e, + 0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x4d,0x61,0x6e,0x61,0x67,0x65,0x72,0x28,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x61,0x63,0x68,0x65, + 0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x74,0x68,0x72,0x65,0x61, + 0x64,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x20,0x74,0x68,0x65,0x20,0x72,0x65,0x61,0x6c,0x20,0x63,0x6f, + 0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x20, + 0x61,0x73,0x20,0x6b,0x65,0x79,0x20,0x28,0x6e,0x6f,0x74,0x20,0x74,0x68,0x65,0x20, + 0x77,0x72,0x61,0x70,0x70,0x65,0x64,0x20,0x69,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65, + 0x20,0x61,0x73,0x20,0x69,0x74,0x73,0x20,0x75,0x6e,0x69,0x63,0x69,0x74,0x79,0x20, + 0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x67,0x75,0x61,0x72,0x61,0x6e,0x74,0x65,0x65, + 0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x6f,0x74, + 0x68,0x65,0x72,0x77,0x69,0x73,0x65,0x2c,0x20,0x74,0x72,0x75,0x65,0x20,0x69,0x73, + 0x20,0x75,0x73,0x65,0x64,0x20,0x74,0x6f,0x20,0x69,0x64,0x65,0x6e,0x74,0x69,0x66, + 0x79,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x74,0x68,0x72,0x65,0x61,0x64, + 0x20,0x28,0x61,0x73,0x20,0x6e,0x69,0x6c,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20, + 0x61,0x20,0x76,0x61,0x6c,0x69,0x64,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x6b,0x65, + 0x79,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x6b,0x65,0x79,0x20,0x3d,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x5b,0x31,0x5d, + 0x20,0x6f,0x72,0x20,0x74,0x72,0x75,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x5f,0x63,0x6f, + 0x6e,0x74,0x65,0x78,0x74,0x73,0x20,0x3d,0x20,0x63,0x61,0x63,0x68,0x65,0x5b,0x6b, + 0x65,0x79,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e, + 0x6f,0x74,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78, + 0x74,0x73,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x5f,0x63,0x6f,0x6e,0x74,0x65, + 0x78,0x74,0x73,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x61,0x63,0x68,0x65,0x5b,0x6b,0x65,0x79,0x5d, + 0x20,0x3d,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78, + 0x74,0x73,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f, + 0x6e,0x74,0x65,0x78,0x74,0x20,0x3d,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x5f,0x63, + 0x6f,0x6e,0x74,0x65,0x78,0x74,0x73,0x5b,0x6c,0x65,0x76,0x65,0x6c,0x5d,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x63,0x6f, + 0x6e,0x74,0x65,0x78,0x74,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x3d, + 0x20,0x4d,0x2e,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x6e,0x65,0x77,0x28,0x74, + 0x68,0x72,0x65,0x61,0x64,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x68,0x72,0x65,0x61,0x64, + 0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x73,0x5b,0x6c,0x65,0x76,0x65,0x6c,0x5d, + 0x20,0x3d,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x4d,0x0a,0x0a,0x65,0x6e,0x64,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x45,0x6e, + 0x64,0x20,0x6f,0x66,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x64,0x65,0x62,0x75,0x67, + 0x67,0x65,0x72,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0a,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d, + 0x2d,0x20,0x20,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x2e,0x64,0x62,0x67,0x70,0x0a,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x2e, + 0x70,0x72,0x65,0x6c,0x6f,0x61,0x64,0x5b,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x2e,0x64,0x62,0x67,0x70,0x22,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x70,0x79, + 0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x32,0x30,0x31,0x31,0x2d,0x32, + 0x30,0x31,0x32,0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65,0x6c, + 0x65,0x73,0x73,0x20,0x61,0x6e,0x64,0x20,0x6f,0x74,0x68,0x65,0x72,0x73,0x2e,0x0a, + 0x2d,0x2d,0x20,0x41,0x6c,0x6c,0x20,0x72,0x69,0x67,0x68,0x74,0x73,0x20,0x72,0x65, + 0x73,0x65,0x72,0x76,0x65,0x64,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6f, + 0x67,0x72,0x61,0x6d,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x20,0x61,0x63,0x63, + 0x6f,0x6d,0x70,0x61,0x6e,0x79,0x69,0x6e,0x67,0x20,0x6d,0x61,0x74,0x65,0x72,0x69, + 0x61,0x6c,0x73,0x0a,0x2d,0x2d,0x20,0x61,0x72,0x65,0x20,0x6d,0x61,0x64,0x65,0x20, + 0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x75,0x6e,0x64,0x65,0x72,0x20, + 0x74,0x68,0x65,0x20,0x74,0x65,0x72,0x6d,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65, + 0x20,0x45,0x63,0x6c,0x69,0x70,0x73,0x65,0x20,0x50,0x75,0x62,0x6c,0x69,0x63,0x20, + 0x4c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x76,0x31,0x2e,0x30,0x0a,0x2d,0x2d,0x20, + 0x77,0x68,0x69,0x63,0x68,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70,0x61,0x6e,0x69,0x65, + 0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x64,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74, + 0x69,0x6f,0x6e,0x2c,0x20,0x61,0x6e,0x64,0x20,0x69,0x73,0x20,0x61,0x76,0x61,0x69, + 0x6c,0x61,0x62,0x6c,0x65,0x20,0x61,0x74,0x0a,0x2d,0x2d,0x20,0x68,0x74,0x74,0x70, + 0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x65,0x63,0x6c,0x69,0x70,0x73,0x65,0x2e,0x6f, + 0x72,0x67,0x2f,0x6c,0x65,0x67,0x61,0x6c,0x2f,0x65,0x70,0x6c,0x2d,0x76,0x31,0x30, + 0x2e,0x68,0x74,0x6d,0x6c,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x74, + 0x72,0x69,0x62,0x75,0x74,0x6f,0x72,0x73,0x3a,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20, + 0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65,0x6c,0x65,0x73,0x73, + 0x20,0x2d,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x20,0x41,0x50,0x49,0x20,0x61, + 0x6e,0x64,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f, + 0x6e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x0a,0x2d,0x2d,0x20,0x44,0x42,0x47,0x70,0x20,0x70,0x72,0x6f,0x74,0x6f,0x63, + 0x6f,0x6c,0x20,0x75,0x74,0x69,0x6c,0x69,0x74,0x79,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x20,0x28,0x70,0x61,0x72,0x73,0x69,0x6e,0x67,0x2c,0x20,0x65,0x72, + 0x72,0x6f,0x72,0x20,0x68,0x61,0x6e,0x64,0x6c,0x69,0x6e,0x67,0x2c,0x20,0x58,0x4d, + 0x4c,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x29,0x2e,0x0a,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x74,0x69,0x6c,0x20,0x3d,0x20,0x72,0x65,0x71, + 0x75,0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75, + 0x74,0x69,0x6c,0x22,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x65,0x72,0x72,0x6f, + 0x72,0x2c,0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x2c, + 0x20,0x74,0x79,0x70,0x65,0x2c,0x20,0x70,0x61,0x69,0x72,0x73,0x2c,0x20,0x69,0x70, + 0x61,0x69,0x72,0x73,0x2c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x2c,0x20, + 0x74,0x63,0x6f,0x6e,0x63,0x61,0x74,0x20,0x3d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x65,0x72,0x72,0x6f,0x72,0x2c,0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61, + 0x62,0x6c,0x65,0x2c,0x20,0x74,0x79,0x70,0x65,0x2c,0x20,0x70,0x61,0x69,0x72,0x73, + 0x2c,0x20,0x69,0x70,0x61,0x69,0x72,0x73,0x2c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x2c,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74, + 0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x4d,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a, + 0x0a,0x2d,0x2d,0x2d,0x20,0x50,0x61,0x72,0x73,0x65,0x73,0x20,0x74,0x68,0x65,0x20, + 0x44,0x42,0x47,0x70,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x61,0x72,0x67, + 0x75,0x6d,0x65,0x6e,0x74,0x73,0x20,0x61,0x6e,0x64,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x73,0x20,0x69,0x74,0x20,0x61,0x73,0x20,0x61,0x20,0x4c,0x75,0x61,0x20,0x74, + 0x61,0x62,0x6c,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x6b,0x65,0x79,0x2f,0x76,0x61, + 0x6c,0x75,0x65,0x20,0x70,0x61,0x69,0x72,0x73,0x2e,0x0a,0x2d,0x2d,0x20,0x46,0x6f, + 0x72,0x20,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x73, + 0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0x20,0x3c,0x63,0x6f,0x64,0x65,0x3e,0x2d,0x69, + 0x20,0x35,0x20,0x2d,0x6a,0x20,0x66,0x6f,0x6f,0x3c,0x2f,0x63,0x6f,0x64,0x65,0x3e, + 0x20,0x77,0x69,0x6c,0x6c,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x69,0x6e,0x20, + 0x3c,0x63,0x6f,0x64,0x65,0x3e,0x7b,0x69,0x3d,0x35,0x2c,0x20,0x6a,0x3d,0x66,0x6f, + 0x6f,0x7d,0x3c,0x2f,0x63,0x6f,0x64,0x65,0x3e,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61, + 0x72,0x61,0x6d,0x20,0x63,0x6d,0x64,0x5f,0x61,0x72,0x67,0x73,0x20,0x28,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x29,0x20,0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0x20,0x6f, + 0x66,0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x0a,0x2d,0x2d,0x20,0x40, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x64,0x65,0x73, + 0x63,0x72,0x69,0x62,0x65,0x64,0x20,0x61,0x62,0x6f,0x76,0x65,0x0a,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x61,0x72,0x67,0x5f,0x70,0x61,0x72,0x73, + 0x65,0x28,0x63,0x6d,0x64,0x5f,0x61,0x72,0x67,0x73,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x61,0x72,0x67,0x73,0x20,0x3d,0x20,0x7b,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x61,0x72,0x67,0x2c,0x20,0x76,0x61,0x6c, + 0x20,0x69,0x6e,0x20,0x63,0x6d,0x64,0x5f,0x61,0x72,0x67,0x73,0x3a,0x67,0x6d,0x61, + 0x74,0x63,0x68,0x28,0x22,0x25,0x2d,0x28,0x25,0x77,0x29,0x20,0x28,0x25,0x53,0x2b, + 0x29,0x22,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61, + 0x72,0x67,0x73,0x5b,0x61,0x72,0x67,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x61,0x72,0x67,0x73,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x2d,0x20, + 0x50,0x61,0x72,0x73,0x65,0x73,0x20,0x61,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, + 0x20,0x6c,0x69,0x6e,0x65,0x0a,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x65,0x20,0x6e,0x61,0x6d,0x65,0x20,0x28, + 0x73,0x74,0x72,0x69,0x6e,0x67,0x29,0x0a,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x72, + 0x75,0x6e,0x20,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x20,0x28,0x74,0x61, + 0x62,0x6c,0x65,0x29,0x0a,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x64,0x61,0x74,0x61,0x20,0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x2c,0x20,0x6f,0x70, + 0x74,0x69,0x6f,0x6e,0x61,0x6c,0x29,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x20,0x4d,0x2e,0x63,0x6d,0x64,0x5f,0x70,0x61,0x72,0x73,0x65,0x28,0x63,0x6d,0x64, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6d,0x64,0x5f, + 0x6e,0x61,0x6d,0x65,0x2c,0x20,0x61,0x72,0x67,0x73,0x2c,0x20,0x64,0x61,0x74,0x61, + 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x63,0x6d,0x64,0x3a,0x66,0x69,0x6e,0x64, + 0x28,0x22,0x2d,0x2d,0x22,0x2c,0x20,0x31,0x2c,0x20,0x74,0x72,0x75,0x65,0x29,0x20, + 0x74,0x68,0x65,0x6e,0x20,0x2d,0x2d,0x20,0x74,0x68,0x65,0x72,0x65,0x20,0x69,0x73, + 0x20,0x61,0x20,0x64,0x61,0x74,0x61,0x20,0x70,0x61,0x72,0x74,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x63,0x6d,0x64,0x5f,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x61, + 0x72,0x67,0x73,0x2c,0x20,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x63,0x6d,0x64,0x3a, + 0x6d,0x61,0x74,0x63,0x68,0x28,0x22,0x5e,0x28,0x25,0x53,0x2b,0x29,0x25,0x73,0x2b, + 0x28,0x2e,0x2a,0x29,0x25,0x73,0x2b,0x25,0x2d,0x25,0x2d,0x25,0x73,0x2a,0x28,0x2e, + 0x2a,0x29,0x24,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x61, + 0x74,0x61,0x20,0x3d,0x20,0x75,0x74,0x69,0x6c,0x2e,0x75,0x6e,0x62,0x36,0x34,0x28, + 0x64,0x61,0x74,0x61,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6d,0x64,0x5f,0x6e,0x61,0x6d,0x65,0x2c, + 0x20,0x61,0x72,0x67,0x73,0x20,0x3d,0x20,0x63,0x6d,0x64,0x3a,0x6d,0x61,0x74,0x63, + 0x68,0x28,0x22,0x5e,0x28,0x25,0x53,0x2b,0x29,0x25,0x73,0x2b,0x28,0x2e,0x2a,0x29, + 0x24,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x6d,0x64,0x5f,0x6e,0x61,0x6d,0x65,0x2c, + 0x20,0x4d,0x2e,0x61,0x72,0x67,0x5f,0x70,0x61,0x72,0x73,0x65,0x28,0x61,0x72,0x67, + 0x73,0x29,0x2c,0x20,0x64,0x61,0x74,0x61,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d, + 0x2d,0x20,0x52,0x65,0x74,0x75,0x72,0x6e,0x73,0x20,0x74,0x68,0x65,0x20,0x70,0x61, + 0x63,0x6b,0x65,0x74,0x20,0x72,0x65,0x61,0x64,0x20,0x66,0x72,0x6f,0x6d,0x20,0x73, + 0x6f,0x63,0x6b,0x65,0x74,0x2c,0x20,0x6f,0x72,0x20,0x6e,0x69,0x6c,0x20,0x66,0x6f, + 0x6c,0x6c,0x6f,0x77,0x65,0x64,0x20,0x62,0x79,0x20,0x61,0x6e,0x20,0x65,0x72,0x72, + 0x6f,0x72,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x6f,0x6e,0x20,0x65,0x72, + 0x72,0x6f,0x72,0x73,0x2e,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d, + 0x2e,0x72,0x65,0x61,0x64,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x28,0x73,0x6b,0x74, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x69,0x7a,0x65, + 0x20,0x3d,0x20,0x7b,0x7d,0x0a,0x20,0x20,0x20,0x20,0x77,0x68,0x69,0x6c,0x65,0x20, + 0x74,0x72,0x75,0x65,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x79,0x74,0x65,0x2c,0x20,0x65,0x72,0x72,0x20, + 0x3d,0x20,0x73,0x6b,0x74,0x3a,0x72,0x65,0x63,0x65,0x69,0x76,0x65,0x28,0x31,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20, + 0x62,0x79,0x74,0x65,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x6e,0x69,0x6c,0x2c,0x20,0x65,0x72,0x72,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x62,0x79,0x74,0x65,0x20,0x3d,0x3d, + 0x20,0x22,0x5c,0x30,0x30,0x30,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x62,0x72,0x65, + 0x61,0x6b,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73, + 0x69,0x7a,0x65,0x5b,0x23,0x73,0x69,0x7a,0x65,0x2b,0x31,0x5d,0x20,0x3d,0x20,0x62, + 0x79,0x74,0x65,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x73, + 0x69,0x7a,0x65,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x4d,0x2e,0x44,0x42,0x47,0x50, + 0x5f,0x45,0x52,0x52,0x5f,0x4d,0x45,0x54,0x41,0x54,0x41,0x42,0x4c,0x45,0x20,0x3d, + 0x20,0x7b,0x7d,0x20,0x2d,0x2d,0x20,0x75,0x6e,0x69,0x71,0x75,0x65,0x20,0x6f,0x62, + 0x6a,0x65,0x63,0x74,0x20,0x75,0x73,0x65,0x64,0x20,0x74,0x6f,0x20,0x69,0x64,0x65, + 0x6e,0x74,0x69,0x66,0x79,0x20,0x44,0x42,0x47,0x70,0x20,0x65,0x72,0x72,0x6f,0x72, + 0x73,0x0a,0x0a,0x2d,0x2d,0x2d,0x20,0x54,0x68,0x72,0x6f,0x77,0x73,0x20,0x61,0x20, + 0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x20,0x44,0x42,0x47,0x70,0x20,0x65,0x72,0x72, + 0x6f,0x72,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20, + 0x69,0x6e,0x20,0x61,0x20,0x66,0x69,0x6e,0x65,0x20,0x74,0x75,0x6e,0x65,0x64,0x20, + 0x65,0x72,0x72,0x6f,0x72,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x74,0x6f, + 0x20,0x74,0x68,0x65,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x2e,0x0a,0x2d,0x2d,0x20, + 0x49,0x74,0x20,0x69,0x73,0x20,0x69,0x6e,0x74,0x65,0x6e,0x64,0x65,0x64,0x20,0x74, + 0x6f,0x20,0x62,0x65,0x20,0x63,0x61,0x6c,0x6c,0x65,0x64,0x20,0x69,0x6e,0x74,0x6f, + 0x20,0x61,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x74,0x6f,0x20,0x6d,0x61, + 0x6b,0x65,0x20,0x61,0x20,0x75,0x73,0x65,0x66,0x75,0x6c,0x20,0x65,0x72,0x72,0x6f, + 0x72,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2c,0x20,0x61,0x20,0x73,0x74,0x61, + 0x6e,0x64,0x61,0x72,0x64,0x20,0x4c,0x75,0x61,0x20,0x65,0x72,0x72,0x6f,0x72,0x0a, + 0x2d,0x2d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x69,0x6e,0x20,0x61,0x20,0x63, + 0x6f,0x64,0x65,0x20,0x39,0x39,0x38,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x28,0x69, + 0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, + 0x20,0x65,0x72,0x72,0x6f,0x72,0x29,0x2e,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72, + 0x61,0x6d,0x20,0x63,0x6f,0x64,0x65,0x20,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x61, + 0x6c,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x63,0x6f,0x64,0x65,0x0a,0x2d,0x2d,0x20, + 0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x6d, + 0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x28,0x6f, + 0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x29,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72, + 0x61,0x6d,0x20,0x61,0x74,0x74,0x72,0x20,0x65,0x78,0x74,0x72,0x61,0x20,0x61,0x74, + 0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x73,0x20,0x74,0x6f,0x20,0x61,0x64,0x64,0x20, + 0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20, + 0x74,0x61,0x67,0x20,0x28,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x29,0x0a,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x65,0x72,0x72,0x6f,0x72,0x28, + 0x63,0x6f,0x64,0x65,0x2c,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2c,0x20,0x61, + 0x74,0x74,0x72,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x72,0x72,0x6f,0x72,0x28,0x73, + 0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x7b,0x20,0x63,0x6f, + 0x64,0x65,0x20,0x3d,0x20,0x63,0x6f,0x64,0x65,0x2c,0x20,0x6d,0x65,0x73,0x73,0x61, + 0x67,0x65,0x20,0x3d,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2c,0x20,0x61,0x74, + 0x74,0x72,0x20,0x3d,0x20,0x61,0x74,0x74,0x72,0x20,0x6f,0x72,0x20,0x7b,0x7d,0x20, + 0x7d,0x2c,0x20,0x4d,0x2e,0x44,0x42,0x47,0x50,0x5f,0x45,0x52,0x52,0x5f,0x4d,0x45, + 0x54,0x41,0x54,0x41,0x42,0x4c,0x45,0x29,0x2c,0x20,0x32,0x29,0x0a,0x65,0x6e,0x64, + 0x0a,0x0a,0x2d,0x2d,0x2d,0x20,0x4c,0x69,0x6b,0x65,0x20,0x63,0x6f,0x72,0x65,0x20, + 0x61,0x73,0x73,0x65,0x72,0x74,0x20,0x62,0x75,0x74,0x20,0x74,0x68,0x72,0x6f,0x77, + 0x73,0x20,0x61,0x20,0x44,0x42,0x47,0x70,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x69, + 0x66,0x20,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x6e, + 0x6f,0x74,0x20,0x6d,0x65,0x74,0x2e,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61, + 0x6d,0x20,0x63,0x6f,0x64,0x65,0x20,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x61,0x6c, + 0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x63,0x6f,0x64,0x65,0x20,0x74,0x68,0x72,0x6f, + 0x77,0x6e,0x20,0x69,0x66,0x20,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20, + 0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x6d,0x65,0x74,0x2e,0x0a,0x2d,0x2d,0x20,0x40, + 0x70,0x61,0x72,0x61,0x6d,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x63,0x6f, + 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x74,0x65,0x73,0x74,0x0a, + 0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x2e,0x2e,0x2e,0x20,0x77,0x69, + 0x6c,0x6c,0x20,0x62,0x65,0x20,0x75,0x73,0x65,0x64,0x20,0x61,0x73,0x20,0x65,0x72, + 0x72,0x6f,0x72,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x20,0x69,0x66,0x20,0x74, + 0x65,0x73,0x74,0x20,0x66,0x61,0x69,0x6c,0x73,0x2e,0x0a,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x61,0x73,0x73,0x65,0x72,0x74,0x28,0x63,0x6f,0x64, + 0x65,0x2c,0x20,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x2c,0x20,0x2e,0x2e,0x2e,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x73,0x75,0x63,0x63, + 0x65,0x73,0x73,0x20,0x74,0x68,0x65,0x6e,0x20,0x4d,0x2e,0x65,0x72,0x72,0x6f,0x72, + 0x28,0x63,0x6f,0x64,0x65,0x2c,0x20,0x28,0x2e,0x2e,0x2e,0x29,0x29,0x20,0x65,0x6e, + 0x64,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x75,0x63, + 0x63,0x65,0x73,0x73,0x2c,0x20,0x2e,0x2e,0x2e,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d, + 0x2d,0x20,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x4f,0x75,0x74,0x67,0x6f,0x69,0x6e,0x67,0x20, + 0x64,0x61,0x74,0x61,0x0a,0x2d,0x2d,0x20,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x78,0x6d,0x6c,0x61,0x74,0x74,0x72,0x5f,0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x63, + 0x68,0x61,0x72,0x73,0x20,0x3d,0x20,0x7b,0x20,0x5b,0x27,0x22,0x27,0x5d,0x20,0x3d, + 0x20,0x22,0x26,0x71,0x75,0x6f,0x74,0x3b,0x22,0x2c,0x20,0x5b,0x22,0x3c,0x22,0x5d, + 0x20,0x3d,0x20,0x22,0x26,0x6c,0x74,0x3b,0x22,0x2c,0x20,0x5b,0x22,0x26,0x22,0x5d, + 0x20,0x3d,0x20,0x22,0x26,0x61,0x6d,0x70,0x3b,0x22,0x20,0x7d,0x0a,0x2d,0x2d,0x2d, + 0x20,0x56,0x65,0x72,0x79,0x20,0x62,0x61,0x73,0x69,0x63,0x20,0x58,0x4d,0x4c,0x20, + 0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x6f,0x72,0x0a,0x2d,0x2d,0x20,0x47,0x65,0x6e, + 0x65,0x72,0x61,0x74,0x65,0x73,0x20,0x61,0x20,0x58,0x4d,0x4c,0x20,0x73,0x74,0x72, + 0x69,0x6e,0x67,0x20,0x66,0x72,0x6f,0x6d,0x20,0x61,0x20,0x4c,0x75,0x61,0x20,0x4f, + 0x62,0x6a,0x65,0x63,0x74,0x20,0x4d,0x6f,0x64,0x65,0x6c,0x20,0x28,0x4c,0x4f,0x4d, + 0x29,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x0a,0x2d,0x2d,0x20,0x53,0x65,0x65,0x20, + 0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x6d,0x61,0x74,0x74,0x68,0x65,0x77,0x77,0x69, + 0x6c,0x64,0x2e,0x63,0x6f,0x2e,0x75,0x6b,0x2f,0x70,0x72,0x6f,0x6a,0x65,0x63,0x74, + 0x73,0x2f,0x6c,0x75,0x61,0x65,0x78,0x70,0x61,0x74,0x2f,0x6c,0x6f,0x6d,0x2e,0x68, + 0x74,0x6d,0x6c,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x6c, + 0x6f,0x6d,0x32,0x73,0x74,0x72,0x28,0x78,0x6d,0x6c,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x69,0x65,0x63,0x65,0x73,0x20,0x3d,0x20,0x7b, + 0x20,0x7d,0x20,0x2d,0x2d,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x62,0x75,0x66, + 0x66,0x65,0x72,0x0a,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65, + 0x28,0x6e,0x6f,0x64,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70, + 0x69,0x65,0x63,0x65,0x73,0x5b,0x23,0x70,0x69,0x65,0x63,0x65,0x73,0x20,0x2b,0x20, + 0x31,0x5d,0x20,0x3d,0x20,0x22,0x3c,0x22,0x2e,0x2e,0x6e,0x6f,0x64,0x65,0x2e,0x74, + 0x61,0x67,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x69,0x65,0x63,0x65, + 0x73,0x5b,0x23,0x70,0x69,0x65,0x63,0x65,0x73,0x20,0x2b,0x20,0x31,0x5d,0x20,0x3d, + 0x20,0x22,0x20,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x20,0x6f,0x72,0x64,0x65,0x72,0x69, + 0x6e,0x67,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x68,0x6f,0x6e,0x6f,0x72,0x65, + 0x64,0x20,0x68,0x65,0x72,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, + 0x6f,0x72,0x20,0x61,0x74,0x74,0x72,0x2c,0x20,0x76,0x61,0x6c,0x20,0x69,0x6e,0x20, + 0x70,0x61,0x69,0x72,0x73,0x28,0x6e,0x6f,0x64,0x65,0x2e,0x61,0x74,0x74,0x72,0x20, + 0x6f,0x72,0x20,0x7b,0x7d,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x74,0x79,0x70,0x65,0x28,0x61,0x74, + 0x74,0x72,0x29,0x20,0x3d,0x3d,0x20,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x20, + 0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x70,0x69,0x65,0x63,0x65,0x73,0x5b,0x23,0x70,0x69,0x65, + 0x63,0x65,0x73,0x20,0x2b,0x20,0x31,0x5d,0x20,0x3d,0x20,0x61,0x74,0x74,0x72,0x20, + 0x2e,0x2e,0x20,0x27,0x3d,0x22,0x27,0x20,0x2e,0x2e,0x20,0x74,0x6f,0x73,0x74,0x72, + 0x69,0x6e,0x67,0x28,0x76,0x61,0x6c,0x29,0x3a,0x67,0x73,0x75,0x62,0x28,0x27,0x5b, + 0x22,0x26,0x3c,0x5d,0x27,0x2c,0x20,0x78,0x6d,0x6c,0x61,0x74,0x74,0x72,0x5f,0x73, + 0x70,0x65,0x63,0x69,0x61,0x6c,0x63,0x68,0x61,0x72,0x73,0x29,0x20,0x2e,0x2e,0x20, + 0x27,0x22,0x27,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x70,0x69,0x65,0x63,0x65,0x73,0x5b,0x23,0x70,0x69,0x65,0x63, + 0x65,0x73,0x20,0x2b,0x20,0x31,0x5d,0x20,0x3d,0x20,0x22,0x20,0x22,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x70,0x69,0x65,0x63,0x65,0x73,0x5b,0x23,0x70,0x69,0x65,0x63,0x65,0x73, + 0x5d,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x20,0x2d,0x2d,0x20,0x72,0x65,0x6d,0x6f,0x76, + 0x65,0x20,0x74,0x68,0x65,0x20,0x6c,0x61,0x73,0x74,0x20,0x73,0x65,0x70,0x61,0x72, + 0x61,0x74,0x6f,0x72,0x20,0x28,0x75,0x73,0x65,0x6c,0x65,0x73,0x73,0x29,0x0a,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x64,0x65,0x5b, + 0x31,0x5d,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x70,0x69,0x65,0x63,0x65,0x73,0x5b,0x23,0x70,0x69,0x65,0x63, + 0x65,0x73,0x20,0x2b,0x20,0x31,0x5d,0x20,0x3d,0x20,0x22,0x3e,0x22,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x5f,0x2c, + 0x20,0x63,0x68,0x69,0x6c,0x64,0x20,0x69,0x6e,0x20,0x69,0x70,0x61,0x69,0x72,0x73, + 0x28,0x6e,0x6f,0x64,0x65,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x74,0x79,0x70, + 0x65,0x28,0x63,0x68,0x69,0x6c,0x64,0x29,0x20,0x3d,0x3d,0x20,0x22,0x74,0x61,0x62, + 0x6c,0x65,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74, + 0x65,0x28,0x63,0x68,0x69,0x6c,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x20,0x70,0x69, + 0x65,0x63,0x65,0x73,0x5b,0x23,0x70,0x69,0x65,0x63,0x65,0x73,0x20,0x2b,0x20,0x31, + 0x5d,0x20,0x3d,0x20,0x22,0x3c,0x21,0x5b,0x43,0x44,0x41,0x54,0x41,0x5b,0x22,0x20, + 0x2e,0x2e,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x63,0x68,0x69,0x6c, + 0x64,0x29,0x20,0x2e,0x2e,0x20,0x22,0x5d,0x5d,0x3e,0x22,0x20,0x65,0x6e,0x64,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x69,0x65,0x63, + 0x65,0x73,0x5b,0x23,0x70,0x69,0x65,0x63,0x65,0x73,0x20,0x2b,0x20,0x31,0x5d,0x20, + 0x3d,0x20,0x22,0x3c,0x2f,0x22,0x20,0x2e,0x2e,0x20,0x6e,0x6f,0x64,0x65,0x2e,0x74, + 0x61,0x67,0x20,0x2e,0x2e,0x20,0x22,0x3e,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x70,0x69,0x65,0x63,0x65,0x73,0x5b,0x23,0x70,0x69,0x65,0x63,0x65, + 0x73,0x20,0x2b,0x20,0x31,0x5d,0x20,0x3d,0x20,0x22,0x2f,0x3e,0x22,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e, + 0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x28, + 0x78,0x6d,0x6c,0x29,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x74,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x70,0x69,0x65,0x63,0x65,0x73,0x29,0x0a, + 0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e, + 0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x6b,0x74,0x2c,0x20,0x72,0x65, + 0x73,0x70,0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x72, + 0x65,0x73,0x70,0x2e,0x61,0x74,0x74,0x72,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65, + 0x73,0x70,0x2e,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x7d,0x20,0x65,0x6e,0x64, + 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x70,0x2e,0x61,0x74,0x74,0x72,0x2e,0x78, + 0x6d,0x6c,0x6e,0x73,0x20,0x3d,0x20,0x22,0x75,0x72,0x6e,0x3a,0x64,0x65,0x62,0x75, + 0x67,0x67,0x65,0x72,0x5f,0x70,0x72,0x6f,0x74,0x6f,0x63,0x6f,0x6c,0x5f,0x76,0x31, + 0x22,0x0a,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x64,0x61,0x74, + 0x61,0x20,0x3d,0x20,0x27,0x3c,0x3f,0x78,0x6d,0x6c,0x20,0x76,0x65,0x72,0x73,0x69, + 0x6f,0x6e,0x3d,0x22,0x31,0x2e,0x30,0x22,0x20,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e, + 0x67,0x3d,0x22,0x55,0x54,0x46,0x2d,0x38,0x22,0x20,0x3f,0x3e,0x5c,0x6e,0x27,0x2e, + 0x2e,0x4d,0x2e,0x6c,0x6f,0x6d,0x32,0x73,0x74,0x72,0x28,0x72,0x65,0x73,0x70,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x75,0x74,0x69,0x6c,0x2e,0x6c,0x6f,0x67,0x28,0x22,0x44, + 0x45,0x42,0x55,0x47,0x22,0x2c,0x20,0x22,0x53,0x65,0x6e,0x64,0x20,0x22,0x20,0x2e, + 0x2e,0x20,0x64,0x61,0x74,0x61,0x29,0x0a,0x20,0x20,0x20,0x20,0x73,0x6b,0x74,0x3a, + 0x73,0x65,0x6e,0x64,0x28,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x23,0x64, + 0x61,0x74,0x61,0x29,0x2e,0x2e,0x22,0x5c,0x30,0x30,0x30,0x22,0x2e,0x2e,0x64,0x61, + 0x74,0x61,0x2e,0x2e,0x22,0x5c,0x30,0x30,0x30,0x22,0x29,0x0a,0x65,0x6e,0x64,0x0a, + 0x0a,0x2d,0x2d,0x2d,0x20,0x52,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x6e,0x20,0x58, + 0x4d,0x4c,0x20,0x74,0x61,0x67,0x20,0x64,0x65,0x73,0x63,0x72,0x69,0x62,0x69,0x6e, + 0x67,0x20,0x61,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x65,0x72,0x72, + 0x6f,0x72,0x2c,0x20,0x77,0x69,0x74,0x68,0x20,0x61,0x6e,0x20,0x6f,0x70,0x74,0x69, + 0x6f,0x6e,0x61,0x6c,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x0a,0x2d,0x2d,0x20, + 0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x63,0x6f,0x64,0x65,0x20,0x28,0x6e,0x75,0x6d, + 0x62,0x65,0x72,0x29,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x63,0x6f,0x64,0x65,0x20, + 0x28,0x73,0x65,0x65,0x20,0x44,0x42,0x47,0x70,0x20,0x73,0x70,0x65,0x63,0x69,0x66, + 0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x29,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72, + 0x61,0x6d,0x20,0x6d,0x73,0x67,0x20,0x20,0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x2c, + 0x20,0x6f,0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x29,0x20,0x74,0x65,0x78,0x74,0x75, + 0x61,0x6c,0x20,0x64,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x20,0x6f, + 0x66,0x20,0x65,0x72,0x72,0x6f,0x72,0x0a,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x74,0x61,0x62,0x6c,0x65,0x2c,0x20,0x73,0x75,0x69,0x74,0x61,0x62, + 0x6c,0x65,0x20,0x74,0x6f,0x20,0x62,0x65,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74, + 0x65,0x64,0x20,0x69,0x6e,0x74,0x6f,0x20,0x58,0x4d,0x4c,0x0a,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x6d,0x61,0x6b,0x65,0x5f,0x65,0x72,0x72,0x6f, + 0x72,0x28,0x63,0x6f,0x64,0x65,0x2c,0x20,0x6d,0x73,0x67,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x65,0x6c,0x65,0x6d,0x20,0x3d,0x20,0x7b,0x20, + 0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x65,0x72,0x72,0x6f,0x72,0x22,0x2c,0x20,0x61, + 0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x63,0x6f,0x64,0x65,0x20,0x3d,0x20,0x63, + 0x6f,0x64,0x65,0x20,0x7d,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6d, + 0x73,0x67,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x65,0x6d,0x5b,0x31,0x5d,0x20,0x3d,0x20,0x7b,0x20,0x74,0x6f,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x28,0x6d,0x73,0x67,0x29,0x2c,0x20,0x74,0x61,0x67,0x20,0x3d, + 0x20,0x22,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x22,0x20,0x7d,0x0a,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x65,0x6c,0x65,0x6d,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x4d,0x0a,0x0a,0x65,0x6e,0x64,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x45,0x6e,0x64,0x20, + 0x6f,0x66,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x2e,0x64,0x62,0x67,0x70,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x20,0x4d,0x6f, + 0x64,0x75,0x6c,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e, + 0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x0a,0x70,0x61,0x63,0x6b, + 0x61,0x67,0x65,0x2e,0x70,0x72,0x65,0x6c,0x6f,0x61,0x64,0x5b,0x22,0x64,0x65,0x62, + 0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74, + 0x69,0x6f,0x6e,0x22,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x2d,0x2d,0x20,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67, + 0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x32,0x30,0x31,0x31,0x2d,0x32,0x30,0x31,0x32, + 0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65,0x6c,0x65,0x73,0x73, + 0x20,0x61,0x6e,0x64,0x20,0x6f,0x74,0x68,0x65,0x72,0x73,0x2e,0x0a,0x2d,0x2d,0x20, + 0x41,0x6c,0x6c,0x20,0x72,0x69,0x67,0x68,0x74,0x73,0x20,0x72,0x65,0x73,0x65,0x72, + 0x76,0x65,0x64,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6f,0x67,0x72,0x61, + 0x6d,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70, + 0x61,0x6e,0x79,0x69,0x6e,0x67,0x20,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x73, + 0x0a,0x2d,0x2d,0x20,0x61,0x72,0x65,0x20,0x6d,0x61,0x64,0x65,0x20,0x61,0x76,0x61, + 0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65, + 0x20,0x74,0x65,0x72,0x6d,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x45,0x63, + 0x6c,0x69,0x70,0x73,0x65,0x20,0x50,0x75,0x62,0x6c,0x69,0x63,0x20,0x4c,0x69,0x63, + 0x65,0x6e,0x73,0x65,0x20,0x76,0x31,0x2e,0x30,0x0a,0x2d,0x2d,0x20,0x77,0x68,0x69, + 0x63,0x68,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70,0x61,0x6e,0x69,0x65,0x73,0x20,0x74, + 0x68,0x69,0x73,0x20,0x64,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e, + 0x2c,0x20,0x61,0x6e,0x64,0x20,0x69,0x73,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62, + 0x6c,0x65,0x20,0x61,0x74,0x0a,0x2d,0x2d,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f, + 0x77,0x77,0x77,0x2e,0x65,0x63,0x6c,0x69,0x70,0x73,0x65,0x2e,0x6f,0x72,0x67,0x2f, + 0x6c,0x65,0x67,0x61,0x6c,0x2f,0x65,0x70,0x6c,0x2d,0x76,0x31,0x30,0x2e,0x68,0x74, + 0x6d,0x6c,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x74,0x72,0x69,0x62, + 0x75,0x74,0x6f,0x72,0x73,0x3a,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x4a,0x75, + 0x6c,0x69,0x65,0x6e,0x20,0x44,0x65,0x73,0x67,0x61,0x74,0x73,0x20,0x2d,0x20,0x69, + 0x6e,0x69,0x74,0x69,0x61,0x6c,0x20,0x41,0x50,0x49,0x20,0x61,0x6e,0x64,0x20,0x69, + 0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d, + 0x20,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d, + 0x20,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x69,0x65,0x73,0x20,0x67,0x65,0x6e,0x65, + 0x72,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x20,0x47,0x65,0x6e,0x65,0x72,0x61,0x74,0x65, + 0x20,0x61,0x20,0x4c,0x4f,0x4d,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x77,0x69,0x74, + 0x68,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6e,0x74,0x72, + 0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x0a,0x2d,0x2d,0x20,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72, + 0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69, + 0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x61, + 0x74,0x66,0x6f,0x72,0x6d,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x74,0x69, + 0x6c,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62, + 0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x22,0x0a,0x0a,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x2c,0x20,0x74,0x79,0x70, + 0x65,0x2c,0x20,0x61,0x73,0x73,0x65,0x72,0x74,0x2c,0x20,0x6e,0x65,0x78,0x74,0x2c, + 0x20,0x72,0x61,0x77,0x67,0x65,0x74,0x2c,0x20,0x67,0x65,0x74,0x6d,0x65,0x74,0x61, + 0x74,0x61,0x62,0x6c,0x65,0x2c,0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61, + 0x62,0x6c,0x65,0x2c,0x20,0x67,0x65,0x74,0x66,0x65,0x6e,0x76,0x2c,0x20,0x73,0x65, + 0x6c,0x65,0x63,0x74,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f, + 0x79,0x69,0x65,0x6c,0x64,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63, + 0x6f,0x63,0x72,0x65,0x61,0x74,0x65,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x63,0x6f,0x73,0x74,0x61,0x74,0x75,0x73,0x2c,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x63,0x6f,0x72,0x65,0x73,0x75,0x6d,0x65,0x2c,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x73,0x66,0x6f,0x72,0x6d,0x61,0x74,0x2c,0x20,0x20,0x20,0x20,0x20, + 0x20,0x74,0x63,0x6f,0x6e,0x63,0x61,0x74,0x20,0x3d,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x2c,0x20,0x74,0x79,0x70,0x65,0x2c, + 0x20,0x61,0x73,0x73,0x65,0x72,0x74,0x2c,0x20,0x6e,0x65,0x78,0x74,0x2c,0x20,0x72, + 0x61,0x77,0x67,0x65,0x74,0x2c,0x20,0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61, + 0x62,0x6c,0x65,0x2c,0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c, + 0x65,0x2c,0x20,0x67,0x65,0x74,0x66,0x65,0x6e,0x76,0x2c,0x20,0x73,0x65,0x6c,0x65, + 0x63,0x74,0x2c,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x79,0x69, + 0x65,0x6c,0x64,0x2c,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x63, + 0x72,0x65,0x61,0x74,0x65,0x2c,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, + 0x2e,0x73,0x74,0x61,0x74,0x75,0x73,0x2c,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69, + 0x6e,0x65,0x2e,0x72,0x65,0x73,0x75,0x6d,0x65,0x2c,0x20,0x73,0x74,0x72,0x69,0x6e, + 0x67,0x2e,0x66,0x6f,0x72,0x6d,0x61,0x74,0x2c,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e, + 0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x4d,0x55, + 0x4c,0x54,0x49,0x56,0x41,0x4c,0x5f,0x4d,0x54,0x20,0x3d,0x20,0x7b,0x20,0x5f,0x5f, + 0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x22,0x20, + 0x65,0x6e,0x64,0x20,0x7d,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x72,0x6f,0x62, + 0x65,0x73,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x0a,0x2d,0x2d,0x20,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x20,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x50,0x75, + 0x62,0x6c,0x69,0x63,0x20,0x41,0x50,0x49,0x20,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x20,0x2d,0x2d,0x0a,0x0a,0x2d,0x2d, + 0x2d,0x0a,0x2d,0x2d,0x20,0x49,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69, + 0x6f,0x6e,0x20,0x6c,0x6f,0x67,0x69,0x63,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x6d, + 0x6f,0x64,0x75,0x6c,0x65,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x73, + 0x20,0x4c,0x75,0x61,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x73,0x20,0x69,0x6e,0x74, + 0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x6e,0x64,0x0a,0x2d, + 0x2d,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x73,0x20,0x61,0x20,0x5b,0x44, + 0x42,0x47,0x50,0x5d,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x78,0x64,0x65,0x62, + 0x75,0x67,0x2e,0x6f,0x72,0x67,0x2f,0x64,0x6f,0x63,0x73,0x2d,0x64,0x62,0x67,0x70, + 0x2e,0x70,0x68,0x70,0x29,0x20,0x63,0x6f,0x6d,0x70,0x61,0x74,0x69,0x62,0x6c,0x65, + 0x0a,0x2d,0x2d,0x20,0x5b,0x4c,0x4f,0x4d,0x5d,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f, + 0x2f,0x6d,0x61,0x74,0x74,0x68,0x65,0x77,0x77,0x69,0x6c,0x64,0x2e,0x63,0x6f,0x2e, + 0x75,0x6b,0x2f,0x70,0x72,0x6f,0x6a,0x65,0x63,0x74,0x73,0x2f,0x6c,0x75,0x61,0x65, + 0x78,0x70,0x61,0x74,0x2f,0x6c,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x29,0x20,0x64, + 0x61,0x74,0x61,0x20,0x73,0x63,0x72,0x75,0x63,0x74,0x75,0x72,0x65,0x2e,0x0a,0x2d, + 0x2d,0x20,0x40,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x2e,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e, + 0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x4d,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x0a, + 0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x52,0x65,0x70,0x72,0x65,0x73,0x65,0x6e,0x74, + 0x20,0x74,0x68,0x65,0x20,0x61,0x63,0x74,0x75,0x61,0x6c,0x20,0x64,0x61,0x74,0x61, + 0x20,0x74,0x6f,0x20,0x73,0x65,0x6e,0x64,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20, + 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x0a,0x2d,0x2d,0x20,0x46,0x75,0x6c, + 0x6c,0x20,0x58,0x4d,0x4c,0x20,0x73,0x70,0x65,0x63,0x69,0x66,0x69,0x63,0x61,0x74, + 0x69,0x6f,0x6e,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64, + 0x20,0x69,0x6e,0x20,0x5b,0x44,0x42,0x47,0x50,0x20,0x73,0x70,0x65,0x63,0x69,0x66, + 0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x5d,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f, + 0x78,0x64,0x65,0x62,0x75,0x67,0x2e,0x6f,0x72,0x67,0x2f,0x64,0x6f,0x63,0x73,0x2d, + 0x64,0x62,0x67,0x70,0x2e,0x70,0x68,0x70,0x23,0x70,0x72,0x6f,0x70,0x65,0x72,0x74, + 0x69,0x65,0x73,0x2d,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x73,0x2d,0x61,0x6e, + 0x64,0x2d,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x2e,0x0a,0x2d,0x2d,0x20,0x4d,0x6f, + 0x64,0x69,0x66,0x79,0x69,0x6e,0x67,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x69, + 0x65,0x73,0x20,0x61,0x66,0x74,0x65,0x72,0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x67, + 0x65,0x6e,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x70,0x6f,0x73, + 0x73,0x69,0x62,0x6c,0x65,0x20,0x28,0x61,0x73,0x20,0x61,0x63,0x74,0x75,0x61,0x6c, + 0x20,0x64,0x61,0x74,0x61,0x20,0x73,0x65,0x72,0x69,0x61,0x6c,0x69,0x7a,0x61,0x74, + 0x69,0x6f,0x6e,0x2f,0x73,0x65,0x6e,0x64,0x69,0x6e,0x67,0x20,0x69,0x73,0x20,0x64, + 0x65,0x6c,0x61,0x79,0x65,0x64,0x29,0x0a,0x2d,0x2d,0x20,0x62,0x75,0x74,0x20,0x73, + 0x68,0x6f,0x75,0x6c,0x64,0x20,0x62,0x65,0x20,0x75,0x73,0x65,0x64,0x20,0x77,0x69, + 0x74,0x68,0x20,0x63,0x61,0x72,0x65,0x2e,0x20,0x54,0x68,0x65,0x20,0x58,0x4d,0x4c, + 0x20,0x73,0x74,0x72,0x75,0x63,0x74,0x75,0x72,0x65,0x20,0x75,0x73,0x65,0x73,0x20, + 0x74,0x68,0x65,0x20,0x5b,0x4c,0x4f,0x4d,0x5d,0x28,0x68,0x74,0x74,0x70,0x3a,0x2f, + 0x2f,0x6d,0x61,0x74,0x74,0x68,0x65,0x77,0x77,0x69,0x6c,0x64,0x2e,0x63,0x6f,0x2e, + 0x75,0x6b,0x2f,0x70,0x72,0x6f,0x6a,0x65,0x63,0x74,0x73,0x2f,0x6c,0x75,0x61,0x65, + 0x78,0x70,0x61,0x74,0x2f,0x6c,0x6f,0x6d,0x2e,0x68,0x74,0x6d,0x6c,0x29,0x0a,0x2d, + 0x2d,0x20,0x66,0x6f,0x72,0x6d,0x61,0x74,0x2c,0x20,0x72,0x65,0x66,0x65,0x72,0x20, + 0x74,0x6f,0x20,0x74,0x68,0x65,0x73,0x65,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e, + 0x74,0x73,0x20,0x74,0x6f,0x20,0x67,0x65,0x74,0x20,0x6d,0x6f,0x72,0x65,0x20,0x69, + 0x6e,0x66,0x6f,0x72,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x73,0x20,0x61,0x62,0x6f,0x75, + 0x74,0x20,0x66,0x69,0x65,0x6c,0x64,0x73,0x2e,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20, + 0x49,0x6e,0x20,0x61,0x64,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x74, + 0x61,0x62,0x6c,0x65,0x20,0x66,0x69,0x65,0x6c,0x64,0x73,0x2c,0x20,0x69,0x74,0x20, + 0x68,0x61,0x73,0x20,0x61,0x6e,0x20,0x61,0x72,0x72,0x61,0x79,0x20,0x70,0x61,0x72, + 0x74,0x2c,0x20,0x60,0x5b,0x31,0x5d,0x60,0x20,0x62,0x65,0x69,0x6e,0x67,0x20,0x74, + 0x68,0x65,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x72,0x65,0x70,0x72,0x65,0x73, + 0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x28,0x62,0x61,0x73,0x65,0x36,0x34, + 0x20,0x65,0x6e,0x63,0x6f,0x64,0x65,0x64,0x29,0x2c,0x0a,0x2d,0x2d,0x20,0x70,0x6f, + 0x73,0x73,0x69,0x62,0x6c,0x79,0x20,0x66,0x6f,0x6c,0x6c,0x6f,0x77,0x65,0x64,0x20, + 0x62,0x79,0x20,0x63,0x68,0x6c,0x69,0x64,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74, + 0x69,0x65,0x73,0x20,0x28,0x40,0x7b,0x23,0x44,0x42,0x47,0x50,0x50,0x72,0x6f,0x70, + 0x65,0x72,0x74,0x79,0x7d,0x20,0x74,0x68,0x65,0x6d,0x73,0x65,0x6c,0x76,0x65,0x73, + 0x29,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x40,0x66,0x69,0x65,0x6c,0x64,0x20,0x23, + 0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x74,0x61,0x67,0x20,0x41,0x6c,0x77,0x61,0x79, + 0x73,0x20,0x22,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x22,0x0a,0x2d,0x2d,0x20, + 0x40,0x66,0x69,0x65,0x6c,0x64,0x20,0x23,0x74,0x61,0x62,0x6c,0x65,0x20,0x61,0x74, + 0x74,0x72,0x20,0x58,0x4d,0x4c,0x20,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65, + 0x73,0x2c,0x20,0x73,0x65,0x65,0x20,0x44,0x42,0x47,0x50,0x20,0x73,0x70,0x65,0x63, + 0x69,0x66,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d,0x20,0x40,0x74,0x79, + 0x70,0x65,0x20,0x44,0x42,0x47,0x50,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0a, + 0x0a,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x49,0x6e,0x70,0x65,0x63,0x74,0x6f,0x72, + 0x73,0x20,0x74,0x61,0x62,0x6c,0x65,0x2c,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e, + 0x20,0x61,0x6c,0x6c,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x2e,0x0a,0x2d,0x2d,0x20,0x4b,0x65,0x79, + 0x73,0x20,0x61,0x72,0x65,0x20,0x65,0x69,0x74,0x68,0x65,0x72,0x20,0x74,0x79,0x70, + 0x65,0x20,0x6e,0x61,0x6d,0x65,0x73,0x20,0x28,0x60,0x73,0x74,0x72,0x69,0x6e,0x67, + 0x60,0x2c,0x20,0x60,0x6e,0x75,0x6d,0x62,0x65,0x72,0x60,0x2c,0x20,0x2e,0x2e,0x2e, + 0x29,0x20,0x6f,0x72,0x20,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x73,0x0a, + 0x2d,0x2d,0x20,0x74,0x68,0x61,0x74,0x20,0x68,0x61,0x76,0x65,0x20,0x61,0x20,0x63, + 0x75,0x73,0x74,0x6f,0x6d,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x20, + 0x61,0x74,0x74,0x61,0x63,0x68,0x65,0x64,0x2e,0x0a,0x2d,0x2d,0x20,0x40,0x66,0x69, + 0x65,0x6c,0x64,0x20,0x5b,0x70,0x61,0x72,0x65,0x6e,0x74,0x3d,0x23,0x64,0x65,0x62, + 0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74, + 0x69,0x6f,0x6e,0x5d,0x20,0x23,0x74,0x61,0x62,0x6c,0x65,0x20,0x69,0x6e,0x73,0x70, + 0x65,0x63,0x74,0x6f,0x72,0x73,0x0a,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74, + 0x6f,0x72,0x73,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x0a,0x2d,0x2d,0x2d,0x0a,0x2d, + 0x2d,0x20,0x47,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x20,0x61,0x20,0x44,0x42,0x47, + 0x50,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x69,0x66,0x20,0x6e,0x65, + 0x65,0x64,0x65,0x64,0x2e,0x20,0x49,0x66,0x20,0x64,0x61,0x74,0x61,0x20,0x69,0x73, + 0x20,0x69,0x6e,0x20,0x64,0x61,0x74,0x61,0x20,0x70,0x61,0x67,0x69,0x6e,0x61,0x74, + 0x69,0x6f,0x6e,0x20,0x61,0x6e,0x64,0x20,0x72,0x65,0x63,0x75,0x72,0x73,0x69,0x6f, + 0x6e,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x72,0x61,0x6e,0x67,0x65,0x73,0x2c,0x0a, + 0x2d,0x2d,0x20,0x61,0x6e,0x64,0x20,0x73,0x65,0x6e,0x64,0x20,0x61,0x20,0x70,0x72, + 0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x64,0x65, + 0x62,0x75,0x67,0x67,0x65,0x72,0x2c,0x20,0x6f,0x74,0x68,0x65,0x72,0x77,0x69,0x73, + 0x65,0x20,0x64,0x72,0x6f,0x70,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x2e,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72, + 0x61,0x6d,0x20,0x23,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x20, + 0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x6e,0x61,0x6d,0x65,0x20,0x28,0x64, + 0x69,0x73,0x70,0x6c,0x61,0x79,0x65,0x64,0x20,0x69,0x6e,0x20,0x49,0x44,0x45,0x29, + 0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x23,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x20,0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x20,0x54,0x79,0x70,0x65, + 0x20,0x6e,0x61,0x6d,0x65,0x20,0x28,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x65,0x64, + 0x20,0x69,0x6e,0x20,0x49,0x44,0x45,0x29,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72, + 0x61,0x6d,0x20,0x23,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x72,0x65,0x70,0x72,0x20, + 0x56,0x61,0x6c,0x75,0x65,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x72,0x65,0x70, + 0x72,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d,0x20,0x40, + 0x70,0x61,0x72,0x61,0x6d,0x20,0x23,0x44,0x42,0x47,0x50,0x50,0x72,0x6f,0x70,0x65, + 0x72,0x74,0x79,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x20,0x50,0x61,0x72,0x65,0x6e, + 0x74,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0a,0x2d,0x2d,0x20,0x40,0x70, + 0x61,0x72,0x61,0x6d,0x20,0x23,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x66,0x75,0x6c, + 0x6c,0x6e,0x61,0x6d,0x65,0x20,0x4c,0x75,0x61,0x20,0x65,0x78,0x70,0x72,0x65,0x73, + 0x73,0x69,0x6f,0x6e,0x20,0x75,0x73,0x65,0x64,0x20,0x74,0x6f,0x20,0x67,0x65,0x74, + 0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x62,0x61,0x63,0x6b,0x20,0x69,0x6e,0x20,0x66, + 0x75,0x72,0x74,0x68,0x65,0x72,0x20,0x63,0x61,0x6c,0x6c,0x73,0x0a,0x2d,0x2d,0x20, + 0x40,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x23,0x74,0x61,0x62,0x6c,0x65,0x20,0x64, + 0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d,0x20,0x40,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x70,0x61,0x72,0x65,0x6e,0x74,0x3d, + 0x23,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e,0x74,0x72,0x6f,0x73, + 0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x5d,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74, + 0x79,0x0a,0x4d,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x3d,0x20,0x63, + 0x6f,0x79,0x69,0x65,0x6c,0x64,0x0a,0x0a,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x41, + 0x64,0x64,0x73,0x20,0x61,0x20,0x70,0x72,0x6f,0x62,0x65,0x20,0x74,0x68,0x61,0x74, + 0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x63,0x61,0x6c,0x6c,0x65,0x64,0x20, + 0x66,0x6f,0x72,0x20,0x65,0x76,0x65,0x72,0x79,0x20,0x75,0x6e,0x6b,0x6e,0x6f,0x77, + 0x6e,0x20,0x74,0x61,0x62,0x6c,0x65,0x2f,0x75,0x73,0x65,0x72,0x64,0x61,0x74,0x61, + 0x2e,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x23,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x72,0x6f,0x62,0x65,0x20,0x49,0x6e,0x73,0x70, + 0x65,0x63,0x74,0x6f,0x72,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x74, + 0x6f,0x20,0x63,0x61,0x6c,0x6c,0x2e,0x0a,0x2d,0x2d,0x20,0x40,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x20,0x5b,0x70,0x61,0x72,0x65,0x6e,0x74,0x3d,0x23,0x64,0x65, + 0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63, + 0x74,0x69,0x6f,0x6e,0x5d,0x20,0x61,0x64,0x64,0x5f,0x70,0x72,0x6f,0x62,0x65,0x0a, + 0x4d,0x2e,0x61,0x64,0x64,0x5f,0x70,0x72,0x6f,0x62,0x65,0x20,0x3d,0x20,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x70,0x72,0x6f,0x62,0x65,0x29,0x20,0x70,0x72, + 0x6f,0x62,0x65,0x73,0x5b,0x23,0x70,0x72,0x6f,0x62,0x65,0x73,0x20,0x2b,0x20,0x31, + 0x5d,0x20,0x3d,0x20,0x70,0x72,0x6f,0x62,0x65,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x2d, + 0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x49,0x6e,0x73,0x70,0x65,0x63,0x74,0x73,0x20,0x61, + 0x20,0x4c,0x75,0x61,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x62,0x79,0x20,0x64,0x69, + 0x73,0x70,0x61,0x74,0x63,0x68,0x69,0x6e,0x67,0x20,0x69,0x74,0x20,0x74,0x6f,0x20, + 0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f, + 0x72,0x2e,0x20,0x49,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x68,0x61,0x76,0x65,0x20,0x74,0x68,0x65,0x20, + 0x73,0x61,0x6d,0x65,0x20,0x41,0x50,0x49,0x2e,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61, + 0x72,0x61,0x6d,0x20,0x23,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65, + 0x20,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x6e,0x61,0x6d,0x65,0x20,0x28, + 0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x65, + 0x64,0x20,0x62,0x79,0x20,0x49,0x44,0x45,0x29,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61, + 0x72,0x61,0x6d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x56,0x61,0x6c,0x75,0x65,0x20, + 0x74,0x6f,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x0a,0x2d,0x2d,0x20,0x40,0x70, + 0x61,0x72,0x61,0x6d,0x20,0x23,0x74,0x61,0x62,0x6c,0x65,0x20,0x70,0x61,0x72,0x65, + 0x6e,0x74,0x20,0x50,0x61,0x72,0x65,0x6e,0x74,0x20,0x70,0x72,0x6f,0x70,0x65,0x72, + 0x74,0x79,0x20,0x28,0x4c,0x4f,0x4d,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x6f,0x66, + 0x20,0x74,0x68,0x65,0x20,0x29,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d, + 0x20,0x23,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d, + 0x65,0x20,0x45,0x78,0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e,0x20,0x75,0x73,0x65, + 0x64,0x20,0x74,0x6f,0x20,0x72,0x65,0x74,0x72,0x69,0x65,0x76,0x65,0x20,0x60,0x76, + 0x61,0x6c,0x75,0x65,0x60,0x20,0x66,0x6f,0x72,0x20,0x66,0x75,0x72,0x74,0x68,0x65, + 0x72,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x63,0x61,0x6c,0x6c,0x73, + 0x0a,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x23,0x44,0x42,0x47, + 0x50,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x54,0x68,0x65,0x20,0x69,0x6e, + 0x73,0x70,0x65,0x63,0x74,0x65,0x64,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x61,0x73, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x65,0x64,0x20,0x62,0x79,0x20,0x40,0x7b,0x64, + 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65, + 0x63,0x74,0x69,0x6f,0x6e,0x23,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69, + 0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x70,0x72,0x6f, + 0x70,0x65,0x72,0x74,0x79,0x7d,0x2e,0x0a,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x23,0x6e,0x69,0x6c,0x20,0x49,0x66,0x20,0x74,0x68,0x65,0x20,0x76, + 0x61,0x6c,0x75,0x65,0x20,0x68,0x61,0x73,0x20,0x6e,0x6f,0x74,0x20,0x62,0x65,0x65, + 0x6e,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x65,0x64,0x0a,0x2d,0x2d,0x20,0x40, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x70,0x61,0x72,0x65,0x6e,0x74, + 0x3d,0x23,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e,0x74,0x72,0x6f, + 0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x5d,0x20,0x69,0x6e,0x73,0x70,0x65,0x63, + 0x74,0x0a,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x20,0x3d,0x20,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c, + 0x75,0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c, + 0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x28,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x5b,0x74, + 0x79,0x70,0x65,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x5d,0x20,0x6f,0x72,0x20,0x4d, + 0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x2e,0x64,0x65,0x66,0x61, + 0x75,0x6c,0x74,0x29,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65, + 0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61, + 0x6d,0x65,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x20,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x20,0x2d,0x2d, + 0x0a,0x2d,0x2d,0x20,0x55,0x74,0x69,0x6c,0x69,0x74,0x79,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x73,0x20,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x20,0x2d,0x2d, + 0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x5f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74, + 0x6f,0x72,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20, + 0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x2e,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x74,0x79, + 0x70,0x65,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x20,0x74,0x6f,0x73,0x74,0x72, + 0x69,0x6e,0x67,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x20,0x70,0x61,0x72,0x65, + 0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x65,0x6e, + 0x64,0x0a,0x0a,0x2d,0x2d,0x20,0x49,0x6e,0x73,0x70,0x65,0x63,0x74,0x73,0x20,0x74, + 0x79,0x70,0x65,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x63,0x61,0x6e,0x20,0x68,0x61, + 0x76,0x65,0x20,0x61,0x20,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x20,0x28, + 0x74,0x61,0x62,0x6c,0x65,0x20,0x61,0x6e,0x64,0x20,0x75,0x73,0x65,0x72,0x64,0x61, + 0x74,0x61,0x29,0x2e,0x20,0x52,0x65,0x74,0x75,0x72,0x6e,0x73,0x0a,0x2d,0x2d,0x20, + 0x20,0x20,0x31,0x29,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x64,0x20,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x32,0x29,0x20, + 0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x20,0x69,0x6e,0x64,0x69,0x63,0x61,0x74,0x69, + 0x6e,0x67,0x20,0x77,0x68,0x65,0x74,0x68,0x65,0x72,0x20,0x61,0x20,0x63,0x75,0x73, + 0x74,0x6f,0x6d,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x20,0x68,0x61, + 0x73,0x20,0x62,0x65,0x65,0x6e,0x20,0x63,0x61,0x6c,0x6c,0x65,0x64,0x20,0x28,0x69, + 0x6e,0x20,0x74,0x68,0x61,0x74,0x20,0x63,0x61,0x73,0x65,0x2c,0x20,0x64,0x6f,0x20, + 0x6e,0x6f,0x74,0x20,0x70,0x72,0x6f,0x63,0x65,0x73,0x73,0x20,0x76,0x61,0x6c,0x75, + 0x65,0x20,0x61,0x6e,0x79,0x20,0x66,0x75,0x72,0x74,0x68,0x65,0x72,0x29,0x0a,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x65, + 0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x5f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f, + 0x72,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x70, + 0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6d,0x74,0x20,0x3d,0x20, + 0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x76,0x61,0x6c, + 0x75,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x66,0x69,0x6e,0x64,0x20,0x20,0x62,0x79,0x20,0x6d, + 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x3d,0x20, + 0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x5b,0x6d,0x74,0x5d, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x63,0x75,0x73,0x74, + 0x6f,0x6d,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63, + 0x75,0x73,0x74,0x6f,0x6d,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75, + 0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e, + 0x61,0x6d,0x65,0x29,0x2c,0x20,0x74,0x72,0x75,0x65,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x6f,0x72,0x20,0x65,0x6c,0x73, + 0x65,0x20,0x63,0x61,0x6c,0x6c,0x20,0x70,0x72,0x6f,0x62,0x65,0x73,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x69,0x3d,0x31,0x2c,0x20,0x23, + 0x70,0x72,0x6f,0x62,0x65,0x73,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x72,0x6f,0x70,0x20,0x3d, + 0x20,0x70,0x72,0x6f,0x62,0x65,0x73,0x5b,0x69,0x5d,0x28,0x6e,0x61,0x6d,0x65,0x2c, + 0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20, + 0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x70,0x72,0x6f,0x70,0x20,0x74,0x68,0x65,0x6e, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x72,0x6f,0x70,0x2c,0x20,0x74,0x72, + 0x75,0x65,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x72,0x6f,0x70,0x20,0x3d,0x20,0x64,0x65,0x66, + 0x61,0x75,0x6c,0x74,0x5f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x28,0x6e, + 0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61,0x72,0x65, + 0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x6d,0x74,0x20,0x61,0x6e,0x64,0x20,0x70,0x72,0x6f,0x70, + 0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x6d,0x74,0x70,0x72,0x6f,0x70,0x20,0x3d,0x20,0x4d,0x2e,0x69, + 0x6e,0x73,0x70,0x65,0x63,0x74,0x28,0x22,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c, + 0x65,0x22,0x2c,0x20,0x6d,0x74,0x2c,0x20,0x70,0x72,0x6f,0x70,0x2c,0x20,0x22,0x6d, + 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x5b,0x22,0x2e,0x2e,0x70,0x72,0x6f,0x70, + 0x2e,0x61,0x74,0x74,0x72,0x2e,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x2e,0x2e, + 0x22,0x5d,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x6d,0x74,0x70,0x72,0x6f,0x70,0x20,0x74,0x68,0x65,0x6e,0x20,0x6d,0x74,0x70,0x72, + 0x6f,0x70,0x2e,0x61,0x74,0x74,0x72,0x2e,0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x22, + 0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x22,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x70,0x72,0x6f,0x70,0x2c,0x20,0x66,0x61,0x6c,0x73,0x65,0x0a,0x65,0x6e,0x64,0x0a, + 0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20, + 0x66,0x61,0x6e,0x63,0x79,0x5f,0x66,0x75,0x6e,0x63,0x5f,0x72,0x65,0x70,0x72,0x28, + 0x66,0x2c,0x20,0x69,0x6e,0x66,0x6f,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x61,0x72,0x67,0x73,0x20,0x3d,0x20,0x7b,0x7d,0x0a,0x20,0x20,0x20, + 0x20,0x66,0x6f,0x72,0x20,0x69,0x3d,0x31,0x2c,0x20,0x69,0x6e,0x66,0x6f,0x2e,0x6e, + 0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x61,0x72,0x67,0x73,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x64,0x65,0x62,0x75, + 0x67,0x2e,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x28,0x66,0x2c,0x20,0x69,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x69,0x6e,0x66,0x6f,0x2e,0x69,0x73,0x76,0x61,0x72,0x61,0x72,0x67,0x20,0x74, + 0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x72,0x67,0x73, + 0x5b,0x23,0x61,0x72,0x67,0x73,0x2b,0x31,0x5d,0x20,0x3d,0x20,0x22,0x2e,0x2e,0x2e, + 0x22,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28, + 0x22,0x20,0x2e,0x2e,0x20,0x74,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28,0x61,0x72,0x67, + 0x73,0x2c,0x20,0x22,0x2c,0x20,0x22,0x29,0x20,0x2e,0x2e,0x20,0x22,0x29,0x22,0x0a, + 0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x2d,0x20,0x47,0x65,0x6e,0x65,0x72,0x61,0x74, + 0x65,0x20,0x61,0x20,0x6e,0x61,0x6d,0x65,0x20,0x73,0x69,0x75,0x74,0x61,0x62,0x6c, + 0x65,0x20,0x66,0x6f,0x72,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x69,0x6e,0x64,0x65, + 0x78,0x20,0x73,0x79,0x6e,0x74,0x61,0x78,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72, + 0x61,0x6d,0x20,0x6e,0x61,0x6d,0x65,0x20,0x4b,0x65,0x79,0x20,0x6e,0x61,0x6d,0x65, + 0x0a,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x23,0x73,0x74,0x72, + 0x69,0x6e,0x67,0x20,0x41,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x69,0x6e,0x64,0x65, + 0x78,0x20,0x73,0x74,0x79,0x6c,0x65,0x20,0x69,0x6e,0x64,0x65,0x78,0x0a,0x2d,0x2d, + 0x20,0x40,0x75,0x73,0x61,0x67,0x65,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65, + 0x5f,0x70,0x72,0x69,0x6e,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6b,0x65,0x79,0x28,0x27, + 0x66,0x6f,0x6f,0x27,0x29,0x20,0x3d,0x3e,0x20,0x27,0x5b,0x22,0x66,0x6f,0x6f,0x22, + 0x5d,0x27,0x0a,0x2d,0x2d,0x20,0x40,0x75,0x73,0x61,0x67,0x65,0x20,0x67,0x65,0x6e, + 0x65,0x72,0x61,0x74,0x65,0x5f,0x70,0x72,0x69,0x6e,0x74,0x61,0x62,0x6c,0x65,0x5f, + 0x6b,0x65,0x79,0x28,0x31,0x32,0x29,0x20,0x20,0x20,0x20,0x3d,0x3e,0x20,0x27,0x5b, + 0x31,0x32,0x5d,0x27,0x0a,0x2d,0x2d,0x20,0x40,0x75,0x73,0x61,0x67,0x65,0x20,0x67, + 0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x5f,0x70,0x72,0x69,0x6e,0x74,0x61,0x62,0x6c, + 0x65,0x5f,0x6b,0x65,0x79,0x28,0x7b,0x7d,0x29,0x20,0x20,0x20,0x20,0x3d,0x3e,0x20, + 0x27,0x5b,0x74,0x61,0x62,0x6c,0x65,0x3a,0x20,0x30,0x78,0x31,0x32,0x33,0x34,0x35, + 0x36,0x37,0x38,0x5d,0x0a,0x2d,0x2d,0x20,0x40,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x5b,0x70,0x61,0x72,0x65,0x6e,0x74,0x3d,0x23,0x64,0x65,0x62,0x75,0x67, + 0x67,0x65,0x72,0x2e,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f, + 0x6e,0x5d,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x5f,0x70,0x72,0x69,0x6e, + 0x74,0x61,0x62,0x6c,0x65,0x5f,0x6b,0x65,0x79,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74, + 0x65,0x5f,0x70,0x72,0x69,0x6e,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6b,0x65,0x79,0x28, + 0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x22,0x5b,0x22,0x20,0x2e,0x2e,0x20,0x28,0x74,0x79,0x70,0x65,0x28,0x6e,0x61, + 0x6d,0x65,0x29,0x20,0x3d,0x3d,0x20,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x20, + 0x61,0x6e,0x64,0x20,0x73,0x66,0x6f,0x72,0x6d,0x61,0x74,0x28,0x22,0x25,0x71,0x22, + 0x2c,0x20,0x6e,0x61,0x6d,0x65,0x29,0x20,0x6f,0x72,0x20,0x74,0x6f,0x73,0x74,0x72, + 0x69,0x6e,0x67,0x28,0x6e,0x61,0x6d,0x65,0x29,0x29,0x20,0x2e,0x2e,0x20,0x22,0x5d, + 0x22,0x0a,0x65,0x6e,0x64,0x0a,0x4d,0x2e,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65, + 0x5f,0x70,0x72,0x69,0x6e,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6b,0x65,0x79,0x20,0x3d, + 0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x5f,0x70,0x72,0x69,0x6e,0x74,0x61, + 0x62,0x6c,0x65,0x5f,0x6b,0x65,0x79,0x0a,0x0a,0x2d,0x2d,0x20,0x55,0x73,0x65,0x64, + 0x20,0x74,0x6f,0x20,0x73,0x74,0x6f,0x72,0x65,0x20,0x63,0x6f,0x6d,0x70,0x6c,0x65, + 0x78,0x20,0x6b,0x65,0x79,0x73,0x20,0x28,0x6f,0x74,0x68,0x65,0x72,0x20,0x74,0x68, + 0x61,0x6e,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x61,0x6e,0x64,0x20,0x6e,0x75, + 0x6d,0x62,0x65,0x72,0x29,0x20,0x61,0x73,0x20,0x74,0x68,0x65,0x79,0x20,0x63,0x61, + 0x6e,0x6e,0x6f,0x74,0x20,0x62,0x65,0x20,0x70,0x61,0x73,0x73,0x65,0x64,0x20,0x69, + 0x6e,0x20,0x74,0x65,0x78,0x74,0x0a,0x2d,0x2d,0x20,0x46,0x6f,0x72,0x20,0x74,0x68, + 0x65,0x73,0x65,0x20,0x6b,0x65,0x79,0x73,0x2c,0x20,0x74,0x68,0x65,0x20,0x72,0x65, + 0x73,0x75,0x6c,0x74,0x69,0x6e,0x67,0x20,0x65,0x78,0x70,0x72,0x65,0x73,0x73,0x69, + 0x6f,0x6e,0x20,0x77,0x69,0x6c,0x6c,0x20,0x6e,0x6f,0x74,0x20,0x62,0x65,0x20,0x74, + 0x68,0x65,0x20,0x6b,0x65,0x79,0x20,0x69,0x74,0x73,0x65,0x6c,0x66,0x20,0x62,0x75, + 0x74,0x20,0x22,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x2e,0x2e,0x2e, + 0x5d,0x22,0x0a,0x2d,0x2d,0x20,0x77,0x68,0x65,0x72,0x65,0x20,0x6b,0x65,0x79,0x5f, + 0x63,0x61,0x63,0x68,0x65,0x20,0x6d,0x75,0x73,0x74,0x20,0x62,0x65,0x20,0x6d,0x61, + 0x70,0x70,0x65,0x64,0x20,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,0x20,0x74,0x61,0x62, + 0x6c,0x65,0x20,0x74,0x6f,0x20,0x72,0x65,0x73,0x6f,0x6c,0x76,0x65,0x20,0x6b,0x65, + 0x79,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x6c,0x79,0x2e,0x0a,0x4d,0x2e,0x6b, + 0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x20,0x3d,0x20,0x73,0x65,0x74,0x6d,0x65, + 0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x7b,0x20,0x6e,0x3d,0x30,0x20,0x7d,0x2c, + 0x20,0x7b,0x20,0x5f,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x20,0x22,0x76,0x22,0x20, + 0x7d,0x29,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69, + 0x6f,0x6e,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x5f,0x6b,0x65,0x79,0x28, + 0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x74,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x74,0x79,0x70,0x65,0x28,0x6e,0x61,0x6d, + 0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x74,0x6e,0x61,0x6d,0x65,0x20, + 0x3d,0x3d,0x20,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x20,0x74,0x68,0x65,0x6e, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x66,0x6f,0x72,0x6d,0x61,0x74,0x28, + 0x22,0x25,0x71,0x22,0x2c,0x20,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x74,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x3d,0x20, + 0x22,0x6e,0x75,0x6d,0x62,0x65,0x72,0x22,0x20,0x6f,0x72,0x20,0x74,0x6e,0x61,0x6d, + 0x65,0x20,0x3d,0x3d,0x20,0x22,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x22,0x20,0x74, + 0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x6f,0x73,0x74,0x72, + 0x69,0x6e,0x67,0x28,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, + 0x73,0x65,0x20,0x2d,0x2d,0x20,0x63,0x6f,0x6d,0x70,0x6c,0x65,0x78,0x20,0x6b,0x65, + 0x79,0x2c,0x20,0x75,0x73,0x65,0x20,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65, + 0x20,0x66,0x6f,0x72,0x20,0x6c,0x6f,0x6f,0x6b,0x75,0x70,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x20,0x3d,0x20,0x4d,0x2e, + 0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x2e,0x6e,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x4d,0x2e,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b, + 0x69,0x5d,0x20,0x3d,0x20,0x6e,0x61,0x6d,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x4d,0x2e,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x2e,0x6e,0x20, + 0x3d,0x20,0x69,0x2b,0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x22,0x6b,0x65,0x79,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b, + 0x22,0x2e,0x2e,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x69,0x29,0x2e,0x2e, + 0x22,0x5d,0x22,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a, + 0x0a,0x2d,0x2d,0x2d,0x20,0x47,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x20,0x61,0x20, + 0x75,0x73,0x61,0x62,0x6c,0x65,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x20, + 0x66,0x6f,0x72,0x20,0x61,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x0a,0x2d,0x2d,0x20, + 0x42,0x61,0x73,0x65,0x64,0x20,0x6f,0x6e,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x20, + 0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x20,0x61,0x6e,0x64,0x20,0x6b,0x65,0x79, + 0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61, + 0x20,0x76,0x61,0x6c,0x69,0x64,0x20,0x4c,0x75,0x61,0x20,0x65,0x78,0x70,0x72,0x65, + 0x73,0x73,0x69,0x6f,0x6e,0x2e,0x0a,0x2d,0x2d,0x20,0x4b,0x65,0x79,0x20,0x63,0x61, + 0x6e,0x20,0x62,0x65,0x20,0x61,0x6e,0x79,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x28, + 0x61,0x73,0x20,0x61,0x6e,0x79,0x74,0x68,0x69,0x6e,0x67,0x20,0x63,0x61,0x6e,0x20, + 0x61,0x63,0x74,0x20,0x61,0x73,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x6b,0x65,0x79, + 0x29,0x2e,0x20,0x49,0x66,0x20,0x69,0x74,0x20,0x63,0x61,0x6e,0x6e,0x6f,0x74,0x0a, + 0x2d,0x2d,0x20,0x62,0x65,0x20,0x73,0x65,0x72,0x69,0x61,0x6c,0x69,0x7a,0x65,0x64, + 0x20,0x28,0x6f,0x6e,0x6c,0x79,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2c,0x20,0x6e, + 0x75,0x6d,0x62,0x65,0x72,0x20,0x61,0x6e,0x64,0x20,0x62,0x6f,0x6f,0x6c,0x65,0x61, + 0x6e,0x20,0x63,0x61,0x6e,0x29,0x2c,0x20,0x69,0x74,0x20,0x77,0x69,0x6c,0x6c,0x20, + 0x62,0x65,0x20,0x74,0x65,0x6d,0x70,0x6f,0x72,0x61,0x72,0x6c,0x79,0x0a,0x2d,0x2d, + 0x20,0x73,0x74,0x6f,0x72,0x65,0x64,0x20,0x69,0x6e,0x20,0x61,0x6e,0x20,0x69,0x6e, + 0x74,0x65,0x72,0x6e,0x61,0x6c,0x20,0x63,0x61,0x63,0x68,0x65,0x20,0x74,0x6f,0x20, + 0x62,0x65,0x20,0x72,0x65,0x74,0x72,0x69,0x65,0x76,0x65,0x64,0x20,0x6c,0x61,0x74, + 0x65,0x72,0x2e,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x23,0x73, + 0x74,0x72,0x69,0x6e,0x67,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x20,0x50,0x61,0x72, + 0x65,0x6e,0x74,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x0a,0x2d,0x2d,0x20, + 0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x6b,0x65,0x79,0x20,0x54,0x68,0x65,0x20,0x63, + 0x68,0x69,0x6c,0x64,0x20,0x6b,0x65,0x79,0x20,0x74,0x6f,0x20,0x67,0x65,0x6e,0x65, + 0x72,0x61,0x74,0x65,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x20,0x66,0x6f, + 0x72,0x0a,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x23,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x20,0x41,0x20,0x76,0x61,0x6c,0x69,0x64,0x20,0x66,0x75,0x6c, + 0x6c,0x6e,0x61,0x6d,0x65,0x20,0x65,0x78,0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e, + 0x0a,0x2d,0x2d,0x20,0x40,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x70, + 0x61,0x72,0x65,0x6e,0x74,0x3d,0x23,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e, + 0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x5d,0x20,0x6d, + 0x61,0x6b,0x65,0x5f,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x0a,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x61,0x6b,0x65, + 0x5f,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x28,0x70,0x61,0x72,0x65,0x6e,0x74, + 0x2c,0x20,0x6b,0x65,0x79,0x29,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x20,0x2e,0x2e,0x20,0x22,0x5b,0x22,0x20, + 0x2e,0x2e,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x5f,0x6b,0x65,0x79,0x28, + 0x6b,0x65,0x79,0x29,0x20,0x2e,0x2e,0x20,0x22,0x5d,0x22,0x0a,0x65,0x6e,0x64,0x0a, + 0x4d,0x2e,0x6d,0x61,0x6b,0x65,0x5f,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x20, + 0x3d,0x20,0x6d,0x61,0x6b,0x65,0x5f,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x0a, + 0x0a,0x2d,0x2d,0x20,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x20,0x2d, + 0x2d,0x0a,0x2d,0x2d,0x20,0x49,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x20, + 0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x20,0x2d,0x2d,0x0a,0x0a,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72, + 0x73,0x2e,0x6e,0x75,0x6d,0x62,0x65,0x72,0x20,0x20,0x20,0x3d,0x20,0x64,0x65,0x66, + 0x61,0x75,0x6c,0x74,0x5f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x0a,0x4d, + 0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x2e,0x62,0x6f,0x6f,0x6c, + 0x65,0x61,0x6e,0x20,0x20,0x3d,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x5f,0x69, + 0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x0a,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65, + 0x63,0x74,0x6f,0x72,0x73,0x5b,0x22,0x6e,0x69,0x6c,0x22,0x5d,0x20,0x20,0x20,0x3d, + 0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x5f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74, + 0x6f,0x72,0x0a,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x2e, + 0x75,0x73,0x65,0x72,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x64,0x65,0x66,0x61,0x75, + 0x6c,0x74,0x5f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x0a,0x4d,0x2e,0x69, + 0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x2e,0x74,0x68,0x72,0x65,0x61,0x64, + 0x20,0x20,0x20,0x3d,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x5f,0x69,0x6e,0x73, + 0x70,0x65,0x63,0x74,0x6f,0x72,0x0a,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74, + 0x6f,0x72,0x73,0x2e,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x20,0x3d,0x20,0x64, + 0x65,0x66,0x61,0x75,0x6c,0x74,0x5f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72, + 0x20,0x2d,0x2d,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x73,0x20,0x33,0x72,0x64,0x20,0x70, + 0x61,0x72,0x74,0x79,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x20, + 0x74,0x6f,0x20,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x66,0x61,0x75, + 0x6c,0x74,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x20,0x69,0x66,0x20, + 0x6e,0x65,0x65,0x64,0x65,0x64,0x0a,0x0a,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63, + 0x74,0x6f,0x72,0x73,0x2e,0x75,0x73,0x65,0x72,0x64,0x61,0x74,0x61,0x20,0x3d,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76, + 0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75, + 0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x28,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x5f,0x69,0x6e, + 0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61, + 0x6c,0x75,0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c, + 0x6c,0x6e,0x61,0x6d,0x65,0x29,0x29,0x20,0x2d,0x2d,0x20,0x64,0x72,0x6f,0x70,0x20, + 0x73,0x65,0x63,0x6f,0x6e,0x64,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x61, + 0x6c,0x75,0x65,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65, + 0x63,0x74,0x6f,0x72,0x73,0x2e,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x3d,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61, + 0x6c,0x75,0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c, + 0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x65,0x73, + 0x63,0x61,0x70,0x65,0x20,0x6c,0x69,0x6e,0x65,0x62,0x72,0x65,0x61,0x6b,0x73,0x20, + 0x61,0x73,0x20,0x5c,0x6e,0x20,0x61,0x6e,0x64,0x20,0x6e,0x6f,0x74,0x20,0x61,0x73, + 0x20,0x5c,0x3c,0x30,0x78,0x30,0x41,0x3e,0x20,0x6c,0x69,0x6b,0x65,0x20,0x25,0x71, + 0x20,0x64,0x6f,0x65,0x73,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x4d,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e,0x61,0x6d,0x65, + 0x2c,0x20,0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x2c,0x20,0x73,0x66,0x6f,0x72, + 0x6d,0x61,0x74,0x28,0x22,0x25,0x71,0x22,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x29, + 0x3a,0x67,0x73,0x75,0x62,0x28,0x22,0x5c,0x5c,0x5c,0x6e,0x22,0x2c,0x20,0x22,0x5c, + 0x5c,0x6e,0x22,0x29,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75, + 0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x4d,0x2e,0x69, + 0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x5b,0x22,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x22,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61, + 0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x6e,0x66,0x6f,0x20,0x3d, + 0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x76, + 0x61,0x6c,0x75,0x65,0x2c,0x20,0x22,0x6e,0x53,0x66,0x6c,0x75,0x22,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x72,0x6f,0x70,0x0a,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x69,0x6e,0x66,0x6f,0x2e,0x77,0x68,0x61,0x74,0x20,0x7e, + 0x3d,0x20,0x22,0x43,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x74,0x72,0x79,0x20,0x74,0x6f,0x20,0x63,0x72,0x65, + 0x61,0x74,0x65,0x20,0x61,0x20,0x66,0x61,0x6e,0x63,0x79,0x20,0x72,0x65,0x70,0x72, + 0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x66,0x20,0x70,0x6f, + 0x73,0x73,0x69,0x62,0x6c,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x70,0x72,0x20,0x3d,0x20,0x69,0x6e,0x66,0x6f, + 0x2e,0x6e,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x61,0x6e,0x64,0x20,0x66,0x61,0x6e, + 0x63,0x79,0x5f,0x66,0x75,0x6e,0x63,0x5f,0x72,0x65,0x70,0x72,0x28,0x76,0x61,0x6c, + 0x75,0x65,0x2c,0x20,0x69,0x6e,0x66,0x6f,0x29,0x20,0x6f,0x72,0x20,0x74,0x6f,0x73, + 0x74,0x72,0x69,0x6e,0x67,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x69,0x6e,0x66,0x6f,0x2e,0x73,0x6f,0x75, + 0x72,0x63,0x65,0x3a,0x73,0x75,0x62,0x28,0x31,0x2c,0x31,0x29,0x20,0x3d,0x3d,0x20, + 0x22,0x40,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x70,0x72,0x20,0x3d,0x20,0x72,0x65,0x70,0x72, + 0x20,0x2e,0x2e,0x20,0x22,0x5c,0x6e,0x22,0x20,0x2e,0x2e,0x20,0x70,0x6c,0x61,0x74, + 0x66,0x6f,0x72,0x6d,0x2e,0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x28,0x22,0x40,0x22, + 0x20,0x2e,0x2e,0x20,0x69,0x6e,0x66,0x6f,0x2e,0x73,0x6f,0x75,0x72,0x63,0x65,0x29, + 0x20,0x2e,0x2e,0x20,0x22,0x5c,0x6e,0x22,0x20,0x2e,0x2e,0x20,0x74,0x6f,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x28,0x69,0x6e,0x66,0x6f,0x2e,0x6c,0x69,0x6e,0x65,0x64,0x65, + 0x66,0x69,0x6e,0x65,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x72,0x6f,0x70,0x20, + 0x3d,0x20,0x4d,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e,0x61,0x6d, + 0x65,0x2c,0x20,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x28,0x4c,0x75, + 0x61,0x29,0x22,0x2c,0x20,0x72,0x65,0x70,0x72,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e, + 0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x72, + 0x6f,0x70,0x20,0x3d,0x20,0x4d,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28, + 0x6e,0x61,0x6d,0x65,0x2c,0x20,0x22,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x22, + 0x2c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x76,0x61,0x6c,0x75,0x65, + 0x29,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e, + 0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x70,0x72,0x6f,0x70,0x20,0x74,0x68,0x65, + 0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x69,0x6c,0x20,0x65,0x6e,0x64, + 0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x28,0x35,0x2e,0x31,0x20,0x6f,0x6e, + 0x6c,0x79,0x29,0x20,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x20, + 0x69,0x73,0x20,0x64,0x75,0x6d,0x70,0x65,0x64,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x69, + 0x66,0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x64,0x69,0x66,0x66,0x65,0x72,0x65,0x6e, + 0x74,0x20,0x66,0x72,0x6f,0x6d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x65,0x6e, + 0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d, + 0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x74,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x6e, + 0x6f,0x74,0x20,0x61,0x20,0x63,0x6f,0x72,0x72,0x65,0x63,0x74,0x20,0x62,0x65,0x68, + 0x61,0x76,0x69,0x6f,0x72,0x3a,0x20,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65, + 0x6e,0x74,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x62,0x65,0x20,0x64,0x75,0x6d, + 0x70,0x65,0x64,0x20,0x69,0x66,0x20,0x69,0x73,0x20,0x64,0x69,0x66,0x66,0x65,0x72, + 0x65,0x6e,0x74,0x20,0x66,0x72,0x6f,0x6d,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74, + 0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x6f,0x6e,0x65, + 0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x65,0x6e,0x76,0x20, + 0x3d,0x20,0x67,0x65,0x74,0x66,0x65,0x6e,0x76,0x20,0x61,0x6e,0x64,0x20,0x67,0x65, + 0x74,0x66,0x65,0x6e,0x76,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x66,0x65,0x6e,0x76,0x20,0x61,0x6e,0x64,0x20,0x66,0x65,0x6e, + 0x76,0x20,0x7e,0x3d,0x20,0x67,0x65,0x74,0x66,0x65,0x6e,0x76,0x28,0x30,0x29,0x20, + 0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x66,0x65,0x6e,0x76,0x70,0x72,0x6f,0x70,0x20,0x3d,0x20,0x4d,0x2e, + 0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x28,0x22,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e, + 0x6d,0x65,0x6e,0x74,0x22,0x2c,0x20,0x66,0x65,0x6e,0x76,0x2c,0x20,0x70,0x72,0x6f, + 0x70,0x2c,0x20,0x22,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x5b, + 0x22,0x2e,0x2e,0x70,0x72,0x6f,0x70,0x2e,0x61,0x74,0x74,0x72,0x2e,0x66,0x75,0x6c, + 0x6c,0x6e,0x61,0x6d,0x65,0x2e,0x2e,0x22,0x5d,0x22,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x66,0x65,0x6e,0x76,0x70,0x72,0x6f,0x70,0x20, + 0x74,0x68,0x65,0x6e,0x20,0x66,0x65,0x6e,0x76,0x70,0x72,0x6f,0x70,0x2e,0x61,0x74, + 0x74,0x72,0x2e,0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x22,0x73,0x70,0x65,0x63,0x69, + 0x61,0x6c,0x22,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x72,0x6f,0x70, + 0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x0a,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74, + 0x6f,0x72,0x73,0x2e,0x74,0x61,0x62,0x6c,0x65,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65, + 0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61, + 0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x72, + 0x6f,0x70,0x2c,0x20,0x69,0x73,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x3d,0x20,0x6d, + 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x5f,0x69,0x6e,0x73,0x70,0x65,0x63,0x74, + 0x6f,0x72,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20, + 0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x70,0x72,0x6f, + 0x70,0x20,0x6f,0x72,0x20,0x69,0x73,0x63,0x75,0x73,0x74,0x6f,0x6d,0x20,0x74,0x68, + 0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x72,0x6f,0x70,0x20,0x65, + 0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x69,0x74,0x65,0x72,0x61, + 0x74,0x65,0x20,0x6f,0x76,0x65,0x72,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x76,0x61, + 0x6c,0x75,0x65,0x73,0x20,0x61,0x6e,0x64,0x20,0x64,0x65,0x74,0x65,0x63,0x74,0x20, + 0x61,0x72,0x72,0x61,0x79,0x73,0x20,0x61,0x74,0x20,0x74,0x68,0x65,0x20,0x73,0x61, + 0x6d,0x65,0x20,0x74,0x69,0x6d,0x65,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x6e, + 0x65,0x78,0x74,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x20,0x74,0x6f,0x20,0x63, + 0x69,0x72,0x63,0x75,0x6d,0x76,0x65,0x6e,0x74,0x20,0x5f,0x5f,0x70,0x61,0x69,0x72, + 0x73,0x20,0x6d,0x65,0x74,0x61,0x6d,0x65,0x74,0x68,0x6f,0x64,0x20,0x69,0x6e,0x20, + 0x35,0x2e,0x32,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x73, + 0x61,0x72,0x72,0x61,0x79,0x2c,0x20,0x69,0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x2c, + 0x20,0x31,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x6b,0x2c,0x76,0x20,0x69, + 0x6e,0x20,0x6e,0x65,0x78,0x74,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x6e, + 0x69,0x6c,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4d,0x2e, + 0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x28,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65, + 0x5f,0x70,0x72,0x69,0x6e,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6b,0x65,0x79,0x28,0x6b, + 0x29,0x2c,0x20,0x76,0x2c,0x20,0x70,0x72,0x6f,0x70,0x2c,0x20,0x6d,0x61,0x6b,0x65, + 0x5f,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x28,0x66,0x75,0x6c,0x6c,0x6e,0x61, + 0x6d,0x65,0x2c,0x20,0x6b,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x61,0x72,0x72,0x61,0x79,0x20,0x64,0x65,0x74,0x65,0x63,0x74,0x69, + 0x6f,0x6e,0x3a,0x20,0x6b,0x65,0x79,0x73,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20, + 0x62,0x65,0x20,0x61,0x63,0x63,0x65,0x73,0x73,0x69,0x62,0x6c,0x65,0x20,0x62,0x79, + 0x20,0x31,0x2e,0x2e,0x6e,0x20,0x6b,0x65,0x79,0x73,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x73,0x61,0x72,0x72,0x61,0x79,0x20,0x3d,0x20,0x69,0x73,0x61, + 0x72,0x72,0x61,0x79,0x20,0x61,0x6e,0x64,0x20,0x72,0x61,0x77,0x67,0x65,0x74,0x28, + 0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x29,0x20,0x7e,0x3d,0x20,0x6e,0x69,0x6c, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x20,0x3d,0x20,0x69,0x20,0x2b, + 0x20,0x31,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x2d, + 0x2d,0x20,0x65,0x6d,0x70,0x74,0x79,0x20,0x74,0x61,0x62,0x6c,0x65,0x73,0x20,0x61, + 0x72,0x65,0x20,0x63,0x6f,0x6e,0x73,0x69,0x64,0x65,0x72,0x65,0x64,0x20,0x61,0x73, + 0x20,0x74,0x61,0x62,0x6c,0x65,0x73,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x69, + 0x73,0x61,0x72,0x72,0x61,0x79,0x20,0x61,0x6e,0x64,0x20,0x69,0x20,0x3e,0x20,0x31, + 0x20,0x74,0x68,0x65,0x6e,0x20,0x70,0x72,0x6f,0x70,0x2e,0x61,0x74,0x74,0x72,0x2e, + 0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x22,0x73,0x65,0x71,0x75,0x65,0x6e,0x63,0x65, + 0x22,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x70,0x72,0x6f,0x70,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x4d,0x2e,0x69,0x6e, + 0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x5b,0x4d,0x55,0x4c,0x54,0x49,0x56,0x41, + 0x4c,0x5f,0x4d,0x54,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61, + 0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x6e,0x20,0x3d, + 0x3d,0x20,0x31,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x2d,0x2d,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x69,0x72,0x65,0x63, + 0x74,0x6c,0x79,0x20,0x74,0x68,0x65,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x61,0x73, + 0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74, + 0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5b,0x31,0x5d,0x2c, + 0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d, + 0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x77,0x72,0x61,0x70,0x20,0x76,0x61,0x6c,0x75, + 0x65,0x73,0x20,0x69,0x6e,0x73,0x69,0x64,0x65,0x20,0x61,0x20,0x6d,0x75,0x6c,0x74, + 0x69,0x76,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x65,0x72,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x72,0x6f, + 0x70,0x20,0x3d,0x20,0x4d,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e, + 0x61,0x6d,0x65,0x2c,0x20,0x22,0x6d,0x75,0x6c,0x74,0x69,0x76,0x61,0x6c,0x22,0x2c, + 0x20,0x22,0x22,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c, + 0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, + 0x66,0x20,0x6e,0x6f,0x74,0x20,0x70,0x72,0x6f,0x70,0x20,0x74,0x68,0x65,0x6e,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x69,0x6c,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x69,0x3d,0x31,0x2c,0x20, + 0x76,0x61,0x6c,0x75,0x65,0x2e,0x6e,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74, + 0x28,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x5f,0x70,0x72,0x69,0x6e,0x74,0x61, + 0x62,0x6c,0x65,0x5f,0x6b,0x65,0x79,0x28,0x69,0x29,0x2c,0x20,0x76,0x61,0x6c,0x75, + 0x65,0x5b,0x69,0x5d,0x2c,0x20,0x70,0x72,0x6f,0x70,0x2c,0x20,0x66,0x75,0x6c,0x6c, + 0x6e,0x61,0x6d,0x65,0x20,0x2e,0x2e,0x20,0x22,0x5b,0x22,0x20,0x2e,0x2e,0x20,0x69, + 0x20,0x2e,0x2e,0x20,0x22,0x5d,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x70,0x72,0x6f,0x70,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64, + 0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x20,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x20,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x49,0x6e,0x74,0x65, + 0x72,0x6e,0x61,0x6c,0x20,0x41,0x50,0x49,0x20,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x20,0x2d,0x2d,0x0a,0x0a, + 0x2d,0x2d,0x20,0x55,0x73,0x65,0x64,0x20,0x74,0x6f,0x20,0x69,0x6e,0x73,0x70,0x65, + 0x63,0x74,0x20,0x22,0x6d,0x75,0x6c,0x74,0x69,0x76,0x61,0x6c,0x22,0x20,0x6f,0x72, + 0x20,0x22,0x76,0x61,0x72,0x61,0x72,0x67,0x22,0x20,0x76,0x61,0x6c,0x75,0x65,0x73, + 0x2e,0x20,0x54,0x68,0x65,0x20,0x74,0x79,0x70,0x69,0x63,0x61,0x6c,0x20,0x75,0x73, + 0x65,0x20,0x69,0x73,0x20,0x74,0x6f,0x20,0x70,0x61,0x63,0x6b,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x28,0x73,0x29,0x20, + 0x69,0x6e,0x20,0x61,0x20,0x73,0x69,0x6e,0x67,0x6c,0x65,0x0a,0x2d,0x2d,0x20,0x76, + 0x61,0x6c,0x75,0x65,0x20,0x74,0x6f,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x2e, + 0x20,0x54,0x68,0x65,0x20,0x4d,0x75,0x6c,0x74,0x69,0x76,0x61,0x6c,0x20,0x69,0x6e, + 0x73,0x74,0x61,0x6e,0x63,0x65,0x73,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x70, + 0x61,0x73,0x73,0x65,0x64,0x20,0x74,0x6f,0x20,0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72, + 0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x61,0x73,0x20,0x61,0x20,0x73,0x69,0x6e,0x67, + 0x6c,0x65,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x74,0x68,0x65,0x79,0x20,0x77, + 0x69,0x6c,0x6c,0x20,0x62,0x65,0x0a,0x2d,0x2d,0x20,0x63,0x6f,0x72,0x72,0x65,0x63, + 0x74,0x6c,0x79,0x20,0x72,0x65,0x70,0x6f,0x72,0x74,0x65,0x64,0x20,0x74,0x6f,0x20, + 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x4d,0x2e,0x4d,0x75,0x6c,0x74,0x69,0x76,0x61,0x6c,0x28,0x2e,0x2e,0x2e, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x74, + 0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x7b,0x20,0x6e,0x3d,0x73,0x65, + 0x6c,0x65,0x63,0x74,0x28,0x22,0x23,0x22,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x2c,0x20, + 0x2e,0x2e,0x2e,0x20,0x7d,0x2c,0x20,0x4d,0x55,0x4c,0x54,0x49,0x56,0x41,0x4c,0x5f, + 0x4d,0x54,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x2d,0x20,0x4d,0x61,0x6b, + 0x65,0x73,0x20,0x61,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x66,0x6f, + 0x72,0x6d,0x20,0x61,0x20,0x6e,0x61,0x6d,0x65,0x2f,0x76,0x61,0x6c,0x75,0x65,0x20, + 0x70,0x61,0x69,0x72,0x20,0x28,0x61,0x6e,0x64,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61, + 0x6d,0x65,0x29,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x61,0x6e,0x20, + 0x2a,0x2a,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x2a,0x2a,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x61,0x6e,0x64,0x20,0x73,0x68,0x6f,0x75,0x6c, + 0x64,0x20,0x6e,0x6f,0x74,0x20,0x62,0x65,0x20,0x75,0x73,0x65,0x64,0x20,0x62,0x79, + 0x20,0x33,0x72,0x64,0x20,0x70,0x61,0x72,0x74,0x79,0x20,0x69,0x6e,0x73,0x70,0x65, + 0x63,0x74,0x6f,0x72,0x73,0x2e,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d, + 0x20,0x23,0x6e,0x75,0x6d,0x62,0x65,0x72,0x20,0x63,0x78,0x74,0x5f,0x69,0x64,0x20, + 0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x49,0x44,0x20,0x69,0x6e,0x20,0x77,0x68, + 0x69,0x63,0x68,0x20,0x74,0x68,0x69,0x73,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x72, + 0x65,0x73,0x69,0x64,0x65,0x73,0x20,0x28,0x77,0x6f,0x72,0x6b,0x61,0x72,0x6f,0x75, + 0x6e,0x64,0x20,0x62,0x75,0x67,0x20,0x33,0x35,0x32,0x33,0x31,0x36,0x29,0x0a,0x2d, + 0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x54, + 0x68,0x65,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x74,0x6f,0x20,0x64,0x65,0x62,0x75, + 0x67,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x6e,0x61,0x6d,0x65, + 0x20,0x54,0x68,0x65,0x20,0x6e,0x61,0x6d,0x65,0x20,0x61,0x73,0x73,0x6f,0x63,0x69, + 0x61,0x74,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c, + 0x20,0x70,0x61,0x73,0x73,0x65,0x64,0x20,0x74,0x68,0x72,0x6f,0x75,0x67,0x68,0x20, + 0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x2c,0x20,0x73,0x6f,0x20,0x69,0x74,0x20, + 0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x61,0x6e,0x79,0x74,0x68,0x69,0x6e,0x67,0x0a, + 0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x23,0x73,0x74,0x72,0x69,0x6e, + 0x67,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x20,0x41,0x20,0x4c,0x75,0x61, + 0x20,0x65,0x78,0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x20,0x65, + 0x76,0x61,0x6c,0x20,0x74,0x6f,0x20,0x67,0x65,0x74,0x20,0x74,0x68,0x61,0x74,0x20, + 0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x61,0x67,0x61,0x69,0x6e,0x20,0x28, + 0x69,0x66,0x20,0x6e,0x69,0x6c,0x2c,0x20,0x63,0x6f,0x6d,0x70,0x75,0x74,0x65,0x64, + 0x20,0x61,0x75,0x74,0x6f,0x6d,0x61,0x74,0x69,0x63,0x61,0x6c,0x6c,0x79,0x29,0x0a, + 0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x23,0x6e,0x75,0x6d,0x62,0x65, + 0x72,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x54,0x68,0x65,0x20,0x6d,0x61,0x78,0x69, + 0x6d,0x75,0x6d,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x64,0x65,0x70, + 0x74,0x68,0x20,0x28,0x72,0x65,0x63,0x75,0x72,0x73,0x69,0x76,0x65,0x20,0x63,0x61, + 0x6c,0x6c,0x73,0x29,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x23, + 0x6e,0x75,0x6d,0x62,0x65,0x72,0x20,0x70,0x61,0x67,0x65,0x73,0x69,0x7a,0x65,0x20, + 0x6d,0x61,0x78,0x69,0x6d,0x75,0x6d,0x20,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e, + 0x20,0x74,0x6f,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x0a,0x2d,0x2d,0x20,0x40, + 0x70,0x61,0x72,0x61,0x6d,0x20,0x23,0x6e,0x75,0x6d,0x62,0x65,0x72,0x20,0x70,0x61, + 0x67,0x65,0x20,0x54,0x68,0x65,0x20,0x70,0x61,0x67,0x65,0x20,0x74,0x6f,0x20,0x67, + 0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x20,0x28,0x30,0x20,0x62,0x61,0x73,0x65,0x64, + 0x29,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x23,0x6e,0x75,0x6d, + 0x62,0x65,0x72,0x20,0x73,0x69,0x7a,0x65,0x5f,0x6c,0x69,0x6d,0x69,0x74,0x20,0x4f, + 0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x2c,0x20,0x69,0x66,0x20,0x73,0x65,0x74,0x2c, + 0x20,0x74,0x68,0x65,0x20,0x6d,0x61,0x78,0x69,0x6d,0x75,0x6d,0x20,0x73,0x69,0x7a, + 0x65,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20, + 0x72,0x65,0x70,0x72,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x28, + 0x69,0x6e,0x20,0x62,0x79,0x74,0x65,0x73,0x29,0x0a,0x2d,0x2d,0x20,0x40,0x70,0x61, + 0x72,0x61,0x6d,0x20,0x23,0x62,0x6f,0x6f,0x6c,0x65,0x61,0x6e,0x20,0x73,0x61,0x66, + 0x65,0x5f,0x6e,0x61,0x6d,0x65,0x20,0x49,0x66,0x20,0x74,0x72,0x75,0x65,0x2c,0x20, + 0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x65,0x6e,0x63,0x6f,0x64,0x65,0x20, + 0x74,0x68,0x65,0x20,0x6e,0x61,0x6d,0x65,0x20,0x61,0x73,0x20,0x74,0x61,0x62,0x6c, + 0x65,0x20,0x6b,0x65,0x79,0x0a,0x2d,0x2d,0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x23,0x44,0x42,0x47,0x50,0x50,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x72, + 0x6f,0x6f,0x74,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0a,0x2d,0x2d,0x20, + 0x40,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x70,0x61,0x72,0x65,0x6e, + 0x74,0x3d,0x23,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e,0x74,0x72, + 0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x5d,0x20,0x6d,0x61,0x6b,0x65,0x5f, + 0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x0a,0x2d,0x2d,0x54,0x4f,0x44,0x4f,0x20, + 0x42,0x55,0x47,0x20,0x45,0x43,0x4c,0x49,0x50,0x53,0x45,0x20,0x54,0x4f,0x4f,0x4c, + 0x53,0x4c,0x49,0x4e,0x55,0x58,0x2d,0x39,0x39,0x20,0x33,0x35,0x32,0x33,0x31,0x36, + 0x20,0x3a,0x20,0x61,0x73,0x20,0x61,0x20,0x77,0x6f,0x72,0x6b,0x61,0x72,0x6f,0x75, + 0x6e,0x64,0x2c,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x69,0x73,0x20,0x65, + 0x6e,0x63,0x6f,0x64,0x65,0x64,0x20,0x69,0x6e,0x74,0x6f,0x20,0x74,0x68,0x65,0x20, + 0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74, + 0x79,0x0a,0x4d,0x2e,0x6d,0x61,0x6b,0x65,0x5f,0x70,0x72,0x6f,0x70,0x65,0x72,0x74, + 0x79,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x63,0x78,0x74, + 0x5f,0x69,0x64,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x6e,0x61,0x6d,0x65, + 0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x64,0x65,0x70,0x74, + 0x68,0x2c,0x20,0x70,0x61,0x67,0x65,0x73,0x69,0x7a,0x65,0x2c,0x20,0x70,0x61,0x67, + 0x65,0x2c,0x20,0x73,0x69,0x7a,0x65,0x5f,0x6c,0x69,0x6d,0x69,0x74,0x2c,0x20,0x73, + 0x61,0x66,0x65,0x5f,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x66,0x75, + 0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d, + 0x65,0x20,0x6f,0x72,0x20,0x22,0x28,0x2e,0x2e,0x2e,0x29,0x5b,0x22,0x20,0x2e,0x2e, + 0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x5f,0x6b,0x65,0x79,0x28,0x6e,0x61, + 0x6d,0x65,0x29,0x20,0x2e,0x2e,0x20,0x22,0x5d,0x22,0x0a,0x20,0x20,0x20,0x20,0x69, + 0x66,0x20,0x6e,0x6f,0x74,0x20,0x73,0x61,0x66,0x65,0x5f,0x6e,0x61,0x6d,0x65,0x20, + 0x74,0x68,0x65,0x6e,0x20,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x67,0x65,0x6e,0x65, + 0x72,0x61,0x74,0x65,0x5f,0x70,0x72,0x69,0x6e,0x74,0x61,0x62,0x6c,0x65,0x5f,0x6b, + 0x65,0x79,0x28,0x6e,0x61,0x6d,0x65,0x29,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x6f, + 0x72,0x20,0x3d,0x20,0x63,0x6f,0x63,0x72,0x65,0x61,0x74,0x65,0x28,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d, + 0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76, + 0x61,0x6c,0x75,0x65,0x2c,0x20,0x6e,0x69,0x6c,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e, + 0x61,0x6d,0x65,0x29,0x20,0x65,0x6e,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x70,0x72,0x6f,0x70,0x73,0x74,0x61,0x63,0x6b,0x20,0x3d,0x20, + 0x7b,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x6f, + 0x6f,0x74,0x6e,0x6f,0x64,0x65,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x63,0x61,0x74,0x63,0x68,0x74,0x68,0x69,0x73,0x20,0x3d,0x20,0x74,0x72,0x75, + 0x65,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6e,0x6f,0x64,0x65, + 0x73,0x74,0x6f,0x73,0x6b,0x69,0x70,0x20,0x3d,0x20,0x70,0x61,0x67,0x65,0x20,0x2a, + 0x20,0x70,0x61,0x67,0x65,0x73,0x69,0x7a,0x65,0x20,0x2d,0x2d,0x20,0x6e,0x6f,0x64, + 0x65,0x73,0x20,0x74,0x6f,0x20,0x73,0x6b,0x69,0x70,0x20,0x61,0x74,0x20,0x72,0x6f, + 0x6f,0x74,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x74,0x6f,0x20,0x72,0x65,0x73,0x70, + 0x65,0x63,0x74,0x20,0x70,0x61,0x67,0x69,0x6e,0x61,0x74,0x69,0x6f,0x6e,0x0a,0x20, + 0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d, + 0x65,0x5f,0x70,0x72,0x65,0x66,0x69,0x78,0x20,0x3d,0x20,0x74,0x6f,0x73,0x74,0x72, + 0x69,0x6e,0x67,0x28,0x63,0x78,0x74,0x5f,0x69,0x64,0x29,0x2e,0x2e,0x22,0x7c,0x22, + 0x0a,0x0a,0x20,0x20,0x20,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x74,0x72,0x75,0x65, + 0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x73,0x75,0x63,0x63,0x65,0x73,0x2c,0x20,0x6e,0x61,0x6d,0x65,0x2c,0x20, + 0x64,0x61,0x74,0x61,0x74,0x79,0x70,0x65,0x2c,0x20,0x72,0x65,0x70,0x72,0x2c,0x20, + 0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65, + 0x20,0x3d,0x20,0x61,0x73,0x73,0x65,0x72,0x74,0x28,0x63,0x6f,0x72,0x65,0x73,0x75, + 0x6d,0x65,0x28,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x6f,0x72,0x2c,0x20,0x63,0x61, + 0x74,0x63,0x68,0x74,0x68,0x69,0x73,0x20,0x61,0x6e,0x64,0x20,0x70,0x72,0x6f,0x70, + 0x73,0x74,0x61,0x63,0x6b,0x5b,0x23,0x70,0x72,0x6f,0x70,0x73,0x74,0x61,0x63,0x6b, + 0x5d,0x20,0x6f,0x72,0x20,0x6e,0x69,0x6c,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x66,0x69,0x6e,0x61,0x6c,0x69,0x7a,0x65,0x20,0x61, + 0x6e,0x64,0x20,0x70,0x6f,0x70,0x20,0x61,0x6c,0x6c,0x20,0x66,0x69,0x6e,0x69,0x73, + 0x68,0x65,0x64,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x69,0x65,0x73,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x70,0x72,0x6f, + 0x70,0x73,0x74,0x61,0x63,0x6b,0x5b,0x23,0x70,0x72,0x6f,0x70,0x73,0x74,0x61,0x63, + 0x6b,0x5d,0x20,0x7e,0x3d,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x20,0x64,0x6f,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x74,0x6f,0x70,0x6f,0x70,0x20,0x3d,0x20,0x70,0x72,0x6f,0x70,0x73,0x74, + 0x61,0x63,0x6b,0x5b,0x23,0x70,0x72,0x6f,0x70,0x73,0x74,0x61,0x63,0x6b,0x5d,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x6f,0x70,0x6f, + 0x70,0x2e,0x61,0x74,0x74,0x72,0x2e,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x20, + 0x3d,0x20,0x75,0x74,0x69,0x6c,0x2e,0x72,0x61,0x77,0x62,0x36,0x34,0x28,0x66,0x75, + 0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x5f,0x70,0x72,0x65,0x66,0x69,0x78,0x20,0x2e,0x2e, + 0x20,0x74,0x6f,0x70,0x6f,0x70,0x2e,0x61,0x74,0x74,0x72,0x2e,0x66,0x75,0x6c,0x6c, + 0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x70,0x72,0x6f,0x70,0x73,0x74,0x61,0x63,0x6b,0x5b,0x23,0x70,0x72,0x6f, + 0x70,0x73,0x74,0x61,0x63,0x6b,0x5d,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x63,0x6f,0x73,0x74,0x61,0x74,0x75,0x73,0x28,0x67,0x65, + 0x6e,0x65,0x72,0x61,0x74,0x6f,0x72,0x29,0x20,0x3d,0x3d,0x20,0x22,0x64,0x65,0x61, + 0x64,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x6e, + 0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x70,0x72,0x6f,0x70,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x70,0x72,0x6f,0x70,0x65, + 0x72,0x74,0x79,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x20,0x3d,0x20, + 0x30,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70, + 0x61,0x67,0x65,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x70,0x61,0x67,0x65,0x73,0x69, + 0x7a,0x65,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x70,0x61,0x67,0x65,0x20,0x3d,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x20,0x61,0x6e, + 0x64,0x20,0x30,0x20,0x6f,0x72,0x20,0x70,0x61,0x67,0x65,0x2c,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x79,0x70,0x65,0x20,0x3d,0x20, + 0x64,0x61,0x74,0x61,0x74,0x79,0x70,0x65,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x6e,0x61,0x6d, + 0x65,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, + 0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61, + 0x6d,0x65,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x22,0x62,0x61,0x73,0x65, + 0x36,0x34,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x23,0x72,0x65,0x70,0x72,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x74,0x69,0x6c,0x2e,0x62,0x36,0x34,0x28,0x73, + 0x69,0x7a,0x65,0x5f,0x6c,0x69,0x6d,0x69,0x74,0x20,0x61,0x6e,0x64,0x20,0x72,0x65, + 0x70,0x72,0x3a,0x73,0x75,0x62,0x28,0x31,0x2c,0x20,0x73,0x69,0x7a,0x65,0x5f,0x6c, + 0x69,0x6d,0x69,0x74,0x29,0x20,0x6f,0x72,0x20,0x72,0x65,0x70,0x72,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x20,0x74,0x68,0x65,0x6e, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x72, + 0x65,0x6e,0x74,0x2e,0x61,0x74,0x74,0x72,0x2e,0x63,0x68,0x69,0x6c,0x64,0x72,0x65, + 0x6e,0x20,0x3d,0x20,0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2e,0x61,0x74,0x74,0x72,0x2e,0x6e,0x75, + 0x6d,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x20,0x3d,0x20,0x28,0x70,0x61,0x72, + 0x65,0x6e,0x74,0x2e,0x61,0x74,0x74,0x72,0x2e,0x6e,0x75,0x6d,0x63,0x68,0x69,0x6c, + 0x64,0x72,0x65,0x6e,0x20,0x6f,0x72,0x20,0x30,0x29,0x20,0x2b,0x20,0x31,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x74,0x61, + 0x6b,0x65,0x20,0x70,0x61,0x67,0x69,0x6e,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e, + 0x74,0x6f,0x20,0x61,0x63,0x63,0x6f,0x6e,0x74,0x20,0x74,0x6f,0x20,0x6b,0x6e,0x6f, + 0x77,0x20,0x69,0x66,0x20,0x6e,0x6f,0x64,0x65,0x20,0x6e,0x65,0x65,0x64,0x73,0x20, + 0x74,0x6f,0x20,0x62,0x65,0x20,0x63,0x61,0x74,0x63,0x68,0x65,0x64,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x61,0x74,0x63,0x68,0x74, + 0x68,0x69,0x73,0x20,0x3d,0x20,0x23,0x70,0x61,0x72,0x65,0x6e,0x74,0x20,0x3c,0x3d, + 0x20,0x70,0x61,0x67,0x65,0x73,0x69,0x7a,0x65,0x20,0x61,0x6e,0x64,0x20,0x23,0x70, + 0x72,0x6f,0x70,0x73,0x74,0x61,0x63,0x6b,0x20,0x3c,0x3d,0x20,0x64,0x65,0x70,0x74, + 0x68,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x20,0x3d,0x3d,0x20,0x72,0x6f,0x6f,0x74,0x6e, + 0x6f,0x64,0x65,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x61,0x74,0x63,0x68,0x74,0x68, + 0x69,0x73,0x20,0x3d,0x20,0x63,0x61,0x74,0x63,0x68,0x74,0x68,0x69,0x73,0x20,0x61, + 0x6e,0x64,0x20,0x6e,0x6f,0x64,0x65,0x73,0x74,0x6f,0x73,0x6b,0x69,0x70,0x20,0x3c, + 0x3d,0x20,0x30,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6e,0x6f,0x64,0x65,0x73,0x74,0x6f,0x73,0x6b,0x69,0x70,0x20, + 0x3d,0x20,0x6e,0x6f,0x64,0x65,0x73,0x74,0x6f,0x73,0x6b,0x69,0x70,0x20,0x2d,0x20, + 0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e, + 0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d, + 0x20,0x61,0x64,0x64,0x20,0x6e,0x6f,0x64,0x65,0x20,0x74,0x6f,0x20,0x74,0x72,0x65, + 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x63,0x61,0x74,0x63,0x68,0x74,0x68,0x69,0x73,0x20,0x74,0x68,0x65,0x6e,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61, + 0x72,0x65,0x6e,0x74,0x5b,0x23,0x70,0x61,0x72,0x65,0x6e,0x74,0x20,0x2b,0x20,0x31, + 0x5d,0x20,0x3d,0x20,0x70,0x72,0x6f,0x70,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x72,0x6f,0x70,0x73,0x74,0x61,0x63,0x6b, + 0x5b,0x23,0x70,0x72,0x6f,0x70,0x73,0x74,0x61,0x63,0x6b,0x20,0x2b,0x20,0x31,0x5d, + 0x20,0x3d,0x20,0x70,0x72,0x6f,0x70,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x72,0x6f,0x6f,0x74,0x6e,0x6f,0x64,0x65,0x20,0x3d,0x20,0x70,0x72,0x6f,0x70, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x61,0x74, + 0x63,0x68,0x74,0x68,0x69,0x73,0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x72,0x6f,0x70,0x73,0x74, + 0x61,0x63,0x6b,0x5b,0x23,0x70,0x72,0x6f,0x70,0x73,0x74,0x61,0x63,0x6b,0x20,0x2b, + 0x20,0x31,0x5d,0x20,0x3d,0x20,0x70,0x72,0x6f,0x70,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a, + 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x6f,0x6f,0x74,0x6e, + 0x6f,0x64,0x65,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x4d,0x0a,0x0a,0x65,0x6e,0x64,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x45,0x6e,0x64,0x20,0x6f, + 0x66,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, + 0x2e,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x0a,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a, + 0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x0a,0x2d,0x2d,0x20,0x20,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x64,0x65,0x62, + 0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x75,0x67,0x69,0x6e,0x73,0x2e,0x66,0x66, + 0x69,0x0a,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x2e,0x70,0x72,0x65,0x6c,0x6f,0x61, + 0x64,0x5b,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x75,0x67, + 0x69,0x6e,0x73,0x2e,0x66,0x66,0x69,0x22,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x70, + 0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x32,0x30,0x31,0x32,0x2d, + 0x32,0x30,0x31,0x33,0x20,0x4a,0x75,0x6c,0x69,0x65,0x6e,0x20,0x44,0x65,0x73,0x67, + 0x61,0x74,0x73,0x0a,0x2d,0x2d,0x20,0x41,0x6c,0x6c,0x20,0x72,0x69,0x67,0x68,0x74, + 0x73,0x20,0x72,0x65,0x73,0x65,0x72,0x76,0x65,0x64,0x2e,0x20,0x54,0x68,0x69,0x73, + 0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65, + 0x20,0x61,0x63,0x63,0x6f,0x6d,0x70,0x61,0x6e,0x79,0x69,0x6e,0x67,0x20,0x6d,0x61, + 0x74,0x65,0x72,0x69,0x61,0x6c,0x73,0x0a,0x2d,0x2d,0x20,0x61,0x72,0x65,0x20,0x6d, + 0x61,0x64,0x65,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x75,0x6e, + 0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x74,0x65,0x72,0x6d,0x73,0x20,0x6f,0x66, + 0x20,0x74,0x68,0x65,0x20,0x45,0x63,0x6c,0x69,0x70,0x73,0x65,0x20,0x50,0x75,0x62, + 0x6c,0x69,0x63,0x20,0x4c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x76,0x31,0x2e,0x30, + 0x0a,0x2d,0x2d,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70, + 0x61,0x6e,0x69,0x65,0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x64,0x69,0x73,0x74,0x72, + 0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x61,0x6e,0x64,0x20,0x69,0x73,0x20, + 0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x61,0x74,0x0a,0x2d,0x2d,0x20, + 0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x65,0x63,0x6c,0x69,0x70, + 0x73,0x65,0x2e,0x6f,0x72,0x67,0x2f,0x6c,0x65,0x67,0x61,0x6c,0x2f,0x65,0x70,0x6c, + 0x2d,0x76,0x31,0x30,0x2e,0x68,0x74,0x6d,0x6c,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20, + 0x43,0x6f,0x6e,0x74,0x72,0x69,0x62,0x75,0x74,0x6f,0x72,0x73,0x3a,0x0a,0x2d,0x2d, + 0x20,0x20,0x20,0x20,0x20,0x4a,0x75,0x6c,0x69,0x65,0x6e,0x20,0x44,0x65,0x73,0x67, + 0x61,0x74,0x73,0x20,0x2d,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x20,0x41,0x50, + 0x49,0x20,0x61,0x6e,0x64,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61, + 0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x4c,0x75,0x61,0x4a,0x49,0x54,0x20,0x63, + 0x64,0x61,0x74,0x61,0x20,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69, + 0x6f,0x6e,0x20,0x6c,0x69,0x62,0x72,0x61,0x72,0x79,0x2e,0x0a,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x2d,0x2d,0x20, + 0x6b,0x6e,0x6f,0x77,0x6e,0x20,0x69,0x73,0x73,0x75,0x65,0x73,0x3a,0x0a,0x2d,0x2d, + 0x20,0x20,0x2a,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x20,0x61, + 0x72,0x65,0x20,0x64,0x65,0x2d,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x64, + 0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x69,0x66,0x20,0x69,0x6e,0x73,0x70,0x65,0x63, + 0x74,0x5f,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x20,0x69,0x73,0x20, + 0x75,0x6e,0x73,0x65,0x74,0x0a,0x2d,0x2d,0x20,0x20,0x2a,0x20,0x69,0x73,0x20,0x61, + 0x75,0x74,0x6f,0x6d,0x61,0x74,0x69,0x63,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72, + 0x20,0x61,0x6e,0x64,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x64, + 0x65,0x2d,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x69,0x6e,0x67,0x20,0x69,0x73, + 0x20,0x70,0x6f,0x73,0x73,0x69,0x62,0x6c,0x65,0x20,0x3f,0x0a,0x2d,0x2d,0x20,0x20, + 0x20,0x20,0x28,0x6f,0x6e,0x6c,0x79,0x20,0x66,0x6f,0x72,0x20,0x66,0x69,0x72,0x73, + 0x74,0x20,0x69,0x74,0x65,0x6d,0x20,0x69,0x6e,0x20,0x63,0x61,0x73,0x65,0x20,0x6f, + 0x66,0x20,0x61,0x72,0x72,0x61,0x79,0x73,0x29,0x2e,0x20,0x50,0x6f,0x73,0x73,0x69, + 0x62,0x6c,0x65,0x20,0x6c,0x65,0x61,0x64,0x73,0x3a,0x0a,0x2d,0x2d,0x20,0x20,0x20, + 0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x73,0x74,0x61,0x63,0x6b,0x6f,0x76,0x65, + 0x72,0x66,0x6c,0x6f,0x77,0x2e,0x63,0x6f,0x6d,0x2f,0x71,0x75,0x65,0x73,0x74,0x69, + 0x6f,0x6e,0x73,0x2f,0x37,0x31,0x33,0x34,0x35,0x39,0x30,0x2f,0x68,0x6f,0x77,0x2d, + 0x74,0x6f,0x2d,0x74,0x65,0x73,0x74,0x2d,0x69,0x66,0x2d,0x61,0x6e,0x2d,0x61,0x64, + 0x64,0x72,0x65,0x73,0x73,0x2d,0x69,0x73,0x2d,0x72,0x65,0x61,0x64,0x61,0x62,0x6c, + 0x65,0x2d,0x69,0x6e,0x2d,0x6c,0x69,0x6e,0x75,0x78,0x2d,0x75,0x73,0x65,0x72,0x73, + 0x70,0x61,0x63,0x65,0x2d,0x61,0x70,0x70,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x68, + 0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x73,0x6f,0x66,0x74,0x77,0x61, + 0x72,0x65,0x76,0x65,0x72,0x69,0x66,0x79,0x2e,0x63,0x6f,0x6d,0x2f,0x62,0x6c,0x6f, + 0x67,0x2f,0x3f,0x70,0x3d,0x33,0x31,0x39,0x0a,0x2d,0x2d,0x20,0x20,0x2a,0x20,0x77, + 0x68,0x65,0x6e,0x20,0x73,0x65,0x74,0x74,0x69,0x6e,0x67,0x20,0x61,0x20,0x76,0x61, + 0x6c,0x75,0x65,0x20,0x66,0x72,0x6f,0x6d,0x20,0x45,0x63,0x6c,0x69,0x70,0x73,0x65, + 0x2c,0x20,0x74,0x68,0x65,0x20,0x74,0x79,0x70,0x65,0x20,0x69,0x73,0x20,0x73,0x6f, + 0x6d,0x65,0x74,0x69,0x6d,0x65,0x73,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x64,0x20, + 0x28,0x65,0x2e,0x67,0x2e,0x20,0x69,0x6e,0x74,0x20,0x3d,0x3e,0x20,0x6e,0x75,0x6d, + 0x62,0x65,0x72,0x29,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x6e,0x74,0x72, + 0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x72,0x65,0x71,0x75, + 0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x69,0x6e, + 0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x22,0x0a,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x20,0x3d,0x20,0x72,0x65,0x71, + 0x75,0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70, + 0x6c,0x75,0x67,0x69,0x6e,0x73,0x2e,0x66,0x66,0x69,0x2e,0x72,0x65,0x66,0x6c,0x65, + 0x63,0x74,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x66,0x69,0x20,0x3d,0x20, + 0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x66,0x66,0x69,0x22,0x0a,0x0a,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x2c,0x20,0x74, + 0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x2c,0x20,0x74,0x79,0x70,0x65,0x2c,0x20,0x61, + 0x73,0x73,0x65,0x72,0x74,0x2c,0x20,0x73,0x66,0x6f,0x72,0x6d,0x61,0x74,0x2c,0x20, + 0x74,0x63,0x6f,0x6e,0x63,0x61,0x74,0x20,0x3d,0x20,0x74,0x6f,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x2c,0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x2c,0x20,0x74,0x79, + 0x70,0x65,0x2c,0x20,0x61,0x73,0x73,0x65,0x72,0x74,0x2c,0x20,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x2e,0x66,0x6f,0x72,0x6d,0x61,0x74,0x2c,0x20,0x74,0x61,0x62,0x6c,0x65, + 0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x4d, + 0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x0a,0x2d,0x2d,0x2d,0x20,0x57,0x68,0x65,0x74, + 0x68,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63, + 0x65,0x20,0x74,0x79,0x70,0x65,0x73,0x20,0x61,0x72,0x65,0x20,0x69,0x6e,0x73,0x70, + 0x65,0x63,0x74,0x65,0x64,0x2e,0x20,0x55,0x73,0x75,0x61,0x6c,0x6c,0x79,0x20,0x72, + 0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64, + 0x20,0x62,0x65,0x20,0x73,0x61,0x66,0x65,0x20,0x28,0x61,0x74,0x20,0x6c,0x65,0x61, + 0x73,0x74,0x20,0x61,0x20,0x62,0x69,0x74,0x0a,0x2d,0x2d,0x20,0x73,0x61,0x66,0x65, + 0x72,0x20,0x74,0x68,0x61,0x6e,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x73,0x29, + 0x20,0x73,0x6f,0x20,0x74,0x68,0x65,0x79,0x20,0x61,0x72,0x65,0x20,0x69,0x6e,0x73, + 0x70,0x65,0x63,0x74,0x65,0x64,0x2e,0x20,0x49,0x66,0x20,0x61,0x20,0x72,0x65,0x66, + 0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x70,0x6f,0x69,0x6e,0x74,0x73,0x20,0x74,0x6f, + 0x20,0x75,0x6e,0x73,0x61,0x66,0x65,0x20,0x6d,0x65,0x6d,0x6f,0x72,0x79,0x2c,0x20, + 0x74,0x68,0x65,0x20,0x77,0x68,0x6f,0x6c,0x65,0x0a,0x2d,0x2d,0x20,0x70,0x72,0x6f, + 0x67,0x72,0x61,0x6d,0x20,0x63,0x6f,0x75,0x6c,0x64,0x20,0x63,0x72,0x61,0x73,0x68, + 0x20,0x21,0x0a,0x2d,0x2d,0x20,0x49,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x66,0x65, + 0x61,0x74,0x75,0x72,0x65,0x20,0x69,0x73,0x20,0x64,0x69,0x73,0x61,0x62,0x6c,0x65, + 0x64,0x2c,0x20,0x64,0x65,0x65,0x70,0x6c,0x79,0x20,0x6e,0x65,0x73,0x74,0x65,0x64, + 0x20,0x43,0x20,0x74,0x79,0x70,0x65,0x73,0x20,0x77,0x69,0x6c,0x6c,0x20,0x6e,0x6f, + 0x74,0x20,0x62,0x65,0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x65,0x64,0x20,0x63, + 0x6f,0x72,0x72,0x65,0x63,0x74,0x6c,0x79,0x20,0x61,0x73,0x20,0x65,0x76,0x61,0x6c, + 0x75,0x61,0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d,0x20,0x68,0x61,0x73,0x20,0x61,0x20, + 0x72,0x65,0x63,0x75,0x72,0x73,0x69,0x6f,0x6e,0x20,0x6c,0x69,0x6d,0x69,0x74,0x2c, + 0x20,0x61,0x6e,0x79,0x20,0x66,0x75,0x72,0x74,0x68,0x65,0x72,0x20,0x65,0x76,0x61, + 0x6c,0x75,0x61,0x74,0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x64,0x6f,0x6e,0x65,0x20, + 0x74,0x68,0x72,0x6f,0x75,0x67,0x68,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63, + 0x65,0x73,0x2e,0x0a,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x5f,0x72,0x65, + 0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x0a, + 0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20, + 0x6d,0x61,0x6b,0x65,0x5f,0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x28,0x72,0x65, + 0x66,0x63,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74, + 0x20,0x3d,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x77,0x68,0x61,0x74,0x0a,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x74,0x20,0x3d,0x3d,0x20,0x22,0x69,0x6e,0x74,0x22,0x20, + 0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x72,0x65,0x66,0x63,0x74,0x2e,0x62,0x6f,0x6f,0x6c,0x20,0x74,0x68,0x65,0x6e,0x20, + 0x74,0x20,0x3d,0x20,0x22,0x62,0x6f,0x6f,0x6c,0x22,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x75,0x73,0x65,0x20,0x43,0x39,0x39,0x20,0x74, + 0x79,0x70,0x65,0x20,0x6e,0x6f,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x74,0x6f,0x20, + 0x67,0x69,0x76,0x65,0x20,0x6d,0x6f,0x72,0x65,0x20,0x64,0x65,0x74,0x61,0x69,0x6c, + 0x73,0x20,0x61,0x62,0x6f,0x75,0x74,0x20,0x61,0x63,0x75,0x74,0x61,0x6c,0x20,0x74, + 0x79,0x70,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x74,0x20,0x3d,0x20,0x28,0x72,0x65,0x66,0x63,0x74,0x2e,0x75,0x6e,0x73,0x69,0x67, + 0x6e,0x65,0x64,0x20,0x61,0x6e,0x64,0x20,0x22,0x75,0x69,0x6e,0x74,0x22,0x20,0x6f, + 0x72,0x20,0x22,0x69,0x6e,0x74,0x22,0x29,0x20,0x2e,0x2e,0x20,0x74,0x6f,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x28,0x72,0x65,0x66,0x63,0x74,0x2e,0x73,0x69,0x7a,0x65,0x20, + 0x2a,0x20,0x38,0x29,0x20,0x2e,0x2e,0x20,0x22,0x5f,0x74,0x22,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, + 0x65,0x69,0x66,0x20,0x74,0x20,0x3d,0x3d,0x20,0x22,0x66,0x6c,0x6f,0x61,0x74,0x22, + 0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d, + 0x20,0x61,0x73,0x73,0x75,0x6d,0x65,0x20,0x49,0x45,0x45,0x45,0x37,0x35,0x34,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x20,0x20,0x20,0x20,0x72, + 0x65,0x66,0x63,0x74,0x2e,0x73,0x69,0x7a,0x65,0x20,0x3d,0x3d,0x20,0x20,0x38,0x20, + 0x74,0x68,0x65,0x6e,0x20,0x74,0x20,0x3d,0x20,0x22,0x64,0x6f,0x75,0x62,0x6c,0x65, + 0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66, + 0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x73,0x69,0x7a,0x65,0x20,0x3d,0x3d,0x20,0x31, + 0x36,0x20,0x74,0x68,0x65,0x6e,0x20,0x74,0x20,0x3d,0x20,0x22,0x6c,0x6f,0x6e,0x67, + 0x20,0x64,0x6f,0x75,0x62,0x6c,0x65,0x22,0x20,0x2d,0x2d,0x20,0x6e,0x6f,0x74,0x20, + 0x72,0x65,0x61,0x6c,0x6c,0x79,0x20,0x73,0x75,0x72,0x65,0x20,0x74,0x68,0x69,0x73, + 0x20,0x6f,0x6e,0x65,0x20,0x69,0x73,0x20,0x61,0x6c,0x77,0x61,0x79,0x73,0x20,0x74, + 0x72,0x75,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a, + 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x74,0x20,0x3d,0x3d,0x20, + 0x22,0x73,0x74,0x72,0x75,0x63,0x74,0x22,0x20,0x6f,0x72,0x20,0x74,0x20,0x3d,0x3d, + 0x20,0x22,0x65,0x6e,0x75,0x6d,0x22,0x20,0x6f,0x72,0x20,0x74,0x20,0x3d,0x3d,0x20, + 0x22,0x75,0x6e,0x69,0x6f,0x6e,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x74,0x20,0x3d,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x6e, + 0x61,0x6d,0x65,0x20,0x61,0x6e,0x64,0x20,0x28,0x74,0x20,0x2e,0x2e,0x20,0x22,0x20, + 0x22,0x20,0x2e,0x2e,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x6e,0x61,0x6d,0x65,0x29, + 0x20,0x6f,0x72,0x20,0x28,0x22,0x61,0x6e,0x6f,0x6e,0x79,0x6d,0x6f,0x75,0x73,0x20, + 0x22,0x2e,0x2e,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66, + 0x20,0x74,0x20,0x3d,0x3d,0x20,0x22,0x66,0x75,0x6e,0x63,0x22,0x20,0x74,0x68,0x65, + 0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x20,0x3d,0x20,0x22,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x28,0x46,0x46,0x49,0x29,0x22,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x74,0x20,0x3d,0x3d,0x20,0x22, + 0x70,0x74,0x72,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x74,0x20,0x3d,0x20,0x6d,0x61,0x6b,0x65,0x5f,0x74,0x79,0x70,0x65,0x6e, + 0x61,0x6d,0x65,0x28,0x72,0x65,0x66,0x63,0x74,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e, + 0x74,0x5f,0x74,0x79,0x70,0x65,0x29,0x20,0x2e,0x2e,0x20,0x22,0x2a,0x22,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x74,0x20,0x3d,0x3d,0x20,0x22, + 0x72,0x65,0x66,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x74,0x20,0x3d,0x20,0x6d,0x61,0x6b,0x65,0x5f,0x74,0x79,0x70,0x65,0x6e, + 0x61,0x6d,0x65,0x28,0x72,0x65,0x66,0x63,0x74,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e, + 0x74,0x5f,0x74,0x79,0x70,0x65,0x29,0x20,0x2e,0x2e,0x20,0x22,0x26,0x22,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x74,0x20,0x3d,0x3d,0x20,0x22, + 0x66,0x69,0x65,0x6c,0x64,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x6b,0x65,0x5f, + 0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x28,0x72,0x65,0x66,0x63,0x74,0x2e,0x74, + 0x79,0x70,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20, + 0x74,0x20,0x3d,0x3d,0x20,0x22,0x62,0x69,0x74,0x66,0x69,0x65,0x6c,0x64,0x22,0x20, + 0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x20,0x3d, + 0x20,0x28,0x72,0x65,0x66,0x63,0x74,0x2e,0x74,0x79,0x70,0x65,0x2e,0x75,0x6e,0x73, + 0x69,0x67,0x6e,0x65,0x64,0x20,0x61,0x6e,0x64,0x20,0x22,0x75,0x6e,0x73,0x69,0x67, + 0x6e,0x65,0x64,0x22,0x20,0x6f,0x72,0x20,0x22,0x73,0x69,0x67,0x6e,0x65,0x64,0x22, + 0x29,0x20,0x2e,0x2e,0x20,0x22,0x3a,0x22,0x20,0x2e,0x2e,0x20,0x74,0x6f,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x28,0x72,0x65,0x66,0x63,0x74,0x2e,0x73,0x69,0x7a,0x65,0x20, + 0x2a,0x20,0x38,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x66, + 0x63,0x74,0x20,0x3d,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x74,0x79,0x70,0x65,0x0a, + 0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x72,0x65,0x66,0x63,0x74,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x20,0x74,0x68,0x65,0x6e, + 0x20,0x74,0x20,0x3d,0x20,0x22,0x63,0x6f,0x6e,0x73,0x74,0x20,0x22,0x20,0x2e,0x2e, + 0x20,0x74,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x72,0x65, + 0x66,0x63,0x74,0x2e,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x20,0x74,0x68,0x65, + 0x6e,0x20,0x74,0x20,0x3d,0x20,0x22,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x20, + 0x22,0x20,0x2e,0x2e,0x20,0x74,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x20, + 0x69,0x66,0x20,0x63,0x64,0x61,0x74,0x61,0x6b,0x69,0x6e,0x64,0x20,0x69,0x73,0x20, + 0x75,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x2c,0x20,0x74,0x68,0x69,0x73,0x20,0x6f,0x6e, + 0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x63,0x61,0x6c,0x6c,0x65,0x64, + 0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x5f,0x69, + 0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x20,0x3d,0x20,0x69,0x6e,0x74,0x72,0x6f, + 0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74, + 0x6f,0x72,0x73,0x2e,0x6e,0x75,0x6d,0x62,0x65,0x72,0x0a,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x0a,0x0a,0x2d,0x2d,0x20,0x72,0x65,0x63, + 0x75,0x72,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x75,0x73,0x74,0x20,0x62,0x65,0x20,0x68, + 0x61,0x6e,0x64,0x6c,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x73,0x6f,0x6d,0x65, + 0x20,0x63,0x61,0x72,0x65,0x3a,0x20,0x69,0x66,0x20,0x77,0x65,0x20,0x63,0x61,0x6c, + 0x6c,0x20,0x72,0x65,0x67,0x75,0x6c,0x61,0x72,0x20,0x69,0x6e,0x74,0x72,0x6f,0x73, + 0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x0a, + 0x2d,0x2d,0x20,0x77,0x65,0x20,0x6d,0x61,0x79,0x20,0x63,0x72,0x65,0x61,0x74,0x65, + 0x20,0x62,0x6f,0x78,0x65,0x64,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65, + 0x73,0x20,0x6f,0x72,0x20,0x4c,0x75,0x61,0x20,0x6e,0x61,0x74,0x69,0x76,0x65,0x20, + 0x6f,0x62,0x6a,0x65,0x63,0x74,0x73,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x77,0x69, + 0x6c,0x6c,0x20,0x62,0x65,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x65,0x64,0x20, + 0x61,0x73,0x20,0x73,0x75,0x63,0x68,0x0a,0x2d,0x2d,0x20,0x28,0x6c,0x65,0x61,0x64, + 0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x77,0x72,0x6f,0x6e,0x67,0x20,0x74,0x79,0x70, + 0x65,0x20,0x6e,0x61,0x6d,0x65,0x73,0x29,0x2e,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x65,0x63,0x75,0x72,0x73,0x65, + 0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61, + 0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x2c,0x20, + 0x72,0x65,0x66,0x63,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x74,0x79, + 0x70,0x65,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x20,0x3d,0x3d,0x20,0x22,0x63,0x64, + 0x61,0x74,0x61,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74, + 0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61, + 0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x2c,0x20, + 0x72,0x65,0x66,0x63,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x72, + 0x6f,0x70,0x20,0x3d,0x20,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69, + 0x6f,0x6e,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x28,0x6e,0x61,0x6d,0x65,0x2c, + 0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20, + 0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x70,0x72,0x6f,0x70,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x72,0x6f,0x70,0x2e, + 0x61,0x74,0x74,0x72,0x2e,0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x6d,0x61,0x6b,0x65, + 0x5f,0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x28,0x72,0x65,0x66,0x63,0x74,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x72,0x6f,0x70, + 0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d, + 0x20,0x63,0x64,0x61,0x74,0x61,0x20,0x73,0x70,0x65,0x63,0x69,0x66,0x69,0x63,0x20, + 0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x0a,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x20,0x3d,0x20,0x7b,0x0a, + 0x20,0x20,0x20,0x20,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x3d,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75, + 0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e, + 0x61,0x6d,0x65,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x72,0x6f,0x70,0x20,0x3d, + 0x20,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x6d,0x61, + 0x6b,0x65,0x5f,0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x28,0x72,0x65,0x66,0x63, + 0x74,0x29,0x2c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x76,0x61,0x6c, + 0x75,0x65,0x29,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c, + 0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x20,0x63,0x68,0x69,0x6c,0x64, + 0x72,0x65,0x6e,0x2c,0x20,0x69,0x66,0x20,0x6e,0x65,0x65,0x64,0x65,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x70,0x72,0x6f,0x70,0x20,0x74, + 0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x66,0x6f,0x72,0x20,0x6d,0x65,0x6d,0x62,0x65,0x72,0x20,0x69,0x6e,0x20,0x72,0x65, + 0x66,0x63,0x74,0x3a,0x6d,0x65,0x6d,0x62,0x65,0x72,0x73,0x28,0x29,0x20,0x64,0x6f, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6d,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x6d, + 0x65,0x6d,0x62,0x65,0x72,0x2e,0x6e,0x61,0x6d,0x65,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x63,0x75,0x72, + 0x73,0x65,0x28,0x6d,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5b, + 0x6d,0x6e,0x61,0x6d,0x65,0x5d,0x2c,0x20,0x70,0x72,0x6f,0x70,0x2c,0x20,0x66,0x75, + 0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x20,0x2e,0x2e,0x20,0x73,0x66,0x6f,0x72,0x6d,0x61, + 0x74,0x28,0x27,0x5b,0x25,0x71,0x5d,0x27,0x2c,0x20,0x6d,0x6e,0x61,0x6d,0x65,0x29, + 0x2c,0x20,0x6d,0x65,0x6d,0x62,0x65,0x72,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x70,0x72,0x6f,0x70,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e, + 0x64,0x2c,0x0a,0x0a,0x20,0x20,0x20,0x20,0x61,0x72,0x72,0x61,0x79,0x20,0x3d,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76, + 0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75, + 0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x65,0x74,0x79, + 0x70,0x65,0x20,0x3d,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x65,0x6c,0x65,0x6d,0x65, + 0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x66,0x6f,0x72,0x20,0x56,0x4c,0x41,0x73,0x2c,0x20,0x72,0x65,0x66, + 0x6c,0x65,0x63,0x74,0x20,0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x67,0x69, + 0x76,0x65,0x20,0x73,0x69,0x7a,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x72,0x65,0x66, + 0x63,0x74,0x2e,0x73,0x69,0x7a,0x65,0x20,0x7e,0x3d,0x20,0x22,0x6e,0x6f,0x6e,0x65, + 0x22,0x20,0x61,0x6e,0x64,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x73,0x69,0x7a,0x65, + 0x20,0x6f,0x72,0x20,0x66,0x66,0x69,0x2e,0x73,0x69,0x7a,0x65,0x6f,0x66,0x28,0x76, + 0x61,0x6c,0x75,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x69, + 0x7a,0x65,0x20,0x3d,0x20,0x73,0x69,0x7a,0x65,0x20,0x61,0x6e,0x64,0x20,0x28,0x73, + 0x69,0x7a,0x65,0x20,0x2f,0x20,0x65,0x74,0x79,0x70,0x65,0x2e,0x73,0x69,0x7a,0x65, + 0x29,0x20,0x2d,0x2d,0x20,0x77,0x65,0x27,0x76,0x65,0x20,0x67,0x6f,0x74,0x20,0x74, + 0x68,0x65,0x20,0x62,0x79,0x74,0x65,0x20,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6e,0x6f, + 0x74,0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x20,0x63,0x6f,0x75,0x6e,0x74,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74, + 0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x6d,0x61,0x6b,0x65,0x5f,0x74, + 0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x28,0x65,0x74,0x79,0x70,0x65,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x72,0x6f, + 0x70,0x20,0x3d,0x20,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f, + 0x6e,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e,0x61,0x6d,0x65,0x2c, + 0x20,0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x20,0x2e,0x2e,0x20,0x22,0x5b,0x22, + 0x20,0x2e,0x2e,0x20,0x28,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x73,0x69, + 0x7a,0x65,0x29,0x20,0x6f,0x72,0x20,0x22,0x22,0x29,0x20,0x2e,0x2e,0x20,0x22,0x5d, + 0x22,0x2c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x76,0x61,0x6c,0x75, + 0x65,0x29,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c, + 0x6e,0x61,0x6d,0x65,0x29,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, + 0x66,0x20,0x70,0x72,0x6f,0x70,0x20,0x61,0x6e,0x64,0x20,0x73,0x69,0x7a,0x65,0x20, + 0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x66,0x6f,0x72,0x20,0x69,0x3d,0x30,0x2c,0x20,0x73,0x69,0x7a,0x65,0x2d,0x31, + 0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x64,0x78,0x20,0x3d,0x20, + 0x22,0x5b,0x22,0x2e,0x2e,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x69,0x29, + 0x2e,0x2e,0x22,0x5d,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x63,0x75,0x72,0x73,0x65,0x28,0x69,0x64, + 0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5b,0x69,0x5d,0x2c,0x20,0x70,0x72,0x6f, + 0x70,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x20,0x2e,0x2e,0x20,0x69, + 0x64,0x78,0x2c,0x20,0x65,0x74,0x79,0x70,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x72,0x6f,0x70,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x2c,0x0a,0x0a,0x20,0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x20,0x3d,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76, + 0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75, + 0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x61,0x72,0x67, + 0x73,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x66,0x6f,0x72,0x20,0x61,0x72,0x67,0x20,0x69,0x6e,0x20,0x72,0x65,0x66,0x63,0x74, + 0x3a,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x28,0x29,0x20,0x64,0x6f,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x72,0x67,0x73, + 0x5b,0x23,0x61,0x72,0x67,0x73,0x20,0x2b,0x20,0x31,0x5d,0x20,0x3d,0x20,0x6d,0x61, + 0x6b,0x65,0x5f,0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x28,0x61,0x72,0x67,0x2e, + 0x74,0x79,0x70,0x65,0x29,0x20,0x2e,0x2e,0x20,0x22,0x20,0x22,0x20,0x2e,0x2e,0x20, + 0x61,0x72,0x67,0x2e,0x6e,0x61,0x6d,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x76,0x61,0x72,0x61,0x72,0x67,0x20,0x74,0x68, + 0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61, + 0x72,0x67,0x73,0x5b,0x23,0x61,0x72,0x67,0x73,0x20,0x2b,0x20,0x31,0x5d,0x20,0x3d, + 0x20,0x22,0x2e,0x2e,0x2e,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x72,0x65,0x70,0x72,0x20,0x3d,0x20,0x6d,0x61,0x6b,0x65,0x5f,0x74,0x79, + 0x70,0x65,0x6e,0x61,0x6d,0x65,0x28,0x72,0x65,0x66,0x63,0x74,0x2e,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x5f,0x74,0x79,0x70,0x65,0x29,0x20,0x2e,0x2e,0x20,0x22,0x20,0x22, + 0x20,0x2e,0x2e,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x6e,0x61,0x6d,0x65,0x20,0x2e, + 0x2e,0x20,0x22,0x28,0x22,0x20,0x2e,0x2e,0x20,0x74,0x63,0x6f,0x6e,0x63,0x61,0x74, + 0x28,0x61,0x72,0x67,0x73,0x2c,0x20,0x22,0x2c,0x20,0x22,0x29,0x20,0x2e,0x2e,0x20, + 0x22,0x29,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e, + 0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20, + 0x6d,0x61,0x6b,0x65,0x5f,0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x28,0x72,0x65, + 0x66,0x63,0x74,0x29,0x2c,0x20,0x72,0x65,0x70,0x72,0x2c,0x20,0x70,0x61,0x72,0x65, + 0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x75,0x6d, + 0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x61,0x6d,0x65, + 0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c, + 0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x72,0x65,0x66,0x63,0x74, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x72,0x65,0x70,0x72,0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28, + 0x76,0x61,0x6c,0x75,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d, + 0x2d,0x20,0x74,0x72,0x79,0x20,0x74,0x6f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74, + 0x20,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x69, + 0x6e,0x74,0x6f,0x20,0x65,0x6e,0x75,0x6d,0x20,0x6e,0x61,0x6d,0x65,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x69,0x73, + 0x20,0x74,0x68,0x65,0x72,0x65,0x20,0x61,0x20,0x66,0x61,0x73,0x74,0x65,0x72,0x20, + 0x6d,0x65,0x74,0x68,0x6f,0x64,0x20,0x74,0x6f,0x20,0x6d,0x61,0x6b,0x65,0x20,0x69, + 0x74,0x20,0x3f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20, + 0x76,0x61,0x6c,0x20,0x69,0x6e,0x20,0x72,0x65,0x66,0x63,0x74,0x3a,0x76,0x61,0x6c, + 0x75,0x65,0x73,0x28,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x76,0x61,0x6c,0x2e,0x76,0x61,0x6c,0x75, + 0x65,0x20,0x3d,0x3d,0x20,0x72,0x65,0x70,0x72,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72, + 0x65,0x70,0x72,0x20,0x3d,0x20,0x76,0x61,0x6c,0x2e,0x6e,0x61,0x6d,0x65,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, + 0x72,0x65,0x61,0x6b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64, + 0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x6d,0x61, + 0x6b,0x65,0x5f,0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x28,0x72,0x65,0x66,0x63, + 0x74,0x29,0x2c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x72,0x65,0x70, + 0x72,0x29,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c, + 0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x0a, + 0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69, + 0x6f,0x6e,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20, + 0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65, + 0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x2d,0x2d,0x20,0x74,0x68,0x69,0x73,0x20,0x6d,0x61,0x79,0x20,0x62,0x65,0x20, + 0x75,0x6e,0x73,0x61,0x66,0x65,0x2c,0x20,0x73,0x65,0x65,0x20,0x69,0x6e,0x73,0x70, + 0x65,0x63,0x74,0x5f,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x20,0x73, + 0x65,0x74,0x74,0x69,0x6e,0x67,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20, + 0x6d,0x61,0x6b,0x65,0x5f,0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x28,0x72,0x65, + 0x66,0x63,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x6e,0x6f,0x74,0x20,0x4d,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x5f,0x72,0x65, + 0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x74,0x79, + 0x70,0x65,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67, + 0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c, + 0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x72,0x6f,0x70,0x20,0x3d,0x20,0x72,0x65,0x63, + 0x75,0x72,0x73,0x65,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65, + 0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61, + 0x6d,0x65,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x65,0x6c,0x65,0x6d,0x65,0x6e, + 0x74,0x5f,0x74,0x79,0x70,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x70,0x72,0x6f,0x70,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x72,0x6f,0x70,0x2e,0x61,0x74, + 0x74,0x72,0x2e,0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x74,0x79,0x70,0x65,0x6e,0x61, + 0x6d,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x72, + 0x6f,0x70,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x0a,0x20,0x20,0x20, + 0x20,0x69,0x6e,0x74,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28, + 0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61,0x72, + 0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x72, + 0x65,0x66,0x63,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x69,0x6e,0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69, + 0x6f,0x6e,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x28,0x6e,0x61,0x6d,0x65, + 0x2c,0x20,0x6d,0x61,0x6b,0x65,0x5f,0x74,0x79,0x70,0x65,0x6e,0x61,0x6d,0x65,0x28, + 0x72,0x65,0x66,0x63,0x74,0x29,0x2c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67, + 0x28,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x76,0x61,0x6c,0x75,0x65,0x29, + 0x29,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e, + 0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x0a,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65,0x72,0x73,0x20,0x61, + 0x72,0x65,0x20,0x74,0x6f,0x6f,0x20,0x75,0x6e,0x73,0x61,0x66,0x65,0x2c,0x20,0x64, + 0x6f,0x20,0x6e,0x6f,0x74,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x20,0x74,0x68, + 0x65,0x6d,0x0a,0x20,0x20,0x20,0x20,0x70,0x74,0x72,0x20,0x3d,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75, + 0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e, + 0x61,0x6d,0x65,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x6e,0x74,0x72,0x6f, + 0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x70,0x72,0x6f,0x70,0x65,0x72,0x74, + 0x79,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x6d,0x61,0x6b,0x65,0x5f,0x74,0x79,0x70, + 0x65,0x6e,0x61,0x6d,0x65,0x28,0x72,0x65,0x66,0x63,0x74,0x29,0x2c,0x20,0x74,0x6f, + 0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x20,0x70, + 0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x7d,0x0a,0x0a,0x69,0x6e,0x73, + 0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x2e,0x75,0x6e,0x69,0x6f,0x6e,0x20,0x3d,0x20, + 0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x2e,0x73,0x74,0x72,0x75,0x63, + 0x74,0x0a,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x2e,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x3d,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x2e, + 0x69,0x6e,0x74,0x0a,0x0a,0x2d,0x2d,0x20,0x66,0x6f,0x72,0x20,0x73,0x74,0x72,0x75, + 0x63,0x74,0x2f,0x75,0x6e,0x69,0x6f,0x6e,0x20,0x66,0x69,0x65,0x6c,0x64,0x73,0x2c, + 0x20,0x74,0x68,0x65,0x20,0x61,0x63,0x74,0x75,0x61,0x6c,0x20,0x74,0x79,0x70,0x65, + 0x20,0x69,0x73,0x20,0x6e,0x65,0x73,0x74,0x65,0x64,0x20,0x69,0x6e,0x74,0x6f,0x20, + 0x74,0x68,0x65,0x20,0x72,0x65,0x66,0x63,0x74,0x0a,0x69,0x6e,0x73,0x70,0x65,0x63, + 0x74,0x6f,0x72,0x73,0x2e,0x66,0x69,0x65,0x6c,0x64,0x20,0x3d,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75, + 0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e, + 0x61,0x6d,0x65,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x28,0x6e, + 0x61,0x6d,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61,0x72,0x65, + 0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x72,0x65, + 0x66,0x63,0x74,0x2e,0x74,0x79,0x70,0x65,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x69,0x6e, + 0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x2e,0x62,0x69,0x74,0x66,0x69,0x65,0x6c, + 0x64,0x20,0x3d,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x73,0x2e,0x66, + 0x69,0x65,0x6c,0x64,0x0a,0x0a,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x20,0x3d,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76, + 0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75, + 0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x20,0x6f,0x6e, + 0x6c,0x79,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x6e,0x6f,0x74,0x20,0x63, + 0x74,0x79,0x70,0x65,0x73,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x46,0x49,0x58,0x4d, + 0x45,0x3a,0x20,0x74,0x68,0x69,0x73,0x20,0x63,0x61,0x75,0x73,0x65,0x20,0x72,0x65, + 0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x20,0x74,0x6f,0x20,0x62,0x65,0x20,0x64, + 0x65,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x64,0x20,0x61,0x6e,0x64,0x20, + 0x63,0x72,0x61,0x73,0x68,0x20,0x74,0x68,0x65,0x20,0x70,0x72,0x6f,0x63,0x65,0x73, + 0x73,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x79,0x20,0x61,0x72,0x65,0x20,0x77,0x72, + 0x6f,0x6e,0x67,0x20,0x21,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x66,0x66,0x69, + 0x2e,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x20,0x7e, + 0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x63,0x74,0x20,0x3d,0x20,0x72,0x65,0x66, + 0x63,0x74,0x20,0x6f,0x72,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x2e,0x74,0x79, + 0x70,0x65,0x6f,0x66,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x69,0x6e,0x73,0x70, + 0x65,0x63,0x74,0x6f,0x72,0x73,0x5b,0x72,0x65,0x66,0x63,0x74,0x2e,0x77,0x68,0x61, + 0x74,0x5d,0x20,0x6f,0x72,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x5f,0x69,0x6e, + 0x73,0x70,0x65,0x63,0x74,0x6f,0x72,0x29,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x76, + 0x61,0x6c,0x75,0x65,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75, + 0x6c,0x6c,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x20,0x73,0x69,0x6d,0x70,0x6c,0x65,0x20,0x70, + 0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x20,0x66,0x6f,0x72,0x20,0x63,0x74,0x79,0x70, + 0x65,0x73,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x6e, + 0x74,0x72,0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x70,0x72,0x6f,0x70, + 0x65,0x72,0x74,0x79,0x28,0x6e,0x61,0x6d,0x65,0x2c,0x20,0x22,0x63,0x74,0x79,0x70, + 0x65,0x22,0x2c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x76,0x61,0x6c, + 0x75,0x65,0x29,0x2c,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x2c,0x20,0x66,0x75,0x6c, + 0x6c,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x69,0x6e,0x74,0x72, + 0x6f,0x73,0x70,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x69,0x6e,0x73,0x70,0x65,0x63, + 0x74,0x6f,0x72,0x73,0x2e,0x63,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x69,0x6e,0x73, + 0x70,0x65,0x63,0x74,0x0a,0x0a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x0a,0x0a, + 0x65,0x6e,0x64,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x45,0x6e,0x64,0x20,0x6f,0x66,0x20,0x6d, + 0x6f,0x64,0x75,0x6c,0x65,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c, + 0x75,0x67,0x69,0x6e,0x73,0x2e,0x66,0x66,0x69,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20, + 0x20,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, + 0x2e,0x70,0x6c,0x75,0x67,0x69,0x6e,0x73,0x2e,0x66,0x66,0x69,0x2e,0x72,0x65,0x66, + 0x6c,0x65,0x63,0x74,0x0a,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x2e,0x70,0x72,0x65, + 0x6c,0x6f,0x61,0x64,0x5b,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70, + 0x6c,0x75,0x67,0x69,0x6e,0x73,0x2e,0x66,0x66,0x69,0x2e,0x72,0x65,0x66,0x6c,0x65, + 0x63,0x74,0x22,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28, + 0x2e,0x2e,0x2e,0x29,0x0a,0x2d,0x2d,0x5b,0x5b,0x20,0x4c,0x75,0x61,0x4a,0x49,0x54, + 0x20,0x46,0x46,0x49,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20, + 0x4c,0x69,0x62,0x72,0x61,0x72,0x79,0x20,0x5d,0x5d,0x2d,0x2d,0x0a,0x2d,0x2d,0x5b, + 0x5b,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x43,0x29,0x20, + 0x32,0x30,0x31,0x33,0x20,0x50,0x65,0x74,0x65,0x72,0x20,0x43,0x61,0x77,0x6c,0x65, + 0x79,0x20,0x3c,0x6c,0x75,0x61,0x40,0x63,0x6f,0x72,0x73,0x69,0x78,0x2e,0x6f,0x72, + 0x67,0x3e,0x2e,0x20,0x41,0x6c,0x6c,0x20,0x72,0x69,0x67,0x68,0x74,0x73,0x20,0x72, + 0x65,0x73,0x65,0x72,0x76,0x65,0x64,0x2e,0x0a,0x0a,0x50,0x65,0x72,0x6d,0x69,0x73, + 0x73,0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x68,0x65,0x72,0x65,0x62,0x79,0x20,0x67, + 0x72,0x61,0x6e,0x74,0x65,0x64,0x2c,0x20,0x66,0x72,0x65,0x65,0x20,0x6f,0x66,0x20, + 0x63,0x68,0x61,0x72,0x67,0x65,0x2c,0x20,0x74,0x6f,0x20,0x61,0x6e,0x79,0x20,0x70, + 0x65,0x72,0x73,0x6f,0x6e,0x20,0x6f,0x62,0x74,0x61,0x69,0x6e,0x69,0x6e,0x67,0x20, + 0x61,0x20,0x63,0x6f,0x70,0x79,0x0a,0x6f,0x66,0x20,0x74,0x68,0x69,0x73,0x20,0x73, + 0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x61,0x6e,0x64,0x20,0x61,0x73,0x73,0x6f, + 0x63,0x69,0x61,0x74,0x65,0x64,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x61, + 0x74,0x69,0x6f,0x6e,0x20,0x66,0x69,0x6c,0x65,0x73,0x20,0x28,0x74,0x68,0x65,0x20, + 0x22,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x22,0x29,0x2c,0x20,0x74,0x6f,0x20, + 0x64,0x65,0x61,0x6c,0x0a,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x53,0x6f,0x66,0x74, + 0x77,0x61,0x72,0x65,0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x72,0x65,0x73, + 0x74,0x72,0x69,0x63,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64, + 0x69,0x6e,0x67,0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x6c,0x69,0x6d,0x69, + 0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x72,0x69,0x67,0x68,0x74, + 0x73,0x0a,0x74,0x6f,0x20,0x75,0x73,0x65,0x2c,0x20,0x63,0x6f,0x70,0x79,0x2c,0x20, + 0x6d,0x6f,0x64,0x69,0x66,0x79,0x2c,0x20,0x6d,0x65,0x72,0x67,0x65,0x2c,0x20,0x70, + 0x75,0x62,0x6c,0x69,0x73,0x68,0x2c,0x20,0x64,0x69,0x73,0x74,0x72,0x69,0x62,0x75, + 0x74,0x65,0x2c,0x20,0x73,0x75,0x62,0x6c,0x69,0x63,0x65,0x6e,0x73,0x65,0x2c,0x20, + 0x61,0x6e,0x64,0x2f,0x6f,0x72,0x20,0x73,0x65,0x6c,0x6c,0x0a,0x63,0x6f,0x70,0x69, + 0x65,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x53,0x6f,0x66,0x74,0x77,0x61, + 0x72,0x65,0x2c,0x20,0x61,0x6e,0x64,0x20,0x74,0x6f,0x20,0x70,0x65,0x72,0x6d,0x69, + 0x74,0x20,0x70,0x65,0x72,0x73,0x6f,0x6e,0x73,0x20,0x74,0x6f,0x20,0x77,0x68,0x6f, + 0x6d,0x20,0x74,0x68,0x65,0x20,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x20,0x69, + 0x73,0x0a,0x66,0x75,0x72,0x6e,0x69,0x73,0x68,0x65,0x64,0x20,0x74,0x6f,0x20,0x64, + 0x6f,0x20,0x73,0x6f,0x2c,0x20,0x73,0x75,0x62,0x6a,0x65,0x63,0x74,0x20,0x74,0x6f, + 0x20,0x74,0x68,0x65,0x20,0x66,0x6f,0x6c,0x6c,0x6f,0x77,0x69,0x6e,0x67,0x20,0x63, + 0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x3a,0x0a,0x0a,0x54,0x68,0x65,0x20, + 0x61,0x62,0x6f,0x76,0x65,0x20,0x63,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20, + 0x6e,0x6f,0x74,0x69,0x63,0x65,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x69,0x73,0x20, + 0x70,0x65,0x72,0x6d,0x69,0x73,0x73,0x69,0x6f,0x6e,0x20,0x6e,0x6f,0x74,0x69,0x63, + 0x65,0x20,0x73,0x68,0x61,0x6c,0x6c,0x20,0x62,0x65,0x20,0x69,0x6e,0x63,0x6c,0x75, + 0x64,0x65,0x64,0x20,0x69,0x6e,0x0a,0x61,0x6c,0x6c,0x20,0x63,0x6f,0x70,0x69,0x65, + 0x73,0x20,0x6f,0x72,0x20,0x73,0x75,0x62,0x73,0x74,0x61,0x6e,0x74,0x69,0x61,0x6c, + 0x20,0x70,0x6f,0x72,0x74,0x69,0x6f,0x6e,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65, + 0x20,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x2e,0x0a,0x0a,0x54,0x48,0x45,0x20, + 0x53,0x4f,0x46,0x54,0x57,0x41,0x52,0x45,0x20,0x49,0x53,0x20,0x50,0x52,0x4f,0x56, + 0x49,0x44,0x45,0x44,0x20,0x22,0x41,0x53,0x20,0x49,0x53,0x22,0x2c,0x20,0x57,0x49, + 0x54,0x48,0x4f,0x55,0x54,0x20,0x57,0x41,0x52,0x52,0x41,0x4e,0x54,0x59,0x20,0x4f, + 0x46,0x20,0x41,0x4e,0x59,0x20,0x4b,0x49,0x4e,0x44,0x2c,0x20,0x45,0x58,0x50,0x52, + 0x45,0x53,0x53,0x20,0x4f,0x52,0x0a,0x49,0x4d,0x50,0x4c,0x49,0x45,0x44,0x2c,0x20, + 0x49,0x4e,0x43,0x4c,0x55,0x44,0x49,0x4e,0x47,0x20,0x42,0x55,0x54,0x20,0x4e,0x4f, + 0x54,0x20,0x4c,0x49,0x4d,0x49,0x54,0x45,0x44,0x20,0x54,0x4f,0x20,0x54,0x48,0x45, + 0x20,0x57,0x41,0x52,0x52,0x41,0x4e,0x54,0x49,0x45,0x53,0x20,0x4f,0x46,0x20,0x4d, + 0x45,0x52,0x43,0x48,0x41,0x4e,0x54,0x41,0x42,0x49,0x4c,0x49,0x54,0x59,0x2c,0x0a, + 0x46,0x49,0x54,0x4e,0x45,0x53,0x53,0x20,0x46,0x4f,0x52,0x20,0x41,0x20,0x50,0x41, + 0x52,0x54,0x49,0x43,0x55,0x4c,0x41,0x52,0x20,0x50,0x55,0x52,0x50,0x4f,0x53,0x45, + 0x20,0x41,0x4e,0x44,0x20,0x4e,0x4f,0x4e,0x49,0x4e,0x46,0x52,0x49,0x4e,0x47,0x45, + 0x4d,0x45,0x4e,0x54,0x2e,0x20,0x20,0x49,0x4e,0x20,0x4e,0x4f,0x20,0x45,0x56,0x45, + 0x4e,0x54,0x20,0x53,0x48,0x41,0x4c,0x4c,0x20,0x54,0x48,0x45,0x0a,0x41,0x55,0x54, + 0x48,0x4f,0x52,0x53,0x20,0x4f,0x52,0x20,0x43,0x4f,0x50,0x59,0x52,0x49,0x47,0x48, + 0x54,0x20,0x48,0x4f,0x4c,0x44,0x45,0x52,0x53,0x20,0x42,0x45,0x20,0x4c,0x49,0x41, + 0x42,0x4c,0x45,0x20,0x46,0x4f,0x52,0x20,0x41,0x4e,0x59,0x20,0x43,0x4c,0x41,0x49, + 0x4d,0x2c,0x20,0x44,0x41,0x4d,0x41,0x47,0x45,0x53,0x20,0x4f,0x52,0x20,0x4f,0x54, + 0x48,0x45,0x52,0x0a,0x4c,0x49,0x41,0x42,0x49,0x4c,0x49,0x54,0x59,0x2c,0x20,0x57, + 0x48,0x45,0x54,0x48,0x45,0x52,0x20,0x49,0x4e,0x20,0x41,0x4e,0x20,0x41,0x43,0x54, + 0x49,0x4f,0x4e,0x20,0x4f,0x46,0x20,0x43,0x4f,0x4e,0x54,0x52,0x41,0x43,0x54,0x2c, + 0x20,0x54,0x4f,0x52,0x54,0x20,0x4f,0x52,0x20,0x4f,0x54,0x48,0x45,0x52,0x57,0x49, + 0x53,0x45,0x2c,0x20,0x41,0x52,0x49,0x53,0x49,0x4e,0x47,0x20,0x46,0x52,0x4f,0x4d, + 0x2c,0x0a,0x4f,0x55,0x54,0x20,0x4f,0x46,0x20,0x4f,0x52,0x20,0x49,0x4e,0x20,0x43, + 0x4f,0x4e,0x4e,0x45,0x43,0x54,0x49,0x4f,0x4e,0x20,0x57,0x49,0x54,0x48,0x20,0x54, + 0x48,0x45,0x20,0x53,0x4f,0x46,0x54,0x57,0x41,0x52,0x45,0x20,0x4f,0x52,0x20,0x54, + 0x48,0x45,0x20,0x55,0x53,0x45,0x20,0x4f,0x52,0x20,0x4f,0x54,0x48,0x45,0x52,0x20, + 0x44,0x45,0x41,0x4c,0x49,0x4e,0x47,0x53,0x20,0x49,0x4e,0x0a,0x54,0x48,0x45,0x20, + 0x53,0x4f,0x46,0x54,0x57,0x41,0x52,0x45,0x2e,0x0a,0x2d,0x2d,0x5d,0x5d,0x0a,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x66,0x66,0x69,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69, + 0x72,0x65,0x20,0x22,0x66,0x66,0x69,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62, + 0x69,0x74,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x62,0x69, + 0x74,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74, + 0x20,0x3d,0x20,0x7b,0x7d,0x0a,0x0a,0x2d,0x2d,0x20,0x52,0x65,0x6c,0x65,0x76,0x61, + 0x6e,0x74,0x20,0x6d,0x69,0x6e,0x69,0x6d,0x61,0x6c,0x20,0x64,0x65,0x66,0x69,0x6e, + 0x69,0x74,0x69,0x6f,0x6e,0x73,0x20,0x66,0x72,0x6f,0x6d,0x20,0x6c,0x6a,0x5f,0x63, + 0x74,0x79,0x70,0x65,0x2e,0x68,0x0a,0x66,0x66,0x69,0x2e,0x63,0x64,0x65,0x66,0x20, + 0x5b,0x5b,0x0a,0x20,0x20,0x74,0x79,0x70,0x65,0x64,0x65,0x66,0x20,0x73,0x74,0x72, + 0x75,0x63,0x74,0x20,0x43,0x54,0x79,0x70,0x65,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, + 0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x20,0x69,0x6e,0x66,0x6f,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x20,0x73,0x69,0x7a,0x65, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x31,0x36,0x5f,0x74,0x20,0x73, + 0x69,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x31,0x36,0x5f,0x74, + 0x20,0x6e,0x65,0x78,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33, + 0x32,0x5f,0x74,0x20,0x6e,0x61,0x6d,0x65,0x3b,0x0a,0x20,0x20,0x7d,0x20,0x43,0x54, + 0x79,0x70,0x65,0x3b,0x0a,0x0a,0x20,0x20,0x74,0x79,0x70,0x65,0x64,0x65,0x66,0x20, + 0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x20,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x43,0x54,0x79,0x70,0x65,0x20,0x2a,0x74,0x61,0x62,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x20,0x74,0x6f, + 0x70,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x20, + 0x73,0x69,0x7a,0x65,0x74,0x61,0x62,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x6f,0x69, + 0x64,0x20,0x2a,0x4c,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x6f,0x69,0x64,0x20,0x2a, + 0x67,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x6f,0x69,0x64,0x20,0x2a,0x66,0x69,0x6e, + 0x61,0x6c,0x69,0x7a,0x65,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x6f,0x69,0x64, + 0x20,0x2a,0x6d,0x69,0x73,0x63,0x6d,0x61,0x70,0x3b,0x0a,0x20,0x20,0x7d,0x20,0x43, + 0x54,0x53,0x74,0x61,0x74,0x65,0x3b,0x0a,0x5d,0x5d,0x0a,0x0a,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x63,0x5f,0x73,0x74, + 0x72,0x28,0x67,0x63,0x72,0x65,0x66,0x29,0x20,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x76, + 0x65,0x72,0x74,0x20,0x61,0x20,0x47,0x43,0x72,0x65,0x66,0x20,0x28,0x74,0x6f,0x20, + 0x61,0x20,0x47,0x43,0x73,0x74,0x72,0x29,0x20,0x69,0x6e,0x74,0x6f,0x20,0x61,0x20, + 0x73,0x74,0x72,0x69,0x6e,0x67,0x0a,0x20,0x20,0x69,0x66,0x20,0x67,0x63,0x72,0x65, + 0x66,0x20,0x7e,0x3d,0x20,0x30,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74,0x73,0x20,0x3d,0x20,0x66,0x66,0x69,0x2e,0x63, + 0x61,0x73,0x74,0x28,0x22,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x2a,0x22,0x2c, + 0x20,0x67,0x63,0x72,0x65,0x66,0x29,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x66,0x66,0x69,0x2e,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x74,0x73, + 0x20,0x2b,0x20,0x34,0x2c,0x20,0x74,0x73,0x5b,0x33,0x5d,0x29,0x0a,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x6d,0x70,0x74,0x72,0x28,0x67,0x63, + 0x6f,0x62,0x6a,0x29,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x6f, + 0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28, + 0x67,0x63,0x6f,0x62,0x6a,0x29,0x3a,0x6d,0x61,0x74,0x63,0x68,0x22,0x25,0x78,0x2a, + 0x24,0x22,0x2c,0x20,0x31,0x36,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x20, + 0x41,0x63,0x71,0x75,0x69,0x72,0x65,0x20,0x61,0x20,0x70,0x6f,0x69,0x6e,0x74,0x65, + 0x72,0x20,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,0x20,0x4c,0x75,0x61,0x20,0x75,0x6e, + 0x69,0x76,0x65,0x72,0x73,0x65,0x27,0x73,0x20,0x43,0x54,0x53,0x74,0x61,0x74,0x65, + 0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x20,0x64, + 0x6f,0x0a,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x20,0x3d,0x20,0x63, + 0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x28, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x65,0x6e,0x64,0x29,0x20,0x2d, + 0x2d,0x20,0x41,0x6e,0x79,0x20,0x6c,0x69,0x76,0x65,0x20,0x63,0x6f,0x72,0x6f,0x75, + 0x74,0x69,0x6e,0x65,0x20,0x77,0x69,0x6c,0x6c,0x20,0x64,0x6f,0x2e,0x0a,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x70,0x74,0x72, + 0x20,0x3d,0x20,0x66,0x66,0x69,0x2e,0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x22,0x75, + 0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x2a,0x22,0x29,0x0a,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x47,0x20,0x3d,0x20,0x66,0x66,0x69,0x2e,0x63,0x61,0x73,0x74,0x28, + 0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x70,0x74,0x72,0x2c,0x20,0x66,0x66,0x69,0x2e, + 0x63,0x61,0x73,0x74,0x28,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x70,0x74,0x72,0x2c, + 0x20,0x6d,0x65,0x6d,0x70,0x74,0x72,0x28,0x63,0x6f,0x29,0x29,0x5b,0x32,0x5d,0x29, + 0x0a,0x20,0x20,0x2d,0x2d,0x20,0x49,0x6e,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f, + 0x53,0x74,0x61,0x74,0x65,0x2c,0x20,0x60,0x4d,0x52,0x65,0x66,0x20,0x63,0x74,0x79, + 0x70,0x65,0x5f,0x73,0x74,0x61,0x74,0x65,0x60,0x20,0x69,0x73,0x20,0x69,0x6d,0x6d, + 0x65,0x64,0x69,0x61,0x74,0x65,0x6c,0x79,0x20,0x62,0x65,0x66,0x6f,0x72,0x65,0x20, + 0x60,0x47,0x43,0x52,0x65,0x66,0x20,0x67,0x63,0x72,0x6f,0x6f,0x74,0x5b,0x47,0x43, + 0x52,0x4f,0x4f,0x54,0x5f,0x4d,0x41,0x58,0x5d,0x60,0x2e,0x0a,0x20,0x20,0x2d,0x2d, + 0x20,0x57,0x65,0x20,0x66,0x69,0x72,0x73,0x74,0x20,0x66,0x69,0x6e,0x64,0x20,0x28, + 0x61,0x6e,0x20,0x65,0x6e,0x74,0x72,0x79,0x20,0x69,0x6e,0x29,0x20,0x67,0x63,0x72, + 0x6f,0x6f,0x74,0x20,0x62,0x79,0x20,0x6c,0x6f,0x6f,0x6b,0x69,0x6e,0x67,0x20,0x66, + 0x6f,0x72,0x20,0x61,0x20,0x6d,0x65,0x74,0x61,0x6d,0x65,0x74,0x68,0x6f,0x64,0x20, + 0x6e,0x61,0x6d,0x65,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x0a,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x61,0x6e,0x63,0x68,0x6f,0x72,0x20,0x3d,0x20,0x66,0x66, + 0x69,0x2e,0x63,0x61,0x73,0x74,0x28,0x22,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74, + 0x22,0x2c,0x20,0x66,0x66,0x69,0x2e,0x63,0x61,0x73,0x74,0x28,0x22,0x63,0x6f,0x6e, + 0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x2a,0x22,0x2c,0x20,0x22,0x5f,0x5f,0x69,0x6e, + 0x64,0x65,0x78,0x22,0x29,0x29,0x0a,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69, + 0x20,0x3d,0x20,0x30,0x0a,0x20,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x6d,0x61,0x74, + 0x68,0x2e,0x61,0x62,0x73,0x28,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x47, + 0x5b,0x69,0x5d,0x20,0x2d,0x20,0x61,0x6e,0x63,0x68,0x6f,0x72,0x29,0x29,0x20,0x3e, + 0x20,0x36,0x34,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x69,0x20,0x3d,0x20,0x69, + 0x20,0x2b,0x20,0x31,0x0a,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x2d,0x2d,0x20, + 0x57,0x65,0x20,0x74,0x68,0x65,0x6e,0x20,0x77,0x6f,0x72,0x6b,0x20,0x62,0x61,0x63, + 0x6b,0x77,0x61,0x72,0x64,0x73,0x20,0x6c,0x6f,0x6f,0x6b,0x69,0x6e,0x67,0x20,0x66, + 0x6f,0x72,0x20,0x73,0x6f,0x6d,0x65,0x74,0x68,0x69,0x6e,0x67,0x20,0x72,0x65,0x73, + 0x65,0x6d,0x62,0x6c,0x69,0x6e,0x67,0x20,0x63,0x74,0x79,0x70,0x65,0x5f,0x73,0x74, + 0x61,0x74,0x65,0x2e,0x0a,0x20,0x20,0x72,0x65,0x70,0x65,0x61,0x74,0x0a,0x20,0x20, + 0x20,0x20,0x69,0x20,0x3d,0x20,0x69,0x20,0x2d,0x20,0x31,0x0a,0x20,0x20,0x20,0x20, + 0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x20,0x3d,0x20,0x66,0x66,0x69,0x2e,0x63,0x61, + 0x73,0x74,0x28,0x22,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x2a,0x22,0x2c,0x20,0x47, + 0x5b,0x69,0x5d,0x29,0x0a,0x20,0x20,0x75,0x6e,0x74,0x69,0x6c,0x20,0x66,0x66,0x69, + 0x2e,0x63,0x61,0x73,0x74,0x28,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x70,0x74,0x72, + 0x2c,0x20,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x2e,0x67,0x29,0x20,0x3d,0x3d,0x20, + 0x47,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x20,0x41,0x63,0x71,0x75,0x69,0x72, + 0x65,0x20,0x74,0x68,0x65,0x20,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x27,0x73,0x20, + 0x6d,0x69,0x73,0x63,0x6d,0x61,0x70,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x61,0x73, + 0x20,0x61,0x20,0x4c,0x75,0x61,0x20,0x76,0x61,0x72,0x69,0x61,0x62,0x6c,0x65,0x0a, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6d,0x69,0x73,0x63,0x6d,0x61,0x70,0x20,0x64,0x6f, + 0x0a,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b, + 0x20,0x74,0x5b,0x30,0x5d,0x20,0x3d,0x20,0x74,0x0a,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x74,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x66,0x66,0x69,0x2e,0x63, + 0x61,0x73,0x74,0x28,0x22,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x2a,0x22,0x2c, + 0x20,0x6d,0x65,0x6d,0x70,0x74,0x72,0x28,0x74,0x29,0x29,0x5b,0x32,0x5d,0x0a,0x20, + 0x20,0x66,0x66,0x69,0x2e,0x63,0x61,0x73,0x74,0x28,0x22,0x75,0x69,0x6e,0x74,0x33, + 0x32,0x5f,0x74,0x2a,0x22,0x2c,0x20,0x74,0x76,0x61,0x6c,0x75,0x65,0x29,0x5b,0x66, + 0x66,0x69,0x2e,0x61,0x62,0x69,0x22,0x6c,0x65,0x22,0x20,0x61,0x6e,0x64,0x20,0x30, + 0x20,0x6f,0x72,0x20,0x31,0x5d,0x20,0x3d,0x20,0x66,0x66,0x69,0x2e,0x63,0x61,0x73, + 0x74,0x28,0x22,0x75,0x69,0x6e,0x74,0x33,0x32,0x5f,0x74,0x22,0x2c,0x20,0x66,0x66, + 0x69,0x2e,0x63,0x61,0x73,0x74,0x28,0x22,0x75,0x69,0x6e,0x74,0x70,0x74,0x72,0x5f, + 0x74,0x22,0x2c,0x20,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x2e,0x6d,0x69,0x73,0x63, + 0x6d,0x61,0x70,0x29,0x29,0x0a,0x20,0x20,0x6d,0x69,0x73,0x63,0x6d,0x61,0x70,0x20, + 0x3d,0x20,0x74,0x5b,0x30,0x5d,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x20,0x49, + 0x6e,0x66,0x6f,0x72,0x6d,0x61,0x74,0x69,0x6f,0x6e,0x20,0x66,0x6f,0x72,0x20,0x75, + 0x6e,0x70,0x61,0x63,0x6b,0x69,0x6e,0x67,0x20,0x61,0x20,0x60,0x73,0x74,0x72,0x75, + 0x63,0x74,0x20,0x43,0x54,0x79,0x70,0x65,0x60,0x2e,0x0a,0x2d,0x2d,0x20,0x4f,0x6e, + 0x65,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x70,0x65,0x72,0x20,0x43,0x54,0x5f,0x2a, + 0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x2c,0x20,0x63,0x6f,0x6e,0x74,0x61, + 0x69,0x6e,0x69,0x6e,0x67,0x3a,0x0a,0x2d,0x2d,0x20,0x2a,0x20,0x41,0x20,0x6e,0x61, + 0x6d,0x65,0x20,0x66,0x6f,0x72,0x20,0x74,0x68,0x61,0x74,0x20,0x43,0x54,0x5f,0x0a, + 0x2d,0x2d,0x20,0x2a,0x20,0x52,0x6f,0x6c,0x65,0x73,0x20,0x6f,0x66,0x20,0x74,0x68, + 0x65,0x20,0x63,0x69,0x64,0x20,0x61,0x6e,0x64,0x20,0x73,0x69,0x7a,0x65,0x20,0x66, + 0x69,0x65,0x6c,0x64,0x73,0x2e,0x0a,0x2d,0x2d,0x20,0x2a,0x20,0x57,0x68,0x65,0x74, + 0x68,0x65,0x72,0x20,0x74,0x68,0x65,0x20,0x73,0x69,0x62,0x20,0x66,0x69,0x65,0x6c, + 0x64,0x20,0x69,0x73,0x20,0x6d,0x65,0x61,0x6e,0x69,0x6e,0x67,0x66,0x75,0x6c,0x2e, + 0x0a,0x2d,0x2d,0x20,0x2a,0x20,0x5a,0x65,0x72,0x6f,0x20,0x6f,0x72,0x20,0x6d,0x6f, + 0x72,0x65,0x20,0x61,0x70,0x70,0x6c,0x69,0x63,0x61,0x62,0x6c,0x65,0x20,0x62,0x6f, + 0x6f,0x6c,0x65,0x61,0x6e,0x20,0x66,0x6c,0x61,0x67,0x73,0x2e,0x0a,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x43,0x54,0x73,0x20,0x3d,0x20,0x7b,0x5b,0x30,0x5d,0x20,0x3d,0x0a, + 0x20,0x20,0x7b,0x22,0x69,0x6e,0x74,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x22,0x22, + 0x2c,0x20,0x22,0x73,0x69,0x7a,0x65,0x22,0x2c,0x20,0x66,0x61,0x6c,0x73,0x65,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30,0x38,0x30,0x30,0x30,0x30,0x30,0x30, + 0x2c,0x20,0x22,0x62,0x6f,0x6f,0x6c,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b, + 0x30,0x78,0x30,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x66,0x6c,0x6f, + 0x61,0x74,0x22,0x2c,0x20,0x22,0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x22,0x7d,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30, + 0x2c,0x20,0x22,0x63,0x6f,0x6e,0x73,0x74,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x7b,0x30,0x78,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x76,0x6f, + 0x6c,0x61,0x74,0x69,0x6c,0x65,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30, + 0x78,0x30,0x30,0x38,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x75,0x6e,0x73,0x69, + 0x67,0x6e,0x65,0x64,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30, + 0x30,0x34,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x6c,0x6f,0x6e,0x67,0x22,0x7d, + 0x2c,0x0a,0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x7b,0x22,0x73,0x74,0x72,0x75,0x63, + 0x74,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x22,0x22,0x2c,0x20,0x22,0x73,0x69,0x7a, + 0x65,0x22,0x2c,0x20,0x74,0x72,0x75,0x65,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30, + 0x78,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x63,0x6f,0x6e,0x73, + 0x74,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30,0x31,0x30,0x30, + 0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x22, + 0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30,0x30,0x38,0x30,0x30,0x30, + 0x30,0x30,0x2c,0x20,0x22,0x75,0x6e,0x69,0x6f,0x6e,0x22,0x2c,0x20,0x22,0x73,0x75, + 0x62,0x77,0x68,0x61,0x74,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78, + 0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x76,0x6c,0x61,0x22,0x7d, + 0x2c,0x0a,0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x7b,0x22,0x70,0x74,0x72,0x22,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x22,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79, + 0x70,0x65,0x22,0x2c,0x20,0x22,0x73,0x69,0x7a,0x65,0x22,0x2c,0x20,0x66,0x61,0x6c, + 0x73,0x65,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30,0x32,0x30,0x30,0x30, + 0x30,0x30,0x30,0x2c,0x20,0x22,0x63,0x6f,0x6e,0x73,0x74,0x22,0x7d,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x7b,0x30,0x78,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x2c,0x20, + 0x22,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x20, + 0x20,0x7b,0x30,0x78,0x30,0x30,0x38,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x72, + 0x65,0x66,0x22,0x2c,0x20,0x22,0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x22,0x7d,0x2c, + 0x0a,0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x7b,0x22,0x61,0x72,0x72,0x61,0x79,0x22, + 0x2c,0x0a,0x20,0x20,0x20,0x20,0x22,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74, + 0x79,0x70,0x65,0x22,0x2c,0x20,0x22,0x73,0x69,0x7a,0x65,0x22,0x2c,0x20,0x66,0x61, + 0x6c,0x73,0x65,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30,0x38,0x30,0x30, + 0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x76,0x65,0x63,0x74,0x6f,0x72,0x22,0x7d,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30,0x34,0x30,0x30,0x30,0x30,0x30,0x30, + 0x2c,0x20,0x22,0x63,0x6f,0x6d,0x70,0x6c,0x65,0x78,0x22,0x7d,0x2c,0x0a,0x20,0x20, + 0x20,0x20,0x7b,0x30,0x78,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22, + 0x63,0x6f,0x6e,0x73,0x74,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78, + 0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x76,0x6f,0x6c,0x61,0x74, + 0x69,0x6c,0x65,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30,0x30, + 0x31,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x76,0x6c,0x61,0x22,0x7d,0x2c,0x0a, + 0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x7b,0x22,0x76,0x6f,0x69,0x64,0x22,0x2c,0x0a, + 0x20,0x20,0x20,0x20,0x22,0x22,0x2c,0x20,0x22,0x73,0x69,0x7a,0x65,0x22,0x2c,0x20, + 0x66,0x61,0x6c,0x73,0x65,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30,0x32, + 0x30,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x63,0x6f,0x6e,0x73,0x74,0x22,0x7d, + 0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30,0x31,0x30,0x30,0x30,0x30,0x30, + 0x30,0x2c,0x20,0x22,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x22,0x7d,0x2c,0x0a, + 0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x7b,0x22,0x65,0x6e,0x75,0x6d,0x22,0x2c,0x0a, + 0x20,0x20,0x20,0x20,0x22,0x74,0x79,0x70,0x65,0x22,0x2c,0x20,0x22,0x73,0x69,0x7a, + 0x65,0x22,0x2c,0x20,0x74,0x72,0x75,0x65,0x2c,0x0a,0x20,0x20,0x7d,0x2c,0x0a,0x20, + 0x20,0x7b,0x22,0x66,0x75,0x6e,0x63,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x22,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x5f,0x74,0x79,0x70,0x65,0x22,0x2c,0x20,0x22,0x6e,0x61, + 0x72,0x67,0x73,0x22,0x2c,0x20,0x74,0x72,0x75,0x65,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x7b,0x30,0x78,0x30,0x30,0x38,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x76,0x61, + 0x72,0x61,0x72,0x67,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30, + 0x30,0x34,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x73,0x73,0x65,0x5f,0x72,0x65, + 0x67,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x7d,0x2c, + 0x0a,0x20,0x20,0x7b,0x22,0x74,0x79,0x70,0x65,0x64,0x65,0x66,0x22,0x2c,0x20,0x2d, + 0x2d,0x20,0x4e,0x6f,0x74,0x20,0x73,0x65,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x22, + 0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x22,0x2c,0x20,0x22, + 0x22,0x2c,0x20,0x66,0x61,0x6c,0x73,0x65,0x2c,0x0a,0x20,0x20,0x7d,0x2c,0x0a,0x20, + 0x20,0x7b,0x22,0x61,0x74,0x74,0x72,0x69,0x62,0x22,0x2c,0x20,0x2d,0x2d,0x20,0x4f, + 0x6e,0x6c,0x79,0x20,0x73,0x65,0x65,0x6e,0x20,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61, + 0x6c,0x6c,0x79,0x0a,0x20,0x20,0x20,0x20,0x22,0x74,0x79,0x70,0x65,0x22,0x2c,0x20, + 0x22,0x76,0x61,0x6c,0x75,0x65,0x22,0x2c,0x20,0x74,0x72,0x75,0x65,0x2c,0x0a,0x20, + 0x20,0x7d,0x2c,0x0a,0x20,0x20,0x7b,0x22,0x66,0x69,0x65,0x6c,0x64,0x22,0x2c,0x0a, + 0x20,0x20,0x20,0x20,0x22,0x74,0x79,0x70,0x65,0x22,0x2c,0x20,0x22,0x6f,0x66,0x66, + 0x73,0x65,0x74,0x22,0x2c,0x20,0x74,0x72,0x75,0x65,0x2c,0x0a,0x20,0x20,0x7d,0x2c, + 0x0a,0x20,0x20,0x7b,0x22,0x62,0x69,0x74,0x66,0x69,0x65,0x6c,0x64,0x22,0x2c,0x0a, + 0x20,0x20,0x20,0x20,0x22,0x22,0x2c,0x20,0x22,0x6f,0x66,0x66,0x73,0x65,0x74,0x22, + 0x2c,0x20,0x74,0x72,0x75,0x65,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30, + 0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x62,0x6f,0x6f,0x6c,0x22,0x7d, + 0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30,0x32,0x30,0x30,0x30,0x30,0x30, + 0x30,0x2c,0x20,0x22,0x63,0x6f,0x6e,0x73,0x74,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x20, + 0x20,0x7b,0x30,0x78,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x76, + 0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b, + 0x30,0x78,0x30,0x30,0x38,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x75,0x6e,0x73, + 0x69,0x67,0x6e,0x65,0x64,0x22,0x7d,0x2c,0x0a,0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20, + 0x7b,0x22,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x22,0x2c,0x0a,0x20,0x20,0x20, + 0x20,0x22,0x74,0x79,0x70,0x65,0x22,0x2c,0x20,0x22,0x76,0x61,0x6c,0x75,0x65,0x22, + 0x2c,0x20,0x74,0x72,0x75,0x65,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7b,0x30,0x78,0x30, + 0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x2c,0x20,0x22,0x63,0x6f,0x6e,0x73,0x74,0x22, + 0x7d,0x2c,0x0a,0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x7b,0x22,0x65,0x78,0x74,0x65, + 0x72,0x6e,0x22,0x2c,0x20,0x2d,0x2d,0x20,0x4e,0x6f,0x74,0x20,0x73,0x65,0x65,0x6e, + 0x0a,0x20,0x20,0x20,0x20,0x22,0x43,0x49,0x44,0x22,0x2c,0x20,0x22,0x22,0x2c,0x20, + 0x74,0x72,0x75,0x65,0x2c,0x0a,0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x7b,0x22,0x6b, + 0x77,0x22,0x2c,0x20,0x2d,0x2d,0x20,0x4e,0x6f,0x74,0x20,0x73,0x65,0x65,0x6e,0x0a, + 0x20,0x20,0x20,0x20,0x22,0x54,0x4f,0x4b,0x22,0x2c,0x20,0x22,0x73,0x69,0x7a,0x65, + 0x22,0x2c,0x0a,0x20,0x20,0x7d,0x2c,0x0a,0x7d,0x0a,0x0a,0x2d,0x2d,0x20,0x53,0x65, + 0x74,0x20,0x6f,0x66,0x20,0x43,0x54,0x79,0x70,0x65,0x3a,0x3a,0x63,0x69,0x64,0x20, + 0x72,0x6f,0x6c,0x65,0x73,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x61,0x72,0x65,0x20, + 0x61,0x20,0x43,0x54,0x79,0x70,0x65,0x49,0x44,0x2e,0x0a,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x74,0x79,0x70,0x65,0x5f,0x6b,0x65,0x79,0x73,0x20,0x3d,0x20,0x7b,0x0a,0x20, + 0x20,0x65,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x20,0x3d,0x20, + 0x74,0x72,0x75,0x65,0x2c,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x5f,0x74, + 0x79,0x70,0x65,0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x2c,0x0a,0x20,0x20,0x76,0x61, + 0x6c,0x75,0x65,0x5f,0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x2c, + 0x0a,0x20,0x20,0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x2c,0x0a, + 0x7d,0x0a,0x0a,0x2d,0x2d,0x20,0x43,0x72,0x65,0x61,0x74,0x65,0x20,0x61,0x20,0x6d, + 0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x20,0x66,0x6f,0x72,0x20,0x65,0x61,0x63, + 0x68,0x20,0x43,0x54,0x2e,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6d,0x65,0x74,0x61, + 0x74,0x61,0x62,0x6c,0x65,0x73,0x20,0x3d,0x20,0x7b,0x0a,0x7d,0x0a,0x66,0x6f,0x72, + 0x20,0x5f,0x2c,0x20,0x43,0x54,0x20,0x69,0x6e,0x20,0x69,0x70,0x61,0x69,0x72,0x73, + 0x28,0x43,0x54,0x73,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x77,0x68,0x61,0x74,0x20,0x3d,0x20,0x43,0x54,0x5b,0x31,0x5d,0x0a,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6d,0x74,0x20,0x3d,0x20,0x7b,0x5f,0x5f,0x69,0x6e, + 0x64,0x65,0x78,0x20,0x3d,0x20,0x7b,0x7d,0x7d,0x0a,0x20,0x20,0x6d,0x65,0x74,0x61, + 0x74,0x61,0x62,0x6c,0x65,0x73,0x5b,0x77,0x68,0x61,0x74,0x5d,0x20,0x3d,0x20,0x6d, + 0x74,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x20,0x4c,0x6f,0x67,0x69,0x63,0x20, + 0x66,0x6f,0x72,0x20,0x6d,0x65,0x72,0x67,0x69,0x6e,0x67,0x20,0x61,0x6e,0x20,0x61, + 0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x20,0x43,0x54,0x79,0x70,0x65,0x20,0x6f, + 0x6e,0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x61,0x6e,0x6e,0x6f,0x74,0x61,0x74,0x65, + 0x64,0x20,0x43,0x54,0x79,0x70,0x65,0x2e,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x43, + 0x54,0x41,0x73,0x20,0x3d,0x20,0x7b,0x5b,0x30,0x5d,0x20,0x3d,0x0a,0x20,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x20,0x72,0x65,0x66,0x63,0x74, + 0x29,0x20,0x65,0x72,0x72,0x6f,0x72,0x28,0x22,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x43, + 0x54,0x41,0x5f,0x4e,0x4f,0x4e,0x45,0x22,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20, + 0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x20,0x72,0x65,0x66, + 0x63,0x74,0x29,0x20,0x65,0x72,0x72,0x6f,0x72,0x28,0x22,0x54,0x4f,0x44,0x4f,0x3a, + 0x20,0x43,0x54,0x41,0x5f,0x51,0x55,0x41,0x4c,0x22,0x29,0x20,0x65,0x6e,0x64,0x2c, + 0x0a,0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x20,0x72, + 0x65,0x66,0x63,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x61,0x20,0x3d,0x20,0x32,0x5e, + 0x61,0x2e,0x76,0x61,0x6c,0x75,0x65,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x63, + 0x74,0x2e,0x61,0x6c,0x69,0x67,0x6e,0x6d,0x65,0x6e,0x74,0x20,0x3d,0x20,0x61,0x0a, + 0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x61,0x74,0x74,0x72,0x69,0x62, + 0x75,0x74,0x65,0x73,0x2e,0x61,0x6c,0x69,0x67,0x6e,0x20,0x3d,0x20,0x61,0x0a,0x20, + 0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x28,0x61,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x72, + 0x65,0x66,0x63,0x74,0x2e,0x74,0x72,0x61,0x6e,0x73,0x70,0x61,0x72,0x65,0x6e,0x74, + 0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x63, + 0x74,0x2e,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x73,0x2e,0x73,0x75,0x62, + 0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x74,0x79,0x70, + 0x65,0x69,0x64,0x0a,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x29,0x20, + 0x72,0x65,0x66,0x63,0x74,0x2e,0x73,0x79,0x6d,0x5f,0x6e,0x61,0x6d,0x65,0x20,0x3d, + 0x20,0x61,0x2e,0x6e,0x61,0x6d,0x65,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x61,0x2c,0x20,0x72,0x65,0x66,0x63,0x74, + 0x29,0x20,0x65,0x72,0x72,0x6f,0x72,0x28,0x22,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x43, + 0x54,0x41,0x5f,0x42,0x41,0x44,0x22,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x7d,0x0a, + 0x0a,0x2d,0x2d,0x20,0x43,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63, + 0x61,0x6c,0x6c,0x69,0x6e,0x67,0x20,0x63,0x6f,0x6e,0x76,0x65,0x6e,0x74,0x69,0x6f, + 0x6e,0x73,0x20,0x28,0x43,0x54,0x43,0x43,0x5f,0x2a,0x20,0x63,0x6f,0x6e,0x73,0x74, + 0x61,0x6e,0x74,0x73,0x20,0x69,0x6e,0x20,0x6c,0x6a,0x5f,0x72,0x65,0x66,0x63,0x74, + 0x2e,0x68,0x29,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x43,0x54,0x43,0x43,0x73,0x20, + 0x3d,0x20,0x7b,0x5b,0x30,0x5d,0x20,0x3d,0x0a,0x20,0x20,0x22,0x63,0x64,0x65,0x63, + 0x6c,0x22,0x2c,0x0a,0x20,0x20,0x22,0x74,0x68,0x69,0x73,0x63,0x61,0x6c,0x6c,0x22, + 0x2c,0x0a,0x20,0x20,0x22,0x66,0x61,0x73,0x74,0x63,0x61,0x6c,0x6c,0x22,0x2c,0x0a, + 0x20,0x20,0x22,0x73,0x74,0x64,0x63,0x61,0x6c,0x6c,0x22,0x2c,0x0a,0x7d,0x0a,0x0a, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72, + 0x65,0x66,0x63,0x74,0x5f,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x28,0x69,0x64,0x29, + 0x20,0x2d,0x2d,0x20,0x72,0x65,0x66,0x63,0x74,0x20,0x3d,0x20,0x72,0x65,0x66,0x63, + 0x74,0x5f,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x28,0x43,0x54,0x79,0x70,0x65,0x49, + 0x44,0x29,0x0a,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x74,0x79,0x70,0x65, + 0x20,0x3d,0x20,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x2e,0x74,0x61,0x62,0x5b,0x69, + 0x64,0x5d,0x0a,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x43,0x54,0x5f,0x63,0x6f, + 0x64,0x65,0x20,0x3d,0x20,0x62,0x69,0x74,0x2e,0x72,0x73,0x68,0x69,0x66,0x74,0x28, + 0x63,0x74,0x79,0x70,0x65,0x2e,0x69,0x6e,0x66,0x6f,0x2c,0x20,0x32,0x38,0x29,0x0a, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x43,0x54,0x20,0x3d,0x20,0x43,0x54,0x73, + 0x5b,0x43,0x54,0x5f,0x63,0x6f,0x64,0x65,0x5d,0x0a,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x77,0x68,0x61,0x74,0x20,0x3d,0x20,0x43,0x54,0x5b,0x31,0x5d,0x0a,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x66,0x63,0x74,0x20,0x3d,0x20,0x73, + 0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x7b,0x0a,0x20,0x20, + 0x20,0x20,0x77,0x68,0x61,0x74,0x20,0x3d,0x20,0x77,0x68,0x61,0x74,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x74,0x79,0x70,0x65,0x69,0x64,0x20,0x3d,0x20,0x69,0x64,0x2c,0x0a, + 0x20,0x20,0x20,0x20,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x67,0x63,0x5f,0x73,0x74, + 0x72,0x28,0x63,0x74,0x79,0x70,0x65,0x2e,0x6e,0x61,0x6d,0x65,0x29,0x2c,0x0a,0x20, + 0x20,0x7d,0x2c,0x20,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x73,0x5b,0x77, + 0x68,0x61,0x74,0x5d,0x29,0x0a,0x0a,0x20,0x20,0x2d,0x2d,0x20,0x49,0x6e,0x74,0x65, + 0x72,0x70,0x72,0x65,0x74,0x20,0x28,0x6d,0x6f,0x73,0x74,0x20,0x6f,0x66,0x29,0x20, + 0x74,0x68,0x65,0x20,0x43,0x54,0x79,0x70,0x65,0x3a,0x3a,0x69,0x6e,0x66,0x6f,0x20, + 0x66,0x69,0x65,0x6c,0x64,0x0a,0x20,0x20,0x66,0x6f,0x72,0x20,0x69,0x20,0x3d,0x20, + 0x35,0x2c,0x20,0x23,0x43,0x54,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x62,0x69,0x74,0x2e,0x62,0x61,0x6e,0x64,0x28,0x63,0x74,0x79,0x70,0x65,0x2e, + 0x69,0x6e,0x66,0x6f,0x2c,0x20,0x43,0x54,0x5b,0x69,0x5d,0x5b,0x31,0x5d,0x29,0x20, + 0x7e,0x3d,0x20,0x30,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x43,0x54,0x5b,0x69,0x5d,0x5b,0x33,0x5d,0x20,0x3d,0x3d,0x20,0x22, + 0x73,0x75,0x62,0x77,0x68,0x61,0x74,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x77,0x68,0x61,0x74, + 0x20,0x3d,0x20,0x43,0x54,0x5b,0x69,0x5d,0x5b,0x32,0x5d,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72, + 0x65,0x66,0x63,0x74,0x5b,0x43,0x54,0x5b,0x69,0x5d,0x5b,0x32,0x5d,0x5d,0x20,0x3d, + 0x20,0x74,0x72,0x75,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a, + 0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20, + 0x69,0x66,0x20,0x43,0x54,0x5f,0x63,0x6f,0x64,0x65,0x20,0x3c,0x3d,0x20,0x35,0x20, + 0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x61, + 0x6c,0x69,0x67,0x6e,0x6d,0x65,0x6e,0x74,0x20,0x3d,0x20,0x62,0x69,0x74,0x2e,0x6c, + 0x73,0x68,0x69,0x66,0x74,0x28,0x31,0x2c,0x20,0x62,0x69,0x74,0x2e,0x62,0x61,0x6e, + 0x64,0x28,0x62,0x69,0x74,0x2e,0x72,0x73,0x68,0x69,0x66,0x74,0x28,0x63,0x74,0x79, + 0x70,0x65,0x2e,0x69,0x6e,0x66,0x6f,0x2c,0x20,0x31,0x36,0x29,0x2c,0x20,0x31,0x35, + 0x29,0x29,0x0a,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x77,0x68,0x61,0x74, + 0x20,0x3d,0x3d,0x20,0x22,0x66,0x75,0x6e,0x63,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a, + 0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x63,0x6f,0x6e,0x76,0x65,0x6e, + 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x43,0x54,0x43,0x43,0x73,0x5b,0x62,0x69,0x74, + 0x2e,0x62,0x61,0x6e,0x64,0x28,0x62,0x69,0x74,0x2e,0x72,0x73,0x68,0x69,0x66,0x74, + 0x28,0x63,0x74,0x79,0x70,0x65,0x2e,0x69,0x6e,0x66,0x6f,0x2c,0x20,0x31,0x36,0x29, + 0x2c,0x20,0x33,0x29,0x5d,0x0a,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x69, + 0x66,0x20,0x43,0x54,0x5b,0x32,0x5d,0x20,0x7e,0x3d,0x20,0x22,0x22,0x20,0x74,0x68, + 0x65,0x6e,0x20,0x2d,0x2d,0x20,0x49,0x6e,0x74,0x65,0x72,0x70,0x72,0x65,0x74,0x20, + 0x74,0x68,0x65,0x20,0x43,0x54,0x79,0x70,0x65,0x3a,0x3a,0x63,0x69,0x64,0x20,0x66, + 0x69,0x65,0x6c,0x64,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6b, + 0x20,0x3d,0x20,0x43,0x54,0x5b,0x32,0x5d,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x63,0x69,0x64,0x20,0x3d,0x20,0x62,0x69,0x74,0x2e,0x62,0x61,0x6e, + 0x64,0x28,0x63,0x74,0x79,0x70,0x65,0x2e,0x69,0x6e,0x66,0x6f,0x2c,0x20,0x30,0x78, + 0x66,0x66,0x66,0x66,0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x74,0x79,0x70, + 0x65,0x5f,0x6b,0x65,0x79,0x73,0x5b,0x6b,0x5d,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x63,0x69,0x64,0x20,0x3d,0x3d,0x20,0x30, + 0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x69, + 0x64,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c, + 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x69,0x64,0x20,0x3d, + 0x20,0x72,0x65,0x66,0x63,0x74,0x5f,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x28,0x63, + 0x69,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x63,0x74,0x5b, + 0x6b,0x5d,0x20,0x3d,0x20,0x63,0x69,0x64,0x0a,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a, + 0x20,0x20,0x69,0x66,0x20,0x43,0x54,0x5b,0x33,0x5d,0x20,0x7e,0x3d,0x20,0x22,0x22, + 0x20,0x74,0x68,0x65,0x6e,0x20,0x2d,0x2d,0x20,0x49,0x6e,0x74,0x65,0x72,0x70,0x72, + 0x65,0x74,0x20,0x74,0x68,0x65,0x20,0x43,0x54,0x79,0x70,0x65,0x3a,0x3a,0x73,0x69, + 0x7a,0x65,0x20,0x66,0x69,0x65,0x6c,0x64,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x6b,0x20,0x3d,0x20,0x43,0x54,0x5b,0x33,0x5d,0x0a,0x20,0x20,0x20, + 0x20,0x72,0x65,0x66,0x63,0x74,0x5b,0x6b,0x5d,0x20,0x3d,0x20,0x63,0x74,0x79,0x70, + 0x65,0x2e,0x73,0x69,0x7a,0x65,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6b,0x20, + 0x3d,0x3d,0x20,0x22,0x73,0x69,0x7a,0x65,0x22,0x20,0x61,0x6e,0x64,0x20,0x62,0x69, + 0x74,0x2e,0x62,0x6e,0x6f,0x74,0x28,0x72,0x65,0x66,0x63,0x74,0x5b,0x6b,0x5d,0x29, + 0x20,0x3d,0x3d,0x20,0x30,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x72,0x65,0x66,0x63,0x74,0x5b,0x6b,0x5d,0x20,0x3d,0x20,0x22,0x6e,0x6f,0x6e, + 0x65,0x22,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x65,0x6e,0x64, + 0x0a,0x0a,0x20,0x20,0x69,0x66,0x20,0x77,0x68,0x61,0x74,0x20,0x3d,0x3d,0x20,0x22, + 0x61,0x74,0x74,0x72,0x69,0x62,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20, + 0x20,0x2d,0x2d,0x20,0x4d,0x65,0x72,0x67,0x65,0x20,0x6c,0x65,0x61,0x64,0x69,0x6e, + 0x67,0x20,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x73,0x20,0x6f,0x6e,0x74, + 0x6f,0x20,0x74,0x68,0x65,0x20,0x74,0x79,0x70,0x65,0x20,0x62,0x65,0x69,0x6e,0x67, + 0x20,0x64,0x65,0x63,0x6f,0x72,0x61,0x74,0x65,0x64,0x2e,0x0a,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x43,0x54,0x41,0x20,0x3d,0x20,0x43,0x54,0x41,0x73, + 0x5b,0x62,0x69,0x74,0x2e,0x62,0x61,0x6e,0x64,0x28,0x62,0x69,0x74,0x2e,0x72,0x73, + 0x68,0x69,0x66,0x74,0x28,0x63,0x74,0x79,0x70,0x65,0x2e,0x69,0x6e,0x66,0x6f,0x2c, + 0x20,0x31,0x36,0x29,0x2c,0x20,0x30,0x78,0x66,0x66,0x29,0x5d,0x0a,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x74,0x79,0x70,0x65,0x20,0x74, + 0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x63,0x74,0x20,0x3d,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x74,0x79,0x70,0x65,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x74,0x2e,0x61,0x74,0x74,0x72,0x69,0x62,0x75, + 0x74,0x65,0x73,0x20,0x3d,0x20,0x7b,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x43, + 0x54,0x41,0x28,0x72,0x65,0x66,0x63,0x74,0x2c,0x20,0x63,0x74,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x63,0x74,0x2e,0x74,0x79,0x70,0x65,0x69,0x64,0x20,0x3d,0x20, + 0x72,0x65,0x66,0x63,0x74,0x2e,0x74,0x79,0x70,0x65,0x69,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x66,0x63,0x74,0x20,0x3d,0x20,0x63,0x74,0x0a,0x20,0x20, + 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x66, + 0x63,0x74,0x2e,0x43,0x54,0x41,0x20,0x3d,0x20,0x43,0x54,0x41,0x0a,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x77,0x68, + 0x61,0x74,0x20,0x3d,0x3d,0x20,0x22,0x62,0x69,0x74,0x66,0x69,0x65,0x6c,0x64,0x22, + 0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x44,0x65,0x63, + 0x6f,0x64,0x65,0x20,0x65,0x78,0x74,0x72,0x61,0x20,0x62,0x69,0x74,0x66,0x69,0x65, + 0x6c,0x64,0x20,0x66,0x69,0x65,0x6c,0x64,0x73,0x2c,0x20,0x61,0x6e,0x64,0x20,0x6d, + 0x61,0x6b,0x65,0x20,0x69,0x74,0x20,0x6c,0x6f,0x6f,0x6b,0x20,0x6c,0x69,0x6b,0x65, + 0x20,0x61,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x20,0x66,0x69,0x65,0x6c,0x64,0x2e, + 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x6f,0x66,0x66,0x73,0x65, + 0x74,0x20,0x3d,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74, + 0x20,0x2b,0x20,0x62,0x69,0x74,0x2e,0x62,0x61,0x6e,0x64,0x28,0x63,0x74,0x79,0x70, + 0x65,0x2e,0x69,0x6e,0x66,0x6f,0x2c,0x20,0x31,0x32,0x37,0x29,0x20,0x2f,0x20,0x38, + 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x73,0x69,0x7a,0x65,0x20, + 0x3d,0x20,0x62,0x69,0x74,0x2e,0x62,0x61,0x6e,0x64,0x28,0x62,0x69,0x74,0x2e,0x72, + 0x73,0x68,0x69,0x66,0x74,0x28,0x63,0x74,0x79,0x70,0x65,0x2e,0x69,0x6e,0x66,0x6f, + 0x2c,0x20,0x38,0x29,0x2c,0x20,0x31,0x32,0x37,0x29,0x20,0x2f,0x20,0x38,0x0a,0x20, + 0x20,0x20,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x74,0x79,0x70,0x65,0x20,0x3d,0x20, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x68,0x61,0x74,0x20,0x3d,0x20,0x22, + 0x69,0x6e,0x74,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, + 0x20,0x3d,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x62,0x6f,0x6f,0x6c,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x3d,0x20,0x72,0x65,0x66, + 0x63,0x74,0x2e,0x63,0x6f,0x6e,0x73,0x74,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x20,0x3d,0x20,0x72,0x65,0x66,0x63,0x74, + 0x2e,0x76,0x6f,0x6c,0x61,0x74,0x69,0x6c,0x65,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x20,0x3d,0x20,0x72,0x65,0x66,0x63, + 0x74,0x2e,0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x62,0x69,0x74,0x2e,0x62,0x61,0x6e, + 0x64,0x28,0x62,0x69,0x74,0x2e,0x72,0x73,0x68,0x69,0x66,0x74,0x28,0x63,0x74,0x79, + 0x70,0x65,0x2e,0x69,0x6e,0x66,0x6f,0x2c,0x20,0x31,0x36,0x29,0x2c,0x20,0x31,0x32, + 0x37,0x29,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, + 0x66,0x63,0x74,0x2e,0x62,0x6f,0x6f,0x6c,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x2e, + 0x63,0x6f,0x6e,0x73,0x74,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x76,0x6f,0x6c, + 0x61,0x74,0x69,0x6c,0x65,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x75,0x6e,0x73, + 0x69,0x67,0x6e,0x65,0x64,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20,0x65,0x6e, + 0x64,0x0a,0x0a,0x20,0x20,0x69,0x66,0x20,0x43,0x54,0x5b,0x34,0x5d,0x20,0x74,0x68, + 0x65,0x6e,0x20,0x2d,0x2d,0x20,0x4d,0x65,0x72,0x67,0x65,0x20,0x73,0x69,0x62,0x6c, + 0x69,0x6e,0x67,0x20,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x73,0x20,0x6f, + 0x6e,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,0x20,0x74,0x79,0x70,0x65,0x2e,0x0a,0x20, + 0x20,0x20,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x63,0x74,0x79,0x70,0x65,0x2e,0x73, + 0x69,0x62,0x20,0x7e,0x3d,0x20,0x30,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x65,0x6e,0x74,0x72,0x79,0x20,0x3d,0x20,0x43, + 0x54,0x53,0x74,0x61,0x74,0x65,0x2e,0x74,0x61,0x62,0x5b,0x63,0x74,0x79,0x70,0x65, + 0x2e,0x73,0x69,0x62,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x43, + 0x54,0x73,0x5b,0x62,0x69,0x74,0x2e,0x72,0x73,0x68,0x69,0x66,0x74,0x28,0x65,0x6e, + 0x74,0x72,0x79,0x2e,0x69,0x6e,0x66,0x6f,0x2c,0x20,0x32,0x38,0x29,0x5d,0x5b,0x31, + 0x5d,0x20,0x7e,0x3d,0x20,0x22,0x61,0x74,0x74,0x72,0x69,0x62,0x22,0x20,0x74,0x68, + 0x65,0x6e,0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x62,0x69,0x74,0x2e,0x62,0x61,0x6e,0x64,0x28,0x65, + 0x6e,0x74,0x72,0x79,0x2e,0x69,0x6e,0x66,0x6f,0x2c,0x20,0x30,0x78,0x66,0x66,0x66, + 0x66,0x29,0x20,0x7e,0x3d,0x20,0x30,0x20,0x74,0x68,0x65,0x6e,0x20,0x62,0x72,0x65, + 0x61,0x6b,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x73,0x69,0x62,0x20,0x3d,0x20,0x72,0x65,0x66,0x63,0x74,0x5f,0x66, + 0x72,0x6f,0x6d,0x5f,0x69,0x64,0x28,0x63,0x74,0x79,0x70,0x65,0x2e,0x73,0x69,0x62, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x69,0x62,0x3a,0x43,0x54,0x41,0x28, + 0x72,0x65,0x66,0x63,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x74,0x79, + 0x70,0x65,0x20,0x3d,0x20,0x65,0x6e,0x74,0x72,0x79,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x72,0x65,0x66,0x63,0x74,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73,0x69,0x62, + 0x5f,0x69,0x74,0x65,0x72,0x28,0x73,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x29,0x0a, + 0x20,0x20,0x72,0x65,0x70,0x65,0x61,0x74,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x63,0x74,0x79,0x70,0x65,0x20,0x3d,0x20,0x43,0x54,0x53,0x74,0x61, + 0x74,0x65,0x2e,0x74,0x61,0x62,0x5b,0x72,0x65,0x66,0x63,0x74,0x2e,0x74,0x79,0x70, + 0x65,0x69,0x64,0x5d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x63,0x74,0x79,0x70, + 0x65,0x2e,0x73,0x69,0x62,0x20,0x3d,0x3d,0x20,0x30,0x20,0x74,0x68,0x65,0x6e,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x72, + 0x65,0x66,0x63,0x74,0x20,0x3d,0x20,0x72,0x65,0x66,0x63,0x74,0x5f,0x66,0x72,0x6f, + 0x6d,0x5f,0x69,0x64,0x28,0x63,0x74,0x79,0x70,0x65,0x2e,0x73,0x69,0x62,0x29,0x0a, + 0x20,0x20,0x75,0x6e,0x74,0x69,0x6c,0x20,0x72,0x65,0x66,0x63,0x74,0x2e,0x77,0x68, + 0x61,0x74,0x20,0x7e,0x3d,0x20,0x22,0x61,0x74,0x74,0x72,0x69,0x62,0x22,0x20,0x2d, + 0x2d,0x20,0x50,0x75,0x72,0x65,0x20,0x61,0x74,0x74,0x72,0x69,0x62,0x73,0x20,0x61, + 0x72,0x65,0x20,0x73,0x6b,0x69,0x70,0x70,0x65,0x64,0x2e,0x0a,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x72,0x65,0x66,0x63,0x74,0x0a,0x65,0x6e,0x64,0x0a,0x0a, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73, + 0x69,0x62,0x6c,0x69,0x6e,0x67,0x73,0x28,0x72,0x65,0x66,0x63,0x74,0x29,0x0a,0x20, + 0x20,0x2d,0x2d,0x20,0x46,0x6f,0x6c,0x6c,0x6f,0x77,0x20,0x74,0x6f,0x20,0x74,0x68, + 0x65,0x20,0x65,0x6e,0x64,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x61,0x74,0x74, + 0x72,0x69,0x62,0x20,0x63,0x68,0x61,0x69,0x6e,0x2c,0x20,0x69,0x66,0x20,0x61,0x6e, + 0x79,0x2e,0x0a,0x20,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x72,0x65,0x66,0x63,0x74, + 0x2e,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x73,0x20,0x64,0x6f,0x0a,0x20, + 0x20,0x20,0x20,0x72,0x65,0x66,0x63,0x74,0x20,0x3d,0x20,0x72,0x65,0x66,0x63,0x74, + 0x5f,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x28,0x72,0x65,0x66,0x63,0x74,0x2e,0x61, + 0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x73,0x2e,0x73,0x75,0x62,0x74,0x79,0x70, + 0x65,0x20,0x6f,0x72,0x20,0x43,0x54,0x53,0x74,0x61,0x74,0x65,0x2e,0x74,0x61,0x62, + 0x5b,0x72,0x65,0x66,0x63,0x74,0x2e,0x74,0x79,0x70,0x65,0x69,0x64,0x5d,0x2e,0x73, + 0x69,0x62,0x29,0x0a,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x73,0x69,0x62,0x5f,0x69,0x74,0x65,0x72,0x2c,0x20,0x6e,0x69, + 0x6c,0x2c,0x20,0x72,0x65,0x66,0x63,0x74,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x6d,0x65, + 0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x73,0x2e,0x73,0x74,0x72,0x75,0x63,0x74,0x2e, + 0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6d,0x65,0x6d,0x62,0x65,0x72,0x73,0x20, + 0x3d,0x20,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x73,0x0a,0x6d,0x65,0x74,0x61,0x74, + 0x61,0x62,0x6c,0x65,0x73,0x2e,0x66,0x75,0x6e,0x63,0x2e,0x5f,0x5f,0x69,0x6e,0x64, + 0x65,0x78,0x2e,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e,0x74,0x73,0x20,0x3d,0x20,0x73, + 0x69,0x62,0x6c,0x69,0x6e,0x67,0x73,0x0a,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c, + 0x65,0x73,0x2e,0x65,0x6e,0x75,0x6d,0x2e,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x2e, + 0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67, + 0x73,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x66,0x69,0x6e,0x64,0x5f,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x28,0x72, + 0x65,0x66,0x63,0x74,0x2c,0x20,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x6e,0x75,0x6d,0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62, + 0x65,0x72,0x28,0x6e,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x69,0x66,0x20,0x6e,0x75, + 0x6d,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x73, + 0x69,0x62,0x20,0x69,0x6e,0x20,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x73,0x28,0x72, + 0x65,0x66,0x63,0x74,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x69, + 0x66,0x20,0x6e,0x75,0x6d,0x20,0x3d,0x3d,0x20,0x31,0x20,0x74,0x68,0x65,0x6e,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73, + 0x69,0x62,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x6e,0x75,0x6d,0x20,0x3d,0x20,0x6e,0x75,0x6d,0x20,0x2d,0x20,0x31, + 0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, + 0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x73,0x69,0x62,0x20,0x69,0x6e,0x20,0x73, + 0x69,0x62,0x6c,0x69,0x6e,0x67,0x73,0x28,0x72,0x65,0x66,0x63,0x74,0x29,0x20,0x64, + 0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x73,0x69,0x62,0x2e,0x6e, + 0x61,0x6d,0x65,0x20,0x3d,0x3d,0x20,0x6e,0x61,0x6d,0x65,0x20,0x74,0x68,0x65,0x6e, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x73,0x69,0x62,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a, + 0x0a,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x73,0x2e,0x73,0x74,0x72,0x75, + 0x63,0x74,0x2e,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x6d,0x65,0x6d,0x62,0x65, + 0x72,0x20,0x3d,0x20,0x66,0x69,0x6e,0x64,0x5f,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67, + 0x0a,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x73,0x2e,0x66,0x75,0x6e,0x63, + 0x2e,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x61,0x72,0x67,0x75,0x6d,0x65,0x6e, + 0x74,0x20,0x3d,0x20,0x66,0x69,0x6e,0x64,0x5f,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67, + 0x0a,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x73,0x2e,0x65,0x6e,0x75,0x6d, + 0x2e,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x2e,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d, + 0x20,0x66,0x69,0x6e,0x64,0x5f,0x73,0x69,0x62,0x6c,0x69,0x6e,0x67,0x0a,0x0a,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x2e, + 0x74,0x79,0x70,0x65,0x6f,0x66,0x28,0x78,0x29,0x20,0x2d,0x2d,0x20,0x72,0x65,0x66, + 0x63,0x74,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x2e,0x74,0x79,0x70, + 0x65,0x6f,0x66,0x28,0x63,0x74,0x29,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x72,0x65,0x66,0x63,0x74,0x5f,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x28,0x74, + 0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x66,0x66,0x69,0x2e,0x74,0x79,0x70,0x65, + 0x6f,0x66,0x28,0x78,0x29,0x29,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x2e,0x67,0x65, + 0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x78,0x29,0x20,0x2d,0x2d, + 0x20,0x6d,0x74,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x2e,0x67,0x65, + 0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x63,0x74,0x29,0x0a,0x20, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x69,0x73,0x63,0x6d,0x61,0x70,0x5b, + 0x2d,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x28,0x66,0x66,0x69,0x2e,0x74,0x79, + 0x70,0x65,0x6f,0x66,0x28,0x78,0x29,0x29,0x5d,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x0a,0x65,0x6e, + 0x64,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x45,0x6e,0x64,0x20,0x6f,0x66,0x20,0x6d,0x6f,0x64, + 0x75,0x6c,0x65,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x75,0x67, + 0x69,0x6e,0x73,0x2e,0x66,0x66,0x69,0x2e,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x0a, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x20,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x64,0x65, + 0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x0a, + 0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x2e,0x70,0x72,0x65,0x6c,0x6f,0x61,0x64,0x5b, + 0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f, + 0x72,0x6d,0x22,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28, + 0x2e,0x2e,0x2e,0x29,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68, + 0x74,0x20,0x28,0x63,0x29,0x20,0x32,0x30,0x31,0x31,0x2d,0x32,0x30,0x31,0x32,0x20, + 0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65,0x6c,0x65,0x73,0x73,0x20, + 0x61,0x6e,0x64,0x20,0x6f,0x74,0x68,0x65,0x72,0x73,0x2e,0x0a,0x2d,0x2d,0x20,0x41, + 0x6c,0x6c,0x20,0x72,0x69,0x67,0x68,0x74,0x73,0x20,0x72,0x65,0x73,0x65,0x72,0x76, + 0x65,0x64,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d, + 0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70,0x61, + 0x6e,0x79,0x69,0x6e,0x67,0x20,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x73,0x0a, + 0x2d,0x2d,0x20,0x61,0x72,0x65,0x20,0x6d,0x61,0x64,0x65,0x20,0x61,0x76,0x61,0x69, + 0x6c,0x61,0x62,0x6c,0x65,0x20,0x75,0x6e,0x64,0x65,0x72,0x20,0x74,0x68,0x65,0x20, + 0x74,0x65,0x72,0x6d,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x45,0x63,0x6c, + 0x69,0x70,0x73,0x65,0x20,0x50,0x75,0x62,0x6c,0x69,0x63,0x20,0x4c,0x69,0x63,0x65, + 0x6e,0x73,0x65,0x20,0x76,0x31,0x2e,0x30,0x0a,0x2d,0x2d,0x20,0x77,0x68,0x69,0x63, + 0x68,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70,0x61,0x6e,0x69,0x65,0x73,0x20,0x74,0x68, + 0x69,0x73,0x20,0x64,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x2c, + 0x20,0x61,0x6e,0x64,0x20,0x69,0x73,0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c, + 0x65,0x20,0x61,0x74,0x0a,0x2d,0x2d,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77, + 0x77,0x77,0x2e,0x65,0x63,0x6c,0x69,0x70,0x73,0x65,0x2e,0x6f,0x72,0x67,0x2f,0x6c, + 0x65,0x67,0x61,0x6c,0x2f,0x65,0x70,0x6c,0x2d,0x76,0x31,0x30,0x2e,0x68,0x74,0x6d, + 0x6c,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x74,0x72,0x69,0x62,0x75, + 0x74,0x6f,0x72,0x73,0x3a,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x53,0x69,0x65, + 0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65,0x6c,0x65,0x73,0x73,0x20,0x2d,0x20,0x69, + 0x6e,0x69,0x74,0x69,0x61,0x6c,0x20,0x41,0x50,0x49,0x20,0x61,0x6e,0x64,0x20,0x69, + 0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d, + 0x20,0x50,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x2f,0x4f,0x53,0x20,0x73,0x70,0x65, + 0x63,0x69,0x66,0x69,0x63,0x20,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x20,0x61, + 0x6e,0x64,0x20,0x70,0x61,0x74,0x68,0x20,0x68,0x61,0x6e,0x64,0x6c,0x69,0x6e,0x67, + 0x2e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x72,0x6c,0x20,0x3d,0x20,0x72, + 0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, + 0x2e,0x75,0x72,0x6c,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x74,0x69,0x6c, + 0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75, + 0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x22,0x0a,0x0a,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x4d,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x0a,0x2d,0x2d,0x20,0x45,0x78, + 0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x20,0x70,0x6c,0x61,0x66,0x6f,0x72,0x6d,0x20, + 0x28,0x63,0x6f,0x75,0x6c,0x64,0x20,0x62,0x65,0x20,0x77,0x69,0x6e,0x20,0x6f,0x72, + 0x20,0x75,0x6e,0x69,0x78,0x29,0x0a,0x2d,0x2d,0x20,0x55,0x73,0x65,0x64,0x20,0x74, + 0x6f,0x20,0x6d,0x61,0x6e,0x61,0x67,0x65,0x20,0x66,0x69,0x6c,0x65,0x20,0x70,0x61, + 0x74,0x68,0x20,0x64,0x69,0x66,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x20,0x62,0x65, + 0x74,0x77,0x65,0x65,0x6e,0x20,0x74,0x68,0x65,0x20,0x32,0x20,0x70,0x6c,0x61,0x74, + 0x66,0x6f,0x72,0x6d,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x6c,0x61,0x74,0x66, + 0x6f,0x72,0x6d,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x0a,0x2d,0x2d,0x20,0x6b,0x65, + 0x65,0x70,0x20,0x61,0x6c,0x6c,0x20,0x63,0x6f,0x6d,0x70,0x75,0x74,0x65,0x64,0x20, + 0x55,0x52,0x49,0x73,0x20,0x69,0x6e,0x20,0x63,0x61,0x63,0x68,0x65,0x20,0x28,0x61, + 0x73,0x20,0x74,0x68,0x65,0x79,0x20,0x61,0x72,0x65,0x20,0x71,0x75,0x69,0x74,0x65, + 0x20,0x6c,0x6f,0x6e,0x67,0x20,0x74,0x6f,0x20,0x63,0x6f,0x6d,0x70,0x75,0x74,0x65, + 0x29,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x72,0x69,0x5f,0x63,0x61,0x63,0x68, + 0x65,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x0a,0x2d,0x2d,0x20,0x70,0x61,0x72,0x73, + 0x65,0x20,0x61,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x20,0x70, + 0x61,0x74,0x68,0x20,0x61,0x6e,0x64,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61, + 0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x6f,0x66,0x20,0x65,0x61,0x63,0x68,0x20,0x73, + 0x65,0x67,0x6d,0x65,0x6e,0x74,0x0a,0x2d,0x2d,0x20,0x79,0x6f,0x75,0x20,0x63,0x6f, + 0x75,0x6c,0x64,0x20,0x70,0x72,0x65,0x63,0x69,0x73,0x65,0x20,0x74,0x68,0x65,0x20, + 0x70,0x61,0x74,0x68,0x20,0x73,0x65,0x70,0x65,0x72,0x61,0x74,0x6f,0x72,0x2e,0x0a, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73, + 0x70,0x6c,0x69,0x74,0x28,0x70,0x61,0x74,0x68,0x2c,0x73,0x65,0x70,0x29,0x0a,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x0a,0x20,0x20, + 0x66,0x6f,0x72,0x20,0x77,0x20,0x69,0x6e,0x20,0x70,0x61,0x74,0x68,0x3a,0x67,0x6d, + 0x61,0x74,0x63,0x68,0x28,0x22,0x5b,0x5e,0x22,0x2e,0x2e,0x28,0x73,0x65,0x70,0x20, + 0x6f,0x72,0x20,0x22,0x2f,0x22,0x29,0x2e,0x2e,0x22,0x5d,0x2b,0x22,0x29,0x64,0x6f, + 0x0a,0x20,0x20,0x20,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x69,0x6e,0x73,0x65,0x72, + 0x74,0x28,0x74,0x2c,0x20,0x77,0x29,0x0a,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x20,0x74,0x61,0x62,0x6c,0x65,0x3a, + 0x20,0x6b,0x65,0x79,0x3d,0x73,0x65,0x61,0x72,0x63,0x68,0x70,0x61,0x74,0x68,0x6e, + 0x61,0x6d,0x65,0x2c,0x76,0x61,0x6c,0x75,0x65,0x3d,0x74,0x72,0x75,0x65,0x20,0x28, + 0x61,0x64,0x64,0x20,0x62,0x79,0x20,0x67,0x75,0x61,0x6e,0x79,0x75,0x29,0x0a,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f, + 0x6e,0x76,0x65,0x72,0x74,0x5f,0x74,0x6f,0x5f,0x73,0x65,0x61,0x72,0x63,0x68,0x5f, + 0x70,0x61,0x74,0x68,0x73,0x28,0x73,0x65,0x61,0x72,0x63,0x68,0x70,0x61,0x74,0x68, + 0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74,0x20,0x3d, + 0x20,0x20,0x7b,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x77,0x20,0x69, + 0x6e,0x20,0x73,0x65,0x61,0x72,0x63,0x68,0x70,0x61,0x74,0x68,0x73,0x3a,0x67,0x6d, + 0x61,0x74,0x63,0x68,0x28,0x22,0x5b,0x5e,0x3b,0x5d,0x2b,0x22,0x29,0x20,0x64,0x6f, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x5b,0x77,0x5d,0x20,0x3d,0x20, + 0x74,0x72,0x75,0x65,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x3b,0x0a,0x65,0x6e,0x64,0x0a,0x0a, + 0x2d,0x2d,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x20,0x72,0x65,0x6c,0x61, + 0x74,0x69,0x76,0x65,0x20,0x75,0x72,0x69,0x20,0x74,0x6f,0x20,0x4d,0x2e,0x62,0x61, + 0x73,0x65,0x5f,0x64,0x69,0x72,0x20,0x66,0x6f,0x72,0x20,0x61,0x20,0x67,0x69,0x76, + 0x65,0x6e,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x2c,0x20,0x66,0x6f,0x72,0x20,0x61, + 0x6e,0x64,0x72,0x6f,0x69,0x64,0x20,0x64,0x65,0x76,0x69,0x63,0x65,0x20,0x28,0x61, + 0x64,0x64,0x65,0x64,0x20,0x62,0x79,0x20,0x67,0x75,0x61,0x6e,0x79,0x75,0x29,0x0a, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63, + 0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x74,0x6f,0x5f,0x61,0x6e,0x64,0x72,0x6f,0x69, + 0x64,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x75,0x72,0x69,0x28,0x73,0x6f,0x75,0x72,0x63, + 0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x73,0x6f,0x75,0x72,0x63,0x65, + 0x3a,0x73,0x75,0x62,0x28,0x31,0x2c,0x36,0x29,0x20,0x3d,0x3d,0x20,0x22,0x61,0x73, + 0x73,0x65,0x74,0x73,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x2d,0x2d,0x20,0x72,0x65, + 0x70,0x6c,0x61,0x63,0x65,0x20,0x61,0x73,0x73,0x65,0x74,0x73,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x3d,0x20,0x73,0x6f, + 0x75,0x72,0x63,0x65,0x3a,0x73,0x75,0x62,0x28,0x38,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x4d,0x2e,0x73,0x65,0x61,0x72,0x63,0x68,0x5f, + 0x70,0x61,0x74,0x68,0x73,0x20,0x74,0x68,0x65,0x6e,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x20,0x2f,0x6d,0x6e,0x74,0x2f,0x73,0x64,0x63, + 0x61,0x72,0x64,0x2f,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x6e,0x61,0x6d,0x65,0x2f, + 0x20,0x77,0x69,0x74,0x68,0x20,0x65,0x6d,0x70,0x74,0x79,0x20,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x6b, + 0x2c,0x20,0x76,0x20,0x69,0x6e,0x20,0x70,0x61,0x69,0x72,0x73,0x28,0x4d,0x2e,0x73, + 0x65,0x61,0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x29,0x20,0x64,0x6f,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x23, + 0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x3e,0x20,0x23,0x6b,0x20,0x61,0x6e,0x64,0x20, + 0x4d,0x2e,0x73,0x65,0x61,0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x5b,0x73, + 0x6f,0x75,0x72,0x63,0x65,0x3a,0x73,0x75,0x62,0x28,0x31,0x2c,0x23,0x6b,0x29,0x5d, + 0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x3d,0x20,0x73, + 0x6f,0x75,0x72,0x63,0x65,0x3a,0x73,0x75,0x62,0x28,0x23,0x6b,0x2b,0x31,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x62,0x72,0x65,0x61,0x6b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e, + 0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x0a,0x65,0x6e,0x64,0x0a, + 0x0a,0x2d,0x2d,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x61,0x20,0x72,0x65,0x6c, + 0x61,0x74,0x69,0x76,0x65,0x20,0x75,0x72,0x69,0x20,0x74,0x6f,0x20,0x4d,0x2e,0x62, + 0x61,0x73,0x65,0x5f,0x64,0x69,0x72,0x20,0x66,0x6f,0x72,0x20,0x61,0x20,0x67,0x69, + 0x76,0x65,0x6e,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x2c,0x20,0x2c,0x20,0x66,0x6f, + 0x72,0x20,0x69,0x6f,0x73,0x20,0x73,0x69,0x6d,0x75,0x6c,0x61,0x74,0x6f,0x72,0x2f, + 0x64,0x65,0x76,0x69,0x63,0x65,0x3f,0x20,0x28,0x61,0x64,0x64,0x65,0x64,0x20,0x62, + 0x79,0x20,0x67,0x75,0x61,0x6e,0x79,0x75,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f, + 0x74,0x6f,0x5f,0x69,0x6f,0x73,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x75,0x72,0x69,0x28, + 0x73,0x6f,0x75,0x72,0x63,0x65,0x29,0x0a,0x20,0x20,0x20,0x69,0x66,0x20,0x4d,0x2e, + 0x73,0x65,0x61,0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x20,0x74,0x68,0x65, + 0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x6b,0x2c,0x20,0x76, + 0x20,0x69,0x6e,0x20,0x70,0x61,0x69,0x72,0x73,0x28,0x4d,0x2e,0x73,0x65,0x61,0x72, + 0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x23,0x73,0x6f,0x75,0x72,0x63, + 0x65,0x20,0x3e,0x20,0x23,0x6b,0x20,0x61,0x6e,0x64,0x20,0x4d,0x2e,0x73,0x65,0x61, + 0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x5b,0x73,0x6f,0x75,0x72,0x63,0x65, + 0x3a,0x73,0x75,0x62,0x28,0x31,0x2c,0x23,0x6b,0x29,0x5d,0x20,0x74,0x68,0x65,0x6e, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73, + 0x6f,0x75,0x72,0x63,0x65,0x20,0x3d,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x73, + 0x75,0x62,0x28,0x23,0x6b,0x2b,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x0a,0x65,0x6e,0x64,0x0a, + 0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20, + 0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x74,0x6f,0x5f,0x72,0x65,0x6c,0x61,0x74, + 0x69,0x76,0x65,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x75,0x72,0x69,0x28,0x73,0x6f,0x75, + 0x72,0x63,0x65,0x29,0x0a,0x20,0x20,0x20,0x69,0x66,0x20,0x4d,0x2e,0x73,0x65,0x61, + 0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x6b,0x2c,0x20,0x76,0x20,0x69,0x6e, + 0x20,0x70,0x61,0x69,0x72,0x73,0x28,0x4d,0x2e,0x73,0x65,0x61,0x72,0x63,0x68,0x5f, + 0x70,0x61,0x74,0x68,0x73,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x23,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x3e, + 0x20,0x23,0x6b,0x20,0x61,0x6e,0x64,0x20,0x4d,0x2e,0x73,0x65,0x61,0x72,0x63,0x68, + 0x5f,0x70,0x61,0x74,0x68,0x73,0x5b,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x73,0x75, + 0x62,0x28,0x31,0x2c,0x23,0x6b,0x29,0x5d,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x6f,0x75,0x72, + 0x63,0x65,0x20,0x3d,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x73,0x75,0x62,0x28, + 0x23,0x6b,0x2b,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e, + 0x64,0x0a,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d, + 0x2d,0x20,0x52,0x65,0x74,0x75,0x72,0x6e,0x73,0x20,0x61,0x20,0x52,0x46,0x43,0x32, + 0x33,0x39,0x36,0x20,0x63,0x6f,0x6d,0x70,0x6c,0x69,0x61,0x6e,0x74,0x20,0x55,0x52, + 0x49,0x20,0x66,0x6f,0x72,0x20,0x67,0x69,0x76,0x65,0x6e,0x20,0x73,0x6f,0x75,0x72, + 0x63,0x65,0x2c,0x20,0x6f,0x72,0x20,0x66,0x61,0x6c,0x73,0x65,0x20,0x69,0x66,0x20, + 0x74,0x68,0x65,0x20,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x20,0x66,0x61,0x69,0x6c, + 0x65,0x64,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x67,0x65,0x74,0x5f,0x61,0x62,0x73,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x75, + 0x72,0x69,0x20,0x28,0x73,0x6f,0x75,0x72,0x63,0x65,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x72,0x69,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x73,0x75,0x62,0x28,0x31,0x2c,0x31,0x29, + 0x20,0x3d,0x3d,0x20,0x22,0x40,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x2d,0x2d,0x20, + 0x72,0x65,0x61,0x6c,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x66,0x69,0x6c,0x65, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73, + 0x6f,0x75,0x72,0x63,0x65,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x73,0x6f,0x75,0x72, + 0x63,0x65,0x3a,0x73,0x75,0x62,0x28,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x4d,0x2e,0x62,0x61,0x73,0x65,0x5f,0x64,0x69,0x72,0x20, + 0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x63,0x6f, + 0x6e,0x76,0x65,0x72,0x74,0x5f,0x74,0x6f,0x5f,0x72,0x65,0x6c,0x61,0x74,0x69,0x76, + 0x65,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x75,0x72,0x69,0x28,0x73,0x6f,0x75,0x72,0x63, + 0x65,0x70,0x61,0x74,0x68,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x70,0x61,0x74,0x68,0x20, + 0x3d,0x20,0x4d,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73,0x6f, + 0x75,0x72,0x63,0x65,0x70,0x61,0x74,0x68,0x29,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x4d,0x2e,0x69,0x73,0x5f, + 0x70,0x61,0x74,0x68,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x28,0x6e,0x6f, + 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x70,0x61,0x74,0x68,0x29,0x20,0x74,0x68, + 0x65,0x6e,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x70,0x61,0x74,0x68,0x20, + 0x3d,0x20,0x4d,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x4d,0x2e, + 0x62,0x61,0x73,0x65,0x5f,0x64,0x69,0x72,0x20,0x2e,0x2e,0x20,0x22,0x2f,0x22,0x20, + 0x2e,0x2e,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x70,0x61,0x74, + 0x68,0x29,0x2d,0x2d,0x4d,0x2e,0x62,0x61,0x73,0x65,0x5f,0x64,0x69,0x72,0x20,0x2e, + 0x2e,0x20,0x22,0x2f,0x73,0x72,0x63,0x2f,0x22,0x20,0x2e,0x2e,0x20,0x6e,0x6f,0x72, + 0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x70,0x61,0x74,0x68,0x0a,0x2d,0x2d,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x2e,0x74,0x6f,0x5f,0x66,0x69, + 0x6c,0x65,0x5f,0x75,0x72,0x69,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65, + 0x64,0x70,0x61,0x74,0x68,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69, + 0x66,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x73,0x75,0x62,0x28,0x23,0x73,0x6f, + 0x75,0x72,0x63,0x65,0x2d,0x33,0x2c,0x2d,0x31,0x29,0x3a,0x6c,0x6f,0x77,0x65,0x72, + 0x28,0x29,0x20,0x3d,0x3d,0x20,0x22,0x2e,0x6c,0x75,0x61,0x22,0x20,0x74,0x68,0x65, + 0x6e,0x20,0x2d,0x2d,0x20,0x6c,0x6f,0x61,0x64,0x73,0x74,0x72,0x69,0x6e,0x67,0x20, + 0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x20,0x70,0x61,0x74,0x68,0x20,0x73,0x6f, + 0x75,0x72,0x63,0x65,0x20,0x66,0x69,0x6c,0x65,0x20,0x28,0x61,0x64,0x64,0x65,0x64, + 0x20,0x62,0x79,0x20,0x67,0x75,0x61,0x6e,0x79,0x75,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x61,0x6e,0x64,0x72,0x6f,0x69,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f, + 0x72,0x6d,0x20,0x3d,0x3d,0x20,0x22,0x61,0x6e,0x64,0x72,0x6f,0x69,0x64,0x22,0x20, + 0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72, + 0x74,0x5f,0x74,0x6f,0x5f,0x61,0x6e,0x64,0x72,0x6f,0x69,0x64,0x5f,0x66,0x69,0x6c, + 0x65,0x5f,0x75,0x72,0x69,0x28,0x73,0x6f,0x75,0x72,0x63,0x65,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x69,0x6f,0x73,0x20,0x3f,0x3f,0x3f, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20, + 0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x3d,0x3d,0x20,0x22,0x69,0x6f,0x73, + 0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76, + 0x65,0x72,0x74,0x5f,0x74,0x6f,0x5f,0x69,0x6f,0x73,0x5f,0x66,0x69,0x6c,0x65,0x5f, + 0x75,0x72,0x69,0x28,0x73,0x6f,0x75,0x72,0x63,0x65,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64, + 0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x4d,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69, + 0x7a,0x65,0x28,0x73,0x6f,0x75,0x72,0x63,0x65,0x29,0x0a,0x2d,0x2d,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x4d,0x2e,0x69,0x73, + 0x5f,0x70,0x61,0x74,0x68,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x28,0x6e, + 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x70,0x61,0x74,0x68,0x29,0x20,0x74, + 0x68,0x65,0x6e,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x70,0x61,0x74,0x68, + 0x20,0x3d,0x20,0x4d,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x4d, + 0x2e,0x62,0x61,0x73,0x65,0x5f,0x64,0x69,0x72,0x20,0x2e,0x2e,0x20,0x22,0x2f,0x22, + 0x20,0x2e,0x2e,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x70,0x61, + 0x74,0x68,0x29,0x2d,0x2d,0x4d,0x2e,0x62,0x61,0x73,0x65,0x5f,0x64,0x69,0x72,0x20, + 0x2e,0x2e,0x20,0x22,0x2f,0x73,0x72,0x63,0x2f,0x22,0x20,0x2e,0x2e,0x20,0x6e,0x6f, + 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x70,0x61,0x74,0x68,0x0a,0x2d,0x2d,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x2e,0x74,0x6f,0x5f,0x66, + 0x69,0x6c,0x65,0x5f,0x75,0x72,0x69,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, + 0x65,0x64,0x70,0x61,0x74,0x68,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, + 0x20,0x2d,0x2d,0x20,0x64,0x79,0x6e,0x61,0x6d,0x69,0x63,0x20,0x63,0x6f,0x64,0x65, + 0x2c,0x20,0x73,0x74,0x72,0x69,0x70,0x70,0x65,0x64,0x20,0x62,0x79,0x74,0x65,0x63, + 0x6f,0x64,0x65,0x2c,0x20,0x74,0x61,0x69,0x6c,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x2c,0x20,0x2e,0x2e,0x2e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x66,0x61,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x46,0x49,0x58,0x4d,0x45,0x3a, + 0x20,0x61,0x73,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x69,0x73,0x20,0x63,0x61, + 0x63,0x68,0x65,0x64,0x2c,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x73,0x20,0x69,0x6e, + 0x20,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x2e,0x70,0x61,0x74,0x68,0x20,0x74,0x68, + 0x61,0x74,0x20,0x6d,0x6f,0x64,0x69,0x66,0x79,0x20,0x74,0x68,0x65,0x20,0x6d,0x6f, + 0x64,0x75,0x6c,0x65,0x20,0x6e,0x61,0x6d,0x65,0x20,0x61,0x72,0x65,0x20,0x6d,0x69, + 0x73,0x73,0x65,0x64,0x0a,0x2d,0x2d,0x20,0x28,0x6d,0x6f,0x73,0x74,0x6c,0x79,0x20, + 0x61,0x66,0x66,0x65,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x20,0x6d,0x6f,0x64,0x75, + 0x6c,0x65,0x20,0x77,0x68,0x65,0x6e,0x20,0x4c,0x75,0x61,0x20,0x69,0x6e,0x74,0x65, + 0x72,0x70,0x72,0x65,0x74,0x65,0x72,0x20,0x69,0x73,0x20,0x6c,0x61,0x75,0x6e,0x63, + 0x68,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x61,0x6e,0x20,0x61,0x62,0x73,0x6f, + 0x6c,0x75,0x74,0x65,0x20,0x70,0x61,0x74,0x68,0x29,0x0a,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x65,0x74,0x5f,0x6d,0x6f, + 0x64,0x75,0x6c,0x65,0x5f,0x75,0x72,0x69,0x20,0x28,0x73,0x6f,0x75,0x72,0x63,0x65, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a, + 0x73,0x75,0x62,0x28,0x31,0x2c,0x31,0x29,0x20,0x3d,0x3d,0x20,0x22,0x40,0x22,0x20, + 0x74,0x68,0x65,0x6e,0x20,0x2d,0x2d,0x20,0x72,0x65,0x61,0x6c,0x20,0x73,0x6f,0x75, + 0x72,0x63,0x65,0x20,0x66,0x69,0x6c,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x72,0x69,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x70, + 0x61,0x74,0x68,0x20,0x3d,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x3a,0x73,0x75,0x62, + 0x28,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x70,0x61,0x74,0x68, + 0x20,0x3d,0x20,0x4d,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x73, + 0x6f,0x75,0x72,0x63,0x65,0x70,0x61,0x74,0x68,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6c,0x75,0x61,0x70,0x61,0x74,0x68, + 0x74,0x61,0x62,0x6c,0x65,0x20,0x3d,0x20,0x73,0x70,0x6c,0x69,0x74,0x20,0x28,0x70, + 0x61,0x63,0x6b,0x61,0x67,0x65,0x2e,0x70,0x61,0x74,0x68,0x2c,0x20,0x22,0x3b,0x22, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x69,0x73,0x5f,0x73,0x6f,0x75,0x72,0x63,0x65,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75, + 0x74,0x65,0x20,0x3d,0x20,0x4d,0x2e,0x69,0x73,0x5f,0x70,0x61,0x74,0x68,0x5f,0x61, + 0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x28,0x73,0x6f,0x75,0x72,0x63,0x65,0x70,0x61, + 0x74,0x68,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x77, + 0x6f,0x72,0x6b,0x61,0x72,0x72,0x6f,0x75,0x6e,0x64,0x20,0x3a,0x20,0x41,0x64,0x64, + 0x20,0x61,0x6c,0x77,0x61,0x79,0x73,0x20,0x74,0x68,0x65,0x20,0x3f,0x2e,0x6c,0x75, + 0x61,0x20,0x65,0x6e,0x74,0x72,0x79,0x20,0x74,0x6f,0x20,0x73,0x75,0x70,0x70,0x6f, + 0x72,0x74,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x74,0x68, + 0x65,0x20,0x63,0x61,0x73,0x65,0x20,0x77,0x68,0x65,0x72,0x65,0x20,0x66,0x69,0x6c, + 0x65,0x20,0x77,0x61,0x73,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x20,0x62,0x79,0x20, + 0x3a,0x20,0x22,0x6c,0x75,0x61,0x20,0x6d,0x79,0x66,0x69,0x6c,0x65,0x2e,0x6c,0x75, + 0x61,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x61,0x62,0x6c,0x65, + 0x2e,0x69,0x6e,0x73,0x65,0x72,0x74,0x28,0x6c,0x75,0x61,0x70,0x61,0x74,0x68,0x74, + 0x61,0x62,0x6c,0x65,0x2c,0x22,0x3f,0x2e,0x6c,0x75,0x61,0x22,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x69,0x2c,0x76,0x61,0x72,0x20, + 0x69,0x6e,0x20,0x69,0x70,0x61,0x69,0x72,0x73,0x28,0x6c,0x75,0x61,0x70,0x61,0x74, + 0x68,0x74,0x61,0x62,0x6c,0x65,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x61,0x76,0x6f,0x69,0x64,0x20, + 0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x20,0x70,0x61,0x74,0x74,0x65,0x72,0x6e, + 0x73,0x20,0x6d,0x61,0x74,0x63,0x68,0x69,0x6e,0x67,0x20,0x61,0x62,0x73,0x6f,0x6c, + 0x75,0x74,0x65,0x20,0x6f,0x6e,0x65,0x73,0x20,0x28,0x65,0x2e,0x67,0x2e,0x20,0x3f, + 0x2e,0x6c,0x75,0x61,0x20,0x6d,0x61,0x74,0x63,0x68,0x65,0x73,0x20,0x61,0x6e,0x79, + 0x74,0x68,0x69,0x6e,0x67,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x4d,0x2e,0x69,0x73,0x5f,0x70,0x61,0x74,0x68,0x5f, + 0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x28,0x76,0x61,0x72,0x29,0x20,0x3d,0x3d, + 0x20,0x69,0x73,0x5f,0x73,0x6f,0x75,0x72,0x63,0x65,0x5f,0x61,0x62,0x73,0x6f,0x6c, + 0x75,0x74,0x65,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x65, + 0x73,0x63,0x61,0x70,0x65,0x64,0x20,0x3d,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e, + 0x67,0x73,0x75,0x62,0x28,0x4d,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65, + 0x28,0x76,0x61,0x72,0x29,0x2c,0x22,0x5b,0x25,0x5e,0x25,0x24,0x25,0x28,0x25,0x29, + 0x25,0x25,0x25,0x2e,0x25,0x5b,0x25,0x5d,0x25,0x2a,0x25,0x2b,0x25,0x2d,0x25,0x3f, + 0x5d,0x22,0x2c,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x63,0x29,0x20,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x25,0x22,0x2e,0x2e,0x63,0x20,0x65,0x6e,0x64, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x61,0x74,0x74,0x65,0x72,0x6e,0x20, + 0x3d,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73,0x75,0x62,0x28,0x65,0x73, + 0x63,0x61,0x70,0x65,0x64,0x2c,0x22,0x25,0x25,0x25,0x3f,0x22,0x2c,0x22,0x28,0x2e, + 0x2b,0x29,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6d,0x6f,0x64,0x75,0x6c, + 0x65,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x6d, + 0x61,0x74,0x63,0x68,0x28,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x70, + 0x61,0x74,0x68,0x2c,0x70,0x61,0x74,0x74,0x65,0x72,0x6e,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x6d,0x6f,0x64,0x75,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x20,0x74,0x68,0x65,0x6e,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x20,0x3d, + 0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73,0x75,0x62,0x28,0x6d,0x6f,0x64, + 0x75,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x2c,0x22,0x2f,0x22,0x2c,0x22,0x2e,0x22,0x29, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x69,0x66,0x20,0x77,0x65,0x20,0x66, + 0x69,0x6e,0x64,0x20,0x6d,0x6f,0x72,0x65,0x20,0x74,0x68,0x61,0x6e,0x20,0x31,0x20, + 0x70,0x6f,0x73,0x73,0x69,0x62,0x6c,0x65,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x6e, + 0x61,0x6d,0x65,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x68,0x65,0x20,0x73, + 0x68,0x6f,0x72,0x74,0x65,0x72,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f, + 0x74,0x20,0x75,0x72,0x69,0x20,0x6f,0x72,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e, + 0x6c,0x65,0x6e,0x28,0x75,0x72,0x69,0x29,0x3e,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e, + 0x6c,0x65,0x6e,0x28,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x29,0x20, + 0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x72,0x69, + 0x20,0x3d,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x75,0x72,0x69,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x22,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x3a,0x2f,0x2f,0x2f,0x22,0x2e,0x2e,0x75, + 0x72,0x69,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x61,0x6c,0x73,0x65,0x0a, + 0x65,0x6e,0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e, + 0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x20,0x28,0x73,0x6f,0x75,0x72,0x63,0x65,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x73,0x65,0x61,0x72,0x63,0x68,0x20,0x69, + 0x6e,0x20,0x63,0x61,0x63,0x68,0x65,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x75,0x72,0x69,0x20,0x3d,0x20,0x75,0x72,0x69,0x5f,0x63,0x61,0x63,0x68, + 0x65,0x5b,0x73,0x6f,0x75,0x72,0x63,0x65,0x5d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x75,0x72,0x69,0x20,0x7e,0x3d,0x20,0x6e,0x69,0x6c,0x20,0x74,0x68,0x65,0x6e, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x75,0x72,0x69,0x20,0x65,0x6e,0x64,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x6e,0x6f,0x74,0x20,0x66,0x6f,0x75,0x6e, + 0x64,0x2c,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x20,0x75,0x72,0x69,0x0a,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x75,0x74,0x69,0x6c,0x2e,0x66,0x65,0x61,0x74,0x75,0x72, + 0x65,0x73,0x2e,0x75,0x72,0x69,0x20,0x3d,0x3d,0x20,0x22,0x6d,0x6f,0x64,0x75,0x6c, + 0x65,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x75,0x72,0x69,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6d,0x6f,0x64,0x75,0x6c,0x65, + 0x5f,0x75,0x72,0x69,0x28,0x73,0x6f,0x75,0x72,0x63,0x65,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x75,0x72,0x69,0x20, + 0x74,0x68,0x65,0x6e,0x20,0x75,0x72,0x69,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x61, + 0x62,0x73,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x75,0x72,0x69,0x20,0x28,0x73,0x6f,0x75, + 0x72,0x63,0x65,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, + 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x72,0x69,0x20,0x3d,0x20, + 0x20,0x67,0x65,0x74,0x5f,0x61,0x62,0x73,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x75,0x72, + 0x69,0x20,0x28,0x73,0x6f,0x75,0x72,0x63,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x75,0x72,0x69,0x5f,0x63,0x61,0x63,0x68, + 0x65,0x5b,0x73,0x6f,0x75,0x72,0x63,0x65,0x5d,0x20,0x3d,0x20,0x75,0x72,0x69,0x0a, + 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x75,0x72,0x69,0x0a,0x65, + 0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x20,0x67,0x65,0x74,0x20,0x70,0x61,0x74,0x68,0x20, + 0x66,0x69,0x6c,0x65,0x20,0x66,0x72,0x6f,0x6d,0x20,0x75,0x72,0x69,0x0a,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x67,0x65,0x74,0x5f,0x70,0x61,0x74, + 0x68,0x20,0x28,0x75,0x72,0x69,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x5f,0x70,0x61,0x74,0x68,0x20,0x3d,0x20, + 0x61,0x73,0x73,0x65,0x72,0x74,0x28,0x75,0x72,0x6c,0x2e,0x70,0x61,0x72,0x73,0x65, + 0x28,0x75,0x72,0x69,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x70,0x61, + 0x72,0x73,0x65,0x64,0x5f,0x70,0x61,0x74,0x68,0x2e,0x73,0x63,0x68,0x65,0x6d,0x65, + 0x20,0x3d,0x3d,0x20,0x22,0x66,0x69,0x6c,0x65,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d, + 0x2e,0x74,0x6f,0x5f,0x70,0x61,0x74,0x68,0x28,0x70,0x61,0x72,0x73,0x65,0x64,0x5f, + 0x70,0x61,0x74,0x68,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x73,0x65,0x61,0x72,0x63,0x68, + 0x20,0x69,0x6e,0x20,0x63,0x61,0x63,0x68,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x20,0x77,0x65,0x20,0x73,0x68,0x6f,0x75,0x6c,0x64,0x20,0x73, + 0x75,0x72,0x65,0x6c,0x79,0x20,0x63,0x61,0x6c,0x63,0x75,0x6c,0x61,0x74,0x65,0x20, + 0x69,0x74,0x20,0x69,0x6e,0x73,0x74,0x65,0x61,0x64,0x20,0x6f,0x66,0x20,0x66,0x69, + 0x6e,0x64,0x20,0x69,0x6e,0x20,0x63,0x61,0x63,0x68,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x6b,0x2c,0x76,0x20,0x69,0x6e,0x20,0x70, + 0x61,0x69,0x72,0x73,0x28,0x75,0x72,0x69,0x5f,0x63,0x61,0x63,0x68,0x65,0x29,0x64, + 0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x76,0x20,0x3d,0x3d,0x20,0x75,0x72,0x69,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61, + 0x73,0x73,0x65,0x72,0x74,0x28,0x6b,0x3a,0x73,0x75,0x62,0x28,0x31,0x2c,0x31,0x29, + 0x20,0x3d,0x3d,0x20,0x22,0x40,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x6b,0x3a,0x73,0x75,0x62,0x28,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64, + 0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x6e,0x6f,0x72, + 0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x70,0x61,0x74,0x68,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x61,0x72,0x74,0x73,0x20,0x3d,0x20,0x7b, + 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x77,0x20,0x69,0x6e,0x20, + 0x70,0x61,0x74,0x68,0x3a,0x67,0x6d,0x61,0x74,0x63,0x68,0x28,0x22,0x5b,0x5e,0x2f, + 0x5d,0x2b,0x22,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x20,0x20,0x20,0x20,0x77,0x20,0x3d,0x3d,0x20,0x22,0x2e,0x2e,0x22, + 0x20,0x61,0x6e,0x64,0x20,0x23,0x70,0x61,0x72,0x74,0x73,0x20,0x7e,0x3d,0x30,0x20, + 0x74,0x68,0x65,0x6e,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76, + 0x65,0x28,0x70,0x61,0x72,0x74,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x77,0x20,0x7e,0x3d,0x20,0x22,0x2e,0x22, + 0x20,0x20,0x74,0x68,0x65,0x6e,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x69,0x6e,0x73, + 0x65,0x72,0x74,0x28,0x70,0x61,0x72,0x74,0x73,0x2c,0x20,0x77,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e, + 0x64,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x70,0x61, + 0x74,0x68,0x3a,0x73,0x75,0x62,0x28,0x31,0x2c,0x31,0x29,0x20,0x3d,0x3d,0x20,0x22, + 0x2f,0x22,0x20,0x61,0x6e,0x64,0x20,0x22,0x2f,0x22,0x20,0x6f,0x72,0x20,0x22,0x22, + 0x29,0x20,0x2e,0x2e,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x63,0x6f,0x6e,0x63,0x61, + 0x74,0x28,0x70,0x61,0x72,0x74,0x73,0x2c,0x20,0x22,0x2f,0x22,0x29,0x0a,0x65,0x6e, + 0x64,0x0a,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x69,0x6e, + 0x69,0x74,0x28,0x65,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x70,0x6c,0x61,0x74, + 0x66,0x6f,0x72,0x6d,0x2c,0x77,0x6f,0x72,0x6b,0x69,0x6e,0x67,0x64,0x69,0x72,0x65, + 0x63,0x74,0x6f,0x72,0x79,0x2c,0x73,0x65,0x61,0x72,0x63,0x68,0x70,0x61,0x74,0x68, + 0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x20, + 0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d, + 0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a, + 0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x63,0x68,0x65,0x63,0x6b,0x20,0x70,0x61,0x72, + 0x61,0x6d,0x65,0x74,0x65,0x72,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x65,0x78, + 0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20, + 0x61,0x6e,0x64,0x20,0x65,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x70,0x6c,0x61, + 0x74,0x66,0x6f,0x72,0x6d,0x20,0x7e,0x3d,0x20,0x22,0x75,0x6e,0x69,0x78,0x22,0x20, + 0x61,0x6e,0x64,0x20,0x65,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x70,0x6c,0x61, + 0x74,0x66,0x6f,0x72,0x6d,0x20,0x7e,0x3d,0x22,0x77,0x69,0x6e,0x22,0x20,0x61,0x6e, + 0x64,0x20,0x65,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x70,0x6c,0x61,0x74,0x66, + 0x6f,0x72,0x6d,0x20,0x7e,0x3d,0x22,0x61,0x6e,0x64,0x72,0x6f,0x69,0x64,0x22,0x20, + 0x61,0x6e,0x64,0x20,0x65,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x70,0x6c,0x61, + 0x74,0x66,0x6f,0x72,0x6d,0x20,0x7e,0x3d,0x22,0x69,0x6f,0x73,0x22,0x74,0x68,0x65, + 0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x72,0x72,0x6f,0x72,0x28, + 0x22,0x55,0x6e,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x69,0x6e,0x69,0x74,0x69, + 0x61,0x6c,0x69,0x7a,0x65,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x6d, + 0x6f,0x64,0x75,0x6c,0x65,0x20,0x3a,0x20,0x65,0x78,0x65,0x63,0x75,0x74,0x69,0x6f, + 0x6e,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x73,0x68,0x6f,0x75,0x6c, + 0x64,0x20,0x62,0x65,0x20,0x27,0x75,0x6e,0x69,0x78,0x27,0x20,0x6f,0x72,0x20,0x27, + 0x77,0x69,0x6e,0x27,0x2e,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x75,0x73,0x65,0x20,0x70,0x61,0x72,0x61, + 0x6d,0x65,0x74,0x65,0x72,0x20,0x61,0x73,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74, + 0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x65,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x70,0x6c,0x61,0x74,0x66,0x6f, + 0x72,0x6d,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x3d,0x20,0x65,0x78,0x65,0x63,0x75, + 0x74,0x69,0x6f,0x6e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x0a,0x20,0x20,0x20, + 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d, + 0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x74,0x72, + 0x79,0x20,0x74,0x6f,0x20,0x67,0x75,0x65,0x73,0x73,0x20,0x69,0x74,0x2e,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x73,0x77,0x69,0x6e,0x64,0x6f,0x77,0x73,0x28, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x70,0x20,0x3d,0x20,0x69,0x6f,0x2e,0x70,0x6f,0x70,0x65,0x6e, + 0x28,0x22,0x65,0x63,0x68,0x6f,0x20,0x25,0x6f,0x73,0x25,0x22,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x70,0x20,0x74, + 0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x73,0x75,0x6c,0x74, + 0x20,0x3d,0x70,0x3a,0x72,0x65,0x61,0x64,0x28,0x22,0x2a,0x6c,0x22,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70, + 0x3a,0x63,0x6c,0x6f,0x73,0x65,0x28,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x3d,0x20,0x22,0x57,0x69,0x6e,0x64,0x6f, + 0x77,0x73,0x5f,0x4e,0x54,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x61,0x6c,0x73,0x65,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x74,0x61,0x74,0x75, + 0x73,0x2c,0x20,0x69,0x73,0x77,0x69,0x6e,0x20,0x3d,0x20,0x70,0x63,0x61,0x6c,0x6c, + 0x28,0x69,0x73,0x77,0x69,0x6e,0x64,0x6f,0x77,0x73,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x73,0x74,0x61,0x74,0x75,0x73,0x20,0x61,0x6e, + 0x64,0x20,0x69,0x73,0x77,0x69,0x6e,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72, + 0x6d,0x20,0x3d,0x20,0x22,0x77,0x69,0x6e,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x3d,0x20,0x22,0x75, + 0x6e,0x69,0x78,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64, + 0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x64,0x65,0x70,0x65,0x6e,0x64,0x65, + 0x6e,0x74,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x20,0x20,0x20,0x20,0x69, + 0x66,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x3d,0x3d,0x20,0x22,0x75, + 0x6e,0x69,0x78,0x22,0x20,0x6f,0x72,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d, + 0x20,0x3d,0x3d,0x20,0x22,0x61,0x6e,0x64,0x72,0x6f,0x69,0x64,0x22,0x20,0x6f,0x72, + 0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x3d,0x3d,0x20,0x22,0x69,0x6f, + 0x73,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x54,0x68,0x65,0x20,0x50,0x61,0x74,0x68,0x20,0x73,0x65,0x70,0x61, + 0x72,0x61,0x74,0x6f,0x72,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4d,0x2e,0x70,0x61,0x74,0x68,0x5f,0x73, + 0x65,0x70,0x20,0x3d,0x20,0x22,0x2f,0x22,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x20,0x54,0x4f,0x44,0x4f,0x20,0x74,0x68,0x65,0x20,0x77,0x61, + 0x79,0x20,0x74,0x6f,0x20,0x67,0x65,0x74,0x20,0x74,0x68,0x65,0x20,0x61,0x62,0x73, + 0x6f,0x6c,0x75,0x74,0x65,0x20,0x70,0x61,0x74,0x68,0x20,0x63,0x61,0x6e,0x20,0x62, + 0x65,0x20,0x77,0x72,0x6f,0x6e,0x67,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x20,0x70, + 0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,0x6c,0x6f,0x61,0x64,0x73,0x20,0x6e,0x65,0x77, + 0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x66,0x69,0x6c,0x65,0x73,0x20,0x62,0x79, + 0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x20,0x70,0x61,0x74,0x68,0x20,0x61, + 0x66,0x74,0x65,0x72,0x20,0x61,0x20,0x63,0x64,0x2e,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x6c,0x79,0x2c, + 0x20,0x74,0x68,0x65,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x69, + 0x73,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x65,0x64,0x20,0x6f,0x6e,0x20, + 0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x74,0x68,0x69,0x73,0x20,0x61,0x6c,0x6c,0x6f, + 0x77,0x73,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,0x74,0x6f,0x20,0x6c,0x6f, + 0x61,0x64,0x20,0x61,0x6e,0x79,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x66,0x69, + 0x6c,0x65,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x6e,0x20,0x63,0x68,0x61,0x6e, + 0x67,0x65,0x20,0x77,0x6f,0x72,0x6b,0x69,0x6e,0x67,0x20,0x64,0x69,0x72,0x2c,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x77,0x68,0x69,0x63,0x68, + 0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x6d,0x6f,0x73,0x74,0x20,0x63,0x6f,0x6d, + 0x6d,0x6f,0x6e,0x20,0x75,0x73,0x65,0x20,0x63,0x61,0x73,0x65,0x2e,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x4d,0x2e,0x62,0x61,0x73,0x65,0x5f,0x64,0x69,0x72, + 0x20,0x3d,0x20,0x77,0x6f,0x72,0x6b,0x69,0x6e,0x67,0x64,0x69,0x72,0x65,0x63,0x74, + 0x6f,0x72,0x79,0x20,0x6f,0x72,0x20,0x6f,0x73,0x2e,0x67,0x65,0x74,0x65,0x6e,0x76, + 0x28,0x22,0x50,0x57,0x44,0x22,0x29,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x2d,0x2d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x70,0x61,0x72,0x73, + 0x65,0x64,0x20,0x55,0x52,0x4c,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20, + 0x66,0x69,0x6c,0x65,0x20,0x70,0x61,0x74,0x68,0x20,0x20,0x66,0x6f,0x72,0x20,0x74, + 0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x4f,0x53,0x20,0x28,0x73, + 0x65,0x65,0x20,0x75,0x72,0x6c,0x2e,0x70,0x61,0x72,0x73,0x65,0x20,0x66,0x72,0x6f, + 0x6d,0x20,0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x4d,0x2e,0x74,0x6f,0x5f,0x66,0x69,0x6c,0x65,0x5f,0x75, + 0x72,0x69,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x28,0x70, + 0x61,0x74,0x68,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x66,0x69,0x6e,0x64,0x28, + 0x70,0x61,0x74,0x68,0x2c,0x22,0x2f,0x22,0x29,0x20,0x7e,0x3d,0x20,0x31,0x20,0x74, + 0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x70,0x61,0x74,0x68,0x3d,0x22,0x2f,0x22,0x2e,0x2e,0x70,0x61, + 0x74,0x68,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x75,0x72,0x6c,0x2e,0x62,0x75,0x69,0x6c,0x64,0x7b, + 0x73,0x63,0x68,0x65,0x6d,0x65,0x3d,0x22,0x66,0x69,0x6c,0x65,0x22,0x2c,0x61,0x75, + 0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x3d,0x22,0x22,0x2c,0x20,0x70,0x61,0x74,0x68, + 0x3d,0x70,0x61,0x74,0x68,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x72,0x75,0x65,0x20,0x69,0x73,0x20,0x74,0x68, + 0x65,0x20,0x70,0x61,0x74,0x68,0x20,0x69,0x73,0x20,0x61,0x62,0x73,0x6f,0x6c,0x75, + 0x74,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x74,0x68, + 0x65,0x20,0x70,0x61,0x74,0x68,0x20,0x6d,0x75,0x73,0x74,0x20,0x62,0x65,0x20,0x6e, + 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x4d,0x2e,0x69,0x73,0x5f,0x70,0x61,0x74,0x68,0x5f,0x61,0x62,0x73,0x6f, + 0x6c,0x75,0x74,0x65,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20, + 0x28,0x70,0x61,0x74,0x68,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x61, + 0x74,0x68,0x3a,0x73,0x75,0x62,0x28,0x31,0x2c,0x31,0x29,0x20,0x3d,0x3d,0x20,0x22, + 0x2f,0x22,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x61,0x62,0x73,0x6f,0x6c, + 0x75,0x74,0x65,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x64,0x20,0x70, + 0x61,0x74,0x68,0x20,0x66,0x69,0x6c,0x65,0x20,0x74,0x6f,0x20,0x75,0x72,0x69,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4d,0x2e,0x74,0x6f,0x5f,0x70,0x61,0x74, + 0x68,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x28,0x70,0x61, + 0x72,0x73,0x65,0x64,0x5f,0x75,0x72,0x6c,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x75,0x72,0x6c,0x2e,0x75,0x6e,0x65,0x73,0x63,0x61,0x70,0x65,0x28,0x70,0x61, + 0x72,0x73,0x65,0x64,0x5f,0x75,0x72,0x6c,0x2e,0x70,0x61,0x74,0x68,0x29,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x49,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74, + 0x61,0x74,0x69,0x6f,0x6e,0x73,0x20,0x66,0x6f,0x72,0x20,0x57,0x69,0x6e,0x64,0x6f, + 0x77,0x73,0x2c,0x20,0x73,0x65,0x65,0x20,0x55,0x4e,0x49,0x58,0x20,0x76,0x65,0x72, + 0x73,0x69,0x6f,0x6e,0x73,0x20,0x66,0x6f,0x72,0x20,0x64,0x6f,0x63,0x75,0x6d,0x65, + 0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x2e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x4d,0x2e,0x70,0x61,0x74,0x68,0x5f,0x73,0x65,0x70,0x20,0x3d,0x20,0x22,0x5c, + 0x5c,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4d,0x2e,0x69,0x73,0x5f, + 0x70,0x61,0x74,0x68,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x20,0x3d,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x28,0x70,0x61,0x74,0x68,0x29,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x61,0x74,0x68,0x3a,0x6d,0x61,0x74,0x63, + 0x68,0x28,0x22,0x5e,0x25,0x61,0x3a,0x2f,0x22,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4d,0x2e,0x74,0x6f,0x5f,0x66,0x69,0x6c,0x65, + 0x5f,0x75,0x72,0x69,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20, + 0x28,0x70,0x61,0x74,0x68,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x75,0x72, + 0x6c,0x2e,0x62,0x75,0x69,0x6c,0x64,0x7b,0x73,0x63,0x68,0x65,0x6d,0x65,0x3d,0x22, + 0x66,0x69,0x6c,0x65,0x22,0x2c,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x3d, + 0x22,0x22,0x2c,0x20,0x70,0x61,0x74,0x68,0x3d,0x22,0x2f,0x22,0x2e,0x2e,0x70,0x61, + 0x74,0x68,0x7d,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x4d,0x2e,0x74,0x6f,0x5f,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x20,0x28,0x70,0x61,0x72,0x73,0x65,0x64,0x5f,0x75,0x72,0x6c, + 0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x75,0x72,0x6c,0x2e,0x75,0x6e,0x65, + 0x73,0x63,0x61,0x70,0x65,0x28,0x70,0x61,0x72,0x73,0x65,0x64,0x5f,0x75,0x72,0x6c, + 0x2e,0x70,0x61,0x74,0x68,0x29,0x3a,0x67,0x73,0x75,0x62,0x28,0x22,0x5e,0x2f,0x22, + 0x2c,0x20,0x22,0x22,0x29,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x6e,0x69,0x78,0x6e,0x6f,0x72, + 0x6d,0x61,0x6c,0x69,0x7a,0x65,0x20,0x3d,0x20,0x4d,0x2e,0x6e,0x6f,0x72,0x6d,0x61, + 0x6c,0x69,0x7a,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4d,0x2e,0x6e, + 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x70,0x61,0x74,0x68,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x75,0x6e,0x69,0x78,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x70, + 0x61,0x74,0x68,0x3a,0x67,0x73,0x75,0x62,0x28,0x22,0x5c,0x5c,0x22,0x2c,0x22,0x2f, + 0x22,0x29,0x3a,0x6c,0x6f,0x77,0x65,0x72,0x28,0x29,0x29,0x20,0x65,0x6e,0x64,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x64,0x65,0x74,0x65, + 0x72,0x6d,0x69,0x6e,0x65,0x20,0x62,0x61,0x73,0x65,0x20,0x64,0x69,0x72,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x65,0x74,0x77,0x6f,0x72,0x6b,0x69,0x6e,0x67, + 0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x28,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x20, + 0x3d,0x20,0x69,0x6f,0x2e,0x70,0x6f,0x70,0x65,0x6e,0x28,0x22,0x65,0x63,0x68,0x6f, + 0x20,0x25,0x63,0x64,0x25,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x70,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x72,0x65,0x73,0x20,0x3d,0x20,0x70,0x3a,0x72,0x65,0x61,0x64, + 0x28,0x22,0x2a,0x6c,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x3a,0x63,0x6c,0x6f,0x73,0x65,0x28,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c, + 0x69,0x7a,0x65,0x28,0x72,0x65,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4d,0x2e,0x62, + 0x61,0x73,0x65,0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x77,0x6f,0x72,0x6b,0x69,0x6e, + 0x67,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x6f,0x72,0x20,0x67,0x65, + 0x74,0x77,0x6f,0x72,0x6b,0x69,0x6e,0x67,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72, + 0x79,0x28,0x29,0x0a,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x2d,0x2d,0x66,0x69,0x78,0x20,0x62,0x75,0x67,0x3a,0x20,0x63,0x61,0x6e,0x20, + 0x6e,0x6f,0x74,0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x77,0x68,0x65,0x6e,0x20,0x70, + 0x72,0x6f,0x6a,0x65,0x63,0x74,0x20,0x70,0x61,0x74,0x68,0x20,0x63,0x6f,0x6e,0x74, + 0x61,0x69,0x6e,0x73,0x20,0x62,0x6c,0x61,0x6e,0x6b,0x0a,0x20,0x20,0x20,0x20,0x2d, + 0x2d,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x20,0x62,0x6c,0x61,0x6e,0x6b,0x20,0x77, + 0x69,0x74,0x68,0x20,0x25,0x32,0x30,0x20,0x28,0x61,0x64,0x64,0x20,0x62,0x79,0x20, + 0x67,0x75,0x61,0x6e,0x79,0x75,0x29,0x0a,0x20,0x20,0x20,0x20,0x4d,0x2e,0x62,0x61, + 0x73,0x65,0x5f,0x64,0x69,0x72,0x20,0x3d,0x20,0x4d,0x2e,0x62,0x61,0x73,0x65,0x5f, + 0x64,0x69,0x72,0x3a,0x67,0x73,0x75,0x62,0x28,0x22,0x20,0x22,0x2c,0x22,0x25,0x25, + 0x32,0x30,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x74,0x68,0x65,0x20, + 0x6a,0x73,0x2f,0x6c,0x75,0x61,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x65, + 0x61,0x72,0x63,0x68,0x70,0x61,0x74,0x68,0x20,0x69,0x66,0x20,0x68,0x61,0x73,0x20, + 0x6d,0x6f,0x72,0x65,0x20,0x74,0x68,0x65,0x6e,0x20,0x6f,0x6e,0x65,0x2c,0x20,0x73, + 0x70,0x6c,0x69,0x74,0x20,0x74,0x68,0x65,0x6d,0x20,0x77,0x69,0x74,0x68,0x20,0x61, + 0x20,0x73,0x65,0x6d,0x69,0x63,0x6f,0x6c,0x6f,0x6e,0x20,0x22,0x3b,0x22,0x20,0x28, + 0x61,0x64,0x64,0x65,0x64,0x20,0x62,0x79,0x20,0x67,0x75,0x61,0x6e,0x79,0x75,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x73,0x65,0x61,0x72,0x63,0x68,0x70,0x61, + 0x74,0x68,0x73,0x20,0x74,0x68,0x65,0x6e,0x20,0x4d,0x2e,0x73,0x65,0x61,0x72,0x63, + 0x68,0x5f,0x70,0x61,0x74,0x68,0x73,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72, + 0x74,0x5f,0x74,0x6f,0x5f,0x73,0x65,0x61,0x72,0x63,0x68,0x5f,0x70,0x61,0x74,0x68, + 0x73,0x28,0x73,0x65,0x61,0x72,0x63,0x68,0x70,0x61,0x74,0x68,0x73,0x29,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x4d,0x2e, + 0x62,0x61,0x73,0x65,0x5f,0x64,0x69,0x72,0x20,0x74,0x68,0x65,0x6e,0x20,0x65,0x72, + 0x72,0x6f,0x72,0x28,0x22,0x55,0x6e,0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x64, + 0x65,0x74,0x65,0x72,0x6d,0x69,0x6e,0x65,0x20,0x74,0x68,0x65,0x20,0x77,0x6f,0x72, + 0x6b,0x69,0x6e,0x67,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x2e,0x22, + 0x29,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x4d,0x0a,0x0a,0x65,0x6e,0x64,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x45,0x6e,0x64, + 0x20,0x6f,0x66,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x64,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x0a,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d, + 0x2d,0x20,0x20,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x0a,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x2e, + 0x70,0x72,0x65,0x6c,0x6f,0x61,0x64,0x5b,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x2e,0x75,0x74,0x69,0x6c,0x22,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x70,0x79, + 0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x32,0x30,0x31,0x31,0x2d,0x32, + 0x30,0x31,0x32,0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65,0x6c, + 0x65,0x73,0x73,0x20,0x61,0x6e,0x64,0x20,0x6f,0x74,0x68,0x65,0x72,0x73,0x2e,0x0a, + 0x2d,0x2d,0x20,0x41,0x6c,0x6c,0x20,0x72,0x69,0x67,0x68,0x74,0x73,0x20,0x72,0x65, + 0x73,0x65,0x72,0x76,0x65,0x64,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6f, + 0x67,0x72,0x61,0x6d,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x20,0x61,0x63,0x63, + 0x6f,0x6d,0x70,0x61,0x6e,0x79,0x69,0x6e,0x67,0x20,0x6d,0x61,0x74,0x65,0x72,0x69, + 0x61,0x6c,0x73,0x0a,0x2d,0x2d,0x20,0x61,0x72,0x65,0x20,0x6d,0x61,0x64,0x65,0x20, + 0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x75,0x6e,0x64,0x65,0x72,0x20, + 0x74,0x68,0x65,0x20,0x74,0x65,0x72,0x6d,0x73,0x20,0x6f,0x66,0x20,0x74,0x68,0x65, + 0x20,0x45,0x63,0x6c,0x69,0x70,0x73,0x65,0x20,0x50,0x75,0x62,0x6c,0x69,0x63,0x20, + 0x4c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x76,0x31,0x2e,0x30,0x0a,0x2d,0x2d,0x20, + 0x77,0x68,0x69,0x63,0x68,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70,0x61,0x6e,0x69,0x65, + 0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x64,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74, + 0x69,0x6f,0x6e,0x2c,0x20,0x61,0x6e,0x64,0x20,0x69,0x73,0x20,0x61,0x76,0x61,0x69, + 0x6c,0x61,0x62,0x6c,0x65,0x20,0x61,0x74,0x0a,0x2d,0x2d,0x20,0x68,0x74,0x74,0x70, + 0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x65,0x63,0x6c,0x69,0x70,0x73,0x65,0x2e,0x6f, + 0x72,0x67,0x2f,0x6c,0x65,0x67,0x61,0x6c,0x2f,0x65,0x70,0x6c,0x2d,0x76,0x31,0x30, + 0x2e,0x68,0x74,0x6d,0x6c,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x6e,0x74, + 0x72,0x69,0x62,0x75,0x74,0x6f,0x72,0x73,0x3a,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20, + 0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65,0x6c,0x65,0x73,0x73, + 0x20,0x2d,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x20,0x41,0x50,0x49,0x20,0x61, + 0x6e,0x64,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f, + 0x6e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x0a,0x2d,0x2d,0x20,0x55,0x74,0x69,0x6c,0x69,0x74,0x79,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x73,0x2e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x4d, + 0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x0a,0x2d,0x2d,0x20,0x6c,0x6f,0x67,0x20,0x73, + 0x79,0x73,0x74,0x65,0x6d,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x4c,0x45,0x56,0x45, + 0x4c,0x53,0x20,0x3d,0x20,0x7b,0x20,0x45,0x52,0x52,0x4f,0x52,0x20,0x3d,0x20,0x30, + 0x2c,0x20,0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x20,0x3d,0x20,0x31,0x2c,0x20,0x49, + 0x4e,0x46,0x4f,0x20,0x3d,0x20,0x32,0x2c,0x20,0x44,0x45,0x54,0x41,0x49,0x4c,0x20, + 0x3d,0x20,0x33,0x2c,0x20,0x44,0x45,0x42,0x55,0x47,0x20,0x3d,0x20,0x34,0x20,0x7d, + 0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x4c,0x4f,0x47,0x5f,0x4c,0x45,0x56,0x45,0x4c, + 0x20,0x3d,0x20,0x4c,0x45,0x56,0x45,0x4c,0x53,0x2e,0x57,0x41,0x52,0x4e,0x49,0x4e, + 0x47,0x0a,0x0a,0x2d,0x2d,0x20,0x44,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x66, + 0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x20,0x68,0x61,0x6e,0x64,0x6c,0x69,0x6e,0x67, + 0x2e,0x20,0x41,0x6e,0x79,0x20,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x20,0x63,0x61, + 0x6e,0x20,0x62,0x65,0x20,0x67,0x65,0x74,0x20,0x6c,0x69,0x6b,0x65,0x20,0x61,0x6e, + 0x79,0x20,0x72,0x65,0x67,0x75,0x6c,0x61,0x72,0x20,0x74,0x61,0x62,0x6c,0x65,0x2c, + 0x20,0x73,0x65,0x74,0x74,0x69,0x6e,0x67,0x20,0x66,0x65,0x61,0x74,0x75,0x72,0x65, + 0x73,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x69,0x6e,0x0a,0x2d,0x2d,0x20,0x65, + 0x72,0x72,0x6f,0x72,0x20,0x66,0x6f,0x72,0x20,0x75,0x6e,0x6b,0x6e,0x6f,0x77,0x6e, + 0x20,0x6f,0x72,0x20,0x72,0x65,0x61,0x64,0x2d,0x6f,0x6e,0x6c,0x79,0x20,0x66,0x65, + 0x61,0x74,0x75,0x72,0x65,0x73,0x2e,0x0a,0x4d,0x2e,0x66,0x65,0x61,0x74,0x75,0x72, + 0x65,0x73,0x20,0x3d,0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c, + 0x65,0x28,0x7b,0x20,0x7d,0x2c,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x66, + 0x6f,0x72,0x6d,0x61,0x74,0x2f,0x76,0x61,0x6c,0x69,0x64,0x61,0x74,0x65,0x20,0x64, + 0x61,0x74,0x61,0x2e,0x20,0x49,0x66,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x70,0x72,0x6f,0x76,0x69,0x64,0x65,0x64, + 0x2c,0x20,0x74,0x68,0x65,0x20,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x20,0x63,0x61, + 0x6e,0x6e,0x6f,0x74,0x20,0x62,0x65,0x20,0x6d,0x6f,0x64,0x69,0x66,0x69,0x65,0x64, + 0x2e,0x0a,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x69,0x64,0x61,0x74,0x6f,0x72,0x73, + 0x20,0x3d,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x75,0x6c, + 0x74,0x69,0x70,0x6c,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x73,0x20,0x3d, + 0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x63,0x6f,0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x74,0x6f, + 0x73,0x74,0x72,0x69,0x6e,0x67,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6d,0x61,0x78,0x5f,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x20,0x3d,0x20,0x74, + 0x6f,0x6e,0x75,0x6d,0x62,0x65,0x72,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6d,0x61,0x78,0x5f,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75, + 0x6d,0x62,0x65,0x72,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61, + 0x78,0x5f,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62, + 0x65,0x72,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x68,0x6f,0x77, + 0x5f,0x68,0x69,0x64,0x64,0x65,0x6e,0x20,0x3d,0x20,0x74,0x6f,0x6e,0x75,0x6d,0x62, + 0x65,0x72,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x72,0x69,0x20, + 0x3d,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x67,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x20,0x3d,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6c,0x65,0x76,0x65,0x6c,0x5f,0x6e, + 0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x2d,0x2d,0x20,0x73,0x65,0x74,0x20,0x6e,0x75,0x6d,0x65,0x72,0x69,0x63,0x61, + 0x6c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x69,0x6e,0x20,0x69,0x6e,0x74,0x65,0x72, + 0x6e,0x61,0x6c,0x20,0x76,0x61,0x72,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x4c,0x4f,0x47,0x5f,0x4c,0x45,0x56,0x45,0x4c,0x20,0x3d,0x20, + 0x61,0x73,0x73,0x65,0x72,0x74,0x28,0x4c,0x45,0x56,0x45,0x4c,0x53,0x5b,0x6c,0x65, + 0x76,0x65,0x6c,0x5f,0x6e,0x61,0x6d,0x65,0x5d,0x2c,0x20,0x22,0x4e,0x6f,0x20,0x73, + 0x75,0x63,0x68,0x20,0x6c,0x65,0x76,0x65,0x6c,0x22,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6c, + 0x65,0x76,0x65,0x6c,0x5f,0x6e,0x61,0x6d,0x65,0x20,0x2d,0x2d,0x20,0x74,0x68,0x65, + 0x20,0x64,0x69,0x73,0x70,0x6c,0x61,0x79,0x65,0x64,0x20,0x6c,0x65,0x76,0x65,0x6c, + 0x20,0x69,0x73,0x20,0x73,0x74,0x69,0x6c,0x6c,0x20,0x74,0x68,0x65,0x20,0x6e,0x61, + 0x6d,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a, + 0x20,0x20,0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x20,0x20,0x5f,0x5f,0x69,0x6e,0x64, + 0x65,0x78,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d, + 0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x73, + 0x20,0x3d,0x20,0x30,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e, + 0x63,0x6f,0x64,0x69,0x6e,0x67,0x20,0x3d,0x22,0x55,0x54,0x46,0x2d,0x38,0x22,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x5f,0x63,0x68,0x69, + 0x6c,0x64,0x72,0x65,0x6e,0x20,0x3d,0x20,0x33,0x32,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x5f,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x30, + 0x78,0x46,0x46,0x46,0x46,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d, + 0x61,0x78,0x5f,0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x31,0x2c,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x68,0x6f,0x77,0x5f,0x68,0x69,0x64,0x64,0x65, + 0x6e,0x20,0x3d,0x20,0x31,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75, + 0x72,0x69,0x20,0x3d,0x20,0x22,0x66,0x69,0x6c,0x65,0x22,0x2c,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x67,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x20,0x3d, + 0x20,0x22,0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x72,0x65,0x61,0x64,0x20,0x6f,0x6e,0x6c,0x79, + 0x20,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x73,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x5f,0x73,0x75,0x70,0x70,0x6f, + 0x72,0x74,0x73,0x5f,0x74,0x68,0x72,0x65,0x61,0x64,0x73,0x20,0x3d,0x20,0x30,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67, + 0x65,0x5f,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x22,0x4c,0x75,0x61,0x22,0x2c,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65, + 0x5f,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x5f,0x56,0x45,0x52,0x53, + 0x49,0x4f,0x4e,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x72,0x6f, + 0x74,0x6f,0x63,0x6f,0x6c,0x5f,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x3d,0x20, + 0x31,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x70,0x70,0x6f, + 0x72,0x74,0x73,0x5f,0x61,0x73,0x79,0x6e,0x63,0x20,0x3d,0x20,0x31,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x61,0x74,0x61,0x5f,0x65,0x6e,0x63,0x6f, + 0x64,0x69,0x6e,0x67,0x20,0x3d,0x20,0x22,0x62,0x61,0x73,0x65,0x36,0x34,0x22,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f, + 0x69,0x6e,0x74,0x5f,0x6c,0x61,0x6e,0x67,0x75,0x61,0x67,0x65,0x73,0x20,0x3d,0x20, + 0x22,0x4c,0x75,0x61,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, + 0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x73,0x20, + 0x3d,0x20,0x22,0x6c,0x69,0x6e,0x65,0x20,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f, + 0x6e,0x61,0x6c,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7d,0x2c,0x0a,0x20,0x20,0x20, + 0x20,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6b,0x2c,0x20, + 0x76,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x6d,0x74,0x20,0x3d,0x20,0x67,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62, + 0x6c,0x65,0x28,0x73,0x65,0x6c,0x66,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x76, + 0x61,0x6c,0x69,0x64,0x61,0x74,0x6f,0x72,0x20,0x3d,0x20,0x6d,0x74,0x2e,0x5f,0x5f, + 0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x6d,0x74,0x2e,0x76,0x61,0x6c,0x69,0x64,0x61, + 0x74,0x6f,0x72,0x73,0x5b,0x6b,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5b,0x6b,0x5d,0x20,0x3d,0x3d,0x20, + 0x6e,0x69,0x6c,0x20,0x74,0x68,0x65,0x6e,0x20,0x65,0x72,0x72,0x6f,0x72,0x28,0x22, + 0x4e,0x6f,0x20,0x73,0x75,0x63,0x68,0x20,0x66,0x65,0x61,0x74,0x75,0x72,0x65,0x20, + 0x22,0x20,0x2e,0x2e,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x6b,0x29, + 0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x6e,0x6f,0x74,0x20,0x76,0x61,0x6c,0x69,0x64,0x61,0x74,0x6f,0x72,0x20,0x74, + 0x68,0x65,0x6e,0x20,0x65,0x72,0x72,0x6f,0x72,0x28,0x22,0x54,0x68,0x65,0x20,0x66, + 0x65,0x61,0x74,0x75,0x72,0x65,0x20,0x22,0x20,0x2e,0x2e,0x20,0x74,0x6f,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x28,0x6b,0x29,0x20,0x2e,0x2e,0x20,0x22,0x20,0x69,0x73,0x20, + 0x72,0x65,0x61,0x64,0x2d,0x6f,0x6e,0x6c,0x79,0x22,0x29,0x20,0x65,0x6e,0x64,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x20,0x3d,0x20,0x61,0x73,0x73,0x65, + 0x72,0x74,0x28,0x76,0x61,0x6c,0x69,0x64,0x61,0x74,0x6f,0x72,0x28,0x76,0x29,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5b, + 0x6b,0x5d,0x20,0x3d,0x20,0x76,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c,0x0a, + 0x7d,0x29,0x0a,0x0a,0x2d,0x2d,0x20,0x57,0x72,0x61,0x70,0x73,0x20,0x64,0x65,0x62, + 0x75,0x67,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x6e,0x64,0x20, + 0x61,0x6e,0x20,0x61,0x74,0x74,0x61,0x63,0x68,0x65,0x64,0x20,0x74,0x68,0x72,0x65, + 0x61,0x64,0x0a,0x2d,0x2d,0x20,0x61,0x6c,0x73,0x6f,0x20,0x68,0x61,0x6e,0x64,0x6c, + 0x65,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x26,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74, + 0x69,0x6e,0x65,0x20,0x6d,0x61,0x6e,0x61,0x67,0x65,0x6d,0x65,0x6e,0x74,0x20,0x64, + 0x69,0x66,0x66,0x65,0x72,0x65,0x6e,0x63,0x69,0x65,0x73,0x20,0x62,0x65,0x74,0x77, + 0x65,0x65,0x6e,0x20,0x4c,0x75,0x61,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x73, + 0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x2c,0x20, + 0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x2c,0x20,0x73,0x65,0x74,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x3d,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x67,0x65,0x74,0x69,0x6e, + 0x66,0x6f,0x2c,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x67,0x65,0x74,0x6c,0x6f,0x63, + 0x61,0x6c,0x2c,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x73,0x65,0x74,0x6c,0x6f,0x63, + 0x61,0x6c,0x0a,0x0a,0x2d,0x2d,0x20,0x46,0x6f,0x72,0x65,0x69,0x67,0x6e,0x20,0x74, + 0x68,0x72,0x65,0x61,0x64,0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x20,0x74,0x6f, + 0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x70,0x61,0x75,0x73,0x65,0x64,0x20,0x74,0x68, + 0x72,0x65,0x61,0x64,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x46,0x6f,0x72,0x65,0x69, + 0x67,0x6e,0x54,0x68,0x72,0x65,0x61,0x64,0x4d,0x54,0x20,0x3d,0x20,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x20,0x20,0x3d,0x20,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6c,0x65,0x76, + 0x65,0x6c,0x2c,0x20,0x77,0x68,0x61,0x74,0x29,0x20,0x20,0x20,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x73,0x65,0x6c, + 0x66,0x5b,0x31,0x5d,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x77,0x68,0x61, + 0x74,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x67,0x65,0x74,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28, + 0x73,0x65,0x6c,0x66,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x69,0x64,0x78, + 0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x65, + 0x74,0x6c,0x6f,0x63,0x61,0x6c,0x28,0x73,0x65,0x6c,0x66,0x5b,0x31,0x5d,0x2c,0x20, + 0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x69,0x64,0x78,0x29,0x20,0x65,0x6e,0x64,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x3d,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6c, + 0x65,0x76,0x65,0x6c,0x2c,0x20,0x69,0x64,0x78,0x2c,0x20,0x76,0x61,0x6c,0x29,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x28, + 0x73,0x65,0x6c,0x66,0x5b,0x31,0x5d,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20, + 0x69,0x64,0x78,0x2c,0x20,0x76,0x61,0x6c,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x7d, + 0x0a,0x46,0x6f,0x72,0x65,0x69,0x67,0x6e,0x54,0x68,0x72,0x65,0x61,0x64,0x4d,0x54, + 0x2e,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x46,0x6f,0x72,0x65,0x69, + 0x67,0x6e,0x54,0x68,0x72,0x65,0x61,0x64,0x4d,0x54,0x0a,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x46,0x6f,0x72,0x65,0x69,0x67,0x6e,0x54,0x68,0x72, + 0x65,0x61,0x64,0x28,0x63,0x6f,0x72,0x6f,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x7b,0x20, + 0x63,0x6f,0x72,0x6f,0x20,0x7d,0x2c,0x20,0x46,0x6f,0x72,0x65,0x69,0x67,0x6e,0x54, + 0x68,0x72,0x65,0x61,0x64,0x4d,0x54,0x29,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d, + 0x20,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20, + 0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x20,0x74,0x6f,0x20,0x64,0x65,0x62,0x75,0x67, + 0x20,0x74,0x68,0x65,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x74,0x68,0x61,0x74, + 0x20,0x63,0x61,0x75,0x73,0x65,0x64,0x20,0x74,0x68,0x65,0x20,0x68,0x6f,0x6f,0x6b, + 0x0a,0x2d,0x2d,0x20,0x69,0x6e,0x74,0x65,0x6e,0x64,0x65,0x64,0x20,0x74,0x6f,0x20, + 0x62,0x65,0x20,0x75,0x73,0x65,0x64,0x20,0x2a,0x4f,0x4e,0x4c,0x59,0x2a,0x20,0x69, + 0x6e,0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x6c,0x6f,0x6f,0x70,0x20,0x28,0x65,0x78, + 0x65,0x63,0x75,0x74,0x65,0x64,0x20,0x69,0x6e,0x20,0x61,0x20,0x6e,0x65,0x77,0x20, + 0x74,0x68,0x72,0x65,0x61,0x64,0x29,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x43,0x75, + 0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x4d,0x54,0x20,0x3d,0x20, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x20,0x20,0x3d, + 0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20, + 0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x77,0x68,0x61,0x74,0x29,0x20,0x20,0x20,0x20, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28, + 0x73,0x65,0x6c,0x66,0x5b,0x31,0x5d,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x2b, + 0x20,0x32,0x2c,0x20,0x77,0x68,0x61,0x74,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x3d,0x20,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6c,0x65,0x76, + 0x65,0x6c,0x2c,0x20,0x69,0x64,0x78,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x28,0x73,0x65, + 0x6c,0x66,0x5b,0x31,0x5d,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x2b,0x20,0x32, + 0x2c,0x20,0x69,0x64,0x78,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x2c, + 0x20,0x69,0x64,0x78,0x2c,0x20,0x76,0x61,0x6c,0x29,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x28,0x73,0x65,0x6c,0x66,0x5b, + 0x31,0x5d,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x2b,0x20,0x32,0x2c,0x20,0x69, + 0x64,0x78,0x2c,0x20,0x76,0x61,0x6c,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x7d,0x0a, + 0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x4d,0x54,0x2e, + 0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x43,0x75,0x72,0x72,0x65,0x6e, + 0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x4d,0x54,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69, + 0x6f,0x6e,0x20,0x4d,0x2e,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65, + 0x61,0x64,0x28,0x63,0x6f,0x72,0x6f,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x7b,0x20,0x63, + 0x6f,0x72,0x6f,0x20,0x7d,0x2c,0x20,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68, + 0x72,0x65,0x61,0x64,0x4d,0x54,0x29,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x0a,0x2d,0x2d, + 0x20,0x53,0x6f,0x6d,0x65,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x64,0x65, + 0x70,0x65,0x6e,0x64,0x61,0x6e,0x74,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x73,0x0a,0x69,0x66,0x20,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x20,0x3d,0x3d, + 0x20,0x22,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6c,0x6f,0x61,0x64,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x2c,0x20,0x67,0x65,0x74,0x66,0x65,0x6e,0x76,0x2c,0x20,0x73, + 0x65,0x74,0x66,0x65,0x6e,0x76,0x2c,0x20,0x64,0x65,0x62,0x75,0x67,0x5f,0x67,0x65, + 0x74,0x69,0x6e,0x66,0x6f,0x2c,0x20,0x4d,0x61,0x69,0x6e,0x54,0x68,0x72,0x65,0x61, + 0x64,0x20,0x3d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x61,0x64,0x73,0x74,0x72,0x69,0x6e,0x67,0x2c,0x20,0x67,0x65,0x74,0x66,0x65,0x6e, + 0x76,0x2c,0x20,0x73,0x65,0x74,0x66,0x65,0x6e,0x76,0x2c,0x20,0x64,0x65,0x62,0x75, + 0x67,0x2e,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x2c,0x20,0x6e,0x69,0x6c,0x0a,0x0a, + 0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x69,0x6e,0x20,0x35,0x2e,0x31,0x20,0x22,0x74, + 0x22,0x20,0x66,0x6c,0x61,0x67,0x20,0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20, + 0x65,0x78,0x69,0x73,0x74,0x20,0x61,0x6e,0x64,0x20,0x74,0x72,0x69,0x67,0x67,0x65, + 0x72,0x20,0x61,0x6e,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x73,0x6f,0x20,0x72,0x65, + 0x6d,0x6f,0x76,0x65,0x20,0x69,0x74,0x20,0x66,0x72,0x6f,0x6d,0x20,0x77,0x68,0x61, + 0x74,0x0a,0x20,0x20,0x20,0x20,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72, + 0x65,0x61,0x64,0x4d,0x54,0x2e,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x20,0x3d,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6c, + 0x65,0x76,0x65,0x6c,0x2c,0x20,0x77,0x68,0x61,0x74,0x29,0x20,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x73,0x65,0x6c,0x66,0x5b, + 0x31,0x5d,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77, + 0x68,0x61,0x74,0x3a,0x67,0x73,0x75,0x62,0x28,0x22,0x74,0x22,0x2c,0x20,0x22,0x22, + 0x2c,0x20,0x31,0x29,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x46,0x6f, + 0x72,0x65,0x69,0x67,0x6e,0x54,0x68,0x72,0x65,0x61,0x64,0x4d,0x54,0x2e,0x67,0x65, + 0x74,0x69,0x6e,0x66,0x6f,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x77,0x68, + 0x61,0x74,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x65,0x74,0x69,0x6e, + 0x66,0x6f,0x28,0x73,0x65,0x6c,0x66,0x5b,0x31,0x5d,0x2c,0x20,0x6c,0x65,0x76,0x65, + 0x6c,0x2c,0x20,0x77,0x68,0x61,0x74,0x3a,0x67,0x73,0x75,0x62,0x28,0x22,0x74,0x22, + 0x2c,0x20,0x22,0x22,0x2c,0x20,0x31,0x29,0x29,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x77,0x68,0x65,0x6e,0x20,0x77,0x65,0x27,0x72,0x65, + 0x20,0x66,0x6f,0x72,0x63,0x65,0x64,0x20,0x74,0x6f,0x20,0x73,0x74,0x61,0x72,0x74, + 0x20,0x64,0x65,0x62,0x75,0x67,0x20,0x6c,0x6f,0x6f,0x70,0x20,0x6f,0x6e,0x20,0x74, + 0x6f,0x70,0x20,0x6f,0x66,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,0x20,0x73,0x74, + 0x61,0x63,0x6b,0x20,0x28,0x77,0x68,0x65,0x6e,0x20,0x6f,0x6e,0x20,0x6d,0x61,0x69, + 0x6e,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x2d,0x2d,0x20,0x74,0x68,0x69,0x73,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65, + 0x73,0x20,0x73,0x6f,0x6d,0x65,0x20,0x68,0x61,0x63,0x6b,0x65,0x72,0x79,0x20,0x74, + 0x6f,0x20,0x67,0x65,0x74,0x20,0x72,0x69,0x67,0x68,0x74,0x20,0x73,0x74,0x61,0x63, + 0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x46,0x61,0x6c,0x6c,0x62,0x61,0x63,0x6b,0x20,0x6d,0x65,0x74,0x68,0x6f,0x64,0x20, + 0x74,0x6f,0x20,0x69,0x6e,0x73,0x70,0x65,0x63,0x74,0x20,0x72,0x75,0x6e,0x6e,0x69, + 0x6e,0x67,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x28,0x6f,0x6e,0x6c,0x79,0x20, + 0x66,0x6f,0x72,0x20,0x6d,0x61,0x69,0x6e,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20, + 0x69,0x6e,0x20,0x35,0x2e,0x31,0x20,0x6f,0x72,0x20,0x66,0x6f,0x72,0x20,0x63,0x6f, + 0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x62,0x72,0x65,0x61,0x6b,0x70, + 0x6f,0x69,0x6e,0x74,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x20,0x47, + 0x65,0x74,0x73,0x20,0x61,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x73,0x74,0x61, + 0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x77,0x69,0x74,0x68,0x20,0x61,0x64, + 0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x20,0x6c,0x6f,0x67,0x69,0x63,0x20,0x61,0x64,0x64,0x65,0x64,0x0a,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x6c,0x20,0x28,0x6e, + 0x75,0x6d,0x62,0x65,0x72,0x29,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76, + 0x65,0x6c,0x20,0x74,0x6f,0x20,0x67,0x65,0x74,0x20,0x66,0x6f,0x72,0x20,0x64,0x65, + 0x62,0x75,0x67,0x67,0x65,0x64,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x28,0x30, + 0x20,0x62,0x61,0x73,0x65,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x65,0x61,0x6c,0x20,0x4c,0x75,0x61,0x20, + 0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x73,0x75,0x69,0x74, + 0x61,0x62,0x6c,0x65,0x20,0x74,0x6f,0x20,0x62,0x65,0x20,0x70,0x61,0x73,0x73,0x65, + 0x64,0x20,0x74,0x68,0x72,0x6f,0x75,0x67,0x68,0x20,0x64,0x65,0x75,0x62,0x67,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x67,0x65,0x74, + 0x5f,0x73,0x63,0x72,0x69,0x70,0x74,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x28,0x6c,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x68, + 0x6f,0x6f,0x6b,0x20,0x3d,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x67,0x65,0x74,0x68, + 0x6f,0x6f,0x6b,0x28,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f, + 0x72,0x20,0x69,0x3d,0x32,0x2c,0x20,0x6d,0x61,0x74,0x68,0x2e,0x68,0x75,0x67,0x65, + 0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x61,0x73,0x73,0x65,0x72,0x74,0x28,0x64,0x65,0x62,0x75,0x67,0x2e, + 0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x69,0x2c,0x20,0x22,0x66,0x22,0x29,0x29, + 0x2e,0x66,0x75,0x6e,0x63,0x20,0x3d,0x3d,0x20,0x68,0x6f,0x6f,0x6b,0x20,0x74,0x68, + 0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x20,0x2b,0x20,0x6c,0x20, + 0x2d,0x2d,0x20,0x74,0x68,0x65,0x20,0x73,0x63,0x72,0x69,0x70,0x74,0x20,0x74,0x6f, + 0x20,0x6c,0x65,0x76,0x65,0x6c,0x20,0x69,0x73,0x20,0x6a,0x75,0x73,0x74,0x20,0x62, + 0x65,0x6c,0x6f,0x77,0x2c,0x20,0x62,0x75,0x74,0x20,0x62,0x65,0x63,0x61,0x75,0x73, + 0x65,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x65,0x78,0x74,0x72,0x61,0x20,0x63, + 0x61,0x6c,0x6c,0x20,0x74,0x6f,0x20,0x74,0x68,0x69,0x73,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x2c,0x20,0x74,0x68,0x65,0x20,0x6c,0x65,0x76,0x65,0x6c,0x20, + 0x69,0x73,0x20,0x6f,0x6b,0x20,0x66,0x6f,0x72,0x20,0x63,0x61,0x6c,0x6c,0x65,0x65, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x72,0x61,0x77, + 0x67,0x65,0x74,0x28,0x5f,0x47,0x2c,0x20,0x22,0x6a,0x69,0x74,0x22,0x29,0x20,0x74, + 0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4d,0x61,0x69,0x6e, + 0x54,0x68,0x72,0x65,0x61,0x64,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5b,0x31,0x5d,0x20,0x3d,0x20,0x22,0x6d,0x61, + 0x69,0x6e,0x22,0x2c,0x20,0x2d,0x2d,0x20,0x61,0x73,0x20,0x74,0x68,0x65,0x20,0x72, + 0x61,0x77,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74, + 0x20,0x69,0x73,0x20,0x75,0x73,0x65,0x64,0x20,0x61,0x73,0x20,0x74,0x61,0x62,0x6c, + 0x65,0x20,0x6b,0x65,0x79,0x73,0x2c,0x20,0x70,0x72,0x6f,0x76,0x69,0x64,0x65,0x20, + 0x61,0x20,0x72,0x65,0x70,0x6c,0x61,0x63,0x65,0x6d,0x65,0x6e,0x74,0x2e,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x4c,0x75, + 0x61,0x4a,0x49,0x54,0x20,0x63,0x6f,0x6d,0x70,0x6c,0x65,0x74,0x65,0x6c,0x79,0x20, + 0x65,0x6c,0x69,0x6d,0x69,0x6e,0x61,0x74,0x65,0x73,0x20,0x74,0x61,0x69,0x6c,0x20, + 0x63,0x61,0x6c,0x6c,0x73,0x20,0x66,0x72,0x6f,0x6d,0x20,0x73,0x74,0x61,0x63,0x6b, + 0x2c,0x20,0x73,0x6f,0x20,0x67,0x65,0x74,0x5f,0x73,0x63,0x72,0x69,0x70,0x74,0x5f, + 0x6c,0x65,0x76,0x65,0x6c,0x20,0x72,0x65,0x74,0x75,0x6e,0x72,0x73,0x20,0x77,0x72, + 0x6f,0x6e,0x67,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x69,0x6e,0x20,0x74,0x68, + 0x69,0x73,0x20,0x63,0x61,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x20,0x20,0x3d,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6c,0x65, + 0x76,0x65,0x6c,0x2c,0x20,0x77,0x68,0x61,0x74,0x29,0x20,0x20,0x20,0x20,0x20,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x67,0x65, + 0x74,0x5f,0x73,0x63,0x72,0x69,0x70,0x74,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x28,0x6c, + 0x65,0x76,0x65,0x6c,0x29,0x20,0x2d,0x20,0x31,0x2c,0x20,0x77,0x68,0x61,0x74,0x3a, + 0x67,0x73,0x75,0x62,0x28,0x22,0x74,0x22,0x2c,0x20,0x22,0x22,0x2c,0x20,0x31,0x29, + 0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x3d,0x20,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6c,0x65,0x76, + 0x65,0x6c,0x2c,0x20,0x69,0x64,0x78,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x28,0x67,0x65, + 0x74,0x5f,0x73,0x63,0x72,0x69,0x70,0x74,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x28,0x6c, + 0x65,0x76,0x65,0x6c,0x29,0x20,0x2d,0x20,0x31,0x2c,0x20,0x69,0x64,0x78,0x29,0x20, + 0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c, + 0x2c,0x20,0x69,0x64,0x78,0x2c,0x20,0x76,0x61,0x6c,0x29,0x20,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x28,0x67,0x65,0x74,0x5f, + 0x73,0x63,0x72,0x69,0x70,0x74,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x28,0x6c,0x65,0x76, + 0x65,0x6c,0x29,0x20,0x2d,0x20,0x31,0x2c,0x20,0x69,0x64,0x78,0x2c,0x20,0x76,0x61, + 0x6c,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x4d,0x61,0x69,0x6e,0x54,0x68,0x72,0x65,0x61,0x64,0x20,0x3d,0x20, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5b,0x31, + 0x5d,0x20,0x3d,0x20,0x22,0x6d,0x61,0x69,0x6e,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x20, + 0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66, + 0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x77,0x68,0x61,0x74,0x29,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x65,0x74,0x69,0x6e,0x66, + 0x6f,0x28,0x67,0x65,0x74,0x5f,0x73,0x63,0x72,0x69,0x70,0x74,0x5f,0x6c,0x65,0x76, + 0x65,0x6c,0x28,0x6c,0x65,0x76,0x65,0x6c,0x29,0x20,0x2c,0x20,0x77,0x68,0x61,0x74, + 0x3a,0x67,0x73,0x75,0x62,0x28,0x22,0x74,0x22,0x2c,0x20,0x22,0x22,0x2c,0x20,0x31, + 0x29,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x3d,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6c,0x65, + 0x76,0x65,0x6c,0x2c,0x20,0x69,0x64,0x78,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x28,0x67, + 0x65,0x74,0x5f,0x73,0x63,0x72,0x69,0x70,0x74,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x28, + 0x6c,0x65,0x76,0x65,0x6c,0x29,0x2c,0x20,0x69,0x64,0x78,0x29,0x20,0x65,0x6e,0x64, + 0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x65, + 0x74,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x69, + 0x64,0x78,0x2c,0x20,0x76,0x61,0x6c,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x73,0x65,0x74,0x6c,0x6f,0x63,0x61,0x6c,0x28,0x67,0x65,0x74,0x5f,0x73,0x63,0x72, + 0x69,0x70,0x74,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x28,0x6c,0x65,0x76,0x65,0x6c,0x29, + 0x2c,0x20,0x69,0x64,0x78,0x2c,0x20,0x76,0x61,0x6c,0x29,0x20,0x65,0x6e,0x64,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x0a,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x49,0x66,0x20, + 0x74,0x68,0x65,0x20,0x56,0x4d,0x20,0x69,0x73,0x20,0x76,0x61,0x6e,0x69,0x6c,0x6c, + 0x61,0x20,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x20,0x6f,0x72,0x20,0x4c,0x75,0x61, + 0x4a,0x49,0x54,0x20,0x32,0x20,0x77,0x69,0x74,0x68,0x6f,0x75,0x74,0x20,0x35,0x2e, + 0x32,0x20,0x63,0x6f,0x6d,0x70,0x61,0x74,0x69,0x62,0x69,0x6c,0x69,0x74,0x79,0x2c, + 0x20,0x74,0x68,0x65,0x72,0x65,0x20,0x69,0x73,0x20,0x6e,0x6f,0x20,0x77,0x61,0x79, + 0x20,0x74,0x6f,0x20,0x67,0x65,0x74,0x20,0x61,0x20,0x72,0x65,0x66,0x65,0x72,0x65, + 0x6e,0x63,0x65,0x20,0x74,0x6f,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x74,0x68, + 0x65,0x20,0x6d,0x61,0x69,0x6e,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, + 0x2c,0x20,0x73,0x6f,0x20,0x66,0x61,0x6c,0x6c,0x20,0x62,0x61,0x63,0x6b,0x20,0x74, + 0x6f,0x20,0x64,0x69,0x72,0x65,0x63,0x74,0x20,0x6d,0x6f,0x64,0x65,0x3a,0x20,0x74, + 0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x6c,0x6f,0x6f,0x70, + 0x20,0x69,0x73,0x20,0x73,0x74,0x61,0x72,0x74,0x65,0x64,0x20,0x6f,0x6e,0x20,0x74, + 0x68,0x65,0x20,0x74,0x6f,0x70,0x20,0x6f,0x66,0x20,0x6d,0x61,0x69,0x6e,0x20,0x74, + 0x68,0x72,0x65,0x61,0x64,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x61,0x6e,0x64, + 0x20,0x74,0x68,0x65,0x20,0x61,0x63,0x74,0x75,0x61,0x6c,0x20,0x6c,0x65,0x76,0x65, + 0x6c,0x20,0x69,0x73,0x20,0x72,0x65,0x63,0x6f,0x6d,0x70,0x75,0x74,0x65,0x64,0x20, + 0x65,0x61,0x63,0x68,0x20,0x74,0x69,0x6d,0x65,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x6f,0x6c,0x64,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68, + 0x72,0x65,0x61,0x64,0x20,0x3d,0x20,0x4d,0x2e,0x43,0x75,0x72,0x72,0x65,0x6e,0x74, + 0x54,0x68,0x72,0x65,0x61,0x64,0x0a,0x20,0x20,0x20,0x20,0x4d,0x2e,0x43,0x75,0x72, + 0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x20,0x3d,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x28,0x63,0x6f,0x72,0x6f,0x29,0x20,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x63,0x6f,0x72,0x6f,0x20,0x61,0x6e,0x64,0x20,0x6f,0x6c,0x64,0x43, + 0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x28,0x63,0x6f,0x72, + 0x6f,0x29,0x20,0x6f,0x72,0x20,0x4d,0x61,0x69,0x6e,0x54,0x68,0x72,0x65,0x61,0x64, + 0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x6c,0x6f,0x61, + 0x64,0x20,0x61,0x20,0x70,0x69,0x65,0x63,0x65,0x20,0x6f,0x66,0x20,0x63,0x6f,0x64, + 0x65,0x20,0x61,0x6c,0x6f,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x69,0x74,0x73,0x20, + 0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x0a,0x20,0x20,0x20,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x6c,0x6f,0x61,0x64,0x69, + 0x6e,0x28,0x63,0x6f,0x64,0x65,0x2c,0x20,0x65,0x6e,0x76,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x2c,0x65,0x72,0x72,0x20,0x3d, + 0x20,0x6c,0x6f,0x61,0x64,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x63,0x6f,0x64,0x65, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x66, + 0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x6e,0x69,0x6c,0x2c,0x20,0x65,0x72,0x72,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x20,0x61,0x6e,0x64,0x20,0x73,0x65, + 0x74,0x66,0x65,0x6e,0x76,0x28,0x66,0x2c,0x20,0x65,0x6e,0x76,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x74,0x68, + 0x61,0x74,0x20,0x6d,0x61,0x70,0x73,0x20,0x5b,0x67,0x73,0x5d,0x65,0x74,0x20,0x65, + 0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x20,0x74,0x6f,0x20,0x69,0x6e, + 0x64,0x65,0x78,0x0a,0x20,0x20,0x20,0x20,0x4d,0x2e,0x65,0x76,0x61,0x6c,0x5f,0x65, + 0x6e,0x76,0x20,0x3d,0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c, + 0x65,0x28,0x7b,0x20,0x7d,0x2c,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x66,0x75,0x6e,0x63,0x29,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x67,0x65,0x74,0x66,0x65,0x6e,0x76,0x28,0x66, + 0x75,0x6e,0x63,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x5f,0x5f,0x6e,0x65,0x77,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x66,0x75, + 0x6e,0x63,0x2c,0x20,0x65,0x6e,0x76,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x73,0x65,0x74,0x66,0x65,0x6e,0x76,0x28,0x66,0x75,0x6e,0x63,0x2c,0x20,0x65,0x6e, + 0x76,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x7d,0x29,0x0a,0x65, + 0x6c,0x73,0x65,0x69,0x66,0x20,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x20,0x3d, + 0x3d,0x20,0x22,0x4c,0x75,0x61,0x20,0x35,0x2e,0x32,0x22,0x20,0x74,0x68,0x65,0x6e, + 0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6c,0x6f,0x61,0x64,0x2c, + 0x20,0x64,0x65,0x62,0x75,0x67,0x5f,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x20,0x3d, + 0x20,0x6c,0x6f,0x61,0x64,0x2c,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x67,0x65,0x74, + 0x69,0x6e,0x66,0x6f,0x0a,0x20,0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x4d,0x2e,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x63,0x6f,0x72,0x6f, + 0x2c,0x20,0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x77,0x68,0x61,0x74,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x63,0x6f,0x72,0x6f,0x20,0x74, + 0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x64,0x65,0x62,0x75,0x67, + 0x5f,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x63,0x6f,0x72,0x6f,0x2c,0x20,0x6c, + 0x65,0x76,0x65,0x6c,0x2c,0x20,0x77,0x68,0x61,0x74,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x64,0x65,0x62,0x75,0x67,0x5f,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x6c,0x65, + 0x76,0x65,0x6c,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x68,0x61,0x74,0x29,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x6c,0x6f,0x61,0x64,0x69, + 0x6e,0x28,0x63,0x6f,0x64,0x65,0x2c,0x20,0x65,0x6e,0x76,0x29,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x6c,0x6f,0x61,0x64,0x28,0x63,0x6f,0x64,0x65,0x2c,0x20,0x6e, + 0x69,0x6c,0x2c,0x20,0x6e,0x69,0x6c,0x2c,0x20,0x65,0x6e,0x76,0x29,0x20,0x65,0x6e, + 0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x6e,0x6f,0x20,0x65,0x76,0x61, + 0x6c,0x5f,0x65,0x6e,0x76,0x20,0x66,0x6f,0x72,0x20,0x35,0x2e,0x32,0x20,0x61,0x73, + 0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x64,0x6f,0x65,0x73,0x20, + 0x6e,0x6f,0x74,0x20,0x68,0x61,0x76,0x65,0x20,0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e, + 0x6d,0x65,0x6e,0x74,0x73,0x20,0x61,0x6e,0x79,0x6d,0x6f,0x72,0x65,0x0a,0x65,0x6e, + 0x64,0x0a,0x0a,0x2d,0x2d,0x20,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x42,0x61,0x72,0x65,0x20,0x6d,0x69,0x6e,0x69,0x6d, + 0x61,0x6c,0x20,0x6c,0x6f,0x67,0x20,0x73,0x79,0x73,0x74,0x65,0x6d,0x2e,0x0a,0x2d, + 0x2d,0x20,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x4d,0x2e,0x6c,0x6f,0x67,0x28,0x6c,0x65, + 0x76,0x65,0x6c,0x2c,0x20,0x6d,0x73,0x67,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x4c,0x45,0x56,0x45,0x4c,0x53,0x5b,0x6c,0x65, + 0x76,0x65,0x6c,0x5d,0x20,0x6f,0x72,0x20,0x2d,0x31,0x29,0x20,0x3e,0x20,0x4c,0x4f, + 0x47,0x5f,0x4c,0x45,0x56,0x45,0x4c,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x73, + 0x65,0x6c,0x65,0x63,0x74,0x28,0x22,0x23,0x22,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x20, + 0x3e,0x20,0x30,0x20,0x74,0x68,0x65,0x6e,0x20,0x6d,0x73,0x67,0x20,0x3d,0x20,0x6d, + 0x73,0x67,0x3a,0x66,0x6f,0x72,0x6d,0x61,0x74,0x28,0x2e,0x2e,0x2e,0x29,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x69,0x6f,0x2e,0x62,0x61,0x73,0x65,0x2e,0x73, + 0x74,0x64,0x65,0x72,0x72,0x3a,0x77,0x72,0x69,0x74,0x65,0x28,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x2e,0x66,0x6f,0x72,0x6d,0x61,0x74,0x28,0x22,0x44,0x45,0x42,0x55,0x47, + 0x47,0x45,0x52,0x5c,0x74,0x25,0x73,0x5c,0x74,0x25,0x73,0x5c,0x6e,0x22,0x2c,0x20, + 0x6c,0x65,0x76,0x65,0x6c,0x2c,0x20,0x6d,0x73,0x67,0x29,0x29,0x0a,0x65,0x6e,0x64, + 0x0a,0x0a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x4d,0x0a,0x0a,0x65,0x6e,0x64,0x0a, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x0a,0x2d,0x2d,0x20,0x45,0x6e,0x64,0x20,0x6f,0x66,0x20,0x6d,0x6f,0x64,0x75,0x6c, + 0x65,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x0a,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a, + 0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x0a,0x2d,0x2d,0x20,0x20,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x64,0x65,0x62, + 0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x72,0x6c,0x0a,0x70,0x61,0x63,0x6b,0x61,0x67, + 0x65,0x2e,0x70,0x72,0x65,0x6c,0x6f,0x61,0x64,0x5b,0x22,0x64,0x65,0x62,0x75,0x67, + 0x67,0x65,0x72,0x2e,0x75,0x72,0x6c,0x22,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x55,0x52,0x49,0x20,0x70, + 0x61,0x72,0x73,0x69,0x6e,0x67,0x2c,0x20,0x63,0x6f,0x6d,0x70,0x6f,0x73,0x69,0x74, + 0x69,0x6f,0x6e,0x20,0x61,0x6e,0x64,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65, + 0x20,0x55,0x52,0x4c,0x20,0x72,0x65,0x73,0x6f,0x6c,0x75,0x74,0x69,0x6f,0x6e,0x0a, + 0x2d,0x2d,0x20,0x4c,0x75,0x61,0x53,0x6f,0x63,0x6b,0x65,0x74,0x20,0x74,0x6f,0x6f, + 0x6c,0x6b,0x69,0x74,0x2e,0x0a,0x2d,0x2d,0x20,0x41,0x75,0x74,0x68,0x6f,0x72,0x3a, + 0x20,0x44,0x69,0x65,0x67,0x6f,0x20,0x4e,0x65,0x68,0x61,0x62,0x0a,0x2d,0x2d,0x20, + 0x52,0x43,0x53,0x20,0x49,0x44,0x3a,0x20,0x24,0x49,0x64,0x3a,0x20,0x75,0x72,0x6c, + 0x2e,0x6c,0x75,0x61,0x2c,0x76,0x20,0x31,0x2e,0x33,0x38,0x20,0x32,0x30,0x30,0x36, + 0x2f,0x30,0x34,0x2f,0x30,0x33,0x20,0x30,0x34,0x3a,0x34,0x35,0x3a,0x34,0x32,0x20, + 0x64,0x69,0x65,0x67,0x6f,0x20,0x45,0x78,0x70,0x20,0x24,0x0a,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x44,0x65,0x63,0x6c, + 0x61,0x72,0x65,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73, + 0x74,0x72,0x69,0x6e,0x67,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28, + 0x22,0x73,0x74,0x72,0x69,0x6e,0x67,0x22,0x29,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x5f,0x47,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x74,0x61,0x62,0x6c,0x65,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28, + 0x22,0x74,0x61,0x62,0x6c,0x65,0x22,0x29,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x5f,0x45,0x4e,0x56,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x69,0x66,0x20,0x73,0x65, + 0x74,0x66,0x65,0x6e,0x76,0x20,0x74,0x68,0x65,0x6e,0x20,0x73,0x65,0x74,0x66,0x65, + 0x6e,0x76,0x28,0x31,0x2c,0x20,0x5f,0x45,0x4e,0x56,0x29,0x20,0x65,0x6e,0x64,0x0a, + 0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d, + 0x2d,0x20,0x4d,0x6f,0x64,0x75,0x6c,0x65,0x20,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e, + 0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x5f, + 0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x20,0x3d,0x20,0x22,0x55,0x52,0x4c,0x20,0x31, + 0x2e,0x30,0x2e,0x31,0x22,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x45,0x6e,0x63,0x6f,0x64,0x65,0x73,0x20, + 0x61,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x69,0x6e,0x74,0x6f,0x20,0x69,0x74, + 0x73,0x20,0x65,0x73,0x63,0x61,0x70,0x65,0x64,0x20,0x68,0x65,0x78,0x61,0x64,0x65, + 0x63,0x69,0x6d,0x61,0x6c,0x20,0x72,0x65,0x70,0x72,0x65,0x73,0x65,0x6e,0x74,0x61, + 0x74,0x69,0x6f,0x6e,0x0a,0x2d,0x2d,0x20,0x49,0x6e,0x70,0x75,0x74,0x0a,0x2d,0x2d, + 0x20,0x20,0x20,0x73,0x3a,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x20,0x73,0x74,0x72, + 0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x62,0x65,0x20,0x65,0x6e,0x63,0x6f,0x64,0x65, + 0x64,0x0a,0x2d,0x2d,0x20,0x52,0x65,0x74,0x75,0x72,0x6e,0x73,0x0a,0x2d,0x2d,0x20, + 0x20,0x20,0x65,0x73,0x63,0x61,0x70,0x65,0x64,0x20,0x72,0x65,0x70,0x72,0x65,0x73, + 0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x6f,0x66,0x20,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x20,0x65,0x73,0x63,0x61,0x70,0x65,0x28,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73,0x75, + 0x62,0x28,0x73,0x2c,0x20,0x22,0x28,0x5b,0x5e,0x41,0x2d,0x5a,0x61,0x2d,0x7a,0x30, + 0x2d,0x39,0x5f,0x5d,0x29,0x22,0x2c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x28,0x63,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x66,0x6f,0x72,0x6d,0x61,0x74, + 0x28,0x22,0x25,0x25,0x25,0x30,0x32,0x78,0x22,0x2c,0x20,0x73,0x74,0x72,0x69,0x6e, + 0x67,0x2e,0x62,0x79,0x74,0x65,0x28,0x63,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x50,0x72,0x6f,0x74,0x65,0x63, + 0x74,0x73,0x20,0x61,0x20,0x70,0x61,0x74,0x68,0x20,0x73,0x65,0x67,0x6d,0x65,0x6e, + 0x74,0x2c,0x20,0x74,0x6f,0x20,0x70,0x72,0x65,0x76,0x65,0x6e,0x74,0x20,0x69,0x74, + 0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6e,0x74,0x65,0x72,0x66,0x65,0x72,0x69,0x6e, + 0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x0a,0x2d,0x2d,0x20,0x75,0x72, + 0x6c,0x20,0x70,0x61,0x72,0x73,0x69,0x6e,0x67,0x2e,0x0a,0x2d,0x2d,0x20,0x49,0x6e, + 0x70,0x75,0x74,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x73,0x3a,0x20,0x62,0x69,0x6e,0x61, + 0x72,0x79,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x62,0x65,0x20, + 0x65,0x6e,0x63,0x6f,0x64,0x65,0x64,0x0a,0x2d,0x2d,0x20,0x52,0x65,0x74,0x75,0x72, + 0x6e,0x73,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x65,0x73,0x63,0x61,0x70,0x65,0x64,0x20, + 0x72,0x65,0x70,0x72,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x6f, + 0x66,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x0a, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x6d,0x61,0x6b, + 0x65,0x5f,0x73,0x65,0x74,0x28,0x74,0x29,0x0a,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x73,0x20,0x3d,0x20,0x7b,0x7d,0x0a,0x09,0x66,0x6f,0x72,0x20,0x69,0x2c,0x76,0x20, + 0x69,0x6e,0x20,0x62,0x61,0x73,0x65,0x2e,0x69,0x70,0x61,0x69,0x72,0x73,0x28,0x74, + 0x29,0x20,0x64,0x6f,0x0a,0x09,0x09,0x73,0x5b,0x74,0x5b,0x69,0x5d,0x5d,0x20,0x3d, + 0x20,0x31,0x0a,0x09,0x65,0x6e,0x64,0x0a,0x09,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x73,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x20,0x74,0x68,0x65,0x73,0x65,0x20, + 0x61,0x72,0x65,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x65,0x64,0x20,0x77,0x69,0x74,0x68, + 0x69,0x6e,0x67,0x20,0x61,0x20,0x70,0x61,0x74,0x68,0x20,0x73,0x65,0x67,0x6d,0x65, + 0x6e,0x74,0x2c,0x20,0x61,0x6c,0x6f,0x6e,0x67,0x20,0x77,0x69,0x74,0x68,0x20,0x61, + 0x6c,0x70,0x68,0x61,0x6e,0x75,0x6d,0x0a,0x2d,0x2d,0x20,0x6f,0x74,0x68,0x65,0x72, + 0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65,0x72,0x73,0x20,0x6d,0x75,0x73,0x74, + 0x20,0x62,0x65,0x20,0x65,0x73,0x63,0x61,0x70,0x65,0x64,0x0a,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x73,0x65,0x67,0x6d,0x65,0x6e,0x74,0x5f,0x73,0x65,0x74,0x20,0x3d,0x20, + 0x6d,0x61,0x6b,0x65,0x5f,0x73,0x65,0x74,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x22, + 0x2d,0x22,0x2c,0x20,0x22,0x5f,0x22,0x2c,0x20,0x22,0x2e,0x22,0x2c,0x20,0x22,0x21, + 0x22,0x2c,0x20,0x22,0x7e,0x22,0x2c,0x20,0x22,0x2a,0x22,0x2c,0x20,0x22,0x27,0x22, + 0x2c,0x20,0x22,0x28,0x22,0x2c,0x0a,0x09,0x22,0x29,0x22,0x2c,0x20,0x22,0x3a,0x22, + 0x2c,0x20,0x22,0x40,0x22,0x2c,0x20,0x22,0x26,0x22,0x2c,0x20,0x22,0x3d,0x22,0x2c, + 0x20,0x22,0x2b,0x22,0x2c,0x20,0x22,0x24,0x22,0x2c,0x20,0x22,0x2c,0x22,0x2c,0x0a, + 0x7d,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x70,0x72,0x6f,0x74,0x65,0x63,0x74,0x5f,0x73,0x65,0x67,0x6d,0x65,0x6e, + 0x74,0x28,0x73,0x29,0x0a,0x09,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x74,0x72, + 0x69,0x6e,0x67,0x2e,0x67,0x73,0x75,0x62,0x28,0x73,0x2c,0x20,0x22,0x28,0x5b,0x5e, + 0x41,0x2d,0x5a,0x61,0x2d,0x7a,0x30,0x2d,0x39,0x5f,0x5d,0x29,0x22,0x2c,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x28,0x63,0x29,0x0a,0x09,0x09,0x69,0x66, + 0x20,0x73,0x65,0x67,0x6d,0x65,0x6e,0x74,0x5f,0x73,0x65,0x74,0x5b,0x63,0x5d,0x20, + 0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x63,0x0a,0x09,0x09, + 0x65,0x6c,0x73,0x65,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x2e,0x66,0x6f,0x72,0x6d,0x61,0x74,0x28,0x22,0x25,0x25,0x25,0x30,0x32, + 0x78,0x22,0x2c,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x62,0x79,0x74,0x65,0x28, + 0x63,0x29,0x29,0x20,0x65,0x6e,0x64,0x0a,0x09,0x65,0x6e,0x64,0x29,0x0a,0x65,0x6e, + 0x64,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x0a,0x2d,0x2d,0x20,0x45,0x6e,0x63,0x6f,0x64,0x65,0x73,0x20,0x61,0x20,0x73,0x74, + 0x72,0x69,0x6e,0x67,0x20,0x69,0x6e,0x74,0x6f,0x20,0x69,0x74,0x73,0x20,0x65,0x73, + 0x63,0x61,0x70,0x65,0x64,0x20,0x68,0x65,0x78,0x61,0x64,0x65,0x63,0x69,0x6d,0x61, + 0x6c,0x20,0x72,0x65,0x70,0x72,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e, + 0x0a,0x2d,0x2d,0x20,0x49,0x6e,0x70,0x75,0x74,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x73, + 0x3a,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20, + 0x74,0x6f,0x20,0x62,0x65,0x20,0x65,0x6e,0x63,0x6f,0x64,0x65,0x64,0x0a,0x2d,0x2d, + 0x20,0x52,0x65,0x74,0x75,0x72,0x6e,0x73,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x65,0x73, + 0x63,0x61,0x70,0x65,0x64,0x20,0x72,0x65,0x70,0x72,0x65,0x73,0x65,0x6e,0x74,0x61, + 0x74,0x69,0x6f,0x6e,0x20,0x6f,0x66,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20,0x62, + 0x69,0x6e,0x61,0x72,0x79,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x75,0x6e,0x65, + 0x73,0x63,0x61,0x70,0x65,0x28,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73,0x75,0x62,0x28, + 0x73,0x2c,0x20,0x22,0x25,0x25,0x28,0x25,0x78,0x25,0x78,0x29,0x22,0x2c,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x68,0x65,0x78,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x2e,0x63,0x68,0x61,0x72,0x28,0x62,0x61,0x73,0x65,0x2e,0x74,0x6f,0x6e, + 0x75,0x6d,0x62,0x65,0x72,0x28,0x68,0x65,0x78,0x2c,0x20,0x31,0x36,0x29,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x29,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x42, + 0x75,0x69,0x6c,0x64,0x73,0x20,0x61,0x20,0x70,0x61,0x74,0x68,0x20,0x66,0x72,0x6f, + 0x6d,0x20,0x61,0x20,0x62,0x61,0x73,0x65,0x20,0x70,0x61,0x74,0x68,0x20,0x61,0x6e, + 0x64,0x20,0x61,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x20,0x70,0x61,0x74, + 0x68,0x0a,0x2d,0x2d,0x20,0x49,0x6e,0x70,0x75,0x74,0x0a,0x2d,0x2d,0x20,0x20,0x20, + 0x62,0x61,0x73,0x65,0x5f,0x70,0x61,0x74,0x68,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x72, + 0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x70,0x61,0x74,0x68,0x0a,0x2d,0x2d,0x20, + 0x52,0x65,0x74,0x75,0x72,0x6e,0x73,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x63,0x6f,0x72, + 0x72,0x65,0x73,0x70,0x6f,0x6e,0x64,0x69,0x6e,0x67,0x20,0x61,0x62,0x73,0x6f,0x6c, + 0x75,0x74,0x65,0x20,0x70,0x61,0x74,0x68,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x5f,0x70, + 0x61,0x74,0x68,0x28,0x62,0x61,0x73,0x65,0x5f,0x70,0x61,0x74,0x68,0x2c,0x20,0x72, + 0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x70,0x61,0x74,0x68,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x73,0x75,0x62,0x28, + 0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x70,0x61,0x74,0x68,0x2c,0x20,0x31, + 0x2c,0x20,0x31,0x29,0x20,0x3d,0x3d,0x20,0x22,0x2f,0x22,0x20,0x74,0x68,0x65,0x6e, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65, + 0x5f,0x70,0x61,0x74,0x68,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x73,0x74,0x72,0x69,0x6e, + 0x67,0x2e,0x67,0x73,0x75,0x62,0x28,0x62,0x61,0x73,0x65,0x5f,0x70,0x61,0x74,0x68, + 0x2c,0x20,0x22,0x5b,0x5e,0x2f,0x5d,0x2a,0x24,0x22,0x2c,0x20,0x22,0x22,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x70,0x61,0x74,0x68,0x20, + 0x2e,0x2e,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x70,0x61,0x74,0x68, + 0x0a,0x20,0x20,0x20,0x20,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x2e,0x67,0x73,0x75,0x62,0x28,0x70,0x61,0x74,0x68,0x2c,0x20,0x22,0x28, + 0x5b,0x5e,0x2f,0x5d,0x2a,0x25,0x2e,0x2f,0x29,0x22,0x2c,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x20,0x28,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x73,0x20,0x7e,0x3d,0x20,0x22,0x2e,0x2f,0x22,0x20,0x74,0x68, + 0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x20,0x65,0x6c,0x73,0x65, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x22,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x70,0x61,0x74,0x68, + 0x20,0x3d,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73,0x75,0x62,0x28,0x70, + 0x61,0x74,0x68,0x2c,0x20,0x22,0x2f,0x25,0x2e,0x24,0x22,0x2c,0x20,0x22,0x2f,0x22, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x64,0x75, + 0x63,0x65,0x64,0x0a,0x20,0x20,0x20,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x72,0x65, + 0x64,0x75,0x63,0x65,0x64,0x20,0x7e,0x3d,0x20,0x70,0x61,0x74,0x68,0x20,0x64,0x6f, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x64, + 0x20,0x3d,0x20,0x70,0x61,0x74,0x68,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73, + 0x75,0x62,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x64,0x2c,0x20,0x22,0x28,0x5b,0x5e, + 0x2f,0x5d,0x2a,0x2f,0x25,0x2e,0x25,0x2e,0x2f,0x29,0x22,0x2c,0x20,0x66,0x75,0x6e, + 0x63,0x74,0x69,0x6f,0x6e,0x20,0x28,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x73,0x20,0x7e,0x3d,0x20,0x22,0x2e, + 0x2e,0x2f,0x2e,0x2e,0x2f,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x22,0x22,0x20,0x65,0x6c,0x73,0x65,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x73,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x65,0x6e,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67, + 0x73,0x75,0x62,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x64,0x2c,0x20,0x22,0x28,0x5b, + 0x5e,0x2f,0x5d,0x2a,0x2f,0x25,0x2e,0x25,0x2e,0x29,0x24,0x22,0x2c,0x20,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x28,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x73,0x20,0x7e,0x3d,0x20,0x22,0x2e,0x2e,0x2f,0x2e, + 0x2e,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22, + 0x22,0x20,0x65,0x6c,0x73,0x65,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x20, + 0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x61,0x74,0x68,0x0a,0x65,0x6e,0x64, + 0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a, + 0x2d,0x2d,0x20,0x50,0x61,0x72,0x73,0x65,0x73,0x20,0x61,0x20,0x75,0x72,0x6c,0x20, + 0x61,0x6e,0x64,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x73,0x20,0x61,0x20,0x74,0x61, + 0x62,0x6c,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x61,0x6c,0x6c,0x20,0x69,0x74,0x73, + 0x20,0x70,0x61,0x72,0x74,0x73,0x20,0x61,0x63,0x63,0x6f,0x72,0x64,0x69,0x6e,0x67, + 0x20,0x74,0x6f,0x20,0x52,0x46,0x43,0x20,0x32,0x33,0x39,0x36,0x0a,0x2d,0x2d,0x20, + 0x54,0x68,0x65,0x20,0x66,0x6f,0x6c,0x6c,0x6f,0x77,0x69,0x6e,0x67,0x20,0x67,0x72, + 0x61,0x6d,0x6d,0x61,0x72,0x20,0x64,0x65,0x73,0x63,0x72,0x69,0x62,0x65,0x73,0x20, + 0x74,0x68,0x65,0x20,0x6e,0x61,0x6d,0x65,0x73,0x20,0x67,0x69,0x76,0x65,0x6e,0x20, + 0x74,0x6f,0x20,0x74,0x68,0x65,0x20,0x55,0x52,0x4c,0x20,0x70,0x61,0x72,0x74,0x73, + 0x0a,0x2d,0x2d,0x20,0x3c,0x75,0x72,0x6c,0x3e,0x20,0x3a,0x3a,0x3d,0x20,0x3c,0x73, + 0x63,0x68,0x65,0x6d,0x65,0x3e,0x3a,0x2f,0x2f,0x3c,0x61,0x75,0x74,0x68,0x6f,0x72, + 0x69,0x74,0x79,0x3e,0x2f,0x3c,0x70,0x61,0x74,0x68,0x3e,0x3b,0x3c,0x70,0x61,0x72, + 0x61,0x6d,0x73,0x3e,0x3f,0x3c,0x71,0x75,0x65,0x72,0x79,0x3e,0x23,0x3c,0x66,0x72, + 0x61,0x67,0x6d,0x65,0x6e,0x74,0x3e,0x0a,0x2d,0x2d,0x20,0x3c,0x61,0x75,0x74,0x68, + 0x6f,0x72,0x69,0x74,0x79,0x3e,0x20,0x3a,0x3a,0x3d,0x20,0x3c,0x75,0x73,0x65,0x72, + 0x69,0x6e,0x66,0x6f,0x3e,0x40,0x3c,0x68,0x6f,0x73,0x74,0x3e,0x3a,0x3c,0x70,0x6f, + 0x72,0x74,0x3e,0x0a,0x2d,0x2d,0x20,0x3c,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f, + 0x3e,0x20,0x3a,0x3a,0x3d,0x20,0x3c,0x75,0x73,0x65,0x72,0x3e,0x5b,0x3a,0x3c,0x70, + 0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x3e,0x5d,0x0a,0x2d,0x2d,0x20,0x3c,0x70,0x61, + 0x74,0x68,0x3e,0x20,0x3a,0x3a,0x20,0x3d,0x20,0x7b,0x3c,0x73,0x65,0x67,0x6d,0x65, + 0x6e,0x74,0x3e,0x2f,0x7d,0x3c,0x73,0x65,0x67,0x6d,0x65,0x6e,0x74,0x3e,0x0a,0x2d, + 0x2d,0x20,0x49,0x6e,0x70,0x75,0x74,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x75,0x72,0x6c, + 0x3a,0x20,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x72,0x65,0x73,0x6f,0x75,0x72, + 0x63,0x65,0x20,0x6c,0x6f,0x63,0x61,0x74,0x6f,0x72,0x20,0x6f,0x66,0x20,0x72,0x65, + 0x71,0x75,0x65,0x73,0x74,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x64,0x65,0x66,0x61,0x75, + 0x6c,0x74,0x3a,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x64, + 0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x66,0x6f, + 0x72,0x20,0x65,0x61,0x63,0x68,0x20,0x66,0x69,0x65,0x6c,0x64,0x0a,0x2d,0x2d,0x20, + 0x52,0x65,0x74,0x75,0x72,0x6e,0x73,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x74,0x61,0x62, + 0x6c,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x20,0x66,0x6f,0x6c,0x6c, + 0x6f,0x77,0x69,0x6e,0x67,0x20,0x66,0x69,0x65,0x6c,0x64,0x73,0x2c,0x20,0x77,0x68, + 0x65,0x72,0x65,0x20,0x52,0x46,0x43,0x20,0x6e,0x61,0x6d,0x69,0x6e,0x67,0x20,0x63, + 0x6f,0x6e,0x76,0x65,0x6e,0x74,0x69,0x6f,0x6e,0x73,0x20,0x68,0x61,0x76,0x65,0x0a, + 0x2d,0x2d,0x20,0x20,0x20,0x62,0x65,0x65,0x6e,0x20,0x70,0x72,0x65,0x73,0x65,0x72, + 0x76,0x65,0x64,0x3a,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x73,0x63,0x68,0x65, + 0x6d,0x65,0x2c,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x2c,0x20,0x75, + 0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x2c,0x20,0x75,0x73,0x65,0x72,0x2c,0x20,0x70, + 0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x2c,0x20,0x68,0x6f,0x73,0x74,0x2c,0x20,0x70, + 0x6f,0x72,0x74,0x2c,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x74,0x68, + 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x73,0x2c,0x20,0x71,0x75,0x65,0x72,0x79,0x2c, + 0x20,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x0a,0x2d,0x2d,0x20,0x4f,0x62,0x73, + 0x3a,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x74,0x68,0x65,0x20,0x6c,0x65,0x61,0x64,0x69, + 0x6e,0x67,0x20,0x27,0x2f,0x27,0x20,0x69,0x6e,0x20,0x7b,0x2f,0x3c,0x70,0x61,0x74, + 0x68,0x3e,0x7d,0x20,0x69,0x73,0x20,0x63,0x6f,0x6e,0x73,0x69,0x64,0x65,0x72,0x65, + 0x64,0x20,0x70,0x61,0x72,0x74,0x20,0x6f,0x66,0x20,0x3c,0x70,0x61,0x74,0x68,0x3e, + 0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x61,0x72,0x73,0x65,0x28,0x75,0x72, + 0x6c,0x2c,0x20,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x69,0x7a,0x65,0x20,0x64,0x65, + 0x66,0x61,0x75,0x6c,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x65,0x74,0x65,0x72,0x73, + 0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x61,0x72,0x73,0x65, + 0x64,0x20,0x3d,0x20,0x7b,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x69, + 0x2c,0x76,0x20,0x69,0x6e,0x20,0x62,0x61,0x73,0x65,0x2e,0x70,0x61,0x69,0x72,0x73, + 0x28,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x20,0x6f,0x72,0x20,0x70,0x61,0x72,0x73, + 0x65,0x64,0x29,0x20,0x64,0x6f,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x5b,0x69,0x5d, + 0x20,0x3d,0x20,0x76,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x65,0x6d,0x70,0x74,0x79,0x20,0x75,0x72,0x6c,0x20,0x69,0x73,0x20,0x70,0x61,0x72, + 0x73,0x65,0x64,0x20,0x74,0x6f,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20,0x20,0x20,0x69, + 0x66,0x20,0x6e,0x6f,0x74,0x20,0x75,0x72,0x6c,0x20,0x6f,0x72,0x20,0x75,0x72,0x6c, + 0x20,0x3d,0x3d,0x20,0x22,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x6e,0x69,0x6c,0x2c,0x20,0x22,0x69,0x6e,0x76,0x61,0x6c,0x69,0x64, + 0x20,0x75,0x72,0x6c,0x22,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d, + 0x20,0x72,0x65,0x6d,0x6f,0x76,0x65,0x20,0x77,0x68,0x69,0x74,0x65,0x73,0x70,0x61, + 0x63,0x65,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x75,0x72,0x6c,0x20,0x3d,0x20, + 0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73,0x75,0x62,0x28,0x75,0x72,0x6c,0x2c, + 0x20,0x22,0x25,0x73,0x22,0x2c,0x20,0x22,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x2d, + 0x2d,0x20,0x67,0x65,0x74,0x20,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x0a,0x20, + 0x20,0x20,0x20,0x75,0x72,0x6c,0x20,0x3d,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e, + 0x67,0x73,0x75,0x62,0x28,0x75,0x72,0x6c,0x2c,0x20,0x22,0x23,0x28,0x2e,0x2a,0x29, + 0x24,0x22,0x2c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x66,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x66, + 0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x3d,0x20,0x66,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x22,0x0a,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x67,0x65, + 0x74,0x20,0x73,0x63,0x68,0x65,0x6d,0x65,0x0a,0x20,0x20,0x20,0x20,0x75,0x72,0x6c, + 0x20,0x3d,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73,0x75,0x62,0x28,0x75, + 0x72,0x6c,0x2c,0x20,0x22,0x5e,0x28,0x5b,0x25,0x77,0x5d,0x5b,0x25,0x77,0x25,0x2b, + 0x25,0x2d,0x25,0x2e,0x5d,0x2a,0x29,0x25,0x3a,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x29,0x20, + 0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x73,0x63,0x68,0x65,0x6d,0x65,0x20,0x3d,0x20, + 0x73,0x3b,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x22,0x20,0x65,0x6e,0x64, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x67,0x65,0x74,0x20,0x61,0x75,0x74, + 0x68,0x6f,0x72,0x69,0x74,0x79,0x0a,0x20,0x20,0x20,0x20,0x75,0x72,0x6c,0x20,0x3d, + 0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73,0x75,0x62,0x28,0x75,0x72,0x6c, + 0x2c,0x20,0x22,0x5e,0x2f,0x2f,0x28,0x5b,0x5e,0x2f,0x5d,0x2a,0x29,0x22,0x2c,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6e,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x61,0x75,0x74,0x68,0x6f, + 0x72,0x69,0x74,0x79,0x20,0x3d,0x20,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x67,0x65,0x74,0x20,0x71, + 0x75,0x65,0x72,0x79,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x69,0x6e,0x67,0x0a,0x20, + 0x20,0x20,0x20,0x75,0x72,0x6c,0x20,0x3d,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e, + 0x67,0x73,0x75,0x62,0x28,0x75,0x72,0x6c,0x2c,0x20,0x22,0x25,0x3f,0x28,0x2e,0x2a, + 0x29,0x22,0x2c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x71,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x71, + 0x75,0x65,0x72,0x79,0x20,0x3d,0x20,0x71,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x67,0x65,0x74,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x73,0x0a,0x20,0x20,0x20,0x20,0x75,0x72,0x6c,0x20,0x3d,0x20, + 0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73,0x75,0x62,0x28,0x75,0x72,0x6c,0x2c, + 0x20,0x22,0x25,0x3b,0x28,0x2e,0x2a,0x29,0x22,0x2c,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x70,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70, + 0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x3d,0x20,0x70, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x22,0x22,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x70,0x61,0x74,0x68,0x20,0x69,0x73,0x20,0x77,0x68,0x61,0x74,0x65, + 0x76,0x65,0x72,0x20,0x77,0x61,0x73,0x20,0x6c,0x65,0x66,0x74,0x0a,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x75,0x72,0x6c,0x20,0x7e,0x3d,0x20,0x22,0x22,0x20,0x74,0x68, + 0x65,0x6e,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x61,0x74,0x68,0x20,0x3d, + 0x20,0x75,0x72,0x6c,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x20,0x3d,0x20,0x70, + 0x61,0x72,0x73,0x65,0x64,0x2e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x0a, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x61,0x75,0x74,0x68,0x6f, + 0x72,0x69,0x74,0x79,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20, + 0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x20,0x3d,0x20,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x2e,0x67,0x73,0x75,0x62,0x28,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74, + 0x79,0x2c,0x22,0x5e,0x28,0x5b,0x5e,0x40,0x5d,0x2a,0x29,0x40,0x22,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28, + 0x75,0x29,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x75,0x73,0x65,0x72,0x69,0x6e, + 0x66,0x6f,0x20,0x3d,0x20,0x75,0x3b,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22, + 0x22,0x20,0x65,0x6e,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x61,0x75,0x74,0x68,0x6f, + 0x72,0x69,0x74,0x79,0x20,0x3d,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73, + 0x75,0x62,0x28,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x2c,0x20,0x22,0x3a, + 0x28,0x5b,0x5e,0x3a,0x5d,0x2a,0x29,0x24,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x70,0x29,0x20,0x70, + 0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x6f,0x72,0x74,0x20,0x3d,0x20,0x70,0x3b,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x22,0x20,0x65,0x6e,0x64,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x20, + 0x7e,0x3d,0x20,0x22,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x70,0x61,0x72,0x73,0x65, + 0x64,0x2e,0x68,0x6f,0x73,0x74,0x20,0x3d,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x69, + 0x74,0x79,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x20,0x3d,0x20,0x70,0x61,0x72,0x73, + 0x65,0x64,0x2e,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x0a,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x20, + 0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x61,0x72,0x73, + 0x65,0x64,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x75,0x73,0x65,0x72,0x69, + 0x6e,0x66,0x6f,0x20,0x3d,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73,0x75, + 0x62,0x28,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x2c,0x20,0x22,0x3a,0x28,0x5b, + 0x5e,0x3a,0x5d,0x2a,0x29,0x24,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x70,0x29,0x20,0x70,0x61,0x72, + 0x73,0x65,0x64,0x2e,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x20,0x3d,0x20,0x70, + 0x3b,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x22,0x22,0x20,0x65,0x6e,0x64,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x75,0x73,0x65,0x72, + 0x20,0x3d,0x20,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x0a,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x0a,0x65,0x6e, + 0x64,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x0a,0x2d,0x2d,0x20,0x52,0x65,0x62,0x75,0x69,0x6c,0x64,0x73,0x20,0x61,0x20,0x70, + 0x61,0x72,0x73,0x65,0x64,0x20,0x55,0x52,0x4c,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69, + 0x74,0x73,0x20,0x63,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x73,0x2e,0x0a,0x2d, + 0x2d,0x20,0x43,0x6f,0x6d,0x70,0x6f,0x6e,0x65,0x6e,0x74,0x73,0x20,0x61,0x72,0x65, + 0x20,0x70,0x72,0x6f,0x74,0x65,0x63,0x74,0x65,0x64,0x20,0x69,0x66,0x20,0x61,0x6e, + 0x79,0x20,0x72,0x65,0x73,0x65,0x72,0x76,0x65,0x64,0x20,0x6f,0x72,0x20,0x75,0x6e, + 0x61,0x6c,0x6c,0x6f,0x77,0x65,0x64,0x20,0x63,0x68,0x61,0x72,0x61,0x63,0x74,0x65, + 0x72,0x73,0x20,0x61,0x72,0x65,0x20,0x66,0x6f,0x75,0x6e,0x64,0x0a,0x2d,0x2d,0x20, + 0x49,0x6e,0x70,0x75,0x74,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x70,0x61,0x72,0x73,0x65, + 0x64,0x3a,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x20,0x55,0x52,0x4c,0x2c,0x20,0x61, + 0x73,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x65,0x64,0x20,0x62,0x79,0x20,0x70,0x61, + 0x72,0x73,0x65,0x0a,0x2d,0x2d,0x20,0x52,0x65,0x74,0x75,0x72,0x6e,0x73,0x0a,0x2d, + 0x2d,0x20,0x20,0x20,0x61,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x69,0x6e,0x67,0x20, + 0x77,0x69,0x74,0x68,0x20,0x74,0x68,0x65,0x20,0x63,0x6f,0x72,0x72,0x65,0x73,0x70, + 0x6f,0x6e,0x64,0x69,0x6e,0x67,0x20,0x55,0x52,0x4c,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x62,0x75,0x69,0x6c,0x64,0x28,0x70,0x61,0x72,0x73,0x65,0x64,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x70,0x61,0x74,0x68,0x20, + 0x3d,0x20,0x70,0x61,0x72,0x73,0x65,0x5f,0x70,0x61,0x74,0x68,0x28,0x70,0x61,0x72, + 0x73,0x65,0x64,0x2e,0x70,0x61,0x74,0x68,0x20,0x6f,0x72,0x20,0x22,0x22,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x75,0x72,0x6c,0x20,0x3d,0x20, + 0x62,0x75,0x69,0x6c,0x64,0x5f,0x70,0x61,0x74,0x68,0x28,0x70,0x70,0x61,0x74,0x68, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e, + 0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x74,0x68,0x65,0x6e,0x20,0x75,0x72,0x6c,0x20, + 0x3d,0x20,0x75,0x72,0x6c,0x20,0x2e,0x2e,0x20,0x22,0x3b,0x22,0x20,0x2e,0x2e,0x20, + 0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x65,0x6e, + 0x64,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e, + 0x71,0x75,0x65,0x72,0x79,0x20,0x74,0x68,0x65,0x6e,0x20,0x75,0x72,0x6c,0x20,0x3d, + 0x20,0x75,0x72,0x6c,0x20,0x2e,0x2e,0x20,0x22,0x3f,0x22,0x20,0x2e,0x2e,0x20,0x70, + 0x61,0x72,0x73,0x65,0x64,0x2e,0x71,0x75,0x65,0x72,0x79,0x20,0x65,0x6e,0x64,0x0a, + 0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79, + 0x20,0x3d,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x61,0x75,0x74,0x68,0x6f,0x72, + 0x69,0x74,0x79,0x0a,0x09,0x69,0x66,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x68, + 0x6f,0x73,0x74,0x20,0x74,0x68,0x65,0x6e,0x0a,0x09,0x09,0x61,0x75,0x74,0x68,0x6f, + 0x72,0x69,0x74,0x79,0x20,0x3d,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x68,0x6f, + 0x73,0x74,0x0a,0x09,0x09,0x69,0x66,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x70, + 0x6f,0x72,0x74,0x20,0x74,0x68,0x65,0x6e,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x69, + 0x74,0x79,0x20,0x3d,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x20,0x2e, + 0x2e,0x20,0x22,0x3a,0x22,0x20,0x2e,0x2e,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e, + 0x70,0x6f,0x72,0x74,0x20,0x65,0x6e,0x64,0x0a,0x09,0x09,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x20,0x3d,0x20,0x70,0x61,0x72,0x73, + 0x65,0x64,0x2e,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x0a,0x09,0x09,0x69,0x66, + 0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x75,0x73,0x65,0x72,0x20,0x74,0x68,0x65, + 0x6e,0x0a,0x09,0x09,0x09,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x20,0x3d,0x20, + 0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x75,0x73,0x65,0x72,0x0a,0x09,0x09,0x09,0x69, + 0x66,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x61,0x73,0x73,0x77,0x6f,0x72, + 0x64,0x20,0x74,0x68,0x65,0x6e,0x0a,0x09,0x09,0x09,0x09,0x75,0x73,0x65,0x72,0x69, + 0x6e,0x66,0x6f,0x20,0x3d,0x20,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x20,0x2e, + 0x2e,0x20,0x22,0x3a,0x22,0x20,0x2e,0x2e,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e, + 0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x0a,0x09,0x09,0x09,0x65,0x6e,0x64,0x0a, + 0x09,0x09,0x65,0x6e,0x64,0x0a,0x09,0x09,0x69,0x66,0x20,0x75,0x73,0x65,0x72,0x69, + 0x6e,0x66,0x6f,0x20,0x74,0x68,0x65,0x6e,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x69, + 0x74,0x79,0x20,0x3d,0x20,0x75,0x73,0x65,0x72,0x69,0x6e,0x66,0x6f,0x20,0x2e,0x2e, + 0x20,0x22,0x40,0x22,0x20,0x2e,0x2e,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74, + 0x79,0x20,0x65,0x6e,0x64,0x0a,0x09,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x69, + 0x66,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x20,0x74,0x68,0x65,0x6e, + 0x20,0x75,0x72,0x6c,0x20,0x3d,0x20,0x22,0x2f,0x2f,0x22,0x20,0x2e,0x2e,0x20,0x61, + 0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x20,0x2e,0x2e,0x20,0x75,0x72,0x6c,0x20, + 0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x70,0x61,0x72,0x73,0x65, + 0x64,0x2e,0x73,0x63,0x68,0x65,0x6d,0x65,0x20,0x74,0x68,0x65,0x6e,0x20,0x75,0x72, + 0x6c,0x20,0x3d,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x73,0x63,0x68,0x65,0x6d, + 0x65,0x20,0x2e,0x2e,0x20,0x22,0x3a,0x22,0x20,0x2e,0x2e,0x20,0x75,0x72,0x6c,0x20, + 0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x70,0x61,0x72,0x73,0x65, + 0x64,0x2e,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x74,0x68,0x65,0x6e,0x20, + 0x75,0x72,0x6c,0x20,0x3d,0x20,0x75,0x72,0x6c,0x20,0x2e,0x2e,0x20,0x22,0x23,0x22, + 0x20,0x2e,0x2e,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x66,0x72,0x61,0x67,0x6d, + 0x65,0x6e,0x74,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x75, + 0x72,0x6c,0x20,0x3d,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73,0x75,0x62, + 0x28,0x75,0x72,0x6c,0x2c,0x20,0x22,0x25,0x73,0x22,0x2c,0x20,0x22,0x22,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x75,0x72,0x6c,0x0a,0x65, + 0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x0a,0x2d,0x2d,0x20,0x42,0x75,0x69,0x6c,0x64,0x73,0x20,0x61,0x20,0x61,0x62, + 0x73,0x6f,0x6c,0x75,0x74,0x65,0x20,0x55,0x52,0x4c,0x20,0x66,0x72,0x6f,0x6d,0x20, + 0x61,0x20,0x62,0x61,0x73,0x65,0x20,0x61,0x6e,0x64,0x20,0x61,0x20,0x72,0x65,0x6c, + 0x61,0x74,0x69,0x76,0x65,0x20,0x55,0x52,0x4c,0x20,0x61,0x63,0x63,0x6f,0x72,0x64, + 0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x52,0x46,0x43,0x20,0x32,0x33,0x39,0x36,0x0a, + 0x2d,0x2d,0x20,0x49,0x6e,0x70,0x75,0x74,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x62,0x61, + 0x73,0x65,0x5f,0x75,0x72,0x6c,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x72,0x65,0x6c,0x61, + 0x74,0x69,0x76,0x65,0x5f,0x75,0x72,0x6c,0x0a,0x2d,0x2d,0x20,0x52,0x65,0x74,0x75, + 0x72,0x6e,0x73,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x63,0x6f,0x72,0x72,0x65,0x73,0x70, + 0x6f,0x6e,0x64,0x69,0x6e,0x67,0x20,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x20, + 0x75,0x72,0x6c,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x61,0x62,0x73,0x6f,0x6c, + 0x75,0x74,0x65,0x28,0x62,0x61,0x73,0x65,0x5f,0x75,0x72,0x6c,0x2c,0x20,0x72,0x65, + 0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x72,0x6c,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x62,0x61,0x73,0x65,0x2e,0x74,0x79,0x70,0x65,0x28,0x62,0x61,0x73, + 0x65,0x5f,0x75,0x72,0x6c,0x29,0x20,0x3d,0x3d,0x20,0x22,0x74,0x61,0x62,0x6c,0x65, + 0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62, + 0x61,0x73,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x20,0x3d,0x20,0x62,0x61,0x73, + 0x65,0x5f,0x75,0x72,0x6c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61, + 0x73,0x65,0x5f,0x75,0x72,0x6c,0x20,0x3d,0x20,0x62,0x75,0x69,0x6c,0x64,0x28,0x62, + 0x61,0x73,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x73, + 0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x20,0x3d,0x20,0x70,0x61,0x72,0x73,0x65, + 0x28,0x62,0x61,0x73,0x65,0x5f,0x75,0x72,0x6c,0x29,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x6c, + 0x61,0x74,0x69,0x76,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x20,0x3d,0x20,0x70, + 0x61,0x72,0x73,0x65,0x28,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x72, + 0x6c,0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x62,0x61, + 0x73,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x20,0x74,0x68,0x65,0x6e,0x20,0x72, + 0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x75, + 0x72,0x6c,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x6e,0x6f, + 0x74,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x70,0x61,0x72,0x73,0x65, + 0x64,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x61, + 0x73,0x65,0x5f,0x75,0x72,0x6c,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69, + 0x66,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x70,0x61,0x72,0x73,0x65, + 0x64,0x2e,0x73,0x63,0x68,0x65,0x6d,0x65,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x72, + 0x6c,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x70,0x61,0x72,0x73, + 0x65,0x64,0x2e,0x73,0x63,0x68,0x65,0x6d,0x65,0x20,0x3d,0x20,0x62,0x61,0x73,0x65, + 0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x73,0x63,0x68,0x65,0x6d,0x65,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x72,0x65, + 0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x61,0x75, + 0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76, + 0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69, + 0x74,0x79,0x20,0x3d,0x20,0x62,0x61,0x73,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64, + 0x2e,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x72,0x65, + 0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x61, + 0x74,0x68,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65, + 0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x62, + 0x61,0x73,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x61,0x74,0x68,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f, + 0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x74,0x68, + 0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f, + 0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x3d,0x20, + 0x62,0x61,0x73,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x61,0x72,0x61, + 0x6d,0x73,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x72,0x65, + 0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x71,0x75, + 0x65,0x72,0x79,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64, + 0x2e,0x71,0x75,0x65,0x72,0x79,0x20,0x3d,0x20,0x62,0x61,0x73,0x65,0x5f,0x70,0x61, + 0x72,0x73,0x65,0x64,0x2e,0x71,0x75,0x65,0x72,0x79,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65, + 0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x61, + 0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x5f,0x70,0x61,0x74,0x68,0x28,0x62,0x61,0x73, + 0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x61,0x74,0x68,0x20,0x6f,0x72, + 0x20,0x22,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76, + 0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x70,0x61,0x74,0x68,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x75,0x69,0x6c,0x64,0x28, + 0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x5f,0x70,0x61,0x72,0x73,0x65,0x64,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x42, + 0x72,0x65,0x61,0x6b,0x73,0x20,0x61,0x20,0x70,0x61,0x74,0x68,0x20,0x69,0x6e,0x74, + 0x6f,0x20,0x69,0x74,0x73,0x20,0x73,0x65,0x67,0x6d,0x65,0x6e,0x74,0x73,0x2c,0x20, + 0x75,0x6e,0x65,0x73,0x63,0x61,0x70,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x20,0x73, + 0x65,0x67,0x6d,0x65,0x6e,0x74,0x73,0x0a,0x2d,0x2d,0x20,0x49,0x6e,0x70,0x75,0x74, + 0x0a,0x2d,0x2d,0x20,0x20,0x20,0x70,0x61,0x74,0x68,0x0a,0x2d,0x2d,0x20,0x52,0x65, + 0x74,0x75,0x72,0x6e,0x73,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x73,0x65,0x67,0x6d,0x65, + 0x6e,0x74,0x3a,0x20,0x61,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x77,0x69,0x74,0x68, + 0x20,0x6f,0x6e,0x65,0x20,0x65,0x6e,0x74,0x72,0x79,0x20,0x70,0x65,0x72,0x20,0x73, + 0x65,0x67,0x6d,0x65,0x6e,0x74,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x70,0x61, + 0x72,0x73,0x65,0x5f,0x70,0x61,0x74,0x68,0x28,0x70,0x61,0x74,0x68,0x29,0x0a,0x09, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x20,0x3d,0x20,0x7b, + 0x7d,0x0a,0x09,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x70,0x61,0x74,0x68,0x20,0x6f, + 0x72,0x20,0x22,0x22,0x0a,0x09,0x2d,0x2d,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x73, + 0x74,0x72,0x69,0x6e,0x67,0x2e,0x67,0x73,0x75,0x62,0x28,0x70,0x61,0x74,0x68,0x2c, + 0x20,0x22,0x25,0x73,0x22,0x2c,0x20,0x22,0x22,0x29,0x0a,0x09,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x2e,0x67,0x73,0x75,0x62,0x28,0x70,0x61,0x74,0x68,0x2c,0x20,0x22,0x28, + 0x5b,0x5e,0x2f,0x5d,0x2b,0x29,0x22,0x2c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x28,0x73,0x29,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x69,0x6e,0x73,0x65, + 0x72,0x74,0x28,0x70,0x61,0x72,0x73,0x65,0x64,0x2c,0x20,0x73,0x29,0x20,0x65,0x6e, + 0x64,0x29,0x0a,0x09,0x66,0x6f,0x72,0x20,0x69,0x20,0x3d,0x20,0x31,0x2c,0x20,0x23, + 0x70,0x61,0x72,0x73,0x65,0x64,0x20,0x64,0x6f,0x0a,0x09,0x09,0x70,0x61,0x72,0x73, + 0x65,0x64,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x75,0x6e,0x65,0x73,0x63,0x61,0x70,0x65, + 0x28,0x70,0x61,0x72,0x73,0x65,0x64,0x5b,0x69,0x5d,0x29,0x0a,0x09,0x65,0x6e,0x64, + 0x0a,0x09,0x69,0x66,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x73,0x75,0x62,0x28, + 0x70,0x61,0x74,0x68,0x2c,0x20,0x31,0x2c,0x20,0x31,0x29,0x20,0x3d,0x3d,0x20,0x22, + 0x2f,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x69, + 0x73,0x5f,0x61,0x62,0x73,0x6f,0x6c,0x75,0x74,0x65,0x20,0x3d,0x20,0x31,0x20,0x65, + 0x6e,0x64,0x0a,0x09,0x69,0x66,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x73,0x75, + 0x62,0x28,0x70,0x61,0x74,0x68,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x2d,0x31,0x29,0x20, + 0x3d,0x3d,0x20,0x22,0x2f,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x70,0x61,0x72,0x73, + 0x65,0x64,0x2e,0x69,0x73,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20, + 0x3d,0x20,0x31,0x20,0x65,0x6e,0x64,0x0a,0x09,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x70,0x61,0x72,0x73,0x65,0x64,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x42,0x75,0x69, + 0x6c,0x64,0x73,0x20,0x61,0x20,0x70,0x61,0x74,0x68,0x20,0x63,0x6f,0x6d,0x70,0x6f, + 0x6e,0x65,0x6e,0x74,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x74,0x73,0x20,0x73,0x65, + 0x67,0x6d,0x65,0x6e,0x74,0x73,0x2c,0x20,0x65,0x73,0x63,0x61,0x70,0x69,0x6e,0x67, + 0x20,0x70,0x72,0x6f,0x74,0x65,0x63,0x74,0x65,0x64,0x20,0x63,0x68,0x61,0x72,0x61, + 0x63,0x74,0x65,0x72,0x73,0x2e,0x0a,0x2d,0x2d,0x20,0x49,0x6e,0x70,0x75,0x74,0x0a, + 0x2d,0x2d,0x20,0x20,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x3a,0x20,0x70,0x61,0x74, + 0x68,0x20,0x73,0x65,0x67,0x6d,0x65,0x6e,0x74,0x73,0x0a,0x2d,0x2d,0x20,0x20,0x20, + 0x75,0x6e,0x73,0x61,0x66,0x65,0x3a,0x20,0x69,0x66,0x20,0x74,0x72,0x75,0x65,0x2c, + 0x20,0x73,0x65,0x67,0x6d,0x65,0x6e,0x74,0x73,0x20,0x61,0x72,0x65,0x20,0x6e,0x6f, + 0x74,0x20,0x70,0x72,0x6f,0x74,0x65,0x63,0x74,0x65,0x64,0x20,0x62,0x65,0x66,0x6f, + 0x72,0x65,0x20,0x70,0x61,0x74,0x68,0x20,0x69,0x73,0x20,0x62,0x75,0x69,0x6c,0x74, + 0x0a,0x2d,0x2d,0x20,0x52,0x65,0x74,0x75,0x72,0x6e,0x73,0x0a,0x2d,0x2d,0x20,0x20, + 0x20,0x70,0x61,0x74,0x68,0x3a,0x20,0x63,0x6f,0x72,0x72,0x65,0x73,0x70,0x6f,0x6e, + 0x64,0x69,0x6e,0x67,0x20,0x70,0x61,0x74,0x68,0x20,0x73,0x74,0x72,0x69,0x6e,0x67, + 0x69,0x6e,0x67,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x62,0x75,0x69,0x6c,0x64, + 0x5f,0x70,0x61,0x74,0x68,0x28,0x70,0x61,0x72,0x73,0x65,0x64,0x2c,0x20,0x75,0x6e, + 0x73,0x61,0x66,0x65,0x29,0x0a,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x61,0x74, + 0x68,0x20,0x3d,0x20,0x22,0x22,0x0a,0x09,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6e,0x20, + 0x3d,0x20,0x23,0x70,0x61,0x72,0x73,0x65,0x64,0x0a,0x09,0x69,0x66,0x20,0x75,0x6e, + 0x73,0x61,0x66,0x65,0x20,0x74,0x68,0x65,0x6e,0x0a,0x09,0x09,0x66,0x6f,0x72,0x20, + 0x69,0x20,0x3d,0x20,0x31,0x2c,0x20,0x6e,0x2d,0x31,0x20,0x64,0x6f,0x0a,0x09,0x09, + 0x09,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x70,0x61,0x74,0x68,0x20,0x2e,0x2e,0x20, + 0x70,0x61,0x72,0x73,0x65,0x64,0x5b,0x69,0x5d,0x0a,0x09,0x09,0x09,0x70,0x61,0x74, + 0x68,0x20,0x3d,0x20,0x70,0x61,0x74,0x68,0x20,0x2e,0x2e,0x20,0x22,0x2f,0x22,0x0a, + 0x09,0x09,0x65,0x6e,0x64,0x0a,0x09,0x09,0x69,0x66,0x20,0x6e,0x20,0x3e,0x20,0x30, + 0x20,0x74,0x68,0x65,0x6e,0x0a,0x09,0x09,0x09,0x70,0x61,0x74,0x68,0x20,0x3d,0x20, + 0x70,0x61,0x74,0x68,0x20,0x2e,0x2e,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x5b,0x6e, + 0x5d,0x0a,0x09,0x09,0x09,0x69,0x66,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x69, + 0x73,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x74,0x68,0x65,0x6e, + 0x20,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x70,0x61,0x74,0x68,0x20,0x2e,0x2e,0x20, + 0x22,0x2f,0x22,0x20,0x65,0x6e,0x64,0x0a,0x09,0x09,0x65,0x6e,0x64,0x0a,0x09,0x65, + 0x6c,0x73,0x65,0x0a,0x09,0x09,0x66,0x6f,0x72,0x20,0x69,0x20,0x3d,0x20,0x31,0x2c, + 0x20,0x6e,0x2d,0x31,0x20,0x64,0x6f,0x0a,0x09,0x09,0x09,0x70,0x61,0x74,0x68,0x20, + 0x3d,0x20,0x70,0x61,0x74,0x68,0x20,0x2e,0x2e,0x20,0x70,0x72,0x6f,0x74,0x65,0x63, + 0x74,0x5f,0x73,0x65,0x67,0x6d,0x65,0x6e,0x74,0x28,0x70,0x61,0x72,0x73,0x65,0x64, + 0x5b,0x69,0x5d,0x29,0x0a,0x09,0x09,0x09,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x70, + 0x61,0x74,0x68,0x20,0x2e,0x2e,0x20,0x22,0x2f,0x22,0x0a,0x09,0x09,0x65,0x6e,0x64, + 0x0a,0x09,0x09,0x69,0x66,0x20,0x6e,0x20,0x3e,0x20,0x30,0x20,0x74,0x68,0x65,0x6e, + 0x0a,0x09,0x09,0x09,0x70,0x61,0x74,0x68,0x20,0x3d,0x20,0x70,0x61,0x74,0x68,0x20, + 0x2e,0x2e,0x20,0x70,0x72,0x6f,0x74,0x65,0x63,0x74,0x5f,0x73,0x65,0x67,0x6d,0x65, + 0x6e,0x74,0x28,0x70,0x61,0x72,0x73,0x65,0x64,0x5b,0x6e,0x5d,0x29,0x0a,0x09,0x09, + 0x09,0x69,0x66,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x69,0x73,0x5f,0x64,0x69, + 0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x74,0x68,0x65,0x6e,0x20,0x70,0x61,0x74, + 0x68,0x20,0x3d,0x20,0x70,0x61,0x74,0x68,0x20,0x2e,0x2e,0x20,0x22,0x2f,0x22,0x20, + 0x65,0x6e,0x64,0x0a,0x09,0x09,0x65,0x6e,0x64,0x0a,0x09,0x65,0x6e,0x64,0x0a,0x09, + 0x69,0x66,0x20,0x70,0x61,0x72,0x73,0x65,0x64,0x2e,0x69,0x73,0x5f,0x61,0x62,0x73, + 0x6f,0x6c,0x75,0x74,0x65,0x20,0x74,0x68,0x65,0x6e,0x20,0x70,0x61,0x74,0x68,0x20, + 0x3d,0x20,0x22,0x2f,0x22,0x20,0x2e,0x2e,0x20,0x70,0x61,0x74,0x68,0x20,0x65,0x6e, + 0x64,0x0a,0x09,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x70,0x61,0x74,0x68,0x0a,0x65, + 0x6e,0x64,0x0a,0x0a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x5f,0x45,0x4e,0x56,0x0a, + 0x0a,0x65,0x6e,0x64,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x45,0x6e,0x64,0x20,0x6f,0x66,0x20, + 0x6d,0x6f,0x64,0x75,0x6c,0x65,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75, + 0x72,0x6c,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x0a,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x20,0x4d,0x61,0x69,0x6e,0x20, + 0x63,0x6f,0x6e,0x74,0x65,0x6e,0x74,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x70, + 0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x63,0x29,0x20,0x32,0x30,0x31,0x31,0x2d, + 0x32,0x30,0x31,0x32,0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65, + 0x6c,0x65,0x73,0x73,0x20,0x61,0x6e,0x64,0x20,0x6f,0x74,0x68,0x65,0x72,0x73,0x2e, + 0x0a,0x2d,0x2d,0x20,0x41,0x6c,0x6c,0x20,0x72,0x69,0x67,0x68,0x74,0x73,0x20,0x72, + 0x65,0x73,0x65,0x72,0x76,0x65,0x64,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x70,0x72, + 0x6f,0x67,0x72,0x61,0x6d,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x65,0x20,0x61,0x63, + 0x63,0x6f,0x6d,0x70,0x61,0x6e,0x79,0x69,0x6e,0x67,0x20,0x6d,0x61,0x74,0x65,0x72, + 0x69,0x61,0x6c,0x73,0x0a,0x2d,0x2d,0x20,0x61,0x72,0x65,0x20,0x6d,0x61,0x64,0x65, + 0x20,0x61,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x75,0x6e,0x64,0x65,0x72, + 0x20,0x74,0x68,0x65,0x20,0x74,0x65,0x72,0x6d,0x73,0x20,0x6f,0x66,0x20,0x74,0x68, + 0x65,0x20,0x45,0x63,0x6c,0x69,0x70,0x73,0x65,0x20,0x50,0x75,0x62,0x6c,0x69,0x63, + 0x20,0x4c,0x69,0x63,0x65,0x6e,0x73,0x65,0x20,0x76,0x31,0x2e,0x30,0x0a,0x2d,0x2d, + 0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x61,0x63,0x63,0x6f,0x6d,0x70,0x61,0x6e,0x69, + 0x65,0x73,0x20,0x74,0x68,0x69,0x73,0x20,0x64,0x69,0x73,0x74,0x72,0x69,0x62,0x75, + 0x74,0x69,0x6f,0x6e,0x2c,0x20,0x61,0x6e,0x64,0x20,0x69,0x73,0x20,0x61,0x76,0x61, + 0x69,0x6c,0x61,0x62,0x6c,0x65,0x20,0x61,0x74,0x0a,0x2d,0x2d,0x20,0x68,0x74,0x74, + 0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x65,0x63,0x6c,0x69,0x70,0x73,0x65,0x2e, + 0x6f,0x72,0x67,0x2f,0x6c,0x65,0x67,0x61,0x6c,0x2f,0x65,0x70,0x6c,0x2d,0x76,0x31, + 0x30,0x2e,0x68,0x74,0x6d,0x6c,0x0a,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x43,0x6f,0x6e, + 0x74,0x72,0x69,0x62,0x75,0x74,0x6f,0x72,0x73,0x3a,0x0a,0x2d,0x2d,0x20,0x20,0x20, + 0x20,0x20,0x53,0x69,0x65,0x72,0x72,0x61,0x20,0x57,0x69,0x72,0x65,0x6c,0x65,0x73, + 0x73,0x20,0x2d,0x20,0x69,0x6e,0x69,0x74,0x69,0x61,0x6c,0x20,0x41,0x50,0x49,0x20, + 0x61,0x6e,0x64,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69, + 0x6f,0x6e,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x44,0x42,0x47,0x50,0x5f,0x43, + 0x4c,0x49,0x45,0x4e,0x54,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x20,0x3d,0x20, + 0x22,0x31,0x2e,0x31,0x2e,0x30,0x22,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x64, + 0x65,0x62,0x75,0x67,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22, + 0x64,0x65,0x62,0x75,0x67,0x22,0x0a,0x0a,0x2d,0x2d,0x20,0x54,0x6f,0x20,0x61,0x76, + 0x6f,0x69,0x64,0x20,0x63,0x79,0x63,0x6c,0x69,0x63,0x20,0x64,0x65,0x70,0x65,0x6e, + 0x64,0x65,0x6e,0x63,0x79,0x2c,0x20,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x20, + 0x73,0x74,0x61,0x74,0x65,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62, + 0x75,0x67,0x67,0x65,0x72,0x20,0x74,0x68,0x61,0x74,0x20,0x6d,0x75,0x73,0x74,0x20, + 0x62,0x65,0x20,0x61,0x63,0x63,0x65,0x73,0x73,0x65,0x64,0x0a,0x2d,0x2d,0x20,0x65, + 0x6c,0x73,0x65,0x77,0x68,0x65,0x72,0x65,0x20,0x28,0x69,0x6e,0x20,0x63,0x6f,0x6d, + 0x6d,0x61,0x6e,0x64,0x73,0x20,0x6d,0x6f,0x73,0x74,0x20,0x6c,0x69,0x6b,0x65,0x6c, + 0x79,0x29,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x73,0x74,0x6f,0x72,0x65, + 0x64,0x20,0x69,0x6e,0x20,0x61,0x20,0x66,0x61,0x6b,0x65,0x20,0x6d,0x6f,0x64,0x75, + 0x6c,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x72, + 0x65,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x72,0x65,0x20,0x3d,0x20, + 0x7b,0x20,0x7d,0x0a,0x70,0x61,0x63,0x6b,0x61,0x67,0x65,0x2e,0x6c,0x6f,0x61,0x64, + 0x65,0x64,0x5b,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x72, + 0x65,0x22,0x5d,0x20,0x3d,0x20,0x63,0x6f,0x72,0x65,0x0a,0x0a,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x75,0x74,0x69,0x6c,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65, + 0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x74,0x69,0x6c,0x22, + 0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20, + 0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67, + 0x67,0x65,0x72,0x2e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x22,0x0a,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x64,0x62,0x67,0x70,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69, + 0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x64,0x62,0x67, + 0x70,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64, + 0x73,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62, + 0x75,0x67,0x67,0x65,0x72,0x2e,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x22,0x0a, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x3d,0x20, + 0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x2e,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x75,0x72,0x6c,0x20,0x3d,0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x20,0x22, + 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2e,0x75,0x72,0x6c,0x22,0x0a,0x0a,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x6c,0x6f,0x67,0x20,0x3d,0x20,0x75,0x74,0x69,0x6c,0x2e, + 0x6c,0x6f,0x67,0x0a,0x0a,0x0a,0x2d,0x2d,0x20,0x54,0x4f,0x44,0x4f,0x20,0x63,0x6f, + 0x6d,0x70,0x6c,0x65,0x74,0x65,0x20,0x74,0x68,0x65,0x20,0x73,0x74,0x64,0x6c,0x69, + 0x62,0x20,0x61,0x63,0x63,0x65,0x73,0x73,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63, + 0x6f,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x2c,0x20,0x63,0x6f,0x63,0x72,0x65,0x61, + 0x74,0x65,0x2c,0x20,0x63,0x6f,0x77,0x72,0x61,0x70,0x2c,0x20,0x63,0x6f,0x79,0x69, + 0x65,0x6c,0x64,0x2c,0x20,0x63,0x6f,0x72,0x65,0x73,0x75,0x6d,0x65,0x2c,0x20,0x63, + 0x6f,0x73,0x74,0x61,0x74,0x75,0x73,0x20,0x3d,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74, + 0x69,0x6e,0x65,0x2e,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x2c,0x20,0x63,0x6f,0x72, + 0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x2c,0x20,0x63, + 0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x77,0x72,0x61,0x70,0x2c,0x20,0x63, + 0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x79,0x69,0x65,0x6c,0x64,0x2c,0x20, + 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x72,0x65,0x73,0x75,0x6d,0x65, + 0x2c,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x73,0x74,0x61,0x74, + 0x75,0x73,0x0a,0x0a,0x0a,0x2d,0x2d,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72, + 0x20,0x74,0x68,0x65,0x20,0x55,0x52,0x49,0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x20, + 0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x2c,0x20,0x74,0x6f,0x20,0x6e,0x6f,0x74, + 0x20,0x6a,0x75,0x6d,0x70,0x20,0x69,0x6e,0x74,0x6f,0x20,0x77,0x69,0x74,0x68,0x20, + 0x72,0x65,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x66,0x75,0x6e,0x63,0x74,0x69, + 0x6f,0x6e,0x20,0x6f,0x72,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20, + 0x62,0x6f,0x6f,0x74,0x73,0x74,0x72,0x61,0x70,0x20,0x73,0x74,0x75,0x66,0x66,0x0a, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x5f,0x75, + 0x72,0x69,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x20,0x2d,0x2d,0x20,0x73,0x65,0x74,0x20, + 0x69,0x6e,0x20,0x69,0x6e,0x69,0x74,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74, + 0x6d,0x6f,0x64,0x75,0x6c,0x65,0x5f,0x75,0x72,0x69,0x20,0x3d,0x20,0x6e,0x69,0x6c, + 0x20,0x2d,0x2d,0x20,0x73,0x65,0x74,0x20,0x69,0x6e,0x20,0x69,0x6e,0x69,0x74,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x0a,0x0a,0x2d,0x2d,0x20,0x77,0x69,0x6c, + 0x6c,0x20,0x63,0x6f,0x6e,0x74,0x61,0x69,0x6e,0x20,0x74,0x68,0x65,0x20,0x73,0x65, + 0x73,0x73,0x69,0x6f,0x6e,0x20,0x6f,0x62,0x6a,0x65,0x63,0x74,0x2c,0x20,0x61,0x6e, + 0x64,0x20,0x70,0x6f,0x73,0x73,0x69,0x62,0x6c,0x79,0x20,0x61,0x20,0x6c,0x69,0x73, + 0x74,0x20,0x6f,0x66,0x20,0x61,0x6c,0x6c,0x20,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e, + 0x73,0x20,0x69,0x66,0x20,0x61,0x20,0x6d,0x75,0x6c,0x74,0x69,0x2d,0x74,0x68,0x72, + 0x65,0x61,0x64,0x65,0x64,0x20,0x6d,0x6f,0x64,0x65,0x6c,0x20,0x69,0x73,0x20,0x61, + 0x64,0x6f,0x70,0x74,0x65,0x64,0x0a,0x2d,0x2d,0x20,0x74,0x68,0x69,0x73,0x20,0x69, + 0x73,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x75,0x73,0x65,0x64,0x20,0x66,0x6f,0x72,0x20, + 0x61,0x73,0x79,0x6e,0x63,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x2e,0x0a, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x73,0x65,0x73, + 0x73,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x0a,0x2d,0x2d,0x20,0x74, + 0x72,0x61,0x63,0x6b,0x73,0x20,0x61,0x6c,0x6c,0x20,0x61,0x63,0x74,0x69,0x76,0x65, + 0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x20,0x61,0x6e,0x64,0x20, + 0x61,0x73,0x73,0x6f,0x63,0x69,0x61,0x74,0x65,0x20,0x61,0x6e,0x20,0x69,0x64,0x20, + 0x74,0x6f,0x20,0x74,0x68,0x65,0x6d,0x2c,0x20,0x74,0x68,0x65,0x20,0x74,0x61,0x62, + 0x6c,0x65,0x20,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x20,0x69,0x73,0x20,0x74,0x68, + 0x65,0x20,0x69,0x64,0x3d,0x3e,0x63,0x6f,0x72,0x6f,0x20,0x6d,0x61,0x70,0x70,0x69, + 0x6e,0x67,0x2c,0x20,0x74,0x68,0x65,0x20,0x74,0x61,0x62,0x6c,0x65,0x20,0x66,0x72, + 0x6f,0x6d,0x5f,0x63,0x6f,0x72,0x6f,0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x72, + 0x65,0x76,0x65,0x72,0x73,0x65,0x0a,0x63,0x6f,0x72,0x65,0x2e,0x61,0x63,0x74,0x69, + 0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x20,0x3d,0x20, + 0x7b,0x20,0x6e,0x20,0x3d,0x20,0x30,0x2c,0x20,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64, + 0x20,0x3d,0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28, + 0x7b,0x20,0x7d,0x2c,0x20,0x7b,0x20,0x5f,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x20, + 0x22,0x76,0x22,0x20,0x7d,0x29,0x2c,0x20,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72, + 0x6f,0x20,0x3d,0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65, + 0x28,0x7b,0x20,0x7d,0x2c,0x20,0x7b,0x20,0x5f,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d, + 0x20,0x22,0x6b,0x22,0x20,0x7d,0x29,0x20,0x7d,0x0a,0x0a,0x63,0x6f,0x72,0x65,0x2e, + 0x70,0x72,0x65,0x76,0x5f,0x62,0x72,0x65,0x61,0x6b,0x5f,0x6c,0x69,0x6e,0x65,0x20, + 0x3d,0x20,0x6e,0x69,0x6c,0x20,0x2d,0x2d,0x20,0x73,0x65,0x74,0x20,0x69,0x6e,0x20, + 0x6c,0x69,0x6e,0x65,0x5f,0x68,0x6f,0x6f,0x6b,0x20,0x66,0x75,0x6e,0x63,0x74,0x69, + 0x6f,0x6e,0x0a,0x0a,0x2d,0x2d,0x20,0x22,0x42,0x45,0x47,0x49,0x4e,0x20,0x56,0x45, + 0x52,0x53,0x49,0x4f,0x4e,0x20,0x44,0x45,0x50,0x45,0x4e,0x44,0x45,0x4e,0x54,0x20, + 0x43,0x4f,0x44,0x45,0x22,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x65,0x74,0x62, + 0x70,0x65,0x6e,0x76,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x73,0x65,0x74,0x20, + 0x65,0x6e,0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x20,0x6f,0x66,0x20,0x61, + 0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20,0x28,0x63,0x6f,0x6d, + 0x70,0x69,0x6c,0x65,0x64,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x29,0x0a, + 0x69,0x66,0x20,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x20,0x3d,0x3d,0x20,0x22, + 0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x65,0x74,0x66,0x65,0x6e,0x76,0x20, + 0x3d,0x20,0x73,0x65,0x74,0x66,0x65,0x6e,0x76,0x0a,0x20,0x20,0x20,0x20,0x73,0x65, + 0x74,0x62,0x70,0x65,0x6e,0x76,0x20,0x3d,0x20,0x73,0x65,0x74,0x66,0x65,0x6e,0x76, + 0x0a,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e, + 0x20,0x3d,0x3d,0x20,0x22,0x4c,0x75,0x61,0x20,0x35,0x2e,0x32,0x22,0x20,0x74,0x68, + 0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x65,0x74, + 0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x64,0x65,0x62,0x75,0x67,0x2e, + 0x73,0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x0a,0x20,0x20,0x20,0x20,0x2d, + 0x2d,0x20,0x5f,0x45,0x4e,0x56,0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x66,0x69, + 0x72,0x73,0x74,0x20,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x73,0x65,0x74,0x62,0x70,0x65,0x6e,0x76,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x66,0x2c,0x20,0x74,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x73,0x65,0x74,0x75,0x70,0x76,0x61,0x6c,0x75,0x65,0x28,0x66,0x2c,0x20,0x31, + 0x2c,0x20,0x74,0x29,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6c,0x73,0x65,0x20,0x65,0x72, + 0x72,0x6f,0x72,0x28,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x20,0x2e,0x2e,0x20, + 0x22,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x65, + 0x64,0x2e,0x22,0x29,0x20,0x65,0x6e,0x64,0x0a,0x2d,0x2d,0x20,0x22,0x45,0x4e,0x44, + 0x20,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x20,0x44,0x45,0x50,0x45,0x4e,0x44,0x45, + 0x4e,0x54,0x20,0x43,0x4f,0x44,0x45,0x22,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x20,0x4f,0x75, + 0x74,0x70,0x75,0x74,0x20,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x6f,0x6e, + 0x20,0x68,0x61,0x6e,0x64,0x6c,0x69,0x6e,0x67,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x4f,0x76,0x65, + 0x72,0x72,0x69,0x64,0x65,0x20,0x73,0x74,0x61,0x6e,0x64,0x61,0x72,0x64,0x20,0x6f, + 0x75,0x74,0x70,0x75,0x74,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20, + 0x26,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x73,0x20,0x74,0x6f,0x20,0x72, + 0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x77,0x72,0x69, + 0x74,0x74,0x65,0x6e,0x20,0x74,0x6f,0x20,0x74,0x68,0x65,0x73,0x65,0x20,0x66,0x69, + 0x6c,0x65,0x73,0x20,0x74,0x6f,0x20,0x49,0x44,0x45,0x20,0x74,0x6f,0x6f,0x2e,0x0a, + 0x2d,0x2d,0x20,0x54,0x68,0x69,0x73,0x20,0x77,0x6f,0x72,0x6b,0x73,0x20,0x6f,0x6e, + 0x6c,0x79,0x20,0x66,0x6f,0x72,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x64,0x6f, + 0x6e,0x65,0x20,0x69,0x6e,0x20,0x4c,0x75,0x61,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75, + 0x74,0x20,0x77,0x72,0x69,0x74,0x74,0x65,0x6e,0x20,0x62,0x79,0x20,0x43,0x20,0x65, + 0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x73,0x20,0x69,0x73,0x20,0x73,0x74,0x69, + 0x6c,0x6c,0x20,0x67,0x6f,0x20,0x74,0x6f,0x20,0x73,0x79,0x73,0x74,0x65,0x6d,0x20, + 0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x66,0x69,0x6c,0x65,0x2e,0x0a,0x0a,0x2d,0x2d, + 0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x73,0x20,0x74,0x6f,0x20,0x6e, + 0x61,0x74,0x69,0x76,0x65,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x0a,0x69,0x6f,0x2e, + 0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x7b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20, + 0x3d,0x20,0x69,0x6f,0x2e,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x73,0x74,0x64, + 0x69,0x6e,0x20,0x3d,0x20,0x69,0x6f,0x2e,0x73,0x74,0x64,0x69,0x6e,0x2c,0x20,0x73, + 0x74,0x64,0x6f,0x75,0x74,0x20,0x3d,0x20,0x69,0x6f,0x2e,0x73,0x74,0x64,0x6f,0x75, + 0x74,0x2c,0x20,0x73,0x74,0x64,0x65,0x72,0x72,0x20,0x3d,0x20,0x69,0x6f,0x2e,0x73, + 0x74,0x64,0x65,0x72,0x72,0x20,0x7d,0x0a,0x0a,0x2d,0x2d,0x20,0x63,0x6f,0x6d,0x6d, + 0x65,0x6e,0x74,0x20,0x6f,0x75,0x74,0x20,0x62,0x79,0x20,0x67,0x75,0x61,0x6e,0x79, + 0x75,0x5f,0x79,0x61,0x6e,0x2c,0x20,0x6e,0x6f,0x74,0x20,0x72,0x65,0x64,0x69,0x72, + 0x65,0x63,0x74,0x20,0x69,0x6f,0x2e,0x0a,0x2d,0x2d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x20,0x70,0x72,0x69,0x6e,0x74,0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x2d, + 0x2d,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x75,0x66,0x20, + 0x3d,0x20,0x7b,0x2e,0x2e,0x2e,0x7d,0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x66, + 0x6f,0x72,0x20,0x69,0x3d,0x31,0x2c,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x22, + 0x23,0x22,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x20,0x64,0x6f,0x0a,0x2d,0x2d,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x5b,0x69,0x5d,0x20,0x3d,0x20, + 0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x62,0x75,0x66,0x5b,0x69,0x5d,0x29, + 0x0a,0x2d,0x2d,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x2d,0x2d,0x20,0x20, + 0x20,0x20,0x20,0x69,0x6f,0x2e,0x73,0x74,0x64,0x6f,0x75,0x74,0x3a,0x77,0x72,0x69, + 0x74,0x65,0x28,0x74,0x61,0x62,0x6c,0x65,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28, + 0x62,0x75,0x66,0x2c,0x20,0x22,0x5c,0x74,0x22,0x29,0x20,0x2e,0x2e,0x20,0x22,0x5c, + 0x6e,0x22,0x29,0x0a,0x2d,0x2d,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x20,0x41, + 0x63,0x74,0x75,0x61,0x6c,0x6c,0x79,0x20,0x63,0x68,0x61,0x6e,0x67,0x65,0x20,0x73, + 0x74,0x61,0x6e,0x64,0x61,0x72,0x64,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x66, + 0x69,0x6c,0x65,0x20,0x62,0x75,0x74,0x20,0x73,0x74,0x69,0x6c,0x6c,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x74,0x68,0x65,0x20,0x22,0x66,0x61,0x6b,0x65,0x22,0x20, + 0x73,0x74,0x64,0x6f,0x75,0x74,0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20, + 0x69,0x6f,0x2e,0x6f,0x75,0x74,0x70,0x75,0x74,0x28,0x6f,0x75,0x74,0x70,0x75,0x74, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x69,0x6f,0x2e,0x62,0x61,0x73,0x65,0x2e,0x6f,0x75, + 0x74,0x70,0x75,0x74,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x6f,0x2e,0x73,0x74,0x64,0x6f,0x75, + 0x74,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x64,0x75,0x6d, + 0x6d,0x79,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29,0x20, + 0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x20,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c, + 0x65,0x20,0x66,0x6f,0x72,0x20,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x6e, + 0x67,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x28,0x6e,0x6f,0x74,0x20,0x70,0x72, + 0x69,0x6e,0x74,0x65,0x64,0x20,0x61,0x74,0x20,0x61,0x6c,0x6c,0x20,0x69,0x6e,0x20, + 0x61,0x63,0x74,0x75,0x61,0x6c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x0a,0x63, + 0x6f,0x72,0x65,0x2e,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75,0x74, + 0x70,0x75,0x74,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x77,0x72,0x69,0x74, + 0x65,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c, + 0x66,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x75,0x66,0x20,0x3d,0x20,0x7b,0x2e,0x2e,0x2e, + 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x69,0x3d, + 0x31,0x2c,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x22,0x23,0x22,0x2c,0x20,0x2e, + 0x2e,0x2e,0x29,0x20,0x64,0x6f,0x20,0x62,0x75,0x66,0x5b,0x69,0x5d,0x20,0x3d,0x20, + 0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x62,0x75,0x66,0x5b,0x69,0x5d,0x29, + 0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66, + 0x20,0x3d,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x63,0x6f,0x6e,0x63,0x61,0x74,0x28, + 0x62,0x75,0x66,0x29,0x3a,0x67,0x73,0x75,0x62,0x28,0x22,0x5c,0x6e,0x22,0x2c,0x20, + 0x22,0x5c,0x72,0x5c,0x6e,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65, + 0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20, + 0x22,0x73,0x74,0x72,0x65,0x61,0x6d,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d, + 0x20,0x7b,0x20,0x74,0x79,0x70,0x65,0x3d,0x73,0x65,0x6c,0x66,0x2e,0x6d,0x6f,0x64, + 0x65,0x20,0x7d,0x2c,0x20,0x20,0x75,0x74,0x69,0x6c,0x2e,0x62,0x36,0x34,0x28,0x62, + 0x75,0x66,0x29,0x20,0x7d,0x20,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x75,0x73,0x68,0x20,0x3d,0x20,0x64,0x75,0x6d, + 0x6d,0x79,0x2c,0x0a,0x20,0x20,0x20,0x20,0x63,0x6c,0x6f,0x73,0x65,0x20,0x3d,0x20, + 0x64,0x75,0x6d,0x6d,0x79,0x2c,0x0a,0x20,0x20,0x20,0x20,0x73,0x65,0x74,0x76,0x62, + 0x75,0x66,0x20,0x3d,0x20,0x64,0x75,0x6d,0x6d,0x79,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x73,0x65,0x65,0x6b,0x20,0x3d,0x20,0x64,0x75,0x6d,0x6d,0x79,0x0a,0x7d,0x0a,0x63, + 0x6f,0x72,0x65,0x2e,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75,0x74, + 0x70,0x75,0x74,0x2e,0x5f,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x63,0x6f, + 0x72,0x65,0x2e,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75,0x74,0x70, + 0x75,0x74,0x0a,0x0a,0x2d,0x2d,0x20,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65, + 0x20,0x66,0x6f,0x72,0x20,0x63,0x6c,0x6f,0x6e,0x69,0x6e,0x67,0x20,0x6f,0x75,0x74, + 0x70,0x75,0x74,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x73,0x20,0x74,0x6f,0x20, + 0x61,0x63,0x74,0x75,0x61,0x6c,0x20,0x73,0x79,0x73,0x74,0x65,0x6d,0x20,0x61,0x6e, + 0x64,0x20,0x73,0x65,0x6e,0x64,0x20,0x74,0x6f,0x20,0x49,0x44,0x45,0x29,0x0a,0x63, + 0x6f,0x72,0x65,0x2e,0x63,0x6f,0x70,0x79,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x20, + 0x3d,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x77,0x72,0x69,0x74,0x65,0x20,0x3d,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x2e, + 0x2e,0x2e,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x72,0x65, + 0x2e,0x72,0x65,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74, + 0x2e,0x77,0x72,0x69,0x74,0x65,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x2e,0x2e,0x2e, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6f,0x2e,0x62,0x61,0x73, + 0x65,0x5b,0x73,0x65,0x6c,0x66,0x2e,0x6d,0x6f,0x64,0x65,0x5d,0x3a,0x77,0x72,0x69, + 0x74,0x65,0x28,0x2e,0x2e,0x2e,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x2c, + 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x75,0x73,0x68,0x20,0x20,0x20,0x3d,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x2e,0x2e, + 0x2e,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x6c,0x66,0x2e,0x6f, + 0x75,0x74,0x3a,0x66,0x6c,0x75,0x73,0x68,0x28,0x2e,0x2e,0x2e,0x29,0x20,0x65,0x6e, + 0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x63,0x6c,0x6f,0x73,0x65,0x20,0x20,0x20,0x3d, + 0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20, + 0x2e,0x2e,0x2e,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x6c,0x66, + 0x2e,0x6f,0x75,0x74,0x3a,0x63,0x6c,0x6f,0x73,0x65,0x28,0x2e,0x2e,0x2e,0x29,0x20, + 0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x73,0x65,0x74,0x76,0x62,0x75,0x66, + 0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x73,0x65,0x6c,0x66, + 0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65, + 0x6c,0x66,0x2e,0x6f,0x75,0x74,0x3a,0x73,0x65,0x74,0x76,0x62,0x75,0x66,0x28,0x2e, + 0x2e,0x2e,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x73,0x65,0x65, + 0x6b,0x20,0x20,0x20,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28, + 0x73,0x65,0x6c,0x66,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x73,0x65,0x6c,0x66,0x2e,0x6f,0x75,0x74,0x3a,0x73,0x65,0x65,0x6b,0x28, + 0x2e,0x2e,0x2e,0x29,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x7d,0x0a,0x63,0x6f,0x72,0x65, + 0x2e,0x63,0x6f,0x70,0x79,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x5f,0x5f,0x69, + 0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x63,0x6f,0x72,0x65,0x2e,0x63,0x6f,0x70,0x79, + 0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x20,0x42,0x72,0x65, + 0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x72,0x79, + 0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x0a,0x2d,0x2d,0x20,0x52,0x65,0x67,0x69,0x73,0x74,0x72,0x79,0x20,0x6f,0x66,0x20, + 0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6c,0x65, + 0x76,0x65,0x6c,0x73,0x20,0x6f,0x66,0x20,0x61,0x6c,0x6c,0x20,0x72,0x75,0x6e,0x6e, + 0x69,0x6e,0x67,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x73,0x0a,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x73,0x74,0x61,0x63,0x6b,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x73,0x20,0x3d, + 0x20,0x73,0x65,0x74,0x6d,0x65,0x74,0x61,0x74,0x61,0x62,0x6c,0x65,0x28,0x20,0x7b, + 0x20,0x7d,0x2c,0x20,0x7b,0x20,0x5f,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x20,0x22, + 0x6b,0x22,0x20,0x7d,0x20,0x29,0x0a,0x0a,0x2d,0x2d,0x20,0x46,0x69,0x6c,0x65,0x2f, + 0x6c,0x69,0x6e,0x65,0x20,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x20,0x66,0x6f,0x72, + 0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x20,0x28,0x42,0x50, + 0x29,0x2e,0x20,0x46,0x6f,0x72,0x20,0x61,0x20,0x67,0x69,0x76,0x65,0x6e,0x20,0x66, + 0x69,0x6c,0x65,0x2f,0x6c,0x69,0x6e,0x65,0x2c,0x20,0x61,0x20,0x6c,0x69,0x73,0x74, + 0x20,0x6f,0x66,0x20,0x42,0x50,0x20,0x69,0x73,0x20,0x61,0x73,0x73,0x6f,0x63,0x69, + 0x61,0x74,0x65,0x64,0x20,0x28,0x44,0x42,0x47,0x70,0x20,0x73,0x70,0x65,0x63,0x69, + 0x66,0x69,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x73,0x65,0x63,0x74,0x69,0x6f,0x6e, + 0x20,0x37,0x2e,0x36,0x2e,0x31,0x0a,0x2d,0x2d,0x20,0x72,0x65,0x71,0x75,0x69,0x72, + 0x65,0x20,0x74,0x68,0x61,0x74,0x20,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x20, + 0x42,0x50,0x20,0x61,0x74,0x20,0x73,0x61,0x6d,0x65,0x20,0x70,0x6c,0x61,0x63,0x65, + 0x20,0x6d,0x75,0x73,0x74,0x20,0x62,0x65,0x20,0x68,0x61,0x6e,0x64,0x6c,0x65,0x64, + 0x29,0x0a,0x2d,0x2d,0x20,0x41,0x20,0x42,0x50,0x20,0x69,0x73,0x20,0x61,0x20,0x74, + 0x61,0x62,0x6c,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x61,0x6c,0x6c,0x20,0x61,0x64, + 0x64,0x69,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x20,0x70,0x72,0x6f,0x70,0x65,0x72,0x74, + 0x69,0x65,0x73,0x20,0x28,0x74,0x79,0x70,0x65,0x2c,0x20,0x63,0x6f,0x6e,0x64,0x69, + 0x74,0x69,0x6f,0x6e,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x20,0x74,0x68,0x65,0x20,0x69, + 0x64,0x20,0x69,0x73,0x20,0x74,0x68,0x65,0x20,0x73,0x74,0x72,0x69,0x6e,0x67,0x20, + 0x72,0x65,0x70,0x72,0x65,0x73,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x20,0x6f, + 0x66,0x20,0x74,0x68,0x65,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x0a,0x63,0x6f,0x72, + 0x65,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x20,0x3d,0x20, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x73,0x20,0x74,0x6f,0x20,0x63,0x61,0x6c,0x6c,0x20,0x74,0x6f,0x20,0x6d,0x61, + 0x74,0x63,0x68,0x20,0x68,0x69,0x74,0x20,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f, + 0x6e,0x73,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69, + 0x74,0x69,0x6f,0x6e,0x73,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x5b,0x22,0x3e,0x3d,0x22,0x5d,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x28,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x74,0x61,0x72,0x67,0x65, + 0x74,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76,0x61,0x6c,0x75,0x65,0x20, + 0x3e,0x3d,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5b,0x22,0x3d,0x3d,0x22,0x5d,0x20,0x3d,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20, + 0x74,0x61,0x72,0x67,0x65,0x74,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x76, + 0x61,0x6c,0x75,0x65,0x20,0x3d,0x3d,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x20,0x65, + 0x6e,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5b,0x22,0x25,0x22, + 0x5d,0x20,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x76,0x61, + 0x6c,0x75,0x65,0x2c,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x29,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x28,0x76,0x61,0x6c,0x75,0x65,0x20,0x25,0x20,0x74,0x61,0x72, + 0x67,0x65,0x74,0x29,0x20,0x3d,0x3d,0x20,0x30,0x20,0x65,0x6e,0x64,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x2d,0x2d,0x20,0x74,0x72,0x61,0x63,0x6b, + 0x73,0x20,0x65,0x76,0x65,0x6e,0x74,0x73,0x20,0x73,0x75,0x63,0x68,0x20,0x61,0x73, + 0x20,0x73,0x74,0x65,0x70,0x5f,0x69,0x6e,0x74,0x6f,0x20,0x6f,0x72,0x20,0x73,0x74, + 0x65,0x70,0x5f,0x6f,0x76,0x65,0x72,0x0a,0x63,0x6f,0x72,0x65,0x2e,0x65,0x76,0x65, + 0x6e,0x74,0x73,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x0a,0x64,0x6f,0x0a,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x69,0x6c,0x65,0x5f,0x6d,0x61,0x70, + 0x70,0x69,0x6e,0x67,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x69,0x64,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x20, + 0x3d,0x20,0x7b,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x77,0x61,0x69,0x74,0x69,0x6e,0x67,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x73, + 0x20,0x3d,0x20,0x7b,0x20,0x7d,0x20,0x2d,0x2d,0x20,0x73,0x65,0x73,0x73,0x69,0x6f, + 0x6e,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x77,0x61,0x69,0x74,0x20,0x66,0x6f,0x72, + 0x20,0x61,0x6e,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x28,0x6f,0x76,0x65,0x72,0x2c, + 0x20,0x69,0x6e,0x74,0x6f,0x2c,0x20,0x6f,0x75,0x74,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x74,0x65,0x70,0x5f,0x69,0x6e,0x74,0x6f,0x20, + 0x3d,0x20,0x6e,0x69,0x6c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x20,0x74,0x68,0x61,0x74,0x20,0x72,0x65,0x67, + 0x69,0x73,0x74,0x65,0x72,0x65,0x64,0x20,0x61,0x20,0x73,0x74,0x65,0x70,0x5f,0x69, + 0x6e,0x74,0x6f,0x20,0x65,0x76,0x65,0x6e,0x74,0x2c,0x20,0x69,0x66,0x20,0x61,0x6e, + 0x79,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x65,0x71,0x75, + 0x65,0x6e,0x63,0x65,0x20,0x3d,0x20,0x30,0x20,0x2d,0x2d,0x20,0x75,0x73,0x65,0x64, + 0x20,0x74,0x6f,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x20,0x62,0x72,0x65, + 0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20,0x49,0x44,0x73,0x0a,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69, + 0x6e,0x67,0x20,0x3d,0x20,0x7b,0x7d,0x20,0x20,0x2d,0x2d,0x20,0x75,0x73,0x65,0x20, + 0x74,0x6f,0x20,0x72,0x65,0x63,0x6f,0x72,0x64,0x20,0x74,0x68,0x65,0x20,0x6c,0x69, + 0x6e,0x65,0x20,0x6f,0x66,0x20,0x62,0x70,0x0a,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e,0x73, + 0x65,0x72,0x74,0x5f,0x6c,0x69,0x6e,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67, + 0x28,0x6c,0x69,0x6e,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, + 0x66,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x6c, + 0x69,0x6e,0x65,0x5d,0x20,0x3d,0x3d,0x20,0x6e,0x69,0x6c,0x20,0x74,0x68,0x65,0x6e, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e, + 0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x6c,0x69,0x6e,0x65,0x5d,0x20, + 0x3d,0x20,0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e, + 0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x6c,0x69,0x6e,0x65,0x5d,0x20, + 0x3d,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x6c, + 0x69,0x6e,0x65,0x5d,0x20,0x2b,0x20,0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x20,0x72,0x65,0x6d,0x6f,0x76,0x65,0x5f,0x6c,0x69,0x6e,0x65,0x5f,0x6d,0x61,0x70, + 0x70,0x69,0x6e,0x67,0x28,0x6c,0x69,0x6e,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x6d, + 0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x6c,0x69,0x6e,0x65,0x5d,0x20,0x61,0x6e,0x64, + 0x20,0x6c,0x69,0x6e,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x6c,0x69, + 0x6e,0x65,0x5d,0x20,0x3e,0x20,0x31,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x6d,0x61, + 0x70,0x70,0x69,0x6e,0x67,0x5b,0x6c,0x69,0x6e,0x65,0x5d,0x20,0x3d,0x20,0x6c,0x69, + 0x6e,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x6c,0x69,0x6e,0x65,0x5d, + 0x20,0x2d,0x20,0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, + 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69, + 0x6e,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x6c,0x69,0x6e,0x65,0x5d, + 0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f,0x72,0x65,0x2e,0x62,0x72, + 0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e,0x67,0x75,0x65,0x73,0x73,0x28, + 0x6c,0x69,0x6e,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e, + 0x67,0x5b,0x6c,0x69,0x6e,0x65,0x5d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f, + 0x72,0x65,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e,0x75, + 0x70,0x64,0x61,0x74,0x65,0x28,0x6f,0x6c,0x64,0x6c,0x69,0x6e,0x65,0x2c,0x6e,0x65, + 0x77,0x62,0x70,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x66,0x69,0x6c,0x65,0x20,0x3d,0x20,0x6e,0x65,0x77,0x62,0x70,0x2e, + 0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6c,0x69,0x6e,0x65,0x20,0x3d,0x20,0x6f,0x6c, + 0x64,0x6c,0x69,0x6e,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x66,0x69,0x6c,0x65,0x72,0x65,0x67,0x20,0x3d,0x20,0x66,0x69, + 0x6c,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x66,0x69,0x6c,0x65,0x5d, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20, + 0x66,0x69,0x6c,0x65,0x72,0x65,0x67,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x6e,0x69,0x6c,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6c,0x69,0x6e,0x65,0x72,0x65, + 0x67,0x20,0x3d,0x20,0x66,0x69,0x6c,0x65,0x72,0x65,0x67,0x5b,0x6c,0x69,0x6e,0x65, + 0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74, + 0x20,0x6c,0x69,0x6e,0x65,0x72,0x65,0x67,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x6e,0x69,0x6c,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x6d,0x6f,0x76,0x65,0x5f,0x6c,0x69,0x6e,0x65, + 0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x28,0x6f,0x6c,0x64,0x6c,0x69,0x6e,0x65, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x69,0x3d, + 0x31,0x2c,0x20,0x23,0x6c,0x69,0x6e,0x65,0x72,0x65,0x67,0x20,0x64,0x6f,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6c,0x69, + 0x6e,0x65,0x72,0x65,0x67,0x5b,0x69,0x5d,0x2e,0x69,0x64,0x20,0x3d,0x3d,0x20,0x6e, + 0x65,0x77,0x62,0x70,0x2e,0x69,0x64,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x61,0x62, + 0x6c,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x28,0x6c,0x69,0x6e,0x65,0x72,0x65, + 0x67,0x2c,0x20,0x69,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x69,0x6e,0x65,0x72,0x65,0x67,0x20,0x3d,0x20,0x7b,0x7d,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x73,0x65,0x72,0x74,0x5f,0x6c,0x69,0x6e,0x65, + 0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x28,0x6e,0x65,0x77,0x62,0x70,0x2e,0x6c, + 0x69,0x6e,0x65,0x6e,0x6f,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74, + 0x61,0x62,0x6c,0x65,0x2e,0x69,0x6e,0x73,0x65,0x72,0x74,0x28,0x6c,0x69,0x6e,0x65, + 0x72,0x65,0x67,0x2c,0x20,0x6e,0x65,0x77,0x62,0x70,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x66,0x69,0x6c,0x65,0x72,0x65,0x67,0x5b,0x6e,0x65,0x77,0x62, + 0x70,0x2e,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x5d,0x20,0x3d,0x20,0x6c,0x69,0x6e,0x65, + 0x72,0x65,0x67,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20, + 0x20,0x2d,0x2d,0x2d,0x20,0x49,0x6e,0x73,0x65,0x72,0x74,0x73,0x20,0x61,0x20,0x6e, + 0x65,0x77,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20,0x69,0x6e, + 0x74,0x6f,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x72,0x79,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x62,0x70,0x20,0x28,0x74,0x61, + 0x62,0x6c,0x65,0x29,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20, + 0x64,0x61,0x74,0x61,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72, + 0x61,0x6d,0x20,0x75,0x72,0x69,0x20,0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x2c,0x20, + 0x6f,0x70,0x74,0x69,0x6f,0x6e,0x61,0x6c,0x29,0x20,0x41,0x62,0x73,0x6f,0x6c,0x75, + 0x74,0x65,0x20,0x66,0x69,0x6c,0x65,0x20,0x55,0x52,0x49,0x2c,0x20,0x66,0x6f,0x72, + 0x20,0x6c,0x69,0x6e,0x65,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74, + 0x73,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20, + 0x6c,0x69,0x6e,0x65,0x20,0x28,0x6e,0x75,0x6d,0x62,0x65,0x72,0x2c,0x20,0x6f,0x70, + 0x74,0x69,0x6f,0x6e,0x61,0x6c,0x29,0x20,0x4c,0x69,0x6e,0x65,0x20,0x77,0x68,0x65, + 0x72,0x65,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20,0x73,0x74, + 0x6f,0x70,0x73,0x2c,0x20,0x66,0x6f,0x72,0x20,0x6c,0x69,0x6e,0x65,0x20,0x62,0x72, + 0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d, + 0x20,0x40,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f, + 0x69,0x6e,0x74,0x20,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x0a,0x20, + 0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f,0x72,0x65, + 0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e,0x69,0x6e,0x73, + 0x65,0x72,0x74,0x28,0x62,0x70,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x70,0x69,0x64,0x20,0x3d,0x20,0x73,0x65,0x71, + 0x75,0x65,0x6e,0x63,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x65, + 0x71,0x75,0x65,0x6e,0x63,0x65,0x20,0x3d,0x20,0x62,0x70,0x69,0x64,0x20,0x2b,0x20, + 0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x70,0x2e,0x69,0x64,0x20, + 0x3d,0x20,0x62,0x70,0x69,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d, + 0x2d,0x20,0x72,0x65,0x2d,0x65,0x6e,0x63,0x6f,0x64,0x65,0x20,0x74,0x68,0x65,0x20, + 0x55,0x52,0x49,0x20,0x74,0x6f,0x20,0x61,0x76,0x6f,0x69,0x64,0x20,0x61,0x6e,0x79, + 0x20,0x6d,0x69,0x73,0x6d,0x61,0x74,0x63,0x68,0x20,0x28,0x77,0x69,0x74,0x68,0x20, + 0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x20,0x66,0x6f,0x72,0x20,0x65,0x78, + 0x61,0x6d,0x70,0x6c,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x75,0x72,0x69,0x20,0x3d,0x20,0x75,0x72,0x6c,0x2e,0x70, + 0x61,0x72,0x73,0x65,0x28,0x62,0x70,0x2e,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x70,0x2e,0x66,0x69,0x6c, + 0x65,0x6e,0x61,0x6d,0x65,0x20,0x3d,0x20,0x75,0x72,0x6c,0x2e,0x62,0x75,0x69,0x6c, + 0x64,0x7b,0x20,0x73,0x63,0x68,0x65,0x6d,0x65,0x3d,0x75,0x72,0x69,0x2e,0x73,0x63, + 0x68,0x65,0x6d,0x65,0x2c,0x20,0x61,0x75,0x74,0x68,0x6f,0x72,0x69,0x74,0x79,0x3d, + 0x22,0x22,0x2c,0x20,0x70,0x61,0x74,0x68,0x3d,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72, + 0x6d,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x75,0x72,0x69,0x2e, + 0x70,0x61,0x74,0x68,0x29,0x7d,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x69,0x6c,0x65,0x72,0x65,0x67,0x20,0x3d,0x20, + 0x66,0x69,0x6c,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x62,0x70,0x2e, + 0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x66,0x69,0x6c,0x65,0x72,0x65,0x67, + 0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x66,0x69,0x6c,0x65,0x72,0x65,0x67,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x69,0x6c,0x65, + 0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x62,0x70,0x2e,0x66,0x69,0x6c,0x65, + 0x6e,0x61,0x6d,0x65,0x5d,0x20,0x3d,0x20,0x66,0x69,0x6c,0x65,0x72,0x65,0x67,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6c,0x69,0x6e,0x65,0x72, + 0x65,0x67,0x20,0x3d,0x20,0x66,0x69,0x6c,0x65,0x72,0x65,0x67,0x5b,0x62,0x70,0x2e, + 0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x6c,0x69,0x6e,0x65,0x72,0x65,0x67,0x20,0x74, + 0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x69,0x6e,0x65,0x72,0x65,0x67,0x20,0x3d,0x20,0x7b,0x7d,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x69,0x6c,0x65,0x72,0x65,0x67, + 0x5b,0x62,0x70,0x2e,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x5d,0x20,0x3d,0x20,0x6c,0x69, + 0x6e,0x65,0x72,0x65,0x67,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e, + 0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x73,0x65,0x72,0x74, + 0x5f,0x6c,0x69,0x6e,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x28,0x62,0x70, + 0x2e,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x29,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x74,0x61,0x62,0x6c,0x65,0x2e,0x69,0x6e,0x73,0x65,0x72,0x74,0x28,0x6c, + 0x69,0x6e,0x65,0x72,0x65,0x67,0x2c,0x20,0x62,0x70,0x29,0x0a,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x64,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b, + 0x62,0x70,0x69,0x64,0x5d,0x20,0x3d,0x20,0x62,0x70,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x62,0x70,0x69,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x20, + 0x49,0x66,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x28,0x73,0x29, + 0x20,0x65,0x78,0x69,0x73,0x74,0x73,0x20,0x66,0x6f,0x72,0x20,0x67,0x69,0x76,0x65, + 0x6e,0x20,0x66,0x69,0x6c,0x65,0x2f,0x6c,0x69,0x6e,0x65,0x2c,0x20,0x75,0x70,0x74, + 0x61,0x74,0x65,0x73,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20, + 0x63,0x6f,0x75,0x6e,0x74,0x65,0x72,0x73,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x61,0x6e,0x64,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x73,0x20,0x77,0x68,0x65,0x74, + 0x68,0x65,0x72,0x20,0x61,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74, + 0x20,0x68,0x61,0x73,0x20,0x6d,0x61,0x74,0x63,0x68,0x65,0x64,0x20,0x28,0x62,0x6f, + 0x6f,0x6c,0x65,0x61,0x6e,0x29,0x0a,0x20,0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x74, + 0x69,0x6f,0x6e,0x20,0x63,0x6f,0x72,0x65,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f, + 0x69,0x6e,0x74,0x73,0x2e,0x61,0x74,0x28,0x66,0x69,0x6c,0x65,0x2c,0x20,0x6c,0x69, + 0x6e,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x74,0x65,0x6d,0x70,0x20,0x3d,0x20,0x66,0x69,0x6c,0x65,0x3a,0x73,0x75, + 0x62,0x28,0x23,0x22,0x66,0x69,0x6c,0x65,0x3a,0x2f,0x2f,0x22,0x2b,0x31,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x6b,0x2c,0x20,0x5f, + 0x20,0x69,0x6e,0x20,0x70,0x61,0x69,0x72,0x73,0x28,0x66,0x69,0x6c,0x65,0x5f,0x6d, + 0x61,0x70,0x70,0x69,0x6e,0x67,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x2c,0x6a,0x20,0x3d,0x20,0x6b,0x3a,0x66,0x69,0x6e, + 0x64,0x28,0x74,0x65,0x6d,0x70,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x28,0x6a,0x20,0x3d,0x3d,0x20,0x23,0x6b,0x29,0x20,0x74,0x68, + 0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x66,0x69,0x6c,0x65,0x20,0x3d,0x20,0x6b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x70,0x73,0x20,0x3d,0x20,0x66,0x69,0x6c, + 0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x66,0x69,0x6c,0x65,0x5d,0x20, + 0x61,0x6e,0x64,0x20,0x66,0x69,0x6c,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67, + 0x5b,0x66,0x69,0x6c,0x65,0x5d,0x5b,0x6c,0x69,0x6e,0x65,0x5d,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x62,0x70,0x73,0x20, + 0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x69,0x6c,0x20, + 0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x64,0x6f,0x5f,0x62,0x72,0x65,0x61,0x6b,0x20,0x3d,0x20,0x66,0x61, + 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20, + 0x5f,0x2c,0x20,0x62,0x70,0x20,0x69,0x6e,0x20,0x70,0x61,0x69,0x72,0x73,0x28,0x62, + 0x70,0x73,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x62,0x70,0x2e,0x73,0x74,0x61,0x74,0x65,0x20,0x3d, + 0x3d,0x20,0x22,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x22,0x20,0x74,0x68,0x65,0x6e, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6d,0x61,0x74,0x63,0x68,0x20,0x3d,0x20,0x74, + 0x72,0x75,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x62,0x70,0x2e,0x63,0x6f,0x6e,0x64,0x69,0x74, + 0x69,0x6f,0x6e,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x54,0x4f,0x44,0x4f,0x3a,0x20,0x74,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x6e,0x6f, + 0x74,0x20,0x74,0x68,0x65,0x20,0x6f,0x70,0x74,0x69,0x6d,0x61,0x6c,0x20,0x73,0x6f, + 0x6c,0x75,0x74,0x69,0x6f,0x6e,0x20,0x62,0x65,0x63,0x61,0x75,0x73,0x65,0x20,0x43, + 0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x69,0x6e, + 0x73,0x74,0x61,0x6e,0x74,0x69,0x61,0x74,0x65,0x64,0x20,0x74,0x77,0x69,0x63,0x65, + 0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, + 0x6e,0x74,0x20,0x6d,0x61,0x74,0x63,0x68,0x65,0x73,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x63,0x78,0x74,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x74,0x65, + 0x78,0x74,0x2e,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x3a,0x6e,0x65,0x77,0x28,0x61, + 0x63,0x74,0x69,0x76,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x2e,0x63,0x6f, + 0x72,0x6f,0x2c,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x65,0x74,0x62,0x70, + 0x65,0x6e,0x76,0x28,0x62,0x70,0x2e,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e, + 0x2c,0x20,0x63,0x78,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c, + 0x20,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x2c,0x20,0x72,0x65,0x73,0x75,0x6c,0x74, + 0x20,0x3d,0x20,0x70,0x63,0x61,0x6c,0x6c,0x28,0x62,0x70,0x2e,0x63,0x6f,0x6e,0x64, + 0x69,0x74,0x69,0x6f,0x6e,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f, + 0x74,0x20,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x20,0x74,0x68,0x65,0x6e,0x20,0x6c, + 0x6f,0x67,0x28,0x22,0x45,0x52,0x52,0x4f,0x52,0x22,0x2c,0x20,0x22,0x43,0x6f,0x6e, + 0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x65,0x76,0x61,0x6c,0x75,0x61,0x74,0x69,0x6f, + 0x6e,0x20,0x66,0x61,0x69,0x6c,0x65,0x64,0x20,0x66,0x6f,0x72,0x20,0x62,0x72,0x65, + 0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x20,0x61,0x74,0x20,0x25,0x73,0x3a,0x25,0x64, + 0x3a,0x20,0x25,0x73,0x22,0x2c,0x20,0x66,0x69,0x6c,0x65,0x2c,0x20,0x6c,0x69,0x6e, + 0x65,0x2c,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x61, + 0x6c,0x77,0x61,0x79,0x73,0x20,0x73,0x74,0x6f,0x70,0x73,0x20,0x69,0x66,0x20,0x61, + 0x6e,0x20,0x65,0x72,0x72,0x6f,0x72,0x20,0x6f,0x63,0x63,0x75,0x72,0x73,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x6d,0x61,0x74,0x63,0x68,0x20,0x3d,0x20,0x28,0x6e,0x6f,0x74,0x20, + 0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x29,0x20,0x6f,0x72,0x20,0x72,0x65,0x73,0x75, + 0x6c,0x74,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6d,0x61,0x74,0x63,0x68,0x20, + 0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x70,0x2e,0x68,0x69,0x74,0x5f, + 0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x62,0x70,0x2e,0x68,0x69,0x74,0x5f,0x63, + 0x6f,0x75,0x6e,0x74,0x20,0x2b,0x20,0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x63,0x6f,0x72,0x65,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73, + 0x2e,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x73,0x5b, + 0x62,0x70,0x2e,0x68,0x69,0x74,0x5f,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e, + 0x5d,0x28,0x62,0x70,0x2e,0x68,0x69,0x74,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x2c,0x20, + 0x62,0x70,0x2e,0x68,0x69,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x29,0x20,0x74,0x68, + 0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x62,0x70, + 0x2e,0x74,0x65,0x6d,0x70,0x6f,0x72,0x61,0x72,0x79,0x20,0x74,0x68,0x65,0x6e,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x72,0x65, + 0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e,0x72,0x65,0x6d, + 0x6f,0x76,0x65,0x28,0x62,0x70,0x2e,0x69,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64, + 0x6f,0x5f,0x62,0x72,0x65,0x61,0x6b,0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x74,0x68,0x65,0x72,0x65,0x20, + 0x69,0x73,0x20,0x6e,0x6f,0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x74,0x6f,0x20,0x68, + 0x61,0x6e,0x64,0x6c,0x65,0x20,0x6d,0x75,0x6c,0x74,0x69,0x70,0x6c,0x65,0x20,0x62, + 0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x3a,0x20,0x61,0x6c,0x6c,0x20, + 0x68,0x69,0x74,0x20,0x63,0x6f,0x75,0x6e,0x74,0x73,0x20,0x6d,0x75,0x73,0x74,0x20, + 0x62,0x65,0x20,0x75,0x70,0x64,0x61,0x74,0x65,0x64,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x64,0x6f,0x5f,0x62,0x72,0x65,0x61,0x6b,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x20,0x63,0x6f,0x72,0x65,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74, + 0x73,0x2e,0x67,0x65,0x74,0x28,0x69,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x69,0x64,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x69,0x64,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x69, + 0x64,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x64,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e, + 0x67,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20, + 0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f,0x72,0x65, + 0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e,0x72,0x65,0x6d, + 0x6f,0x76,0x65,0x28,0x69,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x70,0x20,0x3d,0x20,0x69,0x64,0x5f,0x6d,0x61, + 0x70,0x70,0x69,0x6e,0x67,0x5b,0x69,0x64,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x62,0x70,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x64,0x5f,0x6d,0x61,0x70,0x70, + 0x69,0x6e,0x67,0x5b,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x6c,0x69,0x6e,0x65,0x72,0x65,0x67,0x20,0x3d,0x20,0x66,0x69,0x6c,0x65,0x5f,0x6d, + 0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x62,0x70,0x2e,0x66,0x69,0x6c,0x65,0x6e,0x61, + 0x6d,0x65,0x5d,0x5b,0x62,0x70,0x2e,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x5d,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x69, + 0x3d,0x31,0x2c,0x20,0x23,0x6c,0x69,0x6e,0x65,0x72,0x65,0x67,0x20,0x64,0x6f,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x6c,0x69,0x6e,0x65,0x72,0x65,0x67,0x5b,0x69,0x5d,0x20,0x3d,0x3d, + 0x20,0x62,0x70,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x61,0x62, + 0x6c,0x65,0x2e,0x72,0x65,0x6d,0x6f,0x76,0x65,0x28,0x6c,0x69,0x6e,0x65,0x72,0x65, + 0x67,0x2c,0x20,0x69,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x72,0x65,0x6d,0x6f,0x76,0x65,0x5f,0x6c,0x69,0x6e,0x65,0x5f,0x6d,0x61,0x70, + 0x70,0x69,0x6e,0x67,0x28,0x62,0x70,0x2e,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x29,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x63,0x6c,0x65,0x61,0x6e,0x75,0x70,0x20,0x66,0x69,0x6c,0x65,0x5f,0x6d,0x61,0x70, + 0x70,0x69,0x6e,0x67,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x6e,0x65,0x78,0x74,0x28,0x6c,0x69,0x6e, + 0x65,0x72,0x65,0x67,0x29,0x20,0x74,0x68,0x65,0x6e,0x20,0x66,0x69,0x6c,0x65,0x5f, + 0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x62,0x70,0x2e,0x66,0x69,0x6c,0x65,0x6e, + 0x61,0x6d,0x65,0x5d,0x5b,0x62,0x70,0x2e,0x6c,0x69,0x6e,0x65,0x6e,0x6f,0x5d,0x20, + 0x3d,0x20,0x6e,0x69,0x6c,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x6e,0x65,0x78, + 0x74,0x28,0x66,0x69,0x6c,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x62, + 0x70,0x2e,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x5d,0x29,0x20,0x74,0x68,0x65, + 0x6e,0x20,0x66,0x69,0x6c,0x65,0x5f,0x6d,0x61,0x70,0x70,0x69,0x6e,0x67,0x5b,0x62, + 0x70,0x2e,0x66,0x69,0x6c,0x65,0x6e,0x61,0x6d,0x65,0x5d,0x20,0x3d,0x20,0x6e,0x69, + 0x6c,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x72,0x75,0x65,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x61,0x6c,0x73,0x65,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x20, + 0x52,0x65,0x74,0x75,0x72,0x6e,0x73,0x20,0x61,0x6e,0x20,0x58,0x4d,0x4c,0x20,0x64, + 0x61,0x74,0x61,0x20,0x73,0x74,0x72,0x75,0x63,0x74,0x75,0x72,0x65,0x20,0x74,0x68, + 0x61,0x74,0x20,0x64,0x65,0x73,0x63,0x72,0x69,0x62,0x65,0x73,0x20,0x67,0x69,0x76, + 0x65,0x6e,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x0a,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x20,0x40,0x70,0x61,0x72,0x61,0x6d,0x20,0x69,0x64,0x20,0x28, + 0x6e,0x75,0x6d,0x62,0x65,0x72,0x29,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, + 0x6e,0x74,0x20,0x49,0x44,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x20,0x54,0x61,0x62,0x6c,0x65,0x20,0x64,0x65,0x73,0x63,0x72, + 0x69,0x62,0x69,0x6e,0x67,0x20,0x61,0x20,0x3c,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f, + 0x6f,0x69,0x6e,0x74,0x3e,0x20,0x74,0x61,0x67,0x20,0x6f,0x72,0x20,0x6e,0x69,0x6c, + 0x20,0x66,0x6f,0x6c,0x6c,0x6f,0x77,0x65,0x64,0x20,0x62,0x79,0x20,0x61,0x6e,0x20, + 0x65,0x72,0x72,0x6f,0x72,0x20,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f,0x72,0x65,0x2e, + 0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e,0x67,0x65,0x74,0x5f, + 0x78,0x6d,0x6c,0x28,0x69,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x62,0x70,0x20,0x3d,0x20,0x69,0x64,0x5f,0x6d,0x61, + 0x70,0x70,0x69,0x6e,0x67,0x5b,0x69,0x64,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x62,0x70,0x20,0x74,0x68,0x65,0x6e, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x69,0x6c,0x2c,0x20,0x22,0x4e,0x6f, + 0x20,0x73,0x75,0x63,0x68,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74, + 0x3a,0x20,0x22,0x2e,0x2e,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x69,0x64, + 0x29,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x3d,0x20, + 0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f, + 0x69,0x6e,0x74,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x7d, + 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x6b, + 0x2c,0x76,0x20,0x69,0x6e,0x20,0x70,0x61,0x69,0x72,0x73,0x28,0x62,0x70,0x29,0x20, + 0x64,0x6f,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x2e,0x61,0x74,0x74,0x72, + 0x5b,0x6b,0x5d,0x20,0x3d,0x20,0x76,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x62,0x70,0x2e,0x65,0x78,0x70,0x72,0x65,0x73, + 0x73,0x69,0x6f,0x6e,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x5b,0x31, + 0x5d,0x20,0x3d,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x65,0x78,0x70, + 0x72,0x65,0x73,0x73,0x69,0x6f,0x6e,0x22,0x2c,0x20,0x20,0x62,0x70,0x2e,0x65,0x78, + 0x70,0x72,0x65,0x73,0x73,0x69,0x6f,0x6e,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x20,0x75,0x73,0x65,0x20, + 0x6f,0x6e,0x6c,0x79,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73, + 0x70,0x6f,0x6e,0x73,0x65,0x2e,0x61,0x74,0x74,0x72,0x2e,0x65,0x78,0x70,0x72,0x65, + 0x73,0x73,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x2e,0x61,0x74,0x74, + 0x72,0x2e,0x63,0x6f,0x6e,0x64,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6e,0x69, + 0x6c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e, + 0x73,0x65,0x2e,0x61,0x74,0x74,0x72,0x2e,0x74,0x65,0x6d,0x70,0x6f,0x72,0x61,0x72, + 0x79,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x20,0x2d,0x2d,0x20,0x54,0x4f,0x44,0x4f,0x3a, + 0x20,0x74,0x68,0x65,0x20,0x73,0x70,0x65,0x63,0x69,0x66,0x69,0x63,0x61,0x74,0x69, + 0x6f,0x6e,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x63,0x6c,0x65,0x61,0x72,0x20, + 0x77,0x68,0x65,0x74,0x68,0x65,0x72,0x20,0x74,0x68,0x69,0x73,0x20,0x73,0x68,0x6f, + 0x75,0x6c,0x64,0x20,0x62,0x65,0x20,0x70,0x72,0x6f,0x76,0x69,0x64,0x65,0x64,0x2c, + 0x20,0x73,0x65,0x65,0x20,0x6f,0x74,0x68,0x65,0x72,0x20,0x69,0x6d,0x70,0x6c,0x65, + 0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f,0x6e,0x73,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e, + 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x2d,0x20,0x52,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x20,0x61,0x6e,0x20, + 0x65,0x76,0x65,0x6e,0x74,0x20,0x74,0x6f,0x20,0x62,0x65,0x20,0x74,0x72,0x69,0x67, + 0x67,0x65,0x72,0x65,0x64,0x2e,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40,0x70, + 0x61,0x72,0x61,0x6d,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x65,0x76,0x65,0x6e,0x74, + 0x20,0x6e,0x61,0x6d,0x65,0x20,0x74,0x6f,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x65, + 0x72,0x20,0x28,0x6d,0x75,0x73,0x74,0x20,0x62,0x65,0x20,0x22,0x6f,0x76,0x65,0x72, + 0x22,0x2c,0x20,0x22,0x6f,0x75,0x74,0x22,0x20,0x6f,0x72,0x20,0x22,0x69,0x6e,0x74, + 0x6f,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e, + 0x20,0x63,0x6f,0x72,0x65,0x2e,0x65,0x76,0x65,0x6e,0x74,0x73,0x2e,0x72,0x65,0x67, + 0x69,0x73,0x74,0x65,0x72,0x28,0x65,0x76,0x65,0x6e,0x74,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74,0x68,0x72,0x65,0x61, + 0x64,0x20,0x3d,0x20,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x73,0x65,0x73,0x73,0x69, + 0x6f,0x6e,0x2e,0x63,0x6f,0x72,0x6f,0x5b,0x31,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x6c,0x6f,0x67,0x28,0x22,0x44,0x45,0x42,0x55,0x47,0x22,0x2c,0x20, + 0x22,0x52,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x65,0x64,0x20,0x25,0x73,0x20,0x65, + 0x76,0x65,0x6e,0x74,0x20,0x66,0x6f,0x72,0x20,0x25,0x73,0x20,0x28,0x25,0x64,0x29, + 0x22,0x2c,0x20,0x65,0x76,0x65,0x6e,0x74,0x2c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x29,0x2c,0x20,0x73,0x74,0x61,0x63, + 0x6b,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x73,0x5b,0x74,0x68,0x72,0x65,0x61,0x64,0x5d, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x65,0x76,0x65, + 0x6e,0x74,0x20,0x3d,0x3d,0x20,0x22,0x69,0x6e,0x74,0x6f,0x22,0x20,0x74,0x68,0x65, + 0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x74, + 0x65,0x70,0x5f,0x69,0x6e,0x74,0x6f,0x20,0x3d,0x20,0x74,0x72,0x75,0x65,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x61,0x69,0x74,0x69,0x6e,0x67,0x5f, + 0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x73,0x5b,0x74,0x68,0x72,0x65,0x61,0x64,0x5d, + 0x20,0x3d,0x20,0x7b,0x20,0x65,0x76,0x65,0x6e,0x74,0x2c,0x20,0x73,0x74,0x61,0x63, + 0x6b,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x73,0x5b,0x74,0x68,0x72,0x65,0x61,0x64,0x5d, + 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d,0x20, + 0x52,0x65,0x74,0x75,0x72,0x6e,0x73,0x20,0x69,0x66,0x20,0x61,0x6e,0x20,0x65,0x76, + 0x65,0x6e,0x74,0x20,0x28,0x73,0x74,0x65,0x70,0x20,0x69,0x6e,0x74,0x6f,0x2c,0x20, + 0x6f,0x76,0x65,0x72,0x2c,0x20,0x6f,0x75,0x74,0x29,0x20,0x69,0x73,0x20,0x74,0x72, + 0x69,0x67,0x67,0x65,0x72,0x65,0x64,0x2e,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x44,0x6f,0x65,0x73,0x20,0x2a,0x6e,0x6f,0x74,0x2a,0x20,0x64,0x69,0x73,0x63,0x61, + 0x72,0x64,0x20,0x65,0x76,0x65,0x6e,0x74,0x73,0x20,0x28,0x65,0x76,0x65,0x6e,0x20, + 0x69,0x66,0x20,0x74,0x68,0x65,0x79,0x20,0x6d,0x61,0x74,0x63,0x68,0x29,0x20,0x61, + 0x73,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x6d,0x75,0x73,0x74,0x20,0x62,0x65,0x20, + 0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x65,0x64,0x20,0x6d,0x61,0x6e,0x75,0x61,0x6c, + 0x6c,0x79,0x20,0x69,0x66,0x20,0x61,0x20,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69, + 0x6e,0x74,0x20,0x6d,0x61,0x74,0x63,0x68,0x20,0x62,0x65,0x66,0x6f,0x72,0x65,0x20, + 0x61,0x6e,0x79,0x77,0x61,0x79,0x2e,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x40, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x72,0x75,0x65,0x20,0x69,0x66,0x20,0x61, + 0x6e,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x68,0x61,0x73,0x20,0x6d,0x61,0x74,0x63, + 0x68,0x65,0x64,0x2c,0x20,0x66,0x61,0x6c,0x73,0x65,0x20,0x6f,0x74,0x68,0x65,0x72, + 0x77,0x69,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f, + 0x6e,0x20,0x63,0x6f,0x72,0x65,0x2e,0x65,0x76,0x65,0x6e,0x74,0x73,0x2e,0x64,0x6f, + 0x65,0x73,0x5f,0x6d,0x61,0x74,0x63,0x68,0x28,0x6c,0x69,0x6e,0x65,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x73,0x74,0x65,0x70,0x5f,0x69, + 0x6e,0x74,0x6f,0x20,0x61,0x6e,0x64,0x20,0x63,0x6f,0x72,0x65,0x2e,0x70,0x72,0x65, + 0x76,0x5f,0x62,0x72,0x65,0x61,0x6b,0x5f,0x6c,0x69,0x6e,0x65,0x20,0x7e,0x3d,0x20, + 0x6c,0x69,0x6e,0x65,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x74,0x72,0x75,0x65,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20, + 0x3d,0x20,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e, + 0x2e,0x63,0x6f,0x72,0x6f,0x5b,0x31,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x3d,0x20,0x77, + 0x61,0x69,0x74,0x69,0x6e,0x67,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x73,0x5b, + 0x74,0x68,0x72,0x65,0x61,0x64,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x65,0x76,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x2c,0x20,0x74,0x61,0x72,0x67, + 0x65,0x74,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x20,0x3d,0x20,0x75,0x6e,0x70,0x61,0x63, + 0x6b,0x28,0x65,0x76,0x65,0x6e,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x75,0x72,0x72,0x65, + 0x6e,0x74,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x20,0x3d,0x20,0x73,0x74,0x61,0x63,0x6b, + 0x5f,0x6c,0x65,0x76,0x65,0x6c,0x73,0x5b,0x74,0x68,0x72,0x65,0x61,0x64,0x5d,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20, + 0x28,0x65,0x76,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x22, + 0x6f,0x76,0x65,0x72,0x22,0x20,0x61,0x6e,0x64,0x20,0x63,0x75,0x72,0x72,0x65,0x6e, + 0x74,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x20,0x3c,0x3d,0x20,0x74,0x61,0x72,0x67,0x65, + 0x74,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x20,0x61,0x6e,0x64,0x20,0x63,0x6f,0x72,0x65, + 0x2e,0x70,0x72,0x65,0x76,0x5f,0x62,0x72,0x65,0x61,0x6b,0x5f,0x6c,0x69,0x6e,0x65, + 0x20,0x7e,0x3d,0x20,0x6c,0x69,0x6e,0x65,0x29,0x20,0x6f,0x72,0x20,0x20,0x20,0x2d, + 0x2d,0x20,0x73,0x74,0x65,0x70,0x20,0x6f,0x76,0x65,0x72,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x65,0x76,0x65,0x6e, + 0x74,0x5f,0x74,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x22,0x6f,0x75,0x74,0x22,0x20, + 0x20,0x61,0x6e,0x64,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x6c,0x65,0x76, + 0x65,0x6c,0x20,0x3c,0x20,0x20,0x74,0x61,0x72,0x67,0x65,0x74,0x5f,0x6c,0x65,0x76, + 0x65,0x6c,0x29,0x20,0x74,0x68,0x65,0x6e,0x20,0x2d,0x2d,0x20,0x73,0x74,0x65,0x70, + 0x20,0x6f,0x75,0x74,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x67,0x28,0x22,0x44,0x45,0x42,0x55,0x47,0x22, + 0x2c,0x20,0x22,0x45,0x76,0x65,0x6e,0x74,0x20,0x25,0x73,0x20,0x6d,0x61,0x74,0x63, + 0x68,0x65,0x64,0x21,0x22,0x2c,0x20,0x65,0x76,0x65,0x6e,0x74,0x5f,0x74,0x79,0x70, + 0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x74,0x72,0x75,0x65,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x61,0x6c,0x73,0x65,0x0a, + 0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x2d, + 0x20,0x44,0x69,0x73,0x63,0x61,0x72,0x64,0x73,0x20,0x65,0x76,0x65,0x6e,0x74,0x20, + 0x66,0x6f,0x72,0x20,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x20,0x74,0x68,0x72,0x65, + 0x61,0x64,0x20,0x28,0x69,0x66,0x20,0x61,0x6e,0x79,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f,0x72,0x65,0x2e,0x65,0x76, + 0x65,0x6e,0x74,0x73,0x2e,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x28,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x61,0x69,0x74,0x69,0x6e,0x67,0x5f,0x73, + 0x65,0x73,0x73,0x69,0x6f,0x6e,0x73,0x5b,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x73, + 0x65,0x73,0x73,0x69,0x6f,0x6e,0x2e,0x63,0x6f,0x72,0x6f,0x5b,0x31,0x5d,0x5d,0x20, + 0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x74, + 0x65,0x70,0x5f,0x69,0x6e,0x74,0x6f,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x0a,0x2d,0x2d,0x20,0x20,0x44, + 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x6d,0x61,0x69,0x6e,0x20,0x6c,0x6f,0x6f, + 0x70,0x0a,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x0a,0x0a,0x2d,0x2d,0x2d,0x20,0x53,0x65,0x6e,0x64,0x20,0x74,0x68,0x65,0x20, + 0x58,0x4d,0x4c,0x20,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x20,0x74,0x6f,0x20, + 0x74,0x68,0x65,0x20,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x20,0x63,0x6f,0x6e, + 0x74,0x69,0x6e,0x75,0x61,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e, + 0x64,0x20,0x61,0x6e,0x64,0x20,0x63,0x6c,0x65,0x61,0x72,0x20,0x74,0x68,0x65,0x20, + 0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74, + 0x0a,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f,0x72,0x65,0x2e,0x70, + 0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x5f, + 0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x72, + 0x65,0x61,0x73,0x6f,0x6e,0x29,0x0a,0x20,0x20,0x20,0x20,0x73,0x65,0x6c,0x66,0x2e, + 0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74, + 0x2e,0x73,0x74,0x61,0x74,0x75,0x73,0x20,0x3d,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73, + 0x74,0x61,0x74,0x65,0x0a,0x20,0x20,0x20,0x20,0x73,0x65,0x6c,0x66,0x2e,0x70,0x72, + 0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x2e,0x72, + 0x65,0x61,0x73,0x6f,0x6e,0x20,0x3d,0x20,0x72,0x65,0x61,0x73,0x6f,0x6e,0x20,0x6f, + 0x72,0x20,0x22,0x6f,0x6b,0x22,0x0a,0x20,0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e, + 0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b, + 0x74,0x2c,0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x72,0x65,0x73,0x70, + 0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x73,0x65, + 0x6c,0x66,0x2e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74, + 0x65,0x78,0x74,0x20,0x7d,0x20,0x29,0x0a,0x20,0x20,0x20,0x20,0x73,0x65,0x6c,0x66, + 0x2e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78, + 0x74,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6c,0x65,0x61, + 0x6e,0x75,0x70,0x28,0x29,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74, + 0x69,0x6e,0x65,0x2e,0x72,0x65,0x73,0x75,0x6d,0x65,0x2c,0x20,0x63,0x6f,0x72,0x6f, + 0x75,0x74,0x69,0x6e,0x65,0x2e,0x77,0x72,0x61,0x70,0x20,0x3d,0x20,0x63,0x6f,0x72, + 0x65,0x73,0x75,0x6d,0x65,0x2c,0x20,0x63,0x6f,0x77,0x72,0x61,0x70,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x6f,0x72,0x20,0x5f,0x2c,0x20,0x63,0x6f,0x72,0x6f,0x20,0x69,0x6e, + 0x20,0x70,0x61,0x69,0x72,0x73,0x28,0x63,0x6f,0x72,0x65,0x2e,0x61,0x63,0x74,0x69, + 0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x2e,0x66,0x72, + 0x6f,0x6d,0x5f,0x69,0x64,0x29,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x28, + 0x63,0x6f,0x72,0x6f,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x20,0x74,0x6f,0x20,0x72,0x65,0x6d,0x6f,0x76,0x65,0x20,0x68, + 0x6f,0x6f,0x6b,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20,0x6d,0x61,0x69,0x6e,0x20, + 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2c,0x20,0x69,0x74,0x20,0x6d,0x75, + 0x73,0x74,0x20,0x62,0x65,0x20,0x74,0x68,0x65,0x20,0x63,0x75,0x72,0x72,0x65,0x6e, + 0x74,0x20,0x6f,0x6e,0x65,0x20,0x28,0x6f,0x74,0x68,0x65,0x72,0x77,0x69,0x73,0x65, + 0x2c,0x20,0x74,0x68,0x69,0x73,0x20,0x69,0x73,0x20,0x61,0x20,0x6e,0x6f,0x2d,0x6f, + 0x70,0x29,0x20,0x61,0x6e,0x64,0x20,0x74,0x68,0x69,0x73,0x20,0x66,0x75,0x6e,0x63, + 0x74,0x69,0x6f,0x6e,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x68,0x61,0x76,0x65, + 0x20,0x74,0x6f,0x20,0x62,0x65,0x20,0x63,0x61,0x6c,0x6c,0x65,0x64,0x20,0x61,0x64, + 0x61,0x69,0x6e,0x20,0x6c,0x61,0x74,0x65,0x72,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65, + 0x20,0x6d,0x61,0x69,0x6e,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x74,0x6f,0x20, + 0x66,0x69,0x6e,0x69,0x73,0x68,0x20,0x63,0x6c,0x65,0x61,0x75,0x70,0x0a,0x20,0x20, + 0x20,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x28, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x63,0x6f,0x72,0x65,0x2e,0x61,0x63,0x74,0x69,0x76, + 0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x2e,0x66,0x72,0x6f, + 0x6d,0x5f,0x69,0x64,0x2c,0x20,0x63,0x6f,0x72,0x65,0x2e,0x61,0x63,0x74,0x69,0x76, + 0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x2e,0x66,0x72,0x6f, + 0x6d,0x5f,0x63,0x6f,0x72,0x6f,0x20,0x3d,0x20,0x7b,0x20,0x7d,0x2c,0x20,0x7b,0x20, + 0x7d,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x2d,0x2d,0x2d,0x20,0x54,0x68,0x69,0x73,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x68,0x61,0x6e,0x64,0x6c,0x65,0x73, + 0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x63,0x6f, + 0x6d,0x6d,0x61,0x6e,0x64,0x73,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x74,0x68,0x65, + 0x20,0x65,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x70,0x61, + 0x75,0x73,0x65,0x64,0x2e,0x20,0x54,0x68,0x69,0x73,0x20,0x64,0x6f,0x65,0x73,0x20, + 0x6e,0x6f,0x74,0x20,0x75,0x73,0x65,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, + 0x65,0x73,0x20,0x62,0x65,0x63,0x61,0x75,0x73,0x65,0x20,0x74,0x68,0x65,0x72,0x65, + 0x20,0x69,0x73,0x20,0x6e,0x6f,0x0a,0x2d,0x2d,0x20,0x77,0x61,0x79,0x20,0x74,0x6f, + 0x20,0x67,0x65,0x74,0x20,0x6d,0x61,0x69,0x6e,0x20,0x63,0x6f,0x72,0x6f,0x20,0x69, + 0x6e,0x20,0x4c,0x75,0x61,0x20,0x35,0x2e,0x31,0x20,0x28,0x6f,0x6e,0x6c,0x79,0x20, + 0x69,0x6e,0x20,0x35,0x2e,0x32,0x29,0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75, + 0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x5f, + 0x6c,0x6f,0x6f,0x70,0x28,0x73,0x65,0x6c,0x66,0x2c,0x20,0x61,0x73,0x79,0x6e,0x63, + 0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x73,0x65,0x6c, + 0x66,0x2e,0x73,0x6b,0x74,0x3a,0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74, + 0x28,0x6e,0x69,0x6c,0x29,0x20,0x2d,0x2d,0x20,0x73,0x65,0x74,0x20,0x73,0x6f,0x63, + 0x6b,0x65,0x74,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x69,0x6e,0x67,0x0a,0x0a,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x20,0x69,0x6e,0x20,0x61,0x73,0x79,0x6e,0x63,0x20,0x6d,0x6f, + 0x64,0x65,0x2c,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72, + 0x20,0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74,0x20,0x77,0x61,0x69,0x74,0x20,0x66, + 0x6f,0x72,0x20,0x61,0x6e,0x6f,0x74,0x68,0x65,0x72,0x20,0x63,0x6f,0x6d,0x6d,0x61, + 0x6e,0x64,0x20,0x62,0x65,0x66,0x6f,0x72,0x65,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e, + 0x75,0x69,0x6e,0x67,0x20,0x61,0x6e,0x64,0x20,0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f, + 0x74,0x20,0x6d,0x6f,0x64,0x69,0x66,0x79,0x20,0x70,0x72,0x65,0x76,0x69,0x6f,0x75, + 0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x61,0x73,0x79,0x6e,0x63,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d, + 0x20,0x61,0x73,0x79,0x6e,0x63,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x20,0x7e,0x3d, + 0x20,0x6e,0x69,0x6c,0x0a,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x73,0x65,0x6c, + 0x66,0x2e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65, + 0x78,0x74,0x20,0x61,0x6e,0x64,0x20,0x6e,0x6f,0x74,0x20,0x61,0x73,0x79,0x6e,0x63, + 0x5f,0x6d,0x6f,0x64,0x65,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x74,0x61,0x74,0x65,0x20,0x3d,0x20, + 0x22,0x62,0x72,0x65,0x61,0x6b,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x63,0x6f,0x72,0x65,0x2e,0x70,0x72,0x65,0x76,0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f, + 0x6e,0x74,0x65,0x78,0x74,0x5f,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x28,0x73, + 0x65,0x6c,0x66,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x74,0x61,0x63,0x6b,0x20,0x3d,0x20,0x63,0x6f, + 0x6e,0x74,0x65,0x78,0x74,0x2e,0x43,0x6f,0x6e,0x74,0x65,0x78,0x74,0x4d,0x61,0x6e, + 0x61,0x67,0x65,0x72,0x28,0x73,0x65,0x6c,0x66,0x2e,0x63,0x6f,0x72,0x6f,0x29,0x20, + 0x2d,0x2d,0x20,0x77,0x69,0x6c,0x6c,0x20,0x62,0x65,0x20,0x75,0x73,0x65,0x64,0x20, + 0x74,0x6f,0x20,0x6d,0x75,0x74,0x75,0x61,0x6c,0x69,0x7a,0x65,0x20,0x63,0x6f,0x6e, + 0x74,0x65,0x78,0x74,0x20,0x61,0x6c,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20, + 0x66,0x6f,0x72,0x20,0x65,0x61,0x63,0x68,0x20,0x6c,0x6f,0x6f,0x70,0x0a,0x0a,0x20, + 0x20,0x20,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x74,0x72,0x75,0x65,0x20,0x64,0x6f, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x72,0x65,0x61,0x64, + 0x73,0x20,0x70,0x61,0x63,0x6b,0x65,0x74,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x61,0x63,0x6b,0x65,0x74,0x20,0x3d,0x20, + 0x61,0x73,0x79,0x6e,0x63,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x20,0x6f,0x72,0x20, + 0x64,0x62,0x67,0x70,0x2e,0x72,0x65,0x61,0x64,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74, + 0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x70,0x61,0x63,0x6b,0x65,0x74, + 0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x67,0x28,0x22,0x57,0x41,0x52,0x4e,0x49,0x4e,0x47,0x22,0x2c,0x20,0x22, + 0x6c,0x6f,0x73,0x74,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x63,0x6f, + 0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x63,0x6c,0x65,0x61,0x6e,0x75,0x70,0x28,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x61,0x73,0x79,0x6e,0x63,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74, + 0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x67,0x28,0x22,0x44,0x45,0x42,0x55,0x47,0x22,0x2c,0x20,0x70,0x61,0x63,0x6b, + 0x65,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61, + 0x6c,0x20,0x63,0x6d,0x64,0x2c,0x20,0x61,0x72,0x67,0x73,0x2c,0x20,0x64,0x61,0x74, + 0x61,0x20,0x3d,0x20,0x64,0x62,0x67,0x70,0x2e,0x63,0x6d,0x64,0x5f,0x70,0x61,0x72, + 0x73,0x65,0x28,0x70,0x61,0x63,0x6b,0x65,0x74,0x29,0x0a,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x46,0x49,0x58,0x4d,0x45,0x3a,0x20,0x63,0x6f, + 0x6d,0x6d,0x61,0x6e,0x64,0x20,0x73,0x75,0x63,0x68,0x20,0x61,0x73,0x20,0x63,0x6f, + 0x6e,0x74,0x69,0x6e,0x75,0x61,0x74,0x69,0x6f,0x6e,0x73,0x20,0x73,0x65,0x6e,0x74, + 0x20,0x69,0x6e,0x20,0x61,0x73,0x79,0x6e,0x63,0x20,0x6d,0x6f,0x64,0x65,0x20,0x63, + 0x6f,0x75,0x6c,0x64,0x20,0x6c,0x65,0x61,0x64,0x20,0x62,0x6f,0x74,0x68,0x20,0x65, + 0x6e,0x67,0x69,0x6e,0x65,0x20,0x61,0x6e,0x64,0x20,0x49,0x44,0x45,0x20,0x69,0x6e, + 0x20,0x69,0x6e,0x63,0x6f,0x6e,0x73,0x69,0x73,0x74,0x65,0x6e,0x74,0x20,0x73,0x74, + 0x61,0x74,0x65,0x20,0x3a,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x6b,0x65,0x20,0x61,0x20,0x62, + 0x6c,0x61,0x63,0x6b,0x6c,0x69,0x73,0x74,0x2f,0x77,0x68,0x69,0x74,0x65,0x6c,0x69, + 0x73,0x74,0x20,0x6f,0x66,0x20,0x66,0x6f,0x72,0x62,0x69,0x64,0x64,0x65,0x6e,0x20, + 0x6f,0x72,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x65,0x64,0x20,0x63,0x6f,0x6d,0x6d,0x61, + 0x6e,0x64,0x73,0x20,0x69,0x6e,0x20,0x61,0x73,0x79,0x6e,0x63,0x20,0x3f,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x69,0x6e,0x76,0x6f,0x6b,0x65, + 0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x20,0x3d,0x20,0x63, + 0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x5b,0x63,0x6d,0x64,0x5d,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x66,0x75,0x6e,0x63,0x20,0x74,0x68,0x65, + 0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x6f,0x6b,0x2c,0x20,0x63,0x6f,0x6e,0x74,0x20,0x3d,0x20,0x78, + 0x70,0x63,0x61,0x6c,0x6c,0x28,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x29, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x75,0x6e,0x63,0x28,0x73,0x65,0x6c, + 0x66,0x2c,0x20,0x61,0x72,0x67,0x73,0x2c,0x20,0x64,0x61,0x74,0x61,0x29,0x20,0x65, + 0x6e,0x64,0x2c,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x74,0x72,0x61,0x63,0x65,0x62, + 0x61,0x63,0x6b,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x6f,0x6b,0x20,0x74,0x68,0x65,0x6e,0x20, + 0x2d,0x2d,0x20,0x69,0x6e,0x74,0x65,0x72,0x6e,0x61,0x6c,0x20,0x65,0x78,0x63,0x65, + 0x70,0x74,0x69,0x6f,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x64,0x65, + 0x2c,0x20,0x6d,0x73,0x67,0x2c,0x20,0x61,0x74,0x74,0x72,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x74, + 0x79,0x70,0x65,0x28,0x63,0x6f,0x6e,0x74,0x29,0x20,0x3d,0x3d,0x20,0x22,0x74,0x61, + 0x62,0x6c,0x65,0x22,0x20,0x61,0x6e,0x64,0x20,0x67,0x65,0x74,0x6d,0x65,0x74,0x61, + 0x74,0x61,0x62,0x6c,0x65,0x28,0x63,0x6f,0x6e,0x74,0x29,0x20,0x3d,0x3d,0x20,0x64, + 0x62,0x67,0x70,0x2e,0x44,0x42,0x47,0x50,0x5f,0x45,0x52,0x52,0x5f,0x4d,0x45,0x54, + 0x41,0x54,0x41,0x42,0x4c,0x45,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x63,0x6f,0x64,0x65,0x2c,0x20,0x6d,0x73,0x67,0x2c,0x20,0x61,0x74,0x74,0x72,0x20, + 0x3d,0x20,0x63,0x6f,0x6e,0x74,0x2e,0x63,0x6f,0x64,0x65,0x2c,0x20,0x63,0x6f,0x6e, + 0x74,0x2e,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x2c,0x20,0x63,0x6f,0x6e,0x74,0x2e, + 0x61,0x74,0x74,0x72,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f, + 0x64,0x65,0x2c,0x20,0x6d,0x73,0x67,0x2c,0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20, + 0x39,0x39,0x38,0x2c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x63,0x6f, + 0x6e,0x74,0x29,0x2c,0x20,0x7b,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x67, + 0x28,0x22,0x45,0x52,0x52,0x4f,0x52,0x22,0x2c,0x20,0x22,0x43,0x6f,0x6d,0x6d,0x61, + 0x6e,0x64,0x20,0x25,0x73,0x20,0x63,0x61,0x75,0x73,0x65,0x64,0x3a,0x20,0x28,0x25, + 0x64,0x29,0x20,0x25,0x73,0x22,0x2c,0x20,0x63,0x6d,0x64,0x2c,0x20,0x63,0x6f,0x64, + 0x65,0x2c,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67,0x28,0x6d,0x73,0x67,0x29, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x61,0x74,0x74,0x72,0x2e,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x2c,0x20, + 0x61,0x74,0x74,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e, + 0x5f,0x69,0x64,0x20,0x3d,0x20,0x63,0x6d,0x64,0x2c,0x20,0x61,0x72,0x67,0x73,0x2e, + 0x69,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28, + 0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x7b,0x20,0x74,0x61,0x67,0x20, + 0x3d,0x20,0x22,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61,0x74, + 0x74,0x72,0x20,0x3d,0x20,0x61,0x74,0x74,0x72,0x2c,0x20,0x64,0x62,0x67,0x70,0x2e, + 0x6d,0x61,0x6b,0x65,0x5f,0x65,0x72,0x72,0x6f,0x72,0x28,0x63,0x6f,0x64,0x65,0x2c, + 0x20,0x6d,0x73,0x67,0x29,0x20,0x7d,0x20,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x63,0x6f,0x6e, + 0x74,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x65,0x6c,0x66,0x2e,0x70,0x72,0x65,0x76, + 0x69,0x6f,0x75,0x73,0x5f,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x20,0x3d,0x20,0x7b, + 0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20,0x3d,0x20,0x63,0x6d,0x64,0x2c,0x20, + 0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69,0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d, + 0x20,0x61,0x72,0x67,0x73,0x2e,0x69,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, + 0x69,0x66,0x20,0x63,0x6f,0x6e,0x74,0x20,0x3d,0x3d,0x20,0x6e,0x69,0x6c,0x20,0x61, + 0x6e,0x64,0x20,0x61,0x73,0x79,0x6e,0x63,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x74,0x68, + 0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66,0x20,0x63,0x6f,0x6e,0x74, + 0x20,0x3d,0x3d,0x20,0x66,0x61,0x6c,0x73,0x65,0x20,0x74,0x68,0x65,0x6e,0x20,0x2d, + 0x2d,0x20,0x49,0x6e,0x20,0x63,0x61,0x73,0x65,0x20,0x6f,0x66,0x20,0x63,0x6f,0x6d, + 0x6d,0x61,0x6e,0x64,0x73,0x20,0x74,0x68,0x61,0x74,0x20,0x66,0x75,0x6c,0x6c,0x79, + 0x20,0x72,0x65,0x73,0x75,0x6d,0x65,0x73,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x20,0x6c,0x6f,0x6f,0x70,0x2c,0x20,0x74,0x68,0x65,0x20,0x6d,0x6f,0x64,0x65, + 0x20,0x69,0x73,0x20,0x73,0x79,0x6e,0x63,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x73,0x79,0x6e,0x63,0x5f,0x6d, + 0x6f,0x64,0x65,0x20,0x3d,0x20,0x66,0x61,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x67,0x28,0x22,0x47,0x6f,0x74,0x20,0x75,0x6e, + 0x6b,0x6e,0x6f,0x77,0x6e,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x3a,0x20,0x22, + 0x2e,0x2e,0x63,0x6d,0x64,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x64,0x62,0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c, + 0x28,0x73,0x65,0x6c,0x66,0x2e,0x73,0x6b,0x74,0x2c,0x20,0x7b,0x20,0x74,0x61,0x67, + 0x20,0x3d,0x20,0x22,0x72,0x65,0x73,0x70,0x6f,0x6e,0x73,0x65,0x22,0x2c,0x20,0x61, + 0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x20, + 0x3d,0x20,0x63,0x6d,0x64,0x2c,0x20,0x74,0x72,0x61,0x6e,0x73,0x61,0x63,0x74,0x69, + 0x6f,0x6e,0x5f,0x69,0x64,0x20,0x3d,0x20,0x61,0x72,0x67,0x73,0x2e,0x69,0x2c,0x20, + 0x7d,0x2c,0x20,0x64,0x62,0x67,0x70,0x2e,0x6d,0x61,0x6b,0x65,0x5f,0x65,0x72,0x72, + 0x6f,0x72,0x28,0x34,0x29,0x20,0x7d,0x20,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20, + 0x20,0x20,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x74,0x61,0x63,0x6b,0x20,0x3d,0x20, + 0x6e,0x69,0x6c,0x20,0x2d,0x2d,0x20,0x66,0x72,0x65,0x65,0x20,0x61,0x6c,0x6c,0x6f, + 0x63,0x61,0x74,0x65,0x64,0x20,0x63,0x6f,0x6e,0x74,0x65,0x78,0x74,0x73,0x0a,0x20, + 0x20,0x20,0x20,0x73,0x65,0x6c,0x66,0x2e,0x73,0x74,0x61,0x74,0x65,0x20,0x3d,0x20, + 0x22,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x22,0x0a,0x20,0x20,0x20,0x20,0x73,0x65, + 0x6c,0x66,0x2e,0x73,0x6b,0x74,0x3a,0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,0x75, + 0x74,0x28,0x30,0x29,0x20,0x2d,0x2d,0x20,0x72,0x65,0x73,0x65,0x74,0x20,0x73,0x6f, + 0x63,0x6b,0x65,0x74,0x20,0x74,0x6f,0x20,0x61,0x73,0x79,0x6e,0x63,0x0a,0x65,0x6e, + 0x64,0x0a,0x0a,0x2d,0x2d,0x20,0x53,0x74,0x61,0x63,0x6b,0x20,0x68,0x61,0x6e,0x64, + 0x6c,0x69,0x6e,0x67,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x70,0x72,0x65,0x74, + 0x74,0x79,0x20,0x63,0x6f,0x6d,0x70,0x6c,0x65,0x78,0x20,0x73,0x6f,0x6d,0x65,0x74, + 0x69,0x6d,0x65,0x73,0x2c,0x20,0x65,0x73,0x70,0x65,0x63,0x69,0x61,0x6c,0x6c,0x79, + 0x20,0x77,0x69,0x74,0x68,0x20,0x4c,0x75,0x61,0x4a,0x49,0x54,0x20,0x28,0x61,0x73, + 0x20,0x74,0x61,0x69,0x6c,0x2d,0x63,0x61,0x6c,0x6c,0x20,0x6f,0x70,0x74,0x69,0x6d, + 0x69,0x7a,0x61,0x74,0x69,0x6f,0x6e,0x20,0x61,0x72,0x65,0x0a,0x2d,0x2d,0x20,0x6d, + 0x6f,0x72,0x65,0x20,0x61,0x67,0x67,0x72,0x65,0x73,0x73,0x69,0x76,0x65,0x20,0x61, + 0x73,0x20,0x73,0x74,0x6f,0x63,0x6b,0x20,0x4c,0x75,0x61,0x29,0x2e,0x20,0x53,0x6f, + 0x20,0x61,0x6c,0x6c,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x73,0x74, + 0x75,0x66,0x66,0x20,0x69,0x73,0x20,0x64,0x6f,0x6e,0x65,0x20,0x69,0x6e,0x20,0x61, + 0x6e,0x6f,0x74,0x68,0x65,0x72,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, + 0x2c,0x20,0x77,0x68,0x69,0x63,0x68,0x20,0x6c,0x65,0x61,0x76,0x65,0x20,0x74,0x68, + 0x65,0x20,0x70,0x72,0x6f,0x67,0x72,0x61,0x6d,0x0a,0x2d,0x2d,0x20,0x73,0x74,0x61, + 0x63,0x6b,0x20,0x69,0x6e,0x20,0x61,0x20,0x63,0x6c,0x65,0x61,0x6e,0x20,0x73,0x74, + 0x61,0x74,0x65,0x20,0x61,0x6e,0x64,0x20,0x61,0x6c,0x6c,0x6f,0x77,0x20,0x66,0x61, + 0x73,0x74,0x65,0x72,0x20,0x61,0x6e,0x64,0x20,0x63,0x6c,0x65,0x61,0x72,0x65,0x72, + 0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e, + 0x73,0x20,0x28,0x6e,0x6f,0x20,0x6e,0x65,0x65,0x64,0x20,0x74,0x6f,0x20,0x72,0x65, + 0x6d,0x6f,0x76,0x65,0x20,0x61,0x6c,0x6c,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x20,0x63,0x61,0x6c,0x6c,0x73,0x0a,0x2d,0x2d,0x20,0x66,0x72,0x6f,0x6d,0x20, + 0x73,0x74,0x61,0x63,0x6b,0x20,0x66,0x6f,0x72,0x20,0x65,0x61,0x63,0x68,0x20,0x6f, + 0x70,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x29,0x2e,0x0a,0x2d,0x2d,0x20,0x48,0x6f, + 0x77,0x65,0x76,0x65,0x72,0x2c,0x20,0x74,0x68,0x69,0x73,0x20,0x64,0x6f,0x65,0x73, + 0x20,0x6e,0x6f,0x74,0x20,0x61,0x6c,0x77,0x61,0x79,0x73,0x20,0x77,0x6f,0x72,0x6b, + 0x20,0x77,0x69,0x74,0x68,0x20,0x73,0x74,0x6f,0x63,0x6b,0x20,0x4c,0x75,0x61,0x20, + 0x35,0x2e,0x31,0x20,0x61,0x73,0x20,0x74,0x68,0x65,0x20,0x6d,0x61,0x69,0x6e,0x20, + 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x63,0x61,0x6e,0x6e,0x6f,0x74, + 0x20,0x62,0x65,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x64,0x0a,0x2d, + 0x2d,0x20,0x28,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x72,0x75,0x6e, + 0x6e,0x69,0x6e,0x67,0x28,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6e,0x69, + 0x6c,0x29,0x2e,0x20,0x46,0x6f,0x72,0x20,0x74,0x68,0x69,0x73,0x20,0x70,0x61,0x72, + 0x74,0x69,0x63,0x75,0x6c,0x61,0x72,0x20,0x63,0x61,0x73,0x65,0x2c,0x20,0x74,0x68, + 0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x6c,0x6f,0x6f,0x70,0x20, + 0x69,0x73,0x20,0x73,0x74,0x61,0x72,0x74,0x65,0x64,0x20,0x6f,0x6e,0x20,0x74,0x68, + 0x65,0x20,0x74,0x6f,0x70,0x20,0x6f,0x66,0x0a,0x2d,0x2d,0x20,0x70,0x72,0x6f,0x67, + 0x72,0x61,0x6d,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x61,0x6e,0x64,0x20,0x65,0x76, + 0x65,0x72,0x79,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x6f,0x70,0x65,0x72,0x61,0x74, + 0x69,0x6f,0x6e,0x20,0x69,0x73,0x20,0x72,0x65,0x6c,0x61,0x74,0x69,0x76,0x65,0x20, + 0x74,0x68,0x65,0x20,0x74,0x68,0x65,0x20,0x68,0x6f,0x6f,0x6b,0x20,0x6c,0x65,0x76, + 0x65,0x6c,0x20,0x28,0x73,0x65,0x65,0x20,0x4d,0x61,0x69,0x6e,0x54,0x68,0x72,0x65, + 0x61,0x64,0x20,0x69,0x6e,0x20,0x75,0x74,0x69,0x6c,0x2e,0x6c,0x75,0x61,0x29,0x2e, + 0x0a,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20, + 0x6c,0x69,0x6e,0x65,0x5f,0x68,0x6f,0x6f,0x6b,0x28,0x6c,0x69,0x6e,0x65,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x64,0x6f,0x5f,0x62,0x72,0x65, + 0x61,0x6b,0x2c,0x20,0x70,0x61,0x63,0x6b,0x65,0x74,0x20,0x3d,0x20,0x6e,0x69,0x6c, + 0x2c,0x20,0x6e,0x69,0x6c,0x0a,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x63, + 0x6f,0x72,0x65,0x2e,0x70,0x72,0x65,0x76,0x5f,0x62,0x72,0x65,0x61,0x6b,0x5f,0x6c, + 0x69,0x6e,0x65,0x20,0x7e,0x3d,0x20,0x6c,0x69,0x6e,0x65,0x29,0x20,0x74,0x68,0x65, + 0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x63,0x6f,0x72, + 0x65,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e,0x67,0x75, + 0x65,0x73,0x73,0x28,0x6c,0x69,0x6e,0x65,0x29,0x20,0x7e,0x3d,0x20,0x6e,0x69,0x6c, + 0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x6e,0x66,0x6f,0x20,0x3d,0x20,0x61, + 0x63,0x74,0x69,0x76,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x2e,0x63,0x6f, + 0x72,0x6f,0x3a,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x30,0x2c,0x20,0x22,0x53, + 0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x75,0x72,0x69,0x20,0x3d,0x20,0x70,0x6c,0x61,0x74,0x66, + 0x6f,0x72,0x6d,0x2e,0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x28,0x69,0x6e,0x66,0x6f, + 0x2e,0x73,0x6f,0x75,0x72,0x63,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x75,0x72,0x69,0x20,0x61,0x6e,0x64,0x20, + 0x75,0x72,0x69,0x20,0x7e,0x3d,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x5f, + 0x75,0x72,0x69,0x20,0x61,0x6e,0x64,0x20,0x75,0x72,0x69,0x20,0x7e,0x3d,0x20,0x74, + 0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x5f,0x75, + 0x72,0x69,0x20,0x74,0x68,0x65,0x6e,0x20,0x2d,0x2d,0x20,0x74,0x68,0x65,0x20,0x64, + 0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x64,0x6f,0x65,0x73,0x20,0x6e,0x6f,0x74, + 0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x69,0x66,0x20,0x74,0x68,0x65,0x20,0x73,0x6f, + 0x75,0x72,0x63,0x65,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x6b,0x6e,0x6f,0x77, + 0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x64,0x6f,0x5f,0x62,0x72,0x65,0x61,0x6b,0x20,0x3d,0x20,0x63,0x6f,0x72, + 0x65,0x2e,0x62,0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x73,0x2e,0x61,0x74, + 0x28,0x75,0x72,0x69,0x2c,0x20,0x6c,0x69,0x6e,0x65,0x29,0x20,0x2d,0x2d,0x6f,0x72, + 0x20,0x63,0x6f,0x72,0x65,0x2e,0x65,0x76,0x65,0x6e,0x74,0x73,0x2e,0x64,0x6f,0x65, + 0x73,0x5f,0x6d,0x61,0x74,0x63,0x68,0x28,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x64,0x6f,0x5f,0x62,0x72,0x65, + 0x61,0x6b,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x64,0x6f,0x5f,0x62,0x72,0x65,0x61,0x6b,0x20,0x3d,0x20,0x63,0x6f,0x72,0x65,0x2e, + 0x65,0x76,0x65,0x6e,0x74,0x73,0x2e,0x64,0x6f,0x65,0x73,0x5f,0x6d,0x61,0x74,0x63, + 0x68,0x28,0x6c,0x69,0x6e,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x64,0x6f,0x5f,0x62,0x72,0x65,0x61,0x6b,0x20, + 0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x72, + 0x65,0x2e,0x70,0x72,0x65,0x76,0x5f,0x62,0x72,0x65,0x61,0x6b,0x5f,0x6c,0x69,0x6e, + 0x65,0x20,0x3d,0x20,0x6c,0x69,0x6e,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x63,0x6f,0x72,0x65,0x2e,0x65,0x76,0x65,0x6e,0x74,0x73,0x2e,0x64,0x69,0x73, + 0x63,0x61,0x72,0x64,0x28,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x63,0x68,0x65,0x63,0x6b,0x20,0x66,0x6f,0x72,0x20, + 0x61,0x73,0x79,0x6e,0x63,0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x0a,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x64,0x6f,0x5f,0x62,0x72,0x65, + 0x61,0x6b,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x70,0x61,0x63,0x6b,0x65,0x74,0x20,0x3d,0x20,0x64,0x62,0x67,0x70,0x2e,0x72,0x65, + 0x61,0x64,0x5f,0x70,0x61,0x63,0x6b,0x65,0x74,0x28,0x61,0x63,0x74,0x69,0x76,0x65, + 0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x2e,0x73,0x6b,0x74,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x70,0x61,0x63,0x6b,0x65,0x74,0x20, + 0x74,0x68,0x65,0x6e,0x20,0x64,0x6f,0x5f,0x62,0x72,0x65,0x61,0x6b,0x20,0x3d,0x20, + 0x74,0x72,0x75,0x65,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64, + 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x64,0x6f,0x5f,0x62,0x72,0x65,0x61,0x6b, + 0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f, + 0x72,0x65,0x2e,0x70,0x72,0x65,0x76,0x5f,0x62,0x72,0x65,0x61,0x6b,0x5f,0x6c,0x69, + 0x6e,0x65,0x20,0x3d,0x20,0x6c,0x69,0x6e,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x2c, + 0x20,0x65,0x72,0x72,0x20,0x3d,0x20,0x70,0x63,0x61,0x6c,0x6c,0x28,0x64,0x65,0x62, + 0x75,0x67,0x67,0x65,0x72,0x5f,0x6c,0x6f,0x6f,0x70,0x2c,0x20,0x61,0x63,0x74,0x69, + 0x76,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x2c,0x20,0x70,0x61,0x63,0x6b, + 0x65,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e, + 0x6f,0x74,0x20,0x73,0x75,0x63,0x63,0x65,0x73,0x73,0x20,0x74,0x68,0x65,0x6e,0x20, + 0x6c,0x6f,0x67,0x28,0x22,0x45,0x52,0x52,0x4f,0x52,0x22,0x2c,0x20,0x22,0x45,0x72, + 0x72,0x6f,0x72,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x20, + 0x6c,0x6f,0x6f,0x70,0x3a,0x20,0x22,0x2e,0x2e,0x65,0x72,0x72,0x29,0x20,0x65,0x6e, + 0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x68,0x6f,0x6f,0x6b,0x5f,0x63, + 0x6f,0x72,0x6f,0x20,0x3d,0x20,0x63,0x6f,0x63,0x72,0x65,0x61,0x74,0x65,0x28,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x6c,0x69,0x6e,0x65,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x77,0x68,0x69,0x6c,0x65,0x20,0x74,0x72,0x75,0x65,0x20,0x64,0x6f,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x68,0x6f,0x6f, + 0x6b,0x28,0x6c,0x69,0x6e,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6c,0x69,0x6e,0x65,0x20,0x3d,0x20,0x63,0x6f,0x79,0x69,0x65,0x6c,0x64,0x28,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64,0x29,0x0a,0x0a,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x65, + 0x62,0x75,0x67,0x67,0x65,0x72,0x5f,0x68,0x6f,0x6f,0x6b,0x28,0x65,0x76,0x65,0x6e, + 0x74,0x2c,0x20,0x6c,0x69,0x6e,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x3d,0x20,0x63,0x6f,0x72,0x75, + 0x6e,0x6e,0x69,0x6e,0x67,0x28,0x29,0x20,0x6f,0x72,0x20,0x22,0x6d,0x61,0x69,0x6e, + 0x22,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x3d, + 0x3d,0x20,0x22,0x63,0x61,0x6c,0x6c,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x63,0x6b,0x5f,0x6c,0x65,0x76,0x65, + 0x6c,0x73,0x5b,0x74,0x68,0x72,0x65,0x61,0x64,0x5d,0x20,0x3d,0x20,0x73,0x74,0x61, + 0x63,0x6b,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x73,0x5b,0x74,0x68,0x72,0x65,0x61,0x64, + 0x5d,0x20,0x2b,0x20,0x31,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69,0x66, + 0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x3d,0x3d,0x20,0x22,0x74,0x61,0x69,0x6c,0x20, + 0x63,0x61,0x6c,0x6c,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x2d,0x2d,0x20,0x74,0x61,0x69,0x6c,0x20,0x63,0x61,0x6c,0x6c,0x73, + 0x20,0x68,0x61,0x73,0x20,0x6e,0x6f,0x20,0x65,0x66,0x66,0x65,0x63,0x74,0x73,0x20, + 0x6f,0x6e,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x68,0x61,0x6e,0x64,0x6c,0x69,0x6e, + 0x67,0x3a,0x20,0x69,0x74,0x20,0x69,0x73,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x75,0x73, + 0x65,0x64,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x66,0x6f,0x72,0x20,0x73,0x74,0x65,0x70, + 0x20,0x63,0x6f,0x6d,0x6d,0x61,0x6e,0x64,0x73,0x20,0x62,0x75,0x74,0x20,0x61,0x20, + 0x73,0x75,0x63,0x68,0x20,0x65,0x76,0x65,0x6e,0x20,0x64,0x6f,0x65,0x73,0x20,0x6e, + 0x6f,0x74,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x69,0x6e, + 0x74,0x65,0x72,0x66,0x65,0x72,0x65,0x20,0x77,0x69,0x74,0x68,0x20,0x61,0x6e,0x79, + 0x20,0x6f,0x66,0x20,0x74,0x68,0x65,0x6d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, + 0x65,0x69,0x66,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x3d,0x3d,0x20,0x22,0x72,0x65, + 0x74,0x75,0x72,0x6e,0x22,0x20,0x6f,0x72,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x3d, + 0x3d,0x20,0x22,0x74,0x61,0x69,0x6c,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x20, + 0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x74,0x61, + 0x63,0x6b,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x73,0x5b,0x74,0x68,0x72,0x65,0x61,0x64, + 0x5d,0x20,0x3d,0x20,0x73,0x74,0x61,0x63,0x6b,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x73, + 0x5b,0x74,0x68,0x72,0x65,0x61,0x64,0x5d,0x20,0x2d,0x20,0x31,0x0a,0x20,0x20,0x20, + 0x20,0x65,0x6c,0x73,0x65,0x20,0x2d,0x2d,0x20,0x6c,0x69,0x6e,0x65,0x20,0x65,0x76, + 0x65,0x6e,0x74,0x3a,0x20,0x63,0x68,0x65,0x63,0x6b,0x20,0x66,0x6f,0x72,0x20,0x62, + 0x72,0x65,0x61,0x6b,0x70,0x6f,0x69,0x6e,0x74,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e, + 0x2e,0x63,0x6f,0x72,0x6f,0x20,0x3d,0x20,0x75,0x74,0x69,0x6c,0x2e,0x43,0x75,0x72, + 0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x28,0x63,0x6f,0x72,0x75,0x6e, + 0x6e,0x69,0x6e,0x67,0x28,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f, + 0x6e,0x2e,0x63,0x6f,0x72,0x6f,0x5b,0x31,0x5d,0x20,0x3d,0x3d,0x20,0x22,0x6d,0x61, + 0x69,0x6e,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x68,0x6f,0x6f,0x6b,0x28,0x6c, + 0x69,0x6e,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, + 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d, + 0x20,0x72,0x75,0x6e,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x72,0x20,0x6c,0x6f,0x6f,0x70,0x20,0x69,0x6e,0x20,0x61,0x6e,0x6f,0x74,0x68,0x65, + 0x72,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65,0x20, + 0x6f,0x74,0x68,0x65,0x72,0x20,0x63,0x61,0x73,0x65,0x73,0x20,0x28,0x73,0x69,0x6d, + 0x70,0x6c,0x69,0x66,0x69,0x65,0x73,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x68,0x61, + 0x6e,0x64,0x6c,0x69,0x6e,0x67,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x61,0x73,0x73,0x65,0x72,0x74,0x28,0x63,0x6f,0x72,0x65,0x73, + 0x75,0x6d,0x65,0x28,0x6c,0x69,0x6e,0x65,0x5f,0x68,0x6f,0x6f,0x6b,0x5f,0x63,0x6f, + 0x72,0x6f,0x2c,0x20,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61, + 0x63,0x74,0x69,0x76,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x2e,0x63,0x6f, + 0x72,0x6f,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64, + 0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x69,0x66,0x20,0x72,0x61,0x77,0x67,0x65,0x74,0x28, + 0x5f,0x47,0x2c,0x20,0x22,0x6a,0x69,0x74,0x22,0x29,0x20,0x74,0x68,0x65,0x6e,0x0a, + 0x20,0x20,0x20,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x5f,0x68,0x6f,0x6f, + 0x6b,0x20,0x3d,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x65,0x76,0x65, + 0x6e,0x74,0x2c,0x20,0x6c,0x69,0x6e,0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x3d, + 0x20,0x63,0x6f,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x28,0x29,0x20,0x6f,0x72,0x20, + 0x22,0x6d,0x61,0x69,0x6e,0x22,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, + 0x66,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x3d,0x3d,0x20,0x22,0x63,0x61,0x6c,0x6c, + 0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x67,0x65,0x74,0x69, + 0x6e,0x66,0x6f,0x28,0x32,0x2c,0x20,0x22,0x53,0x22,0x29,0x2e,0x77,0x68,0x61,0x74, + 0x20,0x3d,0x3d,0x20,0x22,0x43,0x22,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x63,0x6b,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x73, + 0x5b,0x74,0x68,0x72,0x65,0x61,0x64,0x5d,0x20,0x3d,0x20,0x73,0x74,0x61,0x63,0x6b, + 0x5f,0x6c,0x65,0x76,0x65,0x6c,0x73,0x5b,0x74,0x68,0x72,0x65,0x61,0x64,0x5d,0x20, + 0x2b,0x20,0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, + 0x69,0x66,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x3d,0x3d,0x20,0x22,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x22,0x20,0x6f,0x72,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x3d,0x3d, + 0x20,0x22,0x74,0x61,0x69,0x6c,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x22,0x20,0x74, + 0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x52,0x65,0x74,0x75,0x72,0x6e,0x20,0x68,0x6f,0x6f,0x6b,0x73,0x20, + 0x61,0x72,0x65,0x20,0x6e,0x6f,0x74,0x20,0x63,0x61,0x6c,0x6c,0x65,0x64,0x20,0x66, + 0x6f,0x72,0x20,0x74,0x61,0x69,0x6c,0x20,0x63,0x61,0x6c,0x6c,0x73,0x20,0x69,0x6e, + 0x20,0x4a,0x49,0x54,0x20,0x28,0x62,0x75,0x74,0x20,0x75,0x6e,0x6c,0x69,0x6b,0x65, + 0x20,0x35,0x2e,0x32,0x20,0x74,0x68,0x65,0x72,0x65,0x20,0x69,0x73,0x20,0x6e,0x6f, + 0x20,0x77,0x61,0x79,0x20,0x74,0x6f,0x20,0x6b,0x6e,0x6f,0x77,0x20,0x77,0x68,0x65, + 0x74,0x68,0x65,0x72,0x20,0x61,0x20,0x63,0x61,0x6c,0x6c,0x20,0x69,0x73,0x20,0x74, + 0x61,0x69,0x6c,0x20,0x6f,0x72,0x20,0x6e,0x6f,0x74,0x29,0x2e,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x53,0x6f,0x20,0x74, + 0x68,0x65,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x72,0x65,0x6c,0x69,0x61,0x62,0x6c,0x65, + 0x20,0x77,0x61,0x79,0x20,0x74,0x6f,0x20,0x6b,0x6e,0x6f,0x77,0x20,0x73,0x74,0x61, + 0x63,0x6b,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x69,0x73,0x20,0x74,0x6f,0x20,0x77, + 0x61,0x6c,0x6b,0x20,0x69,0x74,0x2e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x64,0x65,0x70,0x74,0x68,0x20, + 0x3d,0x20,0x32,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x2d,0x2d,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x66,0x69,0x6e,0x64,0x20,0x74,0x68, + 0x65,0x20,0x66,0x61,0x73,0x74,0x65,0x73,0x74,0x20,0x77,0x61,0x79,0x20,0x74,0x6f, + 0x20,0x63,0x61,0x6c,0x6c,0x20,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x20,0x28,0x27, + 0x77,0x68,0x61,0x74,0x27,0x20,0x70,0x61,0x72,0x61,0x6d,0x65,0x74,0x65,0x72,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x68,0x69, + 0x6c,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f, + 0x28,0x64,0x65,0x70,0x74,0x68,0x2c,0x20,0x22,0x66,0x22,0x29,0x20,0x64,0x6f,0x20, + 0x64,0x65,0x70,0x74,0x68,0x20,0x3d,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x2b,0x20, + 0x31,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x73,0x74,0x61,0x63,0x6b,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x73,0x5b,0x74, + 0x68,0x72,0x65,0x61,0x64,0x5d,0x20,0x3d,0x20,0x64,0x65,0x70,0x74,0x68,0x20,0x2d, + 0x20,0x32,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x69, + 0x66,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x3d,0x3d,0x20,0x22,0x6c,0x69,0x6e,0x65, + 0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f, + 0x6e,0x2e,0x63,0x6f,0x72,0x6f,0x20,0x3d,0x20,0x75,0x74,0x69,0x6c,0x2e,0x43,0x75, + 0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61,0x64,0x28,0x63,0x6f,0x72,0x75, + 0x6e,0x6e,0x69,0x6e,0x67,0x28,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x73, + 0x65,0x73,0x73,0x69,0x6f,0x6e,0x2e,0x63,0x6f,0x72,0x6f,0x5b,0x31,0x5d,0x20,0x3d, + 0x3d,0x20,0x22,0x6d,0x61,0x69,0x6e,0x22,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69, + 0x6e,0x65,0x5f,0x68,0x6f,0x6f,0x6b,0x28,0x6c,0x69,0x6e,0x65,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2d, + 0x2d,0x20,0x72,0x75,0x6e,0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x20,0x6c,0x6f,0x6f,0x70,0x20,0x69,0x6e,0x20,0x61,0x6e,0x6f,0x74,0x68, + 0x65,0x72,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x6f,0x6e,0x20,0x74,0x68,0x65, + 0x20,0x6f,0x74,0x68,0x65,0x72,0x20,0x63,0x61,0x73,0x65,0x73,0x20,0x28,0x73,0x69, + 0x6d,0x70,0x6c,0x69,0x66,0x69,0x65,0x73,0x20,0x73,0x74,0x61,0x63,0x6b,0x20,0x68, + 0x61,0x6e,0x64,0x6c,0x69,0x6e,0x67,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x73,0x73,0x65,0x72,0x74,0x28, + 0x63,0x6f,0x72,0x65,0x73,0x75,0x6d,0x65,0x28,0x6c,0x69,0x6e,0x65,0x5f,0x68,0x6f, + 0x6f,0x6b,0x5f,0x63,0x6f,0x72,0x6f,0x2c,0x20,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x61,0x63,0x74,0x69, + 0x76,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x2e,0x63,0x6f,0x72,0x6f,0x20, + 0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e, + 0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x69,0x6e, + 0x69,0x74,0x28,0x68,0x6f,0x73,0x74,0x2c,0x20,0x70,0x6f,0x72,0x74,0x2c,0x20,0x69, + 0x64,0x65,0x6b,0x65,0x79,0x2c,0x20,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74, + 0x2c,0x20,0x65,0x78,0x65,0x63,0x75,0x74,0x69,0x6f,0x6e,0x70,0x6c,0x61,0x74,0x66, + 0x6f,0x72,0x6d,0x2c,0x20,0x77,0x6f,0x72,0x6b,0x69,0x6e,0x67,0x64,0x69,0x72,0x65, + 0x63,0x74,0x6f,0x72,0x79,0x2c,0x20,0x73,0x65,0x61,0x72,0x63,0x68,0x70,0x61,0x74, + 0x68,0x73,0x29,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x67,0x65,0x74,0x20,0x63, + 0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x64,0x61,0x74,0x61,0x0a,0x20, + 0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x68,0x6f,0x73,0x74,0x20,0x3d,0x20, + 0x68,0x6f,0x73,0x74,0x20,0x6f,0x72,0x20,0x6f,0x73,0x2e,0x67,0x65,0x74,0x65,0x6e, + 0x76,0x20,0x22,0x44,0x42,0x47,0x50,0x5f,0x49,0x44,0x45,0x48,0x4f,0x53,0x54,0x22, + 0x20,0x6f,0x72,0x20,0x22,0x31,0x32,0x37,0x2e,0x30,0x2e,0x30,0x2e,0x31,0x22,0x0a, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x70,0x6f,0x72,0x74,0x20,0x3d, + 0x20,0x70,0x6f,0x72,0x74,0x20,0x6f,0x72,0x20,0x6f,0x73,0x2e,0x67,0x65,0x74,0x65, + 0x6e,0x76,0x20,0x22,0x44,0x42,0x47,0x50,0x5f,0x49,0x44,0x45,0x50,0x4f,0x52,0x54, + 0x22,0x20,0x6f,0x72,0x20,0x22,0x31,0x30,0x30,0x30,0x30,0x22,0x0a,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x64,0x65,0x6b,0x65,0x79,0x20,0x3d,0x20, + 0x69,0x64,0x65,0x6b,0x65,0x79,0x20,0x6f,0x72,0x20,0x6f,0x73,0x2e,0x67,0x65,0x74, + 0x65,0x6e,0x76,0x28,0x22,0x44,0x42,0x47,0x50,0x5f,0x49,0x44,0x45,0x4b,0x45,0x59, + 0x22,0x29,0x20,0x6f,0x72,0x20,0x22,0x6c,0x75,0x61,0x69,0x64,0x65,0x6b,0x65,0x79, + 0x22,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x69,0x6e,0x69,0x74,0x20,0x70, + 0x6c,0x61,0x66,0x6f,0x72,0x6d,0x20,0x6d,0x6f,0x64,0x75,0x6c,0x65,0x0a,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x65,0x78,0x65,0x63,0x75,0x74,0x69,0x6f, + 0x6e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x3d,0x20,0x65,0x78,0x65,0x63, + 0x75,0x74,0x69,0x6f,0x6e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x20,0x6f,0x72, + 0x20,0x6f,0x73,0x2e,0x67,0x65,0x74,0x65,0x6e,0x76,0x28,0x22,0x44,0x42,0x47,0x50, + 0x5f,0x50,0x4c,0x41,0x54,0x46,0x4f,0x52,0x4d,0x22,0x29,0x20,0x6f,0x72,0x20,0x6e, + 0x69,0x6c,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x77,0x6f,0x72, + 0x6b,0x69,0x6e,0x67,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x20,0x3d,0x20, + 0x77,0x6f,0x72,0x6b,0x69,0x6e,0x67,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79, + 0x20,0x6f,0x72,0x20,0x6f,0x73,0x2e,0x67,0x65,0x74,0x65,0x6e,0x76,0x28,0x22,0x44, + 0x42,0x47,0x50,0x5f,0x57,0x4f,0x52,0x4b,0x49,0x4e,0x47,0x44,0x49,0x52,0x22,0x29, + 0x20,0x6f,0x72,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20,0x20,0x20,0x70,0x6c,0x61,0x74, + 0x66,0x6f,0x72,0x6d,0x2e,0x69,0x6e,0x69,0x74,0x28,0x65,0x78,0x65,0x63,0x75,0x74, + 0x69,0x6f,0x6e,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x2c,0x77,0x6f,0x72,0x6b, + 0x69,0x6e,0x67,0x64,0x69,0x72,0x65,0x63,0x74,0x6f,0x72,0x79,0x2c,0x73,0x65,0x61, + 0x72,0x63,0x68,0x70,0x61,0x74,0x68,0x73,0x29,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d, + 0x2d,0x20,0x67,0x65,0x74,0x20,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x20, + 0x6c,0x61,0x79,0x65,0x72,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x70,0x61,0x74,0x68,0x20,0x3d,0x20, + 0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x20,0x6f,0x72,0x20,0x6f,0x73,0x2e, + 0x67,0x65,0x74,0x65,0x6e,0x76,0x28,0x22,0x44,0x42,0x47,0x50,0x5f,0x54,0x52,0x41, + 0x4e,0x53,0x50,0x4f,0x52,0x54,0x22,0x29,0x20,0x6f,0x72,0x20,0x22,0x64,0x65,0x62, + 0x75,0x67,0x67,0x65,0x72,0x2e,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e, + 0x6c,0x75,0x61,0x73,0x6f,0x63,0x6b,0x65,0x74,0x22,0x0a,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x20,0x3d, + 0x20,0x72,0x65,0x71,0x75,0x69,0x72,0x65,0x28,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f, + 0x72,0x74,0x70,0x61,0x74,0x68,0x29,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20, + 0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c,0x20,0x62,0x61,0x73,0x65,0x36,0x34,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x20,0x69,0x6e,0x74,0x6f,0x20,0x75,0x74, + 0x69,0x6c,0x0a,0x20,0x20,0x20,0x20,0x75,0x74,0x69,0x6c,0x2e,0x62,0x36,0x34,0x2c, + 0x20,0x75,0x74,0x69,0x6c,0x2e,0x72,0x61,0x77,0x62,0x36,0x34,0x2c,0x20,0x75,0x74, + 0x69,0x6c,0x2e,0x75,0x6e,0x62,0x36,0x34,0x20,0x3d,0x20,0x74,0x72,0x61,0x6e,0x73, + 0x70,0x6f,0x72,0x74,0x2e,0x62,0x36,0x34,0x2c,0x20,0x74,0x72,0x61,0x6e,0x73,0x70, + 0x6f,0x72,0x74,0x2e,0x72,0x61,0x77,0x62,0x36,0x34,0x2c,0x20,0x74,0x72,0x61,0x6e, + 0x73,0x70,0x6f,0x72,0x74,0x2e,0x75,0x6e,0x62,0x36,0x34,0x0a,0x0a,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x6b,0x74,0x20,0x3d,0x20,0x61,0x73,0x73, + 0x65,0x72,0x74,0x28,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x63,0x72, + 0x65,0x61,0x74,0x65,0x28,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x73,0x6b,0x74,0x3a, + 0x73,0x65,0x74,0x74,0x69,0x6d,0x65,0x6f,0x75,0x74,0x28,0x6e,0x69,0x6c,0x29,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x74,0x72,0x79,0x20,0x74,0x6f,0x20,0x63, + 0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x73,0x65,0x76,0x65,0x72,0x61,0x6c,0x20,0x74, + 0x69,0x6d,0x65,0x73,0x3a,0x20,0x69,0x66,0x20,0x49,0x44,0x45,0x20,0x6c,0x61,0x75, + 0x6e,0x63,0x68,0x65,0x73,0x20,0x62,0x6f,0x74,0x68,0x20,0x70,0x72,0x6f,0x63,0x65, + 0x73,0x73,0x20,0x61,0x6e,0x64,0x20,0x73,0x65,0x72,0x76,0x65,0x72,0x20,0x61,0x74, + 0x20,0x73,0x61,0x6d,0x65,0x20,0x74,0x69,0x6d,0x65,0x2c,0x20,0x66,0x69,0x72,0x73, + 0x74,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x61,0x74,0x74,0x65,0x6d,0x70, + 0x74,0x73,0x20,0x6d,0x61,0x79,0x20,0x66,0x61,0x69,0x6c,0x0a,0x20,0x20,0x20,0x20, + 0x6c,0x6f,0x63,0x61,0x6c,0x20,0x6f,0x6b,0x2c,0x20,0x65,0x72,0x72,0x0a,0x20,0x20, + 0x20,0x20,0x70,0x72,0x69,0x6e,0x74,0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x66, + 0x6f,0x72,0x6d,0x61,0x74,0x28,0x22,0x44,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20, + 0x76,0x25,0x73,0x22,0x2c,0x20,0x44,0x42,0x47,0x50,0x5f,0x43,0x4c,0x49,0x45,0x4e, + 0x54,0x5f,0x56,0x45,0x52,0x53,0x49,0x4f,0x4e,0x29,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x70,0x72,0x69,0x6e,0x74,0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x66,0x6f,0x72, + 0x6d,0x61,0x74,0x28,0x22,0x44,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x3a,0x20,0x54, + 0x72,0x79,0x69,0x6e,0x67,0x20,0x74,0x6f,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74, + 0x20,0x74,0x6f,0x20,0x25,0x73,0x3a,0x25,0x73,0x20,0x2e,0x2e,0x2e,0x20,0x22,0x2c, + 0x20,0x68,0x6f,0x73,0x74,0x2c,0x20,0x70,0x6f,0x72,0x74,0x29,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x6f,0x6b,0x2c,0x20,0x65,0x72,0x72,0x20,0x3d,0x20,0x73,0x6b,0x74,0x3a, + 0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x28,0x68,0x6f,0x73,0x74,0x2c,0x20,0x70,0x6f, + 0x72,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x69,0x3d,0x31,0x2c, + 0x20,0x34,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x6f,0x6b,0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x70,0x72,0x69,0x6e,0x74,0x28,0x22,0x44,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x3a,0x20,0x43,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x69,0x6f,0x6e,0x20,0x73, + 0x75,0x63,0x63,0x65,0x65,0x64,0x2e,0x22,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x62,0x72,0x65,0x61,0x6b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x2d,0x2d,0x20,0x77,0x61,0x69,0x74,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x2e,0x73,0x6c,0x65, + 0x65,0x70,0x28,0x30,0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x20,0x74,0x68,0x65,0x6e,0x20,0x72,0x65,0x74,0x72,0x79,0x2e, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x72,0x69,0x6e,0x74, + 0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x66,0x6f,0x72,0x6d,0x61,0x74,0x28,0x22, + 0x44,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x3a,0x20,0x52,0x65,0x74,0x72,0x79,0x69, + 0x6e,0x67,0x20,0x74,0x6f,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74,0x6f, + 0x20,0x25,0x73,0x3a,0x25,0x73,0x20,0x2e,0x2e,0x2e,0x20,0x22,0x2c,0x20,0x68,0x6f, + 0x73,0x74,0x2c,0x20,0x70,0x6f,0x72,0x74,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6f,0x6b,0x2c,0x20,0x65,0x72,0x72,0x20,0x3d,0x20,0x73, + 0x6b,0x74,0x3a,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x28,0x68,0x6f,0x73,0x74,0x2c, + 0x20,0x70,0x6f,0x72,0x74,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x69, + 0x66,0x20,0x65,0x72,0x72,0x20,0x74,0x68,0x65,0x6e,0x20,0x65,0x72,0x72,0x6f,0x72, + 0x28,0x73,0x74,0x72,0x69,0x6e,0x67,0x2e,0x66,0x6f,0x72,0x6d,0x61,0x74,0x28,0x22, + 0x43,0x61,0x6e,0x6e,0x6f,0x74,0x20,0x63,0x6f,0x6e,0x6e,0x65,0x63,0x74,0x20,0x74, + 0x6f,0x20,0x25,0x73,0x3a,0x25,0x64,0x20,0x3a,0x20,0x25,0x73,0x22,0x2c,0x20,0x68, + 0x6f,0x73,0x74,0x2c,0x20,0x70,0x6f,0x72,0x74,0x2c,0x20,0x65,0x72,0x72,0x29,0x29, + 0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x67,0x65,0x74, + 0x20,0x74,0x68,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65,0x72,0x20,0x61,0x6e, + 0x64,0x20,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74,0x20,0x6c,0x61,0x79,0x65, + 0x72,0x20,0x55,0x52,0x49,0x0a,0x20,0x20,0x20,0x20,0x64,0x65,0x62,0x75,0x67,0x67, + 0x65,0x72,0x5f,0x75,0x72,0x69,0x20,0x3d,0x20,0x70,0x6c,0x61,0x74,0x66,0x6f,0x72, + 0x6d,0x2e,0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x28,0x64,0x65,0x62,0x75,0x67,0x2e, + 0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x31,0x29,0x2e,0x73,0x6f,0x75,0x72,0x63, + 0x65,0x29,0x0a,0x20,0x20,0x20,0x20,0x74,0x72,0x61,0x6e,0x73,0x70,0x6f,0x72,0x74, + 0x6d,0x6f,0x64,0x75,0x6c,0x65,0x5f,0x75,0x72,0x69,0x20,0x3d,0x20,0x70,0x6c,0x61, + 0x74,0x66,0x6f,0x72,0x6d,0x2e,0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x28,0x64,0x65, + 0x62,0x75,0x67,0x2e,0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x74,0x72,0x61,0x6e, + 0x73,0x70,0x6f,0x72,0x74,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x29,0x2e,0x73,0x6f, + 0x75,0x72,0x63,0x65,0x29,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x67,0x65, + 0x74,0x20,0x74,0x68,0x65,0x20,0x72,0x6f,0x6f,0x74,0x20,0x73,0x63,0x72,0x69,0x70, + 0x74,0x20,0x70,0x61,0x74,0x68,0x20,0x28,0x74,0x68,0x65,0x20,0x68,0x69,0x67,0x68, + 0x65,0x73,0x74,0x20,0x70,0x6f,0x73,0x73,0x69,0x62,0x6c,0x65,0x20,0x73,0x74,0x61, + 0x63,0x6b,0x20,0x69,0x6e,0x64,0x65,0x78,0x29,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f, + 0x63,0x61,0x6c,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6f,0x72,0x20,0x69,0x3d,0x32,0x2c,0x20,0x6d,0x61,0x74,0x68,0x2e,0x68,0x75,0x67, + 0x65,0x20,0x64,0x6f,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63, + 0x61,0x6c,0x20,0x69,0x6e,0x66,0x6f,0x20,0x3d,0x20,0x64,0x65,0x62,0x75,0x67,0x2e, + 0x67,0x65,0x74,0x69,0x6e,0x66,0x6f,0x28,0x69,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x69,0x6e,0x66,0x6f,0x20,0x74, + 0x68,0x65,0x6e,0x20,0x62,0x72,0x65,0x61,0x6b,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x3d,0x20,0x70, + 0x6c,0x61,0x74,0x66,0x6f,0x72,0x6d,0x2e,0x67,0x65,0x74,0x5f,0x75,0x72,0x69,0x28, + 0x69,0x6e,0x66,0x6f,0x2e,0x73,0x6f,0x75,0x72,0x63,0x65,0x29,0x20,0x6f,0x72,0x20, + 0x73,0x6f,0x75,0x72,0x63,0x65,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x73,0x6f,0x75,0x72,0x63,0x65, + 0x20,0x74,0x68,0x65,0x6e,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x20,0x3d,0x20,0x22, + 0x75,0x6e,0x6b,0x6e,0x6f,0x77,0x6e,0x3a,0x2f,0x22,0x20,0x65,0x6e,0x64,0x20,0x2d, + 0x2d,0x20,0x77,0x68,0x65,0x6e,0x20,0x6c,0x6f,0x61,0x64,0x65,0x64,0x20,0x62,0x65, + 0x66,0x6f,0x72,0x65,0x20,0x61,0x63,0x74,0x75,0x61,0x6c,0x20,0x73,0x63,0x72,0x69, + 0x70,0x74,0x20,0x28,0x77,0x69,0x74,0x68,0x20,0x61,0x20,0x63,0x6f,0x6d,0x6d,0x61, + 0x6e,0x64,0x20,0x6c,0x69,0x6e,0x65,0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x29,0x0a, + 0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65, + 0x20,0x73,0x6f,0x6d,0x65,0x20,0x6b,0x69,0x6e,0x64,0x20,0x6f,0x66,0x20,0x74,0x68, + 0x72,0x65,0x61,0x64,0x20,0x69,0x64,0x65,0x6e,0x74,0x69,0x66,0x69,0x65,0x72,0x0a, + 0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x74,0x68,0x72,0x65,0x61,0x64, + 0x20,0x3d,0x20,0x63,0x6f,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x28,0x29,0x20,0x6f, + 0x72,0x20,0x22,0x6d,0x61,0x69,0x6e,0x22,0x0a,0x20,0x20,0x20,0x20,0x73,0x74,0x61, + 0x63,0x6b,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x73,0x5b,0x74,0x68,0x72,0x65,0x61,0x64, + 0x5d,0x20,0x3d,0x20,0x31,0x20,0x2d,0x2d,0x20,0x74,0x68,0x65,0x20,0x72,0x65,0x74, + 0x75,0x72,0x6e,0x20,0x65,0x76,0x65,0x6e,0x74,0x20,0x77,0x69,0x6c,0x6c,0x20,0x73, + 0x65,0x74,0x20,0x74,0x68,0x65,0x20,0x63,0x6f,0x75,0x6e,0x74,0x65,0x72,0x20,0x74, + 0x6f,0x20,0x30,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x65, + 0x73,0x73,0x69,0x6f,0x6e,0x69,0x64,0x20,0x3d,0x20,0x74,0x6f,0x73,0x74,0x72,0x69, + 0x6e,0x67,0x28,0x6f,0x73,0x2e,0x74,0x69,0x6d,0x65,0x28,0x29,0x29,0x20,0x2e,0x2e, + 0x20,0x22,0x5f,0x22,0x20,0x2e,0x2e,0x20,0x74,0x6f,0x73,0x74,0x72,0x69,0x6e,0x67, + 0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x29,0x0a,0x0a,0x20,0x20,0x20,0x20,0x64,0x62, + 0x67,0x70,0x2e,0x73,0x65,0x6e,0x64,0x5f,0x78,0x6d,0x6c,0x28,0x73,0x6b,0x74,0x2c, + 0x20,0x7b,0x20,0x74,0x61,0x67,0x20,0x3d,0x20,0x22,0x69,0x6e,0x69,0x74,0x22,0x2c, + 0x20,0x61,0x74,0x74,0x72,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x61,0x70,0x70,0x69,0x64,0x20,0x3d,0x20,0x22,0x4c,0x75,0x61,0x20,0x44, + 0x42,0x47,0x70,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x64, + 0x65,0x6b,0x65,0x79,0x20,0x3d,0x20,0x69,0x64,0x65,0x6b,0x65,0x79,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x20,0x3d, + 0x20,0x73,0x65,0x73,0x73,0x69,0x6f,0x6e,0x69,0x64,0x2c,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x3d,0x20,0x74,0x6f,0x73, + 0x74,0x72,0x69,0x6e,0x67,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x29,0x2c,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x72,0x65,0x6e,0x74,0x20,0x3d,0x20, + 0x22,0x22,0x2c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x61,0x6e,0x67, + 0x75,0x61,0x67,0x65,0x20,0x3d,0x20,0x22,0x4c,0x75,0x61,0x22,0x2c,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x72,0x6f,0x74,0x6f,0x63,0x6f,0x6c,0x5f,0x76, + 0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x22,0x31,0x2e,0x30,0x22,0x2c,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x69,0x6c,0x65,0x75,0x72,0x69,0x20, + 0x3d,0x20,0x73,0x6f,0x75,0x72,0x63,0x65,0x0a,0x20,0x20,0x20,0x20,0x7d,0x20,0x7d, + 0x29,0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x46,0x49,0x58,0x4d,0x45,0x20,0x75, + 0x74,0x69,0x6c,0x2e,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61, + 0x64,0x28,0x63,0x6f,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x29,0x20,0x3d,0x3e,0x20, + 0x75,0x74,0x69,0x6c,0x2e,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65, + 0x61,0x64,0x28,0x63,0x6f,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x28,0x29,0x29,0x20, + 0x57,0x48,0x41,0x54,0x20,0x44,0x4f,0x45,0x53,0x20,0x49,0x54,0x20,0x46,0x49,0x58, + 0x45,0x53,0x20,0x3f,0x3f,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x73,0x65,0x73,0x73,0x20,0x3d,0x20,0x7b,0x20,0x73,0x6b,0x74,0x20,0x3d,0x20,0x73, + 0x6b,0x74,0x2c,0x20,0x73,0x74,0x61,0x74,0x65,0x20,0x3d,0x20,0x22,0x73,0x74,0x61, + 0x72,0x74,0x69,0x6e,0x67,0x22,0x2c,0x20,0x69,0x64,0x20,0x3d,0x20,0x73,0x65,0x73, + 0x73,0x69,0x6f,0x6e,0x69,0x64,0x2c,0x20,0x63,0x6f,0x72,0x6f,0x20,0x3d,0x20,0x75, + 0x74,0x69,0x6c,0x2e,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x54,0x68,0x72,0x65,0x61, + 0x64,0x28,0x63,0x6f,0x72,0x75,0x6e,0x6e,0x69,0x6e,0x67,0x29,0x20,0x7d,0x0a,0x20, + 0x20,0x20,0x20,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x73,0x65,0x73,0x73,0x69,0x6f, + 0x6e,0x20,0x3d,0x20,0x73,0x65,0x73,0x73,0x0a,0x20,0x20,0x20,0x20,0x64,0x65,0x62, + 0x75,0x67,0x67,0x65,0x72,0x5f,0x6c,0x6f,0x6f,0x70,0x28,0x73,0x65,0x73,0x73,0x29, + 0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x73,0x65,0x74,0x20,0x64,0x65,0x62, + 0x75,0x67,0x20,0x68,0x6f,0x6f,0x6b,0x73,0x0a,0x20,0x20,0x20,0x20,0x64,0x65,0x62, + 0x75,0x67,0x2e,0x73,0x65,0x74,0x68,0x6f,0x6f,0x6b,0x28,0x64,0x65,0x62,0x75,0x67, + 0x67,0x65,0x72,0x5f,0x68,0x6f,0x6f,0x6b,0x2c,0x20,0x22,0x72,0x6c,0x63,0x22,0x29, + 0x0a,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x69,0x6e,0x73,0x74,0x61,0x6c,0x6c, + 0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x20,0x63,0x6f,0x6c,0x6c,0x65, + 0x63,0x74,0x69,0x6e,0x67,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x73,0x2e, + 0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x6d,0x61, + 0x69,0x6e,0x74,0x61,0x69,0x6e,0x20,0x61,0x20,0x6c,0x69,0x73,0x74,0x20,0x6f,0x66, + 0x20,0x2a,0x61,0x6c,0x6c,0x2a,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, + 0x73,0x20,0x63,0x61,0x6e,0x20,0x62,0x65,0x20,0x6f,0x76,0x65,0x72,0x6b,0x69,0x6c, + 0x6c,0x20,0x28,0x66,0x6f,0x72,0x20,0x65,0x78,0x61,0x6d,0x70,0x6c,0x65,0x2c,0x20, + 0x74,0x68,0x65,0x20,0x6f,0x6e,0x65,0x73,0x20,0x63,0x72,0x65,0x61,0x74,0x65,0x64, + 0x20,0x62,0x79,0x20,0x63,0x6f,0x70,0x63,0x61,0x6c,0x6c,0x29,0x2c,0x20,0x6d,0x61, + 0x6b,0x65,0x20,0x61,0x20,0x65,0x78,0x74,0x65,0x6e,0x73,0x69,0x6f,0x6e,0x20,0x70, + 0x6f,0x69,0x6e,0x74,0x20,0x74,0x6f,0x0a,0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x63, + 0x75,0x73,0x74,0x6f,0x6d,0x69,0x7a,0x65,0x20,0x64,0x65,0x62,0x75,0x67,0x67,0x65, + 0x64,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x0a,0x20,0x20,0x20, + 0x20,0x2d,0x2d,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x20,0x61, + 0x72,0x65,0x20,0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x64,0x20,0x64,0x75, + 0x72,0x69,0x6e,0x67,0x20,0x74,0x68,0x65,0x69,0x72,0x20,0x66,0x69,0x72,0x73,0x74, + 0x20,0x72,0x65,0x73,0x75,0x6d,0x65,0x20,0x28,0x73,0x6f,0x20,0x77,0x65,0x20,0x61, + 0x72,0x65,0x20,0x73,0x75,0x72,0x65,0x20,0x74,0x68,0x61,0x74,0x20,0x74,0x68,0x65, + 0x79,0x20,0x61,0x6c,0x77,0x61,0x79,0x73,0x20,0x68,0x61,0x76,0x65,0x20,0x61,0x20, + 0x73,0x74,0x61,0x63,0x6b,0x20,0x66,0x72,0x61,0x6d,0x65,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20, + 0x72,0x65,0x73,0x75,0x6d,0x65,0x5f,0x68,0x61,0x6e,0x64,0x6c,0x65,0x72,0x28,0x63, + 0x6f,0x72,0x6f,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x63,0x6f,0x73,0x74,0x61,0x74,0x75,0x73,0x28,0x63,0x6f, + 0x72,0x6f,0x29,0x20,0x3d,0x3d,0x20,0x22,0x64,0x65,0x61,0x64,0x22,0x20,0x74,0x68, + 0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c, + 0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x72,0x6f,0x5f,0x69,0x64,0x20,0x3d,0x20,0x63, + 0x6f,0x72,0x65,0x2e,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75, + 0x74,0x69,0x6e,0x65,0x73,0x2e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72,0x6f,0x5b, + 0x63,0x6f,0x72,0x6f,0x5d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x63,0x6f,0x72,0x65,0x2e,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f, + 0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x2e,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64, + 0x5b,0x63,0x6f,0x72,0x6f,0x5f,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x72,0x65, + 0x2e,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, + 0x65,0x73,0x2e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72,0x6f,0x5b,0x63,0x6f,0x72, + 0x6f,0x5d,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x63,0x6b,0x5f,0x6c,0x65,0x76,0x65,0x6c, + 0x73,0x5b,0x63,0x6f,0x72,0x6f,0x5d,0x20,0x3d,0x20,0x6e,0x69,0x6c,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x2e,0x2e,0x2e,0x0a,0x20,0x20,0x20, + 0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x66,0x75,0x6e,0x63,0x74,0x69, + 0x6f,0x6e,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x72,0x65,0x73, + 0x75,0x6d,0x65,0x28,0x63,0x6f,0x72,0x6f,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f,0x74,0x20,0x73,0x74, + 0x61,0x63,0x6b,0x5f,0x6c,0x65,0x76,0x65,0x6c,0x73,0x5b,0x63,0x6f,0x72,0x6f,0x5d, + 0x20,0x74,0x68,0x65,0x6e,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x20,0x66,0x69,0x72,0x73,0x74,0x20,0x74,0x69,0x6d,0x65,0x20, + 0x72,0x65,0x66,0x65,0x72,0x65,0x6e,0x63,0x65,0x64,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x63,0x6b,0x5f,0x6c,0x65,0x76, + 0x65,0x6c,0x73,0x5b,0x63,0x6f,0x72,0x6f,0x5d,0x20,0x3d,0x20,0x30,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x72,0x65,0x2e,0x61, + 0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73, + 0x2e,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x72,0x65,0x2e,0x61,0x63,0x74,0x69,0x76,0x65, + 0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x2e,0x6e,0x20,0x2b,0x20, + 0x31,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f, + 0x72,0x65,0x2e,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74, + 0x69,0x6e,0x65,0x73,0x2e,0x66,0x72,0x6f,0x6d,0x5f,0x69,0x64,0x5b,0x63,0x6f,0x72, + 0x65,0x2e,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69, + 0x6e,0x65,0x73,0x2e,0x6e,0x5d,0x20,0x3d,0x20,0x63,0x6f,0x72,0x6f,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x72,0x65,0x2e,0x61, + 0x63,0x74,0x69,0x76,0x65,0x5f,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73, + 0x2e,0x66,0x72,0x6f,0x6d,0x5f,0x63,0x6f,0x72,0x6f,0x5b,0x63,0x6f,0x72,0x6f,0x5d, + 0x20,0x3d,0x20,0x63,0x6f,0x72,0x65,0x2e,0x61,0x63,0x74,0x69,0x76,0x65,0x5f,0x63, + 0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x2e,0x6e,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x65,0x62,0x75,0x67,0x2e,0x73,0x65, + 0x74,0x68,0x6f,0x6f,0x6b,0x28,0x63,0x6f,0x72,0x6f,0x2c,0x20,0x64,0x65,0x62,0x75, + 0x67,0x67,0x65,0x72,0x5f,0x68,0x6f,0x6f,0x6b,0x2c,0x20,0x22,0x72,0x6c,0x63,0x22, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x72,0x65,0x73, + 0x75,0x6d,0x65,0x5f,0x68,0x61,0x6e,0x64,0x6c,0x65,0x72,0x28,0x63,0x6f,0x72,0x6f, + 0x2c,0x20,0x63,0x6f,0x72,0x65,0x73,0x75,0x6d,0x65,0x28,0x63,0x6f,0x72,0x6f,0x2c, + 0x20,0x2e,0x2e,0x2e,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a, + 0x20,0x20,0x20,0x20,0x2d,0x2d,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65, + 0x2e,0x77,0x72,0x61,0x70,0x20,0x75,0x73,0x65,0x73,0x20,0x64,0x69,0x72,0x65,0x63, + 0x74,0x6c,0x79,0x20,0x43,0x20,0x41,0x50,0x49,0x20,0x66,0x6f,0x72,0x20,0x63,0x6f, + 0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x73,0x20,0x61,0x6e,0x64,0x20,0x64,0x6f,0x65, + 0x73,0x20,0x6e,0x6f,0x74,0x20,0x74,0x72,0x69,0x67,0x67,0x65,0x72,0x20,0x6f,0x75, + 0x72,0x20,0x6f,0x76,0x65,0x72,0x72,0x69,0x64,0x64,0x65,0x6e,0x20,0x63,0x6f,0x72, + 0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x72,0x65,0x73,0x75,0x6d,0x65,0x0a,0x20,0x20, + 0x20,0x20,0x2d,0x2d,0x20,0x73,0x6f,0x20,0x74,0x68,0x69,0x73,0x20,0x69,0x73,0x20, + 0x61,0x6e,0x20,0x69,0x6d,0x70,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x61,0x74,0x69,0x6f, + 0x6e,0x20,0x6f,0x66,0x20,0x77,0x72,0x61,0x70,0x20,0x69,0x6e,0x20,0x70,0x75,0x72, + 0x65,0x20,0x4c,0x75,0x61,0x0a,0x20,0x20,0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20, + 0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x77,0x72,0x61,0x70,0x5f,0x68,0x61, + 0x6e,0x64,0x6c,0x65,0x72,0x28,0x73,0x74,0x61,0x74,0x75,0x73,0x2c,0x20,0x2e,0x2e, + 0x2e,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x6e,0x6f, + 0x74,0x20,0x73,0x74,0x61,0x74,0x75,0x73,0x20,0x74,0x68,0x65,0x6e,0x20,0x65,0x72, + 0x72,0x6f,0x72,0x28,0x28,0x2e,0x2e,0x2e,0x29,0x29,0x20,0x65,0x6e,0x64,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x2e,0x2e, + 0x2e,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x20,0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e, + 0x65,0x2e,0x77,0x72,0x61,0x70,0x28,0x66,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x63,0x6f,0x72,0x6f,0x20,0x3d,0x20,0x63, + 0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x63,0x72,0x65,0x61,0x74,0x65,0x28, + 0x66,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72, + 0x6e,0x20,0x66,0x75,0x6e,0x63,0x74,0x69,0x6f,0x6e,0x28,0x2e,0x2e,0x2e,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, + 0x72,0x6e,0x20,0x77,0x72,0x61,0x70,0x5f,0x68,0x61,0x6e,0x64,0x6c,0x65,0x72,0x28, + 0x63,0x6f,0x72,0x6f,0x75,0x74,0x69,0x6e,0x65,0x2e,0x72,0x65,0x73,0x75,0x6d,0x65, + 0x28,0x63,0x6f,0x72,0x6f,0x2c,0x20,0x2e,0x2e,0x2e,0x29,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x65,0x6e,0x64,0x0a,0x20,0x20,0x20,0x20,0x65,0x6e,0x64, + 0x0a,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x65,0x73, + 0x73,0x0a,0x65,0x6e,0x64,0x0a,0x0a,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x69,0x6e, + 0x69,0x74,0x0a,0x00, }; -int luaopen_lua_m_ldt_debugger(lua_State *L) { - luaL_loadbuffer(L, - (const char*)lua_m_ldt_debugger, - sizeof(lua_m_ldt_debugger), - "debugger"); +int luaopen_lua_m_debugger(lua_State *L) { + luaL_loadstring(L, lua_m_debugger); return 1; } -static luaL_Reg debugger_modules[] = { - {"debugger", luaopen_lua_m_ldt_debugger}, +static luaL_Reg lua_debugger_modules[] = { + {"debugger", luaopen_lua_m_debugger}, {NULL, NULL} }; -void luaopen_debugger(lua_State* L) +void luaopen_lua_debugger(lua_State* L) { - luaL_Reg* lib = debugger_modules; + luaL_Reg* lib = lua_debugger_modules; lua_getglobal(L, "package"); lua_getfield(L, -1, "preload"); for (; lib->func; lib++) @@ -3127,3 +8664,7 @@ void luaopen_debugger(lua_State* L) } lua_pop(L, 2); } + +#if __cplusplus +} +#endif diff --git a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.h b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.h index 39b1579e6f..43c2c8ae35 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.h +++ b/templates/lua-template-runtime/frameworks/runtime-src/Classes/runtime/lua_debugger.h @@ -1,8 +1,8 @@ -/* debugger.h.h */ +/* lua_debugger.h.h */ -#ifndef __LUA_MODULES_A51AA4C53D84E3F9A6C1C027E02078B1_H_ -#define __LUA_MODULES_A51AA4C53D84E3F9A6C1C027E02078B1_H_ +#ifndef __LUA_MODULES_049C000C96FE547176CCBB7690BA01B6_H_ +#define __LUA_MODULES_049C000C96FE547176CCBB7690BA01B6_H_ #if __cplusplus extern "C" { @@ -10,14 +10,14 @@ extern "C" { #include "lua.h" -void luaopen_debugger(lua_State* L); +void luaopen_lua_debugger(lua_State* L); /* -int luaopen_lua_m_ldt_debugger(lua_State* L); +int luaopen_lua_m_debugger(lua_State* L); */ #if __cplusplus } #endif -#endif /* __LUA_MODULES_A51AA4C53D84E3F9A6C1C027E02078B1_H_ */ +#endif /* __LUA_MODULES_049C000C96FE547176CCBB7690BA01B6_H_ */ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.android/build-cfg.json b/templates/lua-template-runtime/frameworks/runtime-src/proj.android/build-cfg.json index 9b557cd7ab..f1a55fd365 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.android/build-cfg.json +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.android/build-cfg.json @@ -16,41 +16,6 @@ } ], "must_copy_resources": [ - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosbuilder", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/network", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui", - "to": "" - }, - { - "from": "../../cocos2d-x/external/lua/luasocket", - "to": "", - "include": [ - "*.lua" - ] - }, { "from": "../../../config.json", "to": "" diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj index 05783661e6..d3d0c84aea 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/HelloLua.xcodeproj/project.pbxproj @@ -7,104 +7,14 @@ objects = { /* Begin PBXBuildFile section */ - 152A3432199CE585004B68DC /* CCBReaderLoad.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3430199CE585004B68DC /* CCBReaderLoad.lua */; }; - 152A3433199CE585004B68DC /* CCBReaderLoad.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3430199CE585004B68DC /* CCBReaderLoad.lua */; }; - 152A3434199CE585004B68DC /* DeprecatedCocosBuilderClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3431199CE585004B68DC /* DeprecatedCocosBuilderClass.lua */; }; - 152A3435199CE585004B68DC /* DeprecatedCocosBuilderClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3431199CE585004B68DC /* DeprecatedCocosBuilderClass.lua */; }; - 152A345C199CE5A7004B68DC /* CocoStudio.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3458199CE5A7004B68DC /* CocoStudio.lua */; }; - 152A345D199CE5A7004B68DC /* CocoStudio.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3458199CE5A7004B68DC /* CocoStudio.lua */; }; - 152A345E199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3459199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua */; }; - 152A345F199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3459199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua */; }; - 152A3460199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A345A199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua */; }; - 152A3461199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A345A199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua */; }; - 152A3462199CE5A7004B68DC /* StudioConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A345B199CE5A7004B68DC /* StudioConstants.lua */; }; - 152A3463199CE5A7004B68DC /* StudioConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A345B199CE5A7004B68DC /* StudioConstants.lua */; }; - 152A3468199CE5B9004B68DC /* DeprecatedExtensionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3464199CE5B9004B68DC /* DeprecatedExtensionClass.lua */; }; - 152A3469199CE5B9004B68DC /* DeprecatedExtensionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3464199CE5B9004B68DC /* DeprecatedExtensionClass.lua */; }; - 152A346A199CE5B9004B68DC /* DeprecatedExtensionEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3465199CE5B9004B68DC /* DeprecatedExtensionEnum.lua */; }; - 152A346B199CE5B9004B68DC /* DeprecatedExtensionEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3465199CE5B9004B68DC /* DeprecatedExtensionEnum.lua */; }; - 152A346C199CE5B9004B68DC /* DeprecatedExtensionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3466199CE5B9004B68DC /* DeprecatedExtensionFunc.lua */; }; - 152A346D199CE5B9004B68DC /* DeprecatedExtensionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3466199CE5B9004B68DC /* DeprecatedExtensionFunc.lua */; }; - 152A346E199CE5B9004B68DC /* ExtensionConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3467199CE5B9004B68DC /* ExtensionConstants.lua */; }; - 152A346F199CE5B9004B68DC /* ExtensionConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3467199CE5B9004B68DC /* ExtensionConstants.lua */; }; - 152A3474199CE5CE004B68DC /* DeprecatedUIEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3470199CE5CE004B68DC /* DeprecatedUIEnum.lua */; }; - 152A3475199CE5CE004B68DC /* DeprecatedUIEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3470199CE5CE004B68DC /* DeprecatedUIEnum.lua */; }; - 152A3476199CE5CE004B68DC /* DeprecatedUIFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3471199CE5CE004B68DC /* DeprecatedUIFunc.lua */; }; - 152A3477199CE5CE004B68DC /* DeprecatedUIFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3471199CE5CE004B68DC /* DeprecatedUIFunc.lua */; }; - 152A3478199CE5CE004B68DC /* experimentalUIConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3472199CE5CE004B68DC /* experimentalUIConstants.lua */; }; - 152A3479199CE5CE004B68DC /* experimentalUIConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3472199CE5CE004B68DC /* experimentalUIConstants.lua */; }; - 152A347A199CE5CE004B68DC /* GuiConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3473199CE5CE004B68DC /* GuiConstants.lua */; }; - 152A347B199CE5CE004B68DC /* GuiConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 152A3473199CE5CE004B68DC /* GuiConstants.lua */; }; 15427CD3198F221400DC375D /* libcocos2d iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A8A4251834BDA200142BE0 /* libcocos2d iOS.a */; }; 15427CD5198F222200DC375D /* libluacocos2d iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15427CD2198F220600DC375D /* libluacocos2d iOS.a */; }; 15427CEC198F24A600DC375D /* libluacocos2d Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15427CC2198F220600DC375D /* libluacocos2d Mac.a */; }; 15427CEE198F24AF00DC375D /* libcocos2d Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A8A4171834BDA200142BE0 /* libcocos2d Mac.a */; }; 15A8A4491834C64F00142BE0 /* Icon-114.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023810C17EBBCAC00990C9B /* Icon-114.png */; }; 15A8A4881834C90F00142BE0 /* libcurl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A8A4871834C90E00142BE0 /* libcurl.dylib */; }; - 15AA7D52199B51F000725633 /* ftp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D48199B51F000725633 /* ftp.lua */; }; - 15AA7D53199B51F000725633 /* ftp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D48199B51F000725633 /* ftp.lua */; }; - 15AA7D54199B51F000725633 /* headers.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D49199B51F000725633 /* headers.lua */; }; - 15AA7D55199B51F000725633 /* headers.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D49199B51F000725633 /* headers.lua */; }; - 15AA7D56199B51F000725633 /* http.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4A199B51F000725633 /* http.lua */; }; - 15AA7D57199B51F000725633 /* http.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4A199B51F000725633 /* http.lua */; }; - 15AA7D58199B51F000725633 /* ltn12.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4B199B51F000725633 /* ltn12.lua */; }; - 15AA7D59199B51F000725633 /* ltn12.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4B199B51F000725633 /* ltn12.lua */; }; - 15AA7D5A199B51F000725633 /* mbox.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4C199B51F000725633 /* mbox.lua */; }; - 15AA7D5B199B51F000725633 /* mbox.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4C199B51F000725633 /* mbox.lua */; }; - 15AA7D5C199B51F000725633 /* mime.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4D199B51F000725633 /* mime.lua */; }; - 15AA7D5D199B51F000725633 /* mime.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4D199B51F000725633 /* mime.lua */; }; - 15AA7D5E199B51F000725633 /* smtp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4E199B51F000725633 /* smtp.lua */; }; - 15AA7D5F199B51F000725633 /* smtp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4E199B51F000725633 /* smtp.lua */; }; - 15AA7D60199B51F000725633 /* socket.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4F199B51F000725633 /* socket.lua */; }; - 15AA7D61199B51F000725633 /* socket.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D4F199B51F000725633 /* socket.lua */; }; - 15AA7D62199B51F000725633 /* tp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D50199B51F000725633 /* tp.lua */; }; - 15AA7D63199B51F000725633 /* tp.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D50199B51F000725633 /* tp.lua */; }; - 15AA7D64199B51F000725633 /* url.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D51199B51F000725633 /* url.lua */; }; - 15AA7D65199B51F000725633 /* url.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA7D51199B51F000725633 /* url.lua */; }; - 15AA9632199B525400725633 /* DeprecatedNetworkClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA962E199B525400725633 /* DeprecatedNetworkClass.lua */; }; - 15AA9633199B525400725633 /* DeprecatedNetworkClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA962E199B525400725633 /* DeprecatedNetworkClass.lua */; }; - 15AA9634199B525400725633 /* DeprecatedNetworkEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA962F199B525400725633 /* DeprecatedNetworkEnum.lua */; }; - 15AA9635199B525400725633 /* DeprecatedNetworkEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA962F199B525400725633 /* DeprecatedNetworkEnum.lua */; }; - 15AA9636199B525400725633 /* DeprecatedNetworkFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA9630199B525400725633 /* DeprecatedNetworkFunc.lua */; }; - 15AA9637199B525400725633 /* DeprecatedNetworkFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA9630199B525400725633 /* DeprecatedNetworkFunc.lua */; }; - 15AA9638199B525400725633 /* NetworkConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA9631199B525400725633 /* NetworkConstants.lua */; }; - 15AA9639199B525400725633 /* NetworkConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15AA9631199B525400725633 /* NetworkConstants.lua */; }; 15AA9648199B6D4600725633 /* lua_debugger.c in Sources */ = {isa = PBXBuildFile; fileRef = 15AA9646199B6D4600725633 /* lua_debugger.c */; }; 15AA9649199B6D4600725633 /* lua_debugger.c in Sources */ = {isa = PBXBuildFile; fileRef = 15AA9646199B6D4600725633 /* lua_debugger.c */; }; - 15D1FDF81998714100302043 /* bitExtend.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEA1998714100302043 /* bitExtend.lua */; }; - 15D1FDF91998714100302043 /* bitExtend.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEA1998714100302043 /* bitExtend.lua */; }; - 15D1FDFA1998714100302043 /* Cocos2d.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEB1998714100302043 /* Cocos2d.lua */; }; - 15D1FDFB1998714100302043 /* Cocos2d.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEB1998714100302043 /* Cocos2d.lua */; }; - 15D1FDFC1998714100302043 /* Cocos2dConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEC1998714100302043 /* Cocos2dConstants.lua */; }; - 15D1FDFD1998714100302043 /* Cocos2dConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEC1998714100302043 /* Cocos2dConstants.lua */; }; - 15D1FDFE1998714100302043 /* DeprecatedCocos2dClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDED1998714100302043 /* DeprecatedCocos2dClass.lua */; }; - 15D1FDFF1998714100302043 /* DeprecatedCocos2dClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDED1998714100302043 /* DeprecatedCocos2dClass.lua */; }; - 15D1FE001998714100302043 /* DeprecatedCocos2dEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEE1998714100302043 /* DeprecatedCocos2dEnum.lua */; }; - 15D1FE011998714100302043 /* DeprecatedCocos2dEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEE1998714100302043 /* DeprecatedCocos2dEnum.lua */; }; - 15D1FE021998714100302043 /* DeprecatedCocos2dFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEF1998714100302043 /* DeprecatedCocos2dFunc.lua */; }; - 15D1FE031998714100302043 /* DeprecatedCocos2dFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDEF1998714100302043 /* DeprecatedCocos2dFunc.lua */; }; - 15D1FE041998714100302043 /* DeprecatedOpenglEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF01998714100302043 /* DeprecatedOpenglEnum.lua */; }; - 15D1FE051998714100302043 /* DeprecatedOpenglEnum.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF01998714100302043 /* DeprecatedOpenglEnum.lua */; }; - 15D1FE061998714100302043 /* DrawPrimitives.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF11998714100302043 /* DrawPrimitives.lua */; }; - 15D1FE071998714100302043 /* DrawPrimitives.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF11998714100302043 /* DrawPrimitives.lua */; }; - 15D1FE081998714100302043 /* extern.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF21998714100302043 /* extern.lua */; }; - 15D1FE091998714100302043 /* extern.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF21998714100302043 /* extern.lua */; }; - 15D1FE0A1998714100302043 /* json.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF31998714100302043 /* json.lua */; }; - 15D1FE0B1998714100302043 /* json.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF31998714100302043 /* json.lua */; }; - 15D1FE0C1998714100302043 /* luaj.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF41998714100302043 /* luaj.lua */; }; - 15D1FE0D1998714100302043 /* luaj.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF41998714100302043 /* luaj.lua */; }; - 15D1FE0E1998714100302043 /* luaoc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF51998714100302043 /* luaoc.lua */; }; - 15D1FE0F1998714100302043 /* luaoc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF51998714100302043 /* luaoc.lua */; }; - 15D1FE101998714100302043 /* Opengl.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF61998714100302043 /* Opengl.lua */; }; - 15D1FE111998714100302043 /* Opengl.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF61998714100302043 /* Opengl.lua */; }; - 15D1FE121998714100302043 /* OpenglConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF71998714100302043 /* OpenglConstants.lua */; }; - 15D1FE131998714100302043 /* OpenglConstants.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FDF71998714100302043 /* OpenglConstants.lua */; }; - 15D1FE171998715500302043 /* AudioEngine.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE141998715500302043 /* AudioEngine.lua */; }; - 15D1FE181998715500302043 /* AudioEngine.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE141998715500302043 /* AudioEngine.lua */; }; - 15D1FE191998715500302043 /* DeprecatedCocosDenshionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE151998715500302043 /* DeprecatedCocosDenshionClass.lua */; }; - 15D1FE1A1998715500302043 /* DeprecatedCocosDenshionClass.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE151998715500302043 /* DeprecatedCocosDenshionClass.lua */; }; - 15D1FE1B1998715500302043 /* DeprecatedCocosDenshionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE161998715500302043 /* DeprecatedCocosDenshionFunc.lua */; }; - 15D1FE1C1998715500302043 /* DeprecatedCocosDenshionFunc.lua in Resources */ = {isa = PBXBuildFile; fileRef = 15D1FE161998715500302043 /* DeprecatedCocosDenshionFunc.lua */; }; 1AF4C403178663F200122817 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AF4C402178663F200122817 /* libz.dylib */; }; 3EB5152C19528284006966AA /* Protos.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5152A19528284006966AA /* Protos.pb.cc */; }; 3EB5152D19528284006966AA /* Protos.pb.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3EB5152A19528284006966AA /* Protos.pb.cc */; }; @@ -165,6 +75,8 @@ 50D7C96C17EBBEDF005D0B91 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50D7C96B17EBBEDF005D0B91 /* OpenGL.framework */; }; 50D7C96E17EBBEE6005D0B91 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50D7C96D17EBBEE6005D0B91 /* AppKit.framework */; }; 50D7C97017EBBEEC005D0B91 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50D7C96F17EBBEEC005D0B91 /* IOKit.framework */; }; + 521A8E7019F0C3D200D177D7 /* Default-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 521A8E6E19F0C3D200D177D7 /* Default-667h@2x.png */; }; + 521A8E7119F0C3D200D177D7 /* Default-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 521A8E6F19F0C3D200D177D7 /* Default-736h@3x.png */; }; C00FD4921938512100C6382D /* Landscape_png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD48A1938512100C6382D /* Landscape_png.cpp */; }; C00FD4931938512100C6382D /* Landscape_png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD48A1938512100C6382D /* Landscape_png.cpp */; }; C00FD4941938512100C6382D /* PlayDisable_png.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C00FD48B1938512100C6382D /* PlayDisable_png.cpp */; }; @@ -190,7 +102,6 @@ C06C3796191A1D1E00617BED /* ConfigParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C06C3794191A1D1E00617BED /* ConfigParser.cpp */; }; C06C3797191A1D1E00617BED /* ConfigParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C06C3794191A1D1E00617BED /* ConfigParser.cpp */; }; C07828F818B4D72E00BD2287 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C07828F418B4D72E00BD2287 /* main.m */; }; - C07828F918B4D72E00BD2287 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = C07828F518B4D72E00BD2287 /* MainMenu.xib */; }; C07828FA18B4D72E00BD2287 /* SimulatorApp.mm in Sources */ = {isa = PBXBuildFile; fileRef = C07828F718B4D72E00BD2287 /* SimulatorApp.mm */; }; D6B061351803AC000077942B /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6B061341803AC000077942B /* CoreMotion.framework */; }; F293B3CD15EB7BE500256477 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3CC15EB7BE500256477 /* QuartzCore.framework */; }; @@ -200,6 +111,7 @@ F293B3D915EB7BE500256477 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3D815EB7BE500256477 /* Foundation.framework */; }; F293B3DB15EB7BE500256477 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3DA15EB7BE500256477 /* CoreGraphics.framework */; }; F293BB9C15EB831F00256477 /* AppDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F293BB7E15EB831F00256477 /* AppDelegate.cpp */; }; + F405C6C919ED14AA005AD31C /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = F405C6CB19ED14AA005AD31C /* MainMenu.xib */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -262,57 +174,12 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 152A3430199CE585004B68DC /* CCBReaderLoad.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CCBReaderLoad.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosbuilder/CCBReaderLoad.lua"; sourceTree = ""; }; - 152A3431199CE585004B68DC /* DeprecatedCocosBuilderClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocosBuilderClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosbuilder/DeprecatedCocosBuilderClass.lua"; sourceTree = ""; }; - 152A3458199CE5A7004B68DC /* CocoStudio.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CocoStudio.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio/CocoStudio.lua"; sourceTree = ""; }; - 152A3459199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocoStudioClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio/DeprecatedCocoStudioClass.lua"; sourceTree = ""; }; - 152A345A199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocoStudioFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio/DeprecatedCocoStudioFunc.lua"; sourceTree = ""; }; - 152A345B199CE5A7004B68DC /* StudioConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = StudioConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocostudio/StudioConstants.lua"; sourceTree = ""; }; - 152A3464199CE5B9004B68DC /* DeprecatedExtensionClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedExtensionClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionClass.lua"; sourceTree = ""; }; - 152A3465199CE5B9004B68DC /* DeprecatedExtensionEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedExtensionEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionEnum.lua"; sourceTree = ""; }; - 152A3466199CE5B9004B68DC /* DeprecatedExtensionFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedExtensionFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension/DeprecatedExtensionFunc.lua"; sourceTree = ""; }; - 152A3467199CE5B9004B68DC /* ExtensionConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ExtensionConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/extension/ExtensionConstants.lua"; sourceTree = ""; }; - 152A3470199CE5CE004B68DC /* DeprecatedUIEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedUIEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui/DeprecatedUIEnum.lua"; sourceTree = ""; }; - 152A3471199CE5CE004B68DC /* DeprecatedUIFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedUIFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui/DeprecatedUIFunc.lua"; sourceTree = ""; }; - 152A3472199CE5CE004B68DC /* experimentalUIConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = experimentalUIConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui/experimentalUIConstants.lua"; sourceTree = ""; }; - 152A3473199CE5CE004B68DC /* GuiConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = GuiConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/ui/GuiConstants.lua"; sourceTree = ""; }; 15427CE2198F237300DC375D /* lua_module_register.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = lua_module_register.h; path = ../Classes/lua_module_register.h; sourceTree = ""; }; 15A8A4031834BDA200142BE0 /* cocos2d_libs.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2d_libs.xcodeproj; path = "../../cocos2d-x/build/cocos2d_libs.xcodeproj"; sourceTree = ""; }; 15A8A4871834C90E00142BE0 /* libcurl.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcurl.dylib; path = usr/lib/libcurl.dylib; sourceTree = SDKROOT; }; - 15AA7D48199B51F000725633 /* ftp.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ftp.lua; path = "../../cocos2d-x/external/lua/luasocket/ftp.lua"; sourceTree = ""; }; - 15AA7D49199B51F000725633 /* headers.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = headers.lua; path = "../../cocos2d-x/external/lua/luasocket/headers.lua"; sourceTree = ""; }; - 15AA7D4A199B51F000725633 /* http.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = http.lua; path = "../../cocos2d-x/external/lua/luasocket/http.lua"; sourceTree = ""; }; - 15AA7D4B199B51F000725633 /* ltn12.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ltn12.lua; path = "../../cocos2d-x/external/lua/luasocket/ltn12.lua"; sourceTree = ""; }; - 15AA7D4C199B51F000725633 /* mbox.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = mbox.lua; path = "../../cocos2d-x/external/lua/luasocket/mbox.lua"; sourceTree = ""; }; - 15AA7D4D199B51F000725633 /* mime.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = mime.lua; path = "../../cocos2d-x/external/lua/luasocket/mime.lua"; sourceTree = ""; }; - 15AA7D4E199B51F000725633 /* smtp.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = smtp.lua; path = "../../cocos2d-x/external/lua/luasocket/smtp.lua"; sourceTree = ""; }; - 15AA7D4F199B51F000725633 /* socket.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = socket.lua; path = "../../cocos2d-x/external/lua/luasocket/socket.lua"; sourceTree = ""; }; - 15AA7D50199B51F000725633 /* tp.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = tp.lua; path = "../../cocos2d-x/external/lua/luasocket/tp.lua"; sourceTree = ""; }; - 15AA7D51199B51F000725633 /* url.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = url.lua; path = "../../cocos2d-x/external/lua/luasocket/url.lua"; sourceTree = ""; }; - 15AA962E199B525400725633 /* DeprecatedNetworkClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedNetworkClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/network/DeprecatedNetworkClass.lua"; sourceTree = ""; }; - 15AA962F199B525400725633 /* DeprecatedNetworkEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedNetworkEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/network/DeprecatedNetworkEnum.lua"; sourceTree = ""; }; - 15AA9630199B525400725633 /* DeprecatedNetworkFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedNetworkFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/network/DeprecatedNetworkFunc.lua"; sourceTree = ""; }; - 15AA9631199B525400725633 /* NetworkConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NetworkConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/network/NetworkConstants.lua"; sourceTree = ""; }; 15AA9646199B6D4600725633 /* lua_debugger.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lua_debugger.c; sourceTree = ""; }; 15AA9647199B6D4600725633 /* lua_debugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_debugger.h; sourceTree = ""; }; 15C1568D1683131500D239F2 /* libcurl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcurl.a; path = "../../cocos2d-x/cocos2dx/platform/third_party/ios/libraries/libcurl.a"; sourceTree = ""; }; - 15D1FDEA1998714100302043 /* bitExtend.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = bitExtend.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/bitExtend.lua"; sourceTree = ""; }; - 15D1FDEB1998714100302043 /* Cocos2d.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Cocos2d.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/Cocos2d.lua"; sourceTree = ""; }; - 15D1FDEC1998714100302043 /* Cocos2dConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Cocos2dConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/Cocos2dConstants.lua"; sourceTree = ""; }; - 15D1FDED1998714100302043 /* DeprecatedCocos2dClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocos2dClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dClass.lua"; sourceTree = ""; }; - 15D1FDEE1998714100302043 /* DeprecatedCocos2dEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocos2dEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dEnum.lua"; sourceTree = ""; }; - 15D1FDEF1998714100302043 /* DeprecatedCocos2dFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocos2dFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedCocos2dFunc.lua"; sourceTree = ""; }; - 15D1FDF01998714100302043 /* DeprecatedOpenglEnum.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedOpenglEnum.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DeprecatedOpenglEnum.lua"; sourceTree = ""; }; - 15D1FDF11998714100302043 /* DrawPrimitives.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DrawPrimitives.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/DrawPrimitives.lua"; sourceTree = ""; }; - 15D1FDF21998714100302043 /* extern.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = extern.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/extern.lua"; sourceTree = ""; }; - 15D1FDF31998714100302043 /* json.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = json.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/json.lua"; sourceTree = ""; }; - 15D1FDF41998714100302043 /* luaj.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = luaj.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/luaj.lua"; sourceTree = ""; }; - 15D1FDF51998714100302043 /* luaoc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = luaoc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/luaoc.lua"; sourceTree = ""; }; - 15D1FDF61998714100302043 /* Opengl.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Opengl.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/Opengl.lua"; sourceTree = ""; }; - 15D1FDF71998714100302043 /* OpenglConstants.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = OpenglConstants.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d/OpenglConstants.lua"; sourceTree = ""; }; - 15D1FE141998715500302043 /* AudioEngine.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = AudioEngine.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion/AudioEngine.lua"; sourceTree = ""; }; - 15D1FE151998715500302043 /* DeprecatedCocosDenshionClass.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocosDenshionClass.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion/DeprecatedCocosDenshionClass.lua"; sourceTree = ""; }; - 15D1FE161998715500302043 /* DeprecatedCocosDenshionFunc.lua */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DeprecatedCocosDenshionFunc.lua; path = "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion/DeprecatedCocosDenshionFunc.lua"; sourceTree = ""; }; 1AF4C402178663F200122817 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 3EB51526195187AF006966AA /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; 3EB5152A19528284006966AA /* Protos.pb.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Protos.pb.cc; sourceTree = ""; }; @@ -387,6 +254,8 @@ 50D7C96B17EBBEDF005D0B91 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; 50D7C96D17EBBEE6005D0B91 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 50D7C96F17EBBEEC005D0B91 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; + 521A8E6E19F0C3D200D177D7 /* Default-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h@2x.png"; sourceTree = ""; }; + 521A8E6F19F0C3D200D177D7 /* Default-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h@3x.png"; sourceTree = ""; }; C00FD48A1938512100C6382D /* Landscape_png.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Landscape_png.cpp; sourceTree = ""; }; C00FD48B1938512100C6382D /* PlayDisable_png.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlayDisable_png.cpp; sourceTree = ""; }; C00FD48C1938512100C6382D /* PlayEnable_png.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlayEnable_png.cpp; sourceTree = ""; }; @@ -405,7 +274,6 @@ C06C3794191A1D1E00617BED /* ConfigParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConfigParser.cpp; path = ../Classes/ConfigParser.cpp; sourceTree = ""; }; C06C3795191A1D1E00617BED /* ConfigParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConfigParser.h; path = ../Classes/ConfigParser.h; sourceTree = ""; }; C07828F418B4D72E00BD2287 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - C07828F518B4D72E00BD2287 /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = ""; }; C07828F618B4D72E00BD2287 /* SimulatorApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimulatorApp.h; sourceTree = ""; }; C07828F718B4D72E00BD2287 /* SimulatorApp.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SimulatorApp.mm; sourceTree = ""; }; D6B061341803AC000077942B /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/CoreMotion.framework; sourceTree = DEVELOPER_DIR; }; @@ -420,6 +288,7 @@ F293B3DA15EB7BE500256477 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; F293BB7E15EB831F00256477 /* AppDelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AppDelegate.cpp; path = ../Classes/AppDelegate.cpp; sourceTree = ""; }; F293BB7F15EB831F00256477 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = ../Classes/AppDelegate.h; sourceTree = ""; }; + F405C6CA19ED14AA005AD31C /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -475,58 +344,6 @@ name = Products; sourceTree = ""; }; - 1A0227A417A3AA1A00B867AD /* Lua Common */ = { - isa = PBXGroup; - children = ( - 152A3470199CE5CE004B68DC /* DeprecatedUIEnum.lua */, - 152A3471199CE5CE004B68DC /* DeprecatedUIFunc.lua */, - 152A3472199CE5CE004B68DC /* experimentalUIConstants.lua */, - 152A3473199CE5CE004B68DC /* GuiConstants.lua */, - 152A3464199CE5B9004B68DC /* DeprecatedExtensionClass.lua */, - 152A3465199CE5B9004B68DC /* DeprecatedExtensionEnum.lua */, - 152A3466199CE5B9004B68DC /* DeprecatedExtensionFunc.lua */, - 152A3467199CE5B9004B68DC /* ExtensionConstants.lua */, - 152A3458199CE5A7004B68DC /* CocoStudio.lua */, - 152A3459199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua */, - 152A345A199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua */, - 152A345B199CE5A7004B68DC /* StudioConstants.lua */, - 152A3430199CE585004B68DC /* CCBReaderLoad.lua */, - 152A3431199CE585004B68DC /* DeprecatedCocosBuilderClass.lua */, - 15AA962E199B525400725633 /* DeprecatedNetworkClass.lua */, - 15AA962F199B525400725633 /* DeprecatedNetworkEnum.lua */, - 15AA9630199B525400725633 /* DeprecatedNetworkFunc.lua */, - 15AA9631199B525400725633 /* NetworkConstants.lua */, - 15AA7D48199B51F000725633 /* ftp.lua */, - 15AA7D49199B51F000725633 /* headers.lua */, - 15AA7D4A199B51F000725633 /* http.lua */, - 15AA7D4B199B51F000725633 /* ltn12.lua */, - 15AA7D4C199B51F000725633 /* mbox.lua */, - 15AA7D4D199B51F000725633 /* mime.lua */, - 15AA7D4E199B51F000725633 /* smtp.lua */, - 15AA7D4F199B51F000725633 /* socket.lua */, - 15AA7D50199B51F000725633 /* tp.lua */, - 15AA7D51199B51F000725633 /* url.lua */, - 15D1FE141998715500302043 /* AudioEngine.lua */, - 15D1FE151998715500302043 /* DeprecatedCocosDenshionClass.lua */, - 15D1FE161998715500302043 /* DeprecatedCocosDenshionFunc.lua */, - 15D1FDEA1998714100302043 /* bitExtend.lua */, - 15D1FDEB1998714100302043 /* Cocos2d.lua */, - 15D1FDEC1998714100302043 /* Cocos2dConstants.lua */, - 15D1FDED1998714100302043 /* DeprecatedCocos2dClass.lua */, - 15D1FDEE1998714100302043 /* DeprecatedCocos2dEnum.lua */, - 15D1FDEF1998714100302043 /* DeprecatedCocos2dFunc.lua */, - 15D1FDF01998714100302043 /* DeprecatedOpenglEnum.lua */, - 15D1FDF11998714100302043 /* DrawPrimitives.lua */, - 15D1FDF21998714100302043 /* extern.lua */, - 15D1FDF31998714100302043 /* json.lua */, - 15D1FDF41998714100302043 /* luaj.lua */, - 15D1FDF51998714100302043 /* luaoc.lua */, - 15D1FDF61998714100302043 /* Opengl.lua */, - 15D1FDF71998714100302043 /* OpenglConstants.lua */, - ); - name = "Lua Common"; - sourceTree = ""; - }; 3EB5152E1952865D006966AA /* protobuf-lite */ = { isa = PBXGroup; children = ( @@ -607,6 +424,8 @@ 5023810617EBBCAC00990C9B /* ios */ = { isa = PBXGroup; children = ( + 521A8E6E19F0C3D200D177D7 /* Default-667h@2x.png */, + 521A8E6F19F0C3D200D177D7 /* Default-736h@3x.png */, 5023810717EBBCAC00990C9B /* AppController.h */, 5023810817EBBCAC00990C9B /* AppController.mm */, 5023810917EBBCAC00990C9B /* Default-568h@2x.png */, @@ -627,7 +446,7 @@ children = ( 5023817217EBBE3400990C9B /* Icon.icns */, C07828F418B4D72E00BD2287 /* main.m */, - C07828F518B4D72E00BD2287 /* MainMenu.xib */, + F405C6CB19ED14AA005AD31C /* MainMenu.xib */, C07828F618B4D72E00BD2287 /* SimulatorApp.h */, C07828F718B4D72E00BD2287 /* SimulatorApp.mm */, 5023817317EBBE3400990C9B /* Info.plist */, @@ -695,7 +514,6 @@ 5023817117EBBE3400990C9B /* mac */, F293BB7C15EB830F00256477 /* Classes */, F293B3CB15EB7BE500256477 /* Frameworks */, - 1A0227A417A3AA1A00B867AD /* Lua Common */, F293B3C915EB7BE500256477 /* Products */, F293BC4615EB859D00256477 /* Resources */, ); @@ -882,56 +700,11 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 152A3469199CE5B9004B68DC /* DeprecatedExtensionClass.lua in Resources */, - 152A345F199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua in Resources */, - 15AA7D5F199B51F000725633 /* smtp.lua in Resources */, - 15AA7D63199B51F000725633 /* tp.lua in Resources */, - 15AA7D5D199B51F000725633 /* mime.lua in Resources */, - 15AA9635199B525400725633 /* DeprecatedNetworkEnum.lua in Resources */, - 152A346B199CE5B9004B68DC /* DeprecatedExtensionEnum.lua in Resources */, - 152A3475199CE5CE004B68DC /* DeprecatedUIEnum.lua in Resources */, - 152A3435199CE585004B68DC /* DeprecatedCocosBuilderClass.lua in Resources */, C03781BA18BF655400FE4F13 /* res in Resources */, - 15D1FE131998714100302043 /* OpenglConstants.lua in Resources */, - 15D1FE071998714100302043 /* DrawPrimitives.lua in Resources */, C03781BC18BF655400FE4F13 /* src in Resources */, - 15D1FE111998714100302043 /* Opengl.lua in Resources */, - C07828F918B4D72E00BD2287 /* MainMenu.xib in Resources */, - 152A345D199CE5A7004B68DC /* CocoStudio.lua in Resources */, - 15D1FE0D1998714100302043 /* luaj.lua in Resources */, - 15AA7D65199B51F000725633 /* url.lua in Resources */, - 15AA7D5B199B51F000725633 /* mbox.lua in Resources */, - 15D1FE051998714100302043 /* DeprecatedOpenglEnum.lua in Resources */, - 152A3479199CE5CE004B68DC /* experimentalUIConstants.lua in Resources */, + F405C6C919ED14AA005AD31C /* MainMenu.xib in Resources */, 5023817617EBBE3400990C9B /* Icon.icns in Resources */, - 152A3463199CE5A7004B68DC /* StudioConstants.lua in Resources */, - 15D1FE031998714100302043 /* DeprecatedCocos2dFunc.lua in Resources */, - 15AA7D59199B51F000725633 /* ltn12.lua in Resources */, - 15D1FDFF1998714100302043 /* DeprecatedCocos2dClass.lua in Resources */, - 15AA7D53199B51F000725633 /* ftp.lua in Resources */, - 152A346D199CE5B9004B68DC /* DeprecatedExtensionFunc.lua in Resources */, - 15D1FE1C1998715500302043 /* DeprecatedCocosDenshionFunc.lua in Resources */, - 15D1FDF91998714100302043 /* bitExtend.lua in Resources */, - 15D1FE011998714100302043 /* DeprecatedCocos2dEnum.lua in Resources */, - 152A3461199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua in Resources */, - 152A3477199CE5CE004B68DC /* DeprecatedUIFunc.lua in Resources */, - 15D1FE0B1998714100302043 /* json.lua in Resources */, - 15AA9639199B525400725633 /* NetworkConstants.lua in Resources */, - 15D1FE091998714100302043 /* extern.lua in Resources */, - 15AA7D61199B51F000725633 /* socket.lua in Resources */, - 15AA9637199B525400725633 /* DeprecatedNetworkFunc.lua in Resources */, - 15D1FE1A1998715500302043 /* DeprecatedCocosDenshionClass.lua in Resources */, C05D1C131923449100B808A4 /* config.json in Resources */, - 15AA9633199B525400725633 /* DeprecatedNetworkClass.lua in Resources */, - 152A346F199CE5B9004B68DC /* ExtensionConstants.lua in Resources */, - 15D1FE0F1998714100302043 /* luaoc.lua in Resources */, - 15AA7D57199B51F000725633 /* http.lua in Resources */, - 152A347B199CE5CE004B68DC /* GuiConstants.lua in Resources */, - 15D1FDFD1998714100302043 /* Cocos2dConstants.lua in Resources */, - 15D1FDFB1998714100302043 /* Cocos2d.lua in Resources */, - 15D1FE181998715500302043 /* AudioEngine.lua in Resources */, - 15AA7D55199B51F000725633 /* headers.lua in Resources */, - 152A3433199CE585004B68DC /* CCBReaderLoad.lua in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -939,70 +712,27 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 152A345C199CE5A7004B68DC /* CocoStudio.lua in Resources */, - 15D1FDF81998714100302043 /* bitExtend.lua in Resources */, - 15AA7D52199B51F000725633 /* ftp.lua in Resources */, - 15AA7D58199B51F000725633 /* ltn12.lua in Resources */, - 15AA7D5A199B51F000725633 /* mbox.lua in Resources */, 15A8A4491834C64F00142BE0 /* Icon-114.png in Resources */, - 152A3478199CE5CE004B68DC /* experimentalUIConstants.lua in Resources */, 5023811D17EBBCAC00990C9B /* Icon-120.png in Resources */, 5091733B17ECE17A00D62437 /* Icon-100.png in Resources */, - 152A346E199CE5B9004B68DC /* ExtensionConstants.lua in Resources */, - 15AA7D54199B51F000725633 /* headers.lua in Resources */, 5023811B17EBBCAC00990C9B /* Default@2x.png in Resources */, - 15D1FDFE1998714100302043 /* DeprecatedCocos2dClass.lua in Resources */, 5091733617ECE17A00D62437 /* Icon-29.png in Resources */, - 15AA7D60199B51F000725633 /* socket.lua in Resources */, - 15D1FE061998714100302043 /* DrawPrimitives.lua in Resources */, - 15AA7D56199B51F000725633 /* http.lua in Resources */, - 15D1FE191998715500302043 /* DeprecatedCocosDenshionClass.lua in Resources */, - 152A3476199CE5CE004B68DC /* DeprecatedUIFunc.lua in Resources */, - 15D1FDFA1998714100302043 /* Cocos2d.lua in Resources */, 5023811917EBBCAC00990C9B /* Default-568h@2x.png in Resources */, - 15D1FE0C1998714100302043 /* luaj.lua in Resources */, 5091733917ECE17A00D62437 /* Icon-58.png in Resources */, - 15D1FE121998714100302043 /* OpenglConstants.lua in Resources */, - 152A3474199CE5CE004B68DC /* DeprecatedUIEnum.lua in Resources */, - 15D1FE021998714100302043 /* DeprecatedCocos2dFunc.lua in Resources */, 5023811F17EBBCAC00990C9B /* Icon-152.png in Resources */, 5023812017EBBCAC00990C9B /* Icon-57.png in Resources */, - 15D1FE001998714100302043 /* DeprecatedCocos2dEnum.lua in Resources */, + 521A8E7019F0C3D200D177D7 /* Default-667h@2x.png in Resources */, C03781B918BF655400FE4F13 /* res in Resources */, - 15AA9634199B525400725633 /* DeprecatedNetworkEnum.lua in Resources */, - 15D1FE1B1998715500302043 /* DeprecatedCocosDenshionFunc.lua in Resources */, 5023812217EBBCAC00990C9B /* Icon-76.png in Resources */, 5091733A17ECE17A00D62437 /* Icon-80.png in Resources */, - 152A347A199CE5CE004B68DC /* GuiConstants.lua in Resources */, - 15D1FE0A1998714100302043 /* json.lua in Resources */, - 15AA7D5C199B51F000725633 /* mime.lua in Resources */, - 152A3462199CE5A7004B68DC /* StudioConstants.lua in Resources */, - 15D1FE041998714100302043 /* DeprecatedOpenglEnum.lua in Resources */, - 152A3468199CE5B9004B68DC /* DeprecatedExtensionClass.lua in Resources */, 5091733717ECE17A00D62437 /* Icon-40.png in Resources */, 5023811E17EBBCAC00990C9B /* Icon-144.png in Resources */, 5023811A17EBBCAC00990C9B /* Default.png in Resources */, - 15AA7D5E199B51F000725633 /* smtp.lua in Resources */, - 152A3434199CE585004B68DC /* DeprecatedCocosBuilderClass.lua in Resources */, - 15AA9632199B525400725633 /* DeprecatedNetworkClass.lua in Resources */, - 15D1FE171998715500302043 /* AudioEngine.lua in Resources */, C03781BB18BF655400FE4F13 /* src in Resources */, - 15AA9636199B525400725633 /* DeprecatedNetworkFunc.lua in Resources */, 5091733817ECE17A00D62437 /* Icon-50.png in Resources */, - 15D1FE081998714100302043 /* extern.lua in Resources */, 5023812117EBBCAC00990C9B /* Icon-72.png in Resources */, - 15AA7D62199B51F000725633 /* tp.lua in Resources */, - 15D1FDFC1998714100302043 /* Cocos2dConstants.lua in Resources */, - 152A3432199CE585004B68DC /* CCBReaderLoad.lua in Resources */, - 15AA9638199B525400725633 /* NetworkConstants.lua in Resources */, - 15AA7D64199B51F000725633 /* url.lua in Resources */, - 152A346A199CE5B9004B68DC /* DeprecatedExtensionEnum.lua in Resources */, - 152A346C199CE5B9004B68DC /* DeprecatedExtensionFunc.lua in Resources */, C05D1C121923449100B808A4 /* config.json in Resources */, - 15D1FE0E1998714100302043 /* luaoc.lua in Resources */, - 152A3460199CE5A7004B68DC /* DeprecatedCocoStudioFunc.lua in Resources */, - 152A345E199CE5A7004B68DC /* DeprecatedCocoStudioClass.lua in Resources */, - 15D1FE101998714100302043 /* Opengl.lua in Resources */, + 521A8E7119F0C3D200D177D7 /* Default-736h@3x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1117,6 +847,17 @@ }; /* End PBXTargetDependency section */ +/* Begin PBXVariantGroup section */ + F405C6CB19ED14AA005AD31C /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + F405C6CA19ED14AA005AD31C /* en */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 5023816917EBBCE400990C9B /* Debug */ = { isa = XCBuildConfiguration; diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Default-667h@2x.png b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Default-667h@2x.png new file mode 100644 index 0000000000..a0f61ec8e6 Binary files /dev/null and b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Default-667h@2x.png differ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Default-736h@3x.png b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Default-736h@3x.png new file mode 100644 index 0000000000..dadccee686 Binary files /dev/null and b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Default-736h@3x.png differ diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Info.plist b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Info.plist index 2b8d4ae1c0..7971812d78 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Info.plist +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/ios/Info.plist @@ -49,6 +49,89 @@ ???? CFBundleVersion 1.0 + UILaunchImages + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {414, 736} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {414, 736} + + LSRequiresIPhoneOS UIPrerenderedIcon @@ -64,7 +147,6 @@ UISupportedInterfaceOrientations - UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/mac/MainMenu.xib b/templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/mac/en.lproj/MainMenu.xib similarity index 100% rename from templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/mac/MainMenu.xib rename to templates/lua-template-runtime/frameworks/runtime-src/proj.ios_mac/mac/en.lproj/MainMenu.xib diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj index 686e7e920a..4b19203935 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/HelloLua.vcxproj @@ -111,15 +111,7 @@ - if not exist "$(LocalDebuggerWorkingDirectory)" mkdir "$(LocalDebuggerWorkingDirectory)" -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\cocos2d\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\network\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\cocosdenshion\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\cocosbuilder\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\extension\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\ui\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\cocostudio\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\external\lua\luasocket\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y + if not exist "$(LocalDebuggerWorkingDirectory)" mkdir "$(LocalDebuggerWorkingDirectory)" copy files @@ -179,14 +171,7 @@ mkdir "$(LocalDebuggerWorkingDirectory)\res" xcopy "$(ProjectDir)..\..\..\src" "$(LocalDebuggerWorkingDirectory)\src" /e /Y xcopy "$(ProjectDir)..\..\..\res" "$(LocalDebuggerWorkingDirectory)\res" /e /Y copy "$(ProjectDir)..\..\..\config.json" "$(LocalDebuggerWorkingDirectory)\config.json" /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\external\lua\luasocket\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\network\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\cocos2d\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\cocosdenshion\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\cocosbuilder\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\extension\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\ui\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y -xcopy "$(ProjectDir)..\..\cocos2d-x\cocos\scripting\lua-bindings\script\cocostudio\*.lua" "$(LocalDebuggerWorkingDirectory)" /e /Y + copy files diff --git a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/build-cfg.json b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/build-cfg.json index 3b2ca1cb79..3182771c29 100644 --- a/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/build-cfg.json +++ b/templates/lua-template-runtime/frameworks/runtime-src/proj.win32/build-cfg.json @@ -14,24 +14,5 @@ } ], "must_copy_resources": [ - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocos2d", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "" - }, - { - "from": "../../cocos2d-x/cocos/scripting/lua-bindings/script/network", - "to": "" - }, - { - "from": "../../cocos2d-x/external/lua/luasocket", - "to": "", - "include": [ - "*.lua" - ] - } ] } diff --git a/templates/lua-template-runtime/src/GameScene.lua b/templates/lua-template-runtime/src/GameScene.lua index cd817c5ba0..45c6bdbe06 100644 --- a/templates/lua-template-runtime/src/GameScene.lua +++ b/templates/lua-template-runtime/src/GameScene.lua @@ -1,5 +1,3 @@ -require "Cocos2d" -require "Cocos2dConstants" local GameScene = class("GameScene",function() return cc.Scene:create() diff --git a/templates/lua-template-runtime/src/main.lua b/templates/lua-template-runtime/src/main.lua index 1bd792d84e..adca7b390a 100644 --- a/templates/lua-template-runtime/src/main.lua +++ b/templates/lua-template-runtime/src/main.lua @@ -1,6 +1,9 @@ -require "Cocos2d" -require "extern" +cc.FileUtils:getInstance():addSearchPath("src") +cc.FileUtils:getInstance():addSearchPath("res") + +-- CC_USE_DEPRECATED_API = true +require "cocos.init" -- cclog local cclog = function(...) diff --git a/tests/cpp-empty-test/CMakeLists.txt b/tests/cpp-empty-test/CMakeLists.txt index a8fb93181e..b1199a8070 100644 --- a/tests/cpp-empty-test/CMakeLists.txt +++ b/tests/cpp-empty-test/CMakeLists.txt @@ -17,7 +17,7 @@ elseif(IOS) proj.ios/RootViewController.mm ) -elseif(MACOSX) +elseif(MACOSX OR APPLE) set(PLATFORM_SRC proj.mac/main.cpp ) diff --git a/tests/cpp-empty-test/proj-wp8-xaml/cpp-empty-testComponent/cpp-empty-testComponent.vcxproj b/tests/cpp-empty-test/proj-wp8-xaml/cpp-empty-testComponent/cpp-empty-testComponent.vcxproj index eaad37b675..17bf7f73e5 100644 --- a/tests/cpp-empty-test/proj-wp8-xaml/cpp-empty-testComponent/cpp-empty-testComponent.vcxproj +++ b/tests/cpp-empty-test/proj-wp8-xaml/cpp-empty-testComponent/cpp-empty-testComponent.vcxproj @@ -62,20 +62,24 @@ - - + + + - - + + + - - + + + - - + + + @@ -83,7 +87,7 @@ - WP8;_WINRT_DLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;COCOS2D_DEBUG=1;CC_STATIC;%(PreprocessorDefinitions) + CC_ENABLE_CHIPMUNK_INTEGRATION=1;COCOS2D_DEBUG=1;%(PreprocessorDefinitions) Use pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) @@ -96,15 +100,15 @@ Console false - d3d11.lib;libGLESv2_phone.lib;libEGL_phone.lib;xaudio2.lib;libwebsockets.lib;libcurl.lib;%(AdditionalDependencies) + %(AdditionalDependencies) ole32.lib;%(IgnoreSpecificDefaultLibraries) true - $(EngineRoot)external\wp8-specific\angle\prebuilt\$(Platform);$(EngineRoot)\external\curl\prebuilt\wp8\$(Platform);$(EngineRoot)external\websockets\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) + %(AdditionalLibraryDirectories) - WP8;_WINRT_DLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;CC_STATIC;%(PreprocessorDefinitions) + CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) Use pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) @@ -117,15 +121,15 @@ Console false - d3d11.lib;libGLESv2_phone.lib;libEGL_phone.lib;xaudio2.lib;libwebsockets.lib;libcurl.lib;%(AdditionalDependencies) + %(AdditionalDependencies) ole32.lib;%(IgnoreSpecificDefaultLibraries) true - $(EngineRoot)external\wp8-specific\angle\prebuilt\$(Platform);$(EngineRoot)\external\curl\prebuilt\wp8\$(Platform);$(EngineRoot)external\websockets\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) + %(AdditionalLibraryDirectories) - WP8;_WINRT_DLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;COCOS2D_DEBUG=1;CC_STATIC;%(PreprocessorDefinitions) + CC_ENABLE_CHIPMUNK_INTEGRATION=1;COCOS2D_DEBUG=1;%(PreprocessorDefinitions) Use pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) @@ -138,15 +142,15 @@ Console false - d3d11.lib;libGLESv2_phone.lib;libEGL_phone.lib;xaudio2.lib;libwebsockets.lib;libcurl.lib;%(AdditionalDependencies) + %(AdditionalDependencies) ole32.lib;%(IgnoreSpecificDefaultLibraries) true - $(EngineRoot)external\wp8-specific\angle\prebuilt\$(Platform);$(EngineRoot)\external\curl\prebuilt\wp8\$(Platform);$(EngineRoot)external\websockets\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) + %(AdditionalLibraryDirectories) - WP8;_WINRT_DLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;CC_STATIC;%(PreprocessorDefinitions) + CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) Use pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) @@ -159,10 +163,10 @@ Console false - d3d11.lib;libGLESv2_phone.lib;libEGL_phone.lib;xaudio2.lib;libwebsockets.lib;libcurl.lib;%(AdditionalDependencies) + %(AdditionalDependencies) ole32.lib;%(IgnoreSpecificDefaultLibraries) true - $(EngineRoot)external\wp8-specific\angle\prebuilt\$(Platform);$(EngineRoot)\external\curl\prebuilt\wp8\$(Platform);$(EngineRoot)external\websockets\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) + %(AdditionalLibraryDirectories) @@ -172,6 +176,12 @@ + + Create + Create + Create + Create + @@ -179,18 +189,9 @@ - - Create - Create - Create - Create - false - false - false - false - + @@ -200,90 +201,18 @@ - - - {b5af91b3-64ea-44e1-84b0-d759e93758fb} - - - {df125891-eee9-4466-b903-f828fd272158} - - - {20d4035d-fd3f-4fd3-baba-97bc1c38dfc2} - - - {51e5736e-e1a3-4c94-abb7-e92ecef9c12e} + + {7c5dbc42-27f6-4978-aabc-02ba77e2a7f0} {7d4fc6eb-9497-4804-98f3-3eaedc896154} - - {7daa99e7-8e07-4fef-8374-8ec04e395d2e} - - - {88982c27-5a7b-40a8-86e7-b3187b44b322} - - - {08fb23e4-1517-4edc-b682-da238cdaa83d} - - - {04a0c42f-23bb-469b-a9d8-ca49136adbd4} - {c55734a3-702c-4fa1-b950-32c8e169302f} - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - diff --git a/tests/cpp-empty-test/proj-wp8-xaml/cpp-empty-testComponent/cpp-empty-testComponent.vcxproj.filters b/tests/cpp-empty-test/proj-wp8-xaml/cpp-empty-testComponent/cpp-empty-testComponent.vcxproj.filters index 9180508691..7992bf66f7 100644 --- a/tests/cpp-empty-test/proj-wp8-xaml/cpp-empty-testComponent/cpp-empty-testComponent.vcxproj.filters +++ b/tests/cpp-empty-test/proj-wp8-xaml/cpp-empty-testComponent/cpp-empty-testComponent.vcxproj.filters @@ -12,12 +12,12 @@ Classes - + @@ -29,26 +29,21 @@ Classes - + - - - - - - - - - - - - + + + + + + + \ No newline at end of file diff --git a/tests/cpp-empty-test/proj.ios/Default-667h@2x.png b/tests/cpp-empty-test/proj.ios/Default-667h@2x.png new file mode 100644 index 0000000000..a0f61ec8e6 Binary files /dev/null and b/tests/cpp-empty-test/proj.ios/Default-667h@2x.png differ diff --git a/tests/cpp-empty-test/proj.ios/Default-736h@3x.png b/tests/cpp-empty-test/proj.ios/Default-736h@3x.png new file mode 100644 index 0000000000..dadccee686 Binary files /dev/null and b/tests/cpp-empty-test/proj.ios/Default-736h@3x.png differ diff --git a/tests/cpp-empty-test/proj.ios/Info.plist b/tests/cpp-empty-test/proj.ios/Info.plist index 5162d3a8da..a0dcce71cf 100644 --- a/tests/cpp-empty-test/proj.ios/Info.plist +++ b/tests/cpp-empty-test/proj.ios/Info.plist @@ -77,6 +77,89 @@ ???? CFBundleVersion 1.0 + UILaunchImages + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {414, 736} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {414, 736} + + LSRequiresIPhoneOS UIPrerenderedIcon diff --git a/tests/cpp-tests/CMakeLists.txt b/tests/cpp-tests/CMakeLists.txt index 2f9ee37b04..f8a92032d0 100644 --- a/tests/cpp-tests/CMakeLists.txt +++ b/tests/cpp-tests/CMakeLists.txt @@ -49,6 +49,7 @@ set(TESTS_SRC Classes/DrawPrimitivesTest/DrawPrimitivesTest.cpp Classes/EffectsAdvancedTest/EffectsAdvancedTest.cpp Classes/EffectsTest/EffectsTest.cpp + Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.cpp Classes/ExtensionsTest/CocosBuilderTest/ButtonTest/ButtonTestLayer.cpp Classes/ExtensionsTest/CocosBuilderTest/CocosBuilderTest.cpp Classes/ExtensionsTest/CocosBuilderTest/HelloCocosBuilder/HelloCocosBuilderLayer.cpp diff --git a/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.cpp b/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.cpp index 40b4553c7c..cc681ab0f5 100644 --- a/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.cpp +++ b/tests/cpp-tests/Classes/ActionManagerTest/ActionManagerTest.cpp @@ -287,8 +287,8 @@ void StopAllActionsTest::onEnter() auto pRepeatMove = RepeatForever::create(pSequenceMove); pRepeatMove->setTag(kTagSequence); - auto pScale1 = ScaleBy::create(2, 1.5); - auto pScale2 = ScaleBy::create(2, 1.0/1.5); + auto pScale1 = ScaleBy::create(2, 1.5f); + auto pScale2 = ScaleBy::create(2, 1.0f/1.5f); auto pSequenceScale = Sequence::createWithTwoActions(pScale1, pScale2); auto pRepeatScale = RepeatForever::create(pSequenceScale); pRepeatScale->setTag(kTagSequence); diff --git a/tests/cpp-tests/Classes/AppDelegate.cpp b/tests/cpp-tests/Classes/AppDelegate.cpp index 707872191c..1d07655c0a 100644 --- a/tests/cpp-tests/Classes/AppDelegate.cpp +++ b/tests/cpp-tests/Classes/AppDelegate.cpp @@ -96,6 +96,7 @@ bool AppDelegate::applicationDidFinishLaunching() searchPaths.push_back("ccs-res/hd/scenetest/UIComponentTest"); searchPaths.push_back("ccs-res/hd/scenetest/TriggerTest"); searchPaths.push_back("ccs-res"); + searchPaths.push_back("Manifests"); director->setContentScaleFactor(resourceSize.height/designSize.height); } else @@ -124,16 +125,12 @@ bool AppDelegate::applicationDidFinishLaunching() auto scene = Scene::create(); auto layer = new (std::nothrow) TestController(); -#if (CC_TARGET_PLATFORM != CC_PLATFORM_WP8) && (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) - layer->addConsoleAutoTest(); -#endif layer->autorelease(); layer->addConsoleAutoTest(); scene->addChild(layer); director->runWithScene(scene); // Enable Remote Console -#if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) auto console = director->getConsole(); console->listenOnTCP(5678); Configuration *conf = Configuration::getInstance(); @@ -142,7 +139,6 @@ bool AppDelegate::applicationDidFinishLaunching() { layer->startAutoRun(); } -#endif return true; } diff --git a/tests/cpp-tests/Classes/BillBoardTest/BillBoardTest.cpp b/tests/cpp-tests/Classes/BillBoardTest/BillBoardTest.cpp index b13fd39fa6..cbb49e7a2e 100644 --- a/tests/cpp-tests/Classes/BillBoardTest/BillBoardTest.cpp +++ b/tests/cpp-tests/Classes/BillBoardTest/BillBoardTest.cpp @@ -105,6 +105,24 @@ BillBoardTest::BillBoardTest() layer->runAction( RepeatForever::create( RotateBy::create( CCRANDOM_0_1(), Vec3(0.0f, 45.0f, 0.0f) ) ) ); } + { + auto billboard = BillBoard::create("Images/Icon.png"); + billboard->setScale(0.2f); + billboard->setPosition3D(Vec3(0.0f, 30.0f, 0.0f)); + + auto billboard2 = BillBoard::create("Images/r2.png"); + billboard2->setPosition3D(Vec3(0.0f, 0.0f, 100.0f)); + billboard->addChild(billboard2); + _billboards.push_back(billboard); + _billboards.push_back(billboard2); + + auto sprite3d = Sprite3D::create("Sprite3DTest/orc.c3t"); + sprite3d->setScale(2.0f); + sprite3d->addChild(billboard); + sprite3d->runAction( RepeatForever::create( RotateBy::create( 10.0f, Vec3(0.0f, 360.0f, 0.0f) ) ) ); + _layerBillBorad->addChild(sprite3d); + } + addNewBillBoradWithCoords(Vec3(20,5,0)); addNewBillBoradWithCoords(Vec3(60,5,0)); addNewBillBoradWithCoords(Vec3(100,5,0)); @@ -115,8 +133,8 @@ BillBoardTest::BillBoardTest() addNewAniBillBoradWithCoords(Vec3(-100,0,0)); addNewAniBillBoradWithCoords(Vec3(-140,0,0)); addNewAniBillBoradWithCoords(Vec3(-180,0,0)); - _camera->setPosition3D(Vec3(0, 130, 230)); - _camera->lookAt(Vec3(0,0,100), Vec3(0,1,0)); + _camera->setPosition3D(Vec3(0, 100, 230)); + _camera->lookAt(Vec3(0,0,0), Vec3(0,1,0)); TTFConfig ttfConfig("fonts/arial.ttf", 16); auto label1 = Label::createWithTTF(ttfConfig,"rotate+"); diff --git a/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.cpp b/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.cpp index a1d8245141..c7dcae167c 100644 --- a/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.cpp +++ b/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.cpp @@ -157,7 +157,7 @@ static Layer* backSpriteTestAction() int total = MAX_LAYER; if( sceneIdx < 0 ) sceneIdx += total; - + auto layer = (createFunctions[sceneIdx])(); return layer; } @@ -179,6 +179,10 @@ Camera3DTestDemo::Camera3DTestDemo(void) , _camera(nullptr) , _incRot(nullptr) , _decRot(nullptr) +,_bZoomOut(false) +,_bZoomIn(false) +,_bRotateLeft(false) +,_bRotateRight(false) { } Camera3DTestDemo::~Camera3DTestDemo(void) @@ -204,7 +208,7 @@ void Camera3DTestDemo::scaleCameraCallback(Ref* sender,float value) cameraPos+= cameraPos.getNormalized()*value; _camera->setPosition3D(cameraPos); } -} +} void Camera3DTestDemo::rotateCameraCallback(Ref* sender,float value) { if(_cameraType==CameraType::FreeCamera || _cameraType==CameraType::FirstCamera) @@ -223,10 +227,13 @@ void Camera3DTestDemo::SwitchViewCallback(Ref* sender, CameraType cameraType) _cameraType = cameraType; if(_cameraType==CameraType::FreeCamera) { - _camera->setPosition3D(Vec3(0, 130, 130) + _sprite3D->getPosition3D()); - _camera->lookAt(_sprite3D->getPosition3D(), Vec3(0,1,0)); - _incRot->setEnabled(true); - _decRot->setEnabled(true); + _camera->setPosition3D(Vec3(0, 130, 130) + _sprite3D->getPosition3D()); + _camera->lookAt(_sprite3D->getPosition3D(), Vec3(0,1,0)); + + _RotateRightlabel->setColor(Color3B::WHITE); + _RotateLeftlabel->setColor(Color3B::WHITE); + _ZoomInlabel->setColor(Color3B::WHITE); + _ZoomOutlabel->setColor(Color3B::WHITE); } else if(_cameraType==CameraType::FirstCamera) { @@ -235,15 +242,21 @@ void Camera3DTestDemo::SwitchViewCallback(Ref* sender, CameraType cameraType) newFaceDir.normalize(); _camera->setPosition3D(Vec3(0,35,0) + _sprite3D->getPosition3D()); _camera->lookAt(_sprite3D->getPosition3D() + newFaceDir*50, Vec3(0, 1, 0)); - _incRot->setEnabled(true); - _decRot->setEnabled(true); + + _RotateRightlabel->setColor(Color3B::WHITE); + _RotateLeftlabel->setColor(Color3B::WHITE); + _ZoomInlabel->setColor(Color3B::GRAY); + _ZoomOutlabel->setColor(Color3B::GRAY); } else if(_cameraType==CameraType::ThirdCamera) { _camera->setPosition3D(Vec3(0, 130, 130) + _sprite3D->getPosition3D()); _camera->lookAt(_sprite3D->getPosition3D(), Vec3(0,1,0)); - _incRot->setEnabled(false); - _decRot->setEnabled(false); + + _RotateRightlabel->setColor(Color3B::GRAY); + _RotateLeftlabel->setColor(Color3B::GRAY); + _ZoomInlabel->setColor(Color3B::WHITE); + _ZoomOutlabel->setColor(Color3B::WHITE); } } void Camera3DTestDemo::onEnter() @@ -260,34 +273,78 @@ void Camera3DTestDemo::onEnter() addChild(layer3D,0); _layer3D=layer3D; _curState=State_None; - addNewSpriteWithCoords( Vec3(0,0,0),"Sprite3DTest/girl.c3b",true,0.2,true); + addNewSpriteWithCoords( Vec3(0,0,0),"Sprite3DTest/girl.c3b",true,0.2f,true); TTFConfig ttfConfig("fonts/arial.ttf", 20); - auto label1 = Label::createWithTTF(ttfConfig,"zoom out"); - auto menuItem1 = MenuItemLabel::create(label1, CC_CALLBACK_1(Camera3DTestDemo::scaleCameraCallback,this,1)); - auto label2 = Label::createWithTTF(ttfConfig,"zoom in"); - auto menuItem2 = MenuItemLabel::create(label2, CC_CALLBACK_1(Camera3DTestDemo::scaleCameraCallback,this,-1)); - auto label3 = Label::createWithTTF(ttfConfig,"rotate+"); - auto menuItem3 = MenuItemLabel::create(label3, CC_CALLBACK_1(Camera3DTestDemo::rotateCameraCallback,this,10)); - _incRot = menuItem3; - auto label4 = Label::createWithTTF(ttfConfig,"rotate-"); - auto menuItem4 = MenuItemLabel::create(label4, CC_CALLBACK_1(Camera3DTestDemo::rotateCameraCallback,this,-10)); - _decRot = menuItem4; - auto label5 = Label::createWithTTF(ttfConfig,"free "); - auto menuItem5 = MenuItemLabel::create(label5, CC_CALLBACK_1(Camera3DTestDemo::SwitchViewCallback,this,CameraType::FreeCamera)); - auto label6 = Label::createWithTTF(ttfConfig,"third person"); - auto menuItem6 = MenuItemLabel::create(label6, CC_CALLBACK_1(Camera3DTestDemo::SwitchViewCallback,this,CameraType::ThirdCamera)); - auto label7 = Label::createWithTTF(ttfConfig,"first person"); - auto menuItem7 = MenuItemLabel::create(label7, CC_CALLBACK_1(Camera3DTestDemo::SwitchViewCallback,this,CameraType::FirstCamera)); - auto menu = Menu::create(menuItem1, menuItem2, menuItem3, menuItem4, menuItem5, menuItem6, menuItem7, nullptr); - + + auto containerForLabel1 = Node::create(); + _ZoomOutlabel = Label::createWithTTF(ttfConfig,"zoom out"); + _ZoomOutlabel->setPosition(s.width-50, VisibleRect::top().y-30); + containerForLabel1->addChild(_ZoomOutlabel); + addChild(containerForLabel1, 10); + + auto listener1 = EventListenerTouchOneByOne::create(); + listener1->setSwallowTouches(true); + + listener1->onTouchBegan = CC_CALLBACK_2(Camera3DTestDemo::onTouchesZoomOut, this); + listener1->onTouchEnded = CC_CALLBACK_2(Camera3DTestDemo::onTouchesZoomOutEnd, this); + + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener1, _ZoomOutlabel); + + auto containerForLabel2 = Node::create(); + _ZoomInlabel = Label::createWithTTF(ttfConfig,"zoom in"); + _ZoomInlabel->setPosition(s.width-50, VisibleRect::top().y-100); + containerForLabel2->addChild(_ZoomInlabel); + addChild(containerForLabel2, 10); + + auto listener2 = EventListenerTouchOneByOne::create(); + listener2->setSwallowTouches(true); + + listener2->onTouchBegan = CC_CALLBACK_2(Camera3DTestDemo::onTouchesZoomIn, this); + listener2->onTouchEnded = CC_CALLBACK_2(Camera3DTestDemo::onTouchesZoomInEnd, this); + + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener2, _ZoomInlabel); + + auto containerForLabel3 = Node::create(); + _RotateLeftlabel = Label::createWithTTF(ttfConfig,"rotate left"); + _RotateLeftlabel->setPosition(s.width-50, VisibleRect::top().y-170); + containerForLabel3->addChild(_RotateLeftlabel); + addChild(containerForLabel3, 10); + + auto listener3 = EventListenerTouchOneByOne::create(); + listener3->setSwallowTouches(true); + + listener3->onTouchBegan = CC_CALLBACK_2(Camera3DTestDemo::onTouchesRotateLeft, this); + listener3->onTouchEnded = CC_CALLBACK_2(Camera3DTestDemo::onTouchesRotateLeftEnd, this); + + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener3, _RotateLeftlabel); + + auto containerForLabel4 = Node::create(); + _RotateRightlabel = Label::createWithTTF(ttfConfig,"rotate right"); + _RotateRightlabel->setPosition(s.width-50, VisibleRect::top().y-240); + containerForLabel4->addChild(_RotateRightlabel); + addChild(containerForLabel4, 10); + + auto listener4 = EventListenerTouchOneByOne::create(); + listener4->setSwallowTouches(true); + + listener4->onTouchBegan = CC_CALLBACK_2(Camera3DTestDemo::onTouchesRotateRight, this); + listener4->onTouchEnded = CC_CALLBACK_2(Camera3DTestDemo::onTouchesRotateRightEnd, this); + + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener4, _RotateRightlabel); + + auto label1 = Label::createWithTTF(ttfConfig,"free "); + auto menuItem1 = MenuItemLabel::create(label1, CC_CALLBACK_1(Camera3DTestDemo::SwitchViewCallback,this,CameraType::FreeCamera)); + auto label2 = Label::createWithTTF(ttfConfig,"third person"); + auto menuItem2 = MenuItemLabel::create(label2, CC_CALLBACK_1(Camera3DTestDemo::SwitchViewCallback,this,CameraType::ThirdCamera)); + auto label3 = Label::createWithTTF(ttfConfig,"first person"); + auto menuItem3 = MenuItemLabel::create(label3, CC_CALLBACK_1(Camera3DTestDemo::SwitchViewCallback,this,CameraType::FirstCamera)); + auto menu = Menu::create(menuItem1, menuItem2, menuItem3, nullptr); + menu->setPosition(Vec2::ZERO); - menuItem1->setPosition(s.width-50, VisibleRect::top().y-50 ); - menuItem2->setPosition(s.width-50, VisibleRect::top().y-100); - menuItem3->setPosition(s.width-50, VisibleRect::top().y-150); - menuItem4->setPosition(s.width-50, VisibleRect::top().y-200); - menuItem5->setPosition(VisibleRect::left().x+100, VisibleRect::top().y-50); - menuItem6->setPosition(VisibleRect::left().x+100, VisibleRect::top().y -100); - menuItem7->setPosition(VisibleRect::left().x+100, VisibleRect::top().y -150); + + menuItem1->setPosition(VisibleRect::left().x+100, VisibleRect::top().y-50); + menuItem2->setPosition(VisibleRect::left().x+100, VisibleRect::top().y -100); + menuItem3->setPosition(VisibleRect::left().x+100, VisibleRect::top().y -150); addChild(menu, 0); schedule(CC_SCHEDULE_SELECTOR(Camera3DTestDemo::updateCamera), 0.0f); if (_camera == nullptr) @@ -327,7 +384,7 @@ void Camera3DTestDemo::restartCallback(Ref* sender) { auto s = new (std::nothrow) Camera3DTestScene(); s->addChild(restartSpriteTestAction()); - + Director::getInstance()->replaceScene(s); s->release(); } @@ -348,7 +405,7 @@ void Camera3DTestDemo::backCallback(Ref* sender) } void Camera3DTestDemo::addNewSpriteWithCoords(Vec3 p,std::string fileName,bool playAnimation,float scale,bool bindCamera) { - + auto sprite = Sprite3D::create(fileName); _layer3D->addChild(sprite); float globalZOrder=sprite->getGlobalZOrder(); @@ -368,7 +425,7 @@ void Camera3DTestDemo::addNewSpriteWithCoords(Vec3 p,std::string fileName,bool p _sprite3D=sprite; } sprite->setScale(scale); - + } void Camera3DTestDemo::onTouchesBegan(const std::vector& touches, cocos2d::Event *event) { @@ -376,7 +433,6 @@ void Camera3DTestDemo::onTouchesBegan(const std::vector& touches, cocos2 { auto touch = item; auto location = touch->getLocation(); - } } void Camera3DTestDemo::onTouchesMoved(const std::vector& touches, cocos2d::Event *event) @@ -388,19 +444,19 @@ void Camera3DTestDemo::onTouchesMoved(const std::vector& touches, cocos2 Point newPos = touch->getPreviousLocation()-location; if(_cameraType==CameraType::FreeCamera || _cameraType==CameraType::FirstCamera) { - Vec3 cameraDir; - Vec3 cameraRightDir; - _camera->getNodeToWorldTransform().getForwardVector(&cameraDir); - cameraDir.normalize(); - cameraDir.y=0; - _camera->getNodeToWorldTransform().getRightVector(&cameraRightDir); - cameraRightDir.normalize(); - cameraRightDir.y=0; - Vec3 cameraPos= _camera->getPosition3D(); - cameraPos+=cameraDir*newPos.y*0.1; - cameraPos+=cameraRightDir*newPos.x*0.1; + Vec3 cameraDir; + Vec3 cameraRightDir; + _camera->getNodeToWorldTransform().getForwardVector(&cameraDir); + cameraDir.normalize(); + cameraDir.y=0; + _camera->getNodeToWorldTransform().getRightVector(&cameraRightDir); + cameraRightDir.normalize(); + cameraRightDir.y=0; + Vec3 cameraPos= _camera->getPosition3D(); + cameraPos+=cameraDir*newPos.y*0.1f; + cameraPos+=cameraRightDir*newPos.x*0.1f; _camera->setPosition3D(cameraPos); - if(_sprite3D && _cameraType==CameraType::FirstCamera) + if(_sprite3D && _cameraType==CameraType::FirstCamera) { _sprite3D->setPosition3D(Vec3(_camera->getPositionX(),0,_camera->getPositionZ())); _targetPos=_sprite3D->getPosition3D(); @@ -468,7 +524,7 @@ void Camera3DTestDemo::onTouchesEnded(const std::vector& touches, cocos2 auto location = touch->getLocationInView(); if(_camera) { - if(_sprite3D && _cameraType==CameraType::ThirdCamera) + if(_sprite3D && _cameraType==CameraType::ThirdCamera && _bZoomOut == false && _bZoomIn == false && _bRotateLeft == false && _bRotateRight == false) { Vec3 nearP(location.x, location.y, -1.0f), farP(location.x, location.y, 1.0f); @@ -483,6 +539,16 @@ void Camera3DTestDemo::onTouchesEnded(const std::vector& touches, cocos2 float ndo = Vec3::dot(Vec3(0,1,0),nearP); dist= (0 - ndo) / ndd; Vec3 p = nearP + dist * dir; + + if( p.x > 100) + p.x = 100; + if( p.x < -100) + p.x = -100; + if( p.z > 100) + p.z = 100; + if( p.z < -100) + p.z = -100; + _targetPos=p; } } @@ -504,7 +570,7 @@ void Camera3DTestDemo::updateCamera(float fDelta) if(isState(_curState,State_Rotate)) { Vec3 curPos = _sprite3D->getPosition3D(); - + Vec3 newFaceDir = _targetPos - curPos; newFaceDir.y = 0; newFaceDir.normalize(); @@ -520,17 +586,17 @@ void Camera3DTestDemo::updateCamera(float fDelta) mat.m[1] = right.y; mat.m[2] = right.z; mat.m[3] = 0.0f; - + mat.m[4] = up.x; mat.m[5] = up.y; mat.m[6] = up.z; mat.m[7] = 0.0f; - + mat.m[8] = newFaceDir.x; mat.m[9] = newFaceDir.y; mat.m[10] = newFaceDir.z; mat.m[11] = 0.0f; - + mat.m[12] = pos.x; mat.m[13] = pos.y; mat.m[14] = pos.z; @@ -539,12 +605,156 @@ void Camera3DTestDemo::updateCamera(float fDelta) } } } + if(_bZoomOut == true) + { + if(_camera) + { + if(_cameraType == CameraType::ThirdCamera) + { + Vec3 lookDir = _camera->getPosition3D() - _sprite3D->getPosition3D(); + Vec3 cameraPos = _camera->getPosition3D(); + if(lookDir.length() <= 300) + { + cameraPos += lookDir.getNormalized(); + _camera->setPosition3D(cameraPos); + } + } + else if(_cameraType == CameraType::FreeCamera) + { + Vec3 cameraPos = _camera->getPosition3D(); + if(cameraPos.length() <= 300) + { + cameraPos += cameraPos.getNormalized(); + _camera->setPosition3D(cameraPos); + } + } + } + } + if(_bZoomIn == true) + { + if(_camera) + { + if(_cameraType == CameraType::ThirdCamera) + { + Vec3 lookDir = _camera->getPosition3D() - _sprite3D->getPosition3D(); + Vec3 cameraPos = _camera->getPosition3D(); + if(lookDir.length() >= 50) + { + cameraPos -= lookDir.getNormalized(); + _camera->setPosition3D(cameraPos); + } + } + else if(_cameraType == CameraType::FreeCamera) + { + Vec3 cameraPos = _camera->getPosition3D(); + if(cameraPos.length() >= 50) + { + cameraPos -= cameraPos.getNormalized(); + _camera->setPosition3D(cameraPos); + } + } + } + } + if(_bRotateLeft == true) + { + if(_cameraType==CameraType::FreeCamera || _cameraType==CameraType::FirstCamera) + { + Vec3 rotation3D= _camera->getRotation3D(); + rotation3D.y+= 1; + _camera->setRotation3D(rotation3D); + } + } + if(_bRotateRight == true) + { + if(_cameraType==CameraType::FreeCamera || _cameraType==CameraType::FirstCamera) + { + Vec3 rotation3D= _camera->getRotation3D(); + rotation3D.y-= 1; + _camera->setRotation3D(rotation3D); + } + } } } bool Camera3DTestDemo::isState(unsigned int state,unsigned int bit) const { return (state & bit) == bit; } +bool Camera3DTestDemo::onTouchesZoomOut(Touch* touch, Event* event) +{ + auto target = static_cast(event->getCurrentTarget()); + + Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation()); + Size s = target->getContentSize(); + Rect rect = Rect(0, 0, s.width, s.height); + + if (rect.containsPoint(locationInNode)) + { + _bZoomOut = true; + return true; + } + return false; +} +void Camera3DTestDemo::onTouchesZoomOutEnd(Touch* touch, Event* event) +{ + _bZoomOut = false; +} +bool Camera3DTestDemo::onTouchesZoomIn(Touch* touch, Event* event) +{ + auto target = static_cast(event->getCurrentTarget()); + + Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation()); + Size s = target->getContentSize(); + Rect rect = Rect(0, 0, s.width, s.height); + + if (rect.containsPoint(locationInNode)) + { + _bZoomIn = true; + return true; + } + return false; +} +void Camera3DTestDemo::onTouchesZoomInEnd(Touch* touch, Event* event) +{ + _bZoomIn = false; +} +bool Camera3DTestDemo::onTouchesRotateLeft(Touch* touch, Event* event) +{ + auto target = static_cast(event->getCurrentTarget()); + + Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation()); + Size s = target->getContentSize(); + Rect rect = Rect(0, 0, s.width, s.height); + + if (rect.containsPoint(locationInNode)) + { + _bRotateLeft = true; + return true; + } + return false; +} +void Camera3DTestDemo::onTouchesRotateLeftEnd(Touch* touch, Event* event) +{ + _bRotateLeft = false; +} +bool Camera3DTestDemo::onTouchesRotateRight(Touch* touch, Event* event) +{ + auto target = static_cast(event->getCurrentTarget()); + + Vec2 locationInNode = target->convertToNodeSpace(touch->getLocation()); + Size s = target->getContentSize(); + Rect rect = Rect(0, 0, s.width, s.height); + + if (rect.containsPoint(locationInNode)) + { + _bRotateRight = true; + return true; + } + return false; +} +void Camera3DTestDemo::onTouchesRotateRightEnd(Touch* touch, Event* event) +{ + _bRotateRight = false; +} void Camera3DTestScene::runThisTest() { auto layer = nextSpriteTestAction(); diff --git a/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.h b/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.h index 6c5a40099a..633bfd3155 100644 --- a/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.h +++ b/tests/cpp-tests/Classes/Camera3DTest/Camera3DTest.h @@ -56,7 +56,7 @@ public: CREATE_FUNC(Camera3DTestDemo); Camera3DTestDemo(void); virtual ~Camera3DTestDemo(void); - + void restartCallback(Ref* sender); void nextCallback(Ref* sender); void backCallback(Ref* sender); @@ -77,6 +77,16 @@ public: void updateState(float elapsedTime); bool isState(unsigned int state,unsigned int bit) const; void reachEndCallBack(); + + bool onTouchesZoomOut(Touch* touch, Event* event); + void onTouchesZoomOutEnd(Touch* touch, Event* event); + bool onTouchesZoomIn(Touch* touch, Event* event); + void onTouchesZoomInEnd(Touch* touch, Event* event); + + bool onTouchesRotateLeft(Touch* touch, Event* event); + void onTouchesRotateLeftEnd(Touch* touch, Event* event); + bool onTouchesRotateRight(Touch* touch, Event* event); + void onTouchesRotateRightEnd(Touch* touch, Event* event); protected: std::string _title; Layer* _layer3D; @@ -88,6 +98,14 @@ protected: unsigned int _curState; Camera* _camera; MoveTo* _moveAction; + bool _bZoomOut; + bool _bZoomIn; + bool _bRotateLeft; + bool _bRotateRight; + Label* _RotateRightlabel; + Label* _RotateLeftlabel; + Label* _ZoomInlabel; + Label* _ZoomOutlabel; }; class Camera3DTestScene : public TestScene { diff --git a/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.cpp b/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.cpp index 89618bef6b..0f7054be65 100644 --- a/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.cpp +++ b/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.cpp @@ -33,6 +33,7 @@ static std::function createFunctions[] = { CL(RawStencilBufferTest5), CL(RawStencilBufferTest6), CL(ClippingToRenderTextureTest), + CL(ClippingRectangleNodeTest), }; static int sceneIdx=-1; @@ -1092,11 +1093,37 @@ void ClippingToRenderTextureTest::reproduceBug() rt->setPosition(visibleSize.width/2, visibleSize.height/2); this->addChild(rt); - rt->beginWithClear(0.3, 0, 0, 1); + rt->beginWithClear(0.3f, 0, 0, 1); container->visit(); rt->end(); } +// ClippingRectangleNodeDemo + +std::string ClippingRectangleNodeTest::title() const +{ + return "ClippingRectangleNode Test"; +} + +std::string ClippingRectangleNodeTest::subtitle() const +{ + return "more effectively"; +} + +void ClippingRectangleNodeTest::setup() +{ + auto clipper = ClippingRectangleNode::create(); + clipper->setClippingRegion(Rect(this->getContentSize().width / 2 - 100, this->getContentSize().height / 2 - 100, 200, 200)); + clipper->setTag( kTagClipperNode ); + this->addChild(clipper); + + auto content = Sprite::create(s_back2); + content->setTag( kTagContentNode ); + content->setAnchorPoint( Vec2(0.5, 0.5) ); + content->setPosition(this->getContentSize().width / 2, this->getContentSize().height / 2); + clipper->addChild(content); +} + // main entry point diff --git a/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.h b/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.h index 4b9faa13cb..535259b13a 100644 --- a/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.h +++ b/tests/cpp-tests/Classes/ClippingNodeTest/ClippingNodeTest.h @@ -244,6 +244,16 @@ public: virtual std::string subtitle() const override; }; +class ClippingRectangleNodeTest : public BaseClippingNodeTest +{ +public: + CREATE_FUNC(ClippingRectangleNodeTest); + + virtual std::string title() const override; + virtual std::string subtitle() const override; + virtual void setup(); +}; + class ClippingNodeTestScene : public TestScene { diff --git a/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.h b/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.h index 97963f223d..75bf0e2cfe 100644 --- a/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.h +++ b/tests/cpp-tests/Classes/ConsoleTest/ConsoleTest.h @@ -59,9 +59,7 @@ protected: ConsoleCustomCommand(); virtual ~ConsoleCustomCommand(); -#if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) cocos2d::Console *_console; -#endif private: CC_DISALLOW_COPY_AND_ASSIGN(ConsoleCustomCommand); diff --git a/tests/cpp-tests/Classes/CurrentLanguageTest/CurrentLanguageTest.cpp b/tests/cpp-tests/Classes/CurrentLanguageTest/CurrentLanguageTest.cpp index 0c4400a66d..cd27bef5c7 100644 --- a/tests/cpp-tests/Classes/CurrentLanguageTest/CurrentLanguageTest.cpp +++ b/tests/cpp-tests/Classes/CurrentLanguageTest/CurrentLanguageTest.cpp @@ -8,6 +8,13 @@ CurrentLanguageTest::CurrentLanguageTest() auto labelLanguage = Label::createWithTTF("", "fonts/arial.ttf", 20); labelLanguage->setPosition(VisibleRect::center()); + + auto labelLanguageCode = Label::createWithTTF("", "fonts/arial.ttf", 20); + labelLanguageCode->setPosition(VisibleRect::center().x, VisibleRect::center().y-50); + + const char* currentLanguageCode = Application::getInstance()->getCurrentLanguageCode(); + + labelLanguageCode->setString(currentLanguageCode); LanguageType currentLanguageType = Application::getInstance()->getCurrentLanguage(); switch (currentLanguageType) @@ -63,6 +70,7 @@ CurrentLanguageTest::CurrentLanguageTest() } addChild(labelLanguage); + addChild(labelLanguageCode); } void CurrentLanguageTestScene::runThisTest() diff --git a/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.cpp b/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.cpp new file mode 100644 index 0000000000..b1044ccb7c --- /dev/null +++ b/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.cpp @@ -0,0 +1,212 @@ +#include "AssetsManagerExTest.h" +#include "../../testResource.h" +#include "cocos2d.h" + +const char* sceneManifests[] = {"AMTestScene1/project.manifest", "AMTestScene2/project.manifest", "AMTestScene3/project.manifest"}; +const char* storagePaths[] = {"CppTests/AssetsManagerExTest/scene1/", "CppTests/AssetsManagerExTest/scene2/", "CppTests/AssetsManagerExTest/scene3"}; +const char* backgroundPaths[] = {"Images/background1.jpg", "Images/background2.jpg", "Images/background3.png"}; + +AssetsManagerExTestLayer::AssetsManagerExTestLayer(const std::string& spritePath) +: _spritePath(spritePath) +{ +} + +AssetsManagerExTestLayer::~AssetsManagerExTestLayer(void) +{ +} + +std::string AssetsManagerExTestLayer::title() const +{ + return "AssetsManagerExTest"; +} + +void AssetsManagerExTestLayer::onEnter() +{ + BaseTest::onEnter(); + _background = Sprite::create(_spritePath); + if (_background) + { + addChild(_background, 1); + _background->setPosition( VisibleRect::center() ); + } +} + +void AssetsManagerExTestLayer::restartCallback(Ref* sender) +{ +} + +void AssetsManagerExTestLayer::nextCallback(Ref* sender) +{ + if (AssetsManagerExLoaderScene::currentScene < 2) + { + AssetsManagerExLoaderScene::currentScene++; + } + else + { + AssetsManagerExLoaderScene::currentScene = 0; + } + auto scene = new AssetsManagerExLoaderScene(); + scene->runThisTest(); + scene->release(); +} + +void AssetsManagerExTestLayer::backCallback(Ref* sender) +{ + if (AssetsManagerExLoaderScene::currentScene > 0) + { + AssetsManagerExLoaderScene::currentScene--; + } + else AssetsManagerExLoaderScene::currentScene = 2; + auto scene = new AssetsManagerExLoaderScene(); + scene->runThisTest(); + scene->release(); +} + + +AssetsManagerExTestScene::AssetsManagerExTestScene(std::string background) +{ + auto layer = new AssetsManagerExTestLayer(background); + addChild(layer); + layer->release(); +} + +void AssetsManagerExTestScene::runThisTest() +{ +} + +int AssetsManagerExLoaderScene::currentScene = 0; +AssetsManagerExLoaderScene::AssetsManagerExLoaderScene() +: _progress(nullptr) +, _amListener(nullptr) +{ +} + +void AssetsManagerExLoaderScene::runThisTest() +{ + int currentId = currentScene; + std::string manifestPath = sceneManifests[currentId], storagePath = FileUtils::getInstance()->getWritablePath() + storagePaths[currentId]; + CCLOG("Storage path for this test : %s", storagePath.c_str()); + + Sprite *sprite = Sprite::create("Images/Icon.png"); + auto layer = Layer::create(); + addChild(layer); + layer->addChild(sprite); + sprite->setPosition( VisibleRect::center() ); + + TTFConfig config("fonts/tahoma.ttf", 30); + _progress = Label::createWithTTF(config, "0%", TextHAlignment::CENTER); + _progress->setPosition( Vec2(VisibleRect::center().x, VisibleRect::center().y + 50) ); + layer->addChild(_progress); + + _am = AssetsManagerEx::create(manifestPath, storagePath); + _am->retain(); + + if (!_am->getLocalManifest()->isLoaded()) + { + CCLOG("Fail to update assets, step skipped."); + AssetsManagerExTestScene *scene = new AssetsManagerExTestScene(backgroundPaths[currentId]); + Director::getInstance()->replaceScene(scene); + scene->release(); + } + else + { + _amListener = cocos2d::extension::EventListenerAssetsManagerEx::create(_am, [currentId, this](EventAssetsManagerEx* event){ + static int failCount = 0; + AssetsManagerExTestScene *scene; + switch (event->getEventCode()) + { + case EventAssetsManagerEx::EventCode::ERROR_NO_LOCAL_MANIFEST: + { + CCLOG("No local manifest file found, skip assets update."); + scene = new AssetsManagerExTestScene(backgroundPaths[currentId]); + Director::getInstance()->replaceScene(scene); + scene->release(); + } + break; + case EventAssetsManagerEx::EventCode::UPDATE_PROGRESSION: + { + std::string assetId = event->getAssetId(); + float percent = event->getPercent(); + std::string str; + if (assetId == AssetsManagerEx::VERSION_ID) + { + str = StringUtils::format("Version file: %.2f", percent) + "%"; + } + else if (assetId == AssetsManagerEx::MANIFEST_ID) + { + str = StringUtils::format("Manifest file: %.2f", percent) + "%"; + } + else + { + str = StringUtils::format("%.2f", percent) + "%"; + CCLOG("%.2f Percent", percent); + } + if (this->_progress != nullptr) + this->_progress->setString(str); + } + break; + case EventAssetsManagerEx::EventCode::ERROR_DOWNLOAD_MANIFEST: + case EventAssetsManagerEx::EventCode::ERROR_PARSE_MANIFEST: + { + CCLOG("Fail to download manifest file, update skipped."); + scene = new AssetsManagerExTestScene(backgroundPaths[currentId]); + Director::getInstance()->replaceScene(scene); + scene->release(); + } + break; + case EventAssetsManagerEx::EventCode::ALREADY_UP_TO_DATE: + case EventAssetsManagerEx::EventCode::UPDATE_FINISHED: + { + CCLOG("Update finished. %s", event->getMessage().c_str()); + scene = new AssetsManagerExTestScene(backgroundPaths[currentId]); + Director::getInstance()->replaceScene(scene); + scene->release(); + } + break; + case EventAssetsManagerEx::EventCode::UPDATE_FAILED: + { + CCLOG("Update failed. %s", event->getMessage().c_str()); + + failCount ++; + if (failCount < 5) + { + _am->downloadFailedAssets(); + } + else + { + CCLOG("Reach maximum fail count, exit update process"); + failCount = 0; + scene = new AssetsManagerExTestScene(backgroundPaths[currentId]); + Director::getInstance()->replaceScene(scene); + scene->release(); + } + } + break; + case EventAssetsManagerEx::EventCode::ERROR_UPDATING: + { + CCLOG("Asset %s : %s", event->getAssetId().c_str(), event->getMessage().c_str()); + } + break; + case EventAssetsManagerEx::EventCode::ERROR_DECOMPRESS: + { + CCLOG("%s", event->getMessage().c_str()); + } + break; + default: + break; + } + }); + Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(_amListener, 1); + + _am->update(); + + Director::getInstance()->replaceScene(this); + } +} + +void AssetsManagerExLoaderScene::onExit() +{ + _eventDispatcher->removeEventListener(_amListener); + _am->release(); + Scene::onExit(); +} diff --git a/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.h b/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.h new file mode 100644 index 0000000000..a9c78b3162 --- /dev/null +++ b/tests/cpp-tests/Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.h @@ -0,0 +1,53 @@ +#ifndef __AssetsManagerEx_Test_H__ +#define __AssetsManagerEx_Test_H__ + +#include "extensions/cocos-ext.h" +#include "../../testBasic.h" +#include "../../BaseTest.h" + +USING_NS_CC; +USING_NS_CC_EXT; + +class AssetsManagerExTestLayer : public BaseTest +{ +public: + AssetsManagerExTestLayer(const std::string& spritePath); + ~AssetsManagerExTestLayer(void); + + virtual std::string title() const; + void onEnter(); + + virtual void restartCallback(Ref* sender); + virtual void nextCallback(Ref* sender); + virtual void backCallback(Ref* sender); + +private: + Sprite *_background; + std::string _spritePath; +}; + +class AssetsManagerExTestScene : public TestScene +{ +public: + AssetsManagerExTestScene(std::string background); + virtual void runThisTest() override; +}; + +class AssetsManagerExLoaderScene : public TestScene +{ +public: + AssetsManagerExLoaderScene(); + + virtual void runThisTest() override; + + virtual void onExit() override; + + static int currentScene; + +private: + AssetsManagerEx *_am; + Label *_progress; + EventListenerAssetsManagerEx* _amListener; +}; + +#endif /* defined(__AssetsManagerEx_Test_H__) */ diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioActionTimelineTest/ActionTimelineTestScene.cpp b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioActionTimelineTest/ActionTimelineTestScene.cpp index 15a51110bc..07cf7c590f 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioActionTimelineTest/ActionTimelineTestScene.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioActionTimelineTest/ActionTimelineTestScene.cpp @@ -150,7 +150,7 @@ void ActionTimelineTestLayer::onExit() backItem = restartItem = nextItem = nullptr; ActionTimelineCache::getInstance()->purge(); - NodeReader::getInstance()->purge(); + CSLoader::getInstance()->purge(); Layer::onExit(); } @@ -196,8 +196,8 @@ void TestActionTimeline::onEnter() SpriteFrameCache::getInstance()->addSpriteFramesWithFile("armature/Cowboy0.plist", "armature/Cowboy0.png"); - Node* node = NodeReader::getInstance()->createNode("ActionTimeline/boy_1.ExportJson"); - ActionTimeline* action = ActionTimelineCache::getInstance()->createAction("ActionTimeline/boy_1.ExportJson"); + Node* node = CSLoader::createNode("ActionTimeline/boy_1.csb"); + ActionTimeline* action = CSLoader::createTimeline("ActionTimeline/boy_1.csb"); node->runAction(action); action->gotoFrameAndPlay(0, 60, true); @@ -222,8 +222,8 @@ void TestChangePlaySection::onEnter() SpriteFrameCache::getInstance()->addSpriteFramesWithFile("armature/Cowboy0.plist", "armature/Cowboy0.png"); - Node* node = NodeReader::getInstance()->createNode("ActionTimeline/boy_1.ExportJson"); - action = ActionTimelineCache::getInstance()->createAction("ActionTimeline/boy_1.ExportJson"); + Node* node = CSLoader::createNode("ActionTimeline/boy_1.csb"); + action = CSLoader::createTimeline("ActionTimeline/boy_1.csb"); node->runAction(action); action->gotoFrameAndPlay(70, action->getDuration(), true); @@ -260,8 +260,8 @@ void TestTimelineFrameEvent::onEnter() SpriteFrameCache::getInstance()->addSpriteFramesWithFile("armature/Cowboy0.plist", "armature/Cowboy0.png"); - Node* node = NodeReader::getInstance()->createNode("ActionTimeline/boy_1.ExportJson"); - ActionTimeline* action = ActionTimelineCache::getInstance()->createAction("ActionTimeline/boy_1.ExportJson"); + Node* node = CSLoader::createNode("ActionTimeline/boy_1.csb"); + ActionTimeline* action = CSLoader::createTimeline("ActionTimeline/boy_1.csb"); node->runAction(action); action->gotoFrameAndPlay(0, 60, true); @@ -306,8 +306,8 @@ void TestTimelinePerformance::onEnter() for (int i = 0; i< 100; i++) { - Node* node = NodeReader::getInstance()->createNode("ActionTimeline/boy_1.ExportJson"); - ActionTimeline* action = ActionTimelineCache::getInstance()->createAction("ActionTimeline/boy_1.ExportJson"); + Node* node = CSLoader::createNode("ActionTimeline/boy_1.csb"); + ActionTimeline* action = CSLoader::createTimeline("ActionTimeline/boy_1.csb"); node->runAction(action); action->gotoFrameAndPlay(70, action->getDuration(), true); diff --git a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/SceneEditorTest.cpp b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/SceneEditorTest.cpp index 22fdccf095..5d4cc3ba9a 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/SceneEditorTest.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/CocoStudioSceneTest/SceneEditorTest.cpp @@ -214,6 +214,7 @@ void SceneEditorTestLayer::changeLoadTypeCallback(cocos2d::Ref *pSender) if(_rootNode != nullptr) { + ActionManagerEx::getInstance()->releaseActions(); this->removeChild(_rootNode); _rootNode = SceneReader::getInstance()->createNodeWithSceneFile(_filePath.c_str()); if (_rootNode == nullptr) diff --git a/tests/cpp-tests/Classes/ExtensionsTest/ExtensionsTest.cpp b/tests/cpp-tests/Classes/ExtensionsTest/ExtensionsTest.cpp index 10d31a2900..8f060c4a96 100644 --- a/tests/cpp-tests/Classes/ExtensionsTest/ExtensionsTest.cpp +++ b/tests/cpp-tests/Classes/ExtensionsTest/ExtensionsTest.cpp @@ -1,9 +1,10 @@ #include "ExtensionsTest.h" #include "../testResource.h" +#include "AssetsManagerExTest/AssetsManagerExTest.h" #include "NotificationCenterTest/NotificationCenterTest.h" #include "ControlExtensionTest/CCControlSceneManager.h" #include "CocosBuilderTest/CocosBuilderTest.h" -#if (CC_TARGET_PLATFORM != CC_PLATFORM_EMSCRIPTEN) && (CC_TARGET_PLATFORM != CC_PLATFORM_NACL) && (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) +#if (CC_TARGET_PLATFORM != CC_PLATFORM_EMSCRIPTEN) && (CC_TARGET_PLATFORM != CC_PLATFORM_NACL) #include "NetworkTest/HttpClientTest.h" #endif #include "TableViewTest/TableViewTestScene.h" @@ -13,7 +14,7 @@ #include "CocoStudioComponentsTest/ComponentsTestScene.h" #include "CocoStudioSceneTest/SceneEditorTest.h" -#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) || (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) || (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) || (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) || (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) #include "NetworkTest/WebSocketTest.h" #include "NetworkTest/SocketIOTest.h" #endif @@ -29,6 +30,10 @@ static struct { const char *name; std::function callback; } g_extensionsTests[] = { + { "AssetsManagerExTest", [](Ref* sender) { + AssetsManagerExLoaderScene *scene = new AssetsManagerExLoaderScene(); + scene->runThisTest(); + } }, { "NotificationCenterTest", [](Ref* sender) { runNotificationCenterTest(); } }, { "CCControlButtonTest", [](Ref *sender){ @@ -44,11 +49,11 @@ static struct { scene->release(); } }}, -#if (CC_TARGET_PLATFORM != CC_PLATFORM_EMSCRIPTEN) && (CC_TARGET_PLATFORM != CC_PLATFORM_NACL) && (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) +#if (CC_TARGET_PLATFORM != CC_PLATFORM_EMSCRIPTEN) && (CC_TARGET_PLATFORM != CC_PLATFORM_NACL) { "HttpClientTest", [](Ref *sender){ runHttpClientTest();} }, #endif -#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) || (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) || (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) || (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) || (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) { "WebSocketTest", [](Ref *sender){ runWebSocketTest();} }, { "SocketIOTest", [](Ref *sender){ runSocketIOTest();} diff --git a/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.cpp b/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.cpp index 719007e2ca..c1732bcc47 100644 --- a/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.cpp +++ b/tests/cpp-tests/Classes/NewRendererTest/NewRendererTest.cpp @@ -535,13 +535,16 @@ VBOFullTest::VBOFullTest() { Size s = Director::getInstance()->getWinSize(); Node* parent = Node::create(); - parent->setPosition(s.width/2, s.height/2); + parent->setPosition(0,0); addChild(parent); - for (int i=0; isetPosition(Vec2(0,0)); + sprite->setScale(0.1, 0.1); + float x = ((float)std::rand()) /RAND_MAX; + float y = ((float)std::rand()) /RAND_MAX; + sprite->setPosition(Vec2(x * s.width, y * s.height)); parent->addChild(sprite); } } diff --git a/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp b/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp index 780abace13..262d97c73b 100644 --- a/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp +++ b/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.cpp @@ -34,6 +34,7 @@ namespace ShaderTest2 static std::function createFunctions[] = { CL(EffectSpriteTest), + CL(EffectSpriteLamp), }; static unsigned int TEST_CASE_COUNT = sizeof(ShaderTest2::createFunctions) / sizeof(ShaderTest2::createFunctions[0]); @@ -433,6 +434,77 @@ protected: } }; +class EffectNormalMapped : public Effect +{ +public: + CREATE_FUNC(EffectNormalMapped); + static EffectNormalMapped* create(const std::string&normalMapFileName) + { + EffectNormalMapped *normalMappedSprite = new (std::nothrow) EffectNormalMapped(); + if (normalMappedSprite && normalMappedSprite->init() && normalMappedSprite->initNormalMap(normalMapFileName)) + { + + normalMappedSprite->autorelease(); + return normalMappedSprite; + } + CC_SAFE_DELETE(normalMappedSprite); + return nullptr; + } + void setKBump(float value); + void setLightPos(const Vec3& pos); + void setLightColor(const Color4F& color); + float getKBump()const{return _kBump;} +protected: + bool init(); + bool initNormalMap(const std::string&normalMapFileName); + virtual void setTarget(EffectSprite* sprite) override; + EffectSprite* _sprite; + Vec3 _lightPos; + Color4F _lightColor; + float _kBump; +}; + +bool EffectNormalMapped::init() +{ + initGLProgramState("Shaders3D/Normal.frag"); + _kBump = 2; + return true; +} +bool EffectNormalMapped::initNormalMap(const std::string&normalMapFileName) +{ + auto normalMapTextrue = TextureCache::getInstance()->addImage(normalMapFileName.c_str()); + getGLProgramState()->setUniformTexture("u_normalMap", normalMapTextrue); + return true; +} +void EffectNormalMapped::setTarget(EffectSprite* sprite) +{ + _sprite = sprite; + getGLProgramState()->setUniformFloat("u_kBump", _kBump); + getGLProgramState()->setUniformVec2("u_contentSize", Vec2(sprite->getContentSize().width,sprite->getContentSize().height)); +} + +void EffectNormalMapped::setKBump(float value) +{ + _kBump = value; + auto glProgramState = getGLProgramState(); + if(glProgramState) glProgramState->setUniformFloat("u_kBump", _kBump); +} + +void EffectNormalMapped::setLightPos(const Vec3& pos) +{ + _lightPos = pos; + auto glProgramState = getGLProgramState(); + if(glProgramState) glProgramState->setUniformVec4("u_lightPosInLocalSpace", Vec4(_lightPos.x,_lightPos.y,_lightPos.z,1)); + +} + +void EffectNormalMapped::setLightColor(const Color4F& color) +{ + _lightColor = color; + auto glProgramState = getGLProgramState(); + if(glProgramState) getGLProgramState()->setUniformVec3("u_diffuseL", Vec3(_lightColor.r,_lightColor.g,_lightColor.b)); + +} EffectSpriteTest::EffectSpriteTest() { @@ -495,3 +567,79 @@ EffectSpriteTest::EffectSpriteTest() } } +EffectSpriteLamp::EffectSpriteLamp() +{ + if (ShaderTestDemo2::init()) { + + auto s = Director::getInstance()->getWinSize(); + _sprite = EffectSprite::create("Images/elephant1_Diffuse.png"); + //auto contentSize = _sprite->getContentSize(); + _sprite->setPosition(Vec2(s.width/2, s.height/2)); + addChild(_sprite); + + auto lampEffect = EffectNormalMapped::create("Images/elephant1_Normal.png"); + + Vec3 pos(150,150, 50); + _lightSprite = Sprite::create("Images/ball.png"); + this->addChild(_lightSprite); + _lightSprite->setPosition(Vec2(pos.x, s.height- pos.y)); + Mat4 mat = _sprite->getNodeToWorldTransform(); + Point lightPosInLocalSpace=PointApplyAffineTransform(Vec2(pos.x, pos.y),_sprite->worldToNodeTransform()); + lampEffect->setLightColor(Color4F(1,1,1,1)); + lampEffect->setLightPos(Vec3(lightPosInLocalSpace.x, lightPosInLocalSpace.y, 50)); + lampEffect->setKBump(2); + _sprite->setEffect(lampEffect); + _effect = lampEffect; + auto listerner = EventListenerTouchAllAtOnce::create(); + listerner->onTouchesBegan = CC_CALLBACK_2(EffectSpriteLamp::onTouchesBegan, this); + listerner->onTouchesMoved = CC_CALLBACK_2(EffectSpriteLamp::onTouchesMoved, this); + listerner->onTouchesEnded = CC_CALLBACK_2(EffectSpriteLamp::onTouchesEnded, this); + _eventDispatcher->addEventListenerWithSceneGraphPriority(listerner, this); + } +} + + +void EffectSpriteLamp::onTouchesBegan(const std::vector& touches, Event *unused_event) +{ + for ( auto &item: touches ) + { + auto touch = item; + auto s = Director::getInstance()->getWinSize(); + Point loc_winSpace = touch->getLocationInView(); + _lightSprite->setPosition(Vec2( loc_winSpace.x, s.height - loc_winSpace.y)); + Vec3 pos(loc_winSpace.x,loc_winSpace.y, 50); + Mat4 mat = _sprite->getNodeToWorldTransform(); + Point lightPosInLocalSpace=PointApplyAffineTransform(Vec2(pos.x, pos.y),_sprite->worldToNodeTransform()); + ((EffectNormalMapped*)_effect)->setLightPos(Vec3(lightPosInLocalSpace.x, lightPosInLocalSpace.y, 50)); + } +} + +void EffectSpriteLamp::onTouchesMoved(const std::vector& touches, Event *unused_event) +{ + for ( auto &item: touches ) + { + auto touch = item; + auto s = Director::getInstance()->getWinSize(); + Point loc_winSpace = touch->getLocationInView(); + _lightSprite->setPosition(Vec2( loc_winSpace.x, s.height - loc_winSpace.y)); + Vec3 pos(loc_winSpace.x,loc_winSpace.y, 50); + Mat4 mat = _sprite->getNodeToWorldTransform(); + Point lightPosInLocalSpace=PointApplyAffineTransform(Vec2(pos.x, pos.y),_sprite->worldToNodeTransform()); + ((EffectNormalMapped*)_effect)->setLightPos(Vec3(lightPosInLocalSpace.x, lightPosInLocalSpace.y, 50)); + } +} + +void EffectSpriteLamp::onTouchesEnded(const std::vector& touches, Event *unused_event) +{ + for ( auto &item: touches ) + { + auto touch = item; + auto s = Director::getInstance()->getWinSize(); + Point loc_winSpace = touch->getLocationInView(); + _lightSprite->setPosition(Vec2( loc_winSpace.x, s.height - loc_winSpace.y)); + Vec3 pos(loc_winSpace.x,loc_winSpace.y, 50); + Mat4 mat = _sprite->getNodeToWorldTransform(); + Point lightPosInLocalSpace=PointApplyAffineTransform(Vec2(pos.x, pos.y),_sprite->worldToNodeTransform()); + ((EffectNormalMapped*)_effect)->setLightPos(Vec3(lightPosInLocalSpace.x, lightPosInLocalSpace.y, 50)); + } +} diff --git a/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.h b/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.h index 707d1cb80b..162ab11a44 100644 --- a/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.h +++ b/tests/cpp-tests/Classes/ShaderTest/ShaderTest2.h @@ -59,5 +59,21 @@ protected: EffectSprite *_sprite; }; +class EffectSpriteLamp : public ShaderTestDemo2 +{ +public: + CREATE_FUNC(EffectSpriteLamp); + EffectSpriteLamp(); + virtual std::string subtitle() const {return "Sprite Lamp effects";} + //callback +public: + virtual void onTouchesBegan(const std::vector& touches, Event *unused_event); + virtual void onTouchesMoved(const std::vector& touches, Event *unused_event); + virtual void onTouchesEnded(const std::vector& touches, Event *unused_event); +protected: + EffectSprite *_sprite; + Effect* _effect; + Sprite* _lightSprite; +}; #endif diff --git a/tests/cpp-tests/Classes/SpineTest/SpineTest.cpp b/tests/cpp-tests/Classes/SpineTest/SpineTest.cpp index e0887829ab..eee9541cab 100644 --- a/tests/cpp-tests/Classes/SpineTest/SpineTest.cpp +++ b/tests/cpp-tests/Classes/SpineTest/SpineTest.cpp @@ -1,16 +1,16 @@ /******************************************************************************* * Copyright (c) 2013, Esoteric Software * All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE @@ -27,7 +27,7 @@ #include #include #include - #include "spine/spine.h" +#include "spine/spine.h" using namespace cocos2d; using namespace std; @@ -38,7 +38,53 @@ using namespace spine; // SpineTestScene // //------------------------------------------------------------------ + +static std::function createFunctions[] = +{ + CL(SpineTestLayerNormal), + CL(SpineTestLayerFFD), + CL(SpineTestPerformanceLayer), +}; + +static int sceneIdx = -1; + +#define MAX_LAYER (sizeof(createFunctions) / sizeof(createFunctions[0])) + +Layer* nextSpineTestLayer() +{ + sceneIdx++; + sceneIdx = sceneIdx % MAX_LAYER; + + auto layer = (createFunctions[sceneIdx])(); + return layer; +} + +Layer* backSpineTestLayer() +{ + sceneIdx--; + int total = MAX_LAYER; + if( sceneIdx < 0 ) + sceneIdx += total; + + auto layer = (createFunctions[sceneIdx])(); + return layer; +} + +Layer* restartSpineTestLayer() +{ + auto layer = (createFunctions[sceneIdx])(); + return layer; +} + void SpineTestScene::runThisTest() +{ + auto layer = nextSpineTestLayer(); + addChild(layer); + + Director::getInstance()->replaceScene(this); +} + +void SpineTestSceneFFD::runThisTest() { auto layer = SpineTestLayer::create(); addChild(layer); @@ -46,58 +92,175 @@ void SpineTestScene::runThisTest() Director::getInstance()->replaceScene(this); } -bool SpineTestLayer::init () { +SpineTestLayer::SpineTestLayer(void) +: BaseTest() +{ +} + +SpineTestLayer::~SpineTestLayer(void) +{ +} + +std::string SpineTestLayer::title() const +{ + return "No title"; +} + +std::string SpineTestLayer::subtitle() const +{ + return ""; +} + +void SpineTestLayer::onEnter() +{ + BaseTest::onEnter(); +} + +void SpineTestLayer::restartCallback(Ref* sender) +{ + auto s = new SpineTestScene(); + s->addChild(restartSpineTestLayer()); + + Director::getInstance()->replaceScene(s); + s->release(); +} + +void SpineTestLayer::nextCallback(Ref* sender) +{ + auto s = new SpineTestScene(); + s->addChild( nextSpineTestLayer() ); + Director::getInstance()->replaceScene(s); + s->release(); +} + +void SpineTestLayer::backCallback(Ref* sender) +{ + auto s = new SpineTestScene(); + s->addChild( backSpineTestLayer() ); + Director::getInstance()->replaceScene(s); + s->release(); +} + +bool SpineTestLayerNormal::init () { if (!Layer::init()) return false; - skeletonNode = SkeletonAnimation::createWithFile("spine/spineboy.json", "spine/spineboy.atlas"); - skeletonNode->setMix("walk", "jump", 0.2f); - skeletonNode->setMix("jump", "walk", 0.4f); + skeletonNode = SkeletonAnimation::createWithFile("spine/spineboy.json", "spine/spineboy.atlas", 0.6f); + skeletonNode->setScale(0.5); - skeletonNode->setAnimationListener(this, animationStateEvent_selector(SpineTestLayer::animationStateEvent)); - skeletonNode->setAnimation(0, "walk", false); - skeletonNode->addAnimation(0, "jump", false); - skeletonNode->addAnimation(0, "walk", true); - skeletonNode->addAnimation(0, "jump", true, 4); - // skeletonNode->addAnimation(1, "drawOrder", true); + skeletonNode->setStartListener( [this] (int trackIndex) { + spTrackEntry* entry = spAnimationState_getCurrent(skeletonNode->getState(), trackIndex); + const char* animationName = (entry && entry->animation) ? entry->animation->name : 0; + log("%d start: %s", trackIndex, animationName); + }); + skeletonNode->setEndListener( [] (int trackIndex) { + log("%d end", trackIndex); + }); + skeletonNode->setCompleteListener( [] (int trackIndex, int loopCount) { + log("%d complete: %d", trackIndex, loopCount); + }); + skeletonNode->setEventListener( [] (int trackIndex, spEvent* event) { + log("%d event: %s, %d, %f, %s", trackIndex, event->data->name, event->intValue, event->floatValue, event->stringValue); + }); - skeletonNode->timeScale = 0.3f; - skeletonNode->debugBones = true; - skeletonNode->update(0); + skeletonNode->setMix("walk", "jump", 0.2f); + skeletonNode->setMix("jump", "run", 0.2f); + skeletonNode->setAnimation(0, "walk", true); + spTrackEntry* jumpEntry = skeletonNode->addAnimation(0, "jump", false, 3); + skeletonNode->addAnimation(0, "run", true); - skeletonNode->runAction(CCRepeatForever::create(CCSequence::create(CCFadeOut::create(1), - CCFadeIn::create(1), - CCDelayTime::create(5), - nullptr))); + skeletonNode->setTrackStartListener(jumpEntry, [] (int trackIndex) { + log("jumped!"); + }); Size windowSize = Director::getInstance()->getWinSize(); - skeletonNode->setPosition(Vec2(windowSize.width / 2, 20)); - addChild(skeletonNode); + skeletonNode->setPosition(Vec2(windowSize.width / 2, 20)); + addChild(skeletonNode); - scheduleUpdate(); + scheduleUpdate(); - return true; + EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create(); + listener->onTouchBegan = [this] (Touch* touch, Event* event) -> bool { + if (!skeletonNode->getDebugBonesEnabled()) + skeletonNode->setDebugBonesEnabled(true); + else if (skeletonNode->getTimeScale() == 1) + skeletonNode->setTimeScale(0.3f); + else + { + skeletonNode->setTimeScale(1); + skeletonNode->setDebugBonesEnabled(false); + } + + return true; + }; + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); + + return true; } -void SpineTestLayer::update (float deltaTime) { +void SpineTestLayerNormal::update (float deltaTime) { } -void SpineTestLayer::animationStateEvent (SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount) { - spTrackEntry* entry = spAnimationState_getCurrent(node->state, trackIndex); - const char* animationName = (entry && entry->animation) ? entry->animation->name : 0; +bool SpineTestLayerFFD::init () { + if (!Layer::init()) return false; - switch (type) { - case ANIMATION_START: - log("%d start: %s", trackIndex, animationName); - break; - case ANIMATION_END: - log("%d end: %s", trackIndex, animationName); - break; - case ANIMATION_COMPLETE: - log("%d complete: %s, %d", trackIndex, animationName, loopCount); - break; - case ANIMATION_EVENT: - log("%d event: %s, %s: %d, %f, %s", trackIndex, animationName, event->data->name, event->intValue, event->floatValue, event->stringValue); - break; - } + skeletonNode = SkeletonAnimation::createWithFile("spine/goblins-ffd.json", "spine/goblins-ffd.atlas", 1.5f); + skeletonNode->setAnimation(0, "walk", true); + skeletonNode->setSkin("goblin"); + + skeletonNode->setScale(0.5); + Size windowSize = Director::getInstance()->getWinSize(); + skeletonNode->setPosition(Vec2(windowSize.width / 2, 20)); + addChild(skeletonNode); + + scheduleUpdate(); + + EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create(); + listener->onTouchBegan = [this] (Touch* touch, Event* event) -> bool { + if (!skeletonNode->getDebugBonesEnabled()) + skeletonNode->setDebugBonesEnabled(true); + else if (skeletonNode->getTimeScale() == 1) + skeletonNode->setTimeScale(0.3f); + else + { + skeletonNode->setTimeScale(1); + skeletonNode->setDebugBonesEnabled(false); + } + return true; + }; + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); + + return true; } + +void SpineTestLayerFFD::update (float deltaTime) { + +} + +bool SpineTestPerformanceLayer::init () { + if (!Layer::init()) return false; + + scheduleUpdate(); + + EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create(); + listener->onTouchBegan = [this] (Touch* touch, Event* event) -> bool + { + + Vec2 pos = convertToNodeSpace(touch->getLocation()); + auto skeletonNode = SkeletonAnimation::createWithFile("spine/goblins-ffd.json", "spine/goblins-ffd.atlas", 1.5f); + skeletonNode->setAnimation(0, "walk", true); + skeletonNode->setSkin("goblin"); + + skeletonNode->setScale(0.2); + skeletonNode->setPosition(pos); + addChild(skeletonNode); + return true; + }; + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); + + return true; +} + +void SpineTestPerformanceLayer::update (float deltaTime) { + +} \ No newline at end of file diff --git a/tests/cpp-tests/Classes/SpineTest/SpineTest.h b/tests/cpp-tests/Classes/SpineTest/SpineTest.h index 33eea39c34..55a778b717 100644 --- a/tests/cpp-tests/Classes/SpineTest/SpineTest.h +++ b/tests/cpp-tests/Classes/SpineTest/SpineTest.h @@ -1,16 +1,16 @@ /******************************************************************************* * Copyright (c) 2013, Esoteric Software * All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE @@ -28,6 +28,7 @@ #include "cocos2d.h" #include "../testBasic.h" +#include "../BaseTest.h" #include class SpineTestScene : public TestScene @@ -36,17 +37,87 @@ public: virtual void runThisTest(); }; -class SpineTestLayer: public cocos2d::Layer { +class SpineTestSceneFFD : public TestScene +{ +public: + virtual void runThisTest(); +}; + +class SpineTestLayer : public BaseTest +{ +protected: + std::string _title; + +public: + SpineTestLayer(void); + virtual ~SpineTestLayer(void); + + void restartCallback(Ref* sender); + void nextCallback(Ref* sender); + void backCallback(Ref* sender); + + // overrides + virtual std::string title() const override; + virtual std::string subtitle() const override; + virtual void onEnter() override; +}; + +class SpineTestLayerNormal: public SpineTestLayer { private: spine::SkeletonAnimation* skeletonNode; - + public: - + virtual std::string title() const override + { + return "Spine Test"; + } + virtual std::string subtitle() const override + { + return "Normal Spine"; + } virtual bool init (); virtual void update (float deltaTime); - void animationStateEvent (spine::SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount); + // void animationStateEvent (spine::SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount); - CREATE_FUNC (SpineTestLayer); + CREATE_FUNC (SpineTestLayerNormal); +}; + +class SpineTestLayerFFD: public SpineTestLayer { +private: + spine::SkeletonAnimation* skeletonNode; + +public: + virtual std::string title() const override + { + return "Spine Test"; + } + virtual std::string subtitle() const override + { + return "FFD Spine"; + } + virtual bool init (); + virtual void update (float deltaTime); + // void animationStateEvent (spine::SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount); + + CREATE_FUNC (SpineTestLayerFFD); +}; + +class SpineTestPerformanceLayer: public SpineTestLayer +{ +public: + virtual std::string title() const override + { + return "Spine Test"; + } + virtual std::string subtitle() const override + { + return "Performance Test for Spine"; + } + virtual bool init (); + virtual void update (float deltaTime); + // void animationStateEvent (spine::SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount); + + CREATE_FUNC (SpineTestPerformanceLayer); }; #endif // _EXAMPLELAYER_H_ diff --git a/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp b/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp index 963f289915..ee0e71a8e1 100644 --- a/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp +++ b/tests/cpp-tests/Classes/Sprite3DTest/Sprite3DTest.cpp @@ -1263,13 +1263,13 @@ void Sprite3DWithOBBPerfromanceTest::onTouchesBegan(const std::vector& t for (auto touch: touches) { auto location = touch->getLocationInView(); - - if(_obb.size() > 0) + auto obbSize = _obb.size(); + if(obbSize) { _intersetList.clear(); Ray ray; calculateRayByLocationInView(&ray,location); - for(int i = 0; i < _obb.size(); i++) + for(decltype(obbSize) i = 0; i < obbSize; i++) { if(ray.intersects(_obb[i])) { @@ -1290,9 +1290,10 @@ void Sprite3DWithOBBPerfromanceTest::onTouchesMoved(const std::vector& t { for (auto touch: touches) { - auto location = touch->getLocation(); - - for(int i = 0; i < _obb.size(); i++) + auto location = touch->getLocation(); + auto obbSize = _obb.size(); + + for(decltype(obbSize) i = 0; i < obbSize; i++) { if(_intersetList.find(i) != _intersetList.end()) _obb[i]._center = Vec3(location.x,location.y,0); @@ -1329,7 +1330,8 @@ void Sprite3DWithOBBPerfromanceTest::update(float dt) if(_obb.size() > 0) { _drawOBB->clear(); - for(int i =0; i < _obb.size(); i++) + auto obbSize = _obb.size(); + for(decltype(obbSize) i =0; i < obbSize; i++) { Vec3 corners[8] = {}; _obb[i].getCorners(corners); diff --git a/tests/cpp-tests/Classes/TileMapTest/TileMapTest.cpp b/tests/cpp-tests/Classes/TileMapTest/TileMapTest.cpp index c2c55c7f92..530e1eabfa 100644 --- a/tests/cpp-tests/Classes/TileMapTest/TileMapTest.cpp +++ b/tests/cpp-tests/Classes/TileMapTest/TileMapTest.cpp @@ -30,6 +30,7 @@ static int sceneIdx = -1; static std::function createFunctions[] = { CLN(TMXIsoZorder), CLN(TMXOrthoZorder), + CLN(TMXStaggeredTest), CLN(TMXIsoVertexZ), CLN(TMXOrthoVertexZ), CLN(TMXOrthoTest), @@ -318,6 +319,33 @@ std::string TMXOrthoTest::title() const return "TMX Orthogonal test"; } +TMXStaggeredTest::TMXStaggeredTest() +{ + + auto map = TMXTiledMap::create("TileMaps/test-staggered.tmx"); + + addChild(map, 0, kTagTileMap); + +} + +void TMXStaggeredTest::onEnter() +{ + TileDemo::onEnter(); + + Director::getInstance()->setProjection(Director::Projection::_3D); +} + +void TMXStaggeredTest::onExit() +{ + Director::getInstance()->setProjection(Director::Projection::DEFAULT); + TileDemo::onExit(); +} + +std::string TMXStaggeredTest::title() const +{ + return "TMX Staggered test"; +} + //------------------------------------------------------------------ // // TMXOrthoTest2 diff --git a/tests/cpp-tests/Classes/TileMapTest/TileMapTest.h b/tests/cpp-tests/Classes/TileMapTest/TileMapTest.h index 38d915305b..188770b187 100644 --- a/tests/cpp-tests/Classes/TileMapTest/TileMapTest.h +++ b/tests/cpp-tests/Classes/TileMapTest/TileMapTest.h @@ -48,6 +48,16 @@ public: virtual void onExit() override; }; +class TMXStaggeredTest : public TileDemo +{ +public: + TMXStaggeredTest(void); + virtual std::string title() const override; + + virtual void onEnter() override; + virtual void onExit() override; +}; + class TMXOrthoTest2 : public TileDemo { public: diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CocosGUIScene.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CocosGUIScene.cpp index 2fbaf3b11f..c6fb2138d5 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CocosGUIScene.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/CocosGUIScene.cpp @@ -30,7 +30,7 @@ g_guisTests[] = } }, #endif -#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) { "WebViewTest", [](Ref* sender) @@ -211,7 +211,7 @@ g_guisTests[] = UISceneManager* sceneManager = UISceneManager::sharedUISceneManager(); sceneManager->setCurrentUISceneId(kUIScrollViewTest_Vertical); sceneManager->setMinUISceneId(kUIScrollViewTest_Vertical); - sceneManager->setMaxUISceneId(kUIScrollViewNestTest); + sceneManager->setMaxUISceneId(kUIScrollViewRotated); Scene* scene = sceneManager->currentUIScene(); Director::getInstance()->replaceScene(scene); } @@ -223,7 +223,7 @@ g_guisTests[] = UISceneManager* sceneManager = UISceneManager::sharedUISceneManager(); sceneManager->setCurrentUISceneId(kUIPageViewTest); sceneManager->setMinUISceneId(kUIPageViewTest); - sceneManager->setMaxUISceneId(kUIPageViewTouchPropagationTest); + sceneManager->setMaxUISceneId(kUIPageViewDynamicAddAndRemoveTest); Scene* scene = sceneManager->currentUIScene(); Director::getInstance()->replaceScene(scene); } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/GUIEditorTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/GUIEditorTest.cpp index b14ba230bd..f46cdf1cb3 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/GUIEditorTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/GUIEditorTest.cpp @@ -173,7 +173,8 @@ g_guisTests[] = UISceneManager_Editor* pManager = UISceneManager_Editor::sharedUISceneManager_Editor(); pManager->setCurrentUISceneId(kUILayoutTest_Editor); pManager->setMinUISceneId(kUILayoutTest_Editor); - pManager->setMaxUISceneId(kUILayoutTest_Layout_Relative_Location_Editor); + pManager->setMaxUISceneId(kUILayoutTest_BackGroundImage_Scale9_Editor); +// pManager->setMaxUISceneId(kUILayoutTest_Layout_Relative_Location_Editor); Scene* pScene = pManager->currentUIScene(); Director::getInstance()->replaceScene(pScene); } @@ -202,6 +203,7 @@ g_guisTests[] = Director::getInstance()->replaceScene(pScene); } }, + /* { "gui ListView Editor Test", [](Ref* sender) @@ -214,6 +216,7 @@ g_guisTests[] = Director::getInstance()->replaceScene(pScene); } }, + */ /* { "gui GridViewTest", diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest.cpp index bdaa38e9fc..6cab2ac2dd 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest.cpp @@ -37,9 +37,11 @@ bool UIButtonTest::init() // Create the button Button* button = Button::create("cocosui/animationbuttonnormal.png"); + CCLOG("content size should be greater than 0: width = %f, height = %f", button->getContentSize().width, + button->getContentSize().height); button->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest::touchEvent, this)); - button->setZoomScale(0.4); + button->setZoomScale(0.4f); button->setPressedActionEnabled(true); _uiLayer->addChild(button); button->setOpacity(100); @@ -304,8 +306,8 @@ bool UIButtonTest_Title::init() button->addTouchEventListener(CC_CALLBACK_2(UIButtonTest_Title::touchEvent, this)); _uiLayer->addChild(button); - button->runAction(RepeatForever::create(Sequence::create(ScaleTo::create(1., 1.2), - ScaleTo::create(1.0, 1.0),nullptr))); + button->runAction(RepeatForever::create(Sequence::create(ScaleTo::create(1.0f, 1.2f), + ScaleTo::create(1.0f, 1.0f),nullptr))); TextBMFont *text = TextBMFont::create("BMFont", "cocosui/bitmapFontTest2.fnt"); @@ -392,7 +394,7 @@ bool UIButtonTestRemoveSelf::init() _uiLayer->addChild(alert); Layout *layout = Layout::create(); - layout->setContentSize(widgetSize * 0.6); + layout->setContentSize(widgetSize * 0.6f); layout->setBackGroundColor(Color3B::GREEN); layout->setBackGroundColorType(Layout::BackGroundColorType::SOLID); layout->setBackGroundColorOpacity(100); @@ -631,9 +633,12 @@ bool UIButtonTextOnly::init() // Create the button auto button = Button::create(); - button->setNormalizedPosition(Vec2(0.5, 0.5)); + button->setNormalizedPosition(Vec2(0.5f, 0.5f)); + button->setTitleText("PLAY GAME"); - button->setZoomScale(0.3); + CCLOG("content size should be greater than 0: width = %f, height = %f", button->getContentSize().width, + button->getContentSize().height); + button->setZoomScale(0.3f); button->setPressedActionEnabled(true); button->addClickEventListener([this](Ref* sender) { CCLOG("clicked!"); @@ -682,13 +687,13 @@ bool UIButtonIgnoreContentSizeTest::init() "cocosui/animationbuttonpressed.png"); button->ignoreContentAdaptWithSize(false); button->setContentSize(Size(200,100)); - button->setNormalizedPosition(Vec2(0.3, 0.5)); + button->setNormalizedPosition(Vec2(0.3f, 0.5f)); button->setTitleText("PLAY GAME"); - button->setZoomScale(0.3); + button->setZoomScale(0.3f); button->setPressedActionEnabled(true); button->addClickEventListener([=](Ref* sender) { CCLOG("clicked!"); - button->setScale(1.2); + button->setScale(1.2f); }); _uiLayer->addChild(button); @@ -697,12 +702,12 @@ bool UIButtonIgnoreContentSizeTest::init() "cocosui/animationbuttonpressed.png"); button2->ignoreContentAdaptWithSize(false); button2->setContentSize(Size(200,100)); - button2->setNormalizedPosition(Vec2(0.8, 0.5)); + button2->setNormalizedPosition(Vec2(0.8f, 0.5f)); button2->setTitleText("PLAY GAME"); - button2->setZoomScale(0.3); + button2->setZoomScale(0.3f); button2->setPressedActionEnabled(true); button2->addClickEventListener([=](Ref* sender) { - button2->runAction(ScaleTo::create(1.0, 1.2)); + button2->runAction(ScaleTo::create(1.0f, 1.2f)); CCLOG("clicked!"); }); _uiLayer->addChild(button2); @@ -748,11 +753,11 @@ bool UIButtonTitleEffectTest::init() // Create the button auto button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); - button->setNormalizedPosition(Vec2(0.3, 0.5)); + button->setNormalizedPosition(Vec2(0.3f, 0.5f)); button->setTitleText("PLAY GAME"); button->setTitleFontName("fonts/Marker Felt.ttf"); - button->setZoomScale(0.3); - button->setScale(2.0); + button->setZoomScale(0.3f); + button->setScale(2.0f); button->setPressedActionEnabled(true); Label *title = button->getTitleRenderer(); button->setTitleColor(Color3B::RED); @@ -764,7 +769,7 @@ bool UIButtonTitleEffectTest::init() // Create the button auto button2 = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); - button2->setNormalizedPosition(Vec2(0.8, 0.5)); + button2->setNormalizedPosition(Vec2(0.8f, 0.5f)); button2->setTitleText("PLAY GAME"); auto title2 = button2->getTitleRenderer(); title2->enableOutline(Color4B::GREEN, 3); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.cpp index 53a668ecec..b508f0d355 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.cpp @@ -20,20 +20,64 @@ void UIButtonTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIButton_Editor/windows_UIButton_Editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIButton_Editor/windows_UIButton_Editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIButton_Editor/crossplatform_UIButton_Editor_1.ExportJson"); + Node* child = node->getChildByTag(4); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIButton_Editor/crossplatform_UIButton_Editor_1.csb"); + Node* child = node->getChildByTag(4); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -66,7 +110,10 @@ bool UIButtonTest_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.json")); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIButton_Editor/crossplatform_UIButton_Editor_1.csb"); + Node* child = node->getChildByTag(4); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); this->configureGUIScene(); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.cpp index 07594f4ad1..c1365e61fe 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.cpp @@ -20,20 +20,64 @@ void UICheckBoxTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UICheckBox_Editor/ui_checkbox_editor_1.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UICheckBox_Editor/ui_checkbox_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UICheckBox_Editor/windows_ui_checkbox_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UICheckBox_Editor/windows_ui_checkbox_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UICheckBox_Editor/crossplatform_UICheckBox_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UICheckBox_Editor/crossplatform_UICheckBox_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -60,9 +104,12 @@ bool UICheckBoxTest_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UICheckBox_Editor/ui_checkbox_editor_1.json")); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UICheckBox_Editor/crossplatform_UICheckBox_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); - + this->configureGUIScene(); _displayValueLabel = Text::create(); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.cpp index a0a6f7fa98..10c32b0679 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.cpp @@ -8,20 +8,64 @@ void UIImageViewTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIImageView_Editor/ui_ImageView_editor_1.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIImageView_Editor/ui_ImageView_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIImageView_Editor/windows_ui_ImageView_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIImageView_Editor/windows_ui_ImageView_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIImageView_Editor/crossplatform_UIImageView_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIImageView_Editor/crossplatform_UIImageView_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -45,11 +89,12 @@ bool UIImageViewTest_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIImageView_Editor/ui_ImageView_editor_1.json")); - - + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIImageView_Editor/crossplatform_UIImageView_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); - + this->configureGUIScene(); return true; diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp index a1e24b12c7..8a46a6be8f 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp @@ -1,6 +1,7 @@ #include "UILayoutTest_Editor.h" +#include "VisibleRect.h" // UILayoutTest_Editor @@ -19,20 +20,64 @@ void UILayoutTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Editor/ui_layout_editor_1.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Editor/ui_layout_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Editor/windows_ui_layout_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Editor/windows_ui_layout_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Editor/crossplatform_UILayout_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Editor/crossplatform_UILayout_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -75,11 +120,21 @@ bool UILayoutTest_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Editor/ui_layout_editor_1.json")); - + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Editor/crossplatform_UILayout_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); + this->configureGUIScene(); + /* + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 3.75f)); + */ + return true; } @@ -103,20 +158,64 @@ void UILayoutTest_Color_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Color_Editor/ui_layout_color_editor_1.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Color_Editor/ui_layout_color_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Color_Editor/windows_ui_layout_color_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Color_Editor/windows_ui_layout_color_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Color_Editor/crossplatform_UILayout_Color_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Color_Editor/crossplatform_UILayout_Color_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -157,10 +256,21 @@ bool UILayoutTest_Color_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Color_Editor/ui_layout_color_editor_1.json")); - + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Color_Editor/crossplatform_UILayout_Color_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); + this->configureGUIScene(); + + /* + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 3.75f)); + */ + return true; } @@ -184,20 +294,64 @@ void UILayoutTest_Gradient_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Gradient_Color_Editor/ui_layout_gradient_color_editor_1_0.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Gradient_Color_Editor/ui_layout_gradient_color_editor_1_0.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Gradient_Color_Editor/windows_ui_layout_gradient_color_editor_1_0.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Gradient_Color_Editor/windows_ui_layout_gradient_color_editor_1_0.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Gradient_Color_Editor/crossplatform_UILayout_Gradient_Color_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Gradient_Color_Editor/crossplatform_UILayout_Gradient_Color_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -239,10 +393,21 @@ bool UILayoutTest_Gradient_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Gradient_Color_Editor/ui_layout_gradient_color_editor_1_0.json")); - + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Gradient_Color_Editor/crossplatform_UILayout_Gradient_Color_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); + this->configureGUIScene(); + + /* + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 3.75f)); + */ + return true; } @@ -266,20 +431,64 @@ void UILayoutTest_BackGroundImage_Editor::switchLoadMethod(cocos2d::Ref *pSender { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_BackgroundImage_Editor/ui_layout_backgroundimage_editor_1_0_0.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_BackgroundImage_Editor/ui_layout_backgroundimage_editor_1_0_0.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_BackgroundImage_Editor/windows_ui_layout_backgroundimage_editor_1_0_0.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_BackgroundImage_Editor/windows_ui_layout_backgroundimage_editor_1_0_0.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_BackgroundImage_Editor/crossplatform_UILayout_BackgroundImage_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_BackgroundImage_Editor/crossplatform_UILayout_BackgroundImage_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -321,11 +530,21 @@ bool UILayoutTest_BackGroundImage_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_BackgroundImage_Editor/ui_layout_backgroundimage_editor_1_0_0.json")); - + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_BackgroundImage_Editor/crossplatform_UILayout_BackgroundImage_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); - + this->configureGUIScene(); + + /* + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 3.75f)); + */ + return true; } @@ -349,20 +568,64 @@ void UILayoutTest_BackGroundImage_Scale9_Editor::switchLoadMethod(cocos2d::Ref * { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Scale9_BackgroundImage_Editor/ui_layout_scale9_backgroundimage_editor.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Scale9_BackgroundImage_Editor/ui_layout_scale9_backgroundimage_editor.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Scale9_BackgroundImage_Editor/windows_ui_layout_scale9_backgroundimage_editor.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Scale9_BackgroundImage_Editor/windows_ui_layout_scale9_backgroundimage_editor.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Scale9_BackgroundImage_Editor/crossplatform_UILayout_Scale9_BackgroundImage_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Scale9_BackgroundImage_Editor/crossplatform_UILayout_Scale9_BackgroundImage_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -404,11 +667,21 @@ bool UILayoutTest_BackGroundImage_Scale9_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Scale9_BackgroundImage_Editor/ui_layout_scale9_backgroundimage_editor.json")); - + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Scale9_BackgroundImage_Editor/crossplatform_UILayout_Scale9_BackgroundImage_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); - + this->configureGUIScene(); + + /* + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 4.25f)); + */ + return true; } @@ -432,20 +705,64 @@ void UILayoutTest_Layout_Linear_Vertical_Editor::switchLoadMethod(cocos2d::Ref * { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Vertical_Layout_Editor/ui_layout_linear_vertical_layout_editor.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Vertical_Layout_Editor/ui_layout_linear_vertical_layout_editor.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Vertical_Layout_Editor/windows_ui_layout_linear_vertical_layout_editor.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Vertical_Layout_Editor/windows_ui_layout_linear_vertical_layout_editor.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Vertical_Layout_Editor/crossplatform_UILayout_Linear_Vertical_Layout_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Vertical_Layout_Editor/crossplatform_UILayout_Linear_Vertical_Layout_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -487,11 +804,17 @@ bool UILayoutTest_Layout_Linear_Vertical_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Vertical_Layout_Editor/ui_layout_linear_vertical_layout_editor.json")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Vertical_Layout_Editor/windows_ui_layout_linear_vertical_layout_editor.json")); _touchGroup->addChild(_layout); this->configureGUIScene(); + + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 4.25f)); + return true; } @@ -515,20 +838,64 @@ void UILayoutTest_Layout_Linear_Horizontal_Editor::switchLoadMethod(cocos2d::Ref { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Horizontal_Layout_Editor/ui_layout_linear_horizontal_layout_editor.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Horizontal_Layout_Editor/ui_layout_linear_horizontal_layout_editor.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Horizontal_Layout_Editor/windows_ui_layout_linear_horizontal_layout_editor.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Horizontal_Layout_Editor/windows_ui_layout_linear_horizontal_layout_editor.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Horizontal_Layout_Editor/crossplatform_UILayout_Linear_Horizontal_Layout_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Horizontal_Layout_Editor/crossplatform_UILayout_Linear_Horizontal_Layout_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -570,11 +937,16 @@ bool UILayoutTest_Layout_Linear_Horizontal_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Horizontal_Layout_Editor/ui_layout_linear_horizontal_layout_editor.json")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Linear_Horizontal_Layout_Editor/windows_ui_layout_linear_horizontal_layout_editor.json")); _touchGroup->addChild(_layout); this->configureGUIScene(); + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 4.25f)); + return true; } @@ -598,20 +970,64 @@ void UILayoutTest_Layout_Relative_Align_Parent_Editor::switchLoadMethod(cocos2d: { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Parent_Editor/ui_layout_relative_align_parent_editor.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Parent_Editor/ui_layout_relative_align_parent_editor.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Parent_Editor/windows_ui_layout_relative_align_parent_editor.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Parent_Editor/windows_ui_layout_relative_align_parent_editor.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Parent_Editor/crossplatform_UILayout_Relative_Align_Parent_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Parent_Editor/crossplatform_UILayout_Relative_Align_Parent_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -653,10 +1069,15 @@ bool UILayoutTest_Layout_Relative_Align_Parent_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Parent_Editor/ui_layout_relative_align_parent_editor.json")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Parent_Editor/windows_ui_layout_relative_align_parent_editor.json")); _touchGroup->addChild(_layout); this->configureGUIScene(); + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 4.25f)); + return true; } @@ -680,20 +1101,64 @@ void UILayoutTest_Layout_Relative_Location_Editor::switchLoadMethod(cocos2d::Ref { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Location_Editor/ui_layout_relative_align_location_editor.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Location_Editor/ui_layout_relative_align_location_editor.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Location_Editor/windows_ui_layout_relative_align_location_editor.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Location_Editor/windows_ui_layout_relative_align_location_editor.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Location_Editor/crossplatform_UILayout_Relative_Align_Location_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Location_Editor/crossplatform_UILayout_Relative_Align_Location_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -735,9 +1200,15 @@ bool UILayoutTest_Layout_Relative_Location_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Location_Editor/ui_layout_relative_align_location_editor.json")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout_Editor/UILayout_Relative_Align_Location_Editor/windows_ui_layout_relative_align_location_editor.json")); _touchGroup->addChild(_layout); this->configureGUIScene(); + + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 4.25f)); + return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.cpp index af770b4903..687d3a19de 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.cpp @@ -1,5 +1,6 @@ #include "UIListViewTest_Editor.h" +#include "VisibleRect.h" // UIListViewTest_Vertical_Editor @@ -19,20 +20,64 @@ void UIListViewTest_Vertical_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Vertical_Editor/ui_listview_editor_1.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Vertical_Editor/ui_listview_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Vertical_Editor/windows_ui_listview_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Vertical_Editor/windows_ui_listview_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIListView_Editor/UIListView_Vertical_Editor/crossplatform_UIListView_Vertical_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIListView_Editor/UIListView_Vertical_Editor/crossplatform_UIListView_Vertical_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -79,10 +124,15 @@ bool UIListViewTest_Vertical_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Vertical_Editor/ui_listview_editor_1.json")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Vertical_Editor/windows_ui_listview_editor_1.json")); _touchGroup->addChild(_layout); this->configureGUIScene(); + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 4.25f)); + return true; } @@ -102,20 +152,64 @@ void UIListViewTest_Horizontal_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Horizontal_Editor/ui_listview_horizontal_editor_1.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Horizontal_Editor/ui_listview_horizontal_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Horizontal_Editor/windows_ui_listview_horizontal_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Horizontal_Editor/windows_ui_listview_horizontal_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIListView_Editor/UIListView_Horizontal_Editor/crossplatform_UIListView_Horizontal_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIListView_Editor/UIListView_Horizontal_Editor/crossplatform_UIListView_Horizontal_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -162,10 +256,16 @@ bool UIListViewTest_Horizontal_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Horizontal_Editor/ui_listview_horizontal_editor_1.json")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIListView_Editor/UIListView_Horizontal_Editor/windows_ui_listview_horizontal_editor_1.json")); _touchGroup->addChild(_layout); this->configureGUIScene(); + + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 4.25f)); + return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.cpp index 96081b975e..965c663f81 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.cpp @@ -21,20 +21,64 @@ void UILoadingBarTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) MenuItemToggle *item = (MenuItemToggle*)pSender; _count = 0; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILoadingBar_Editor/ui_loadingbar_editor_1.json")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILoadingBar_Editor/ui_loadingbar_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILoadingBar_Editor/windows_ui_loadingbar_editor_1.json")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILoadingBar_Editor/windows_ui_loadingbar_editor_1.csb")); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILoadingBar_Editor/crossplatform_UILoadingBar_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILoadingBar_Editor/crossplatform_UILoadingBar_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -67,10 +111,14 @@ bool UILoadingBarTest_Editor::init() { scheduleUpdate(); - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILoadingBar_Editor/ui_loadingbar_editor_1.json")); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILoadingBar_Editor/crossplatform_UILoadingBar_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); - + this->configureGUIScene(); + return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp index f7d7e5afe3..f4b7d4478d 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp @@ -505,3 +505,180 @@ void UIPageViewTouchPropagationTest::pageViewEvent(Ref *pSender, PageView::Event } } +// UIPageViewDynamicAddAndRemoveTest +UIPageViewDynamicAddAndRemoveTest::UIPageViewDynamicAddAndRemoveTest() +: _displayValueLabel(nullptr) +{ + +} + +UIPageViewDynamicAddAndRemoveTest::~UIPageViewDynamicAddAndRemoveTest() +{ +} + +bool UIPageViewDynamicAddAndRemoveTest::init() +{ + if (UIScene::init()) + { + Size widgetSize = _widget->getContentSize(); + + // Add a label in which the dragpanel events will be displayed + _displayValueLabel = Text::create("Click Buttons on the Left", "fonts/Marker Felt.ttf", 32); + _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); + _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, + widgetSize.height / 2.0f + + _displayValueLabel->getContentSize().height * 1.5)); + _uiLayer->addChild(_displayValueLabel); + + // Add the black background + Text* alert = Text::create("PageView Dynamic Modification", "fonts/Marker Felt.ttf", 30); + alert->setColor(Color3B(159, 168, 176)); + alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + _uiLayer->addChild(alert); + + Layout* root = static_cast(_uiLayer->getChildByTag(81)); + + Layout* background = dynamic_cast(root->getChildByName("background_Panel")); + + // Create the page view + PageView* pageView = PageView::create(); + pageView->setContentSize(Size(240.0f, 130.0f)); + pageView->setAnchorPoint(Vec2(0.5,0.5)); + Size backgroundSize = background->getContentSize(); + pageView->setPosition(Vec2(widgetSize.width / 2.0f ,widgetSize.height / 2.0f)); + pageView->setBackGroundColor(Color3B::GREEN); + pageView->setBackGroundColorType(Layout::BackGroundColorType::SOLID); + + int pageCount = 4; + for (int i = 0; i < pageCount; ++i) + { + HBox* outerBox = HBox::create(); + outerBox->setContentSize(Size(240.0f, 130.0f)); + + for (int k = 0; k < 2; ++k) + { + VBox* innerBox = VBox::create(); + + for (int j = 0; j < 3; j++) + { + Button *btn = Button::create("cocosui/animationbuttonnormal.png", + "cocosui/animationbuttonpressed.png"); + btn->setName(StringUtils::format("button %d", j)); + + innerBox->addChild(btn); + } + + LinearLayoutParameter *parameter = LinearLayoutParameter::create(); + parameter->setMargin(Margin(0,0,100,0)); + innerBox->setLayoutParameter(parameter); + + outerBox->addChild(innerBox); + + } + + pageView->insertPage(outerBox,i); + } + + pageView->addEventListener(CC_CALLBACK_2(UIPageViewDynamicAddAndRemoveTest::pageViewEvent, this)); + pageView->setName("pageView"); + _uiLayer->addChild(pageView); + + //add buttons + auto button = Button::create(); + button->setNormalizedPosition(Vec2(0.12,0.7)); + button->setTitleText("Add A Page"); + button->setZoomScale(0.3); + button->setPressedActionEnabled(true); + button->setTitleColor(Color3B::RED); + button->addClickEventListener([=](Ref* sender) + { + HBox* outerBox = HBox::create(); + outerBox->setContentSize(Size(240.0f, 130.0f)); + + for (int k = 0; k < 2; ++k) + { + VBox* innerBox = VBox::create(); + + for (int j = 0; j < 3; j++) + { + Button *btn = Button::create("cocosui/animationbuttonnormal.png", + "cocosui/animationbuttonpressed.png"); + btn->setName(StringUtils::format("button %d", j)); + + innerBox->addChild(btn); + } + + LinearLayoutParameter *parameter = LinearLayoutParameter::create(); + parameter->setMargin(Margin(0,0,100,0)); + innerBox->setLayoutParameter(parameter); + + outerBox->addChild(innerBox); + + } + + pageView->addPage(outerBox); + _displayValueLabel->setString(CCString::createWithFormat("page count = %ld", pageView->getPages().size())->getCString()); + + }); + _uiLayer->addChild(button); + + auto button2 = Button::create(); + button2->setNormalizedPosition(Vec2(0.12,0.5)); + button2->setTitleText("Remove A Page"); + button2->setZoomScale(0.3); + button2->setPressedActionEnabled(true); + button2->setTitleColor(Color3B::RED); + button2->addClickEventListener([=](Ref* sender) + { + if (pageView->getPages().size() > 0) + { + pageView->removePageAtIndex(pageView->getPages().size()-1); + } + else + { + CCLOG("There is no page to remove!"); + } + _displayValueLabel->setString(CCString::createWithFormat("page count = %ld", pageView->getPages().size())->getCString()); + + }); + _uiLayer->addChild(button2); + + auto button3 = Button::create(); + button3->setNormalizedPosition(Vec2(0.12,0.3)); + button3->setTitleText("Remove All Pages"); + button3->setZoomScale(0.3); + button3->setPressedActionEnabled(true); + button3->setTitleColor(Color3B::RED); + button3->addClickEventListener([=](Ref* sender) + { + pageView->removeAllPages(); + _displayValueLabel->setString(CCString::createWithFormat("page count = %ld", pageView->getPages().size())->getCString()); + + }); + _uiLayer->addChild(button3); + + + + return true; + } + return false; +} + + +void UIPageViewDynamicAddAndRemoveTest::pageViewEvent(Ref *pSender, PageView::EventType type) +{ + switch (type) + { + case PageView::EventType::TURNING: + { + PageView* pageView = dynamic_cast(pSender); + + _displayValueLabel->setString(CCString::createWithFormat("page = %ld", pageView->getCurPageIndex() + 1)->getCString()); + } + break; + + default: + break; + } +} + diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.h index 922115c52f..5f9c492bc7 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.h @@ -85,4 +85,19 @@ protected: Text* _displayValueLabel; }; +class UIPageViewDynamicAddAndRemoveTest : public UIScene +{ +public: + UIPageViewDynamicAddAndRemoveTest(); + ~UIPageViewDynamicAddAndRemoveTest(); + bool init(); + + void pageViewEvent(Ref* pSender, PageView::EventType type); + void onButtonClicked(Ref* pSender, Widget::TouchEventType type); + +protected: + UI_SCENE_CREATE_FUNC(UIPageViewDynamicAddAndRemoveTest) + Text* _displayValueLabel; +}; + #endif /* defined(__TestCpp__UIPageViewTest__) */ diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.cpp index f509bff3f4..8577f56a85 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.cpp @@ -1,6 +1,7 @@ #include "UIPageViewTest_Editor.h" +#include "VisibleRect.h" // UIPageViewTest_Editor @@ -20,21 +21,66 @@ void UIPageViewTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIPageView_Editor/ui_pageview_editor_1.json")); - - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIPageView_Editor/ui_pageview_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIPageView_Editor/windows_ui_pageview_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIPageView_Editor/windows_ui_pageview_editor_1.csb")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIPageView_Editor/crossplatform_UIPageView_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIPageView_Editor/crossplatform_UIPageView_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -76,10 +122,21 @@ bool UIPageViewTest_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIPageView_Editor/ui_pageview_editor_1.json")); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIPageView_Editor/crossplatform_UIPageView_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); - + this->configureGUIScene(); + + /* + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 3.75f)); + */ + return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScale9SpriteTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScale9SpriteTest.cpp index 3ef6c8e401..b23723e311 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScale9SpriteTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScale9SpriteTest.cpp @@ -58,8 +58,6 @@ bool UIScale9SpriteTest::init() ui::Scale9Sprite *normalSprite2 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); normalSprite2->setPosition(120, 270); normalSprite2->setScale9Enabled(false); -// normalSprite2->setContentSize(Size(100,100)); -// normalSprite2->setAnchorPoint(Vec2(0.5,0.5)); normalSprite2->setOpacity(100); this->addChild(normalSprite2); normalSprite2->setColor(Color3B::GREEN); @@ -68,16 +66,15 @@ bool UIScale9SpriteTest::init() auto action2 = action->clone(); ui::Scale9Sprite *sp1 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); sp1->setPosition(100, 160); - sp1->setScale(1.2); + sp1->setScale(1.2f); sp1->setContentSize(Size(100,100)); sp1->setColor(Color3B::GREEN); -// sp1->setScale9Enabled(false); this->addChild(sp1); sp1->runAction((FiniteTimeAction*)action2); cocos2d::ui::Scale9Sprite *sp2 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); sp2->setPosition(350, 160); - sp2->setPreferredSize(sp1->getContentSize() * 1.2); + sp2->setPreferredSize(sp1->getContentSize() * 1.2f); sp2->setColor(Color3B::GREEN); sp2->setContentSize(Size(100,100)); @@ -106,55 +103,41 @@ bool UIScale9SpriteHierarchialTest::init() { Size widgetSize = _widget->getContentSize(); - auto moveTo = MoveBy::create(1.0, Vec2(30,0)); + auto moveTo = MoveBy::create(1.0f, Vec2(30,0)); auto moveBack = moveTo->reverse(); - auto rotateBy = RotateBy::create(1.0, 180); - auto fadeOut = FadeOut::create(2.0); + auto rotateBy = RotateBy::create(1.0f, 180); + auto fadeOut = FadeOut::create(2.0f); auto action = Sequence::create(moveTo,moveBack, rotateBy,fadeOut, NULL); - Sprite *normalSprite1 = Sprite::create("cocosui/animationbuttonnormal.png"); normalSprite1->setPosition(100, 270); - // normalSprite1->setAnchorPoint(Vec2(0.5,0.5)); - // normalSprite1->setContentSize(Size(100,100)); - -// Sprite *childSprite = Sprite::create("cocosui/animationbuttonnormal.png"); normalSprite1->setCascadeColorEnabled(true); normalSprite1->setCascadeOpacityEnabled(true); normalSprite1->setColor(Color3B::GREEN); - - this->addChild(normalSprite1); normalSprite1->runAction((FiniteTimeAction*)action->clone()); ui::Scale9Sprite *normalSprite2 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); -// normalSprite2->setPosition(120, 270); normalSprite2->setScale9Enabled(false); - // normalSprite2->setContentSize(Size(100,100)); - // normalSprite2->setAnchorPoint(Vec2(0.5,0.5)); normalSprite2->setOpacity(100); normalSprite1->addChild(normalSprite2); auto action2 = action->clone(); ui::Scale9Sprite *sp1 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); sp1->setPosition(200, 160); - sp1->setScale(1.2); + sp1->setScale(1.2f); sp1->setContentSize(Size(100,100)); sp1->setColor(Color3B::GREEN); - // sp1->setScale9Enabled(false); this->addChild(sp1); sp1->runAction((FiniteTimeAction*)action2); cocos2d::ui::Scale9Sprite *sp2 = ui::Scale9Sprite::create("cocosui/animationbuttonnormal.png"); -// sp2->setPosition(350, 160); - sp2->setPreferredSize(sp1->getContentSize() * 1.2); + sp2->setPreferredSize(sp1->getContentSize() * 1.2f); sp2->setColor(Color3B::GREEN); sp2->setContentSize(Size(100,100)); sp1->addChild(sp2); -// auto action3 = action->clone(); -// sp2->runAction((FiniteTimeAction*)action3); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.cpp index 242b345111..c00944cd14 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.cpp @@ -21,7 +21,7 @@ #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) #include "UIVideoPlayerTest/UIVideoPlayerTest.h" #endif -#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) #include "UIWebViewTest/UIWebViewTest.h" #endif #include "UIScale9SpriteTest.h" @@ -55,6 +55,7 @@ static const char* s_testArray[] = "UIImageViewTest", "UIImageViewTest_Scale9", "UIImageViewTest_ContentSize", + "UILoadingBarTest_Left", "UILoadingBarTest_Right", "UILoadingBarTest_Left_Scale9", @@ -63,17 +64,17 @@ static const char* s_testArray[] = "UITextAtlasTest", "UITextTest", "UITextTest_LineWrap", - "UILabelTest_Effect", - "UITextTest_TTF", "UITextBMFontTest", + "UITextFieldTest", "UITextFieldTest_MaxLength", "UITextFieldTest_Password", "UITextFieldTest_LineWrap", "UITextFieldTest_TrueTypeFont", "UITextFieldTest_PlaceHolderColor", + "UILayoutTest", "UILayoutTest_Color", "UILayoutTest_Gradient", @@ -90,15 +91,21 @@ static const char* s_testArray[] = "UIScrollViewTest_ScrollToPercentBothDirection", "UIScrollViewTest_ScrollToPercentBothDirection_Bounce", "UIScrollViewNestTest", + "UIScrollViewRotated", + "UIPageViewTest", "UIPageViewButtonTest", "UIPageViewCustomScrollThreshold", "UIPageViewTouchPropagationTest", + "UIPageViewDynamicAddAndRemoveTest", + "UIListViewTest_Vertical", "UIListViewTest_Horizontal", "UIWidgetAddNodeTest", + "UIRichTextTest", + "UIFocusTest-HBox", "UIFocusTest-VBox", "UIFocusTest-NestedLayout1", @@ -108,7 +115,7 @@ static const char* s_testArray[] = #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) "UIVideoPlayerTest", #endif -#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) "UIWebViewTest", #endif "UIScale9SpriteTest", @@ -317,6 +324,9 @@ Scene *UISceneManager::currentUIScene() return UIScrollViewTest_ScrollToPercentBothDirection_Bounce::sceneWithTitle(s_testArray[_currentUISceneId]); case kUIScrollViewNestTest: return UIScrollViewNestTest::sceneWithTitle(s_testArray[_currentUISceneId]); + case kUIScrollViewRotated: + return UIScrollViewRotated::sceneWithTitle(s_testArray[_currentUISceneId]); + case kUIPageViewTest: return UIPageViewTest::sceneWithTitle(s_testArray[_currentUISceneId]); case kUIPageViewButtonTest: @@ -325,7 +335,8 @@ Scene *UISceneManager::currentUIScene() return UIPageViewCustomScrollThreshold::sceneWithTitle(s_testArray[_currentUISceneId]); case kUIPageViewTouchPropagationTest: return UIPageViewTouchPropagationTest::sceneWithTitle(s_testArray[_currentUISceneId]); - + case kUIPageViewDynamicAddAndRemoveTest: + return UIPageViewDynamicAddAndRemoveTest::sceneWithTitle(s_testArray[_currentUISceneId]); case kUIListViewTest_Vertical: return UIListViewTest_Vertical::sceneWithTitle(s_testArray[_currentUISceneId]); @@ -353,7 +364,7 @@ Scene *UISceneManager::currentUIScene() case kUIVideoPlayerTest: return VideoPlayerTest::sceneWithTitle(s_testArray[_currentUISceneId]); #endif -#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) case KWebViewTest: return WebViewTest::sceneWithTitle(s_testArray[_currentUISceneId]); #endif diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.h index 1a3debeaa3..cc49fb4f40 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager.h @@ -82,10 +82,13 @@ enum kUIScrollViewTest_ScrollToPercentBothDirection, kUIScrollViewTest_ScrollToPercentBothDirection_Bounce, kUIScrollViewNestTest, + kUIScrollViewRotated, + kUIPageViewTest, kUIPageViewButtonTest, kUIPageViewCustomScrollThreshold, kUIPageViewTouchPropagationTest, + kUIPageViewDynamicAddAndRemoveTest, kUIListViewTest_Vertical, kUIListViewTest_Horizontal, kUIWidgetAddNodeTest, @@ -99,7 +102,7 @@ enum #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) kUIVideoPlayerTest, #endif -#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS) KWebViewTest, #endif kUIScale9SpriteTest, diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager_Editor.cpp index 886d815f69..ec531c72eb 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager_Editor.cpp @@ -36,12 +36,14 @@ static const char* s_testArray[] = "UILayoutTest_Gradient_Editor", "UILayoutTest_BackGroundImage_Editor", "UILayoutTest_BackGroundImage_Scale9_Editor", + /* "UILayoutTest_Layout_Linear_Vertical_Editor", "UILayoutTest_Layout_Linear_Horizontal_Editor", "UILayoutTest_Layout_Relative_Align_Parent_Editor", "UILayoutTest_Layout_Relative_Location_Editor", "UIListViewTest_Vertical_Editor", "UIListViewTest_Horizontal_Editor", + */ "UIPageViewTest_Editor", "UIScrollViewTest_Vertical_Editor", "UIScrollViewTest_Horizontal_Editor", @@ -147,6 +149,7 @@ Scene* UISceneManager_Editor::currentUIScene() case kUILayoutTest_BackGroundImage_Scale9_Editor: return UILayoutTest_BackGroundImage_Scale9_Editor::sceneWithTitle(s_testArray[_currentUISceneId]); + /* case kUILayoutTest_Layout_Linear_Vertical_Editor: return UILayoutTest_Layout_Linear_Vertical_Editor::sceneWithTitle(s_testArray[_currentUISceneId]); @@ -164,6 +167,7 @@ Scene* UISceneManager_Editor::currentUIScene() case kUIListViewTest_Horizontal_Editor: return UIListViewTest_Horizontal_Editor::sceneWithTitle(s_testArray[_currentUISceneId]); + */ case kUIPageViewTest_Editor: return UIPageViewTest_Editor::sceneWithTitle(s_testArray[_currentUISceneId]); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager_Editor.h index 800c0491f1..f721cb941d 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISceneManager_Editor.h @@ -46,12 +46,14 @@ enum kUILayoutTest_Gradient_Editor, kUILayoutTest_BackGroundImage_Editor, kUILayoutTest_BackGroundImage_Scale9_Editor, + /* kUILayoutTest_Layout_Linear_Vertical_Editor, kUILayoutTest_Layout_Linear_Horizontal_Editor, kUILayoutTest_Layout_Relative_Align_Parent_Editor, kUILayoutTest_Layout_Relative_Location_Editor, kUIListViewTest_Vertical_Editor, kUIListViewTest_Horizontal_Editor, + */ kUIPageViewTest_Editor, kUIScrollViewTest_Vertical_Editor, kUIScrollViewTest_Horizontal_Editor, diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene_Editor.cpp index cbb113cc8e..3167007133 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScene_Editor.cpp @@ -27,24 +27,34 @@ bool UIScene_Editor::init() addChild(_touchGroup); //add switch - MenuItem* pLoadJsonItem = MenuItemFont::create("Switch to Binary Load"); - MenuItem* pLoadBinaryItem = MenuItemFont::create("Switch to Json Load"); - + MenuItem* pLoadJsonItem = MenuItemFont::create("Switch to Windows Json Load"); + MenuItem* pLoadBinaryItem = MenuItemFont::create("Switch to Windows Binary Load"); + MenuItem* pLoadJsonItemCrossPlatForm = MenuItemFont::create("Switch to Cross PlatForm Json Load"); + MenuItem* pLoadBinaryItemCrossPlatForm = MenuItemFont::create("Switch to Cross PlatForm Binary Load"); + pLoadJsonItem->setTag(1); pLoadBinaryItem->setTag(2); + pLoadJsonItemCrossPlatForm->setTag(3); + pLoadBinaryItemCrossPlatForm->setTag(4); + Vector array;; - array.pushBack(pLoadJsonItem); array.pushBack(pLoadBinaryItem); + array.pushBack(pLoadJsonItemCrossPlatForm); + array.pushBack(pLoadBinaryItemCrossPlatForm); + array.pushBack(pLoadJsonItem); MenuItemToggle *pToggleItem = MenuItemToggle::createWithCallback(CC_CALLBACK_1(UIScene_Editor::switchLoadMethod,this), array); - pToggleItem->setPosition(Vec2(VisibleRect::right().x - 150, VisibleRect::top().y - 50));; + pToggleItem->setTag(1); + + MenuItem* selectedItem = pToggleItem->getSelectedItem(); + pToggleItem->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y - selectedItem->getContentSize().height * 3.75f)); Menu* pMenu =Menu::create(pToggleItem, nullptr); pMenu->setPosition( Vec2::ZERO ); - addChild(pMenu, 1); +// addChild(pMenu, 1, 1); return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.cpp index e73cb4d4e5..1c57acae30 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.cpp @@ -39,7 +39,7 @@ bool UIScrollViewTest_Vertical::init() // Create the scrollview by vertical ui::ScrollView* scrollView = ui::ScrollView::create(); - scrollView->setContentSize(Size(280.0f, 150.0f)); + scrollView->setContentSize(Size(280.0f, 100.0f)); Size backgroundSize = background->getContentSize(); scrollView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, @@ -71,7 +71,8 @@ bool UIScrollViewTest_Vertical::init() imageView->setPosition(Vec2(innerWidth / 2.0f, imageView->getContentSize().height / 2.0f)); scrollView->addChild(imageView); - + + return true; } @@ -425,3 +426,81 @@ bool UIScrollViewNestTest::init() return false; } +// UIScrollViewRotated + +UIScrollViewRotated::UIScrollViewRotated() +: _displayValueLabel(nullptr) +{ +} + +UIScrollViewRotated::~UIScrollViewRotated() +{ +} + +bool UIScrollViewRotated::init() +{ + if (UIScene::init()) + { + Size widgetSize = _widget->getContentSize(); + + // Add a label in which the scrollview alert will be displayed + _displayValueLabel = Text::create("Move by vertical direction", "fonts/Marker Felt.ttf", 32); + _displayValueLabel->setAnchorPoint(Vec2(0.5f, -1.0f)); + _displayValueLabel->setPosition(Vec2(widgetSize.width / 2.0f, + widgetSize.height / 2.0f + _displayValueLabel->getContentSize().height * 1.5f)); + _uiLayer->addChild(_displayValueLabel); + + // Add the alert + Text* alert = Text::create("ScrollView vertical", "fonts/Marker Felt.ttf", 30); + alert->setColor(Color3B(159, 168, 176)); + alert->setPosition(Vec2(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getContentSize().height * 3.075f)); + _uiLayer->addChild(alert); + + Layout* root = static_cast(_uiLayer->getChildByTag(81)); + + Layout* background = dynamic_cast(root->getChildByName("background_Panel")); + + // Create the scrollview by vertical + ui::ScrollView* scrollView = ui::ScrollView::create(); + scrollView->setContentSize(Size(280.0f, 150.0f)); + scrollView->setDirection(ui::ScrollView::Direction::BOTH); + Size backgroundSize = background->getContentSize(); + scrollView->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f + + (backgroundSize.width - scrollView->getContentSize().width) / 2.0f, + (widgetSize.height - backgroundSize.height) / 2.0f + + (backgroundSize.height - scrollView->getContentSize().height) / 2.0f + 100) ); + scrollView->setRotation(45); + _uiLayer->addChild(scrollView); + + ImageView* imageView = ImageView::create("cocosui/ccicon.png"); + + float innerWidth = scrollView->getContentSize().width; + float innerHeight = scrollView->getContentSize().height + imageView->getContentSize().height; + + scrollView->setInnerContainerSize(Size(innerWidth, innerHeight)); + + Button* button = Button::create("cocosui/animationbuttonnormal.png", "cocosui/animationbuttonpressed.png"); + button->setPosition(Vec2(innerWidth / 2.0f, scrollView->getInnerContainerSize().height - button->getContentSize().height / 2.0f)); + scrollView->addChild(button); + + Button* titleButton = Button::create("cocosui/backtotopnormal.png", "cocosui/backtotoppressed.png"); + titleButton->setTitleText("Title Button"); + titleButton->setPosition(Vec2(innerWidth / 2.0f, button->getBottomBoundary() - button->getContentSize().height)); + scrollView->addChild(titleButton); + + Button* button_scale9 = Button::create("cocosui/button.png", "cocosui/buttonHighlighted.png"); + button_scale9->setScale9Enabled(true); + button_scale9->setContentSize(Size(100.0f, button_scale9->getVirtualRendererSize().height)); + button_scale9->setPosition(Vec2(innerWidth / 2.0f, titleButton->getBottomBoundary() - titleButton->getContentSize().height)); + scrollView->addChild(button_scale9); + + imageView->setPosition(Vec2(innerWidth / 2.0f, imageView->getContentSize().height / 2.0f)); + scrollView->addChild(imageView); + + + + return true; + } + + return false; +} \ No newline at end of file diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.h index bbb78949d3..766a11002b 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.h @@ -99,4 +99,16 @@ protected: Text* _displayValueLabel; }; +class UIScrollViewRotated : public UIScene +{ +public: + UIScrollViewRotated(); + ~UIScrollViewRotated(); + bool init(); + +protected: + UI_SCENE_CREATE_FUNC(UIScrollViewRotated) + Text* _displayValueLabel; +}; + #endif /* defined(__TestCpp__UIScrollViewTest__) */ diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.cpp index f2d4eefdb6..c218c1c453 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.cpp @@ -1,6 +1,7 @@ #include "UIScrollViewTest_Editor.h" +#include "VisibleRect.h" // UIScrollViewTest_Vertical_Editor @@ -19,21 +20,66 @@ void UIScrollViewTest_Vertical_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Vertical_Editor/ui_scrollview_editor_1.json")); - - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Vertical_Editor/ui_scrollview_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Vertical_Editor/windows_ui_scrollview_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Vertical_Editor/windows_ui_scrollview_editor_1.csb")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Vertical_Editor/crossplatform_UIScrollView_Vertical_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Vertical_Editor/crossplatform_UIScrollView_Vertical_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -75,10 +121,21 @@ bool UIScrollViewTest_Vertical_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Vertical_Editor/ui_scrollview_editor_1.json")); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Vertical_Editor/crossplatform_UIScrollView_Vertical_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); - + this->configureGUIScene(); + + /* + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 3.75f)); + */ + return true; } @@ -102,21 +159,66 @@ void UIScrollViewTest_Horizontal_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Horizontal_Editor/ui_scrollview_horizontal_editor_1.json")); - - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Horizontal_Editor/ui_scrollview_horizontal_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Horizontal_Editor/windows_ui_scrollview_horizontal_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Horizontal_Editor/windows_ui_scrollview_horizontal_editor_1.csb")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Horizontal_Editor/crossplatform_UIScrollView_Horizontal_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Horizontal_Editor/crossplatform_UIScrollView_Horizontal_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -159,9 +261,21 @@ bool UIScrollViewTest_Horizontal_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Horizontal_Editor/ui_scrollview_horizontal_editor_1.json")); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Horizontal_Editor/crossplatform_UIScrollView_Horizontal_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); + this->configureGUIScene(); + + /* + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 3.75f)); + */ + return true; } @@ -185,21 +299,66 @@ void UIScrollViewTest_Both_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Both_Editor/ui_scrollview_both_editor_1.json")); - - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Both_Editor/ui_scrollview_both_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Both_Editor/windows_ui_scrollview_both_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Both_Editor/windows_ui_scrollview_both_editor_1.csb")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Both_Editor/crossplatform_UIScrollView_Both_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Both_Editor/crossplatform_UIScrollView_Both_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -240,9 +399,21 @@ bool UIScrollViewTest_Both_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Both_Editor/ui_scrollview_both_editor_1.json")); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView_Editor/UIScrollView_Both_Editor/crossplatform_UIScrollView_Both_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); + this->configureGUIScene(); + + /* + Menu* menu = static_cast(getChildByTag(1)); + MenuItemToggle* menuItemToggle = static_cast(menu->getChildByTag(1)); + MenuItem* selectedItem = menuItemToggle->getSelectedItem(); + menuItemToggle->setPosition(Vec2(VisibleRect::center().x, VisibleRect::center().y + selectedItem->getContentSize().height * 3.75f)); + */ + return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.cpp index b27625bb9b..f4f222cc4a 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.cpp @@ -20,21 +20,66 @@ void UISliderTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UISlider_Editor/ui_slider_editor_1.json")); - - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UISlider_Editor/ui_slider_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UISlider_Editor/windows_ui_slider_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UISlider_Editor/windows_ui_slider_editor_1.csb")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UISlider_Editor/crossplatform_UISlider_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UISlider_Editor/crossplatform_UISlider_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -64,9 +109,12 @@ bool UISliderTest_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UISlider_Editor/ui_slider_editor_1.json")); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UISlider_Editor/crossplatform_UISlider_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); - + this->configureGUIScene(); _displayValueLabel = Text::create(); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.cpp index bade2452e9..26482f9acd 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.cpp @@ -7,21 +7,66 @@ void UITextAtlasTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabelAtlas_Editor/ui_labelatlas_editor_1.json")); - - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILabelAtlas_Editor/ui_labelatlas_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabelAtlas_Editor/windows_ui_labelatlas_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILabelAtlas_Editor/windows_ui_labelatlas_editor_1.csb")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabelAtlas_Editor/crossplatform_UILabelAtlas_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabelAtlas_Editor/crossplatform_UILabelAtlas_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -44,10 +89,14 @@ bool UITextAtlasTest_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabelAtlas_Editor/ui_labelatlas_editor_1.json")); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabelAtlas_Editor/crossplatform_UILabelAtlas_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); - + this->configureGUIScene(); + return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.cpp index 788f994a02..acdf131bef 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.cpp @@ -8,21 +8,66 @@ void UITextBMFontTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabelBMFont_Editor/ui_labelbmfont_editor_1.json")); - - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILabelBMFont_Editor/ui_labelbmfont_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabelBMFont_Editor/windows_ui_labelbmfont_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILabelBMFont_Editor/windows_ui_labelbmfont_editor_1.csb")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabelBMFont_Editor/crossplatform_UILabelBMFont_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabelBMFont_Editor/crossplatform_UILabelBMFont_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -45,10 +90,14 @@ bool UITextBMFontTest_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabelBMFont_Editor/ui_labelbmfont_editor_1.json")); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabelBMFont_Editor/crossplatform_UILabelBMFont_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); this->configureGUIScene(); + return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.cpp index 8fb8f98623..346def5b2c 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.cpp @@ -20,21 +20,66 @@ void UITextFieldTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UITextField_Editor/ui_textfield_editor_1.json")); - - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UITextField_Editor/ui_textfield_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UITextField_Editor/windows_ui_textfield_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UITextField_Editor/windows_ui_textfield_editor_1.csb")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UITextField_Editor/crossplatform_UITextField_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UITextField_Editor/crossplatform_UITextField_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -66,9 +111,12 @@ bool UITextFieldTest_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UITextField_Editor/ui_textfield_editor_1.json")); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UITextField_Editor/crossplatform_UITextField_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); - + this->configureGUIScene(); _displayValueLabel = Text::create(); diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.cpp index f80c4c6f8b..f6495be06e 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.cpp @@ -11,21 +11,66 @@ void UITextTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabel_Editor/ui_label_editor_1.json")); - - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILabel_Editor/ui_label_editor_1.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabel_Editor/windows_ui_label_editor_1.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UILabel_Editor/windows_ui_label_editor_1.csb")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabel_Editor/crossplatform_UILabel_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabel_Editor/crossplatform_UILabel_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -49,9 +94,14 @@ bool UITextTest_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILabel_Editor/ui_label_editor_1.json")); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabel_Editor/crossplatform_UILabel_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); + this->configureGUIScene(); + return true; } diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.cpp index 313cedbc84..82763cc987 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.cpp @@ -19,21 +19,66 @@ void UIWidgetAddNodeTest_Editor::switchLoadMethod(cocos2d::Ref *pSender) { MenuItemToggle *item = (MenuItemToggle*)pSender; - if (item->getSelectedIndex() == 0){ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIWidgetAddNode_Editor/ui_widget_add_node_editor.json")); - - _touchGroup->addChild(_layout); - - this->configureGUIScene(); - }else{ - _layout->removeFromParentAndCleanup(true); - - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIWidgetAddNode_Editor/ui_widget_add_node_editor.csb")); - _touchGroup->addChild(_layout); - - this->configureGUIScene(); + switch (item->getSelectedIndex()) + { + case 0: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIWidgetAddNode_Editor/windows_ui_widget_add_node_editor.json")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 1: + { + _layout->removeFromParentAndCleanup(true); + + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromBinaryFile("cocosui/UIEditorTest/UIWidgetAddNode_Editor/windows_ui_widget_add_node_editor.csb")); + + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 2: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIWidgetAddNode_Editor/crossplatform_UIWidgetAddNode_Editor_1.ExportJson"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + case 3: + { + _layout->removeFromParentAndCleanup(true); + + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIWidgetAddNode_Editor/crossplatform_UIWidgetAddNode_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); + _touchGroup->addChild(_layout); + + this->configureGUIScene(); + + break; + } + + default: + break; } } @@ -69,9 +114,14 @@ bool UIWidgetAddNodeTest_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIWidgetAddNode_Editor/ui_widget_add_node_editor.json")); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIWidgetAddNode_Editor/crossplatform_UIWidgetAddNode_Editor_1.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); + this->configureGUIScene(); + return true; } diff --git a/tests/cpp-tests/Classes/controller.cpp b/tests/cpp-tests/Classes/controller.cpp index 0d0498b695..2a20d6a19d 100644 --- a/tests/cpp-tests/Classes/controller.cpp +++ b/tests/cpp-tests/Classes/controller.cpp @@ -256,7 +256,7 @@ void TestController::onMouseScroll(Event *event) s_tCurPos = nextPos; } -#if (CC_TARGET_PLATFORM != CC_PLATFORM_WINRT) + void TestController::runAllTests(int fd) { AppDelegate* app = (AppDelegate *)Application::getInstance(); @@ -519,7 +519,7 @@ void TestController::autorun() hints.ai_flags = 0; hints.ai_protocol = 0; /* Any protocol */ -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) WSADATA wsaData; WSAStartup(MAKEWORD(2, 2),&wsaData); #endif @@ -545,7 +545,7 @@ void TestController::autorun() if (connect(sfd, rp->ai_addr, rp->ai_addrlen) != -1) break; /* Success */ -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) closesocket(sfd); #else close(sfd); @@ -581,7 +581,7 @@ void TestController::autorun() strcpy(cmd, tmp.c_str()); send(sfd,cmd,strlen(cmd),0); wait(1); - #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) +#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) closesocket(sfd); WSACleanup(); #else @@ -590,5 +590,4 @@ void TestController::autorun() return; } -#endif diff --git a/tests/cpp-tests/Resources/ActionTimeline/boy_1.csb b/tests/cpp-tests/Resources/ActionTimeline/boy_1.csb new file mode 100644 index 0000000000..d1c9d44e5c Binary files /dev/null and b/tests/cpp-tests/Resources/ActionTimeline/boy_1.csb differ diff --git a/tests/cpp-tests/Resources/Images/elephant1_Diffuse.png b/tests/cpp-tests/Resources/Images/elephant1_Diffuse.png new file mode 100755 index 0000000000..05f532150f Binary files /dev/null and b/tests/cpp-tests/Resources/Images/elephant1_Diffuse.png differ diff --git a/tests/cpp-tests/Resources/Images/elephant1_Normal.png b/tests/cpp-tests/Resources/Images/elephant1_Normal.png new file mode 100755 index 0000000000..c5c837817a Binary files /dev/null and b/tests/cpp-tests/Resources/Images/elephant1_Normal.png differ diff --git a/tests/cpp-tests/Resources/Manifests/AMTestScene1/project.manifest b/tests/cpp-tests/Resources/Manifests/AMTestScene1/project.manifest new file mode 100644 index 0000000000..06a0da1f85 --- /dev/null +++ b/tests/cpp-tests/Resources/Manifests/AMTestScene1/project.manifest @@ -0,0 +1,16 @@ +{ + "packageUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene1/", + "remoteManifestUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene1/project_dev.manifest", + "remoteVersionUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene1/version_dev.manifest", + "version" : "1.0.0", + "engineVersion" : "3.0 beta", + + "assets" : { + "Images/background1.jpg" : { + "md5" : "..." + } + }, + + "searchPaths" : [ + ] +} \ No newline at end of file diff --git a/tests/cpp-tests/Resources/Manifests/AMTestScene2/project.manifest b/tests/cpp-tests/Resources/Manifests/AMTestScene2/project.manifest new file mode 100644 index 0000000000..ad698e4d19 --- /dev/null +++ b/tests/cpp-tests/Resources/Manifests/AMTestScene2/project.manifest @@ -0,0 +1,15 @@ +{ + "packageUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene2/", + "remoteManifestUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene2/project_dev.manifest", + "version" : "1.0.0", + "engineVersion" : "3.0 beta", + + "assets" : { + "Images/background2.jpg" : { + "md5" : "..." + } + }, + + "searchPaths" : [ + ] +} \ No newline at end of file diff --git a/tests/cpp-tests/Resources/Manifests/AMTestScene3/project.manifest b/tests/cpp-tests/Resources/Manifests/AMTestScene3/project.manifest new file mode 100644 index 0000000000..bea34649b0 --- /dev/null +++ b/tests/cpp-tests/Resources/Manifests/AMTestScene3/project.manifest @@ -0,0 +1,16 @@ +{ + "packageUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene3/", + "remoteManifestUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene3/project_dev.manifest", + "remoteVersionUrl" : "http://tools.itharbors.com/assets_manager/AMTestScene3/version_dev.manifest", + "version" : "1.0.0", + "engineVersion" : "3.0 beta", + + "assets" : { + "Images/background3.png" : { + "md5" : "..." + } + }, + + "searchPaths" : [ + ] +} \ No newline at end of file diff --git a/tests/cpp-tests/Resources/Shaders3D/Normal.frag b/tests/cpp-tests/Resources/Shaders3D/Normal.frag new file mode 100755 index 0000000000..7f1f3d6735 --- /dev/null +++ b/tests/cpp-tests/Resources/Shaders3D/Normal.frag @@ -0,0 +1,31 @@ +#ifdef GL_ES +precision mediump float; +#endif + +varying vec4 v_fragmentColor; +varying vec2 v_texCoord; +uniform sampler2D u_normalMap; +uniform float u_kBump; +uniform vec4 u_lightPosInLocalSpace; +uniform vec2 u_contentSize; +uniform vec3 u_diffuseL; +void main(void) +{ + vec4 texColor=texture2D(CC_Texture0, v_texCoord); + vec3 normal=texture2D(u_normalMap, v_texCoord).rgb; + normal=normal*2.0-1.0; + normal.y=-normal.y; + if(u_kBump!=1.0) + { + //if the vertex.z mult kBump, then the normal.z should div kBump and re-normalize + normal=vec3(normal.x,normal.y,normal.z/u_kBump); + normal=normalize(normal); + } + vec4 curPixelPosInLocalSpace=vec4(v_texCoord.x*u_contentSize.x,(1.0-v_texCoord.y)*u_contentSize.y,0.0,1.0); + vec4 lightDir=normalize(curPixelPosInLocalSpace-u_lightPosInLocalSpace); + vec3 posToLight=-lightDir.xyz; + float normDotPosToLight=max(0.0,dot(normal,posToLight)); + vec4 diffuse=vec4(normDotPosToLight*u_diffuseL,1.0); + vec4 ambient=vec4(0.5,0.5,0.5,1); + gl_FragColor=texColor*vec4(vec3(diffuse+ambient),diffuse.a);; +} \ No newline at end of file diff --git a/tests/cpp-tests/Resources/TileMaps/grass.png b/tests/cpp-tests/Resources/TileMaps/grass.png new file mode 100755 index 0000000000..adb1ffbc1b Binary files /dev/null and b/tests/cpp-tests/Resources/TileMaps/grass.png differ diff --git a/tests/cpp-tests/Resources/TileMaps/grass01.png b/tests/cpp-tests/Resources/TileMaps/grass01.png new file mode 100755 index 0000000000..748e3c9540 Binary files /dev/null and b/tests/cpp-tests/Resources/TileMaps/grass01.png differ diff --git a/tests/cpp-tests/Resources/TileMaps/test-staggered.tmx b/tests/cpp-tests/Resources/TileMaps/test-staggered.tmx new file mode 100755 index 0000000000..4e9d500cf8 --- /dev/null +++ b/tests/cpp-tests/Resources/TileMaps/test-staggered.tmx @@ -0,0 +1,19 @@ + + + + + + + + + + + eJxjZGBgYCSAAQDYAAo= + + + + + eJxjYEAAJiSMDAAAnAAH + + + diff --git a/tests/cpp-tests/Resources/ccs-res b/tests/cpp-tests/Resources/ccs-res index c307f62357..a3f7dba196 160000 --- a/tests/cpp-tests/Resources/ccs-res +++ b/tests/cpp-tests/Resources/ccs-res @@ -1 +1 @@ -Subproject commit c307f62357e42d2e7e671f4741f855dc8a5fde3a +Subproject commit a3f7dba196a8c2cfffc1809e64a2166a487c4818 diff --git a/tests/cpp-tests/Resources/spine/goblins-ffd.atlas b/tests/cpp-tests/Resources/spine/goblins-ffd.atlas new file mode 100644 index 0000000000..b977b07f61 --- /dev/null +++ b/tests/cpp-tests/Resources/spine/goblins-ffd.atlas @@ -0,0 +1,292 @@ + +goblins-ffd.png +format: RGBA8888 +filter: Linear,Linear +repeat: none +dagger + rotate: false + xy: 2, 28 + size: 26, 108 + orig: 26, 108 + offset: 0, 0 + index: -1 +goblin/eyes-closed + rotate: false + xy: 137, 29 + size: 34, 12 + orig: 34, 12 + offset: 0, 0 + index: -1 +goblin/head + rotate: false + xy: 26, 357 + size: 103, 66 + orig: 103, 66 + offset: 0, 0 + index: -1 +goblin/left-arm + rotate: false + xy: 30, 28 + size: 37, 35 + orig: 37, 35 + offset: 0, 0 + index: -1 +goblin/left-foot + rotate: false + xy: 134, 260 + size: 65, 31 + orig: 65, 31 + offset: 0, 0 + index: -1 +goblin/left-hand + rotate: false + xy: 69, 25 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +goblin/left-lower-leg + rotate: false + xy: 134, 293 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblin/left-shoulder + rotate: false + xy: 137, 43 + size: 29, 44 + orig: 29, 44 + offset: 0, 0 + index: -1 +goblin/left-upper-leg + rotate: false + xy: 30, 65 + size: 33, 73 + orig: 33, 73 + offset: 0, 0 + index: -1 +goblin/neck + rotate: false + xy: 201, 387 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +goblin/pelvis + rotate: false + xy: 26, 140 + size: 62, 43 + orig: 62, 43 + offset: 0, 0 + index: -1 +goblin/right-arm + rotate: false + xy: 171, 84 + size: 23, 50 + orig: 23, 50 + offset: 0, 0 + index: -1 +goblin/right-foot + rotate: false + xy: 134, 225 + size: 63, 33 + orig: 63, 33 + offset: 0, 0 + index: -1 +goblin/right-hand + rotate: false + xy: 204, 258 + size: 36, 37 + orig: 36, 37 + offset: 0, 0 + index: -1 +goblin/right-lower-leg + rotate: false + xy: 201, 430 + size: 36, 76 + orig: 36, 76 + offset: 0, 0 + index: -1 +goblin/right-shoulder + rotate: false + xy: 130, 89 + size: 39, 45 + orig: 39, 45 + offset: 0, 0 + index: -1 +goblin/right-upper-leg + rotate: false + xy: 98, 214 + size: 34, 63 + orig: 34, 63 + offset: 0, 0 + index: -1 +goblin/torso + rotate: false + xy: 131, 410 + size: 68, 96 + orig: 68, 96 + offset: 0, 0 + index: -1 +goblin/undie-straps + rotate: false + xy: 2, 7 + size: 55, 19 + orig: 55, 19 + offset: 0, 0 + index: -1 +goblin/undies + rotate: false + xy: 199, 227 + size: 36, 29 + orig: 36, 29 + offset: 0, 0 + index: -1 +goblingirl/eyes-closed + rotate: false + xy: 59, 2 + size: 37, 21 + orig: 37, 21 + offset: 0, 0 + index: -1 +goblingirl/head + rotate: false + xy: 26, 425 + size: 103, 81 + orig: 103, 81 + offset: 0, 0 + index: -1 +goblingirl/left-arm + rotate: false + xy: 201, 190 + size: 37, 35 + orig: 37, 35 + offset: 0, 0 + index: -1 +goblingirl/left-foot + rotate: false + xy: 134, 192 + size: 65, 31 + orig: 65, 31 + offset: 0, 0 + index: -1 +goblingirl/left-hand + rotate: false + xy: 196, 109 + size: 35, 40 + orig: 35, 40 + offset: 0, 0 + index: -1 +goblingirl/left-lower-leg + rotate: false + xy: 169, 293 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblingirl/left-shoulder + rotate: false + xy: 107, 30 + size: 28, 46 + orig: 28, 46 + offset: 0, 0 + index: -1 +goblingirl/left-upper-leg + rotate: false + xy: 65, 68 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblingirl/neck + rotate: false + xy: 204, 297 + size: 35, 41 + orig: 35, 41 + offset: 0, 0 + index: -1 +goblingirl/pelvis + rotate: false + xy: 131, 365 + size: 62, 43 + orig: 62, 43 + offset: 0, 0 + index: -1 +goblingirl/right-arm + rotate: false + xy: 100, 97 + size: 28, 50 + orig: 28, 50 + offset: 0, 0 + index: -1 +goblingirl/right-foot + rotate: false + xy: 134, 157 + size: 63, 33 + orig: 63, 33 + offset: 0, 0 + index: -1 +goblingirl/right-hand + rotate: false + xy: 199, 151 + size: 36, 37 + orig: 36, 37 + offset: 0, 0 + index: -1 +goblingirl/right-lower-leg + rotate: false + xy: 96, 279 + size: 36, 76 + orig: 36, 76 + offset: 0, 0 + index: -1 +goblingirl/right-shoulder + rotate: false + xy: 204, 340 + size: 39, 45 + orig: 39, 45 + offset: 0, 0 + index: -1 +goblingirl/right-upper-leg + rotate: false + xy: 98, 149 + size: 34, 63 + orig: 34, 63 + offset: 0, 0 + index: -1 +goblingirl/torso + rotate: false + xy: 26, 259 + size: 68, 96 + orig: 68, 96 + offset: 0, 0 + index: -1 +goblingirl/undie-straps + rotate: false + xy: 134, 136 + size: 55, 19 + orig: 55, 19 + offset: 0, 0 + index: -1 +goblingirl/undies + rotate: false + xy: 196, 78 + size: 36, 29 + orig: 36, 29 + offset: 0, 0 + index: -1 +shield + rotate: false + xy: 26, 185 + size: 70, 72 + orig: 70, 72 + offset: 0, 0 + index: -1 +spear + rotate: false + xy: 2, 138 + size: 22, 368 + orig: 22, 368 + offset: 0, 0 + index: -1 diff --git a/tests/cpp-tests/Resources/spine/goblins-ffd.json b/tests/cpp-tests/Resources/spine/goblins-ffd.json new file mode 100644 index 0000000000..b35360ad1f --- /dev/null +++ b/tests/cpp-tests/Resources/spine/goblins-ffd.json @@ -0,0 +1,1081 @@ +{ +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 }, + { "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 }, + { "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }, + { "name": "right upper leg", "parent": "hip", "length": 42.45, "x": -20.07, "y": -6.83, "rotation": -97.49 }, + { "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 }, + { "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 }, + { "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 }, + { "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 }, + { "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 }, + { "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 }, + { "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 }, + { "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 }, + { "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 }, + { "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 }, + { "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 }, + { "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 }, + { "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 }, + { "name": "spear1", "parent": "left hand", "length": 65.06, "x": 0.48, "y": 17.03, "rotation": 102.43 }, + { "name": "spear2", "parent": "spear1", "length": 61.41, "x": 65.05, "y": 0.04, "rotation": 0.9 }, + { "name": "spear3", "parent": "spear2", "length": 76.79, "x": 61.88, "y": 0.57, "rotation": -0.9 } +], +"slots": [ + { "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" }, + { "name": "left arm", "bone": "left arm", "attachment": "left arm" }, + { "name": "left hand item", "bone": "left hand", "attachment": "spear" }, + { "name": "left hand", "bone": "left hand", "attachment": "left hand" }, + { "name": "left foot", "bone": "left foot", "attachment": "left foot" }, + { "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" }, + { "name": "left upper leg", "bone": "left upper leg", "attachment": "left upper leg" }, + { "name": "neck", "bone": "neck", "attachment": "neck" }, + { "name": "torso", "bone": "torso", "attachment": "torso" }, + { "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" }, + { "name": "right foot", "bone": "right foot", "attachment": "right foot" }, + { "name": "right lower leg", "bone": "right lower leg", "attachment": "right lower leg" }, + { "name": "undie straps", "bone": "pelvis", "attachment": "undie straps" }, + { "name": "undies", "bone": "pelvis", "attachment": "undies" }, + { "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" }, + { "name": "head", "bone": "head", "attachment": "head" }, + { "name": "eyes", "bone": "head" }, + { "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" }, + { "name": "right arm", "bone": "right arm", "attachment": "right arm" }, + { "name": "right hand thumb", "bone": "right hand", "attachment": "right hand thumb" }, + { "name": "right hand item", "bone": "right hand", "attachment": "dagger" }, + { "name": "right hand", "bone": "right hand", "attachment": "right hand" }, + { "name": "right hand item 2", "bone": "right hand", "attachment": "shield" } +], +"skins": { + "default": { + "left hand item": { + "dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 }, + "spear": { + "type": "skinnedmesh", + "uvs": [ 1, 0.11236, 0.77096, 0.13278, 0.76608, 0.21781, 0.75642, 0.386, 0.74723, 0.54607, 0.72117, 1, 0.28838, 1, 0.24208, 0.54327, 0.22589, 0.38361, 0.2089, 0.21605, 0.20043, 0.13242, 0, 0.11519, 0.4527, 0, 0.58399, 0 ], + "triangles": [ 5, 6, 4, 6, 7, 4, 4, 7, 3, 2, 9, 1, 9, 10, 1, 10, 12, 1, 12, 13, 1, 1, 13, 0, 10, 11, 12, 3, 8, 2, 8, 9, 2, 7, 8, 3 ], + "vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.51, 20, -0.31, -6.16, 0.48, 2, 18, 64.73, -5.03, 0.5, 19, -0.4, -5.06, 0.49, 1, 16, 4.56, 23.91, 1, 1, 16, 41.7, -138.95, 1, 1, 16, 32.42, -141.1, 1, 1, 16, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.5, 19, 0.53, 6.59, 0.49, 2, 19, 62.18, 6.66, 0.51, 20, 0.2, 6.09, 0.48, 1, 20, 30.96, 6.61, 1, 1, 20, 37.26, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ], + "edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ], + "hull": 14, + "width": 22, + "height": 368 + } + }, + "right hand item": { + "dagger": { + "type": "mesh", + "uvs": [ 0.78091, 0.38453, 1, 0.38405, 1, 0.44881, 0.73953, 0.4687, 0.74641, 0.81344, 0.34022, 1, 0.15434, 1, 0.11303, 0.78858, 0.23007, 0.47367, 0, 0.45047, 0, 0.38621, 0.22367, 0.38573, 0.24384, 0, 1, 0 ], + "triangles": [ 0, 12, 13, 11, 12, 0, 0, 1, 2, 9, 10, 11, 3, 11, 0, 3, 0, 2, 8, 11, 3, 9, 11, 8, 5, 6, 7, 4, 5, 8, 4, 8, 3, 5, 7, 8 ], + "vertices": [ 15.49, -12.82, 21.13, -13.57, 20.16, -20.49, 13.15, -21.67, 8.13, -58.56, -5.13, -77.04, -9.92, -76.36, -7.79, -53.6, -0.03, -20.36, -5.6, -17.04, -4.63, -10.17, 1.12, -10.93, 7.46, 30.24, 26.93, 27.49 ], + "edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ], + "hull": 14, + "width": 26, + "height": 108 + } + }, + "right hand item 2": { + "shield": { "rotation": 93.49, "width": 70, "height": 72 } + } + }, + "goblin": { + "eyes": { + "eyes closed": { "name": "goblin/eyes-closed", "x": 29.19, "y": -24.89, "rotation": -88.92, "width": 34, "height": 12 } + }, + "head": { + "head": { + "name": "goblin/head", + "type": "mesh", + "uvs": [ 0, 0.60494, 0.14172, 0.5145, 0.24218, 0.55229, 0.32667, 0.67806, 0.37969, 0.79352, 0.53505, 0.93014, 0.86056, 1, 0.94071, 0.94169, 0.92098, 0.69923, 0.9888, 0.65497, 0.99003, 0.51643, 0.89632, 0.43561, 0.94487, 0.41916, 1, 0.39713, 1, 0.2836, 0.94017, 0.27027, 0.87906, 0.25666, 0.80754, 0.16044, 0.66698, 0.01997, 0.4734, 0.01805, 0.29215, 0.19893, 0.25392, 0.31823, 0.09117, 0.324, 0, 0.44331, 0.43271, 0.69153, 0.466, 0.47794, 0.35996, 0.31246, 0.73473, 0.68593, 0.72215, 0.57425, 0.88179, 0.5583, 0.80267, 0.51015 ], + "triangles": [ 26, 20, 19, 21, 20, 26, 15, 14, 13, 12, 15, 13, 11, 16, 15, 11, 15, 12, 26, 17, 25, 18, 26, 19, 17, 26, 18, 30, 25, 17, 30, 17, 16, 30, 16, 11, 1, 22, 21, 23, 22, 1, 2, 1, 21, 2, 21, 26, 29, 30, 11, 29, 11, 10, 28, 25, 30, 0, 23, 1, 9, 29, 10, 25, 3, 2, 25, 2, 26, 29, 27, 28, 29, 28, 30, 24, 3, 25, 24, 25, 28, 24, 28, 27, 8, 29, 9, 27, 29, 8, 4, 3, 24, 5, 24, 27, 4, 24, 5, 7, 6, 27, 7, 27, 8, 5, 27, 6 ], + "vertices": [ 14.56, 50.42, 23.12, 35.47, 17.46, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.6, 23.41, 35.89, 40.17, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.8, -24.31, 17.2, -40.65, 20.68, -33.02 ], + "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ], + "hull": 24, + "width": 103, + "height": 66 + } + }, + "left arm": { + "left arm": { + "name": "goblin/left-arm", + "type": "mesh", + "uvs": [ 0.68992, 0.29284, 1, 0.46364, 1, 0.74643, 0.84089, 1, 0.66344, 1, 0.33765, 0.64284, 0, 0.44124, 0, 0, 0.34295, 0 ], + "triangles": [ 6, 7, 8, 5, 6, 8, 0, 5, 8, 0, 1, 2, 5, 0, 2, 4, 5, 2, 3, 4, 2 ], + "vertices": [ 18.6, 8.81, 32.19, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ], + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ], + "hull": 9, + "width": 37, + "height": 35 + } + }, + "left foot": { + "left foot": { + "name": "goblin/left-foot", + "type": "mesh", + "uvs": [ 0.15733, 0.31873, 0.08195, 0.78502, 0.15884, 0.99366, 0.41633, 0.96804, 0.68822, 0.97636, 1, 0.96388, 0.99385, 0.73501, 0.85294, 0.51862, 0.61479, 0.31056, 0.46991, 0, 0.48032, 0.75604, 0.75994, 0.77706 ], + "triangles": [ 0, 9, 8, 10, 0, 8, 10, 8, 7, 11, 10, 7, 11, 7, 6, 1, 0, 10, 11, 6, 5, 3, 1, 10, 4, 10, 11, 4, 11, 5, 3, 10, 4, 2, 1, 3 ], + "vertices": [ 2.28, 13.07, -1.76, -1.64, 3.59, -7.8, 20.25, -6.04, 37.91, -5.27, 58.12, -3.71, 57.31, 3.34, 47.78, 9.51, 31.95, 15.05, 21.99, 24.11, 24.03, 0.75, 42.21, 1.16 ], + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ], + "hull": 10, + "width": 65, + "height": 31 + } + }, + "left hand": { + "left hand": { + "name": "goblin/left-hand", + "type": "mesh", + "uvs": [ 0.518, 0.12578, 1, 0.16285, 0.99788, 0.50578, 0.69745, 1, 0.37445, 1, 0, 0.80051, 0, 0.42792, 0.17601, 0, 0.43567, 0 ], + "triangles": [ 2, 0, 1, 0, 5, 6, 6, 7, 0, 0, 7, 8, 3, 4, 0, 4, 5, 0, 2, 3, 0 ], + "vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.48, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ], + "edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ], + "hull": 9, + "width": 36, + "height": 41 + } + }, + "left lower leg": { + "left lower leg": { + "name": "goblin/left-lower-leg", + "type": "mesh", + "uvs": [ 0.95508, 0.20749, 0.81927, 0.65213, 0.94754, 0.77308, 0.67842, 0.97346, 0.46463, 1, 0.26845, 1, 0.04963, 0.90706, 0.2106, 0.60115, 0.07478, 0.40195, 0.18545, 0, 0.28857, 0 ], + "triangles": [ 10, 8, 9, 1, 7, 10, 7, 8, 10, 0, 1, 10, 1, 4, 7, 3, 1, 2, 5, 6, 7, 7, 4, 5, 1, 3, 4 ], + "vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.19, -18.29 ], + "edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ], + "hull": 11, + "width": 33, + "height": 70 + } + }, + "left shoulder": { + "left shoulder": { + "name": "goblin/left-shoulder", + "type": "mesh", + "uvs": [ 0.7377, 0.40692, 1, 0.75237, 1, 1, 0.62046, 1, 0.26184, 0.56601, 0, 0.29783, 0, 0, 0.44115, 0 ], + "triangles": [ 5, 6, 7, 4, 5, 7, 4, 7, 0, 3, 4, 0, 3, 0, 1, 3, 1, 2 ], + "vertices": [ 15.18, 5.74, 32.17, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.74, -4.66, 6.54 ], + "edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ], + "hull": 8, + "width": 29, + "height": 44 + } + }, + "left upper leg": { + "left upper leg": { + "name": "goblin/left-upper-leg", + "type": "mesh", + "uvs": [ 1, 0.12167, 1, 0.54873, 0.91067, 0.78907, 0.76567, 1, 0.3087, 0.9579, 0, 0.68777, 0, 0.219, 0.51961, 0, 0.87552, 0 ], + "triangles": [ 7, 8, 0, 5, 6, 7, 0, 1, 7, 4, 5, 7, 1, 4, 7, 2, 4, 1, 3, 4, 2 ], + "vertices": [ 2.33, 13.06, 33.5, 12.57, 51, 9.34, 66.32, 4.31, 63, -10.71, 43.13, -20.58, 8.91, -20.04, -6.79, -2.64, -6.61, 9.1 ], + "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ], + "hull": 9, + "width": 33, + "height": 73 + } + }, + "neck": { + "neck": { + "name": "goblin/neck", + "type": "mesh", + "uvs": [ 0.81967, 0.27365, 0.92101, 0.82048, 0.47134, 1, 0.15679, 0.9354, 0, 0.7556, 0.19268, 0.51833, 0.15468, 0.35706, 0, 0.21989, 0.13568, 0, 0.68878, 0, 0.70145, 0.53872 ], + "triangles": [ 6, 8, 9, 6, 9, 0, 7, 8, 6, 10, 5, 6, 0, 10, 6, 10, 0, 1, 3, 4, 5, 2, 5, 10, 2, 10, 1, 3, 5, 2 ], + "vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.05, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ], + "edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ], + "hull": 10, + "width": 36, + "height": 41 + } + }, + "pelvis": { + "pelvis": { + "name": "goblin/pelvis", + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 2, 3, 1, 3, 0 ], + "vertices": [ 25.38, -20.73, -36.61, -20.73, -36.61, 22.26, 25.38, 22.26 ], + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "hull": 4, + "width": 62, + "height": 43 + } + }, + "right arm": { + "right arm": { + "name": "goblin/right-arm", + "type": "mesh", + "uvs": [ 1, 0.09223, 1, 0.8501, 0.72058, 1, 0.24384, 1, 0, 0.86558, 0.20822, 0.10919, 0.50903, 0, 0.85342, 0 ], + "triangles": [ 6, 7, 0, 2, 3, 5, 4, 5, 3, 1, 6, 0, 6, 2, 5, 1, 2, 6 ], + "vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.18 ], + "edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ], + "hull": 8, + "width": 23, + "height": 50 + } + }, + "right foot": { + "right foot": { + "name": "goblin/right-foot", + "type": "mesh", + "uvs": [ 0.40851, 0.0047, 0.59087, 0.33404, 0.75959, 0.48311, 0.88907, 0.59751, 0.97532, 0.89391, 0.90385, 1, 0.6722, 1, 0.38633, 1, 0.08074, 1, 0, 0.88921, 0, 0.65984, 0, 0.46577, 0.0906, 0.0988, 0.305, 0, 0.47461, 0.71257, 0.715, 0.74681 ], + "triangles": [ 1, 10, 11, 1, 13, 0, 14, 1, 2, 1, 12, 13, 12, 1, 11, 14, 10, 1, 15, 14, 2, 15, 2, 3, 9, 10, 14, 15, 3, 4, 7, 8, 9, 14, 7, 9, 6, 14, 15, 5, 6, 15, 7, 14, 6, 4, 5, 15 ], + "vertices": [ 17.36, 25.99, 29.13, 15.44, 39.89, 10.8, 48.14, 7.24, 53.84, -2.38, 49.43, -6, 34.84, -6.39, 16.84, -6.87, -2.4, -7.38, -7.58, -3.86, -7.78, 3.7, -7.95, 10.1, -2.57, 22.36, 10.84, 25.97, 22.14, 2.75, 37.31, 2.03 ], + "edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ], + "hull": 14, + "width": 63, + "height": 33 + } + }, + "right hand": { + "right hand": { + "name": "goblin/right-hand", + "type": "mesh", + "uvs": [ 0.17957, 0, 0, 0.44772, 0, 0.79734, 0.20057, 0.94264, 0.55057, 1, 0.8539, 1, 0.89823, 0.82004, 0.8259, 0.74285, 0.84223, 0.49993, 0.96356, 0.34102, 0.66023, 0 ], + "triangles": [ 8, 10, 9, 0, 10, 1, 8, 2, 1, 8, 1, 10, 7, 3, 8, 3, 2, 8, 4, 3, 7, 5, 7, 6, 4, 7, 5 ], + "vertices": [ -10.82, -9.45, 5.95, -15.34, 18.88, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ], + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ], + "hull": 11, + "width": 36, + "height": 37 + } + }, + "right hand thumb": { + "right hand thumb": { + "name": "goblin/right-hand", + "type": "mesh", + "uvs": [ 0.88538, 0.22262, 0.76167, 0.3594, 0.75088, 0.78308, 0.95326, 0.84981, 1, 0.60302 ], + "triangles": [ 1, 0, 4, 2, 1, 4, 3, 2, 4 ], + "vertices": [ -2.82, 15.97, 2.4, 11.71, 18.08, 11.9, 20.27, 19.27, 11.09, 20.62 ], + "edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ], + "hull": 5, + "width": 36, + "height": 37 + } + }, + "right lower leg": { + "right lower leg": { + "name": "goblin/right-lower-leg", + "type": "mesh", + "uvs": [ 1, 0.27261, 0.81312, 0.52592, 0.79587, 0.71795, 0.95544, 0.80988, 0.85193, 0.95493, 0.47241, 1, 0.14033, 1, 0, 0.8773, 0.14896, 0.67914, 0.1619, 0.30325, 0.60611, 0 ], + "triangles": [ 1, 10, 0, 9, 10, 1, 8, 9, 1, 2, 8, 1, 4, 2, 3, 6, 7, 8, 5, 6, 8, 2, 5, 8, 4, 5, 2 ], + "vertices": [ 6.26, 8.46, 23.32, 8.04, 37.1, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.77, -1.03, 58.99, -9.19, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ], + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ], + "hull": 11, + "width": 36, + "height": 76 + } + }, + "right shoulder": { + "right shoulder": { + "name": "goblin/right-shoulder", + "type": "mesh", + "uvs": [ 0.62008, 0.03708, 0.92131, 0.09048, 1, 0.38319, 0.72049, 0.6937, 0.31656, 1, 0, 1, 0, 0.75106, 0.28233, 0.49988 ], + "triangles": [ 2, 3, 0, 2, 0, 1, 7, 0, 3, 4, 5, 6, 4, 7, 3, 4, 6, 7 ], + "vertices": [ -3.17, -11.05, -9, -0.57, -1.01, 10.33, 16.69, 11.17, 37.41, 8.2, 45.45, -1.16, 36.95, -8.46, 21.2, -7.47 ], + "edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ], + "hull": 8, + "width": 39, + "height": 45 + } + }, + "right upper leg": { + "right upper leg": { + "name": "goblin/right-upper-leg", + "type": "mesh", + "uvs": [ 0.27018, 0, 0.11618, 0.18177, 0, 0.70688, 0, 0.89577, 0.26668, 1, 0.48718, 1, 0.67618, 0.83532, 1, 0.5161, 1, 0.25543, 0.74618, 0.0571 ], + "triangles": [ 9, 8, 7, 9, 1, 0, 6, 9, 7, 6, 1, 9, 2, 1, 6, 4, 3, 2, 6, 4, 2, 5, 4, 6 ], + "vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.51, 10.18, 19.13, 18.47, 2.85, 16.32, -8.4, 6.14 ], + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ], + "hull": 10, + "width": 34, + "height": 63 + } + }, + "torso": { + "torso": { + "name": "goblin/torso", + "type": "mesh", + "uvs": [ 0, 0.33287, 0.15945, 0.46488, 0.15761, 0.60314, 0.15502, 0.79806, 0.32807, 0.93478, 0.6875, 1, 0.80731, 1, 1, 0.77763, 1, 0.66147, 1, 0.56703, 0.93207, 0.4771, 0.86944, 0.39416, 0.83837, 0.226, 0.68085, 0, 0.14836, 0, 0, 0.07199, 0.78734, 0.86249, 0.43679, 0.79649, 0.76738, 0.61733, 0.44345, 0.58747, 0.54329, 0.38316, 0.77692, 0.73446, 0.66478, 0.51012 ], + "triangles": [ 0, 15, 14, 20, 14, 13, 20, 13, 12, 1, 0, 14, 20, 12, 11, 20, 1, 14, 22, 20, 11, 22, 11, 10, 19, 1, 20, 19, 20, 22, 2, 1, 19, 18, 22, 10, 18, 10, 9, 19, 22, 18, 18, 9, 8, 21, 18, 8, 21, 8, 7, 17, 2, 19, 21, 17, 19, 21, 19, 18, 3, 2, 17, 16, 21, 7, 17, 21, 16, 4, 3, 17, 5, 17, 16, 4, 17, 5, 6, 16, 7, 5, 16, 6 ], + "vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.88, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ], + "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ], + "hull": 16, + "width": 68, + "height": 96 + } + }, + "undie straps": { + "undie straps": { + "name": "goblin/undie-straps", + "type": "mesh", + "uvs": [ 0.36097, 0.44959, 0.66297, 0.60591, 1, 0.19486, 1, 0.57117, 0.75897, 1, 0.38697, 1, 0, 0.26433, 0, 0, 0.12497, 0 ], + "triangles": [ 6, 7, 8, 6, 8, 0, 3, 1, 2, 5, 0, 1, 6, 0, 5, 4, 1, 3, 5, 1, 4 ], + "vertices": [ -10.56, 12.87, 6.53, 9.9, 25.62, 17.71, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ], + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ], + "hull": 9, + "width": 55, + "height": 19 + } + }, + "undies": { + "undies": { + "name": "goblin/undies", + "type": "mesh", + "uvs": [ 0, 0.32029, 0.14893, 0.59457, 0.22437, 1, 0.35909, 1, 0.50998, 1, 0.79559, 0.58453, 0.9842, 0.28015, 1, 0.00588, 0.46957, 0.17646, 0, 0.03933, 0.48843, 0.59122, 0.48114, 0.43099 ], + "triangles": [ 6, 8, 7, 0, 9, 8, 11, 8, 6, 0, 8, 11, 5, 11, 6, 10, 11, 5, 1, 0, 11, 1, 11, 10, 3, 2, 1, 10, 3, 1, 4, 10, 5, 3, 10, 4 ], + "vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.59, 22.22, 6.11, 22.92, 14.05, 3.75, 9.44, -13.08, 13.71, 4.21, -2.59, 4.03, 2.05 ], + "edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ], + "hull": 10, + "width": 36, + "height": 29 + } + } + }, + "goblingirl": { + "eyes": { + "eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 } + }, + "head": { + "head": { "name": "goblingirl/head", "x": 27.71, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 } + }, + "left arm": { + "left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.42, "rotation": 33.05, "width": 37, "height": 35 } + }, + "left foot": { + "left foot": { "name": "goblingirl/left-foot", "x": 25.17, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 } + }, + "left hand": { + "left hand": { + "name": "goblingirl/left-hand", + "x": 4.34, + "y": 2.39, + "scaleX": 0.896, + "scaleY": 0.896, + "rotation": 30.34, + "width": 35, + "height": 40 + } + }, + "left lower leg": { + "left lower leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.6, "rotation": 105.75, "width": 33, "height": 70 } + }, + "left shoulder": { + "left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.8, "y": -0.42, "rotation": 61.21, "width": 28, "height": 46 } + }, + "left upper leg": { + "left upper leg": { "name": "goblingirl/left-upper-leg", "x": 30.21, "y": -2.95, "rotation": 89.09, "width": 33, "height": 70 } + }, + "neck": { + "neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.14, "rotation": -98.86, "width": 35, "height": 41 } + }, + "pelvis": { + "pelvis": { "name": "goblingirl/pelvis", "x": -3.87, "y": 3.18, "width": 62, "height": 43 } + }, + "right arm": { + "right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.52, "width": 28, "height": 50 } + }, + "right foot": { + "right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.52, "width": 63, "height": 33 } + }, + "right hand": { + "right hand": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 } + }, + "right hand thumb": { + "right hand thumb": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 } + }, + "right lower leg": { + "right lower leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.27, "rotation": 111.83, "width": 36, "height": 76 } + }, + "right shoulder": { + "right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.45, "rotation": 129.85, "width": 39, "height": 45 } + }, + "right upper leg": { + "right upper leg": { "name": "goblingirl/right-upper-leg", "x": 19.69, "y": 2.13, "rotation": 97.49, "width": 34, "height": 63 } + }, + "torso": { + "torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.74, "width": 68, "height": 96 } + }, + "undie straps": { + "undie straps": { "name": "goblingirl/undie-straps", "x": -1.51, "y": 14.18, "width": 55, "height": 19 } + }, + "undies": { + "undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 } + } + } +}, +"animations": { + "walk": { + "slots": { + "eyes": { + "attachment": [ + { "time": 0.7, "name": "eyes closed" }, + { "time": 0.8, "name": null } + ] + } + }, + "bones": { + "left upper leg": { + "rotate": [ + { "time": 0, "angle": -26.55 }, + { "time": 0.1333, "angle": -8.78 }, + { "time": 0.2333, "angle": 9.51 }, + { "time": 0.3666, "angle": 30.74 }, + { "time": 0.5, "angle": 25.33 }, + { "time": 0.6333, "angle": 26.11 }, + { "time": 0.7333, "angle": 7.45 }, + { "time": 0.8666, "angle": -21.19 }, + { "time": 1, "angle": -26.55 } + ], + "translate": [ + { "time": 0, "x": -1.32, "y": 1.7 }, + { "time": 0.3666, "x": -0.06, "y": 2.42 }, + { "time": 1, "x": -1.32, "y": 1.7 } + ] + }, + "right upper leg": { + "rotate": [ + { "time": 0, "angle": 42.45 }, + { + "time": 0.1333, + "angle": 49.86, + "curve": [ 0.414, 0, 0.705, 0.99 ] + }, + { "time": 0.2333, "angle": 22.51 }, + { "time": 0.5, "angle": -16.93 }, + { "time": 0.6333, "angle": 1.89 }, + { + "time": 0.7333, + "angle": 34.86, + "curve": [ 0.462, 0.11, 1, 1 ] + }, + { + "time": 0.8666, + "angle": 58.68, + "curve": [ 0.5, 0.02, 1, 1 ] + }, + { "time": 1, "angle": 42.45 } + ], + "translate": [ + { "time": 0, "x": 6.23, "y": 0 }, + { "time": 0.2333, "x": 2.14, "y": 2.4 }, + { "time": 0.5, "x": 2.44, "y": 4.8 }, + { "time": 1, "x": 6.23, "y": 0 } + ] + }, + "left lower leg": { + "rotate": [ + { "time": 0, "angle": -18.05 }, + { "time": 0.1333, "angle": -63.5 }, + { "time": 0.2333, "angle": -83.01 }, + { "time": 0.5, "angle": 5.11 }, + { "time": 0.6333, "angle": -28.29 }, + { "time": 0.7333, "angle": -27.52 }, + { "time": 0.8666, "angle": 3.53 }, + { "time": 1, "angle": -18.05 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2333, "x": 2.55, "y": -0.47 }, + { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "left foot": { + "rotate": [ + { "time": 0, "angle": -14.56 }, + { "time": 0.1333, "angle": -10.42 }, + { "time": 0.2333, "angle": -5.01 }, + { "time": 0.3, "angle": 6.67 }, + { "time": 0.3666, "angle": 3.87 }, + { "time": 0.5, "angle": -3.87 }, + { "time": 0.6333, "angle": 2.78 }, + { "time": 0.7333, "angle": -11.99 }, + { "time": 0.8666, "angle": -12.45 }, + { "time": 1, "angle": -14.56 } + ] + }, + "right shoulder": { + "rotate": [ + { + "time": 0, + "angle": 5.29, + "curve": [ 0.264, 0, 0.75, 1 ] + }, + { "time": 0.6333, "angle": 6.65 }, + { "time": 1, "angle": 5.29 } + ] + }, + "right arm": { + "rotate": [ + { + "time": 0, + "angle": -4.02, + "curve": [ 0.267, 0, 0.804, 0.99 ] + }, + { + "time": 0.6333, + "angle": 19.78, + "curve": [ 0.307, 0, 0.787, 0.99 ] + }, + { "time": 1, "angle": -4.02 } + ] + }, + "right hand": { + "rotate": [ + { "time": 0, "angle": 8.98 }, + { "time": 0.6333, "angle": 0.51 }, + { "time": 1, "angle": 8.98 } + ] + }, + "left shoulder": { + "rotate": [ + { + "time": 0, + "angle": 6.25, + "curve": [ 0.339, 0, 0.683, 1 ] + }, + { + "time": 0.5, + "angle": -11.78, + "curve": [ 0.281, 0, 0.686, 0.99 ] + }, + { "time": 1, "angle": 6.25 } + ], + "translate": [ + { "time": 0, "x": 1.15, "y": 0.23 } + ] + }, + "left hand": { + "rotate": [ + { + "time": 0, + "angle": -21.23, + "curve": [ 0.295, 0, 0.755, 0.98 ] + }, + { + "time": 0.5, + "angle": -27.28, + "curve": [ 0.241, 0, 0.75, 0.97 ] + }, + { "time": 1, "angle": -21.23 } + ] + }, + "left arm": { + "rotate": [ + { + "time": 0, + "angle": 28.37, + "curve": [ 0.339, 0, 0.683, 1 ] + }, + { + "time": 0.5, + "angle": 60.09, + "curve": [ 0.281, 0, 0.686, 0.99 ] + }, + { "time": 1, "angle": 28.37 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -10.28 }, + { + "time": 0.1333, + "angle": -15.38, + "curve": [ 0.545, 0, 0.818, 1 ] + }, + { + "time": 0.3666, + "angle": -9.78, + "curve": [ 0.58, 0.17, 0.669, 0.99 ] + }, + { + "time": 0.6333, + "angle": -15.75, + "curve": [ 0.235, 0.01, 0.795, 1 ] + }, + { + "time": 0.8666, + "angle": -7.06, + "curve": [ 0.209, 0, 0.816, 0.98 ] + }, + { "time": 1, "angle": -10.28 } + ], + "translate": [ + { "time": 0, "x": -3.72, "y": -0.01 } + ] + }, + "right foot": { + "rotate": [ + { "time": 0, "angle": -5.25 }, + { "time": 0.2333, "angle": -17.76 }, + { "time": 0.3666, "angle": -20.09 }, + { "time": 0.5, "angle": -19.73 }, + { "time": 0.7333, "angle": -11.68 }, + { "time": 0.8, "angle": 4.46 }, + { "time": 0.8666, "angle": 0.46 }, + { "time": 1, "angle": -5.25 } + ] + }, + "right lower leg": { + "rotate": [ + { + "time": 0, + "angle": -3.39, + "curve": [ 0.316, 0.01, 0.741, 0.98 ] + }, + { + "time": 0.1333, + "angle": -43.21, + "curve": [ 0.414, 0, 0.705, 0.99 ] + }, + { "time": 0.2333, "angle": -25.98 }, + { "time": 0.5, "angle": -19.53 }, + { "time": 0.6333, "angle": -64.8 }, + { + "time": 0.7333, + "angle": -89.54, + "curve": [ 0.557, 0.18, 1, 1 ] + }, + { "time": 1, "angle": -3.39 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5, "x": 0, "y": 0 }, + { "time": 0.6333, "x": 2.18, "y": 0.21 }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": -8.4 }, + { + "time": 0.1333, + "x": 0, + "y": -9.35, + "curve": [ 0.326, 0.05, 0.674, 0.93 ] + }, + { + "time": 0.2333, + "x": 0, + "y": -0.59, + "curve": [ 0.325, 0.39, 0.643, 0.7 ] + }, + { "time": 0.3666, "x": 0, "y": -3.96 }, + { "time": 0.5, "x": 0, "y": -8.4 }, + { + "time": 0.6333, + "x": 0, + "y": -10, + "curve": [ 0.359, 0.47, 0.646, 0.74 ] + }, + { + "time": 0.7333, + "x": 0, + "y": -5.29, + "curve": [ 0.333, 0.36, 0.662, 0.69 ] + }, + { + "time": 0.8, + "x": 0, + "y": -2.49, + "curve": [ 0.322, 0.35, 0.651, 0.68 ] + }, + { "time": 0.8666, "x": 0, "y": -3.96 }, + { "time": 1, "x": 0, "y": -8.4 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 3.6 }, + { "time": 0.1333, "angle": 17.49 }, + { "time": 0.2333, "angle": 6.1 }, + { "time": 0.3666, "angle": 3.45 }, + { "time": 0.5, "angle": 5.17 }, + { "time": 0.6333, "angle": 18.36 }, + { "time": 0.7333, "angle": 6.09 }, + { "time": 0.8666, "angle": 2.28 }, + { "time": 1, "angle": 3.6 } + ] + }, + "head": { + "rotate": [ + { + "time": 0, + "angle": 3.6, + "curve": [ 0, 0, 0.704, 1.17 ] + }, + { "time": 0.1333, "angle": -0.2 }, + { "time": 0.2333, "angle": 6.1 }, + { "time": 0.3666, "angle": 3.45 }, + { + "time": 0.5, + "angle": 5.17, + "curve": [ 0, 0, 0.704, 1.61 ] + }, + { "time": 0.6666, "angle": 1.1 }, + { "time": 0.7333, "angle": 6.09 }, + { "time": 0.8666, "angle": 2.28 }, + { "time": 1, "angle": 3.6 } + ] + }, + "pelvis": { + "rotate": [ + { "time": 0, "angle": -1.33 } + ], + "translate": [ + { "time": 0, "x": 0.39, "y": -0.78 } + ] + }, + "spear1": { + "rotate": [ + { "time": 0, "angle": 1.84 }, + { "time": 0.2, "angle": -5.38 }, + { "time": 0.5, "angle": 2.95 }, + { "time": 0.7333, "angle": -3.67 }, + { "time": 1, "angle": 1.84 } + ] + }, + "spear2": { + "rotate": [ + { "time": 0, "angle": 1.84 }, + { "time": 0.2, "angle": -5.38 }, + { "time": 0.5, "angle": 2.95 }, + { "time": 0.7333, "angle": -3.67 }, + { "time": 1, "angle": 1.84 } + ] + }, + "spear3": { + "rotate": [ + { "time": 0, "angle": 3.64 }, + { "time": 0.2, "angle": -3.59 }, + { "time": 0.5, "angle": 4.74 }, + { "time": 0.7333, "angle": -1.87 }, + { "time": 1, "angle": 3.64 } + ] + } + }, + "ffd": { + "default": { + "left hand item": { + "spear": [ + { "time": 0 } + ] + }, + "right hand item": { + "dagger": [ + { + "time": 0, + "offset": 26, + "vertices": [ 2.34, 0.14 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "offset": 8, + "vertices": [ -1.19, 4.31, 0.07, 6.41, 1.66, 6.18, 1.75, 3.59 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1, + "offset": 26, + "vertices": [ 2.34, 0.14 ] + } + ] + } + }, + "goblin": { + "head": { + "head": [ + { + "time": 0, + "curve": [ 0.632, 0, 0.75, 1 ] + }, + { + "time": 0.2, + "vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08, -1.08, 0.08, -1.08, 0.08, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.3666, + "vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09, 1.47, 0.09, 1.47, 0.09, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09 ], + "curve": [ 0.621, 0, 0.75, 1 ] + }, + { + "time": 0.7, + "vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17, -1.17, -0.17, -1.17, -0.17, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.8666, + "vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08, 0.38, 0.08, 0.38, 0.08, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1 } + ] + }, + "left foot": { + "left foot": [ + { + "time": 0, + "offset": 8, + "vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ] + }, + { "time": 0.1333 }, + { + "time": 0.2333, + "offset": 8, + "vertices": [ -3.96, -2.34, -5.8, -12.47, -2.23, -12.99, 2.02, -9.1, 0, 0, 0, 0, 0, 0, -1.35, -5.28 ] + }, + { + "time": 0.3666, + "offset": 8, + "vertices": [ 0.66, 0.33, 0.33, 2.69, -0.48, 2.54, -1.13, 1.38, 0, 0, 0, 0, 0, 0, -0.11, 0.79 ] + }, + { "time": 0.5, "curve": "stepped" }, + { "time": 0.6333 }, + { + "time": 0.7333, + "offset": 8, + "vertices": [ -2.97, 9.4, -6.91, 19.92, -10.55, 18.41, -12.37, 12.38, -4.72, 6.3, 0, 0, -1.48, 4.88, -7.06, 10.7 ] + }, + { + "time": 0.8333, + "offset": 6, + "vertices": [ 1.05, 1.56, -2.52, 7.99, -5.52, 17.14, -8.93, 15.79, -10.73, 10.22, -4.23, 5.36, 0, 0, 0, 0, -5.83, 8.55 ] + }, + { + "time": 1, + "offset": 8, + "vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ] + } + ] + }, + "pelvis": { + "pelvis": [ + { "time": 0 }, + { + "time": 0.1333, + "offset": 6, + "vertices": [ -0.68, -4.13 ] + }, + { + "time": 0.3333, + "offset": 6, + "vertices": [ -1.04, -3.1 ] + }, + { + "time": 0.7, + "offset": 6, + "vertices": [ -1.42, -6.3 ] + }, + { + "time": 0.8666, + "offset": 6, + "vertices": [ -1.13, -1.79 ] + }, + { "time": 1 } + ] + }, + "right foot": { + "right foot": [ + { "time": 0 }, + { + "time": 0.1333, + "offset": 2, + "vertices": [ -2.81, 2.63, -2.35, 3.89, -1.99, 4.86, -0.93, 5.57, -0.48, 5.09, -0.34, 3.42, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31, 1.91, -1.32, 3.65 ] + }, + { + "time": 0.2333, + "offset": 2, + "vertices": [ -6.39, 6.41, -7.74, 8.27, -7.02, 11.35, -4.03, 13.93, -2.5, 12.62, -1.46, 7.58, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84, 2.61, -4.53, 7.92 ] + }, + { + "time": 0.3, + "offset": 2, + "vertices": [ -8.27, 6.68, -9.29, 10.13, -8.62, 14.71, -4.58, 18.81, -2.2, 17.1, -0.07, 9.9, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94, 2.38, -4.59, 10.01 ] + }, + { + "time": 0.3666, + "offset": 2, + "vertices": [ -10.47, 9.44, -13.36, 12.4, -14.32, 16.94, -9.24, 23.55, -5.51, 21.51, -1.19, 11.53, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14, 2.29, -6.63, 11.37 ] + }, + { + "time": 0.5, + "offset": 2, + "vertices": [ -5.42, 4.36, -10.59, 7.04, -11.64, 11.55, -6.19, 20.12, -1.45, 18.05, 4.86, 6.41, 2.81, 0.27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96, 4.94 ] + }, + { "time": 0.6333 }, + { + "time": 0.7333, + "offset": 4, + "vertices": [ 1.31, -6.84, -0.87, -12.54, -5.98, -14.08, -7.15, -11.63, -5.67, -4.83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06, -6.93 ] + }, + { + "time": 0.8, + "offset": 4, + "vertices": [ 0.65, -3.42, -0.43, -6.27, -2.99, -7.04, -3.57, -5.81, -2.83, -2.41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79, -1.28, 0, 0, 0, 0, -1.03, -3.46 ] + }, + { "time": 0.8666 } + ] + }, + "right hand": { + "right hand": [ + { + "time": 0, + "offset": 4, + "vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ] + }, + { "time": 0.5 }, + { + "time": 1, + "offset": 4, + "vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ] + } + ] + }, + "right lower leg": { + "right lower leg": [ + { "time": 0 }, + { + "time": 0.6, + "offset": 6, + "vertices": [ 1.8, -1.56 ] + }, + { "time": 1 } + ] + }, + "right upper leg": { + "right upper leg": [ + { + "time": 0, + "vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ] + }, + { "time": 0.3333 }, + { + "time": 0.8666, + "offset": 14, + "vertices": [ 0.13, -2.35, -1.33, -5.99, -1.35, -4.43 ] + }, + { + "time": 1, + "vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ] + } + ] + }, + "torso": { + "torso": [ + { + "time": 0, + "offset": 14, + "vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ] + }, + { + "time": 0.1333, + "offset": 14, + "vertices": [ 1.31, -0.59, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ] + }, + { + "time": 0.3, + "offset": 14, + "vertices": [ 6.03, -3.13, 7.55, -1.38, 6.79, 0.31, 4.23, 1.14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07, -5.16, 0, 0, 4, 0.27, 0, 0, 0, 0, 3.43, -3.52 ] + }, + { + "time": 0.5, + "offset": 14, + "vertices": [ 2.25, -0.87, 2.57, -0.56, 3.17, -0.57, 1.48, 0.99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22, -4.43, 0, 0, 1.48, 0.01, 0, 0, 0, 0, 0.31, -3.28, -1.53, 0.17 ] + }, + { + "time": 0.6333, + "offset": 14, + "vertices": [ 0.75, -1.51, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ] + }, + { + "time": 0.8666, + "offset": 14, + "vertices": [ 0.62, -1.26, 0.38, -2.2, 3.25, -0.5, 2.41, 2.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.66, -3.1, 0, 0, 2.3, -1.15, 0, 0, 0, 0, -0.07, -3.63, -0.93, 0.1 ] + }, + { + "time": 1, + "offset": 14, + "vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ] + } + ] + }, + "undie straps": { + "undie straps": [ + { + "time": 0, + "offset": 2, + "vertices": [ -1.77, 0.54, -0.96, -1.03, -0.39, -0.24, -1.77, 0.54 ] + }, + { + "time": 0.1333, + "offset": 2, + "vertices": [ -2.25, -1.03, -1.49, -4.23, -0.74, -2.84, -1.9, 0.54 ] + }, + { + "time": 0.3333, + "offset": 2, + "vertices": [ -2.37, -0.05, -0.49, 0.19, -0.9, 1.16, -1.6, 2.7, 0.96, 0.8 ] + }, + { + "time": 0.7, + "offset": 2, + "vertices": [ -0.91, -2.76, -0.62, -3.63, -0.84, -2.26, -2.56, 0.52 ] + }, + { + "time": 0.8666, + "offset": 2, + "vertices": [ -2.56, 0.52, -1.58, 0.32, -1.38, 0.32, -2.56, 0.52 ] + }, + { + "time": 1, + "offset": 2, + "vertices": [ -1.77, 0.54, -0.8, 0.53, -0.8, 0.53, -1.77, 0.54 ] + } + ] + }, + "undies": { + "undies": [ + { + "time": 0, + "vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ] + }, + { + "time": 0.1333, + "vertices": [ 0.72, 0.43, 7.2, -0.16, 1.37, 0, 1.37, 0, 1.37, 0, 1.25, 0.04, -0.99, -2.95, -1.37, -3.07, 1.37, 0, 0.35, -0.29, 2.99, -0.07, 3.9, -0.14 ] + }, + { + "time": 0.3333, + "vertices": [ 1.16, 0, 2.1, -0.23, 0, 0, 0, 0, 0, 0, 2.24, -0.24, -0.43, 0.6, -1.55, 0.48 ] + }, + { + "time": 0.5333, + "vertices": [ 1.16, 0, -0.23, -0.93, -2.92, 0.35, 0, 0, 0, 0, 0.49, -0.24, -0.64, -2.07, -0.64, -2.07 ] + }, + { + "time": 0.7, + "vertices": [ 1.86, -0.11, 4.66, -0.09, -1.76, 0.21, 0, 0, -0.56, 0.32, -1.13, -1.15, -2.19, -3.47, -1.29, -3.47, 0, 0, 0, 0, 1.58, -0.04, 2.65, 0.16 ] + }, + { + "time": 0.8333, + "vertices": [ 2.41, -0.2, 8.58, 0.58, -0.83, 0.1, 0, 0, -1.02, 0.59, -2.44, -1.87, -1.62, 0, 0, 0, 0, 0, 0, 0, 2.85, -0.08, 4.78, 0.3 ] + }, + { + "time": 0.8666, + "vertices": [ 2.01, -0.02, 8.98, 0.44, -0.2, 0.08, 0.45, 0, -0.35, 0.47, -1.84, -1.44, -0.79, 1.26, 0.53, 1.23, 0.45, 0, 0.11, -0.09, 3.28, -0.09, 5.13, 0.19 ] + }, + { + "time": 1, + "vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ] + } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/tests/cpp-tests/Resources/spine/goblins-ffd.png b/tests/cpp-tests/Resources/spine/goblins-ffd.png new file mode 100644 index 0000000000..f172361f2b Binary files /dev/null and b/tests/cpp-tests/Resources/spine/goblins-ffd.png differ diff --git a/tests/cpp-tests/Resources/spine/spineboy.atlas b/tests/cpp-tests/Resources/spine/spineboy.atlas old mode 100755 new mode 100644 index 1f482c0a1d..19c0934b10 --- a/tests/cpp-tests/Resources/spine/spineboy.atlas +++ b/tests/cpp-tests/Resources/spine/spineboy.atlas @@ -3,164 +3,192 @@ spineboy.png format: RGBA8888 filter: Linear,Linear repeat: none +eye_indifferent + rotate: true + xy: 389, 5 + size: 56, 53 + orig: 56, 53 + offset: 0, 0 + index: -1 +eye_surprised + rotate: false + xy: 580, 34 + size: 56, 53 + orig: 56, 53 + offset: 0, 0 + index: -1 +front_bracer + rotate: false + xy: 732, 85 + size: 35, 48 + orig: 35, 48 + offset: 0, 0 + index: -1 +front_fist_closed + rotate: false + xy: 556, 91 + size: 45, 49 + orig: 45, 49 + offset: 0, 0 + index: -1 +front_fist_open + rotate: false + xy: 668, 32 + size: 52, 52 + orig: 52, 52 + offset: 0, 0 + index: -1 +front_foot + rotate: false + xy: 924, 201 + size: 76, 41 + orig: 76, 41 + offset: 0, 0 + index: -1 +front_foot_bend1 + rotate: false + xy: 845, 200 + size: 77, 42 + orig: 77, 42 + offset: 0, 0 + index: -1 +front_foot_bend2 + rotate: false + xy: 778, 186 + size: 65, 56 + orig: 65, 56 + offset: 0, 0 + index: -1 +front_shin + rotate: true + xy: 444, 91 + size: 49, 110 + orig: 49, 110 + offset: 0, 0 + index: -1 +front_thigh + rotate: true + xy: 603, 89 + size: 29, 67 + orig: 29, 67 + offset: 0, 0 + index: -1 +front_upper_arm + rotate: true + xy: 672, 86 + size: 32, 58 + orig: 32, 58 + offset: 0, 0 + index: -1 +goggles + rotate: false + xy: 444, 142 + size: 157, 100 + orig: 157, 100 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 603, 120 + size: 126, 122 + orig: 126, 122 + offset: 0, 0 + index: -1 head rotate: false - xy: 1, 122 - size: 121, 132 - orig: 121, 132 + xy: 279, 63 + size: 163, 179 + orig: 163, 179 offset: 0, 0 index: -1 -torso +mouth_grind rotate: false - xy: 1, 28 - size: 68, 92 - orig: 68, 92 + xy: 845, 163 + size: 56, 35 + orig: 56, 35 offset: 0, 0 index: -1 -left-pant-bottom +mouth_oooo rotate: false - xy: 1, 4 - size: 44, 22 - orig: 44, 22 + xy: 842, 126 + size: 56, 35 + orig: 56, 35 offset: 0, 0 index: -1 -right-pant-bottom +mouth_smile rotate: false - xy: 47, 8 - size: 46, 18 - orig: 46, 18 + xy: 769, 97 + size: 56, 35 + orig: 56, 35 offset: 0, 0 index: -1 -right-upper-leg +muzzle rotate: false - xy: 71, 50 - size: 44, 70 - orig: 44, 70 - offset: 0, 0 - index: -1 -pelvis - rotate: false - xy: 95, 1 - size: 63, 47 - orig: 63, 47 - offset: 0, 0 - index: -1 -left-upper-leg - rotate: false - xy: 117, 53 - size: 33, 67 - orig: 33, 67 - offset: 0, 0 - index: -1 -right-foot - rotate: false - xy: 160, 224 - size: 67, 30 - orig: 67, 30 - offset: 0, 0 - index: -1 -left-shoulder - rotate: false - xy: 124, 201 - size: 34, 53 - orig: 34, 53 - offset: 0, 0 - index: -1 -left-ankle - rotate: false - xy: 229, 222 - size: 25, 32 - orig: 25, 32 - offset: 0, 0 - index: -1 -left-foot - rotate: false - xy: 160, 192 - size: 65, 30 - orig: 65, 30 + xy: 2, 2 + size: 275, 240 + orig: 277, 240 offset: 0, 0 index: -1 neck rotate: false - xy: 124, 171 - size: 34, 28 - orig: 34, 28 + xy: 903, 173 + size: 22, 25 + orig: 22, 25 offset: 0, 0 index: -1 -right-arm +rear_bracer rotate: false - xy: 124, 124 - size: 21, 45 - orig: 21, 45 + xy: 722, 40 + size: 34, 43 + orig: 34, 43 offset: 0, 0 index: -1 -right-ankle +rear_foot rotate: false - xy: 227, 190 - size: 25, 30 - orig: 25, 30 + xy: 444, 11 + size: 68, 36 + orig: 68, 36 offset: 0, 0 index: -1 -left-hand +rear_foot_bend1 rotate: false - xy: 147, 131 - size: 35, 38 - orig: 35, 38 + xy: 444, 49 + size: 70, 40 + orig: 70, 40 offset: 0, 0 index: -1 -left-arm +rear_foot_bend2 rotate: false - xy: 184, 161 - size: 35, 29 - orig: 35, 29 + xy: 778, 134 + size: 62, 50 + orig: 62, 50 offset: 0, 0 index: -1 -eyes-closed +rear_shin rotate: false - xy: 221, 161 - size: 34, 27 - orig: 34, 27 + xy: 731, 135 + size: 45, 107 + orig: 45, 107 offset: 0, 0 index: -1 -right-lower-leg +rear_thigh + rotate: true + xy: 516, 50 + size: 39, 62 + orig: 39, 62 + offset: 0, 0 + index: -1 +rear_upper_arm rotate: false - xy: 152, 65 - size: 51, 64 - orig: 51, 64 + xy: 638, 35 + size: 28, 52 + orig: 28, 52 offset: 0, 0 index: -1 -right-foot-idle - rotate: false - xy: 184, 131 - size: 53, 28 - orig: 53, 28 - offset: 0, 0 - index: -1 -left-lower-leg - rotate: false - xy: 205, 65 - size: 49, 64 - orig: 49, 64 - offset: 0, 0 - index: -1 -right-shoulder - rotate: false - xy: 160, 12 - size: 52, 51 - orig: 52, 51 - offset: 0, 0 - index: -1 -eyes - rotate: false - xy: 214, 36 - size: 34, 27 - orig: 34, 27 - offset: 0, 0 - index: -1 -right-hand - rotate: false - xy: 214, 2 - size: 32, 32 - orig: 32, 32 +torso + rotate: true + xy: 279, 2 + size: 59, 108 + orig: 59, 108 offset: 0, 0 index: -1 diff --git a/tests/cpp-tests/Resources/spine/spineboy.json b/tests/cpp-tests/Resources/spine/spineboy.json old mode 100755 new mode 100644 index 113e72c335..1ffa7aad57 --- a/tests/cpp-tests/Resources/spine/spineboy.json +++ b/tests/cpp-tests/Resources/spine/spineboy.json @@ -1,999 +1,2409 @@ { "bones": [ - { "name": "root" }, - { "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 }, - { "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 }, - { "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }, - { "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 }, - { "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 }, - { "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 }, - { "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 }, - { "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 }, - { "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 }, - { "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 }, - { "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 }, - { "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 }, - { "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 }, - { "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 }, - { "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 }, - { "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 }, - { "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 } + { "name": "hip", "y": 247.47 }, + { "name": "front_thigh", "parent": "hip", "length": 74.8, "x": -17.45, "y": -11.64, "rotation": -95.51, "color": "00ff04ff" }, + { "name": "rear_thigh", "parent": "hip", "length": 85.71, "x": 8.91, "y": -5.62, "rotation": -72.54, "color": "ff000dff" }, + { "name": "torso", "parent": "hip", "length": 127.55, "x": -1.61, "y": 4.9, "rotation": 103.82, "color": "e0da19ff" }, + { + "name": "front_shin", + "parent": "front_thigh", + "length": 128.76, + "x": 78.69, + "y": 1.6, + "rotation": -2.21, + "inheritScale": false, + "color": "00ff04ff" + }, + { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "x": 103.75, "y": 19.32, "rotation": 168.37, "color": "00ff04ff" }, + { "name": "neck", "parent": "torso", "length": 25.45, "x": 127.49, "y": -0.3, "rotation": -31.53, "color": "e0da19ff" }, + { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "x": 86.1, "y": -1.32, "rotation": -19.83, "color": "ff000dff" }, + { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "x": 92.35, "y": -19.22, "rotation": -169.55, "color": "ff000dff" }, + { + "name": "front_bracer", + "parent": "front_upper_arm", + "length": 40.57, + "x": 68.8, + "y": -0.68, + "rotation": 18.29, + "color": "00ff04ff" + }, + { "name": "front_foot", "parent": "front_shin", "length": 91.34, "x": 128.75, "y": -0.33, "rotation": 77.9, "color": "00ff04ff" }, + { "name": "head", "parent": "neck", "length": 263.57, "x": 27.66, "y": -0.25, "rotation": 23.18, "color": "e0da19ff" }, + { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "x": 51.35, "rotation": 23.15, "color": "ff000dff" }, + { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "x": 121.45, "y": -0.75, "rotation": 69.3, "color": "ff000dff" }, + { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "x": 40.56, "y": 0.19, "rotation": 12.43, "color": "00ff04ff" }, + { "name": "gun", "parent": "rear_bracer", "length": 43.1, "x": 34.42, "y": -0.45, "rotation": 5.34, "color": "ff000dff" }, + { "name": "gunTip", "parent": "gun", "x": 201.04, "y": 52.13, "rotation": 6.83, "color": "ff000dff" } ], "slots": [ - { "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" }, - { "name": "left arm", "bone": "left arm", "attachment": "left-arm" }, - { "name": "left hand", "bone": "left hand", "attachment": "left-hand" }, - { "name": "left foot", "bone": "left foot", "attachment": "left-foot" }, - { "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" }, - { "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" }, - { "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" }, - { "name": "right foot", "bone": "right foot", "attachment": "right-foot" }, - { "name": "right lower leg", "bone": "right lower leg", "attachment": "right-lower-leg" }, - { "name": "right upper leg", "bone": "right upper leg", "attachment": "right-upper-leg" }, - { "name": "torso", "bone": "torso", "attachment": "torso" }, + { "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" }, + { "name": "rear_bracer", "bone": "rear_bracer", "attachment": "rear_bracer" }, + { "name": "gun", "bone": "gun", "attachment": "gun" }, + { "name": "rear_foot", "bone": "rear_foot", "attachment": "rear_foot" }, + { "name": "rear_thigh", "bone": "rear_thigh", "attachment": "rear_thigh" }, + { "name": "rear_shin", "bone": "rear_shin", "attachment": "rear_shin" }, { "name": "neck", "bone": "neck", "attachment": "neck" }, + { "name": "torso", "bone": "torso", "attachment": "torso" }, + { "name": "front_upper_arm", "bone": "front_upper_arm", "attachment": "front_upper_arm" }, { "name": "head", "bone": "head", "attachment": "head" }, - { "name": "eyes", "bone": "head", "attachment": "eyes" }, - { "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder", "additive": true }, - { "name": "right arm", "bone": "right arm", "attachment": "right-arm" }, - { "name": "right hand", "bone": "right hand", "attachment": "right-hand" }, - { "name": "bb-head", "bone": "head", "attachment": "bb-head" } + { "name": "eye", "bone": "head", "attachment": "eye_indifferent" }, + { "name": "front_thigh", "bone": "front_thigh", "attachment": "front_thigh" }, + { "name": "front_foot", "bone": "front_foot", "attachment": "front_foot" }, + { "name": "front_shin", "bone": "front_shin", "attachment": "front_shin" }, + { "name": "mouth", "bone": "head", "attachment": "mouth_smile" }, + { "name": "goggles", "bone": "head", "attachment": "goggles" }, + { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, + { "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" }, + { "name": "muzzle", "bone": "gunTip", "additive": true } ], "skins": { "default": { - "bb-head": { - "bb-head": { - "type": "boundingbox", - "vertices": [ - 55.69696, - -44.60648, - 8.2226715, - -47.609646, - -11.244263, - -32.942703, - -0.05206299, - 35.835804, - 61.018433, - 43.227512, - 90.35846, - -16.054127, - 115.41275, - -32.817406, - 78.29431, - -56.05409 - ] - } + "eye": { + "eye_indifferent": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 }, + "eye_surprised": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 } }, - "eyes": { - "eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 }, - "eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 } + "front_bracer": { + "front_bracer": { "x": 12.03, "y": -1.67, "rotation": 79.59, "width": 58, "height": 80 } + }, + "front_fist": { + "front_fist_closed": { "x": 35.49, "y": 6, "rotation": 67.16, "width": 75, "height": 82 }, + "front_fist_open": { "x": 39.56, "y": 7.76, "rotation": 67.16, "width": 86, "height": 87 } + }, + "front_foot": { + "front_foot": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 126, "height": 69 }, + "front_foot_bend1": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 128, "height": 70 }, + "front_foot_bend2": { "x": 16.07, "y": 13.83, "rotation": 18.68, "width": 108, "height": 93 } + }, + "front_shin": { + "front_shin": { "x": 55.11, "y": -3.54, "rotation": 96.59, "width": 82, "height": 184 } + }, + "front_thigh": { + "front_thigh": { "x": 42.47, "y": 4.44, "rotation": 84.86, "width": 48, "height": 112 } + }, + "front_upper_arm": { + "front_upper_arm": { "x": 28.3, "y": 7.37, "rotation": 97.89, "width": 54, "height": 97 } + }, + "goggles": { + "goggles": { "x": 97.07, "y": 6.54, "rotation": -70.63, "width": 261, "height": 166 } + }, + "gun": { + "gun": { "x": 77.3, "y": 16.4, "rotation": 60.82, "width": 210, "height": 203 } }, "head": { - "head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 } + "head": { "x": 128.95, "y": 0.29, "rotation": -70.63, "width": 271, "height": 298 } }, - "left arm": { - "left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 } + "mouth": { + "mouth_grind": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, + "mouth_oooo": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, + "mouth_smile": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 } }, - "left foot": { - "left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 } - }, - "left hand": { - "left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 } - }, - "left lower leg": { - "left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 } - }, - "left shoulder": { - "left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 } - }, - "left upper leg": { - "left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 } + "muzzle": { + "muzzle": { "x": 18.25, "y": 5.44, "rotation": 0.15, "width": 462, "height": 400 } }, "neck": { - "neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 } + "neck": { "x": 9.76, "y": -3.01, "rotation": -55.22, "width": 36, "height": 41 } }, - "pelvis": { - "pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 } + "rear_bracer": { + "rear_bracer": { "x": 11.15, "y": -2.2, "rotation": 66.17, "width": 56, "height": 72 } }, - "right arm": { - "right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 } + "rear_foot": { + "rear_foot": { "x": 31.51, "y": 3.57, "rotation": 23.07, "width": 113, "height": 60 }, + "rear_foot_bend1": { "x": 34.39, "y": 4.8, "rotation": 23.07, "width": 117, "height": 66 }, + "rear_foot_bend2": { "x": 30.38, "y": 12.62, "rotation": 23.07, "width": 103, "height": 83 } }, - "right foot": { - "right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 } + "rear_shin": { + "rear_shin": { "x": 58.29, "y": -2.75, "rotation": 92.37, "width": 75, "height": 178 } }, - "right hand": { - "right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 } + "rear_thigh": { + "rear_thigh": { "x": 33.1, "y": -4.11, "rotation": 72.54, "width": 65, "height": 104 } }, - "right lower leg": { - "right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 } - }, - "right shoulder": { - "right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 } - }, - "right upper leg": { - "right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 } + "rear_upper_arm": { + "rear_upper_arm": { "x": 21.12, "y": 4.08, "rotation": 89.32, "width": 47, "height": 87 } }, "torso": { - "torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 } + "torso": { "x": 63.61, "y": 7.12, "rotation": -94.53, "width": 98, "height": 180 } } } }, "events": { - "behind": {}, - "headAttach": {}, - "headPop": {} + "footstep": {}, + "headAttach": { "int": 3, "float": 4 }, + "headBehind": { "int": 5, "float": 6, "string": "setup" }, + "headPop": { "int": 1, "float": 2 } }, "animations": { - "drawOrder": { + "death": { + "slots": { + "eye": { + "attachment": [ + { "time": 0, "name": "eye_surprised" }, + { "time": 0.4666, "name": "eye_indifferent" }, + { "time": 2.2333, "name": "eye_surprised" }, + { "time": 4.5333, "name": "eye_indifferent" } + ] + }, + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_oooo" }, + { "time": 2.2333, "name": "mouth_grind" }, + { "time": 4.5333, "name": "mouth_oooo" } + ] + } + }, "bones": { "head": { + "rotate": [ + { "time": 0, "angle": -2.82 }, + { "time": 0.1333, "angle": -28.74 }, + { "time": 0.2333, "angle": 11.42 }, + { "time": 0.3333, "angle": -50.24 }, + { "time": 0.4, "angle": -72.66, "curve": "stepped" }, + { "time": 0.4333, "angle": -72.66 }, + { "time": 0.5, "angle": -20.24 }, + { "time": 0.5666, "angle": -85.28, "curve": "stepped" }, + { "time": 0.9333, "angle": -85.28, "curve": "stepped" }, + { "time": 2.2333, "angle": -85.28 }, + { "time": 2.5, "angle": -51.96, "curve": "stepped" }, + { "time": 4.5333, "angle": -51.96 }, + { "time": 4.6666, "angle": -85.28 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": -2.82 }, + { "time": 0.1333, "angle": 12.35 }, + { "time": 0.2333, "angle": 29.89 }, + { "time": 0.3, "angle": 70.36 }, + { "time": 0.4, "angle": -10.22, "curve": "stepped" }, + { "time": 0.4333, "angle": -10.22 }, + { "time": 0.5, "angle": 2.92 }, + { "time": 0.5666, "angle": 47.94, "curve": "stepped" }, + { "time": 2.2333, "angle": 47.94 }, + { "time": 2.5, "angle": 18.5, "curve": "stepped" }, + { "time": 4.5333, "angle": 18.5 }, + { "time": 4.6666, "angle": 47.94 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -8.61 }, + { "time": 0.1333, "angle": 28.19 }, + { "time": 0.2666, "angle": -280.19 }, + { "time": 0.4, "angle": -237.22, "curve": "stepped" }, + { "time": 0.4333, "angle": -237.22 }, + { "time": 0.5, "angle": 76.03, "curve": "stepped" }, + { "time": 0.8, "angle": 76.03, "curve": "stepped" }, + { "time": 0.9333, "angle": 76.03, "curve": "stepped" }, + { "time": 2.2333, "angle": 76.03 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2.2333, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { "time": 0, "angle": -38.85 }, + { "time": 0.1333, "angle": -299.58 }, + { "time": 0.2666, "angle": -244.74 }, + { "time": 0.4, "angle": -292.35 }, + { "time": 0.4333, "angle": -315.84 }, + { "time": 0.5, "angle": -347.94 }, + { "time": 0.7, "angle": -347.33, "curve": "stepped" }, + { "time": 2.2333, "angle": -347.33 }, + { "time": 2.7, "angle": -290.68 }, + { "time": 2.7666, "angle": -285.1 }, + { "time": 4.6666, "angle": -290.68 }, + { "time": 4.8, "angle": 8.61 }, + { "time": 4.8666, "angle": 10.94 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": -44.69 }, + { "time": 0.1333, "angle": 112.26 }, + { "time": 0.2666, "angle": 129.07 }, + { "time": 0.4, "angle": 134.94, "curve": "stepped" }, + { "time": 0.4333, "angle": 134.94 }, + { "time": 0.5666, "angle": 172.6, "curve": "stepped" }, + { "time": 0.9333, "angle": 172.6, "curve": "stepped" }, + { "time": 2.2333, "angle": 172.6 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 21.88 }, + { "time": 0.1333, "angle": 11.48 }, + { "time": 0.2666, "angle": -18.81 }, + { "time": 0.4, "angle": -18.92 }, + { "time": 0.4333, "angle": -18.28 }, + { "time": 0.5, "angle": 60.61 }, + { "time": 0.7, "angle": -18.87, "curve": "stepped" }, + { "time": 2.2333, "angle": -18.87 }, + { "time": 2.7, "angle": -1.95, "curve": "stepped" }, + { "time": 4.6666, "angle": -1.95 }, + { "time": 4.8, "angle": 34.55 }, + { "time": 4.9333, "angle": -18.74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": -2.33 }, + { "time": 0.2666, "angle": 26.34 }, + { "time": 0.7, "angle": -6.07, "curve": "stepped" }, + { "time": 2.2333, "angle": -6.07 }, + { "time": 2.7, "angle": 5.72, "curve": "stepped" }, + { "time": 4.6666, "angle": 5.72 }, + { "time": 4.8666, "angle": -6.52 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 10.36 }, + { "time": 0.1333, "angle": -23.12 }, + { "time": 0.2666, "angle": -23.11 }, + { "time": 0.4, "angle": -23.16, "curve": "stepped" }, + { "time": 0.4333, "angle": -23.16 }, + { "time": 0.5666, "angle": -23.2, "curve": "stepped" }, + { "time": 0.9333, "angle": -23.2, "curve": "stepped" }, + { "time": 2.2333, "angle": -23.2 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": -2.78 }, + { "time": 0.1333, "angle": -24.58 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.9333, "angle": 0, "curve": "stepped" }, + { "time": 2.2333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2, "x": 50.34, "y": 151.73 }, + { "time": 0.4, "x": 5.16, "y": -119.64, "curve": "stepped" }, + { "time": 0.4333, "x": 5.16, "y": -119.64 }, + { "time": 0.5, "x": 50.34, "y": -205.18, "curve": "stepped" }, + { "time": 0.8, "x": 50.34, "y": -205.18, "curve": "stepped" }, + { "time": 0.9333, "x": 50.34, "y": -205.18, "curve": "stepped" }, + { "time": 2.2333, "x": 50.34, "y": -205.18 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_thigh": { "rotate": [ { "time": 0, "angle": 0 }, - { "time": 0.4827, "angle": -23.11 }, - { "time": 0.8965, "angle": -56.45 }, - { "time": 1.3103, "angle": 1.38 }, - { "time": 1.7931, "angle": 36.12 }, - { "time": 2.1379, "angle": 1.24 }, - { "time": 2.6206, "angle": -37.12 }, - { "time": 2.9666, "angle": 2.07 }, - { "time": 3.4666, "angle": 34.72 }, - { "time": 3.9, "angle": 359.99 } + { "time": 0.1333, "angle": 8.47 }, + { "time": 0.2666, "angle": 115.95 }, + { "time": 0.4, "angle": 180.66, "curve": "stepped" }, + { "time": 0.4333, "angle": 180.66 }, + { "time": 0.5, "angle": 155.22 }, + { "time": 0.6, "angle": 97.73 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": -27.37 }, + { "time": 0.2666, "angle": -35.1 }, + { "time": 0.4, "angle": -37.72, "curve": "stepped" }, + { "time": 0.4333, "angle": -37.72 }, + { "time": 0.5, "angle": -40.06 }, + { "time": 0.6, "angle": 2.76 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 70.45 }, + { "time": 0.2666, "angle": 155.34 }, + { "time": 0.4, "angle": 214.31, "curve": "stepped" }, + { "time": 0.4333, "angle": 214.31 }, + { "time": 0.5, "angle": 169.67 }, + { "time": 0.8, "angle": 83.27 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 18.93 }, + { "time": 0.2666, "angle": -21.04 }, + { "time": 0.4, "angle": -29.93, "curve": "stepped" }, + { "time": 0.4333, "angle": -29.93 }, + { "time": 0.5, "angle": -16.79 }, + { "time": 0.8, "angle": 7.77 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": -11.62 }, + { "time": 0.4, "angle": -45.59, "curve": "stepped" }, + { "time": 0.4333, "angle": -45.59 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.4, "angle": -48.75, "curve": "stepped" }, + { "time": 0.4333, "angle": -48.75 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "gunTip": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + } + } + }, + "hit": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0.1666, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_grind" }, + { "time": 0.3333, "name": "mouth_smile" } + ] + } + }, + "bones": { + "torso": { + "rotate": [ + { "time": 0, "angle": 56.42 }, + { "time": 0.3333, "angle": 8.89 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 35.38 }, + { "time": 0.2333, "angle": 24.94 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 10.21 }, + { "time": 0.3333, "angle": -41.3 } + ] + }, + "front_upper_arm": { + "rotate": [ + { + "time": 0, + "angle": -310.92, + "curve": [ 0.38, 0.53, 0.744, 1 ] + }, + { "time": 0.3333, "angle": -112.59 } + ], + "translate": [ + { "time": 0, "x": 7.23, "y": -13.13 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 36.99 }, + { "time": 0.3333, "angle": -28.64 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": 13.59 }, + { "time": 0.3333, "angle": 7.55 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { + "time": 0, + "angle": 271.02, + "curve": [ 0.342, 0.36, 0.68, 0.71 ] + }, + { "time": 0.3333, "angle": -15.84 } + ], + "translate": [ + { "time": 0.3333, "x": -0.09, "y": -0.46 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 40.03 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 14.98 }, + { "time": 0.3333, "angle": 39.75 } + ] + }, + "hip": { + "translate": [ + { "time": 0, "x": -75.54, "y": -78.03 }, + { "time": 0.2333, "x": -36.48, "y": 12.42 }, + { "time": 0.3333, "x": -36.48, "y": -2.99 } + ] + }, + "front_thigh": { + "rotate": [ + { + "time": 0, + "angle": 90.94, + "curve": [ 0.227, 0.26, 0.432, 1 ] + }, + { "time": 0.3333, "angle": 32.02 } + ], + "translate": [ + { "time": 0, "x": 7.21, "y": -4 } + ] + }, + "rear_thigh": { + "rotate": [ + { + "time": 0, + "angle": 40.51, + "curve": [ 0.295, 0.3, 0.59, 0.99 ] + }, + { "time": 0.3333, "angle": 90.76 } + ], + "translate": [ + { "time": 0, "x": -1.96, "y": -0.32 } + ] + }, + "front_shin": { + "rotate": [ + { "time": 0, "angle": -96.62 }, + { "time": 0.3333, "angle": -15.13 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": 7.99 }, + { "time": 0.3333, "angle": -67.54 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": 5.4 }, + { "time": 0.3333, "angle": -16.26 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": 2.67 }, + { "time": 0.3333, "angle": -10.31 } + ] + } + } + }, + "idle": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_open" }, + { "time": 1.6666, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_smile" }, + { "time": 1.6666, "name": "mouth_smile" } + ] + } + }, + "bones": { + "torso": { + "rotate": [ + { + "time": 0, + "angle": -5.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.8333, + "angle": -9.65, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -5.61 } + ], + "translate": [ + { "time": 0, "x": -6.49, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { + "time": 0, + "angle": -59.85, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -54.31, + "curve": [ 0.324, 0.11, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -59.85 } + ], + "translate": [ + { "time": 0, "x": -7.12, "y": -8.23 }, + { "time": 0.6666, "x": -6.32, "y": -8.3 }, + { "time": 1.6666, "x": -7.12, "y": -8.23 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { + "time": 0, + "angle": 62.41, + "curve": [ 0.504, 0.02, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": 43.83, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": 62.41 } + ], + "translate": [ + { "time": 0, "x": -1.83, "y": -16.78 }, + { "time": 0.6666, "x": 0.34, "y": -15.23 }, + { "time": 1.6666, "x": -1.83, "y": -16.78 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.6666, "angle": 2.39 }, + { "time": 1.6666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -1.88, "y": -4.76, "curve": "stepped" }, + { "time": 1.6666, "x": -1.88, "y": -4.76 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_thigh": { + "rotate": [ + { + "time": 0, + "angle": 0.64, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": -4.34, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": 0.64 } + ], + "translate": [ + { "time": 0, "x": -13.39, "y": 6.69, "curve": "stepped" }, + { "time": 1.6666, "x": -13.39, "y": 6.69 } + ], + "scale": [ + { + "time": 0, + "x": 0.896, + "y": 1, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "x": 0.825, + "y": 1, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "x": 0.896, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { "time": 0, "angle": -19.28, "curve": "stepped" }, + { "time": 1.6666, "angle": -19.28 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "x": 0.994, + "y": 1, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { + "time": 0, + "angle": 30.5, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": 40.15, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": 30.5 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { + "time": 0, + "angle": -23.83, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": -43.77, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": -23.83 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { + "time": 0, + "angle": 5.13, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": 10.04, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": 5.13 } + ], + "scale": [ + { "time": 0, "x": 0.755, "y": 1.309, "curve": "stepped" }, + { "time": 1.6666, "x": 0.755, "y": 1.309 } + ] + }, + "hip": { + "translate": [ + { + "time": 0, + "x": -6.63, + "y": -23.01, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "x": 6.27, + "y": -35, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "x": -6.63, "y": -23.01 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { + "time": 0, + "angle": -7.34, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": 3.85, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": -7.34 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { + "time": 0, + "angle": -17.16, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": 12.52, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -17.16 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { + "time": 0, + "angle": -5.51, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -3.12, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -5.51 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { + "time": 0, + "angle": 45.46, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": 41.33, + "curve": [ 0.32, 0.1, 0.736, 0.91 ] + }, + { "time": 1.6666, "angle": 45.46 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -15.59, + "curve": [ 0.732, 0, 0.769, 0.99 ] + }, + { "time": 1.6666, "angle": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { + "time": 0, + "angle": -6.84, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -14.63, + "curve": [ 0.324, 0.11, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -6.84 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "x": 0.689, + "y": 1.1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + } + } + }, + "jump": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_open" }, + { "time": 0.2, "name": "front_fist_closed" }, + { "time": 0.6666, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_grind" } + ] + }, + "torso": { + "attachment": [ + { "time": 0, "name": "torso" } + ] + } + }, + "bones": { + "front_thigh": { + "rotate": [ + { + "time": 0, + "angle": 91.53, + "curve": [ 0.278, 0.46, 0.763, 1 ] + }, + { + "time": 0.2, + "angle": -35.83, + "curve": [ 0.761, 0, 0.75, 1 ] + }, + { "time": 0.4333, "angle": 127.74 }, + { + "time": 0.7333, + "angle": 48.18, + "curve": [ 0.227, 0.26, 0.432, 1 ] + }, + { "time": 0.8333, "angle": 25.35 }, + { "time": 0.9333, "angle": 45.37 }, + { "time": 1.0333, "angle": 38.12 }, + { "time": 1.1333, "angle": 25.35 }, + { "time": 1.3333, "angle": 91.53 } + ], + "translate": [ + { "time": 0, "x": -2.56, "y": 5.77 }, + { "time": 0.4333, "x": 8.3, "y": 7.98 }, + { "time": 0.7333, "x": 7.21, "y": -4 }, + { "time": 1.3333, "x": -2.56, "y": 5.77 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -42.63 }, + { "time": 0.2, "angle": -5.74 }, + { "time": 0.4333, "angle": -50.76 }, + { "time": 0.7333, "angle": 1.89 }, + { "time": 0.8333, "angle": 11.58 }, + { "time": 0.9666, "angle": -1.89 }, + { "time": 1.1333, "angle": 11.58 }, + { "time": 1.3333, "angle": -42.63 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { "time": 0, "angle": -26.32 }, + { "time": 0.2, "angle": 121.44 }, + { "time": 0.4333, "angle": 70.54 }, + { + "time": 0.7333, + "angle": 79.89, + "curve": [ 0.295, 0.3, 0.59, 0.99 ] + }, + { "time": 0.8333, "angle": 99.12 }, + { "time": 0.9333, "angle": 74.05 }, + { "time": 1.0333, "angle": 98.04 }, + { "time": 1.1333, "angle": 99.12 }, + { "time": 1.3333, "angle": -26.32 } + ], + "translate": [ + { "time": 0, "x": -0.56, "y": -0.32 }, + { "time": 0.4333, "x": -8.5, "y": 10.58 }, + { "time": 0.7333, "x": -1.96, "y": -0.32 }, + { "time": 1.3333, "x": -0.56, "y": -0.32 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": -78.69 }, + { "time": 0.4333, "angle": -55.56 }, + { "time": 0.7333, "angle": -62.84 }, + { "time": 0.8333, "angle": -80.74 }, + { "time": 0.9333, "angle": -41.12 }, + { "time": 1.0333, "angle": -77.4 }, + { "time": 1.1333, "angle": -80.74 }, + { "time": 1.3333, "angle": -78.69 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7333, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { "time": 0, "angle": -22.61 }, + { "time": 0.2, "angle": -246.68 }, + { + "time": 0.6, + "angle": 11.28, + "curve": [ 0.246, 0, 0.633, 0.53 ] + }, + { + "time": 0.7333, + "angle": -57.45, + "curve": [ 0.38, 0.53, 0.744, 1 ] + }, + { "time": 0.8666, "angle": -112.59 }, + { "time": 0.9333, "angle": -102.17 }, + { "time": 1.0333, "angle": -108.61 }, + { "time": 1.1333, "angle": -112.59 }, + { "time": 1.3333, "angle": -22.61 } + ], + "translate": [ + { "time": 0, "x": 6.08, "y": 7.15 }, + { "time": 0.2, "x": 7.23, "y": -13.13, "curve": "stepped" }, + { "time": 0.7333, "x": 7.23, "y": -13.13 }, + { "time": 1.3333, "x": 6.08, "y": 7.15 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 66.46 }, + { "time": 0.2, "angle": 42.39 }, + { "time": 0.4333, "angle": 26.06 }, + { "time": 0.7333, "angle": 13.28 }, + { "time": 0.8666, "angle": -28.64 }, + { "time": 0.9333, "angle": -22.31 }, + { "time": 1.0333, "angle": -35.39 }, + { "time": 1.1333, "angle": -28.64 }, + { "time": 1.3333, "angle": 66.46 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": -28.43 }, + { "time": 0.4333, "angle": -45.6 }, + { "time": 0.7333, "angle": -53.66 }, + { "time": 0.8666, "angle": 7.55 }, + { "time": 0.9333, "angle": 31.15 }, + { "time": 1.0333, "angle": -32.58 }, + { "time": 1.1333, "angle": 7.55 }, + { "time": 1.3333, "angle": -28.43 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": 39.68 }, + { "time": 0.2, "angle": 276.57 }, + { "time": 0.3, "angle": 17.73 }, + { "time": 0.4333, "angle": 83.38 }, + { + "time": 0.6, + "angle": -4.71, + "curve": [ 0.246, 0, 0.633, 0.53 ] + }, + { + "time": 0.7333, + "angle": -69.63, + "curve": [ 0.342, 0.36, 0.68, 0.71 ] + }, + { + "time": 0.7666, + "angle": 321.47, + "curve": [ 0.333, 0.33, 0.667, 0.66 ] + }, + { + "time": 0.8, + "angle": 33.7, + "curve": [ 0.358, 0.64, 0.693, 1 ] + }, + { "time": 0.8666, "angle": 34.56 }, + { "time": 1.0333, "angle": 71.96 }, + { "time": 1.1333, "angle": 34.56 }, + { "time": 1.3333, "angle": 39.68 } + ], + "translate": [ + { "time": 0, "x": -3.1, "y": -4.86 }, + { "time": 0.2, "x": 23.33, "y": 49.07 }, + { "time": 0.4333, "x": 20.78, "y": 40.21 }, + { "time": 1.3333, "x": -3.1, "y": -4.86 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 29.66 }, + { "time": 0.2, "angle": 45.06 }, + { "time": 0.4333, "angle": -4.34 }, + { "time": 0.7666, "angle": 61.68 }, + { "time": 0.8, "angle": 82.59 }, + { "time": 0.8666, "angle": 80.06 }, + { "time": 1.0333, "angle": 57.56 }, + { "time": 1.1333, "angle": 80.06 }, + { "time": 1.3333, "angle": 29.66 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 24.9 }, + { "time": 0.2, "angle": 16.31 }, + { "time": 0.4333, "angle": 7.44 }, + { "time": 0.7333, "angle": -20.35 }, + { "time": 0.8333, "angle": -0.69, "curve": "stepped" }, + { "time": 1.1333, "angle": -0.69 }, + { "time": 1.3333, "angle": 24.9 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 24.92 }, + { "time": 0.2, "angle": 10.36 }, + { "time": 0.4333, "angle": 28.65 }, + { "time": 0.7333, "angle": -2.65 }, + { "time": 0.8333, "angle": -28.94, "curve": "stepped" }, + { "time": 1.1333, "angle": -28.94 }, + { "time": 1.3333, "angle": 24.92 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": -34.51, + "y": -78.62, + "curve": [ 0.232, 1, 0.75, 1 ] + }, + { + "time": 0.2, + "x": -34.51, + "y": 182.5, + "curve": [ 0.232, 0.48, 0.598, 0.79 ] + }, + { + "time": 0.7666, + "x": -34.51, + "y": 596.22, + "curve": [ 0.329, 0.17, 0.66, 0.21 ] + }, + { "time": 1.1333, "x": -34.51, "y": 2.49 }, + { "time": 1.3333, "x": -34.51, "y": -78.62 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { + "time": 0, + "angle": -90.62, + "curve": [ 0.416, 0.54, 0.743, 1 ] + }, + { + "time": 0.2, + "angle": -10.52, + "curve": [ 0.644, 0, 0.75, 1 ] + }, + { "time": 0.4333, "angle": -127.72 }, + { "time": 0.7333, "angle": -19.91 }, + { "time": 0.8333, "angle": -5.16 }, + { "time": 0.9333, "angle": -35.06 }, + { "time": 1.0333, "angle": -43.97 }, + { "time": 1.1333, "angle": -5.16 }, + { "time": 1.3333, "angle": -90.62 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": -0.79 }, + { "time": 0.0333, "angle": 16.27 }, + { "time": 0.0666, "angle": 23.52 }, + { "time": 0.1, "angle": 21.02 }, + { "time": 0.1333, "angle": 10.92 }, + { "time": 0.2, "angle": -38.45 }, + { "time": 0.4333, "angle": 6.62 }, + { "time": 0.7333, "angle": -11.51 }, + { "time": 1.0333, "angle": -22.91 }, + { "time": 1.3333, "angle": -0.79 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": -12.77 }, + { "time": 0.2, "angle": 17.05 }, + { "time": 0.4333, "angle": 19.45 }, + { "time": 0.7333, "angle": 2.67 }, + { "time": 1.0333, "angle": -28.49 }, + { "time": 1.3333, "angle": -12.77 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 6.18 }, + { "time": 0.2, "angle": 30.81 }, + { "time": 0.4333, "angle": 13.25 }, + { "time": 0.7333, "angle": 14.98 }, + { "time": 0.7666, "angle": 25.64 }, + { "time": 0.8, "angle": 20.62 }, + { "time": 0.8666, "angle": 64.52 }, + { "time": 1.0333, "angle": 8.59 }, + { "time": 1.1333, "angle": 64.52 }, + { "time": 1.3333, "angle": 6.18 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + } + } + }, + "run": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_closed" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_grind" } + ] + }, + "torso": { + "attachment": [ + { "time": 0, "name": "torso" } + ] + } + }, + "bones": { + "front_thigh": { + "rotate": [ + { + "time": 0, + "angle": 42.05, + "curve": [ 0.195, 0.86, 0.75, 1 ] + }, + { "time": 0.0666, "angle": 46.07 }, + { "time": 0.1333, "angle": -20.28 }, + { "time": 0.2, "angle": -27.23 }, + { "time": 0.2666, "angle": -47.16 }, + { "time": 0.3333, "angle": -39.79 }, + { "time": 0.4, "angle": -25.86 }, + { "time": 0.4666, "angle": 14.35 }, + { "time": 0.5333, "angle": 55.62 }, + { "time": 0.6, "angle": 69.65 }, + { "time": 0.6666, "angle": 86.4 }, + { "time": 0.7333, "angle": 65.87 }, + { "time": 0.8, "angle": 42.05 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.0333, "x": -5.79, "y": 11.15 }, + { "time": 0.0666, "x": -5.13, "y": 11.55 }, + { "time": 0.1333, "x": -7.7, "y": 8.98 }, + { "time": 0.5333, "x": -1.26, "y": 3.83 }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -39.7 }, + { "time": 0.2, "angle": -57.29 }, + { "time": 0.4, "angle": -39.7 }, + { "time": 0.6, "angle": -57.29 }, + { "time": 0.8, "angle": -39.7 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { "time": 0, "angle": -56.59 }, + { "time": 0.0666, "angle": -21.57 }, + { "time": 0.1333, "angle": 27.95 }, + { "time": 0.2, "angle": 42.42 }, + { "time": 0.2666, "angle": 62.37 }, + { "time": 0.3333, "angle": 45.42 }, + { "time": 0.4, "angle": 15.67 }, + { "time": 0.4666, "angle": 28.22 }, + { "time": 0.5333, "angle": -38.62 }, + { "time": 0.6, "angle": -53.26 }, + { "time": 0.6666, "angle": -79.31 }, + { "time": 0.7333, "angle": -86.47 }, + { "time": 0.8, "angle": -56.59 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.4, "x": -6.76, "y": -3.86 }, + { "time": 0.4333, "x": -15.85, "y": 7.28 }, + { "time": 0.4666, "x": -13.04, "y": 4.04 }, + { "time": 0.5, "x": -10.24, "y": 7.11 }, + { "time": 0.5333, "x": -9.01, "y": -5.15 }, + { "time": 0.6666, "x": -23.18, "y": -2.57 }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": -74 }, + { "time": 0.0666, "angle": -83.38 }, + { "time": 0.1333, "angle": -106.69 }, + { "time": 0.2, "angle": -66.01 }, + { "time": 0.2666, "angle": -55.22 }, + { "time": 0.3333, "angle": -24.8 }, + { + "time": 0.4, + "angle": 18.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4666, "angle": -56.65 }, + { + "time": 0.5333, + "angle": -11.94, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.6666, "angle": -41.26 }, + { "time": 0.7333, "angle": -43.6 }, + { "time": 0.8, "angle": -74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { "time": 0, "angle": -89.36 }, + { "time": 0.0666, "angle": -95.67 }, + { "time": 0.1333, "angle": -22 }, + { "time": 0.2, "angle": -316.04 }, + { "time": 0.2666, "angle": -274.94 }, + { "time": 0.3333, "angle": -273.74 }, + { "time": 0.4, "angle": -272.09 }, + { "time": 0.4666, "angle": -264.89 }, + { "time": 0.5333, "angle": -320.09 }, + { "time": 0.6, "angle": -50.83 }, + { "time": 0.6666, "angle": -81.72 }, + { "time": 0.7333, "angle": -83.92 }, + { "time": 0.8, "angle": -89.36 } + ], + "translate": [ + { "time": 0, "x": 6.24, "y": 10.05 }, + { "time": 0.2666, "x": 4.95, "y": -13.13 }, + { "time": 0.6, "x": -2.43, "y": 1.94 }, + { "time": 0.8, "x": 6.24, "y": 10.05 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 33.43 }, + { "time": 0.0666, "angle": 20.53 }, + { "time": 0.1333, "angle": 15.26 }, + { "time": 0.2, "angle": 19.28 }, + { "time": 0.2666, "angle": 22.62 }, + { "time": 0.3333, "angle": 37.29 }, + { "time": 0.4, "angle": 41.53 }, + { "time": 0.4666, "angle": 31.73 }, + { "time": 0.5333, "angle": 67.45 }, + { "time": 0.6666, "angle": 39.77 }, + { "time": 0.7333, "angle": 30.95 }, + { "time": 0.8, "angle": 33.43 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": -19.75 }, + { "time": 0.0666, "angle": -37.11 }, + { "time": 0.1333, "angle": -50.79 }, + { "time": 0.2666, "angle": -12.69 }, + { "time": 0.3333, "angle": 3.01 }, + { "time": 0.4333, "angle": 12.05 }, + { "time": 0.5333, "angle": 13.25 }, + { "time": 0.8, "angle": -19.75 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": 68.68 }, + { "time": 0.0666, "angle": 73.89 }, + { "time": 0.1333, "angle": -9.64 }, + { "time": 0.2, "angle": 284.27 }, + { "time": 0.2666, "angle": 283.29 }, + { "time": 0.3333, "angle": 278.28 }, + { "time": 0.4, "angle": 271.02 }, + { "time": 0.4666, "angle": 263.2 }, + { "time": 0.5333, "angle": 314.25 }, + { "time": 0.6, "angle": 16.83 }, + { "time": 0.6666, "angle": 70.35 }, + { "time": 0.7333, "angle": 73.53 }, + { "time": 0.8, "angle": 68.68 } + ], + "translate": [ + { "time": 0, "x": -2.57, "y": -8.89 }, + { "time": 0.1333, "x": -4.68, "y": 7.2 }, + { "time": 0.2, "x": 21.73, "y": 51.17 }, + { "time": 0.6, "x": 4.33, "y": 2.05 }, + { "time": 0.8, "x": -2.57, "y": -8.89 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 31.04 }, + { "time": 0.0666, "angle": 28.28 }, + { "time": 0.1333, "angle": 49.36 }, + { "time": 0.2, "angle": 59.37 }, + { "time": 0.2666, "angle": 8.56 }, + { "time": 0.3333, "angle": 9.38 }, + { "time": 0.4, "angle": 11.51 }, + { "time": 0.4666, "angle": 7.22 }, + { "time": 0.5333, "angle": -18.44 }, + { "time": 0.6, "angle": 11.44 }, + { "time": 0.6666, "angle": 9.99 }, + { "time": 0.7333, "angle": 8.28 }, + { "time": 0.8, "angle": 31.04 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 11.03 }, + { "time": 0.2, "angle": 13.58 }, + { "time": 0.4, "angle": 11.03 }, + { "time": 0.6, "angle": 13.58 }, + { "time": 0.8, "angle": 11.03 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 11.03 }, + { "time": 0.1, "angle": 12.34 }, + { "time": 0.2, "angle": 25.55 }, + { "time": 0.4, "angle": 11.03 }, + { "time": 0.5, "angle": 12.34 }, + { "time": 0.6, "angle": 25.55 }, + { "time": 0.8, "angle": 11.03 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -62.47, "y": -23.1 }, + { + "time": 0.0666, + "x": -62.47, + "y": -38.51, + "curve": [ 0.244, 0.04, 0.75, 1 ] + }, + { + "time": 0.2666, + "x": -62.47, + "y": 22.28, + "curve": [ 0.17, 0.52, 0.75, 1 ] + }, + { "time": 0.4, "x": -62.47, "y": -23.1 }, + { "time": 0.4333, "x": -62.47, "y": -24.59 }, + { + "time": 0.4666, + "x": -62.47, + "y": -43.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.6666, "x": -62.47, "y": 22.28 }, + { "time": 0.8, "x": -62.47, "y": -23.1 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.481, 0.01, 0.75, 1 ] + }, + { "time": 0.0666, "angle": -64.42 }, + { + "time": 0.1333, + "angle": -20.59, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.2666, "angle": -62.51 }, + { "time": 0.3333, "angle": -79.74 }, + { "time": 0.4, "angle": -78.28 }, + { + "time": 0.4666, + "angle": -118.96, + "curve": [ 0.93, 0, 0.952, 0.95 ] + }, + { "time": 0.6, "angle": -88.95 }, + { "time": 0.6666, "angle": -79.09 }, + { "time": 0.7333, "angle": -47.77 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": 0 }, + { + "time": 0.0333, + "angle": -21.13, + "curve": [ 0.121, 0.23, 0.75, 1 ] + }, + { "time": 0.0666, "angle": 17.64 }, + { "time": 0.1, "angle": 29.92 }, + { "time": 0.1333, "angle": 16.44 }, + { "time": 0.2, "angle": -29.22 }, + { "time": 0.2666, "angle": -1.61 }, + { "time": 0.3333, "angle": -10.22 }, + { "time": 0.4666, "angle": -15.99 }, + { "time": 0.6, "angle": 9.03 }, + { "time": 0.7333, "angle": 17.32 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.0666, "angle": -12.04 }, + { "time": 0.1333, "angle": -0.87 }, + { "time": 0.2, "angle": 25.81 }, + { "time": 0.2666, "angle": 4.71 }, + { + "time": 0.4, + "angle": 18.09, + "curve": [ 0.281, 0.73, 0.75, 1 ] + }, + { "time": 0.4333, "angle": -1.7 }, + { "time": 0.4666, "angle": 27.12 }, + { "time": 0.5, "angle": 38.83 }, + { "time": 0.5333, "angle": 30.76 }, + { "time": 0.5666, "angle": -20.49 }, + { "time": 0.6, "angle": -30.8 }, + { "time": 0.6666, "angle": -1.31 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 24.72 }, + { "time": 0.5, "angle": -11.87 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + } + }, + "events": [ + { "time": 0, "name": "footstep" }, + { "time": 0.4, "name": "footstep", "int": 1 } + ] + }, + "shoot": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0.1333, "name": "front_fist_closed" }, + { "time": 0.4, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0.1333, "name": "mouth_grind" } + ] + }, + "muzzle": { + "attachment": [ + { "time": 0.1333, "name": "muzzle" }, + { "time": 0.2666, "name": null } + ], + "color": [ + { + "time": 0.1333, + "color": "ffffff00", + "curve": [ 0.118, 0.99, 0.75, 1 ] + }, + { + "time": 0.1666, + "color": "ffffffff", + "curve": [ 0.821, 0, 0.909, 0.89 ] + }, + { "time": 0.2666, "color": "ffffff00" } + ] + } + }, + "bones": { + "front_fist": { + "scale": [ + { "time": 0.1333, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.4, "x": 1, "y": 1 } + ] + }, + "gunTip": { + "translate": [ + { "time": 0.1333, "x": 0, "y": 0 }, + { "time": 0.2, "x": 20.93, "y": 1.57 } + ], + "scale": [ + { "time": 0.1333, "x": 1, "y": 1 }, + { "time": 0.2, "x": 1.247, "y": 1.516 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 1.9 } + ], + "translate": [ + { + "time": 0, + "x": 7.95, + "y": 5.84, + "curve": [ 0, 0.3, 0.678, 1 ] + }, + { "time": 0.3, "x": -9.3, "y": -1.41 }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": -30.47 } ], "translate": [ { "time": 0, "x": 0, "y": 0, - "curve": [ 0.19, 0.4, 0.586, 0.75 ] + "curve": [ 0, 0.3, 0.678, 1 ] }, - { - "time": 0.2758, - "x": 57.88, - "y": -35.72, - "curve": [ 0.39, 0.54, 0.632, 0.72 ] - }, - { - "time": 0.4827, - "x": 87.26, - "y": -87.89, - "curve": [ 0.325, 0.23, 0.587, 0.36 ] - }, - { - "time": 0.6896, - "x": 28.89, - "y": -114.62, - "curve": [ 0.383, 0.23, 0.736, 0.55 ] - }, - { - "time": 0.8965, - "x": -76.58, - "y": -124.98, - "curve": [ 0.129, 0.21, 0.547, 0.64 ] - }, - { - "time": 1.1034, - "x": -154.37, - "y": -77.13, - "curve": [ 0.354, 0.48, 0.729, 0.9 ] - }, - { - "time": 1.3103, - "x": -181.02, - "y": 18.56, - "curve": [ 0.063, 0.15, 0.52, 0.62 ] - }, - { - "time": 1.5862, - "x": -150.38, - "y": 128.67, - "curve": [ 0.381, 0.54, 0.778, 1 ] - }, - { - "time": 1.7931, - "x": -112.08, - "y": 146.28, - "curve": [ 0.242, 0, 0.626, 0.45 ] - }, - { - "time": 1.931, - "x": -63.7, - "y": 111.22, - "curve": [ 0.398, 0.35, 0.786, 0.76 ] - }, - { - "time": 2.1379, - "x": -48.94, - "y": -1.55, - "curve": [ 0.188, 0.21, 0.575, 0.61 ] - }, - { - "time": 2.3448, - "x": -91.69, - "y": -91.93, - "curve": [ 0.362, 0.51, 0.766, 1 ] - }, - { - "time": 2.6206, - "x": -142.79, - "y": -126.83, - "curve": [ 0.227, 0.34, 0.593, 0.75 ] - }, - { - "time": 2.7586, - "x": -176.7, - "y": -98.32, - "curve": [ 0.26, 0.4, 0.612, 0.71 ] - }, - { - "time": 2.8965, - "x": -163.95, - "y": -24.04, - "curve": [ 0.338, 0.37, 0.676, 0.71 ] - }, - { - "time": 2.9655, - "x": -150.17, - "y": 10.71, - "curve": [ 0.387, 0.61, 0.741, 1 ] - }, - { - "time": 3.1034, - "x": -102.44, - "y": 45.92, - "curve": [ 0.31, 0.24, 0.648, 0.58 ] - }, - { - "time": 3.2413, - "x": -53.99, - "y": 70.39, - "curve": [ 0.325, 0.29, 0.663, 0.63 ] - }, - { - "time": 3.3793, - "x": 1.88, - "y": 55.54, - "curve": [ 0.387, 0.33, 0.769, 0.73 ] - }, - { - "time": 3.5862, - "x": 34.26, - "y": 36.13, - "curve": [ 0.206, 0.28, 0.596, 0.67 ] - }, - { - "time": 3.7931, - "x": 23.94, - "y": 1.01, - "curve": [ 0.373, 0.56, 0.759, 1 ] - }, - { "time": 4, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0.8275, "x": 1, "y": 1 }, - { "time": 1.3103, "x": 0.742, "y": 0.742 }, - { "time": 1.7931, "x": 1, "y": 1 }, - { "time": 2.1379, "x": 1.502, "y": 1.502 }, - { "time": 2.6206, "x": 1, "y": 1 }, - { "time": 2.9655, "x": 0.707, "y": 0.707 }, - { "time": 3.3793, "x": 1, "y": 1 } - ] - } - }, - "events": [ - { "time": 0, "name": "headPop", "string": "pop.wav" }, - { "time": 1.3103, "name": "behind" }, - { "time": 2.9655, "name": "behind" }, - { "time": 4, "name": "headAttach", "string": "attach.wav" } - ], - "draworder": [ - { - "time": 0.6206, - "offsets": [ - { "slot": "head", "offset": -12 }, - { "slot": "eyes", "offset": -12 } + { "time": 0.3, "x": -5.99, "y": -3.71 }, + { "time": 0.4, "x": 0, "y": 0 } ] }, - { - "time": 1.7931, - "offsets": [ - { "slot": "head", "offset": 3 }, - { "slot": "eyes", "offset": 3 } - ] - }, - { - "time": 2.6206, - "offsets": [ - { "slot": "head", "offset": -12 }, - { "slot": "eyes", "offset": -12 } - ] - }, - { "time": 3.5862 } - ] - }, - "jump": { - "bones": { - "hip": { + "rear_upper_arm": { "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.9333, "angle": 0, "curve": "stepped" }, - { "time": 1.3666, "angle": 0 } + { "time": 0, "angle": 62.3 } ], "translate": [ - { "time": 0, "x": -11.57, "y": -3 }, - { "time": 0.2333, "x": -16.2, "y": -19.43 }, - { - "time": 0.3333, - "x": 7.66, - "y": -8.48, - "curve": [ 0.057, 0.06, 0.712, 1 ] - }, - { "time": 0.3666, "x": 15.38, "y": 5.01 }, - { "time": 0.4666, "x": -7.84, "y": 57.22 }, - { - "time": 0.6, - "x": -10.81, - "y": 96.34, - "curve": [ 0.241, 0, 1, 1 ] - }, - { "time": 0.7333, "x": -7.01, "y": 54.7 }, - { "time": 0.8, "x": -10.58, "y": 32.2 }, - { "time": 0.9333, "x": -31.99, "y": 0.45 }, - { "time": 1.0666, "x": -12.48, "y": -29.47 }, - { "time": 1.3666, "x": -11.57, "y": -3 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "left upper leg": { - "rotate": [ - { "time": 0, "angle": 17.13 }, - { "time": 0.2333, "angle": 44.35 }, - { "time": 0.3333, "angle": 16.46 }, - { "time": 0.4, "angle": -9.88 }, - { "time": 0.4666, "angle": -11.42 }, - { "time": 0.5666, "angle": 23.46 }, - { "time": 0.7666, "angle": 71.82 }, - { "time": 0.9333, "angle": 65.53 }, - { "time": 1.0666, "angle": 51.01 }, - { "time": 1.3666, "angle": 17.13 } - ], - "translate": [ - { "time": 0, "x": -3, "y": -2.25, "curve": "stepped" }, - { "time": 0.9333, "x": -3, "y": -2.25, "curve": "stepped" }, - { "time": 1.3666, "x": -3, "y": -2.25 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "left lower leg": { - "rotate": [ - { "time": 0, "angle": -16.25 }, - { "time": 0.2333, "angle": -52.21 }, - { "time": 0.4, "angle": 15.04 }, - { "time": 0.4666, "angle": -8.95 }, - { "time": 0.5666, "angle": -39.53 }, - { "time": 0.7666, "angle": -27.27 }, - { "time": 0.9333, "angle": -3.52 }, - { "time": 1.0666, "angle": -61.92 }, - { "time": 1.3666, "angle": -16.25 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1.3666, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "left foot": { - "rotate": [ - { "time": 0, "angle": 0.33 }, - { "time": 0.2333, "angle": 6.2 }, - { "time": 0.3333, "angle": 14.73 }, - { "time": 0.4, "angle": -15.54 }, - { "time": 0.4333, "angle": -21.2 }, - { "time": 0.5666, "angle": -7.55 }, - { "time": 0.7666, "angle": -0.67 }, - { "time": 0.9333, "angle": -0.58 }, - { "time": 1.0666, "angle": 14.64 }, - { "time": 1.3666, "angle": 0.33 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1.3666, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "right upper leg": { - "rotate": [ - { "time": 0, "angle": 25.97 }, - { "time": 0.2333, "angle": 46.43 }, - { "time": 0.3333, "angle": 22.61 }, - { "time": 0.4, "angle": 2.13 }, - { - "time": 0.4666, - "angle": 0.04, - "curve": [ 0, 0, 0.637, 0.98 ] - }, - { "time": 0.6, "angle": 65.55 }, - { "time": 0.7666, "angle": 64.93 }, - { "time": 0.9333, "angle": 41.08 }, - { "time": 1.0666, "angle": 66.25 }, - { "time": 1.3666, "angle": 25.97 } - ], - "translate": [ - { "time": 0, "x": 5.74, "y": 0.61 }, - { "time": 0.2333, "x": 4.79, "y": 1.79 }, - { "time": 0.3333, "x": 6.05, "y": -4.55 }, - { "time": 0.9333, "x": 4.79, "y": 1.79, "curve": "stepped" }, - { "time": 1.0666, "x": 4.79, "y": 1.79 }, - { "time": 1.3666, "x": 5.74, "y": 0.61 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "right lower leg": { - "rotate": [ - { "time": 0, "angle": -27.46 }, - { "time": 0.2333, "angle": -64.03 }, - { "time": 0.4, "angle": -48.36 }, - { "time": 0.5666, "angle": -76.86 }, - { "time": 0.7666, "angle": -26.89 }, - { "time": 0.9, "angle": -18.97 }, - { "time": 0.9333, "angle": -14.18 }, - { "time": 1.0666, "angle": -80.45 }, - { "time": 1.3666, "angle": -27.46 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1.3666, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "right foot": { - "rotate": [ - { "time": 0, "angle": 1.08 }, - { "time": 0.2333, "angle": 16.02 }, - { "time": 0.3, "angle": 12.94 }, - { "time": 0.3333, "angle": 15.16 }, - { "time": 0.4, "angle": -14.7 }, - { "time": 0.4333, "angle": -12.85 }, - { "time": 0.4666, "angle": -19.18 }, - { "time": 0.5666, "angle": -15.82 }, - { "time": 0.6, "angle": -3.59 }, - { "time": 0.7666, "angle": -3.56 }, - { "time": 0.9333, "angle": 1.86 }, - { "time": 1.0666, "angle": 16.02 }, - { "time": 1.3666, "angle": 1.08 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1.3666, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -13.35 }, - { "time": 0.2333, "angle": -48.95 }, - { "time": 0.4333, "angle": -35.77 }, - { "time": 0.6, "angle": -4.59 }, - { "time": 0.7666, "angle": 14.61 }, - { "time": 0.9333, "angle": 15.74 }, - { "time": 1.0666, "angle": -32.44 }, - { "time": 1.3666, "angle": -13.35 } - ], - "translate": [ - { "time": 0, "x": -3.67, "y": 1.68, "curve": "stepped" }, - { "time": 0.9333, "x": -3.67, "y": 1.68, "curve": "stepped" }, - { "time": 1.3666, "x": -3.67, "y": 1.68 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 12.78 }, - { "time": 0.2333, "angle": 16.46 }, - { "time": 0.4, "angle": 26.49 }, - { "time": 0.6, "angle": 15.51 }, - { "time": 0.7666, "angle": 1.34 }, - { "time": 0.9333, "angle": 2.35 }, - { "time": 1.0666, "angle": 6.08 }, - { "time": 1.3, "angle": 21.23 }, - { "time": 1.3666, "angle": 12.78 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1.3666, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 5.19 }, - { "time": 0.2333, "angle": 20.27 }, - { "time": 0.4, "angle": 15.27 }, - { "time": 0.6, "angle": -24.69 }, - { "time": 0.7666, "angle": -11.02 }, - { "time": 0.9333, "angle": -24.38 }, - { "time": 1.0666, "angle": 11.99 }, - { "time": 1.3, "angle": 4.86 }, - { "time": 1.3666, "angle": 5.19 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1.3666, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "left shoulder": { - "rotate": [ { "time": 0, - "angle": 0.05, - "curve": [ 0, 0, 0.62, 1 ] + "x": 0, + "y": 0, + "curve": [ 0, 0.3, 0.678, 1 ] }, - { - "time": 0.2333, - "angle": 279.66, - "curve": [ 0.218, 0.67, 0.66, 0.99 ] - }, - { - "time": 0.5, - "angle": 62.27, - "curve": [ 0.462, 0, 0.764, 0.58 ] - }, - { "time": 0.9333, "angle": 28.91 }, - { "time": 1.0666, "angle": -8.62 }, - { "time": 1.1666, "angle": -18.43 }, - { "time": 1.3666, "angle": 0.05 } - ], - "translate": [ - { "time": 0, "x": -1.76, "y": 0.56, "curve": "stepped" }, - { "time": 0.9333, "x": -1.76, "y": 0.56, "curve": "stepped" }, - { "time": 1.3666, "x": -1.76, "y": 0.56 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "left hand": { - "rotate": [ - { "time": 0, "angle": 11.58, "curve": "stepped" }, - { "time": 0.9333, "angle": 11.58, "curve": "stepped" }, - { "time": 1.3666, "angle": 11.58 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1.3666, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "left arm": { - "rotate": [ - { "time": 0, "angle": 0.51 }, - { "time": 0.4333, "angle": 12.82 }, - { "time": 0.6, "angle": 47.55 }, - { "time": 0.9333, "angle": 12.82 }, - { "time": 1.1666, "angle": -6.5 }, - { "time": 1.3666, "angle": 0.51 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1.3666, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "right shoulder": { - "rotate": [ - { - "time": 0, - "angle": 43.82, - "curve": [ 0, 0, 0.62, 1 ] - }, - { - "time": 0.2333, - "angle": -8.74, - "curve": [ 0.304, 0.58, 0.709, 0.97 ] - }, - { - "time": 0.5333, - "angle": -208.02, - "curve": [ 0.462, 0, 0.764, 0.58 ] - }, - { "time": 0.9333, "angle": -246.72 }, - { "time": 1.0666, "angle": -307.13 }, - { "time": 1.1666, "angle": 37.15 }, - { "time": 1.3666, "angle": 43.82 } - ], - "translate": [ - { "time": 0, "x": -7.84, "y": 7.19, "curve": "stepped" }, - { "time": 0.9333, "x": -7.84, "y": 7.19, "curve": "stepped" }, - { "time": 1.3666, "x": -7.84, "y": 7.19 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "right arm": { - "rotate": [ - { "time": 0, "angle": -4.02 }, - { "time": 0.6, "angle": 17.5 }, - { "time": 0.9333, "angle": -4.02 }, - { "time": 1.1666, "angle": -16.72 }, - { "time": 1.3666, "angle": -4.02 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1.3666, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "right hand": { - "rotate": [ - { "time": 0, "angle": 22.92, "curve": "stepped" }, - { "time": 0.9333, "angle": 22.92, "curve": "stepped" }, - { "time": 1.3666, "angle": 22.92 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1.3666, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } - ] - }, - "root": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.4333, "angle": -14.52 }, - { "time": 0.8, "angle": 9.86 }, - { "time": 1.3666, "angle": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.3666, "x": 1, "y": 1 } + { "time": 0.3, "x": 2.81, "y": 11.41 }, + { "time": 0.4, "x": 0, "y": 0 } ] } } }, - "walk": { + "test": { + "slots": { + "front_foot": { + "color": [ + { "time": 0.6666, "color": "ffffffff" }, + { "time": 1.3333, "color": "ff0700ff" } + ] + }, + "gun": { + "color": [ + { "time": 0, "color": "ffffffff", "curve": "stepped" }, + { "time": 0.6666, "color": "ffffffff" }, + { "time": 1.3333, "color": "32ff00ff" } + ] + }, + "rear_foot": { + "color": [ + { "time": 0.6666, "color": "ffffffff" }, + { "time": 1.3333, "color": "ff0700ff" } + ] + } + }, "bones": { - "left upper leg": { + "head": { "rotate": [ - { "time": 0, "angle": -26.55 }, - { "time": 0.1333, "angle": -8.78 }, - { "time": 0.2666, "angle": 9.51 }, - { "time": 0.4, "angle": 30.74 }, - { "time": 0.5333, "angle": 25.33 }, - { "time": 0.6666, "angle": 26.11 }, - { "time": 0.8, "angle": -7.7 }, - { "time": 0.9333, "angle": -21.19 }, - { "time": 1.0666, "angle": -26.55 } + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": -20.72 }, + { "time": 0.6666, "angle": -32.41 }, + { "time": 1, "angle": -5.3 }, + { "time": 1.3333, "angle": 24.96 }, + { "time": 1.6666, "angle": 15.61 }, + { "time": 2, "angle": 0 } ], "translate": [ - { "time": 0, "x": -3, "y": -2.25 }, - { "time": 0.4, "x": -2.18, "y": -2.25 }, - { "time": 1.0666, "x": -3, "y": -2.25 } - ] - }, - "right upper leg": { - "rotate": [ - { "time": 0, "angle": 42.45 }, - { "time": 0.1333, "angle": 52.1 }, - { "time": 0.2666, "angle": 5.96 }, - { "time": 0.5333, "angle": -16.93 }, - { "time": 0.6666, "angle": 1.89 }, - { - "time": 0.8, - "angle": 28.06, - "curve": [ 0.462, 0.11, 1, 1 ] - }, - { - "time": 0.9333, - "angle": 58.68, - "curve": [ 0.5, 0.02, 1, 1 ] - }, - { "time": 1.0666, "angle": 42.45 } - ], - "translate": [ - { "time": 0, "x": 8.11, "y": -2.36 }, - { "time": 0.1333, "x": 10.03, "y": -2.56 }, - { "time": 0.4, "x": 2.76, "y": -2.97 }, - { "time": 0.5333, "x": 2.76, "y": -2.81 }, - { "time": 0.9333, "x": 8.67, "y": -2.54 }, - { "time": 1.0666, "x": 8.11, "y": -2.36 } - ] - }, - "left lower leg": { - "rotate": [ - { "time": 0, "angle": -10.21 }, - { "time": 0.1333, "angle": -55.64 }, - { "time": 0.2666, "angle": -68.12 }, - { "time": 0.5333, "angle": 5.11 }, - { "time": 0.6666, "angle": -28.29 }, - { "time": 0.8, "angle": 4.08 }, - { "time": 0.9333, "angle": 3.53 }, - { "time": 1.0666, "angle": -10.21 } - ] - }, - "left foot": { - "rotate": [ - { "time": 0, "angle": -3.69 }, - { "time": 0.1333, "angle": -10.42 }, - { "time": 0.2666, "angle": -17.14 }, - { "time": 0.4, "angle": -2.83 }, - { "time": 0.5333, "angle": -3.87 }, - { "time": 0.6666, "angle": 2.78 }, - { "time": 0.8, "angle": 1.68 }, - { "time": 0.9333, "angle": -8.54 }, - { "time": 1.0666, "angle": -3.69 } - ] - }, - "right shoulder": { - "rotate": [ { "time": 0, - "angle": 20.89, - "curve": [ 0.264, 0, 0.75, 1 ] + "x": 0, + "y": 0, + "curve": [ 0.172, 0.37, 0.574, 0.73 ] }, { - "time": 0.1333, - "angle": 3.72, - "curve": [ 0.272, 0, 0.841, 1 ] - }, - { "time": 0.6666, "angle": -278.28 }, - { "time": 1.0666, "angle": 20.89 } - ], - "translate": [ - { "time": 0, "x": -7.84, "y": 7.19 }, - { "time": 0.1333, "x": -6.36, "y": 6.42 }, - { "time": 0.6666, "x": -11.07, "y": 5.25 }, - { "time": 1.0666, "x": -7.84, "y": 7.19 } - ] - }, - "right arm": { - "rotate": [ - { - "time": 0, - "angle": -4.02, - "curve": [ 0.267, 0, 0.804, 0.99 ] + "time": 0.1666, + "x": 144.19, + "y": -77.59, + "curve": [ 0.372, 0.61, 0.765, 1 ] }, { - "time": 0.1333, - "angle": -13.99, - "curve": [ 0.341, 0, 1, 1 ] + "time": 0.3333, + "x": 217.61, + "y": -192.63, + "curve": [ 0.282, 0, 0.624, 0.31 ] + }, + { + "time": 0.5, + "x": 181.21, + "y": -365.66, + "curve": [ 0.313, 0.21, 0.654, 0.54 ] }, { "time": 0.6666, - "angle": 36.54, - "curve": [ 0.307, 0, 0.787, 0.99 ] + "x": 20.09, + "y": -500.4, + "curve": [ 0.147, 0.27, 0.75, 1 ] }, - { "time": 1.0666, "angle": -4.02 } + { "time": 0.8333, "x": -194.24, "y": -341.84 }, + { "time": 1, "x": -307.93, "y": -114 }, + { + "time": 1.1666, + "x": -330.38, + "y": 121.42, + "curve": [ 0.25, 0, 0.764, 0.48 ] + }, + { + "time": 1.3333, + "x": -240.42, + "y": 335.66, + "curve": [ 0.229, 0.37, 0.58, 0.73 ] + }, + { + "time": 1.5, + "x": -56.12, + "y": 288.06, + "curve": [ 0.296, 0.6, 0.641, 1 ] + }, + { + "time": 1.6666, + "x": 87.63, + "y": 191.33, + "curve": [ 0.238, 0, 0.626, 0.39 ] + }, + { + "time": 1.8333, + "x": 60.62, + "y": 95.14, + "curve": [ 0.41, 0.26, 0.803, 0.62 ] + }, + { "time": 2, "x": 0, "y": 0 } + ] + } + }, + "draworder": [ + { + "time": 0.6666, + "offsets": [ + { "slot": "head", "offset": -9 }, + { "slot": "eye", "offset": -9 }, + { "slot": "mouth", "offset": -12 }, + { "slot": "goggles", "offset": -12 } ] }, - "right hand": { - "rotate": [ - { "time": 0, "angle": 22.92 }, - { "time": 0.4, "angle": -8.97 }, - { "time": 0.6666, "angle": 0.51 }, - { "time": 1.0666, "angle": 22.92 } + { "time": 1.3333 } + ], + "events": [ + { "time": 0, "name": "headPop", "int": 0, "float": 0, "string": "pop.wav" }, + { "time": 1, "name": "headBehind", "int": 7, "float": 8, "string": "animate" }, + { "time": 2, "name": "headAttach", "int": 0, "float": 0, "string": "attach.wav" } + ] + }, + "walk": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_closed" } ] }, - "left shoulder": { + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_smile" } + ] + }, + "torso": { + "attachment": [ + { "time": 0, "name": "torso" } + ] + } + }, + "bones": { + "front_thigh": { "rotate": [ - { "time": 0, "angle": -1.47 }, - { "time": 0.1333, "angle": 13.6 }, - { "time": 0.6666, "angle": 280.74 }, - { "time": 1.0666, "angle": -1.47 } + { "time": 0, "angle": 15.79 }, + { "time": 0.1, "angle": 27.39 }, + { "time": 0.2, "angle": -7.94 }, + { "time": 0.3, "angle": -16.94 }, + { "time": 0.4, "angle": -28.62 }, + { "time": 0.5, "angle": -19.3 }, + { "time": 0.6, "angle": -3.08 }, + { "time": 0.7, "angle": 29.51 }, + { "time": 0.8, "angle": 15.79 } ], "translate": [ - { "time": 0, "x": -1.76, "y": 0.56 }, - { "time": 0.6666, "x": -2.47, "y": 8.14 }, - { "time": 1.0666, "x": -1.76, "y": 0.56 } + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.4, "x": -1.18, "y": 0.54 }, + { "time": 0.5, "x": 0.11, "y": 0.41 }, + { "time": 0.6, "x": 9.48, "y": 0.27 }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.4, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } ] }, - "left hand": { + "front_shin": { "rotate": [ - { - "time": 0, - "angle": 11.58, - "curve": [ 0.169, 0.37, 0.632, 1.55 ] - }, - { - "time": 0.1333, - "angle": 28.13, - "curve": [ 0.692, 0, 0.692, 0.99 ] - }, - { - "time": 0.6666, - "angle": -27.42, - "curve": [ 0.117, 0.41, 0.738, 1.76 ] - }, - { "time": 0.8, "angle": -36.32 }, - { "time": 1.0666, "angle": 11.58 } + { "time": 0, "angle": 5.12 }, + { "time": 0.1, "angle": -20.87 }, + { "time": 0.2, "angle": 13.37 }, + { "time": 0.3, "angle": 15.98 }, + { "time": 0.4, "angle": 5.94 }, + { "time": 0.5, "angle": -26.76 }, + { "time": 0.7, "angle": -55.44 }, + { "time": 0.8, "angle": 5.12 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } ] }, - "left arm": { + "rear_thigh": { "rotate": [ - { "time": 0, "angle": -8.27 }, - { "time": 0.1333, "angle": 18.43 }, - { "time": 0.6666, "angle": 0.88 }, - { "time": 1.0666, "angle": -8.27 } + { "time": 0, "angle": -34.38 }, + { "time": 0.1, "angle": -30.32 }, + { "time": 0.2, "angle": -37.22 }, + { "time": 0.3, "angle": 20.73 }, + { "time": 0.4, "angle": 8.69 }, + { "time": 0.5, "angle": 12.16 }, + { "time": 0.6, "angle": -24.62 }, + { "time": 0.7, "angle": -27.26 }, + { "time": 0.8, "angle": -34.38 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.4, "x": 4.08, "y": -9.53 }, + { "time": 0.5, "x": 0, "y": 0 }, + { "time": 0.7, "x": -21.14, "y": -9.6 }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": 14.26 }, + { "time": 0.1, "angle": -17.3 }, + { "time": 0.2, "angle": -12.67 }, + { "time": 0.3, "angle": -58.89 }, + { "time": 0.4, "angle": 15.95 }, + { "time": 0.5, "angle": -9 }, + { "time": 0.6, "angle": 26.06 }, + { "time": 0.7, "angle": 21.85 }, + { "time": 0.8, "angle": 14.26 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1, "x": 0.951, "y": 1 }, + { "time": 0.5, "x": 0.975, "y": 1 }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": 10.13 }, + { "time": 0.1, "angle": 12.27 }, + { "time": 0.2, "angle": -2.94 }, + { "time": 0.3, "angle": 6.29 }, + { "time": 0.4, "angle": 13.45 }, + { "time": 0.5, "angle": -3.57 }, + { "time": 0.6, "angle": -0.97 }, + { "time": 0.7, "angle": 2.97 }, + { "time": 0.8, "angle": 10.13 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { "time": 0, "angle": -23.74 }, + { "time": 0.4, "angle": -320.57 }, + { "time": 0.8, "angle": -23.74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": 11.62 }, + { "time": 0.1, "angle": 19.36 }, + { "time": 0.4, "angle": 345.26 }, + { "time": 0.5, "angle": 343.44 }, + { "time": 0.8, "angle": 11.62 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } ] }, "torso": { "rotate": [ - { "time": 0, "angle": -10.28 }, - { - "time": 0.1333, - "angle": -15.38, - "curve": [ 0.545, 0, 1, 1 ] - }, - { - "time": 0.4, - "angle": -9.78, - "curve": [ 0.58, 0.17, 1, 1 ] - }, - { "time": 0.6666, "angle": -15.75 }, - { "time": 0.9333, "angle": -7.06 }, - { "time": 1.0666, "angle": -10.28 } + { "time": 0, "angle": -12.11 }, + { "time": 0.1666, "angle": -17.16 }, + { "time": 0.4, "angle": -12.11 }, + { "time": 0.5666, "angle": -15.81 }, + { "time": 0.8, "angle": -12.11 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 1.41 }, + { "time": 0.2333, "angle": -3.04 }, + { "time": 0.4, "angle": 1.41 }, + { "time": 0.6333, "angle": -3.04 }, + { "time": 0.8, "angle": 1.41 } ], "translate": [ - { "time": 0, "x": -3.67, "y": 1.68 }, - { "time": 0.1333, "x": -3.67, "y": 0.68 }, - { "time": 0.4, "x": -3.67, "y": 1.97 }, - { "time": 0.6666, "x": -3.67, "y": -0.14 }, - { "time": 1.0666, "x": -3.67, "y": 1.68 } + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } ] }, - "right foot": { + "head": { "rotate": [ - { "time": 0, "angle": -5.25 }, - { "time": 0.2666, "angle": -4.08 }, - { "time": 0.4, "angle": -6.45 }, - { "time": 0.5333, "angle": -5.39 }, - { "time": 0.8, "angle": -11.68 }, - { "time": 0.9333, "angle": 0.46 }, - { "time": 1.0666, "angle": -5.25 } - ] - }, - "right lower leg": { - "rotate": [ - { "time": 0, "angle": -3.39 }, - { "time": 0.1333, "angle": -45.53 }, - { "time": 0.2666, "angle": -2.59 }, - { "time": 0.5333, "angle": -19.53 }, - { "time": 0.6666, "angle": -64.8 }, - { - "time": 0.8, - "angle": -82.56, - "curve": [ 0.557, 0.18, 1, 1 ] - }, - { "time": 1.0666, "angle": -3.39 } + { "time": 0, "angle": 6.97 }, + { "time": 0.1666, "angle": 8.02 }, + { "time": 0.2666, "angle": 12.65 }, + { "time": 0.4, "angle": 6.97 }, + { "time": 0.5666, "angle": 8.02 }, + { "time": 0.6666, "angle": 12.65 }, + { "time": 0.8, "angle": 6.97 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } ] }, "hip": { "rotate": [ { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 1.0666, "angle": 0 } + { "time": 0.8, "angle": 0 } ], "translate": [ - { "time": 0, "x": 0, "y": 0 }, { - "time": 0.1333, - "x": 0, - "y": -7.61, - "curve": [ 0.272, 0.86, 1, 1 ] + "time": 0, + "x": -23.93, + "y": 3.22, + "curve": [ 0.518, 0.03, 0.807, 0.61 ] }, - { "time": 0.4, "x": 0, "y": 8.7 }, - { "time": 0.5333, "x": 0, "y": -0.41 }, { - "time": 0.6666, - "x": 0, - "y": -7.05, - "curve": [ 0.235, 0.89, 1, 1 ] + "time": 0.1, + "x": -23.93, + "y": -9.24, + "curve": [ 0.135, 0.33, 0.601, 0.99 ] }, - { "time": 0.8, "x": 0, "y": 2.92 }, - { "time": 0.9333, "x": 0, "y": 6.78 }, - { "time": 1.0666, "x": 0, "y": 0 } + { + "time": 0.2, + "x": -23.93, + "y": 4.35, + "curve": [ 0.204, 0.68, 0.75, 1 ] + }, + { + "time": 0.3, + "x": -23.93, + "y": 2.38, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.4, + "x": -23.93, + "y": -2.5, + "curve": [ 0.692, 0.01, 0.75, 1 ] + }, + { + "time": 0.5, + "x": -23.93, + "y": -10.32, + "curve": [ 0.235, 0.77, 0.75, 1 ] + }, + { + "time": 0.6, + "x": -23.93, + "y": 4.35, + "curve": [ 0.287, 0.37, 0.718, 0.76 ] + }, + { + "time": 0.7, + "x": -23.93, + "y": 10.34, + "curve": [ 0.615, 0, 0.75, 1 ] + }, + { "time": 0.8, "x": -23.93, "y": 3.22 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } ] }, - "neck": { + "front_bracer": { "rotate": [ - { "time": 0, "angle": 3.6 }, - { "time": 0.1333, "angle": 17.49 }, - { "time": 0.2666, "angle": 6.1 }, - { "time": 0.4, "angle": 3.45 }, - { "time": 0.5333, "angle": 5.17 }, - { "time": 0.6666, "angle": 18.36 }, - { "time": 0.8, "angle": 6.09 }, - { "time": 0.9333, "angle": 2.28 }, - { "time": 1.0666, "angle": 3.6 } + { "time": 0, "angle": 0 }, + { "time": 0.4, "angle": 20.59 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } ] }, - "head": { + "front_foot": { + "rotate": [ + { "time": 0, "angle": 12.49 }, + { "time": 0.1, "angle": -8.34 }, + { "time": 0.2, "angle": -6.17 }, + { "time": 0.3, "angle": -0.75 }, + { "time": 0.3333, "angle": 3.89 }, + { "time": 0.4, "angle": 10.22 }, + { "time": 0.5, "angle": 11.44 }, + { "time": 0.6, "angle": -0.33 }, + { "time": 0.7, "angle": 0.15 }, + { "time": 0.8, "angle": 12.49 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 3.58 }, + { "time": 0.1, "angle": 5.51 }, + { "time": 0.4, "angle": -22.77 }, + { "time": 0.5, "angle": -9.65 }, + { "time": 0.8, "angle": 3.58 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": -15.22 }, + { "time": 0.1, "angle": -51.4 }, + { "time": 0.4, "angle": -39.4 }, + { "time": 0.5, "angle": 19.26 }, + { "time": 0.8, "angle": -15.22 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "gun": { "rotate": [ { "time": 0, - "angle": 3.6, - "curve": [ 0, 0, 0.704, 1.61 ] + "angle": -24.06, + "curve": [ 0.25, 0, 0.75, 1 ] }, - { "time": 0.1666, "angle": -0.2 }, - { "time": 0.2666, "angle": 6.1 }, - { "time": 0.4, "angle": 3.45 }, { - "time": 0.5333, - "angle": 5.17, - "curve": [ 0, 0, 0.704, 1.61 ] + "time": 0.1, + "angle": -10.94, + "curve": [ 0.381, 0.54, 0.742, 1 ] }, - { "time": 0.7, "angle": 1.1 }, - { "time": 0.8, "angle": 6.09 }, - { "time": 0.9333, "angle": 2.28 }, - { "time": 1.0666, "angle": 3.6 } + { + "time": 0.4, + "angle": 25.34, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -27.47, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.8, "angle": -24.06 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } ] } } diff --git a/tests/cpp-tests/Resources/spine/spineboy.png b/tests/cpp-tests/Resources/spine/spineboy.png old mode 100755 new mode 100644 index b8b493dfd1..b43262310a Binary files a/tests/cpp-tests/Resources/spine/spineboy.png and b/tests/cpp-tests/Resources/spine/spineboy.png differ diff --git a/tests/cpp-tests/Resources/spine/sprite.png b/tests/cpp-tests/Resources/spine/sprite.png old mode 100755 new mode 100644 diff --git a/tests/cpp-tests/proj.android/jni/Android.mk b/tests/cpp-tests/proj.android/jni/Android.mk index 566aec556f..0c5593c36a 100644 --- a/tests/cpp-tests/proj.android/jni/Android.mk +++ b/tests/cpp-tests/proj.android/jni/Android.mk @@ -49,6 +49,7 @@ LOCAL_SRC_FILES := main.cpp \ ../../Classes/EffectsAdvancedTest/EffectsAdvancedTest.cpp \ ../../Classes/EffectsTest/EffectsTest.cpp \ ../../Classes/ExtensionsTest/ExtensionsTest.cpp \ +../../Classes/ExtensionsTest/AssetsManagerExTest/AssetsManagerExTest.cpp \ ../../Classes/ExtensionsTest/CocosBuilderTest/CocosBuilderTest.cpp \ ../../Classes/ExtensionsTest/CocosBuilderTest/AnimationsTest/AnimationsTestLayer.cpp \ ../../Classes/ExtensionsTest/CocosBuilderTest/ButtonTest/ButtonTestLayer.cpp \ diff --git a/tests/cpp-tests/proj.android/jni/Application.mk b/tests/cpp-tests/proj.android/jni/Application.mk index 59808706eb..9d0c6cac00 100644 --- a/tests/cpp-tests/proj.android/jni/Application.mk +++ b/tests/cpp-tests/proj.android/jni/Application.mk @@ -4,7 +4,6 @@ NDK_TOOLCHAIN_VERSION=clang APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char APP_LDFLAGS := -latomic - ifeq ($(NDK_DEBUG),1) APP_CPPFLAGS += -DCOCOS2D_DEBUG=1 APP_OPTIM := debug @@ -12,3 +11,4 @@ else APP_CPPFLAGS += -DNDEBUG APP_OPTIM := release endif + diff --git a/tests/cpp-tests/proj.ios/Default-667h@2x.png b/tests/cpp-tests/proj.ios/Default-667h@2x.png new file mode 100644 index 0000000000..a0f61ec8e6 Binary files /dev/null and b/tests/cpp-tests/proj.ios/Default-667h@2x.png differ diff --git a/tests/cpp-tests/proj.ios/Default-736h@3x.png b/tests/cpp-tests/proj.ios/Default-736h@3x.png new file mode 100644 index 0000000000..dadccee686 Binary files /dev/null and b/tests/cpp-tests/proj.ios/Default-736h@3x.png differ diff --git a/tests/cpp-tests/proj.ios/Info.plist b/tests/cpp-tests/proj.ios/Info.plist index 0d0aff0b3b..46501d316c 100644 --- a/tests/cpp-tests/proj.ios/Info.plist +++ b/tests/cpp-tests/proj.ios/Info.plist @@ -57,6 +57,89 @@ ???? CFBundleVersion 1.0 + UILaunchImages + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {414, 736} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {414, 736} + + LSRequiresIPhoneOS UIAppFonts diff --git a/tests/cpp-tests/proj.win32/cpp-tests.vcxproj b/tests/cpp-tests/proj.win32/cpp-tests.vcxproj index 37a51472fc..7a885faf09 100644 --- a/tests/cpp-tests/proj.win32/cpp-tests.vcxproj +++ b/tests/cpp-tests/proj.win32/cpp-tests.vcxproj @@ -145,6 +145,7 @@ + @@ -233,7 +234,6 @@ - @@ -334,6 +334,7 @@ + @@ -425,7 +426,6 @@ - @@ -577,4 +577,4 @@ - + \ No newline at end of file diff --git a/tests/cpp-tests/proj.win32/cpp-tests.vcxproj.filters b/tests/cpp-tests/proj.win32/cpp-tests.vcxproj.filters index 158b6fab9c..98b97b0ac6 100644 --- a/tests/cpp-tests/proj.win32/cpp-tests.vcxproj.filters +++ b/tests/cpp-tests/proj.win32/cpp-tests.vcxproj.filters @@ -331,8 +331,8 @@ {54a30b92-ddfb-420e-908b-886c23c21cf1} - - {a0b90b93-5575-4729-9afc-8a3839b378ac} + + {f6c2eb6d-ad25-4287-a2a4-1c0d7382a49f} {0ebafb87-26f5-4a07-b36f-1e4fa03afbe8} @@ -876,12 +876,12 @@ Classes\BillBoardTest + + Classes\ExtensionsTest\AssetsManagerExTest + Classes\LightTest - - Classes\UITest\CocostudioGUISceneTest\UIWebViewTest - Classes\NewAudioEngineTest @@ -1622,12 +1622,12 @@ Classes\BillBoardTest + + Classes\ExtensionsTest\AssetsManagerExTest + Classes\LightTest - - Classes\UITest\CocostudioGUISceneTest\UIWebViewTest - Classes\NewAudioEngineTest diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/App.xaml b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/App.xaml new file mode 100644 index 0000000000..e7d31aea9d --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/App.xaml @@ -0,0 +1,13 @@ + + + + + cpp_tests + + + diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/App.xaml.cpp b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/App.xaml.cpp new file mode 100644 index 0000000000..ecdc3bc361 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/App.xaml.cpp @@ -0,0 +1,21 @@ +#include "pch.h" +#include "OpenGLESPage.xaml.h" + +using namespace cpp_tests; + +App::App() +{ + InitializeComponent(); +} + +void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ e) +{ + if (mPage == nullptr) + { + mPage = ref new OpenGLESPage(&mOpenGLES); + } + + // Place the page in the current window and ensure that it is active. + Windows::UI::Xaml::Window::Current->Content = mPage; + Windows::UI::Xaml::Window::Current->Activate(); +} diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/App.xaml.h b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/App.xaml.h new file mode 100644 index 0000000000..135590b547 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/App.xaml.h @@ -0,0 +1,19 @@ +#pragma once + +#include "app.g.h" +#include "OpenGLES.h" +#include "openglespage.xaml.h" + +namespace cpp_tests +{ + ref class App sealed + { + public: + App(); + virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ e) override; + + private: + OpenGLESPage^ mPage; + OpenGLES mOpenGLES; + }; +} diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/HelloTriangleRenderer.cpp b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/HelloTriangleRenderer.cpp new file mode 100644 index 0000000000..2e6700d0bc --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/HelloTriangleRenderer.cpp @@ -0,0 +1,161 @@ +// Based on Hello_Triangle.c from +// Book: OpenGL(R) ES 2.0 Programming Guide +// Authors: Aaftab Munshi, Dan Ginsburg, Dave Shreiner +// ISBN-10: 0321502795 +// ISBN-13: 9780321502797 +// Publisher: Addison-Wesley Professional +// URLs: http://safari.informit.com/9780321563835 +// http://www.opengles-book.com + +// +// This file is used by the template to render a basic scene using GL. +// + +#include "pch.h" +#include "HelloTriangleRenderer.h" + +// These are used by the shader compilation methods. +#include +#include +#include + +using namespace Platform; + +using namespace cpp_tests; + +#define STRING(s) #s + +GLuint CompileShader(GLenum type, const std::string &source) +{ + GLuint shader = glCreateShader(type); + + const char *sourceArray[1] = { source.c_str() }; + glShaderSource(shader, 1, sourceArray, NULL); + glCompileShader(shader); + + GLint compileResult; + glGetShaderiv(shader, GL_COMPILE_STATUS, &compileResult); + + if (compileResult == 0) + { + GLint infoLogLength; + glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLogLength); + + std::vector infoLog(infoLogLength); + glGetShaderInfoLog(shader, (GLsizei)infoLog.size(), NULL, infoLog.data()); + + std::wstring errorMessage = std::wstring(L"Shader compilation failed: "); + errorMessage += std::wstring(infoLog.begin(), infoLog.end()); + + throw Exception::CreateException(E_FAIL, ref new Platform::String(errorMessage.c_str())); + } + + return shader; +} + +GLuint CompileProgram(const std::string &vsSource, const std::string &fsSource) +{ + GLuint program = glCreateProgram(); + + if (program == 0) + { + throw Exception::CreateException(E_FAIL, L"Program creation failed"); + } + + GLuint vs = CompileShader(GL_VERTEX_SHADER, vsSource); + GLuint fs = CompileShader(GL_FRAGMENT_SHADER, fsSource); + + if (vs == 0 || fs == 0) + { + glDeleteShader(fs); + glDeleteShader(vs); + glDeleteProgram(program); + return 0; + } + + glAttachShader(program, vs); + glDeleteShader(vs); + + glAttachShader(program, fs); + glDeleteShader(fs); + + glLinkProgram(program); + + GLint linkStatus; + glGetProgramiv(program, GL_LINK_STATUS, &linkStatus); + + if (linkStatus == 0) + { + GLint infoLogLength; + glGetProgramiv(program, GL_INFO_LOG_LENGTH, &infoLogLength); + + std::vector infoLog(infoLogLength); + glGetProgramInfoLog(program, (GLsizei)infoLog.size(), NULL, infoLog.data()); + + std::wstring errorMessage = std::wstring(L"Program link failed: "); + errorMessage += std::wstring(infoLog.begin(), infoLog.end()); + + throw Exception::CreateException(E_FAIL, ref new Platform::String(errorMessage.c_str())); + } + + return program; +} + +HelloTriangleRenderer::HelloTriangleRenderer() : + mProgram(0) +{ + // Vertex Shader source + const std::string vs = STRING + ( + attribute vec4 vPosition; + void main() + { + gl_Position = vPosition; + } + ); + + // Fragment Shader source + const std::string fs = STRING + ( + precision mediump float; + void main() + { + gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); + } + ); + + // CompileProgram will throw if it fails, so we don't need to check for success. + mProgram = CompileProgram(vs, fs); +} + +HelloTriangleRenderer::~HelloTriangleRenderer() +{ + if (mProgram != 0) + { + glDeleteProgram(mProgram); + mProgram = 0; + } +} + +// Draws a basic triangle +void HelloTriangleRenderer::Draw(GLsizei width, GLsizei height) +{ + glViewport(0, 0, width, height); + + GLfloat vertices[] = + { + 0.0f, 0.5f, 0.0f, + -0.5f, -0.5f, 0.0f, + 0.5f, -0.5f, 0.0f, + }; + + glClear(GL_COLOR_BUFFER_BIT); + + glUseProgram(mProgram); + + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, vertices); + glEnableVertexAttribArray(0); + + glDrawArrays(GL_TRIANGLES, 0, 3); +} + diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/HelloTriangleRenderer.h b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/HelloTriangleRenderer.h new file mode 100644 index 0000000000..410f5a2a54 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/HelloTriangleRenderer.h @@ -0,0 +1,17 @@ +#pragma once + +#include "pch.h" + +namespace cpp_tests +{ + class HelloTriangleRenderer + { + public: + HelloTriangleRenderer(); + ~HelloTriangleRenderer(); + void Draw(GLsizei width, GLsizei height); + + private: + GLuint mProgram; + }; +} \ No newline at end of file diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/OpenGLES.cpp b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/OpenGLES.cpp new file mode 100644 index 0000000000..793b91d83f --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/OpenGLES.cpp @@ -0,0 +1,153 @@ +#include "pch.h" + +using namespace Platform; +using namespace Windows::UI::Xaml::Controls; +using namespace Windows::Foundation; +using namespace Windows::Foundation::Collections; + +OpenGLES::OpenGLES() : + mEglConfig(nullptr), + mEglDisplay(EGL_NO_DISPLAY), + mEglContext(EGL_NO_CONTEXT) +{ + Initialize(); +} + +OpenGLES::~OpenGLES() +{ + Cleanup(); +} + +void OpenGLES::Initialize() +{ + const EGLint configAttributes[] = + { + EGL_RED_SIZE, 8, + EGL_GREEN_SIZE, 8, + EGL_BLUE_SIZE, 8, + EGL_ALPHA_SIZE, 8, + EGL_DEPTH_SIZE, 8, + EGL_STENCIL_SIZE, 8, + EGL_NONE + }; + + const EGLint displayAttributes[] = + { + // This can be used to configure D3D11. For example, EGL_PLATFORM_ANGLE_TYPE_D3D11_FL9_3_ANGLE could be used. + // This would ask the graphics card to use D3D11 Feature Level 9_3 instead of Feature Level 11_0+. + // On Windows Phone, this would allow the Phone Emulator to act more like the GPUs that are available on real Phone devices. + EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, + EGL_NONE, + }; + + const EGLint contextAttributes[] = + { + EGL_CONTEXT_CLIENT_VERSION, 2, + EGL_NONE + }; + + // eglGetPlatformDisplayEXT is an alternative to eglGetDisplay. It allows us to pass in 'displayAttributes' to configure D3D11. + PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT = reinterpret_cast(eglGetProcAddress("eglGetPlatformDisplayEXT")); + if (!eglGetPlatformDisplayEXT) + { + throw Exception::CreateException(E_FAIL, L"Failed to get function eglGetPlatformDisplayEXT"); + } + + mEglDisplay = eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, EGL_DEFAULT_DISPLAY, displayAttributes); + if (mEglDisplay == EGL_NO_DISPLAY) + { + throw Exception::CreateException(E_FAIL, L"Failed to get default EGL display"); + } + + if (eglInitialize(mEglDisplay, NULL, NULL) == EGL_FALSE) + { + throw Exception::CreateException(E_FAIL, L"Failed to initialize EGL"); + } + + EGLint numConfigs = 0; + if (eglGetConfigs(mEglDisplay, NULL, 0, &numConfigs) == EGL_FALSE) + { + throw Exception::CreateException(E_FAIL, L"Failed to get EGLConfig count"); + } + + if (eglChooseConfig(mEglDisplay, configAttributes, &mEglConfig, 1, &numConfigs) == EGL_FALSE) + { + throw Exception::CreateException(E_FAIL, L"Failed to choose first EGLConfig"); + } + + mEglContext = eglCreateContext(mEglDisplay, mEglConfig, EGL_NO_CONTEXT, contextAttributes); + if (mEglContext == EGL_NO_CONTEXT) + { + throw Exception::CreateException(E_FAIL, L"Failed to create EGL context"); + } +} + +void OpenGLES::Cleanup() +{ + if (mEglDisplay != EGL_NO_DISPLAY && mEglContext != EGL_NO_CONTEXT) + { + eglDestroyContext(mEglDisplay, mEglContext); + mEglContext = EGL_NO_CONTEXT; + } + + if (mEglDisplay != EGL_NO_DISPLAY) + { + eglTerminate(mEglDisplay); + mEglDisplay = EGL_NO_DISPLAY; + } +} + +void OpenGLES::Reset() +{ + Cleanup(); + Initialize(); +} + +EGLSurface OpenGLES::CreateSurface(SwapChainPanel^ panel, const Size* renderSurfaceSize) +{ + if (!panel) + { + throw Exception::CreateException(E_INVALIDARG, L"SwapChainPanel parameter is invalid"); + } + + EGLSurface surface = EGL_NO_SURFACE; + + // Create a PropertySet and initialize with the EGLNativeWindowType. + PropertySet^ surfaceCreationProperties = ref new PropertySet(); + surfaceCreationProperties->Insert(ref new String(EGLNativeWindowTypeProperty), panel); + + // If a render surface size is specified, add it to the surface creation properties + if (renderSurfaceSize != nullptr) + { + surfaceCreationProperties->Insert(ref new String(EGLRenderSurfaceSizeProperty), PropertyValue::CreateSize(*renderSurfaceSize)); + } + + surface = eglCreateWindowSurface(mEglDisplay, mEglConfig, reinterpret_cast(surfaceCreationProperties), NULL); + if (surface == EGL_NO_SURFACE) + { + throw Exception::CreateException(E_FAIL, L"Failed to create EGL surface"); + } + + return surface; +} + +void OpenGLES::DestroySurface(const EGLSurface surface) +{ + if (mEglDisplay != EGL_NO_DISPLAY && surface != EGL_NO_SURFACE) + { + eglDestroySurface(mEglDisplay, surface); + } +} + +void OpenGLES::MakeCurrent(const EGLSurface surface) +{ + if (eglMakeCurrent(mEglDisplay, surface, surface, mEglContext) == EGL_FALSE) + { + throw Exception::CreateException(E_FAIL, L"Failed to make EGLSurface current"); + } +} + +EGLBoolean OpenGLES::SwapBuffers(const EGLSurface surface) +{ + return (eglSwapBuffers(mEglDisplay, surface)); +} diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/OpenGLES.h b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/OpenGLES.h new file mode 100644 index 0000000000..2190e23c57 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/OpenGLES.h @@ -0,0 +1,23 @@ +#pragma once + +class OpenGLES +{ +public: + OpenGLES(); + ~OpenGLES(); + + EGLSurface CreateSurface(Windows::UI::Xaml::Controls::SwapChainPanel^ panel, const Windows::Foundation::Size* renderSurfaceSize); + void DestroySurface(const EGLSurface surface); + void MakeCurrent(const EGLSurface surface); + EGLBoolean SwapBuffers(const EGLSurface surface); + void Reset(); + +private: + void Initialize(); + void Cleanup(); + +private: + EGLDisplay mEglDisplay; + EGLContext mEglContext; + EGLConfig mEglConfig; +}; diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems new file mode 100644 index 0000000000..581da1b3de --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems @@ -0,0 +1,472 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + {be3a1791-5bce-4cea-92cd-0e2d86dde27a} + cpp_tests + cpp-tests.Shared + f6ae64be-127a-4f7d-ad15-53a0fddb7f41 + + + + %(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + + + + + + + $(MSBuildThisFileDirectory)App.xaml + + + + + $(MSBuildThisFileDirectory)App.xaml + + + + + Designer + + + + + + \ No newline at end of file diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems.filters b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems.filters new file mode 100644 index 0000000000..46fafd09d3 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/cpp-tests.Shared.vcxitems.filters @@ -0,0 +1,1650 @@ + + + + + + + + Classes\ActionManagerTest + + + Classes + + + Classes + + + Classes + + + Classes + + + Classes + + + Classes + + + Classes + + + Classes\ActionsEaseTest + + + Classes\ActionsProgressTest + + + Classes\ActionsTest + + + Classes\BillBoardTest + + + Classes\Box2DTest + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed\Tests + + + Classes\Box2DTestBed + + + Classes\Box2DTestBed + + + Classes\Box2DTestBed + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest\Bug-458 + + + Classes\BugsTest\Bug-458 + + + Classes\Camera3DTest + + + Classes\ChipmunkTest + + + Classes\ClickAndMoveTest + + + Classes\ClippingNodeTest + + + Classes\CocosDenshionTest + + + Classes\ConfigurationTest + + + Classes\ConsoleTest + + + Classes\CurlTest + + + Classes\CurrentLanguageTest + + + Classes\DataVisitorTest + + + Classes\DrawPrimitivesTest + + + Classes\EffectsAdvancedTest + + + Classes\EffectsTest + + + Classes\ExtensionsTest + + + Classes\ExtensionsTest\CocosBuilderTest + + + Classes\ExtensionsTest\CocosBuilderTest\AnimationsTest + + + Classes\ExtensionsTest\CocosBuilderTest\AnimationsTest + + + Classes\ExtensionsTest\CocosBuilderTest\ButtonTest + + + Classes\ExtensionsTest\CocosBuilderTest\ButtonTest + + + Classes\ExtensionsTest\CocosBuilderTest\HelloCocosBuilder + + + Classes\ExtensionsTest\CocosBuilderTest\HelloCocosBuilder + + + Classes\ExtensionsTest\CocosBuilderTest\LabelTest + + + Classes\ExtensionsTest\CocosBuilderTest\LabelTest + + + Classes\ExtensionsTest\CocosBuilderTest\MenuTest + + + Classes\ExtensionsTest\CocosBuilderTest\MenuTest + + + Classes\ExtensionsTest\CocosBuilderTest\TimelineCallbackTest + + + Classes\ExtensionsTest\CocosBuilderTest\TimelineCallbackTest + + + Classes\ExtensionsTest\CocosBuilderTest\TestHeader + + + Classes\ExtensionsTest\CocosBuilderTest\TestHeader + + + Classes\ExtensionsTest\CocosBuilderTest\SpriteTest + + + Classes\ExtensionsTest\CocosBuilderTest\SpriteTest + + + Classes\ExtensionsTest\CocosBuilderTest\ParticleSystemTest + + + Classes\ExtensionsTest\CocosBuilderTest\ParticleSystemTest + + + Classes\ExtensionsTest\CocosBuilderTest\ScrollViewTest + + + Classes\ExtensionsTest\CocosBuilderTest\ScrollViewTest + + + Classes\ExtensionsTest\CocoStudioActionTimelineTest + + + Classes\ExtensionsTest\CocoStudioArmatureTest + + + Classes\ExtensionsTest\CocoStudioComponentsTest + + + Classes\ExtensionsTest\CocoStudioComponentsTest + + + Classes\ExtensionsTest\CocoStudioComponentsTest + + + Classes\ExtensionsTest\CocoStudioComponentsTest + + + Classes\ExtensionsTest\CocoStudioComponentsTest + + + Classes\ExtensionsTest\CocoStudioComponentsTest + + + Classes\ExtensionsTest\CocoStudioSceneTest + + + Classes\ExtensionsTest\CocoStudioSceneTest\TriggerCode + + + Classes\ExtensionsTest\CocoStudioSceneTest\TriggerCode + + + Classes\ExtensionsTest\CocoStudioSceneTest\TriggerCode + + + Classes\ExtensionsTest\ControlExtensionTest + + + Classes\ExtensionsTest\ControlExtensionTest + + + Classes\ExtensionsTest\ControlExtensionTest\CCControlButtonTest + + + Classes\ExtensionsTest\ControlExtensionTest\CCControlColourPicker + + + Classes\ExtensionsTest\ControlExtensionTest\CCControlPotentiometerTest + + + Classes\ExtensionsTest\ControlExtensionTest\CCControlSliderTest + + + Classes\ExtensionsTest\ControlExtensionTest\CCControlStepperTest + + + Classes\ExtensionsTest\ControlExtensionTest\CCControlSwitchTest + + + Classes\ExtensionsTest\NetworkTest + + + Classes\ExtensionsTest\NetworkTest + + + Classes\ExtensionsTest\NetworkTest + + + Classes\ExtensionsTest\TableViewTest + + + Classes\ExtensionsTest\TableViewTest + + + Classes\ExtensionsTest\NotificationCenterTest + + + Classes\FileUtilsTest + + + Classes\InputTest\FontTest + + + Classes\InputTest + + + Classes\IntervalTest + + + Classes\LabelTest + + + Classes\LabelTest + + + Classes\LayerTest + + + Classes\LightTest + + + Classes\MenuTest + + + Classes\MotionStreakTest + + + Classes\MutiTouchTest + + + Classes\NewEventDispatcherTest + + + Classes\NewRendererTest + + + Classes\NodeTest + + + Classes\OpenURLTest + + + Classes\ParallaxTest + + + Classes\ParticleTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PhysicsTest + + + Classes\ReleasePoolTest + + + Classes\RenderTextureTest + + + Classes\RotateWorldTest + + + Classes\SceneTest + + + Classes\SchedulerTest + + + Classes\ShaderTest + + + Classes\ShaderTest + + + Classes\ShaderTest + + + Classes\ShaderTest + + + Classes\SpineTest + + + Classes\Sprite3DTest + + + Classes\Sprite3DTest + + + Classes\SpriteTest + + + Classes\TextInputTest + + + Classes\Texture2dTest + + + Classes\TextureCacheTest + + + Classes\TexturePackerEncryptionTest + + + Classes\TileMapTest + + + Classes\TileMapTest + + + Classes\TouchesTest + + + Classes\TouchesTest + + + Classes\TouchesTest + + + Classes\TransitionsTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UnitTest + + + Classes\UnitTest + + + Classes\UserDefaultTest + + + Classes\ZwoptexTest + + + Classes\UITest + + + Classes\UITest\CocostudioGUISceneTest\CustomTest\CustomImageTest + + + Classes\UITest\CocostudioGUISceneTest\CustomTest\CustomParticleWidgetTest + + + Classes\UITest\CocostudioGUISceneTest\CustomWidget + + + Classes\UITest\CocostudioGUISceneTest\CustomWidget + + + Classes\UITest\CocostudioGUISceneTest\CustomWidget + + + Classes\UITest\CocostudioGUISceneTest\CustomWidget + + + Classes\UITest\CocostudioGUISceneTest\CustomWidget + + + Classes\UITest\CocostudioGUISceneTest\UIButtonTest + + + Classes\UITest\CocostudioGUISceneTest\UIButtonTest + + + Classes\UITest\CocostudioGUISceneTest\UICheckBoxTest + + + Classes\UITest\CocostudioGUISceneTest\UICheckBoxTest + + + Classes\UITest\CocostudioGUISceneTest\UIFocusTest + + + Classes\UITest\CocostudioGUISceneTest\UIImageViewTest + + + Classes\UITest\CocostudioGUISceneTest\UIImageViewTest + + + Classes\UITest\CocostudioGUISceneTest\UILayoutTest + + + Classes\UITest\CocostudioGUISceneTest\UILayoutTest + + + Classes\UITest\CocostudioGUISceneTest\UIListViewTest + + + Classes\UITest\CocostudioGUISceneTest\UIListViewTest + + + Classes\UITest\CocostudioGUISceneTest\UILoadingBarTest + + + Classes\UITest\CocostudioGUISceneTest\UILoadingBarTest + + + Classes\UITest\CocostudioGUISceneTest\UIPageViewTest + + + Classes\UITest\CocostudioGUISceneTest\UIPageViewTest + + + Classes\UITest\CocostudioGUISceneTest\UIRichTextTest + + + Classes\UITest\CocostudioGUISceneTest\UIScrollViewTest + + + Classes\UITest\CocostudioGUISceneTest\UIScrollViewTest + + + Classes\UITest\CocostudioGUISceneTest\UISliderTest + + + Classes\UITest\CocostudioGUISceneTest\UISliderTest + + + Classes\UITest\CocostudioGUISceneTest\UITextAtlasTest + + + Classes\UITest\CocostudioGUISceneTest\UITextAtlasTest + + + Classes\UITest\CocostudioGUISceneTest\UITextBMFontTest + + + Classes\UITest\CocostudioGUISceneTest\UITextBMFontTest + + + Classes\UITest\CocostudioGUISceneTest\UITextFieldTest + + + Classes\UITest\CocostudioGUISceneTest\UITextFieldTest + + + Classes\UITest\CocostudioGUISceneTest\UITextTest + + + Classes\UITest\CocostudioGUISceneTest\UITextTest + + + Classes\UITest\CocostudioGUISceneTest\UIWidgetAddNodeTest + + + Classes\UITest\CocostudioGUISceneTest\UIWidgetAddNodeTest + + + Classes\UITest\CocostudioGUISceneTest\CocostudioParserTest + + + Classes\ExtensionsTest\AssetsManagerExTest + + + + + + + + Classes\ActionManagerTest + + + Classes + + + Classes + + + Classes + + + Classes + + + Classes + + + Classes\ActionsEaseTest + + + Classes\ActionsProgressTest + + + Classes\ActionsTest + + + Classes\BillBoardTest + + + Classes\Box2DTest + + + Classes\Box2DTestBed + + + Classes\Box2DTestBed + + + Classes\Box2DTestBed + + + Classes\Box2DTestBed + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest + + + Classes\BugsTest\Bug-458 + + + Classes\BugsTest\Bug-458 + + + Classes\Camera3DTest + + + Classes\ChipmunkTest + + + Classes\ClickAndMoveTest + + + Classes\ClippingNodeTest + + + Classes\CocosDenshionTest + + + Classes\ConfigurationTest + + + Classes\ConsoleTest + + + Classes\CurlTest + + + Classes\CurrentLanguageTest + + + Classes\DataVisitorTest + + + Classes\DrawPrimitivesTest + + + Classes\EffectsAdvancedTest + + + Classes\EffectsTest + + + Classes\ExtensionsTest + + + Classes\ExtensionsTest\CocosBuilderTest + + + Classes\ExtensionsTest\CocosBuilderTest\AnimationsTest + + + Classes\ExtensionsTest\CocosBuilderTest\ButtonTest + + + Classes\ExtensionsTest\CocosBuilderTest\HelloCocosBuilder + + + Classes\ExtensionsTest\CocosBuilderTest\MenuTest + + + Classes\ExtensionsTest\CocosBuilderTest\TimelineCallbackTest + + + Classes\ExtensionsTest\CocosBuilderTest\TestHeader + + + Classes\ExtensionsTest\CocoStudioActionTimelineTest + + + Classes\ExtensionsTest\CocoStudioArmatureTest + + + Classes\ExtensionsTest\CocoStudioComponentsTest + + + Classes\ExtensionsTest\CocoStudioComponentsTest + + + Classes\ExtensionsTest\CocoStudioComponentsTest + + + Classes\ExtensionsTest\CocoStudioComponentsTest + + + Classes\ExtensionsTest\CocoStudioComponentsTest + + + Classes\ExtensionsTest\CocoStudioComponentsTest + + + Classes\ExtensionsTest\CocoStudioSceneTest + + + Classes\ExtensionsTest\CocoStudioSceneTest\TriggerCode + + + Classes\ExtensionsTest\CocoStudioSceneTest\TriggerCode + + + Classes\ExtensionsTest\ControlExtensionTest + + + Classes\ExtensionsTest\ControlExtensionTest + + + Classes\ExtensionsTest\ControlExtensionTest\CCControlButtonTest + + + Classes\ExtensionsTest\ControlExtensionTest\CCControlColourPicker + + + Classes\ExtensionsTest\ControlExtensionTest\CCControlPotentiometerTest + + + Classes\ExtensionsTest\ControlExtensionTest\CCControlSliderTest + + + Classes\ExtensionsTest\ControlExtensionTest\CCControlStepperTest + + + Classes\ExtensionsTest\ControlExtensionTest\CCControlSwitchTest + + + Classes\ExtensionsTest\NetworkTest + + + Classes\ExtensionsTest\NetworkTest + + + Classes\ExtensionsTest\NetworkTest + + + Classes\ExtensionsTest\TableViewTest + + + Classes\ExtensionsTest\TableViewTest + + + Classes\ExtensionsTest\NotificationCenterTest + + + Classes\FileUtilsTest + + + Classes\InputTest\FontTest + + + Classes\InputTest + + + Classes\IntervalTest + + + Classes\LabelTest + + + Classes\LabelTest + + + Classes\LayerTest + + + Classes\LightTest + + + Classes\MenuTest + + + Classes\MotionStreakTest + + + Classes\MutiTouchTest + + + Classes\NewEventDispatcherTest + + + Classes\NewRendererTest + + + Classes\NodeTest + + + Classes\OpenURLTest + + + Classes\ParallaxTest + + + Classes\ParticleTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PerformanceTest + + + Classes\PhysicsTest + + + Classes\ReleasePoolTest + + + Classes\RenderTextureTest + + + Classes\RotateWorldTest + + + Classes\SceneTest + + + Classes\SchedulerTest + + + Classes\ShaderTest + + + Classes\ShaderTest + + + Classes\SpineTest + + + Classes\Sprite3DTest + + + Classes\Sprite3DTest + + + Classes\SpriteTest + + + Classes\TextInputTest + + + Classes\Texture2dTest + + + Classes\TextureCacheTest + + + Classes\TexturePackerEncryptionTest + + + Classes\TileMapTest + + + Classes\TileMapTest + + + Classes\TouchesTest + + + Classes\TouchesTest + + + Classes\TouchesTest + + + Classes\TransitionsTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UITest\CocostudioGUISceneTest + + + Classes\UnitTest + + + Classes\UnitTest + + + Classes\UserDefaultTest + + + Classes\ZwoptexTest + + + Classes\UITest + + + Classes\UITest\CocostudioGUISceneTest\CustomTest\CustomImageTest + + + Classes\UITest\CocostudioGUISceneTest\CustomTest\CustomParticleWidgetTest + + + Classes\UITest\CocostudioGUISceneTest\CustomWidget + + + Classes\UITest\CocostudioGUISceneTest\CustomWidget + + + Classes\UITest\CocostudioGUISceneTest\CustomWidget + + + Classes\UITest\CocostudioGUISceneTest\CustomWidget + + + Classes\UITest\CocostudioGUISceneTest\CustomWidget + + + Classes\UITest\CocostudioGUISceneTest\UIButtonTest + + + Classes\UITest\CocostudioGUISceneTest\UIButtonTest + + + Classes\UITest\CocostudioGUISceneTest\UICheckBoxTest + + + Classes\UITest\CocostudioGUISceneTest\UICheckBoxTest + + + Classes\UITest\CocostudioGUISceneTest\UIFocusTest + + + Classes\UITest\CocostudioGUISceneTest\UIImageViewTest + + + Classes\UITest\CocostudioGUISceneTest\UIImageViewTest + + + Classes\UITest\CocostudioGUISceneTest\UILayoutTest + + + Classes\UITest\CocostudioGUISceneTest\UILayoutTest + + + Classes\UITest\CocostudioGUISceneTest\UIListViewTest + + + Classes\UITest\CocostudioGUISceneTest\UIListViewTest + + + Classes\UITest\CocostudioGUISceneTest\UILoadingBarTest + + + Classes\UITest\CocostudioGUISceneTest\UILoadingBarTest + + + Classes\UITest\CocostudioGUISceneTest\UIPageViewTest + + + Classes\UITest\CocostudioGUISceneTest\UIPageViewTest + + + Classes\UITest\CocostudioGUISceneTest\UIRichTextTest + + + Classes\UITest\CocostudioGUISceneTest\UIScrollViewTest + + + Classes\UITest\CocostudioGUISceneTest\UIScrollViewTest + + + Classes\UITest\CocostudioGUISceneTest\UISliderTest + + + Classes\UITest\CocostudioGUISceneTest\UISliderTest + + + Classes\UITest\CocostudioGUISceneTest\UITextAtlasTest + + + Classes\UITest\CocostudioGUISceneTest\UITextAtlasTest + + + Classes\UITest\CocostudioGUISceneTest\UITextBMFontTest + + + Classes\UITest\CocostudioGUISceneTest\UITextBMFontTest + + + Classes\UITest\CocostudioGUISceneTest\UITextFieldTest + + + Classes\UITest\CocostudioGUISceneTest\UITextFieldTest + + + Classes\UITest\CocostudioGUISceneTest\UITextTest + + + Classes\UITest\CocostudioGUISceneTest\UITextTest + + + Classes\UITest\CocostudioGUISceneTest\UIWidgetAddNodeTest + + + Classes\UITest\CocostudioGUISceneTest\UIWidgetAddNodeTest + + + Classes\UITest\CocostudioGUISceneTest\CocostudioParserTest + + + Classes\ExtensionsTest\AssetsManagerExTest + + + + + + + + + + + + + + {f391ec0c-7b86-4c69-a813-4408c0c29d10} + + + {784f6224-8e31-4d40-a41e-4c2fe7d59cc6} + + + {3969a756-b4c1-4c34-8c8e-e3c7b664957b} + + + {bfe12b3d-59c6-4c75-8698-57287c4027f8} + + + {58b95f58-d80a-4a1f-9092-b37ffc737b96} + + + {814ade2d-f829-4c47-aaca-e42973c1db3d} + + + {efe9c39a-90f7-41ab-b8db-f1fd1aa778d8} + + + {73532d98-203d-4bd9-817f-4ea53c517734} + + + {837f9d86-c5a5-4a6d-8146-ef1fc7bf4486} + + + {bef7f2ae-5316-4969-9bca-671bec69d657} + + + {ae7e0028-86fd-4844-9762-2f6421c34002} + + + {5f90fcaa-d833-4e8e-a495-a5fb2bd055f3} + + + {7d85d710-211a-4900-bedf-f6960cbffad2} + + + {83c5f16c-a381-4baf-8e50-074983fae35c} + + + {e1c57b44-5e20-40d7-b4c5-3125722b7ce5} + + + {0cfd5602-4bf6-4c53-bb4d-b5b31710fc19} + + + {4eec7e1e-cf38-4487-baaf-60dfdfa05151} + + + {93a58e0c-fb89-4509-9f60-85e8ce13eb8e} + + + {669f92bc-a151-40b6-9b60-dc135fbd4273} + + + {6047df81-7dab-4501-9c53-c256ee288cc1} + + + {ab724fe2-63cd-428d-9a10-237acc3cf3f9} + + + {116f5c58-3bb4-4245-aef4-f4f01259813c} + + + {7969a029-c634-41cb-ae18-9a88ada33ef2} + + + {8c3ab6f3-0ad4-4975-bc97-fea3203d3e4b} + + + {82b3b01f-888e-4240-8e25-814674de5fe7} + + + {fa9c060e-9543-478f-bcb8-ab8398ce816d} + + + {8a717ab0-bedc-49b7-b8e2-59b8af5f9619} + + + {afafc668-64ed-4e5e-9c8e-67c6bd9d78cf} + + + {661a29a4-770b-45d5-a958-b2e6cac37196} + + + {125637c8-3613-4d92-ba03-3b09d35ba748} + + + {1e03c44a-f6bc-4668-9ed3-6e597a94a94b} + + + {7ccc51aa-fc85-46ba-83d9-3138031e6034} + + + {7a56806d-9273-4d1d-8514-abfe13ecd43e} + + + {0cdc1974-166f-45c8-807f-11240d3bc9eb} + + + {b8791078-58dd-4e66-bfd5-424bd21bb990} + + + {d03098a9-23cb-4416-a708-dfe38e646f5d} + + + {c324aaa0-a652-41e4-867a-623f11b1bf1c} + + + {cf646b59-29c8-4591-a204-fc9f18e841a7} + + + {d6c3a1f7-8636-4d93-86e1-cb91089d991b} + + + {2bbe5860-9ad5-4853-b5e6-7464f24fd07a} + + + {823b55fb-d90a-410f-bccb-87d05c8f48d3} + + + {bb57df61-7f39-494b-a061-6e5d18d914ac} + + + {792c879a-1aad-4952-913f-3541b0b988ea} + + + {f21347d1-eee3-41d8-93b8-f078be49cbba} + + + {00f84260-18d5-4666-b444-e83cb00108fa} + + + {1b3d89b1-5eb3-4634-affb-39bf18b4601c} + + + {b73283dc-1c4e-4c6f-a2c7-6df60752bb6c} + + + {0dec3c93-bbb2-4461-bbd8-bae267d16620} + + + {ec720c13-b0bf-48e5-8fa0-1b7816f1aa3f} + + + {278aa377-14ba-4dce-a029-53a657b880d7} + + + {ace7592c-2a5d-4c6e-b56a-eeda64c44524} + + + {d165f9b9-74a3-4ff6-a5a3-6ebc43c1c4b1} + + + {16d2de7d-1133-4d71-b26f-d5540aed389a} + + + {11c29331-bdae-4675-af94-feb48fa06ed0} + + + {1f7b1b36-2c09-4717-8c06-7f602c402116} + + + {bc8d7588-16c1-438c-9313-13e596159cd9} + + + {4993f3de-958b-49dd-9c2e-2cf0aa1bcd7b} + + + {65affa7c-fd14-4568-a6b7-7747c462b7ad} + + + {8a1b4921-e6b0-439a-8adb-6881dd3f9cee} + + + {491a70bf-8338-4d4f-93b3-07f15d08ae24} + + + {5be8b84a-3e7b-49ef-95f8-ee7937ea89b2} + + + {77421d23-828e-4c2c-ba6b-630904771b82} + + + {2fe7368e-9751-4721-9eff-58153c669b6e} + + + {9febdcc8-5f5f-4757-ab82-dfa372517bfc} + + + {32e8ec0c-3552-4039-9751-273c525c7539} + + + {f1b2fe20-cce4-4885-919c-893014a66c95} + + + {82efd737-e8e7-4086-85e8-fb4229430d52} + + + {cc43ce58-9f43-4a06-9c51-e8aa588dfa94} + + + {baa5d22b-c453-4aba-a286-86a79614ee79} + + + {8e9d7d79-3cb4-4309-99f8-c6fe619df99e} + + + {c311adec-0d2e-40ec-97dd-e37f3279cacd} + + + {1644f6d4-1e8e-496f-bc58-fd6df7dadff0} + + + {fc2fa628-d858-40e0-8147-7a7c199276e5} + + + {a4ce391a-161c-4054-b10c-2bf57d151670} + + + {3b9baa68-f05a-4333-87a1-ac8d88b08d8e} + + + {f12b586c-8ad5-4a75-a643-5c4c1b89bfa0} + + + {4e6fd0ff-c790-4ae5-8bff-888f40ee9659} + + + {f1d5116f-a7fe-49fb-b3bd-6de0f2dabc9b} + + + {0fc0238a-39fb-40f6-9cf9-c452e651562e} + + + {29899d4b-d806-426f-8447-d7c83454c1cf} + + + {85734285-17b1-4122-a0a9-9e1c774a7558} + + + {d4c281b6-6279-4555-aa75-883f27e2a91c} + + + {e9f49d1a-9dd8-48df-b1bd-e067a7ec37cd} + + + {c54c84ec-5edf-4423-bcdd-5f6578b65525} + + + {daf6246b-c673-432b-be5d-7a2bb067a255} + + + {bc1094f8-6f03-45c3-b475-1ab16210b4b5} + + + {19bdeacf-7740-4c9c-822f-f8d3ea98d452} + + + {cf276f2c-502f-4752-9f0a-49910b3a5af3} + + + {054ab72c-845e-43ab-8a02-4f73569f7e02} + + + {6af0635b-c984-43a1-9263-0074e904b50c} + + + {b8edd306-886d-4fa6-a97c-b930adc2de36} + + + {3fd77e97-6478-4076-bcce-78366417556f} + + + {5cfc03ef-b92a-4907-aee5-7907fc6a2ec8} + + + {53b3883b-75fd-449a-bff0-049666bcb37f} + + + {acae99cc-d880-4639-8ca6-ea86280f8717} + + + {4d2df976-e166-4594-9623-f08b80cc89da} + + + {18235e83-827b-4f2b-b4e5-0a9101d1744f} + + + {81149ad7-cd77-4550-81d5-f92d2a24262d} + + + {2cfcecc0-e911-44d4-99b1-713334cad8fd} + + + {0dd6d6bc-8038-497b-9277-32bec637ea75} + + + {012f7c6c-1148-41d7-9a9e-3b7e354b5144} + + + {449f58a7-f925-420d-9298-a97299623782} + + + {c6942f2c-e4d7-408a-8dca-a4ab2560e90a} + + + {ca823c33-3ef6-4ba4-b84b-549ee38fbf25} + + + {acd7dd63-eaa6-49dd-b472-dcdfe4915a2d} + + + {021f3545-db93-472e-b645-fd7190182c03} + + + {bed2df6d-74db-41fe-9987-4159cdf9a30d} + + + {0378f118-a952-4990-83cc-1e50f51a9fde} + + + {6012744a-4a9e-4977-9009-811a9c38f754} + + + {bf02fcde-560c-4a44-a393-488318956014} + + + {8e194c48-76d0-4dae-bc91-b8b8292ea824} + + + {9ce60738-6f45-4d73-9774-2a80062b3944} + + + {4f4b4f24-d906-4845-a6fa-52a27d3ec99c} + + + {2c5dd382-6534-4369-b33c-6b18995e6576} + + + \ No newline at end of file diff --git a/cocos/editor-support/cocostudio/proj.wp8/pch.cpp b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/pch.cpp similarity index 100% rename from cocos/editor-support/cocostudio/proj.wp8/pch.cpp rename to tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/pch.cpp diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/pch.h b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/pch.h new file mode 100644 index 0000000000..4bdade37c9 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Shared/pch.h @@ -0,0 +1,27 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include + +// OpenGL ES includes +#include +#include + +// EGL includes +#include +#include +#include +#include + +#include "OpenGLES.h" +#include "HelloTriangleRenderer.h" +#include "App.xaml.h" + +#include "cocos2d.h" +#include "cocos-ext.h" \ No newline at end of file diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/OpenGLESPage.xaml b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/OpenGLESPage.xaml new file mode 100644 index 0000000000..47d2da5797 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/OpenGLESPage.xaml @@ -0,0 +1,13 @@ + + + + + + diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/OpenGLESPage.xaml.cpp b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/OpenGLESPage.xaml.cpp new file mode 100644 index 0000000000..29392e8af4 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/OpenGLESPage.xaml.cpp @@ -0,0 +1,188 @@ +#include "pch.h" +#include "OpenGLESPage.xaml.h" + +using namespace cpp_tests; +using namespace Platform; +using namespace Concurrency; +using namespace Windows::Foundation; + +OpenGLESPage::OpenGLESPage() : + OpenGLESPage(nullptr) +{ + +} + +OpenGLESPage::OpenGLESPage(OpenGLES* openGLES) : + mOpenGLES(openGLES), + mRenderSurface(EGL_NO_SURFACE), + mCustomRenderSurfaceSize(0,0), + mUseCustomRenderSurfaceSize(false) +{ + InitializeComponent(); + + Windows::UI::Core::CoreWindow^ window = Windows::UI::Xaml::Window::Current->CoreWindow; + + window->VisibilityChanged += + ref new Windows::Foundation::TypedEventHandler(this, &OpenGLESPage::OnVisibilityChanged); + + swapChainPanel->SizeChanged += + ref new Windows::UI::Xaml::SizeChangedEventHandler(this, &OpenGLESPage::OnSwapChainPanelSizeChanged); + + this->Loaded += + ref new Windows::UI::Xaml::RoutedEventHandler(this, &OpenGLESPage::OnPageLoaded); + +#if !(WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) + // Disable all pointer visual feedback for better performance when touching. + // This is not supported on Windows Phone applications. + auto pointerVisualizationSettings = Windows::UI::Input::PointerVisualizationSettings::GetForCurrentView(); + pointerVisualizationSettings->IsContactFeedbackEnabled = false; + pointerVisualizationSettings->IsBarrelButtonFeedbackEnabled = false; +#endif + + mSwapChainPanelSize = { swapChainPanel->RenderSize.Width, swapChainPanel->RenderSize.Height }; +} + +OpenGLESPage::~OpenGLESPage() +{ + StopRenderLoop(); + DestroyRenderSurface(); +} + +void OpenGLESPage::OnPageLoaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + // The SwapChainPanel has been created and arranged in the page layout, so EGL can be initialized. + CreateRenderSurface(); + StartRenderLoop(); +} + +void OpenGLESPage::OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args) +{ + if (args->Visible && mRenderSurface != EGL_NO_SURFACE) + { + StartRenderLoop(); + } + else + { + StopRenderLoop(); + } +} + +void OpenGLESPage::OnSwapChainPanelSizeChanged(Object^ sender, Windows::UI::Xaml::SizeChangedEventArgs^ e) +{ + // Size change events occur outside of the render thread. A lock is required when updating + // the swapchainpanel size + critical_section::scoped_lock lock(mSwapChainPanelSizeCriticalSection); + mSwapChainPanelSize = { e->NewSize.Width, e->NewSize.Height }; +} + +void OpenGLESPage::GetSwapChainPanelSize(GLsizei* width, GLsizei* height) +{ + critical_section::scoped_lock lock(mSwapChainPanelSizeCriticalSection); + // If a custom render surface size is specified, return its size instead of + // the swapchain panel size. + if (mUseCustomRenderSurfaceSize) + { + *width = static_cast(mCustomRenderSurfaceSize.Width); + *height = static_cast(mCustomRenderSurfaceSize.Height); + } + else + { + *width = static_cast(mSwapChainPanelSize.Width); + *height = static_cast(mSwapChainPanelSize.Height); + } +} + +void OpenGLESPage::CreateRenderSurface() +{ + if (mOpenGLES) + { + // + // A Custom render surface size can be specified by uncommenting the following lines. + // The render surface will be automatically scaled to fit the entire window. Using a + // smaller sized render surface can result in a performance gain. + // + //mCustomRenderSurfaceSize = Size(800, 600); + //mUseCustomRenderSurfaceSize = true; + + mRenderSurface = mOpenGLES->CreateSurface(swapChainPanel, mUseCustomRenderSurfaceSize ? &mCustomRenderSurfaceSize : nullptr); + } +} + +void OpenGLESPage::DestroyRenderSurface() +{ + if (mOpenGLES) + { + mOpenGLES->DestroySurface(mRenderSurface); + } + mRenderSurface = EGL_NO_SURFACE; +} + +void OpenGLESPage::RecoverFromLostDevice() +{ + // Stop the render loop, reset OpenGLES, recreate the render surface + // and start the render loop again to recover from a lost device. + + StopRenderLoop(); + + { + critical_section::scoped_lock lock(mRenderSurfaceCriticalSection); + + DestroyRenderSurface(); + mOpenGLES->Reset(); + CreateRenderSurface(); + } + + StartRenderLoop(); +} + +void OpenGLESPage::StartRenderLoop() +{ + // If the render loop is already running then do not start another thread. + if (mRenderLoopWorker != nullptr && mRenderLoopWorker->Status == Windows::Foundation::AsyncStatus::Started) + { + return; + } + + // Create a task for rendering that will be run on a background thread. + auto workItemHandler = ref new Windows::System::Threading::WorkItemHandler([this](Windows::Foundation::IAsyncAction ^ action) + { + critical_section::scoped_lock lock(mRenderSurfaceCriticalSection); + + mOpenGLES->MakeCurrent(mRenderSurface); + HelloTriangleRenderer renderer; + + while (action->Status == Windows::Foundation::AsyncStatus::Started) + { + GLsizei panelWidth = 0; + GLsizei panelHeight = 0; + + GetSwapChainPanelSize(&panelWidth, &panelHeight); + renderer.Draw(panelWidth, panelHeight); + + // The call to eglSwapBuffers might not be successful (i.e. due to Device Lost) + // If the call fails, then we must reinitialize EGL and the GL resources. + if (mOpenGLES->SwapBuffers(mRenderSurface) != GL_TRUE) + { + // XAML objects like the SwapChainPanel must only be manipulated on the UI thread. + swapChainPanel->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::High, ref new Windows::UI::Core::DispatchedHandler([=]() + { + RecoverFromLostDevice(); + }, CallbackContext::Any)); + + return; + } + } + }); + + // Run task on a dedicated high priority background thread. + mRenderLoopWorker = Windows::System::Threading::ThreadPool::RunAsync(workItemHandler, Windows::System::Threading::WorkItemPriority::High, Windows::System::Threading::WorkItemOptions::TimeSliced); +} + +void OpenGLESPage::StopRenderLoop() +{ + if (mRenderLoopWorker) + { + mRenderLoopWorker->Cancel(); + mRenderLoopWorker = nullptr; + } +} \ No newline at end of file diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/OpenGLESPage.xaml.h b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/OpenGLESPage.xaml.h new file mode 100644 index 0000000000..3d9bd57996 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/OpenGLESPage.xaml.h @@ -0,0 +1,39 @@ +#pragma once + +#include "OpenGLESPage.g.h" + +namespace cpp_tests +{ + public ref class OpenGLESPage sealed + { + public: + OpenGLESPage(); + virtual ~OpenGLESPage(); + + internal: + OpenGLESPage(OpenGLES* openGLES); + + private: + void OnPageLoaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args); + void OnSwapChainPanelSizeChanged(Platform::Object^ sender, Windows::UI::Xaml::SizeChangedEventArgs^ e); + void GetSwapChainPanelSize(GLsizei* width, GLsizei* height); + void CreateRenderSurface(); + void DestroyRenderSurface(); + void RecoverFromLostDevice(); + void StartRenderLoop(); + void StopRenderLoop(); + + OpenGLES* mOpenGLES; + + Windows::Foundation::Size mSwapChainPanelSize; + Concurrency::critical_section mSwapChainPanelSizeCriticalSection; + + Windows::Foundation::Size mCustomRenderSurfaceSize; + bool mUseCustomRenderSurfaceSize; + + EGLSurface mRenderSurface; // This surface is associated with a swapChainPanel on the page + Concurrency::critical_section mRenderSurfaceCriticalSection; + Windows::Foundation::IAsyncAction^ mRenderLoopWorker; + }; +} diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/Package.appxmanifest b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/Package.appxmanifest new file mode 100644 index 0000000000..c33b43b0d4 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/Package.appxmanifest @@ -0,0 +1,42 @@ + + + + + + + cpp-tests.Windows + dalestam + Assets\StoreLogo.png + + + + 6.3.0 + 6.3.0 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/cpp-tests.Windows.vcxproj b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/cpp-tests.Windows.vcxproj new file mode 100644 index 0000000000..df1b1bffab --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/cpp-tests.Windows.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + Debug + ARM + + + Release + ARM + + + + {f2bae06b-caae-43ee-b21b-57fa48db04fa} + cpp_tests + en-US + 12.0 + true + Windows Store + 8.1 + + + + Application + true + v120 + + + Application + false + true + v120 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cpp-tests.Windows_TemporaryKey.pfx + + + + + %(AdditionalDependencies) + %(AdditionalLibraryDirectories); + + + pch.h + $(IntDir)pch.pch + ../../Classes;%(AdditionalIncludeDirectories) + /bigobj /Zm200 %(AdditionalOptions) + 4453;28204;%(DisableSpecificWarnings) + pch.h + pch.h + + + + + %(AdditionalDependencies) + %(AdditionalLibraryDirectories); + + + pch.h + $(IntDir)pch.pch + ../../Classes;%(AdditionalIncludeDirectories) + /bigobj /Zm200 %(AdditionalOptions) + 4453;28204;%(DisableSpecificWarnings) + pch.h + pch.h + + + + + %(AdditionalDependencies) + %(AdditionalLibraryDirectories); + + + pch.h + $(IntDir)pch.pch + ../../Classes;%(AdditionalIncludeDirectories) + /bigobj /Zm200 %(AdditionalOptions) + 4453;28204;%(DisableSpecificWarnings) + pch.h + pch.h + + + + + + + + + + + Designer + + + + + + + + + OpenGLESPage.xaml + + + + + OpenGLESPage.xaml + + + + + {9335005f-678e-4e8e-9b84-50037216aec8} + + + {f3550fe0-c795-44f6-8feb-093eb68143ae} + + + {3b26a12d-3a44-47ea-82d2-282660fc844d} + + + + + + + + + \ No newline at end of file diff --git a/build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj.filters b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/cpp-tests.Windows.vcxproj.filters similarity index 54% rename from build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj.filters rename to tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/cpp-tests.Windows.vcxproj.filters index 1a0d3d8faf..1605ce7930 100644 --- a/build/winrt/Cocos2dShaderCompiler/Cocos2dShaderCompiler.vcxproj.filters +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/cpp-tests.Windows.vcxproj.filters @@ -2,9 +2,12 @@ - 5a7dfab3-eb13-41b4-a863-3136f23cdca2 + 3744285b-cd16-4f7f-b639-92c82877e0e1 bmp;fbx;gif;jpg;jpeg;tga;tiff;tif;png + + dll; + Assets @@ -19,27 +22,18 @@ - + - - - + - - - + - - - - - - + \ No newline at end of file diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/cpp-tests.Windows_TemporaryKey.pfx b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/cpp-tests.Windows_TemporaryKey.pfx new file mode 100644 index 0000000000..a0b95bf048 Binary files /dev/null and b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.Windows/cpp-tests.Windows_TemporaryKey.pfx differ diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/OpenGLESPage.xaml b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/OpenGLESPage.xaml new file mode 100644 index 0000000000..47d2da5797 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/OpenGLESPage.xaml @@ -0,0 +1,13 @@ + + + + + + diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/OpenGLESPage.xaml.cpp b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/OpenGLESPage.xaml.cpp new file mode 100644 index 0000000000..abd0e9b475 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/OpenGLESPage.xaml.cpp @@ -0,0 +1,188 @@ +#include "pch.h" +#include "OpenGLESPage.xaml.h" + +using namespace cpp_tests; +using namespace Platform; +using namespace Concurrency; +using namespace Windows::Foundation; + +OpenGLESPage::OpenGLESPage() : + OpenGLESPage(nullptr) +{ + +} + +OpenGLESPage::OpenGLESPage(OpenGLES* openGLES) : + mOpenGLES(openGLES), + mRenderSurface(EGL_NO_SURFACE), + mCustomRenderSurfaceSize(0,0), + mUseCustomRenderSurfaceSize(false) +{ + InitializeComponent(); + + Windows::UI::Core::CoreWindow^ window = Windows::UI::Xaml::Window::Current->CoreWindow; + + window->VisibilityChanged += + ref new Windows::Foundation::TypedEventHandler(this, &OpenGLESPage::OnVisibilityChanged); + + swapChainPanel->SizeChanged += + ref new Windows::UI::Xaml::SizeChangedEventHandler(this, &OpenGLESPage::OnSwapChainPanelSizeChanged); + + this->Loaded += + ref new Windows::UI::Xaml::RoutedEventHandler(this, &OpenGLESPage::OnPageLoaded); + +#if !(WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) + // Disable all pointer visual feedback for better performance when touching. + // This is not supported on Windows Phone applications. + auto pointerVisualizationSettings = Windows::UI::Input::PointerVisualizationSettings::GetForCurrentView(); + pointerVisualizationSettings->IsContactFeedbackEnabled = false; + pointerVisualizationSettings->IsBarrelButtonFeedbackEnabled = false; +#endif + + mSwapChainPanelSize = { swapChainPanel->RenderSize.Width, swapChainPanel->RenderSize.Height }; +} + +OpenGLESPage::~OpenGLESPage() +{ + StopRenderLoop(); + DestroyRenderSurface(); +} + +void OpenGLESPage::OnPageLoaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) +{ + // The SwapChainPanel has been created and arranged in the page layout, so EGL can be initialized. + CreateRenderSurface(); + StartRenderLoop(); +} + +void OpenGLESPage::OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args) +{ + if (args->Visible && mRenderSurface != EGL_NO_SURFACE) + { + StartRenderLoop(); + } + else + { + StopRenderLoop(); + } +} + +void OpenGLESPage::OnSwapChainPanelSizeChanged(Object^ sender, Windows::UI::Xaml::SizeChangedEventArgs^ e) +{ + // Size change events occur outside of the render thread. A lock is required when updating + // the swapchainpanel size + critical_section::scoped_lock lock(mSwapChainPanelSizeCriticalSection); + mSwapChainPanelSize = { e->NewSize.Width, e->NewSize.Height }; +} + +void OpenGLESPage::GetSwapChainPanelSize(GLsizei* width, GLsizei* height) +{ + critical_section::scoped_lock lock(mSwapChainPanelSizeCriticalSection); + // If a custom render surface size is specified, return its size instead of + // the swapchain panel size. + if (mUseCustomRenderSurfaceSize) + { + *width = static_cast(mCustomRenderSurfaceSize.Width); + *height = static_cast(mCustomRenderSurfaceSize.Height); + } + else + { + *width = static_cast(mSwapChainPanelSize.Width); + *height = static_cast(mSwapChainPanelSize.Height); + } +} + +void OpenGLESPage::CreateRenderSurface() +{ + if (mOpenGLES) + { + // + // A Custom render surface size can be specified by uncommenting the following lines. + // The render surface will be automatically scaled to fit the entire window. Using a + // smaller sized render surface can result in a performance gain. + // + //mCustomRenderSurfaceSize = Size(340, 400); + //mUseCustomRenderSurfaceSize = true; + + mRenderSurface = mOpenGLES->CreateSurface(swapChainPanel, mUseCustomRenderSurfaceSize ? &mCustomRenderSurfaceSize : nullptr); + } +} + +void OpenGLESPage::DestroyRenderSurface() +{ + if (mOpenGLES) + { + mOpenGLES->DestroySurface(mRenderSurface); + } + mRenderSurface = EGL_NO_SURFACE; +} + +void OpenGLESPage::RecoverFromLostDevice() +{ + // Stop the render loop, reset OpenGLES, recreate the render surface + // and start the render loop again to recover from a lost device. + + StopRenderLoop(); + + { + critical_section::scoped_lock lock(mRenderSurfaceCriticalSection); + + DestroyRenderSurface(); + mOpenGLES->Reset(); + CreateRenderSurface(); + } + + StartRenderLoop(); +} + +void OpenGLESPage::StartRenderLoop() +{ + // If the render loop is already running then do not start another thread. + if (mRenderLoopWorker != nullptr && mRenderLoopWorker->Status == Windows::Foundation::AsyncStatus::Started) + { + return; + } + + // Create a task for rendering that will be run on a background thread. + auto workItemHandler = ref new Windows::System::Threading::WorkItemHandler([this](Windows::Foundation::IAsyncAction ^ action) + { + critical_section::scoped_lock lock(mRenderSurfaceCriticalSection); + + mOpenGLES->MakeCurrent(mRenderSurface); + HelloTriangleRenderer renderer; + + while (action->Status == Windows::Foundation::AsyncStatus::Started) + { + GLsizei panelWidth = 0; + GLsizei panelHeight = 0; + + GetSwapChainPanelSize(&panelWidth, &panelHeight); + renderer.Draw(panelWidth, panelHeight); + + // The call to eglSwapBuffers might not be successful (i.e. due to Device Lost) + // If the call fails, then we must reinitialize EGL and the GL resources. + if (mOpenGLES->SwapBuffers(mRenderSurface) != GL_TRUE) + { + // XAML objects like the SwapChainPanel must only be manipulated on the UI thread. + swapChainPanel->Dispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::High, ref new Windows::UI::Core::DispatchedHandler([=]() + { + RecoverFromLostDevice(); + }, CallbackContext::Any)); + + return; + } + } + }); + + // Run task on a dedicated high priority background thread. + mRenderLoopWorker = Windows::System::Threading::ThreadPool::RunAsync(workItemHandler, Windows::System::Threading::WorkItemPriority::High, Windows::System::Threading::WorkItemOptions::TimeSliced); +} + +void OpenGLESPage::StopRenderLoop() +{ + if (mRenderLoopWorker) + { + mRenderLoopWorker->Cancel(); + mRenderLoopWorker = nullptr; + } +} \ No newline at end of file diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/OpenGLESPage.xaml.h b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/OpenGLESPage.xaml.h new file mode 100644 index 0000000000..3d9bd57996 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/OpenGLESPage.xaml.h @@ -0,0 +1,39 @@ +#pragma once + +#include "OpenGLESPage.g.h" + +namespace cpp_tests +{ + public ref class OpenGLESPage sealed + { + public: + OpenGLESPage(); + virtual ~OpenGLESPage(); + + internal: + OpenGLESPage(OpenGLES* openGLES); + + private: + void OnPageLoaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + void OnVisibilityChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::VisibilityChangedEventArgs^ args); + void OnSwapChainPanelSizeChanged(Platform::Object^ sender, Windows::UI::Xaml::SizeChangedEventArgs^ e); + void GetSwapChainPanelSize(GLsizei* width, GLsizei* height); + void CreateRenderSurface(); + void DestroyRenderSurface(); + void RecoverFromLostDevice(); + void StartRenderLoop(); + void StopRenderLoop(); + + OpenGLES* mOpenGLES; + + Windows::Foundation::Size mSwapChainPanelSize; + Concurrency::critical_section mSwapChainPanelSizeCriticalSection; + + Windows::Foundation::Size mCustomRenderSurfaceSize; + bool mUseCustomRenderSurfaceSize; + + EGLSurface mRenderSurface; // This surface is associated with a swapChainPanel on the page + Concurrency::critical_section mRenderSurfaceCriticalSection; + Windows::Foundation::IAsyncAction^ mRenderLoopWorker; + }; +} diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/Package.appxmanifest b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/Package.appxmanifest new file mode 100644 index 0000000000..3fa1ac495c --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/Package.appxmanifest @@ -0,0 +1,45 @@ + + + + + + + + + cpp-tests.WindowsPhone + dalestam + Assets\StoreLogo.png + + + + 6.3.1 + 6.3.1 + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/cpp-tests.WindowsPhone.vcxproj b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/cpp-tests.WindowsPhone.vcxproj new file mode 100644 index 0000000000..5485f28228 --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/cpp-tests.WindowsPhone.vcxproj @@ -0,0 +1,151 @@ + + + + + Debug + ARM + + + Debug + Win32 + + + Release + ARM + + + Release + Win32 + + + + {15247c71-5289-4913-b88f-e253cc353720} + cpp_tests + en-US + 12.0 + true + Windows Phone + 8.1 + + + + Application + true + v120_wp81 + + + Application + false + true + v120_wp81 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %(AdditionalLibraryDirectories) + %(AdditionalDependencies) + false + + + ../../Classes;%(AdditionalIncludeDirectories) + /Zm200 %(AdditionalOptions) + /Zm200 %(AdditionalOptions) + pch.h + pch.h + 4056;4996;%(DisableSpecificWarnings) + 4056;4996;%(DisableSpecificWarnings) + + + + + %(AdditionalLibraryDirectories); + %(AdditionalDependencies) + false + + + ../../Classes;%(AdditionalIncludeDirectories) + /Zm200 %(AdditionalOptions) + /Zm200 %(AdditionalOptions) + pch.h + pch.h + 4056;4996;%(DisableSpecificWarnings) + 4056;4996;%(DisableSpecificWarnings) + + + + True + x86 + + + + + + + + + + + + Designer + + + + + + + + OpenGLESPage.xaml + + + + + OpenGLESPage.xaml + + + + + {22f3b9df-1209-4574-8331-003966f562bf} + + + {cc1da216-a80d-4be4-b309-acb6af313aff} + + + {22f798d8-bfff-4754-996f-a5395343d5ec} + + + + + + + + + \ No newline at end of file diff --git a/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/cpp-tests.WindowsPhone.vcxproj.filters b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/cpp-tests.WindowsPhone.vcxproj.filters new file mode 100644 index 0000000000..a91455b91f --- /dev/null +++ b/tests/cpp-tests/proj.win8.1-universal/cpp-tests.WindowsPhone/cpp-tests.WindowsPhone.vcxproj.filters @@ -0,0 +1,44 @@ + + + + + $guid2$ + bmp;fbx;gif;jpg;jpeg;tga;tiff;tif;png + + + dll; + + + + + + + + + + + + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + + + + \ No newline at end of file diff --git a/tests/cpp-tests/proj.wp8-xaml/cpp-testsComponent/cpp-testsComponent.vcxproj b/tests/cpp-tests/proj.wp8-xaml/cpp-testsComponent/cpp-testsComponent.vcxproj index ac9a97a470..d7cd694fdf 100644 --- a/tests/cpp-tests/proj.wp8-xaml/cpp-testsComponent/cpp-testsComponent.vcxproj +++ b/tests/cpp-tests/proj.wp8-xaml/cpp-testsComponent/cpp-testsComponent.vcxproj @@ -62,20 +62,24 @@ - - + + + - - + + + - - + + + - - + + + @@ -89,7 +93,7 @@ - WP8;_WINRT_DLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;COCOS2D_DEBUG=1;CC_STATIC;%(PreprocessorDefinitions) + CC_ENABLE_CHIPMUNK_INTEGRATION=1;COCOS2D_DEBUG=1;%(PreprocessorDefinitions) Use pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) @@ -102,15 +106,15 @@ Console false - d3d11.lib;libGLESv2_phone.lib;libEGL_phone.lib;xaudio2.lib;libwebsockets.lib;libcurl.lib;%(AdditionalDependencies) + %(AdditionalDependencies) ole32.lib;%(IgnoreSpecificDefaultLibraries) true - $(EngineRoot)external\wp8-specific\angle\prebuilt\$(Platform);$(EngineRoot)\external\curl\prebuilt\wp8\$(Platform);$(EngineRoot)external\websockets\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) + %(AdditionalLibraryDirectories) - WP8;_WINRT_DLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;CC_STATIC;%(PreprocessorDefinitions) + CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) Use pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) @@ -123,15 +127,15 @@ Console false - d3d11.lib;libGLESv2_phone.lib;libEGL_phone.lib;xaudio2.lib;libwebsockets.lib;libcurl.lib;%(AdditionalDependencies) + %(AdditionalDependencies) ole32.lib;%(IgnoreSpecificDefaultLibraries) true - $(EngineRoot)external\wp8-specific\angle\prebuilt\$(Platform);$(EngineRoot)\external\curl\prebuilt\wp8\$(Platform);$(EngineRoot)external\websockets\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) + %(AdditionalLibraryDirectories) - WP8;_WINRT_DLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;COCOS2D_DEBUG=1;CC_STATIC;%(PreprocessorDefinitions) + CC_ENABLE_CHIPMUNK_INTEGRATION=1;COCOS2D_DEBUG=1;%(PreprocessorDefinitions) Use pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) @@ -144,15 +148,15 @@ Console false - d3d11.lib;libGLESv2_phone.lib;libEGL_phone.lib;xaudio2.lib;libwebsockets.lib;libcurl.lib;%(AdditionalDependencies) + %(AdditionalDependencies) ole32.lib;%(IgnoreSpecificDefaultLibraries) true - $(EngineRoot)external\wp8-specific\angle\prebuilt\$(Platform);$(EngineRoot)\external\curl\prebuilt\wp8\$(Platform);$(EngineRoot)external\websockets\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) + %(AdditionalLibraryDirectories) - WP8;_WINRT_DLL;CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;CC_STATIC;%(PreprocessorDefinitions) + CC_ENABLE_CHIPMUNK_INTEGRATION=1;NDEBUG;%(PreprocessorDefinitions) Use pch.h $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) @@ -165,10 +169,10 @@ Console false - d3d11.lib;libGLESv2_phone.lib;libEGL_phone.lib;xaudio2.lib;libwebsockets.lib;libcurl.lib;%(AdditionalDependencies) + %(AdditionalDependencies) ole32.lib;%(IgnoreSpecificDefaultLibraries) true - $(EngineRoot)external\wp8-specific\angle\prebuilt\$(Platform);$(EngineRoot)\external\curl\prebuilt\wp8\$(Platform);$(EngineRoot)external\websockets\prebuilt\wp8\$(Platform);%(AdditionalLibraryDirectories) + %(AdditionalLibraryDirectories) @@ -178,6 +182,12 @@ + + Create + Create + Create + Create + @@ -193,6 +203,7 @@ + @@ -362,18 +373,9 @@ - - Create - Create - Create - Create - false - false - false - false - + @@ -395,6 +397,7 @@ + @@ -625,90 +628,18 @@ - - - {b5af91b3-64ea-44e1-84b0-d759e93758fb} - - - {df125891-eee9-4466-b903-f828fd272158} - - - {20d4035d-fd3f-4fd3-baba-97bc1c38dfc2} - - - {51e5736e-e1a3-4c94-abb7-e92ecef9c12e} + + {7c5dbc42-27f6-4978-aabc-02ba77e2a7f0} {7d4fc6eb-9497-4804-98f3-3eaedc896154} - - {7daa99e7-8e07-4fef-8374-8ec04e395d2e} - - - {88982c27-5a7b-40a8-86e7-b3187b44b322} - - - {08fb23e4-1517-4edc-b682-da238cdaa83d} - - - {04a0c42f-23bb-469b-a9d8-ca49136adbd4} - {c55734a3-702c-4fa1-b950-32c8e169302f} - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - - true - true - - diff --git a/tests/cpp-tests/proj.wp8-xaml/cpp-testsComponent/cpp-testsComponent.vcxproj.filters b/tests/cpp-tests/proj.wp8-xaml/cpp-testsComponent/cpp-testsComponent.vcxproj.filters index 1405c62cde..98237a7c02 100644 --- a/tests/cpp-tests/proj.wp8-xaml/cpp-testsComponent/cpp-testsComponent.vcxproj.filters +++ b/tests/cpp-tests/proj.wp8-xaml/cpp-testsComponent/cpp-testsComponent.vcxproj.filters @@ -329,7 +329,13 @@ {f3b97ed6-a90e-4abc-b916-f91da5de888d} - {a7609300-6bd1-4671-9a1d-0ab8a4c3f54d} + {e5476084-161e-4bfc-9f08-1dcd000dd122} + + + {af74683d-52b5-41a8-b153-62d2609b0035} + + + {1cefd884-4b0a-4952-bbcb-0b03be19330b} @@ -675,7 +681,6 @@ Classes\ConfigurationTest - Classes\ExtensionsTest\NetworkTest @@ -864,7 +869,6 @@ Classes\Camera3DTest - Classes\BillBoardTest @@ -874,6 +878,13 @@ Classes\LightTest + + + Classes\UITest\CocosStudioGUITest\UIEditBoxTest + + + Classes\ExtensionsTest\AssetsManagerExLoaderScene + @@ -1416,7 +1427,6 @@ Classes\ShaderTest - Classes\ExtensionsTest\NetworkTest @@ -1606,7 +1616,6 @@ Classes\Camera3DTest - Classes\BillBoardTest @@ -1616,19 +1625,21 @@ Classes\LightTest + + + Classes\UITest\CocosStudioGUITest\UIEditBoxTest + + + Classes\ExtensionsTest\AssetsManagerExLoaderScene + - - - - - - - - - - - - + + + + + + + \ No newline at end of file diff --git a/tests/game-controller-test/proj.ios/AppController.mm b/tests/game-controller-test/proj.ios/AppController.mm index b32bf90a76..fafbe6ef9c 100644 --- a/tests/game-controller-test/proj.ios/AppController.mm +++ b/tests/game-controller-test/proj.ios/AppController.mm @@ -25,7 +25,7 @@ #import "AppController.h" #import "cocos2d.h" #import "AppDelegate.h" -#import "CCEAGLView.h" +#import "CCEAGLView-ios.h" #import "RootViewController.h" @implementation AppController diff --git a/tests/game-controller-test/proj.ios/Default-667h@2x.png b/tests/game-controller-test/proj.ios/Default-667h@2x.png new file mode 100644 index 0000000000..a0f61ec8e6 Binary files /dev/null and b/tests/game-controller-test/proj.ios/Default-667h@2x.png differ diff --git a/tests/game-controller-test/proj.ios/Default-736h@3x.png b/tests/game-controller-test/proj.ios/Default-736h@3x.png new file mode 100644 index 0000000000..dadccee686 Binary files /dev/null and b/tests/game-controller-test/proj.ios/Default-736h@3x.png differ diff --git a/tests/game-controller-test/proj.ios/Info.plist b/tests/game-controller-test/proj.ios/Info.plist index 5162d3a8da..a0dcce71cf 100644 --- a/tests/game-controller-test/proj.ios/Info.plist +++ b/tests/game-controller-test/proj.ios/Info.plist @@ -77,6 +77,89 @@ ???? CFBundleVersion 1.0 + UILaunchImages + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {414, 736} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {414, 736} + + LSRequiresIPhoneOS UIPrerenderedIcon diff --git a/tests/lua-empty-test/project/CMakeLists.txt b/tests/lua-empty-test/project/CMakeLists.txt index 57e893c682..d220056157 100644 --- a/tests/lua-empty-test/project/CMakeLists.txt +++ b/tests/lua-empty-test/project/CMakeLists.txt @@ -37,7 +37,5 @@ pre_build(${APP_NAME} COMMAND ${CMAKE_COMMAND} -E remove_directory ${APP_BIN_DIR}/Resources COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/../res ${APP_BIN_DIR}/Resources/res COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/../src ${APP_BIN_DIR}/Resources/src - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/cocos/scripting/lua-bindings/script/cocos2d ${APP_BIN_DIR}/Resources - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/cocos/scripting/lua-bindings/script/cocosdenshion ${APP_BIN_DIR}/Resources - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/cocos/scripting/lua-bindings/script/network ${APP_BIN_DIR}/Resources + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/cocos/scripting/lua-bindings/script/ ${APP_BIN_DIR}/Resources/src/cocos ) diff --git a/tests/lua-empty-test/project/proj.android/build-cfg.json b/tests/lua-empty-test/project/proj.android/build-cfg.json index 4ecffa65f0..497120df2f 100644 --- a/tests/lua-empty-test/project/proj.android/build-cfg.json +++ b/tests/lua-empty-test/project/proj.android/build-cfg.json @@ -14,16 +14,8 @@ "to": "res" }, { - "from": "../../../../cocos/scripting/lua-bindings/script/cocos2d", - "to": "" - }, - { - "from": "../../../../cocos/scripting/lua-bindings/script/network", - "to": "" - }, - { - "from": "../../../../cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "" + "from": "../../../../cocos/scripting/lua-bindings/script/", + "to": "src/cocos" }, { "from": "../../../../external/lua/luasocket", diff --git a/tests/lua-empty-test/project/proj.ios/Default-667h@2x.png b/tests/lua-empty-test/project/proj.ios/Default-667h@2x.png new file mode 100644 index 0000000000..a0f61ec8e6 Binary files /dev/null and b/tests/lua-empty-test/project/proj.ios/Default-667h@2x.png differ diff --git a/tests/lua-empty-test/project/proj.ios/Default-736h@3x.png b/tests/lua-empty-test/project/proj.ios/Default-736h@3x.png new file mode 100644 index 0000000000..dadccee686 Binary files /dev/null and b/tests/lua-empty-test/project/proj.ios/Default-736h@3x.png differ diff --git a/tests/lua-empty-test/project/proj.ios/Info.plist b/tests/lua-empty-test/project/proj.ios/Info.plist index 12ee63ab86..22a50d6902 100644 --- a/tests/lua-empty-test/project/proj.ios/Info.plist +++ b/tests/lua-empty-test/project/proj.ios/Info.plist @@ -39,6 +39,89 @@ ???? CFBundleVersion 1.0 + UILaunchImages + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {414, 736} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {414, 736} + + LSRequiresIPhoneOS UIPrerenderedIcon @@ -54,8 +137,8 @@ UISupportedInterfaceOrientations - UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationLandscapeLeft diff --git a/tests/lua-empty-test/src/hello.lua b/tests/lua-empty-test/src/hello.lua index fd6bfb17c3..afe930a1ac 100644 --- a/tests/lua-empty-test/src/hello.lua +++ b/tests/lua-empty-test/src/hello.lua @@ -1,5 +1,7 @@ -require "Cocos2d" -require "Cocos2dConstants" +cc.FileUtils:getInstance():addSearchPath("src") +cc.FileUtils:getInstance():addSearchPath("res") +-- CC_USE_DEPRECATED_API = true +require "cocos.init" -- cclog cclog = function(...) @@ -40,15 +42,7 @@ local function main() initGLView() - --support debug,when used on ios7.1 64bit,these codes should be commented - local targetPlatform = cc.Application:getInstance():getTargetPlatform() - if (cc.PLATFORM_OS_IPHONE == targetPlatform) or (cc.PLATFORM_OS_IPAD == targetPlatform) or - (cc.PLATFORM_OS_ANDROID == targetPlatform) or (cc.PLATFORM_OS_WINDOWS == targetPlatform) or - (cc.PLATFORM_OS_MAC == targetPlatform) then - local host = 'localhost' -- please change localhost to your PC's IP for on-device debugging - require('src/mobdebug').start(host) - end - require "src/hello2" + require "hello2" cclog("result is " .. myadd(1, 1)) --------------- @@ -62,7 +56,7 @@ local function main() local frameHeight = 95 -- create dog animate - local textureDog = cc.Director:getInstance():getTextureCache():addImage("res/dog.png") + local textureDog = cc.Director:getInstance():getTextureCache():addImage("dog.png") local rect = cc.rect(0, 0, frameWidth, frameHeight) local frame0 = cc.SpriteFrame:createWithTexture(textureDog, rect) rect = cc.rect(frameWidth, 0, frameWidth, frameHeight) @@ -105,21 +99,21 @@ local function main() local layerFarm = cc.Layer:create() -- add in farm background - local bg = cc.Sprite:create("res/farm.jpg") + local bg = cc.Sprite:create("farm.jpg") bg:setPosition(origin.x + visibleSize.width / 2 + 80, origin.y + visibleSize.height / 2) layerFarm:addChild(bg) -- add land sprite for i = 0, 3 do for j = 0, 1 do - local spriteLand = cc.Sprite:create("res/land.png") + local spriteLand = cc.Sprite:create("land.png") spriteLand:setPosition(200 + j * 180 - i % 2 * 90, 10 + i * 95 / 2) layerFarm:addChild(spriteLand) end end -- add crop - local frameCrop = cc.SpriteFrame:create("res/crop.png", cc.rect(0, 0, 105, 95)) + local frameCrop = cc.SpriteFrame:create("crop.png", cc.rect(0, 0, 105, 95)) for i = 0, 3 do for j = 0, 1 do local spriteCrop = cc.Sprite:createWithSpriteFrame(frameCrop) @@ -186,13 +180,13 @@ local function main() local function menuCallbackOpenPopup() -- loop test sound effect - local effectPath = cc.FileUtils:getInstance():fullPathForFilename("res/effect1.wav") + local effectPath = cc.FileUtils:getInstance():fullPathForFilename("effect1.wav") effectID = cc.SimpleAudioEngine:getInstance():playEffect(effectPath) menuPopup:setVisible(true) end -- add a popup menu - local menuPopupItem = cc.MenuItemImage:create("res/menu2.png", "res/menu2.png") + local menuPopupItem = cc.MenuItemImage:create("menu2.png", "menu2.png") menuPopupItem:setPosition(0, 0) menuPopupItem:registerScriptTapHandler(menuCallbackClosePopup) menuPopup = cc.Menu:create(menuPopupItem) @@ -201,7 +195,7 @@ local function main() layerMenu:addChild(menuPopup) -- add the left-bottom "tools" menu to invoke menuPopup - local menuToolsItem = cc.MenuItemImage:create("res/menu1.png", "res/menu1.png") + local menuToolsItem = cc.MenuItemImage:create("menu1.png", "menu1.png") menuToolsItem:setPosition(0, 0) menuToolsItem:registerScriptTapHandler(menuCallbackOpenPopup) menuTools = cc.Menu:create(menuToolsItem) @@ -214,9 +208,9 @@ local function main() end -- play background music, preload effect - local bgMusicPath = cc.FileUtils:getInstance():fullPathForFilename("res/background.mp3") + local bgMusicPath = cc.FileUtils:getInstance():fullPathForFilename("background.mp3") cc.SimpleAudioEngine:getInstance():playMusic(bgMusicPath, true) - local effectPath = cc.FileUtils:getInstance():fullPathForFilename("res/effect1.wav") + local effectPath = cc.FileUtils:getInstance():fullPathForFilename("effect1.wav") cc.SimpleAudioEngine:getInstance():preloadEffect(effectPath) -- run diff --git a/tests/lua-game-controller-test/project/Classes/AppDelegate.h b/tests/lua-game-controller-test/project/Classes/AppDelegate.h index b708f4bdca..01b5e6da2f 100644 --- a/tests/lua-game-controller-test/project/Classes/AppDelegate.h +++ b/tests/lua-game-controller-test/project/Classes/AppDelegate.h @@ -1,7 +1,7 @@ #ifndef _APP_DELEGATE_H_ #define _APP_DELEGATE_H_ -#include "CCApplication.h" +#include "platform/CCApplication.h" /** @brief The cocos2d Application. diff --git a/tests/lua-game-controller-test/project/proj.android/build-cfg.json b/tests/lua-game-controller-test/project/proj.android/build-cfg.json index e379d249eb..71c3d466a0 100644 --- a/tests/lua-game-controller-test/project/proj.android/build-cfg.json +++ b/tests/lua-game-controller-test/project/proj.android/build-cfg.json @@ -14,12 +14,8 @@ "to": "res" }, { - "from": "../../../../cocos/scripting/lua-bindings/script/cocos2d", - "to": "" - }, - { - "from": "../../../../cocos/scripting/lua-bindings/script/controller", - "to": "" + "from": "../../../../cocos/scripting/lua-bindings/script/", + "to": "src/cocos" }, { "from": "../../../game-controller-test/Resources", diff --git a/tests/lua-game-controller-test/project/proj.ios/AppController.mm b/tests/lua-game-controller-test/project/proj.ios/AppController.mm index a4a76d5cc1..c0e2b1820e 100644 --- a/tests/lua-game-controller-test/project/proj.ios/AppController.mm +++ b/tests/lua-game-controller-test/project/proj.ios/AppController.mm @@ -24,7 +24,7 @@ #import #import "AppController.h" #import "cocos2d.h" -#import "CCEAGLView.h" +#import "CCEAGLView-ios.h" #import "AppDelegate.h" #import "RootViewController.h" diff --git a/tests/lua-game-controller-test/project/proj.ios/Default-667h@2x.png b/tests/lua-game-controller-test/project/proj.ios/Default-667h@2x.png new file mode 100644 index 0000000000..a0f61ec8e6 Binary files /dev/null and b/tests/lua-game-controller-test/project/proj.ios/Default-667h@2x.png differ diff --git a/tests/lua-game-controller-test/project/proj.ios/Default-736h@3x.png b/tests/lua-game-controller-test/project/proj.ios/Default-736h@3x.png new file mode 100644 index 0000000000..dadccee686 Binary files /dev/null and b/tests/lua-game-controller-test/project/proj.ios/Default-736h@3x.png differ diff --git a/tests/lua-game-controller-test/project/proj.ios/Info.plist b/tests/lua-game-controller-test/project/proj.ios/Info.plist index 12ee63ab86..22a50d6902 100644 --- a/tests/lua-game-controller-test/project/proj.ios/Info.plist +++ b/tests/lua-game-controller-test/project/proj.ios/Info.plist @@ -39,6 +39,89 @@ ???? CFBundleVersion 1.0 + UILaunchImages + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {414, 736} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {414, 736} + + LSRequiresIPhoneOS UIPrerenderedIcon @@ -54,8 +137,8 @@ UISupportedInterfaceOrientations - UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationLandscapeLeft diff --git a/tests/lua-game-controller-test/src/GameControllerTest.lua b/tests/lua-game-controller-test/src/GameControllerTest.lua index a822d85981..9b186fb84b 100644 --- a/tests/lua-game-controller-test/src/GameControllerTest.lua +++ b/tests/lua-game-controller-test/src/GameControllerTest.lua @@ -1,5 +1,3 @@ -require("extern") -require("ControllerConstants") local ControllerHolder = class("ControllerHolder") diff --git a/tests/lua-game-controller-test/src/main.lua b/tests/lua-game-controller-test/src/main.lua index cdc55801c3..dd26d250a2 100644 --- a/tests/lua-game-controller-test/src/main.lua +++ b/tests/lua-game-controller-test/src/main.lua @@ -1,5 +1,6 @@ -require("Cocos2d") -require("Cocos2dConstants") +cc.FileUtils:getInstance():addSearchPath("src") +-- CC_USE_DEPRECATED_API = true +require "cocos.init" collectgarbage("setpause", 100) collectgarbage("setstepmul", 5000) @@ -52,7 +53,7 @@ end fileUtils:setSearchPaths(searchPaths) local scene = cc.Scene:create() -scene:addChild(require("src/GameControllerTest").new()) +scene:addChild(require("GameControllerTest").new()) if cc.Director:getInstance():getRunningScene() then cc.Director:getInstance():replaceScene(scene) else diff --git a/tests/lua-tests/project/CMakeLists.txt b/tests/lua-tests/project/CMakeLists.txt index 89a1a1f15b..481472bae4 100644 --- a/tests/lua-tests/project/CMakeLists.txt +++ b/tests/lua-tests/project/CMakeLists.txt @@ -3,6 +3,7 @@ set(APP_NAME lua-tests) set(SAMPLE_SRC Classes/AppDelegate.cpp Classes/lua_assetsmanager_test_sample.cpp + Classes/lua_test_bindings.cpp ) if(LINUX) @@ -44,13 +45,7 @@ pre_build(${APP_NAME} COMMAND ${CMAKE_COMMAND} -E remove_directory ${APP_BIN_DIR}/Resources COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/../res ${APP_BIN_DIR}/Resources/res COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/../src ${APP_BIN_DIR}/Resources/src - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/cocos/scripting/lua-bindings/script/cocos2d ${APP_BIN_DIR}/Resources - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/cocos/scripting/lua-bindings/script/cocosdenshion ${APP_BIN_DIR}/Resources - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/cocos/scripting/lua-bindings/script/network ${APP_BIN_DIR}/Resources - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/cocos/scripting/lua-bindings/script/cocosbuilder ${APP_BIN_DIR}/Resources - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/cocos/scripting/lua-bindings/script/cocostudio ${APP_BIN_DIR}/Resources - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/cocos/scripting/lua-bindings/script/extension ${APP_BIN_DIR}/Resources - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/cocos/scripting/lua-bindings/script/ui ${APP_BIN_DIR}/Resources + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/cocos/scripting/lua-bindings/script/ ${APP_BIN_DIR}/Resources/src/cocos COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/tests/cpp-tests/Resources ${APP_BIN_DIR}/Resources/res ) diff --git a/tests/lua-tests/project/Classes/AppDelegate.cpp b/tests/lua-tests/project/Classes/AppDelegate.cpp index a9185b6afe..cd193e0840 100644 --- a/tests/lua-tests/project/Classes/AppDelegate.cpp +++ b/tests/lua-tests/project/Classes/AppDelegate.cpp @@ -4,6 +4,7 @@ #include "audio/include/SimpleAudioEngine.h" #include "lua_assetsmanager_test_sample.h" #include "lua_module_register.h" +#include "lua_test_bindings.h" using namespace CocosDenshion; @@ -43,6 +44,7 @@ bool AppDelegate::applicationDidFinishLaunching() if (lua_istable(L,-1))//stack:...,_G, { register_assetsmanager_test_sample(L); + register_test_binding(L); } lua_pop(L, 1); #endif diff --git a/tests/lua-tests/project/Classes/lua_assetsmanager_test_sample.h b/tests/lua-tests/project/Classes/lua_assetsmanager_test_sample.h index 967593de71..cf4a96f58d 100644 --- a/tests/lua-tests/project/Classes/lua_assetsmanager_test_sample.h +++ b/tests/lua-tests/project/Classes/lua_assetsmanager_test_sample.h @@ -10,7 +10,7 @@ extern "C" { #endif /** - * The apis which are bound in this file are temporary for the assetsmanager test sample.After the completion of some systems like fileutils,these apis will be deprecated + * The apis which are bound in this file are temporary for the assetsmanager test sample.After the completion of some systems like fileutils,these apis will be deprecated */ TOLUA_API int register_assetsmanager_test_sample(lua_State* tolua_S); diff --git a/tests/lua-tests/project/Classes/lua_test_bindings.cpp b/tests/lua-tests/project/Classes/lua_test_bindings.cpp new file mode 100644 index 0000000000..723af93e4d --- /dev/null +++ b/tests/lua-tests/project/Classes/lua_test_bindings.cpp @@ -0,0 +1,621 @@ +#include "lua_test_bindings.h" +#include "cocos2d.h" +#include "LuaBasicConversions.h" + +NS_CC_BEGIN + +/** + * Copy DrawNode for 3D geometry drawing. + */ +class DrawNode3D: public Node +{ +public: + /** creates and initialize a DrawNode3D node */ + static DrawNode3D* create(); + + /** + * Draw 3D Line + */ + void drawLine(const Vec3 &from, const Vec3 &to, const Color4F &color); + + /** + * Draw 3D cube + * @param point to a vertex array who has 8 element. + * vertices[0]:Left-top-front, + * vertices[1]:Left-bottom-front, + * vertices[2]:Right-bottom-front, + * vertices[3]:Right-top-front, + * vertices[4]:Right-top-back, + * vertices[5]:Right-bottom-back, + * vertices[6]:Left-bottom-back, + * vertices[7]:Left-top-back. + * @param color + */ + void drawCube(Vec3* vertices, const Color4F &color); + + /** Clear the geometry in the node's buffer. */ + void clear(); + + /** + * @js NA + * @lua NA + */ + const BlendFunc& getBlendFunc() const; + + /** + * @code + * When this function bound into js or lua,the parameter will be changed + * In js: var setBlendFunc(var src, var dst) + * @endcode + * @lua NA + */ + void setBlendFunc(const BlendFunc &blendFunc); + + void onDraw(const Mat4 &transform, uint32_t flags); + + // Overrides + virtual void draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) override; + +CC_CONSTRUCTOR_ACCESS: + DrawNode3D(); + virtual ~DrawNode3D(); + virtual bool init(); + +protected: + struct V3F_C4B + { + Vec3 vertices; + Color4B colors; + }; + void ensureCapacity(int count); + + GLuint _vao; + GLuint _vbo; + + int _bufferCapacity; + GLsizei _bufferCount; + V3F_C4B* _buffer; + + BlendFunc _blendFunc; + CustomCommand _customCommand; + + bool _dirty; + +private: + CC_DISALLOW_COPY_AND_ASSIGN(DrawNode3D); +}; + + + + +DrawNode3D::DrawNode3D() +: _vao(0) +, _vbo(0) +, _bufferCapacity(0) +, _bufferCount(0) +, _buffer(nullptr) +, _dirty(false) +{ + _blendFunc = BlendFunc::ALPHA_PREMULTIPLIED; +} + +DrawNode3D::~DrawNode3D() +{ + free(_buffer); + _buffer = nullptr; + + glDeleteBuffers(1, &_vbo); + _vbo = 0; + + if (Configuration::getInstance()->supportsShareableVAO()) + { + glDeleteVertexArrays(1, &_vao); + GL::bindVAO(0); + _vao = 0; + } +} + +DrawNode3D* DrawNode3D::create() +{ + DrawNode3D* ret = new (std::nothrow) DrawNode3D(); + if (ret && ret->init()) + { + ret->autorelease(); + } + else + { + CC_SAFE_DELETE(ret); + } + + return ret; +} + +void DrawNode3D::ensureCapacity(int count) +{ + CCASSERT(count>=0, "capacity must be >= 0"); + + if(_bufferCount + count > _bufferCapacity) + { + _bufferCapacity += MAX(_bufferCapacity, count); + _buffer = (V3F_C4B*)realloc(_buffer, _bufferCapacity*sizeof(V3F_C4B)); + } +} + +bool DrawNode3D::init() +{ + _blendFunc = BlendFunc::ALPHA_PREMULTIPLIED; + + setGLProgramState(GLProgramState::getOrCreateWithGLProgramName(GLProgram::SHADER_NAME_POSITION_COLOR)); + + ensureCapacity(512); + + if (Configuration::getInstance()->supportsShareableVAO()) + { + glGenVertexArrays(1, &_vao); + GL::bindVAO(_vao); + } + + glGenBuffers(1, &_vbo); + glBindBuffer(GL_ARRAY_BUFFER, _vbo); + glBufferData(GL_ARRAY_BUFFER, sizeof(V3F_C4B)* _bufferCapacity, _buffer, GL_STREAM_DRAW); + + glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_POSITION); + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 3, GL_FLOAT, GL_FALSE, sizeof(V3F_C4B), (GLvoid *)offsetof(V3F_C4B, vertices)); + + glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_COLOR); + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(V3F_C4B), (GLvoid *)offsetof(V3F_C4B, colors)); + + glBindBuffer(GL_ARRAY_BUFFER, 0); + + if (Configuration::getInstance()->supportsShareableVAO()) + { + GL::bindVAO(0); + } + + CHECK_GL_ERROR_DEBUG(); + + _dirty = true; + +#if CC_ENABLE_CACHE_TEXTURE_DATA + // Need to listen the event only when not use batchnode, because it will use VBO + auto listener = EventListenerCustom::create(EVENT_COME_TO_FOREGROUND, [this](EventCustom* event){ + /** listen the event that coming to foreground on Android */ + this->init(); + }); + + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); +#endif + + return true; +} + +void DrawNode3D::draw(Renderer *renderer, const Mat4 &transform, uint32_t flags) +{ + _customCommand.init(_globalZOrder); + _customCommand.func = CC_CALLBACK_0(DrawNode3D::onDraw, this, transform, flags); + renderer->addCommand(&_customCommand); +} + +void DrawNode3D::onDraw(const Mat4 &transform, uint32_t flags) +{ + auto glProgram = getGLProgram(); + glProgram->use(); + glProgram->setUniformsForBuiltins(transform); + glEnable(GL_DEPTH_TEST); + GL::blendFunc(_blendFunc.src, _blendFunc.dst); + + if (_dirty) + { + glBindBuffer(GL_ARRAY_BUFFER, _vbo); + glBufferData(GL_ARRAY_BUFFER, sizeof(V3F_C4B)*_bufferCapacity, _buffer, GL_STREAM_DRAW); + _dirty = false; + } + if (Configuration::getInstance()->supportsShareableVAO()) + { + GL::bindVAO(_vao); + } + else + { + GL::enableVertexAttribs(GL::VERTEX_ATTRIB_FLAG_POS_COLOR_TEX); + + glBindBuffer(GL_ARRAY_BUFFER, _vbo); + // vertex + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 3, GL_FLOAT, GL_FALSE, sizeof(V3F_C4B), (GLvoid *)offsetof(V3F_C4B, vertices)); + + // color + glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(V3F_C4B), (GLvoid *)offsetof(V3F_C4B, colors)); + } + + glDrawArrays(GL_LINES, 0, _bufferCount); + glBindBuffer(GL_ARRAY_BUFFER, 0); + + CC_INCREMENT_GL_DRAWN_BATCHES_AND_VERTICES(1,_bufferCount); + glDisable(GL_DEPTH_TEST); + CHECK_GL_ERROR_DEBUG(); +} + +void DrawNode3D::drawLine(const Vec3 &from, const Vec3 &to, const Color4F &color) +{ + unsigned int vertex_count = 2; + ensureCapacity(vertex_count); + + Color4B col = Color4B(color); + V3F_C4B a = {Vec3(from.x, from.y, from.z), col}; + V3F_C4B b = {Vec3(to.x, to.y, to.z), col, }; + + V3F_C4B *lines = (V3F_C4B *)(_buffer + _bufferCount); + lines[0] = a; + lines[1] = b; + + _bufferCount += vertex_count; + _dirty = true; + +} + +void DrawNode3D::drawCube(Vec3* vertices, const Color4F &color) +{ + // front face + drawLine(vertices[0], vertices[1], color); + drawLine(vertices[1], vertices[2], color); + drawLine(vertices[2], vertices[3], color); + drawLine(vertices[3], vertices[0], color); + + // back face + drawLine(vertices[4], vertices[5], color); + drawLine(vertices[5], vertices[6], color); + drawLine(vertices[6], vertices[7], color); + drawLine(vertices[7], vertices[4], color); + + // edge + drawLine(vertices[0], vertices[7], color); + drawLine(vertices[1], vertices[6], color); + drawLine(vertices[2], vertices[5], color); + drawLine(vertices[3], vertices[4], color); +} + +void DrawNode3D::clear() +{ + _bufferCount = 0; + _dirty = true; +} + +const BlendFunc& DrawNode3D::getBlendFunc() const +{ + return _blendFunc; +} + +void DrawNode3D::setBlendFunc(const BlendFunc &blendFunc) +{ + _blendFunc = blendFunc; +} +NS_CC_END + +int lua_cocos2dx_DrawNode3D_getBlendFunc(lua_State* L) +{ + int argc = 0; + cocos2d::DrawNode3D* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.DrawNode3D",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_getBlendFunc'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 0) + { + if(!ok) + return 0; + const cocos2d::BlendFunc& ret = cobj->getBlendFunc(); + blendfunc_to_luaval(L, ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:getBlendFunc",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_DrawNode3D_getBlendFunc'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_DrawNode3D_setBlendFunc(lua_State* L) +{ + int argc = 0; + cocos2d::DrawNode3D* cobj = nullptr; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.DrawNode3D",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_setBlendFunc'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 2) + { + GLenum src, dst; + if (!luaval_to_int32(L, 2, (int32_t*)&src, "cc.DrawNode3D:setBlendFunc")) + return 0; + + if (!luaval_to_int32(L, 3, (int32_t*)&dst, "cc.DrawNode3D:setBlendFunc")) + return 0; + + BlendFunc blendFunc = {src, dst}; + cobj->setBlendFunc(blendFunc); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:setBlendFunc",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_DrawNode3D_setBlendFunc'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_DrawNode3D_drawLine(lua_State* L) +{ + int argc = 0; + cocos2d::DrawNode3D* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.DrawNode3D",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_drawLine'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 3) + { + cocos2d::Vec3 arg0; + cocos2d::Vec3 arg1; + cocos2d::Color4F arg2; + + ok &= luaval_to_vec3(L, 2, &arg0, "cc.DrawNode3D:drawLine"); + + ok &= luaval_to_vec3(L, 3, &arg1, "cc.DrawNode3D:drawLine"); + + ok &=luaval_to_color4f(L, 4, &arg2, "cc.DrawNode3D:drawLine"); + if(!ok) + return 0; + cobj->drawLine(arg0, arg1, arg2); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:drawLine",argc, 3); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_DrawNode3D_drawLine'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_DrawNode3D_clear(lua_State* L) +{ + int argc = 0; + cocos2d::DrawNode3D* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.DrawNode3D",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_clear'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 0) + { + if(!ok) + return 0; + cobj->clear(); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:clear",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_DrawNode3D_clear'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_DrawNode3D_drawCube(lua_State* L) +{ + int argc = 0; + cocos2d::DrawNode3D* cobj = nullptr; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertype(L,1,"cc.DrawNode3D",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::DrawNode3D*)tolua_tousertype(L,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(L,"invalid 'cobj' in function 'lua_cocos2dx_DrawNode3D_drawCube'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(L)-1; + if (argc == 2) + { + std::vector arg0; + cocos2d::Color4F arg1; + Vec3 vec3; +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(L, 2, 0, &tolua_err)) + goto tolua_lerror; +#endif + size_t size = lua_objlen(L, 2); + for (int i = 0; i < size; i++) + { + lua_pushnumber(L, i + 1); + lua_gettable(L, 2); +#if COCOS2D_DEBUG >= 1 + if (!tolua_istable(L, -1, 0, &tolua_err)) + { + lua_pop(L, 1); + goto tolua_lerror; + } +#endif + ok &= luaval_to_vec3(L, lua_gettop(L), &vec3); + +#if COCOS2D_DEBUG >= 1 + if (!ok) + { + lua_pop(L, 1); + goto tolua_lerror; + } +#endif + //arg0[i] = vec3; + arg0.push_back(vec3); + lua_pop(L, 1); + } + + ok &=luaval_to_color4f(L, 3, &arg1, "cc.DrawNode3D:drawCube"); + if(!ok) + return 0; + cobj->drawCube(&arg0[0], arg1); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "cc.DrawNode3D:drawCube",argc, 2); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_DrawNode3D_drawCube'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_DrawNode3D_create(lua_State* L) +{ + int argc = 0; + bool ok = true; + +#if COCOS2D_DEBUG >= 1 + tolua_Error tolua_err; +#endif + +#if COCOS2D_DEBUG >= 1 + if (!tolua_isusertable(L,1,"cc.DrawNode3D",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(L) - 1; + + if (argc == 0) + { + if(!ok) + return 0; + cocos2d::DrawNode3D* ret = cocos2d::DrawNode3D::create(); + object_to_luaval(L, "cc.DrawNode3D",(cocos2d::DrawNode3D*)ret); + return 1; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d\n ", "cc.DrawNode3D:create",argc, 0); + return 0; +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(L,"#ferror in function 'lua_cocos2dx_DrawNode3D_create'.",&tolua_err); +#endif + return 0; +} + +int lua_register_cocos2dx_DrawNode3D(lua_State* L) +{ + tolua_usertype(L,"cc.DrawNode3D"); + tolua_cclass(L,"DrawNode3D","cc.DrawNode3D","cc.Node",nullptr); + + tolua_beginmodule(L,"DrawNode3D"); + tolua_function(L,"getBlendFunc",lua_cocos2dx_DrawNode3D_getBlendFunc); + tolua_function(L,"setBlendFunc",lua_cocos2dx_DrawNode3D_setBlendFunc); + tolua_function(L,"drawLine",lua_cocos2dx_DrawNode3D_drawLine); + tolua_function(L,"clear",lua_cocos2dx_DrawNode3D_clear); + tolua_function(L,"drawCube",lua_cocos2dx_DrawNode3D_drawCube); + tolua_function(L,"create", lua_cocos2dx_DrawNode3D_create); + tolua_endmodule(L); + std::string typeName = typeid(cocos2d::DrawNode3D).name(); + g_luaType[typeName] = "cc.DrawNode3D"; + g_typeCast["DrawNode3D"] = "cc.DrawNode3D"; + return 1; +} + +int register_test_binding(lua_State* L) +{ + tolua_open(L); + tolua_module(L, "cc", 0); + tolua_beginmodule(L, "cc"); + lua_register_cocos2dx_DrawNode3D(L); + tolua_endmodule(L); + return 0; +} diff --git a/tests/lua-tests/project/Classes/lua_test_bindings.h b/tests/lua-tests/project/Classes/lua_test_bindings.h new file mode 100644 index 0000000000..02191a79d5 --- /dev/null +++ b/tests/lua-tests/project/Classes/lua_test_bindings.h @@ -0,0 +1,14 @@ +#ifndef COCOS2DX_TEST_LUA_TESTS_PROJECT_CLASSES_LUA_TEST_BINDINGS_H +#define COCOS2DX_TEST_LUA_TESTS_PROJECT_CLASSES_LUA_TEST_BINDINGS_H + +#ifdef __cplusplus +extern "C" { +#endif +#include "tolua++.h" +#ifdef __cplusplus +} +#endif + +TOLUA_API int register_test_binding(lua_State* tolua_S); + +#endif // #ifndef COCOS2DX_TEST_LUA_TESTS_PROJECT_CLASSES_LUA_TEST_BINDINGS_H diff --git a/tests/lua-tests/project/proj.android/build-cfg.json b/tests/lua-tests/project/proj.android/build-cfg.json index 797d851ebc..4f18ce29ab 100644 --- a/tests/lua-tests/project/proj.android/build-cfg.json +++ b/tests/lua-tests/project/proj.android/build-cfg.json @@ -21,33 +21,10 @@ ] }, { - "from": "../../../../cocos/scripting/lua-bindings/script/cocos2d", - "to": "" - }, - { - "from": "../../../../cocos/scripting/lua-bindings/script/cocosbuilder", - "to": "" - }, - { - "from": "../../../../cocos/scripting/lua-bindings/script/cocosdenshion", - "to": "" - }, - { - "from": "../../../../cocos/scripting/lua-bindings/script/cocostudio", - "to": "" - }, - { - "from": "../../../../cocos/scripting/lua-bindings/script/extension", - "to": "" - }, - { - "from": "../../../../cocos/scripting/lua-bindings/script/network", - "to": "" - }, - { - "from": "../../../../cocos/scripting/lua-bindings/script/ui", - "to": "" + "from": "../../../../cocos/scripting/lua-bindings/script/", + "to": "src/cocos" }, + { "from": "../../../../external/lua/luasocket", "to": "", diff --git a/tests/lua-tests/project/proj.android/jni/Android.mk b/tests/lua-tests/project/proj.android/jni/Android.mk index 877693bf1b..2776ac7475 100644 --- a/tests/lua-tests/project/proj.android/jni/Android.mk +++ b/tests/lua-tests/project/proj.android/jni/Android.mk @@ -8,7 +8,8 @@ LOCAL_MODULE_FILENAME := liblua_tests LOCAL_SRC_FILES += main.cpp \ ../../Classes/AppDelegate.cpp \ - ../../Classes/lua_assetsmanager_test_sample.cpp + ../../Classes/lua_assetsmanager_test_sample.cpp \ + ../../Classes/lua_test_bindings.cpp LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Classes diff --git a/tests/lua-tests/project/proj.ios_mac/ios/Default-667h@2x.png b/tests/lua-tests/project/proj.ios_mac/ios/Default-667h@2x.png new file mode 100644 index 0000000000..a0f61ec8e6 Binary files /dev/null and b/tests/lua-tests/project/proj.ios_mac/ios/Default-667h@2x.png differ diff --git a/tests/lua-tests/project/proj.ios_mac/ios/Default-736h@3x.png b/tests/lua-tests/project/proj.ios_mac/ios/Default-736h@3x.png new file mode 100644 index 0000000000..dadccee686 Binary files /dev/null and b/tests/lua-tests/project/proj.ios_mac/ios/Default-736h@3x.png differ diff --git a/tests/lua-tests/project/proj.ios_mac/ios/Info.plist b/tests/lua-tests/project/proj.ios_mac/ios/Info.plist index dbfaaa0b95..ac0139dc5c 100644 --- a/tests/lua-tests/project/proj.ios_mac/ios/Info.plist +++ b/tests/lua-tests/project/proj.ios_mac/ios/Info.plist @@ -44,6 +44,89 @@ ???? CFBundleVersion 1.0 + UILaunchImages + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 480} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-568h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {320, 568} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-667h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {375, 667} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Portrait + UILaunchImageSize + {414, 736} + + + UILaunchImageMinimumOSVersion + 8.0 + UILaunchImageName + Default-736h + UILaunchImageOrientation + Landscape + UILaunchImageSize + {414, 736} + + LSRequiresIPhoneOS UIAppFonts @@ -68,8 +151,8 @@ UISupportedInterfaceOrientations - UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationLandscapeLeft diff --git a/tests/lua-tests/project/proj.win32/lua-tests.win32.vcxproj b/tests/lua-tests/project/proj.win32/lua-tests.win32.vcxproj index 897aaa6864..6b8cc38035 100644 --- a/tests/lua-tests/project/proj.win32/lua-tests.win32.vcxproj +++ b/tests/lua-tests/project/proj.win32/lua-tests.win32.vcxproj @@ -1,4 +1,4 @@ - + @@ -70,7 +70,7 @@ - $(ProjectDir)..\Classes;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\audio\include;$(EngineRoot)external\lua\luajit\include;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\lua;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) + $(ProjectDir)..\Classes;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\audio\include;$(EngineRoot)external\lua\luajit\include;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\lua;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) Level3 @@ -108,13 +108,8 @@ - xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\cocos2d" "$(ProjectDir)..\..\" /e /Y -xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\cocosdenshion" "$(ProjectDir)..\..\" /e /Y -xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\network" "$(ProjectDir)..\..\" /e /Y -xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\cocosbuilder" "$(ProjectDir)..\..\" /e /Y -xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\cocostudio" "$(ProjectDir)..\..\" /e /Y -xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\extension" "$(ProjectDir)..\..\" /e /Y -xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\ui" "$(ProjectDir)..\..\" /e /Y + if not exist "$(ProjectDir)..\..\src\cocos" mkdir "$(ProjectDir)..\..\src\cocos" +xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script" "$(ProjectDir)..\..\src\cocos" /e /Y xcopy "$(ProjectDir)..\..\..\..\external\lua\luasocket\*.lua" "$(ProjectDir)..\..\" /e /Y xcopy "$(ProjectDir)..\..\..\cpp-tests\Resources" "$(ProjectDir)..\..\res" /e /Y copy files @@ -126,7 +121,7 @@ xcopy "$(ProjectDir)..\..\..\cpp-tests\Resources" "$(ProjectDir)..\..\res" /e /Y - $(ProjectDir)..\Classes;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\audio\include;$(EngineRoot)external\lua\luajit\include;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\lua;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) + $(ProjectDir)..\Classes;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\lua\luajit\include;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\lua;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) Level3 @@ -163,13 +158,8 @@ xcopy "$(ProjectDir)..\..\..\cpp-tests\Resources" "$(ProjectDir)..\..\res" /e /Y - xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\cocos2d" "$(ProjectDir)..\..\" /e /Y -xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\cocosdenshion" "$(ProjectDir)..\..\" /e /Y -xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\network" "$(ProjectDir)..\..\" /e /Y -xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\cocosbuilder" "$(ProjectDir)..\..\" /e /Y -xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\cocostudio" "$(ProjectDir)..\..\" /e /Y -xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\extension" "$(ProjectDir)..\..\" /e /Y -xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script\ui" "$(ProjectDir)..\..\" /e /Y + if not exist "$(ProjectDir)..\..\src\cocos" mkdir "$(ProjectDir)..\..\src\cocos" +xcopy "$(ProjectDir)..\..\..\..\cocos\scripting\lua-bindings\script" "$(ProjectDir)..\..\src\cocos" /e /Y xcopy "$(ProjectDir)..\..\..\..\external\lua\luasocket\*.lua" "$(ProjectDir)..\..\" /e /Y xcopy "$(ProjectDir)..\..\..\cpp-tests\Resources" "$(ProjectDir)..\..\res" /e /Y copy files @@ -182,12 +172,14 @@ xcopy "$(ProjectDir)..\..\..\cpp-tests\Resources" "$(ProjectDir)..\..\res" /e /Y + + @@ -198,4 +190,4 @@ xcopy "$(ProjectDir)..\..\..\cpp-tests\Resources" "$(ProjectDir)..\..\res" /e /Y - + \ No newline at end of file diff --git a/tests/lua-tests/project/proj.win32/lua-tests.win32.vcxproj.filters b/tests/lua-tests/project/proj.win32/lua-tests.win32.vcxproj.filters index e6cf7a3008..2427487eb2 100644 --- a/tests/lua-tests/project/proj.win32/lua-tests.win32.vcxproj.filters +++ b/tests/lua-tests/project/proj.win32/lua-tests.win32.vcxproj.filters @@ -15,12 +15,13 @@ win32 - - Classes - Classes + + Classes + + @@ -29,8 +30,9 @@ win32 - + Classes + \ No newline at end of file diff --git a/tests/lua-tests/src/AssetsManagerExTest/AssetsManagerExTest.lua b/tests/lua-tests/src/AssetsManagerExTest/AssetsManagerExTest.lua new file mode 100644 index 0000000000..8e3c523c42 --- /dev/null +++ b/tests/lua-tests/src/AssetsManagerExTest/AssetsManagerExTest.lua @@ -0,0 +1,336 @@ +local targetPlatform = cc.Application:getInstance():getTargetPlatform() + +local sceneID = +{ + "AMTestScene1", + "AMTestScene2", + "AMTestScene3", +} + +local sceneManifests = +{ + "Manifests/AMTestScene1/project.manifest", + "Manifests/AMTestScene2/project.manifest", + "Manifests/AMTestScene3/project.manifest" +} + +--UNCHECK +local storagePaths = +{ + "LuaTests/AssetsManagerExTest/scene1", + "LuaTests/AssetsManagerExTest/scene2", + "LuaTests/AssetsManagerExTest/scene3", +} + +local backgroundPaths = +{ + "Images/background1.jpg", + "Images/background2.jpg", + "Images/background3.png" +} + +------------------------------------- +-- AssetsManagerEx1 Test +------------------------------------- +local AMTestScene1 = {} +AMTestScene1.__index = AMTestScene1 + +function AMTestScene1.create() + + local layer = cc.Layer:create() + + local am = nil + + local function onEnter() + + Helper.initWithLayer(layer) + Helper.titleLabel:setString("AssetsManagerExTest1") + + local sprite = cc.Sprite:create("Images/Icon.png") + layer:addChild(sprite) + sprite:setPosition(cc.p(VisibleRect:center().x, VisibleRect:center().y)) + + local ttfConfig = {} + ttfConfig.fontFilePath = "fonts/arial.ttf" + ttfConfig.fontSize = 40 + + local progress = cc.Label:createWithTTF(ttfConfig, "0%", cc.VERTICAL_TEXT_ALIGNMENT_CENTER) + progress:setPosition(cc.p(VisibleRect:center().x, VisibleRect:center().y + 50)) + layer:addChild(progress) + am = cc.AssetsManagerEx:create("Manifests/AMTestScene1/project.manifest", cc.FileUtils:getInstance():getWritablePath() .. "LuaTests/AssetsManagerExTest/scene1") + am:retain() + + if not am:getLocalManifest():isLoaded() then + print("Fail to update assets, step skipped.") + local background = cc.Sprite:create("Images/background1.jpg") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + else + local function onUpdateEvent(event) + local eventCode = event:getEventCode() + if eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_NO_LOCAL_MANIFEST then + print("No local manifest file found, skip assets update.") + local background = cc.Sprite:create("Images/background1.jpg") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + elseif eventCode == cc.EventAssetsManagerEx.EventCode.UPDATE_PROGRESSION then + local assetId = event:getAssetId() + local percent = event:getPercent() + local strInfo = "" + + if assetId == cc.AssetsManagerExStatic.VERSION_ID then + strInfo = string.format("Version file: %d%%", percent) + elseif assetId == cc.AssetsManagerExStatic.MANIFEST_ID then + strInfo = string.format("Manifest file: %d%%", percent) + else + strInfo = string.format("%d%%", percent) + end + progress:setString(strInfo) + elseif eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_DOWNLOAD_MANIFEST or + eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_PARSE_MANIFEST then + print("Fail to download manifest file, update skipped.") + local background = cc.Sprite:create("Images/background1.jpg") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + elseif eventCode == cc.EventAssetsManagerEx.EventCode.ALREADY_UP_TO_DATE or + eventCode == cc.EventAssetsManagerEx.EventCode.UPDATE_FINISHED then + print("Update finished.") + local background = cc.Sprite:create("Images/background1.jpg") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + elseif eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_UPDATING then + print("Asset ", event:getAssetId(), ", ", event:getMessage()) + local background = cc.Sprite:create("Images/background1.jpg") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + end + end + local listener = cc.EventListenerAssetsManagerEx:create(am,onUpdateEvent) + cc.Director:getInstance():getEventDispatcher():addEventListenerWithFixedPriority(listener, 1) + + am:update() + end + end + + local function onNodeEvent(event) + if "enter" == event then + onEnter() + elseif "exit" == event then + am:release() + end + end + layer:registerScriptHandler(onNodeEvent) + + return layer +end + + +------------------------------------- +-- AssetsManagerEx2 Test +------------------------------------- +local AMTestScene2 = {} +AMTestScene2.__index = AMTestScene2 + +function AMTestScene2.create() + + local layer = cc.Layer:create() + + local am = nil + + local function onEnter() + + Helper.initWithLayer(layer) + Helper.titleLabel:setString("AssetsManagerExTest2") + + local sprite = cc.Sprite:create("Images/Icon.png") + layer:addChild(sprite) + sprite:setPosition(cc.p(VisibleRect:center().x, VisibleRect:center().y)) + + local ttfConfig = {} + ttfConfig.fontFilePath = "fonts/arial.ttf" + ttfConfig.fontSize = 40 + + local progress = cc.Label:createWithTTF(ttfConfig, "0%", cc.VERTICAL_TEXT_ALIGNMENT_CENTER) + progress:setPosition(cc.p(VisibleRect:center().x, VisibleRect:center().y + 50)) + layer:addChild(progress) + + am = cc.AssetsManagerEx:create("Manifests/AMTestScene2/project.manifest", cc.FileUtils:getInstance():getWritablePath() .. "LuaTests/AssetsManagerExTest/scene2") + am:retain() + + if not am:getLocalManifest():isLoaded() then + print("Fail to update assets, step skipped.") + local background = cc.Sprite:create("Images/background2.jpg") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + else + local function onUpdateEvent(event) + local eventCode = event:getEventCode() + if eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_NO_LOCAL_MANIFEST then + print("No local manifest file found, skip assets update.") + local background = cc.Sprite:create("Images/background2.jpg") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + elseif eventCode == cc.EventAssetsManagerEx.EventCode.UPDATE_PROGRESSION then + local assetId = event:getAssetId() + local percent = event:getPercent() + local strInfo = "" + + if assetId == cc.AssetsManagerExStatic.VERSION_ID then + strInfo = string.format("Version file: %d%%", percent) + elseif assetId == cc.AssetsManagerExStatic.MANIFEST_ID then + strInfo = string.format("Manifest file: %d%%", percent) + else + strInfo = string.format("%d%%", percent) + end + progress:setString(strInfo) + elseif eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_DOWNLOAD_MANIFEST or + eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_PARSE_MANIFEST then + print("Fail to download manifest file, update skipped.") + local background = cc.Sprite:create("Images/background2.jpg") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + elseif eventCode == cc.EventAssetsManagerEx.EventCode.ALREADY_UP_TO_DATE or + eventCode == cc.EventAssetsManagerEx.EventCode.UPDATE_FINISHED then + print("Update finished.") + local background = cc.Sprite:create("Images/background2.jpg") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + elseif eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_UPDATING then + print("Asset ", event:getAssetId(), ", ", event:getMessage()) + local background = cc.Sprite:create("Images/background2.jpg") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + end + end + local listener = cc.EventListenerAssetsManagerEx:create(am,onUpdateEvent) + cc.Director:getInstance():getEventDispatcher():addEventListenerWithFixedPriority(listener, 1) + + am:update() + end + end + + local function onNodeEvent(event) + if "enter" == event then + onEnter() + elseif "exit" == event then + am:release() + end + end + layer:registerScriptHandler(onNodeEvent) + + return layer +end + +------------------------------------- +-- AssetsManagerEx3 Test +------------------------------------- +local AMTestScene3 = {} +AMTestScene3.__index = AMTestScene3 + +function AMTestScene3.create() + + local layer = cc.Layer:create() + + local am = nil + + local function onEnter() + + Helper.initWithLayer(layer) + Helper.titleLabel:setString("AssetsManagerExTest3") + + local sprite = cc.Sprite:create("Images/Icon.png") + layer:addChild(sprite) + sprite:setPosition(cc.p(VisibleRect:center().x, VisibleRect:center().y)) + + local ttfConfig = {} + ttfConfig.fontFilePath = "fonts/arial.ttf" + ttfConfig.fontSize = 40 + + local progress = cc.Label:createWithTTF(ttfConfig, "0%", cc.VERTICAL_TEXT_ALIGNMENT_CENTER) + progress:setPosition(cc.p(VisibleRect:center().x, VisibleRect:center().y + 50)) + layer:addChild(progress) + + am = cc.AssetsManagerEx:create("Manifests/AMTestScene3/project.manifest", cc.FileUtils:getInstance():getWritablePath() .. "LuaTests/AssetsManagerExTest/scene3") + am:retain() + + if not am:getLocalManifest():isLoaded() then + print("Fail to update assets, step skipped.") + local background = cc.Sprite:create("Images/background3.png") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + else + local function onUpdateEvent(event) + local eventCode = event:getEventCode() + if eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_NO_LOCAL_MANIFEST then + print("No local manifest file found, skip assets update.") + local background = cc.Sprite:create("Images/background3.png") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + elseif eventCode == cc.EventAssetsManagerEx.EventCode.UPDATE_PROGRESSION then + local assetId = event:getAssetId() + local percent = event:getPercent() + local strInfo = "" + + if assetId == cc.AssetsManagerExStatic.VERSION_ID then + strInfo = string.format("Version file: %d%%", percent) + elseif assetId == cc.AssetsManagerExStatic.MANIFEST_ID then + strInfo = string.format("Manifest file: %d%%", percent) + else + strInfo = string.format("%d%%", percent) + end + progress:setString(strInfo) + elseif eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_DOWNLOAD_MANIFEST or + eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_PARSE_MANIFEST then + print("Fail to download manifest file, update skipped.") + local background = cc.Sprite:create("Images/background3.png") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + elseif eventCode == cc.EventAssetsManagerEx.EventCode.ALREADY_UP_TO_DATE or + eventCode == cc.EventAssetsManagerEx.EventCode.UPDATE_FINISHED then + print("Update finished.") + local background = cc.Sprite:create("Images/background3.png") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + elseif eventCode == cc.EventAssetsManagerEx.EventCode.ERROR_UPDATING then + print("Asset ", event:getAssetId(), ", ", event:getMessage()) + local background = cc.Sprite:create("Images/background3.png") + layer:addChild(background, 1) + background:setPosition( cc.p(VisibleRect:center().x, VisibleRect:center().y )) + end + end + local listener = cc.EventListenerAssetsManagerEx:create(am,onUpdateEvent) + cc.Director:getInstance():getEventDispatcher():addEventListenerWithFixedPriority(listener, 1) + + am:update() + end + end + + local function onNodeEvent(event) + if "enter" == event then + onEnter() + elseif "exit" == event then + am:release() + end + end + layer:registerScriptHandler(onNodeEvent) + + return layer +end + +------------------------------------- +-- AssetsManagerEx Test +------------------------------------- +function AssetsManagerExTestMain() + local scene = cc.Scene:create() + + Helper.createFunctionTable = + { + AMTestScene1.create, + AMTestScene2.create, + AMTestScene3.create, + } + + scene:addChild(AMTestScene1.create()) + scene:addChild(CreateBackMenuItem()) + return scene +end diff --git a/tests/lua-tests/src/AssetsManagerTest/AssetsManagerTest.lua b/tests/lua-tests/src/AssetsManagerTest/AssetsManagerTest.lua index 4d6000557a..3ea12a07f4 100644 --- a/tests/lua-tests/src/AssetsManagerTest/AssetsManagerTest.lua +++ b/tests/lua-tests/src/AssetsManagerTest/AssetsManagerTest.lua @@ -104,7 +104,7 @@ local function updateLayer() addSearchPath(realPath,true) end - assetsManagerModule = reloadModule("src/AssetsManagerTest/AssetsManagerModule") + assetsManagerModule = reloadModule("AssetsManagerTest/AssetsManagerModule") assetsManagerModule.newScene(AssetsManagerTestMain) end diff --git a/tests/lua-tests/src/ByteCodeEncryptTest/ByteCodeEncryptTest.lua b/tests/lua-tests/src/ByteCodeEncryptTest/ByteCodeEncryptTest.lua index 01cb341e17..db3c1f1ecb 100644 --- a/tests/lua-tests/src/ByteCodeEncryptTest/ByteCodeEncryptTest.lua +++ b/tests/lua-tests/src/ByteCodeEncryptTest/ByteCodeEncryptTest.lua @@ -1,8 +1,8 @@ local targetPlatform = cc.Application:getInstance():getTargetPlatform() local isIOS64bit = cc.Application:getInstance():isIOS64bit() if cc.PLATFORM_OS_LINUX ~= targetPlatform and isIOS64bit ~= true then -require("src/ByteCodeEncryptTest/ByteCodeTest") -require("src/ByteCodeEncryptTest/ByteCodeAndEncryptTest") +require("ByteCodeEncryptTest/ByteCodeTest") +require("ByteCodeEncryptTest/ByteCodeAndEncryptTest") end local LINE_SPACE = 40 diff --git a/tests/lua-tests/src/Camera3DTest/Camera3DTest.lua b/tests/lua-tests/src/Camera3DTest/Camera3DTest.lua index 56e8edd6d3..98a60968e0 100644 --- a/tests/lua-tests/src/Camera3DTest/Camera3DTest.lua +++ b/tests/lua-tests/src/Camera3DTest/Camera3DTest.lua @@ -413,7 +413,22 @@ function Camera3DTestDemo:onEnter() self:SwitchViewCallback(self, CameraType.ThirdCamera) - --UNDO DrawLine3D drwaline + local line = cc.DrawNode3D:create() + --draw x + for i = -20 ,20 do + line:drawLine(cc.vec3(-100, 0, 5 * i), cc.vec3(100, 0, 5 * i), cc.c4f(1, 0, 0, 0)) + end + + --draw z + for i = -20, 20 do + line:drawLine(cc.vec3(5 * i, 0, -100), cc.vec3(5 * i, 0, 100), cc.c4f(0, 0, 1, 1)) + end + + --draw y + line:drawLine(cc.vec3(0, -50, 0), cc.vec3(0,0,0), cc.c4f(0, 0.5, 0, 1)) + line:drawLine(cc.vec3(0, 0, 0), cc.vec3(0,50,0), cc.c4f(0, 1, 0, 1)) + self._layer3D:addChild(line) + self._layer3D:setCameraMask(2) end diff --git a/tests/lua-tests/src/CocoStudioTest/CocoStudioActionTimelineTest/CocoStudioActionTimelineTest.lua b/tests/lua-tests/src/CocoStudioTest/CocoStudioActionTimelineTest/CocoStudioActionTimelineTest.lua index d2319daf07..bf5e1e3e6b 100644 --- a/tests/lua-tests/src/CocoStudioTest/CocoStudioActionTimelineTest/CocoStudioActionTimelineTest.lua +++ b/tests/lua-tests/src/CocoStudioTest/CocoStudioActionTimelineTest/CocoStudioActionTimelineTest.lua @@ -59,7 +59,7 @@ end function TimelineTestLayer.title(idx) if TimelineTestIndex.TEST_ACTION_TIMELINE == idx then - return "CSArmature Test Bed" + return "Test ActionTimeline" elseif TimelineTestIndex.TEST_CHANGE_PLAY_SECTION == idx then return "Test Change Play Section" elseif TimelineTestIndex.TEST_TIMELINE_FRAME_EVENT == idx then @@ -188,14 +188,14 @@ end function TestActionTimeline:onEnter() cc.SpriteFrameCache:getInstance():addSpriteFramesWithFile("armature/Cowboy0.plist", "armature/Cowboy0.png") - local node = ccs.NodeReader:getInstance():createNode("ActionTimeline/boy_1.ExportJson") - local action = ccs.ActionTimelineCache:getInstance():createAction("ActionTimeline/boy_1.ExportJson") + local node = cc.CSLoader:createNode("ActionTimeline/boy_1.csb") + local action = cc.CSLoader:createTimeline("ActionTimeline/boy_1.csb") node:runAction(action) action:gotoFrameAndPlay(0, 60, true) - node:setScale(0.4) - node:setPosition(0, 0) + node:setScale(0.2) + node:setPosition(150, 100) self:addChild(node) end @@ -241,8 +241,8 @@ end function TestChangePlaySection:onEnter() cc.SpriteFrameCache:getInstance():addSpriteFramesWithFile("armature/Cowboy0.plist", "armature/Cowboy0.png") - local node = ccs.NodeReader:getInstance():createNode("ActionTimeline/boy_1.ExportJson") - local action = ccs.ActionTimelineCache:getInstance():createAction("ActionTimeline/boy_1.ExportJson") + local node = cc.CSLoader:createNode("ActionTimeline/boy_1.csb") + local action = cc.CSLoader:createTimeline("ActionTimeline/boy_1.csb") node:runAction(action) action:gotoFrameAndPlay(70, action:getDuration(), true) @@ -308,8 +308,8 @@ end function TestTimelineFrameEvent:onEnter() cc.SpriteFrameCache:getInstance():addSpriteFramesWithFile("armature/Cowboy0.plist", "armature/Cowboy0.png") - local node = ccs.NodeReader:getInstance():createNode("ActionTimeline/boy_1.ExportJson") - local action = ccs.ActionTimelineCache:getInstance():createAction("ActionTimeline/boy_1.ExportJson") + local node = cc.CSLoader:createNode("ActionTimeline/boy_1.csb") + local action = cc.CSLoader:createTimeline("ActionTimeline/boy_1.csb") node:runAction(action) action:gotoFrameAndPlay(0, 60, true) @@ -377,8 +377,8 @@ function TestTimelinePerformance:onEnter() cc.SpriteFrameCache:getInstance():addSpriteFramesWithFile("armature/Cowboy0.plist", "armature/Cowboy0.png") for i = 1,100 do - local node = ccs.NodeReader:getInstance():createNode("ActionTimeline/boy_1.ExportJson") - local action = ccs.ActionTimelineCache:getInstance():createAction("ActionTimeline/boy_1.ExportJson") + local node = cc.CSLoader:createNode("ActionTimeline/boy_1.csb") + local action = cc.CSLoader:createTimeline("ActionTimeline/boy_1.csb") node:runAction(action) action:gotoFrameAndPlay(70, action:getDuration(), true) diff --git a/tests/lua-tests/src/CocoStudioTest/CocoStudioSceneTest/CocoStudioSceneTest.lua b/tests/lua-tests/src/CocoStudioTest/CocoStudioSceneTest/CocoStudioSceneTest.lua index 19cdabbbe5..856affe621 100644 --- a/tests/lua-tests/src/CocoStudioTest/CocoStudioSceneTest/CocoStudioSceneTest.lua +++ b/tests/lua-tests/src/CocoStudioTest/CocoStudioSceneTest/CocoStudioSceneTest.lua @@ -1,6 +1,6 @@ -require "src/CocoStudioTest/CocoStudioSceneTest/TriggerCode/acts" -require "src/CocoStudioTest/CocoStudioSceneTest/TriggerCode/cons" -require "src/CocoStudioTest/CocoStudioSceneTest/TriggerCode/eventDef" +require "CocoStudioTest/CocoStudioSceneTest/TriggerCode/acts" +require "CocoStudioTest/CocoStudioSceneTest/TriggerCode/cons" +require "CocoStudioTest/CocoStudioSceneTest/TriggerCode/eventDef" local itemTagBasic = 1000 diff --git a/tests/lua-tests/src/CocoStudioTest/CocoStudioSceneTest/TriggerCode/acts.lua b/tests/lua-tests/src/CocoStudioTest/CocoStudioSceneTest/TriggerCode/acts.lua index ef7b828cbf..6d1ca8c553 100644 --- a/tests/lua-tests/src/CocoStudioTest/CocoStudioSceneTest/TriggerCode/acts.lua +++ b/tests/lua-tests/src/CocoStudioTest/CocoStudioSceneTest/TriggerCode/acts.lua @@ -1,5 +1,3 @@ -require "CocoStudio" - local TMoveBy = class("TMoveBy") TMoveBy._tag = -1 TMoveBy._duration = 0 diff --git a/tests/lua-tests/src/CocoStudioTest/CocoStudioSceneTest/TriggerCode/cons.lua b/tests/lua-tests/src/CocoStudioTest/CocoStudioSceneTest/TriggerCode/cons.lua index 2f6b10c038..e05c918fd7 100644 --- a/tests/lua-tests/src/CocoStudioTest/CocoStudioSceneTest/TriggerCode/cons.lua +++ b/tests/lua-tests/src/CocoStudioTest/CocoStudioSceneTest/TriggerCode/cons.lua @@ -1,5 +1,3 @@ -require ("CocoStudio") - local NodeInRect = class("NodeInRect") NodeInRect._tag = -1 NodeInRect._origin = nil diff --git a/tests/lua-tests/src/CocoStudioTest/CocoStudioTest.lua b/tests/lua-tests/src/CocoStudioTest/CocoStudioTest.lua index e05b4d4e06..3776489105 100644 --- a/tests/lua-tests/src/CocoStudioTest/CocoStudioTest.lua +++ b/tests/lua-tests/src/CocoStudioTest/CocoStudioTest.lua @@ -1,8 +1,8 @@ -require "src/CocoStudioTest/CocoStudioGUITest/CocoStudioGUITest" -require "src/CocoStudioTest/CocoStudioSceneTest/CocoStudioSceneTest" -require "src/CocoStudioTest/CocoStudioArmatureTest/CocoStudioArmatureTest" -require "src/CocoStudioTest/CocoStudioUIEditorTest/CocoStudioUIEditorTest" -require "src/CocoStudioTest/CocoStudioActionTimelineTest/CocoStudioActionTimelineTest" +require "CocoStudioTest/CocoStudioGUITest/CocoStudioGUITest" +require "CocoStudioTest/CocoStudioSceneTest/CocoStudioSceneTest" +require "CocoStudioTest/CocoStudioArmatureTest/CocoStudioArmatureTest" +require "CocoStudioTest/CocoStudioUIEditorTest/CocoStudioUIEditorTest" +require "CocoStudioTest/CocoStudioActionTimelineTest/CocoStudioActionTimelineTest" local LINE_SPACE = 40 local ITEM_TAG_BASIC = 1000 diff --git a/tests/lua-tests/src/CocosDenshionTest/CocosDenshionTest.lua b/tests/lua-tests/src/CocosDenshionTest/CocosDenshionTest.lua index 7697ba5a66..6c6112a2b1 100644 --- a/tests/lua-tests/src/CocosDenshionTest/CocosDenshionTest.lua +++ b/tests/lua-tests/src/CocosDenshionTest/CocosDenshionTest.lua @@ -1,4 +1,3 @@ -require "AudioEngine" local EFFECT_FILE = "effect1.wav" local MUSIC_FILE = nil diff --git a/tests/lua-tests/src/EffectsTest/EffectsTest.lua b/tests/lua-tests/src/EffectsTest/EffectsTest.lua index c70ee0097d..715171e926 100644 --- a/tests/lua-tests/src/EffectsTest/EffectsTest.lua +++ b/tests/lua-tests/src/EffectsTest/EffectsTest.lua @@ -1,4 +1,4 @@ -require "src/EffectsTest/EffectsName" +require "EffectsTest/EffectsName" local ActionIdx = -1 diff --git a/tests/lua-tests/src/ExtensionTest/CocosBuilderTest.lua b/tests/lua-tests/src/ExtensionTest/CocosBuilderTest.lua index d9465b215f..5158de0d51 100644 --- a/tests/lua-tests/src/ExtensionTest/CocosBuilderTest.lua +++ b/tests/lua-tests/src/ExtensionTest/CocosBuilderTest.lua @@ -1,6 +1,3 @@ - -require "CCBReaderLoad" - HelloCocosBuilderLayer = HelloCocosBuilderLayer or {} ccb["HelloCocosBuilderLayer"] = HelloCocosBuilderLayer diff --git a/tests/lua-tests/src/ExtensionTest/ExtensionTest.lua b/tests/lua-tests/src/ExtensionTest/ExtensionTest.lua index 602aa260d3..91fb9db48a 100644 --- a/tests/lua-tests/src/ExtensionTest/ExtensionTest.lua +++ b/tests/lua-tests/src/ExtensionTest/ExtensionTest.lua @@ -1,6 +1,5 @@ -require "ExtensionConstants" -require "src/ExtensionTest/CocosBuilderTest" -require "src/ExtensionTest/WebProxyTest" +require "ExtensionTest/CocosBuilderTest" +require "ExtensionTest/WebProxyTest" local LINE_SPACE = 40 local kItemTagBasic = 1000 diff --git a/tests/lua-tests/src/ExtensionTest/WebProxyTest.lua b/tests/lua-tests/src/ExtensionTest/WebProxyTest.lua index c14ffeab8c..10e91b9ac4 100644 --- a/tests/lua-tests/src/ExtensionTest/WebProxyTest.lua +++ b/tests/lua-tests/src/ExtensionTest/WebProxyTest.lua @@ -1,5 +1,4 @@ - require "NetworkConstants" - local function WebSocketTestLayer() +local function WebSocketTestLayer() local layer = cc.Layer:create() local winSize = cc.Director:getInstance():getWinSize() diff --git a/tests/lua-tests/src/OpenGLTest/OpenGLTest.lua b/tests/lua-tests/src/OpenGLTest/OpenGLTest.lua index 428ba1d3aa..b8830dcded 100644 --- a/tests/lua-tests/src/OpenGLTest/OpenGLTest.lua +++ b/tests/lua-tests/src/OpenGLTest/OpenGLTest.lua @@ -1,7 +1,3 @@ -require "OpenglConstants" -require "Cocos2dConstants" -require "Opengl" - local vertDefaultSource = "\n".."\n" .. "attribute vec4 a_position;\n" .. "attribute vec2 a_texCoord;\n" .. diff --git a/tests/lua-tests/src/PerformanceTest/PerformanceTest.lua b/tests/lua-tests/src/PerformanceTest/PerformanceTest.lua index 825ae2010a..db6a5e8c4b 100644 --- a/tests/lua-tests/src/PerformanceTest/PerformanceTest.lua +++ b/tests/lua-tests/src/PerformanceTest/PerformanceTest.lua @@ -1,4 +1,4 @@ -require "src/PerformanceTest/PerformanceSpriteTest" +require "PerformanceTest/PerformanceSpriteTest" local MAX_COUNT = 6 local LINE_SPACE = 40 diff --git a/tests/lua-tests/src/SpineTest/SpineTest.lua b/tests/lua-tests/src/SpineTest/SpineTest.lua index 3e93a7c975..57c698f5f3 100644 --- a/tests/lua-tests/src/SpineTest/SpineTest.lua +++ b/tests/lua-tests/src/SpineTest/SpineTest.lua @@ -1,82 +1,148 @@ -local SpineTestLayer1 = nil +require "cocos.spine.SpineConstants" +local SpineTestLayerNormal = class("SpineTestLayerNormal",function() + return cc.Layer:create() +end) --------------------------------------------------------------------- --- --- SpineTestLayer1 --- --------------------------------------------------------------------- +function SpineTestLayerNormal:ctor() -SpineTestLayer1 = function() - local ret = cc.Layer:create() + local function onNodeEvent(event) + if event == "enter" then + self:init() + end + end - local s = cc.Director:getInstance():getWinSize() - local spineboy + self:registerScriptHandler(onNodeEvent) +end + +function SpineTestLayerNormal:init() + local skeletonNode = sp.SkeletonAnimation:create("spine/spineboy.json", "spine/spineboy.atlas", 0.6) + skeletonNode:setScale(0.5) + + skeletonNode:registerSpineEventHandler(function (event) + print(string.format("[spine] %d start: %s", + event.trackIndex, + event.animation)) + end, sp.EventType.ANIMATION_START) + + skeletonNode:registerSpineEventHandler(function (event) + print(string.format("[spine] %d end:", + event.trackIndex)) + end, sp.EventType.ANIMATION_END) - local addSpineBoy = function() - spineboy = sp.SkeletonAnimation:create(s_pPathSpineBoyJson, s_pPathSpineBoyAtlas, 0.8) - ret:addChild(spineboy) - spineboy:setPosition(cc.p(s.width/2, 20)) - spineboy:setMix("walk", "jump", 0.2) - spineboy:setMix("jump", "walk", 0.4) - spineboy:setTimeScale(0.3) - spineboy:setDebugBones(true) - spineboy:setAnimation(0, 'walk', false) - spineboy:addAnimation(0, 'jump', false) - spineboy:addAnimation(0, 'walk', true) - spineboy:addAnimation(0, 'jump', true, 4) - - spineboy:registerSpineEventHandler(function(event) - if event.type == 'start' then - print(string.format("[spine] %d start: %s", - event.trackIndex, - event.animation)) - elseif event.type == 'end' then - print(string.format("[spine] %d end: %s", - event.trackIndex, - event.animation)) - elseif event.type == 'complete' then - print(string.format("[spine] %d complete: %s, %d", - event.trackIndex, - event.animation, + skeletonNode:registerSpineEventHandler(function (event) + print(string.format("[spine] %d complete: %d", + event.trackIndex, event.loopCount)) - elseif event.type == 'event' then - print(string.format("[spine] %d event: %s, %s: %d, %f, %s", + end, sp.EventType.ANIMATION_COMPLETE) + + skeletonNode:registerSpineEventHandler(function (event) + print(string.format("[spine] %d event: %s, %d, %f, %s", event.trackIndex, - event.animation, event.eventData.name, event.eventData.intValue, event.eventData.floatValue, - event.eventData.stringValue)) + event.eventData.stringValue)) + end, sp.EventType.ANIMATION_EVENT) + + skeletonNode:setMix("walk", "jump", 0.2) + skeletonNode:setMix("jump", "run", 0.2) + skeletonNode:setAnimation(0, "walk", true) + + skeletonNode:addAnimation(0, "jump", false, 3) + skeletonNode:addAnimation(0, "run", true) + + local windowSize = cc.Director:getInstance():getWinSize() + skeletonNode:setPosition(cc.p(windowSize.width / 2, 20)) + self:addChild(skeletonNode) + + local listener = cc.EventListenerTouchOneByOne:create() + listener:registerScriptHandler(function (touch, event) + if not skeletonNode:getDebugBonesEnabled() then + skeletonNode:setDebugBonesEnabled(true) + elseif skeletonNode:getTimeScale() == 1 then + skeletonNode:setTimeScale(0.3) + else + skeletonNode:setTimeScale(1) + skeletonNode:setDebugBonesEnabled(false) end - end) - spineboy:runAction(cc.RepeatForever:create(cc.Sequence:create(cc.FadeOut:create(1), - cc.FadeIn:create(1), - cc.DelayTime:create(5)))) - - - end + return true + end,cc.Handler.EVENT_TOUCH_BEGAN ) - local function onNodeEvent(event) - if event == "enter" then - cclog("SpineTestLayer1#onEnter") - addSpineBoy() - elseif event == "enterTransitionFinish" then - cclog("SceneTestLayer1#onEnterTransitionDidFinish") - end - end - - ret:registerScriptHandler(onNodeEvent) - return ret + local eventDispatcher = self:getEventDispatcher() + eventDispatcher:addEventListenerWithSceneGraphPriority(listener, self) end +function SpineTestLayerNormal.create( ... ) + local layer = SpineTestLayerNormal.new() + Helper.initWithLayer(layer) + Helper.titleLabel:setString("SpineTestLayerNormal Test") + return layer +end + +---- +local SpineTestLayerFFD = class("SpineTestLayerFFD",function() + return cc.Layer:create() +end) + +function SpineTestLayerFFD:ctor() + + local function onNodeEvent(event) + if event == "enter" then + self:init() + end + end + + self:registerScriptHandler(onNodeEvent) +end + +function SpineTestLayerFFD:init() + skeletonNode = sp.SkeletonAnimation:create("spine/goblins-ffd.json", "spine/goblins-ffd.atlas", 1.5) + skeletonNode:setAnimation(0, "walk", true) + skeletonNode:setSkin("goblin") + + skeletonNode:setScale(0.5) + local windowSize = cc.Director:getInstance():getWinSize() + skeletonNode:setPosition(cc.p(windowSize.width / 2, 20)) + self:addChild(skeletonNode) + + local listener = cc.EventListenerTouchOneByOne:create() + listener:registerScriptHandler(function (touch, event) + if not skeletonNode:getDebugBonesEnabled() then + skeletonNode:setDebugBonesEnabled(true) + elseif skeletonNode:getTimeScale() == 1 then + skeletonNode:setTimeScale(0.3) + else + skeletonNode:setTimeScale(1) + skeletonNode:setDebugBonesEnabled(false) + end + + return true + end,cc.Handler.EVENT_TOUCH_BEGAN ) + + local eventDispatcher = self:getEventDispatcher() + eventDispatcher:addEventListenerWithSceneGraphPriority(listener, self) +end + +function SpineTestLayerFFD.create( ... ) + local layer = SpineTestLayerFFD.new() + Helper.initWithLayer(layer) + Helper.titleLabel:setString("SpineTestLayerFFD Test") + return layer +end function SpineTestMain() cclog("SpineTestMain") local scene = cc.Scene:create() - local layer = SpineTestLayer1() - scene:addChild(layer, 0) + + Helper.createFunctionTable = + { + SpineTestLayerNormal.create, + SpineTestLayerFFD.create, + } + + scene:addChild(SpineTestLayerNormal.create(), 0) scene:addChild(CreateBackMenuItem()) return scene end diff --git a/tests/lua-tests/src/Sprite3DTest/Sprite3DTest.lua b/tests/lua-tests/src/Sprite3DTest/Sprite3DTest.lua index 773ff20289..bb95144f61 100644 --- a/tests/lua-tests/src/Sprite3DTest/Sprite3DTest.lua +++ b/tests/lua-tests/src/Sprite3DTest/Sprite3DTest.lua @@ -629,6 +629,245 @@ function Sprite3DReskinTest.create() return layer end +---------------------------------------- +----Sprite3DWithOBBPerfromanceTest +---------------------------------------- +local Sprite3DWithOBBPerfromanceTest = class("Sprite3DWithOBBPerfromanceTest",function() + return cc.Layer:create() +end) + +function Sprite3DWithOBBPerfromanceTest:ctor() + self._obb = {} + local listener = cc.EventListenerTouchAllAtOnce:create() + listener:registerScriptHandler(function (touches, event) + for i,touch in ipairs(touches) do + local location = touch:getLocationInView() + if nil ~= self._obb and #self._obb > 0 then + self._intersetList = {} + local ray = cc.Ray:new() + self:calculateRayByLocationInView(ray, location) + + for idx,value in ipairs(self._obb) do + if ray:intersects(value) then + table.insert(self._intersetList, idx) + return + end + end + end + end + end,cc.Handler.EVENT_TOUCHES_BEGAN) + + listener:registerScriptHandler(function (touches, event) + + end,cc.Handler.EVENT_TOUCHES_ENDED) + + listener:registerScriptHandler(function (touches, event) + for i,touch in ipairs(touches) do + local location = touch:getLocation() + + for idx,value in ipairs(self._obb) do + for lstIdx,lstValue in ipairs(self._intersetList) do + if idx == lstValue then + self._obb[idx]._center = cc.vec3(location.x,location.y,0) + end + end + end + end + end,cc.Handler.EVENT_TOUCHES_MOVED) + + local eventDispatcher = self:getEventDispatcher() + eventDispatcher:addEventListenerWithSceneGraphPriority(listener, self) + + local s = cc.Director:getInstance():getWinSize() + self:initDrawBox() + + self:addNewSpriteWithCoords(cc.p(s.width/2, s.height/2)) + + cc.MenuItemFont:setFontName("fonts/arial.ttf") + cc.MenuItemFont:setFontSize(65) + + local decrease = cc.MenuItemFont:create(" - ") + decrease:registerScriptTapHandler(function(tag, sender) + self:delOBBWithCount(10) + end) + decrease:setColor(cc.c3b(0, 200, 20)) + + local increase = cc.MenuItemFont:create(" + ") + increase:registerScriptTapHandler(function(tag, sender) + self:addOBBWithCount(10) + end) + increase:setColor(cc.c3b(0, 200, 20)) + + local menu = cc.Menu:create(decrease, increase) + menu:alignItemsHorizontally() + menu:setPosition(cc.p(s.width/2, s.height - 90)) + self:addChild(menu, 1) + + local ttfConfig = {} + ttfConfig.fontFilePath = "fonts/Marker Felt.ttf" + ttfConfig.fontSize = 30 + self._labelCubeCount = cc.Label:createWithTTF(ttfConfig,"0 cubes") + self._labelCubeCount:setColor(cc.c3b(0,200,20)) + self._labelCubeCount:setPosition(cc.p(s.width/2, s.height-90)) + self:addChild(self._labelCubeCount) + + self:addOBBWithCount(10) + self:scheduleUpdateWithPriorityLua(function(dt) + self._labelCubeCount:setString(string.format("%u cubes", #self._obb)) + if nil ~= self._drawDebug then + self._drawDebug:clear() + local mat = self._sprite:getNodeToWorldTransform() + + self._obbt._xAxis = cc.vec3(mat[1], mat[2], mat[3]) + self._obbt._xAxis = cc.vec3normalize(self._obbt._xAxis) + + self._obbt._yAxis = cc.vec3(mat[5], mat[6], mat[7]) + self._obbt._yAxis = cc.vec3normalize(self._obbt._yAxis) + + self._obbt._zAxis = cc.vec3(-mat[9], -mat[10], -mat[11]) + self._obbt._zAxis = cc.vec3normalize(self._obbt._zAxis) + + self._obbt._center = self._sprite:getPosition3D() + + local corners = {} + for i=1,8 do + corners[i] = {} + end + corners = self._obbt:getCorners(corners) + self._drawDebug:drawCube(corners, cc.c4f(0, 0, 1, 1)) + end + + if #self._obb > 0 then + self._drawOBB:clear() + + for i= 1, #self._obb do + local corners = {} + for i=1,8 do + corners[i] = {} + end + + corners = self._obb[i]:getCorners(corners) + if self._obbt:intersects(self._obb[i]) then + self._drawOBB:drawCube(corners, cc.c4f(1, 0, 0, 1)) + else + self._drawOBB:drawCube(corners, cc.c4f(0, 1, 0, 1)) + end + + end + end + end, 0) +end + +function Sprite3DWithOBBPerfromanceTest:addOBBWithCount( value ) + for i=1,value do + local randompos = cc.p(math.random() * cc.Director:getInstance():getWinSize().width, math.random() * cc.Director:getInstance():getWinSize().height) + local extents = cc.vec3(10, 10, 10) + local aabb = cc.AABB:new({x = -10, y = -10, z = -10}, extents) + local obb = cc.OBB:new(aabb) + obb._center = cc.vec3(randompos.x,randompos.y,0) + table.insert(self._obb, obb) + end +end + +function Sprite3DWithOBBPerfromanceTest:delOBBWithCount( value ) + if #self._obb >= 10 then + for i= 1, 10 do + table.remove(self._obb) + end + self._drawOBB:clear() + end +end + +function Sprite3DWithOBBPerfromanceTest:initDrawBox() + self._drawOBB = cc.DrawNode3D:create() + self:addChild(self._drawOBB ) +end + +function Sprite3DWithOBBPerfromanceTest:unproject( viewProjection, viewport, src, dst) + assert(viewport.width ~= 0.0 and viewport.height ~= 0) + local screen = cc.vec4(src.x / viewport.width, (viewport.height - src.y) / viewport.height, src.z, 1.0) + screen.x = screen.x * 2.0 - 1.0 + screen.y = screen.y * 2.0 - 1.0 + screen.z = screen.z * 2.0 - 1.0 + local inversed = cc.mat4.new(viewProjection:getInversed()) + screen = inversed:transformVector(screen, screen) + if screen.w ~= 0.0 then + screen.x = screen.x / screen.w + screen.y = screen.y / screen.w + screen.z = screen.z / screen.w + end + + dst.x = screen.x + dst.y = screen.y + dst.z = screen.z + return viewport, src, dst +end + +function Sprite3DWithOBBPerfromanceTest:calculateRayByLocationInView(ray, location) + local dir = cc.Director:getInstance() + local view = dir:getWinSize() + local mat = cc.mat4.new(dir:getMatrix(cc.MATRIX_STACK_TYPE.PROJECTION)) + local src = cc.vec3(location.x, location.y, -1) + local nearPoint = {} + view, src, nearPoint = self:unproject(mat, view, src, nearPoint) + src = cc.vec3(location.x, location.y, 1) + local farPoint = {} + view, src, farPoint = self:unproject(mat, view, src, farPoint) + local direction = {} + direction.x = farPoint.x - nearPoint.x + direction.y = farPoint.y - nearPoint.y + direction.z = farPoint.z - nearPoint.z + direction = cc.vec3normalize(direction) + + ray._origin = nearPoint + ray._direction = direction +end + +function Sprite3DWithOBBPerfromanceTest:addNewSpriteWithCoords(vec2) + local fileName = "Sprite3DTest/tortoise.c3b" + local sprite = cc.Sprite3D:create(fileName) + sprite:setScale(0.1) + local s = cc.Director:getInstance():getWinSize() + sprite:setPosition(cc.p(s.width * 4.0 / 5.0, s.height / 2.0)) + self:addChild(sprite) + self._sprite = sprite + local animation = cc.Animation3D:create(fileName) + if nil ~= animation then + local animate = cc.Animate3D:create(animation, 0.0, 1.933) + sprite:runAction(cc.RepeatForever:create(animate)) + end + + self._moveAction = cc.MoveTo:create(4.0, cc.p(s.width / 5.0, s.height / 2.0)) + self._moveAction:retain() + local function reachEndCallBack() + self._sprite:stopActionByTag(100) + local inverse = self._moveAction:reverse() + inverse:retain() + self._moveAction:release() + self._moveAction = inverse + local rot = cc.RotateBy:create(1.0, { x = 0.0, y = 180.0, z = 0.0}) + local seq = cc.Sequence:create(rot, self._moveAction, cc.CallFunc:create(reachEndCallBack)) + seq:setTag(100) + self._sprite:runAction(seq) + end + local seq = cc.Sequence:create(self._moveAction, cc.CallFunc:create(reachEndCallBack)) + seq:setTag(100) + sprite:runAction(seq) + + local aabb = self._sprite:getAABB() + self._obbt = cc.OBB:new(aabb) + + self._drawDebug = cc.DrawNode3D:create() + self:addChild(self._drawDebug) +end + +function Sprite3DWithOBBPerfromanceTest.create() + local layer = Sprite3DWithOBBPerfromanceTest.new() + Helper.initWithLayer(layer) + Helper.titleLabel:setString("OBB Collison Perfromance Test") + return layer +end + ---------------------------------------- ----Sprite3DMirrorTest ---------------------------------------- @@ -680,7 +919,6 @@ function Sprite3DMirrorTest.create() return layer end - function Sprite3DTest() local scene = cc.Scene:create() @@ -692,6 +930,7 @@ function Sprite3DTest() Animate3DTest.create, AttachmentTest.create, Sprite3DReskinTest.create, + Sprite3DWithOBBPerfromanceTest.create, Sprite3DMirrorTest.create, } diff --git a/tests/lua-tests/src/TouchesTest/Ball.lua b/tests/lua-tests/src/TouchesTest/Ball.lua index 7d5603e41d..9c75586d35 100644 --- a/tests/lua-tests/src/TouchesTest/Ball.lua +++ b/tests/lua-tests/src/TouchesTest/Ball.lua @@ -1,7 +1,5 @@ - -require "extern" -require "src/VisibleRect" -require "src/TouchesTest/Paddle" +require "VisibleRect" +require "TouchesTest/Paddle" Ball = class("Ball", function(texture) return cc.Sprite:createWithTexture(texture) diff --git a/tests/lua-tests/src/TouchesTest/Paddle.lua b/tests/lua-tests/src/TouchesTest/Paddle.lua index 65a319c44b..e7022387de 100644 --- a/tests/lua-tests/src/TouchesTest/Paddle.lua +++ b/tests/lua-tests/src/TouchesTest/Paddle.lua @@ -1,5 +1,4 @@ -require "extern" -require "src/VisibleRect" +require "VisibleRect" Paddle = class("Paddle", function(texture) return cc.Sprite:createWithTexture(texture) diff --git a/tests/lua-tests/src/TouchesTest/TouchesTest.lua b/tests/lua-tests/src/TouchesTest/TouchesTest.lua index 241e5a369f..04f4418ca8 100644 --- a/tests/lua-tests/src/TouchesTest/TouchesTest.lua +++ b/tests/lua-tests/src/TouchesTest/TouchesTest.lua @@ -1,7 +1,7 @@ -require "src/testResource" -require "src/TouchesTest/Ball" -require "src/TouchesTest/Paddle" -require "src/VisibleRect" +require "testResource" +require "TouchesTest/Ball" +require "TouchesTest/Paddle" +require "VisibleRect" local kHighPlayer = 0 local kLowPlayer = 1 diff --git a/tests/lua-tests/src/TransitionsTest/TransitionsName.lua b/tests/lua-tests/src/TransitionsTest/TransitionsName.lua index c49f4caae2..96c6828b8c 100644 --- a/tests/lua-tests/src/TransitionsTest/TransitionsName.lua +++ b/tests/lua-tests/src/TransitionsTest/TransitionsName.lua @@ -1,4 +1,4 @@ -require "src/helper" +require "helper" Transition_Table = { diff --git a/tests/lua-tests/src/TransitionsTest/TransitionsTest.lua b/tests/lua-tests/src/TransitionsTest/TransitionsTest.lua index 3f27897a73..79b6eeb09e 100644 --- a/tests/lua-tests/src/TransitionsTest/TransitionsTest.lua +++ b/tests/lua-tests/src/TransitionsTest/TransitionsTest.lua @@ -1,4 +1,4 @@ -require "src/TransitionsTest/TransitionsName" +require "TransitionsTest/TransitionsName" local SceneIdx = -1 diff --git a/tests/lua-tests/src/VideoPlayerTest/VideoPlayerTest.lua b/tests/lua-tests/src/VideoPlayerTest/VideoPlayerTest.lua index ad082ce774..0ac74b5da6 100644 --- a/tests/lua-tests/src/VideoPlayerTest/VideoPlayerTest.lua +++ b/tests/lua-tests/src/VideoPlayerTest/VideoPlayerTest.lua @@ -1,6 +1,3 @@ -require("experimentalUIConstants") - - local visibleRect = cc.Director:getInstance():getOpenGLView():getVisibleRect() local centerPos = cc.p(visibleRect.x + visibleRect.width / 2,visibleRect.y + visibleRect.height /2) diff --git a/tests/lua-tests/src/VisibleRect.lua b/tests/lua-tests/src/VisibleRect.lua index 5d53b1f8e5..1b867cb668 100644 --- a/tests/lua-tests/src/VisibleRect.lua +++ b/tests/lua-tests/src/VisibleRect.lua @@ -1,6 +1,3 @@ -require "extern" -require "Cocos2d" - VisibleRect = class("VisibleRect") VisibleRect.__index = VisibleRect diff --git a/tests/lua-tests/src/controller.lua b/tests/lua-tests/src/controller.lua index df010e4491..7bb0d8cfa5 100644 --- a/tests/lua-tests/src/controller.lua +++ b/tests/lua-tests/src/controller.lua @@ -5,6 +5,10 @@ collectgarbage("setstepmul", 5000) ---------------- -- run +cc.FileUtils:getInstance():addSearchPath("src") +CC_USE_DEPRECATED_API = true +require "cocos.init" + local director = cc.Director:getInstance() local glView = director:getOpenGLView() if nil == glView then @@ -71,7 +75,7 @@ end addSearchPath("res/", screenSize.height) addSearchPath("", screenSize.height) -require "src/mainMenu" +require "mainMenu" local scene = cc.Scene:create() scene:addChild(CreateTestMenu()) diff --git a/tests/lua-tests/src/helper.lua b/tests/lua-tests/src/helper.lua index 0e242a1c43..84dbc49827 100644 --- a/tests/lua-tests/src/helper.lua +++ b/tests/lua-tests/src/helper.lua @@ -1,4 +1,3 @@ -require "Cocos2d" CC_CONTENT_SCALE_FACTOR = function() return cc.Director:getInstance():getContentScaleFactor() diff --git a/tests/lua-tests/src/mainMenu.lua b/tests/lua-tests/src/mainMenu.lua index 63a4a55dba..31ba5cd10d 100644 --- a/tests/lua-tests/src/mainMenu.lua +++ b/tests/lua-tests/src/mainMenu.lua @@ -1,65 +1,59 @@ -require "Cocos2d" -require "Cocos2dConstants" -require "Opengl" -require "OpenglConstants" -require "StudioConstants" -require "GuiConstants" -require "bitExtend" -require "src/helper" -require "src/testResource" -require "src/VisibleRect" +require "helper" +require "testResource" +require "VisibleRect" -require "src/AccelerometerTest/AccelerometerTest" -require "src/ActionManagerTest/ActionManagerTest" -require "src/ActionsEaseTest/ActionsEaseTest" -require "src/ActionsProgressTest/ActionsProgressTest" -require "src/ActionsTest/ActionsTest" -require "src/AssetsManagerTest/AssetsManagerTest" -require "src/BillBoardTest/BillBoardTest" -require "src/BugsTest/BugsTest" -require "src/ByteCodeEncryptTest/ByteCodeEncryptTest" -require "src/Camera3DTest/Camera3DTest" -require "src/ClickAndMoveTest/ClickAndMoveTest" -require "src/CocosDenshionTest/CocosDenshionTest" -require "src/CocoStudioTest/CocoStudioTest" -require "src/CurrentLanguageTest/CurrentLanguageTest" -require "src/DrawPrimitivesTest/DrawPrimitivesTest" -require "src/EffectsTest/EffectsTest" -require "src/EffectsAdvancedTest/EffectsAdvancedTest" -require "src/ExtensionTest/ExtensionTest" -require "src/FontTest/FontTest" -require "src/IntervalTest/IntervalTest" -require "src/KeypadTest/KeypadTest" -require "src/LabelTest/LabelTest" -require "src/LabelTestNew/LabelTestNew" -require "src/LayerTest/LayerTest" -require "src/MenuTest/MenuTest" -require "src/MotionStreakTest/MotionStreakTest" -require "src/NewEventDispatcherTest/NewEventDispatcherTest" -require "src/NodeTest/NodeTest" -require "src/OpenGLTest/OpenGLTest" -require "src/ParallaxTest/ParallaxTest" -require "src/ParticleTest/ParticleTest" -require "src/PerformanceTest/PerformanceTest" -require "src/RenderTextureTest/RenderTextureTest" -require "src/RotateWorldTest/RotateWorldTest" -require "src/Sprite3DTest/Sprite3DTest" -require "src/SpriteTest/SpriteTest" -require "src/SceneTest/SceneTest" -require "src/SpineTest/SpineTest" -require "src/Texture2dTest/Texture2dTest" -require "src/TileMapTest/TileMapTest" -require "src/TouchesTest/TouchesTest" -require "src/TransitionsTest/TransitionsTest" -require "src/UserDefaultTest/UserDefaultTest" -require "src/ZwoptexTest/ZwoptexTest" -require "src/LuaBridgeTest/LuaBridgeTest" -require "src/XMLHttpRequestTest/XMLHttpRequestTest" -require "src/PhysicsTest/PhysicsTest" -require "src/CaptureScreenTest/CaptureScreenTest" -require "src/VideoPlayerTest/VideoPlayerTest" -require "src/FastTiledMapTest/FastTiledMapTest" -require "src/NewAudioEngineTest/NewAudioEngineTest" +require "AccelerometerTest/AccelerometerTest" +require "ActionManagerTest/ActionManagerTest" +require "ActionsEaseTest/ActionsEaseTest" +require "ActionsProgressTest/ActionsProgressTest" +require "ActionsTest/ActionsTest" +require "AssetsManagerTest/AssetsManagerTest" +require "AssetsManagerExTest/AssetsManagerExTest" +require "BillBoardTest/BillBoardTest" +require "BugsTest/BugsTest" +require "ByteCodeEncryptTest/ByteCodeEncryptTest" +require "Camera3DTest/Camera3DTest" +require "ClickAndMoveTest/ClickAndMoveTest" +require "CocosDenshionTest/CocosDenshionTest" +require "CocoStudioTest/CocoStudioTest" +require "CurrentLanguageTest/CurrentLanguageTest" +require "DrawPrimitivesTest/DrawPrimitivesTest" +require "EffectsTest/EffectsTest" +require "EffectsAdvancedTest/EffectsAdvancedTest" +require "ExtensionTest/ExtensionTest" +require "FontTest/FontTest" +require "IntervalTest/IntervalTest" +require "KeypadTest/KeypadTest" +require "LabelTest/LabelTest" +require "LabelTestNew/LabelTestNew" +require "LayerTest/LayerTest" +require "MenuTest/MenuTest" +require "MotionStreakTest/MotionStreakTest" +require "NewEventDispatcherTest/NewEventDispatcherTest" +require "NodeTest/NodeTest" +require "OpenGLTest/OpenGLTest" +require "ParallaxTest/ParallaxTest" +require "ParticleTest/ParticleTest" +require "PerformanceTest/PerformanceTest" +require "RenderTextureTest/RenderTextureTest" +require "RotateWorldTest/RotateWorldTest" +require "Sprite3DTest/Sprite3DTest" +require "SpriteTest/SpriteTest" +require "SceneTest/SceneTest" +require "SpineTest/SpineTest" +require "Texture2dTest/Texture2dTest" +require "TileMapTest/TileMapTest" +require "TouchesTest/TouchesTest" +require "TransitionsTest/TransitionsTest" +require "UserDefaultTest/UserDefaultTest" +require "ZwoptexTest/ZwoptexTest" +require "LuaBridgeTest/LuaBridgeTest" +require "XMLHttpRequestTest/XMLHttpRequestTest" +require "PhysicsTest/PhysicsTest" +require "CaptureScreenTest/CaptureScreenTest" +require "VideoPlayerTest/VideoPlayerTest" +require "FastTiledMapTest/FastTiledMapTest" +require "NewAudioEngineTest/NewAudioEngineTest" local LINE_SPACE = 40 @@ -79,6 +73,7 @@ local _allTests = { { isSupported = true, name = "ActionsProgressTest" , create_func = ProgressActionsTest }, { isSupported = true, name = "ActionsTest" , create_func = ActionsTest }, { isSupported = true, name = "AssetsManagerTest" , create_func = AssetsManagerTestMain }, + { isSupported = true, name = "AssetsManagerExTest" , create_func = AssetsManagerExTestMain }, { isSupported = audioEndineSupported, name = "AudioEngineTest", create_func = AudioEngineTest}, { isSupported = false, name = "Box2dTest" , create_func= Box2dTestMain }, { isSupported = false, name = "Box2dTestBed" , create_func= Box2dTestBedMain }, diff --git a/tools/bindings-generator b/tools/bindings-generator index a8496d540c..87efa95573 160000 --- a/tools/bindings-generator +++ b/tools/bindings-generator @@ -1 +1 @@ -Subproject commit a8496d540c174236bec0d5a33457340571699f19 +Subproject commit 87efa95573ab18f1fd60a62c7a70744901d92142 diff --git a/tools/cocos2d-console b/tools/cocos2d-console index 1a71fe7be4..36153464b9 160000 --- a/tools/cocos2d-console +++ b/tools/cocos2d-console @@ -1 +1 @@ -Subproject commit 1a71fe7be45db504f3bdc0e24e8d7eca83f2fc1a +Subproject commit 36153464b943d179a8d21ab294030c91c6e18ace diff --git a/tools/jenkins-scripts/pull-request-builder.py b/tools/jenkins-scripts/pull-request-builder.py index 7338427e92..746b93a020 100755 --- a/tools/jenkins-scripts/pull-request-builder.py +++ b/tools/jenkins-scripts/pull-request-builder.py @@ -1,4 +1,4 @@ -#Github pull reqest builder for Jenkins +#Github pull reqest builder for Jenkins import json import os @@ -22,7 +22,7 @@ def set_description(desc, url): req_data = urllib.urlencode({'description': desc}) req = urllib2.Request(url + 'submitDescription', req_data) #print(os.environ['BUILD_URL']) - req.add_header('Content-Type', 'application/x-www-form-urlencoded') + req.add_header('Content-Type', 'application/x-www-form-urlencoded') base64string = base64.encodestring(os.environ['JENKINS_ADMIN']+ ":" + os.environ['JENKINS_ADMIN_PW']).replace('\n', '') req.add_header("Authorization", "Basic " + base64string) try: @@ -77,7 +77,7 @@ def close_db(db): def save_build_stats(db, pr, filename, size): cursor = db.cursor() - sql = "INSERT INTO %s (number, size, createdTime) VALUES(%d, %d, now())" % (filename, pr, size) + sql = "INSERT INTO `%s` (number, size, createdTime) VALUES(%d, %d, now())" % (filename, pr, size) print sql cursor.execute(sql) db.commit() @@ -118,11 +118,11 @@ def main(): print 'action: ' + action #pr = payload['pull_request'] - + url = payload['html_url'] print "url:" + url pr_desc = '

pr#' + str(pr_num) + ' is '+ action +'

' - + #get statuses url @@ -139,11 +139,11 @@ def main(): target_url = jenkins_url + 'job/' + job_name + '/' + build_number + '/' set_description(pr_desc, target_url) - - + + data = {"state":"pending", "target_url":target_url, "context":"Jenkins CI", "description":"Build started..."} access_token = os.environ['GITHUB_ACCESS_TOKEN'] - Headers = {"Authorization":"token " + access_token} + Headers = {"Authorization":"token " + access_token} try: requests.post(statuses_url, data=json.dumps(data), headers=Headers, proxies = proxyDict) @@ -157,14 +157,14 @@ def main(): os.system("git checkout v3") os.system("git branch -D pull" + str(pr_num)) #clean workspace - print "Before checkout: git clean -xdf -f" + print "Before checkout: git clean -xdf -f" os.system("git clean -xdf -f") #fetch pull request to local repo git_fetch_pr = "git fetch origin pull/" + str(pr_num) + "/head" ret = os.system(git_fetch_pr) if(ret != 0): return(2) - + #checkout a new branch from v3 git_checkout = "git checkout -b " + "pull" + str(pr_num) os.system(git_checkout) @@ -175,9 +175,9 @@ def main(): if r.find('CONFLICT') > 0: print r return(3) - + # After checkout a new branch, clean workspace again - print "After checkout: git clean -xdf -f" + print "After checkout: git clean -xdf -f" os.system("git clean -xdf -f") #update submodule @@ -214,7 +214,7 @@ def main(): print platform.system() if(platform.system() == 'Darwin'): for item in PROJECTS: - cmd = "ln -s " + os.environ['WORKSPACE']+"/android_build_objs/ " + os.environ['WORKSPACE']+"/tests/"+item+"/proj.android/obj" + cmd = "ln -s " + os.environ['WORKSPACE']+"/android_build_objs/ " + os.environ['WORKSPACE']+"/tests/"+item+"/proj.android/obj" os.system(cmd) elif(platform.system() == 'Windows'): for item in PROJECTS: @@ -222,7 +222,7 @@ def main(): cmd = "mklink /J "+os.environ['WORKSPACE']+os.sep+"tests"+os.sep +p+os.sep+"proj.android"+os.sep+"obj " + os.environ['WORKSPACE']+os.sep+"android_build_objs" print cmd os.system(cmd) - + #build #TODO: add android-linux build #TODO: add mac build @@ -306,13 +306,13 @@ def main(): #get build result print "build finished and return " + str(ret) - + exit_code = 1 if ret == 0: exit_code = 0 else: exit_code = 1 - + #clean workspace os.system("cd " + os.environ['WORKSPACE']) os.system("git reset --hard") @@ -325,7 +325,7 @@ def main(): # -------------- main -------------- if __name__ == '__main__': sys_ret = 0 - try: + try: sys_ret = main() except: traceback.print_exc() diff --git a/tools/tolua/cocos2dx.ini b/tools/tolua/cocos2dx.ini index 43c6f51d2f..5c4f65805d 100644 --- a/tools/tolua/cocos2dx.ini +++ b/tools/tolua/cocos2dx.ini @@ -13,7 +13,7 @@ android_flags = -D_SIZE_T_DEFINED_ clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include clang_flags = -nostdinc -x c++ -std=c++11 -U __SSE__ -cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android +cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/cocos/editor-support -I%(cocosdir)s/external cocos_flags = -DANDROID cxxgenerator_headers = @@ -22,11 +22,11 @@ cxxgenerator_headers = extra_arguments = %(android_headers)s %(clang_headers)s %(cxxgenerator_headers)s %(cocos_headers)s %(android_flags)s %(clang_flags)s %(cocos_flags)s %(extra_flags)s # what headers to parse -headers = %(cocosdir)s/cocos/cocos2d.h %(cocosdir)s/cocos/2d/CCProtectedNode.h +headers = %(cocosdir)s/cocos/cocos2d.h %(cocosdir)s/cocos/2d/CCProtectedNode.h %(cocosdir)s/cocos/editor-support/cocostudio/ActionTimeline/CSLoader.h # what classes to produce code for. You can use regular expressions here. When testing the regular # expression, it will be enclosed in "^$", like this: "^Menu*$". -classes = New.* Sprite.* Scene Node.* Director Layer.* Menu.* Touch .*Action.* Move.* Rotate.* Blink.* Tint.* Sequence Repeat.* Fade.* Ease.* Scale.* Transition.* Spawn Animat.* Flip.* Delay.* Skew.* Jump.* Place.* Show.* Progress.* PointArray ToggleVisibility.* RemoveSelf Hide Particle.* Label.* Atlas.* TextureCache.* Texture2D Cardinal.* CatmullRom.* ParallaxNode TileMap.* .*TMX.* CallFunc RenderTexture GridAction Grid3DAction GridBase$ .+Grid Shaky3D Waves3D FlipX3D FlipY3D Speed ActionManager Set Scheduler Timer Orbit.* Follow.* Bezier.* CardinalSpline.* Camera.* DrawNode .*3D$ Liquid$ Waves$ ShuffleTiles$ TurnOffTiles$ Split.* Twirl$ FileUtils$ GLProgram ShaderCache Application ClippingNode MotionStreak ^Ref$ UserDefault GLViewImpl GLView Image Event(?!.*(Physics).*).* Component ProtectedNode Console GLProgramCache GLProgramState Device +classes = New.* Sprite.* Scene Node.* Director Layer.* Menu.* Touch .*Action.* Move.* Rotate.* Blink.* Tint.* Sequence Repeat.* Fade.* Ease.* Scale.* Transition.* Spawn Animat.* Flip.* Delay.* Skew.* Jump.* Place.* Show.* Progress.* PointArray ToggleVisibility.* RemoveSelf Hide Particle.* Label.* Atlas.* TextureCache.* Texture2D Cardinal.* CatmullRom.* ParallaxNode TileMap.* .*TMX.* CallFunc RenderTexture GridAction Grid3DAction GridBase$ .+Grid Shaky3D Waves3D FlipX3D FlipY3D Speed ActionManager Set Scheduler Timer Orbit.* Follow.* Bezier.* CardinalSpline.* Camera.* DrawNode .*3D$ Liquid$ Waves$ ShuffleTiles$ TurnOffTiles$ Split.* Twirl$ FileUtils$ GLProgram ShaderCache Application ClippingNode MotionStreak ^Ref$ UserDefault GLViewImpl GLView Image Event(?!.*(Physics).*).* Component ProtectedNode Console GLProgramCache GLProgramState Device CSLoader ClippingRectangleNode # what should we skip? in the format ClassName::[function function] # ClassName is a regular expression, but will be used like this: "^ClassName$" functions are also @@ -144,7 +144,8 @@ skip = Node::[setGLServerState description getUserObject .*UserData getGLServerS DirectionLight3D::[*], PointLight3D::[*], SpotLight3D::[*], - AmbientLight3D::[*] + AmbientLight3D::[*], + CSLoader::[nodeFromXML nodeFromProtocolBuffers createTimeline] rename_functions = SpriteFrameCache::[addSpriteFramesWithFile=addSpriteFrames getSpriteFrameByName=getSpriteFrame], ProgressTimer::[setReverseProgress=setReverseDirection], diff --git a/tools/tolua/cocos2dx_3d.ini b/tools/tolua/cocos2dx_3d.ini index 02e57c6f50..0e779cf550 100644 --- a/tools/tolua/cocos2dx_3d.ini +++ b/tools/tolua/cocos2dx_3d.ini @@ -26,7 +26,7 @@ headers = %(cocosdir)s/cocos/cocos2d.h # what classes to produce code for. You can use regular expressions here. When testing the regular # expression, it will be enclosed in "^$", like this: "^Menu*$". -classes = Animate3D Sprite3D Animation3D Skeleton3D ^Mesh$ AttachNode AABB OBB BillBoard +classes = Animate3D Sprite3D Animation3D Skeleton3D ^Mesh$ AttachNode BillBoard # what should we skip? in the format ClassName::[function function] # ClassName is a regular expression, but will be used like this: "^ClassName$" functions are also @@ -39,8 +39,6 @@ skip = Mesh::[create getAABB getVertexBuffer hasVertexAttrib getMeshVertexAttrib Sprite3D::[getSkin getAABB setBlendFunc], Skeleton3D::[create], Animation3D::[getBoneCurveByName], - AABB::[intersects merge], - OBB::[intersects], BillBoard::[draw] @@ -59,7 +57,7 @@ base_classes_to_skip = Clonable # classes that create no constructor # Set is special and we will use a hand-written constructor -abstract_classes = OBB +abstract_classes = # Determining whether to use script object(js object) to control the lifecycle of native(cpp) object or the other way around. Supported values are 'yes' or 'no'. script_control_cpp = no diff --git a/tools/tolua/cocos2dx_extension.ini b/tools/tolua/cocos2dx_extension.ini index 162ebddd02..94cc61fea6 100644 --- a/tools/tolua/cocos2dx_extension.ini +++ b/tools/tolua/cocos2dx_extension.ini @@ -13,7 +13,7 @@ android_flags = -D_SIZE_T_DEFINED_ clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include clang_flags = -nostdinc -x c++ -std=c++11 -U __SSE__ -cocos_headers = -I%(cocosdir)s -I%(cocosdir)s/cocos/editor-support -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android +cocos_headers = -I%(cocosdir)s -I%(cocosdir)s/cocos/editor-support -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/external -I%(cocosdir)s/external/json cocos_flags = -DANDROID @@ -27,7 +27,7 @@ headers = %(cocosdir)s/extensions/cocos-ext.h # what classes to produce code for. You can use regular expressions here. When testing the regular # expression, it will be enclosed in "^$", like this: "^Menu*$". -classes = AssetsManager.* Control.* ControlButton.* ScrollView$ TableView$ TableViewCell$ +classes = Control.* ControlButton.* ScrollView$ TableView$ TableViewCell$ AssetsManager AssetsManagerEx Manifest EventAssetsManagerEx EventListenerAssetsManagerEx # what should we skip? in the format ClassName::[function function] # ClassName is a regular expression, but will be used like this: "^ClassName$" functions are also @@ -39,13 +39,14 @@ classes = AssetsManager.* Control.* ControlButton.* ScrollView$ TableView$ Tabl skip = .*Delegate::[*], .*Loader.*::[*], *::[^visit$ copyWith.* onEnter.* onExit.* ^description$ getObjectType (g|s)etDelegate .*HSV], - AssetsManager::[(g|s)etDelegate], - AssetsManagerDelegateProtocol::[*], + EditBox::[(g|s)etDelegate ^keyboard.* touchDownAction getScriptEditBoxHandler registerScriptEditBoxHandler unregisterScriptEditBoxHandler], Control::[removeHandleOfControlEvent addHandleOfControlEvent], ControlUtils::[*], ControlSwitchSprite::[*], ScrollView::[(g|s)etDelegate$], - TableView::[create (g|s)etDataSource$ (g|s)etDelegate] + TableView::[create (g|s)etDataSource$ (g|s)etDelegate], + Manifest::[getAssets getAsset], + EventListenerAssetsManagerEx::[create] rename_functions = @@ -63,7 +64,7 @@ base_classes_to_skip = # classes that create no constructor # Set is special and we will use a hand-written constructor -abstract_classes = +abstract_classes = ArmatureDataManager Manifest # Determining whether to use script object(js object) to control the lifecycle of native(cpp) object or the other way around. Supported values are 'yes' or 'no'. script_control_cpp = no diff --git a/tools/tolua/cocos2dx_spine.ini b/tools/tolua/cocos2dx_spine.ini index b43c0ca4e3..0766da7388 100644 --- a/tools/tolua/cocos2dx_spine.ini +++ b/tools/tolua/cocos2dx_spine.ini @@ -27,7 +27,7 @@ headers = %(cocosdir)s/cocos/editor-support/spine/spine-cocos2dx.h # what classes to produce code for. You can use regular expressions here. When testing the regular # expression, it will be enclosed in "^$", like this: "^Menu*$". -classes = Skeleton SkeletonAnimation +classes = SkeletonRenderer SkeletonAnimation # what should we skip? in the format ClassName::[function function] # ClassName is a regular expression, but will be used like this: "^ClassName$" functions are also @@ -36,8 +36,9 @@ classes = Skeleton SkeletonAnimation # will apply to all class names. This is a convenience wildcard to be able to skip similar named # functions from all classes. -skip = Skeleton::[findBone findSlot getAttachment setAttachment update draw createWith.*], - SkeletonAnimation::[addAnimationState setAnimationStateData update createWith.* (s|g)etBlendFunc addAnimation getCurrent setAnimation onAnimationStateEvent] +skip = SkeletonRenderer::[findBone findSlot getAttachment setAttachment update draw createWithData (s|g)etBlendFunc], + *::[update draw drawSkeleton], + SkeletonAnimation::[setAnimationStateData createWithData (s|g)etBlendFunc addAnimation getCurrent setAnimation onAnimationStateEvent onTrackEntryEvent getState createWithFile] rename_functions = diff --git a/tools/tolua/cocos2dx_studio.ini b/tools/tolua/cocos2dx_studio.ini index 5aaf483758..86aac07dc8 100644 --- a/tools/tolua/cocos2dx_studio.ini +++ b/tools/tolua/cocos2dx_studio.ini @@ -11,22 +11,22 @@ target_namespace = ccs cpp_namespace = cocostudio android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include -android_flags = -D_SIZE_T_DEFINED_ +android_flags = -D_SIZE_T_DEFINED_ -clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include +clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include clang_flags = -nostdinc -x c++ -std=c++11 -U __SSE__ cocos_headers = -I%(cocosdir)s/external -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/editor-support -I%(cocosdir)s/cocos/platform/android cocos_flags = -DANDROID -cxxgenerator_headers = +cxxgenerator_headers = # extra arguments for clang -extra_arguments = %(android_headers)s %(clang_headers)s %(cxxgenerator_headers)s %(cocos_headers)s %(android_flags)s %(clang_flags)s %(cocos_flags)s %(extra_flags)s +extra_arguments = %(android_headers)s %(clang_headers)s %(cxxgenerator_headers)s %(cocos_headers)s %(android_flags)s %(clang_flags)s %(cocos_flags)s %(extra_flags)s # what headers to parse -headers = %(cocosdir)s/cocos/editor-support/cocostudio/CocoStudio.h +headers = %(cocosdir)s/cocos/editor-support/cocostudio/CocoStudio.h # what classes to produce code for. You can use regular expressions here. When testing the regular # expression, it will be enclosed in "^$", like this: "^Menu*$". @@ -52,8 +52,7 @@ skip = *::[^visit$ copyWith.* onEnter.* onExit.* ^description$ getObjectType .* ActionNode::[initWithDictionary], ActionObject::[initWithDictionary initWithBinary], BaseData::[copy subtract], - NodeReader::[getInstance], - ActionTimelineCache::[getInstance] + ActionTimelineCache::[getInstance loadActionTimelineFromXML] rename_functions = GUIReader::[shareReader=getInstance purgeGUIReader=destroyInstance], ActionManagerEx::[shareManager=getInstance purgeActionManager=destroyInstance], @@ -63,10 +62,10 @@ rename_functions = GUIReader::[shareReader=getInstance purgeGUIReader=destroyIn rename_classes = # for all class names, should we remove something when registering in the target VM? -remove_prefix = +remove_prefix = # classes for which there will be no "parent" lookup -classes_have_no_parents = +classes_have_no_parents = # base classes which will be skipped when their sub-classes found them. base_classes_to_skip = @@ -77,4 +76,3 @@ abstract_classes = ArmatureDataManager ComAttribute ComRender ComAudio ActionMan # Determining whether to use script object(js object) to control the lifecycle of native(cpp) object or the other way around. Supported values are 'yes' or 'no'. script_control_cpp = no -