diff --git a/cocos/3d/CCBundle3D.cpp b/cocos/3d/CCBundle3D.cpp index 22b4346aee..247cf35e29 100644 --- a/cocos/3d/CCBundle3D.cpp +++ b/cocos/3d/CCBundle3D.cpp @@ -2111,6 +2111,29 @@ Reference* Bundle3D::seekToFirstType(unsigned int type, const std::string& id) return nullptr; } +std::vector Bundle3D::getTrianglesList(const std::string& path) +{ + std::vector trianglesList; + auto bundle = Bundle3D::createBundle(); + if (!bundle->load(path)) + { + Bundle3D::destroyBundle(bundle); + return trianglesList; + } + MeshDatas meshs; + bundle->loadMeshDatas(meshs); + Bundle3D::destroyBundle(bundle); + for (auto iter : meshs.meshDatas){ + int preVertexSize = iter->getPerVertexSize() / sizeof(float); + for (auto indexArray : iter->subMeshIndices){ + for (auto i : indexArray){ + trianglesList.push_back(Vec3(iter->vertex[i * preVertexSize], iter->vertex[i * preVertexSize + 1], iter->vertex[i * preVertexSize + 2])); + } + } + } + return trianglesList; +} + Bundle3D::Bundle3D() : _modelPath(""), _path(""), diff --git a/cocos/3d/CCBundle3D.h b/cocos/3d/CCBundle3D.h index f9927eeac3..60d681931a 100644 --- a/cocos/3d/CCBundle3D.h +++ b/cocos/3d/CCBundle3D.h @@ -85,6 +85,12 @@ public: //since 3.3, to support reskin virtual bool loadMaterials(MaterialDatas& materialdatas); + /** + * load triangle list + * @param path the file path to load + */ + static std::vector getTrianglesList(const std::string& path); + //load .obj file static bool loadObj(MeshDatas& meshdatas, MaterialDatas& materialdatas, NodeDatas& nodedatas, const std::string& fullPath, const char* mtl_basepath = nullptr); diff --git a/cocos/3d/CCTerrain.cpp b/cocos/3d/CCTerrain.cpp index a0236d4d5f..d8c9b13a4f 100644 --- a/cocos/3d/CCTerrain.cpp +++ b/cocos/3d/CCTerrain.cpp @@ -262,9 +262,9 @@ bool Terrain::initHeightMap(const char * heightMap) Terrain::Terrain() { _alphaMap = nullptr; -#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) _customCommand.setTransparent(false); _customCommand.set3D(true); +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) auto _backToForegroundListener = EventListenerCustom::create(EVENT_RENDERER_RECREATED, [this](EventCustom*) { diff --git a/cocos/base/CCData.h b/cocos/base/CCData.h index aff127d6de..6666f7e7e2 100644 --- a/cocos/base/CCData.h +++ b/cocos/base/CCData.h @@ -40,6 +40,8 @@ NS_CC_BEGIN class CC_DLL Data { + friend class Properties; + public: /** * This parameter is defined for convenient reference if a null Data object is needed. diff --git a/cocos/base/CCProperties.cpp b/cocos/base/CCProperties.cpp index 56c5fc79af..46c4710660 100644 --- a/cocos/base/CCProperties.cpp +++ b/cocos/base/CCProperties.cpp @@ -21,6 +21,9 @@ #include "CCProperties.h" + +#include + #include "platform/CCPlatformMacros.h" #include "platform/CCFileUtils.h" #include "math/Vec2.h" @@ -32,37 +35,8 @@ #include "deprecated/CCString.h" - USING_NS_CC; -static void printProperties(Properties* properties) -{ - // Print the name and ID of the current namespace. - const char* spacename = properties->getNamespace(); - const char* id = properties->getId(); - CCLOG("Namespace: %s ID: %s\n{", spacename, id); - - // Print all properties in this namespace. - const char* name = properties->getNextProperty(); - const char* value = NULL; - while (name != NULL) - { - value = properties->getString(name); - CCLOG("%s = %s", name, value); - name = properties->getNextProperty(); - } - - // Print the properties of every namespace within this one. - Properties* space = properties->getNextNamespace(); - while (space != NULL) - { - printProperties(space); - space = properties->getNextNamespace(); - } - - CCLOG("}\n"); -} - // Utility functions (shared with SceneLoader). /** @script{ignore} */ void calculateNamespacePath(const std::string& urlString, std::string& fileString, std::vector& namespacePath); @@ -72,6 +46,7 @@ Properties* getPropertiesFromNamespacePath(Properties* properties, const std::ve Properties::Properties() : _variables(nullptr), _dirPath(nullptr), _parent(nullptr), _dataIdx(nullptr), _data(nullptr) { + _properties.reserve(32); } Properties::Properties(const Properties& copy) @@ -80,12 +55,10 @@ Properties::Properties(const Properties& copy) _dataIdx(copy._dataIdx), _data(copy._data) { setDirectoryPath(copy._dirPath); - _namespaces = std::vector(); - std::vector::const_iterator it; - for (it = copy._namespaces.begin(); it < copy._namespaces.end(); ++it) + + for (const auto space: copy._namespaces) { - GP_ASSERT(*it); - _namespaces.push_back(new (std::nothrow) Properties(**it)); + _namespaces.push_back(new (std::nothrow) Properties(*space)); } rewind(); } @@ -112,7 +85,7 @@ Properties::Properties(Data* data, ssize_t* dataIdx, const std::string& name, co rewind(); } -Properties* Properties::create(const std::string& url) +Properties* Properties::createWithoutAutorelease(const std::string& url) { if (url.size() == 0) { @@ -214,7 +187,7 @@ void Properties::readProperties() else { trimWhiteSpace(line); - const int len = strlen(line); + const auto len = strlen(line); if (len >= 2 && strncmp(line + (len - 2), "*/", 2) == 0) comment = false; } @@ -441,7 +414,7 @@ signed char Properties::readChar() { if (eof()) return EOF; - return _data->getBytes()[(*_dataIdx)++]; + return _data->_bytes[(*_dataIdx)++]; } char* Properties::readLine(char* output, int num) @@ -451,15 +424,20 @@ char* Properties::readLine(char* output, int num) if (eof()) return nullptr; - auto c = readChar(); - while (c!=EOF && c!='\n' && idx-1_size && _data->_bytes[dataIdx]!='\n' && idx-1_bytes[*_dataIdx], idx); output[idx] = '\0'; + // restore value + *_dataIdx = dataIdx; + return output; } @@ -472,7 +450,7 @@ bool Properties::seekFromCurrent(int offset) bool Properties::eof() { - return (*_dataIdx >= _data->getSize()); + return (*_dataIdx >= _data->_size); } void Properties::skipWhiteSpace() @@ -563,10 +541,9 @@ void Properties::resolveInheritance(const char* id) derived->_properties = parent->_properties; derived->_namespaces = std::vector(); std::vector::const_iterator itt; - for (itt = parent->_namespaces.begin(); itt < parent->_namespaces.end(); ++itt) + for (const auto space: parent->_namespaces) { - GP_ASSERT(*itt); - derived->_namespaces.push_back(new (std::nothrow) Properties(**itt)); + derived->_namespaces.push_back(new (std::nothrow) Properties(*space)); } derived->rewind(); @@ -595,7 +572,7 @@ void Properties::resolveInheritance(const char* id) void Properties::mergeWith(Properties* overrides) { - GP_ASSERT(overrides); + CCASSERT(overrides, "Invalid overrides"); // Overwrite or add each property found in child. overrides->rewind(); @@ -685,7 +662,7 @@ void Properties::rewind() Properties* Properties::getNamespace(const char* id, bool searchNames, bool recurse) const { - GP_ASSERT(id); + CCASSERT(id, "invalid id"); for (std::vector::const_iterator it = _namespaces.begin(); it < _namespaces.end(); ++it) { @@ -720,7 +697,7 @@ bool Properties::exists(const char* name) const if (name == NULL) return false; - for (std::list::const_iterator itr = _properties.begin(); itr != _properties.end(); ++itr) + for (std::vector::const_iterator itr = _properties.begin(); itr != _properties.end(); ++itr) { if (itr->name == name) return true; @@ -731,7 +708,7 @@ bool Properties::exists(const char* name) const static const bool isStringNumeric(const char* str) { - GP_ASSERT(str); + CCASSERT(str, "invalid str"); // The first character may be '-' if (*str == '-') @@ -810,7 +787,7 @@ const char* Properties::getString(const char* name, const char* defaultValue) co return getVariable(variable, defaultValue); } - for (std::list::const_iterator itr = _properties.begin(); itr != _properties.end(); ++itr) + for (std::vector::const_iterator itr = _properties.begin(); itr != _properties.end(); ++itr) { if (itr->name == name) { @@ -844,7 +821,7 @@ bool Properties::setString(const char* name, const char* value) { if (name) { - for (std::list::iterator itr = _properties.begin(); itr != _properties.end(); ++itr) + for (std::vector::iterator itr = _properties.begin(); itr != _properties.end(); ++itr) { if (itr->name == name) { @@ -939,7 +916,7 @@ long Properties::getLong(const char* name) const bool Properties::getMat4(const char* name, Mat4* out) const { - GP_ASSERT(out); + CCASSERT(out, "Invalid out"); const char* valueString = getString(name); if (valueString) @@ -997,7 +974,7 @@ bool Properties::getColor(const char* name, Vec4* out) const bool Properties::getPath(const char* name, std::string* path) const { - GP_ASSERT(name && path); + CCASSERT(name && path, "Invalid name or path"); const char* valueString = getString(name); if (valueString) { @@ -1052,7 +1029,7 @@ const char* Properties::getVariable(const char* name, const char* defaultValue) void Properties::setVariable(const char* name, const char* value) { - GP_ASSERT(name); + CCASSERT(name, "Invalid name"); Property* prop = NULL; @@ -1102,7 +1079,7 @@ Properties* Properties::clone() for (size_t i = 0, count = _namespaces.size(); i < count; i++) { - GP_ASSERT(_namespaces[i]); + CCASSERT(_namespaces[i], "Invalid namespace"); Properties* child = _namespaces[i]->clone(); p->_namespaces.push_back(child); child->_parent = p; diff --git a/cocos/base/CCProperties.h b/cocos/base/CCProperties.h index 398598a997..70cd2e48fb 100644 --- a/cocos/base/CCProperties.h +++ b/cocos/base/CCProperties.h @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include "renderer/CCTexture2D.h" #include "platform/CCPlatformMacros.h" @@ -105,7 +105,7 @@ class Data; @verbatim // Create the top-level Properties object. - Properties* properties = Properties::create("example.properties"); + Properties* properties = Properties::createWithoutAutorelease("example.properties"); // Retrieve the "spriteTexture" namespace. Properties* spriteTexture = properties->getNamespace("spriteTexture"); @@ -187,7 +187,7 @@ public: * @return The created Properties or NULL if there was an error. * @script{create} */ - static Properties* create(const std::string& url); + static Properties* createWithoutAutorelease(const std::string& url); /** * Destructor. @@ -579,7 +579,7 @@ private: bool seekFromCurrent(int offset); bool eof(); - // Called after create(); copies info from parents into derived namespaces. + // Called after createWithoutAutorelease(); copies info from parents into derived namespaces. void resolveInheritance(const char* id = NULL); // Called by resolveInheritance(). @@ -602,8 +602,8 @@ private: std::string _namespace; std::string _id; std::string _parentID; - std::list _properties; - std::list::iterator _propertiesItr; + std::vector _properties; + std::vector::iterator _propertiesItr; std::vector _namespaces; std::vector::const_iterator _namespacesItr; std::vector* _variables; diff --git a/cocos/platform/CCFileUtils.cpp b/cocos/platform/CCFileUtils.cpp index 7dd095f1cf..e1599b8082 100644 --- a/cocos/platform/CCFileUtils.cpp +++ b/cocos/platform/CCFileUtils.cpp @@ -561,12 +561,13 @@ static Data getData(const std::string& filename, bool forString) mode = "rt"; else mode = "rb"; - + + auto fileutils = FileUtils::getInstance(); do { // Read the file from hardware - std::string fullPath = FileUtils::getInstance()->fullPathForFilename(filename); - FILE *fp = fopen(FileUtils::getInstance()->getSuitableFOpen(fullPath).c_str(), mode); + std::string fullPath = fileutils->fullPathForFilename(filename); + FILE *fp = fopen(fileutils->getSuitableFOpen(fullPath).c_str(), mode); CC_BREAK_IF(!fp); fseek(fp,0,SEEK_END); size = ftell(fp); @@ -593,9 +594,7 @@ static Data getData(const std::string& filename, bool forString) if (nullptr == buffer || 0 == readsize) { - std::string msg = "Get data from file("; - msg.append(filename).append(") failed!"); - CCLOG("%s", msg.c_str()); + CCLOG("Get data from file %s failed", filename.c_str()); } else { diff --git a/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxLocalStorage.java b/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxLocalStorage.java index 11eab6f64a..d2dc8e7c04 100644 --- a/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxLocalStorage.java +++ b/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxLocalStorage.java @@ -101,6 +101,15 @@ public class Cocos2dxLocalStorage { } } + public static void clear() { + try { + String sql = "delete from "+TABLE_NAME; + mDatabase.execSQL(sql); + } catch (Exception e) { + e.printStackTrace(); + } + } + /** * This creates/opens the database. diff --git a/cocos/renderer/CCMaterial.cpp b/cocos/renderer/CCMaterial.cpp index 33842cce8a..d81d915dab 100644 --- a/cocos/renderer/CCMaterial.cpp +++ b/cocos/renderer/CCMaterial.cpp @@ -109,10 +109,13 @@ bool Material::initWithFile(const std::string& validfilename) char* bytes = (char*)data.getBytes(); bytes[data.getSize()-1]='\0'; - Properties* properties = Properties::create(validfilename); + // Warning: properties is not a "Ref" object, must be manually deleted + Properties* properties = Properties::createWithoutAutorelease(validfilename); // get the first material parseProperties((strlen(properties->getNamespace()) > 0) ? properties : properties->getNextNamespace()); + + CC_SAFE_DELETE(properties); return true; } diff --git a/cocos/scripting/js-bindings/auto/api/jsb_cocos2dx_auto_api.js b/cocos/scripting/js-bindings/auto/api/jsb_cocos2dx_auto_api.js index 568d185974..9d77773463 100644 --- a/cocos/scripting/js-bindings/auto/api/jsb_cocos2dx_auto_api.js +++ b/cocos/scripting/js-bindings/auto/api/jsb_cocos2dx_auto_api.js @@ -20069,6 +20069,78 @@ TextFieldTTF : function ( }; +/** + * @class ParallaxNode + */ +cc.ParallaxNode = { + +/** + * @method getParallaxArray +* @return {cc._ccArray|cc._ccArray} +*/ +getParallaxArray : function( +) +{ + return cc._ccArray; +}, + +/** + * @method addChild + * @param {cc.Node} arg0 + * @param {int} arg1 + * @param {vec2_object} arg2 + * @param {vec2_object} arg3 + */ +addChild : function ( +node, +int, +vec2, +vec2 +) +{ +}, + +/** + * @method removeAllChildrenWithCleanup + * @param {bool} arg0 + */ +removeAllChildrenWithCleanup : function ( +bool +) +{ +}, + +/** + * @method setParallaxArray + * @param {cc._ccArray} arg0 + */ +setParallaxArray : function ( +_ccarray +) +{ +}, + +/** + * @method create + * @return {cc.ParallaxNode} + */ +create : function ( +) +{ + return cc.ParallaxNode; +}, + +/** + * @method ParallaxNode + * @constructor + */ +ParallaxNode : function ( +) +{ +}, + +}; + /** * @class TMXObjectGroup */ @@ -20634,7 +20706,7 @@ cc.TMXLayer = { * @method getTileGIDAt * @param {vec2_object} arg0 * @param {cc.TMXTileFlags_} arg1 - * @return {int} + * @return {unsigned int} */ getTileGIDAt : function ( vec2, @@ -20666,6 +20738,14 @@ int { }, +/** + * @method releaseMap + */ +releaseMap : function ( +) +{ +}, + /** * @method setTiles * @param {unsigned int} arg0 @@ -20737,13 +20817,19 @@ vec2 }, /** - * @method getProperties -* @return {map_object|map_object} -*/ -getProperties : function( + * @method initWithTilesetInfo + * @param {cc.TMXTilesetInfo} arg0 + * @param {cc.TMXLayerInfo} arg1 + * @param {cc.TMXMapInfo} arg2 + * @return {bool} + */ +initWithTilesetInfo : function ( +tmxtilesetinfo, +tmxlayerinfo, +map ) { - return map_object; + return false; }, /** @@ -20754,23 +20840,9 @@ setupTiles : function ( { }, -/** - * @method setupTileSprite - * @param {cc.Sprite} arg0 - * @param {vec2_object} arg1 - * @param {int} arg2 - */ -setupTileSprite : function ( -sprite, -vec2, -int -) -{ -}, - /** * @method setTileGID -* @param {int|int} int +* @param {unsigned int|unsigned int} int * @param {vec2_object|vec2_object} vec2 * @param {cc.TMXTileFlags_} tmxtileflags_ */ @@ -20844,6 +20916,16 @@ getTileSet : function ( return cc.TMXTilesetInfo; }, +/** + * @method getProperties +* @return {map_object|map_object} +*/ +getProperties : function( +) +{ + return map_object; +}, + /** * @method getTileAt * @param {vec2_object} arg0 @@ -20861,7 +20943,7 @@ vec2 * @param {cc.TMXTilesetInfo} arg0 * @param {cc.TMXLayerInfo} arg1 * @param {cc.TMXMapInfo} arg2 - * @return {cc.experimental::TMXLayer} + * @return {cc.TMXLayer} */ create : function ( tmxtilesetinfo, @@ -20869,7 +20951,7 @@ tmxlayerinfo, map ) { - return cc.experimental::TMXLayer; + return cc.TMXLayer; }, /** @@ -20942,6 +21024,32 @@ getObjectGroups : function( return new Array(); }, +/** + * @method initWithXML + * @param {String} arg0 + * @param {String} arg1 + * @return {bool} + */ +initWithXML : function ( +str, +str +) +{ + return false; +}, + +/** + * @method initWithTMXFile + * @param {String} arg0 + * @return {bool} + */ +initWithTMXFile : function ( +str +) +{ + return false; +}, + /** * @method getTileSize * @return {size_object} @@ -20974,14 +21082,16 @@ getProperties : function ( /** * @method getPropertiesForGID - * @param {int} arg0 - * @return {cc.Value} - */ -getPropertiesForGID : function ( -int +* @param {int|int} int +* @param {cc.Value} value +* @return {bool|cc.Value} +*/ +getPropertiesForGID : function( +int, +value ) { - return cc.Value; + return false; }, /** @@ -21007,13 +21117,13 @@ map /** * @method getLayer * @param {String} arg0 - * @return {cc.experimental::TMXLayer} + * @return {cc.TMXLayer} */ getLayer : function ( str ) { - return cc.experimental::TMXLayer; + return cc.TMXLayer; }, /** @@ -21039,97 +21149,34 @@ int /** * @method create * @param {String} arg0 - * @return {cc.experimental::TMXTiledMap} + * @return {cc.TMXTiledMap} */ create : function ( str ) { - return cc.experimental::TMXTiledMap; + return cc.TMXTiledMap; }, /** * @method createWithXML * @param {String} arg0 * @param {String} arg1 - * @return {cc.experimental::TMXTiledMap} + * @return {cc.TMXTiledMap} */ createWithXML : function ( str, str ) { - return cc.experimental::TMXTiledMap; -}, - -}; - -/** - * @class ParallaxNode - */ -cc.ParallaxNode = { - -/** - * @method getParallaxArray -* @return {cc._ccArray|cc._ccArray} -*/ -getParallaxArray : function( -) -{ - return cc._ccArray; + return cc.TMXTiledMap; }, /** - * @method addChild - * @param {cc.Node} arg0 - * @param {int} arg1 - * @param {vec2_object} arg2 - * @param {vec2_object} arg3 - */ -addChild : function ( -node, -int, -vec2, -vec2 -) -{ -}, - -/** - * @method removeAllChildrenWithCleanup - * @param {bool} arg0 - */ -removeAllChildrenWithCleanup : function ( -bool -) -{ -}, - -/** - * @method setParallaxArray - * @param {cc._ccArray} arg0 - */ -setParallaxArray : function ( -_ccarray -) -{ -}, - -/** - * @method create - * @return {cc.ParallaxNode} - */ -create : function ( -) -{ - return cc.ParallaxNode; -}, - -/** - * @method ParallaxNode + * @method TMXTiledMap * @constructor */ -ParallaxNode : function ( +TMXTiledMap : function ( ) { }, diff --git a/cocos/scripting/js-bindings/auto/jsb_cocos2dx_auto.cpp b/cocos/scripting/js-bindings/auto/jsb_cocos2dx_auto.cpp index 13e85106cc..c6ca7f4961 100644 --- a/cocos/scripting/js-bindings/auto/jsb_cocos2dx_auto.cpp +++ b/cocos/scripting/js-bindings/auto/jsb_cocos2dx_auto.cpp @@ -61711,6 +61711,250 @@ void js_register_cocos2dx_TextFieldTTF(JSContext *cx, JS::HandleObject global) { } } +JSClass *jsb_cocos2d_ParallaxNode_class; +JSObject *jsb_cocos2d_ParallaxNode_prototype; + +bool js_cocos2dx_ParallaxNode_getParallaxArray(JSContext *cx, uint32_t argc, jsval *vp) +{ + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + bool ok = true; + + JS::RootedObject obj(cx); + cocos2d::ParallaxNode* cobj = NULL; + obj = args.thisv().toObjectOrNull(); + js_proxy_t *proxy = jsb_get_js_proxy(obj); + cobj = (cocos2d::ParallaxNode *)(proxy ? proxy->ptr : NULL); + JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_ParallaxNode_getParallaxArray : Invalid Native Object"); + do { + if (argc == 0) { + const cocos2d::_ccArray* ret = cobj->getParallaxArray(); + jsval jsret = JSVAL_NULL; + #pragma warning NO CONVERSION FROM NATIVE FOR _ccArray*; + args.rval().set(jsret); + return true; + } + } while(0); + + do { + if (argc == 0) { + cocos2d::_ccArray* ret = cobj->getParallaxArray(); + jsval jsret = JSVAL_NULL; + #pragma warning NO CONVERSION FROM NATIVE FOR _ccArray*; + args.rval().set(jsret); + return true; + } + } while(0); + + JS_ReportError(cx, "js_cocos2dx_ParallaxNode_getParallaxArray : wrong number of arguments"); + return false; +} +bool js_cocos2dx_ParallaxNode_addChild(JSContext *cx, uint32_t argc, jsval *vp) +{ + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + bool ok = true; + JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); + js_proxy_t *proxy = jsb_get_js_proxy(obj); + cocos2d::ParallaxNode* cobj = (cocos2d::ParallaxNode *)(proxy ? proxy->ptr : NULL); + JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_ParallaxNode_addChild : Invalid Native Object"); + if (argc == 4) { + cocos2d::Node* arg0; + int arg1; + cocos2d::Vec2 arg2; + cocos2d::Vec2 arg3; + do { + if (!args.get(0).isObject()) { ok = false; break; } + js_proxy_t *jsProxy; + JSObject *tmpObj = args.get(0).toObjectOrNull(); + jsProxy = jsb_get_js_proxy(tmpObj); + arg0 = (cocos2d::Node*)(jsProxy ? jsProxy->ptr : NULL); + JSB_PRECONDITION2( arg0, cx, false, "Invalid Native Object"); + } while (0); + ok &= jsval_to_int32(cx, args.get(1), (int32_t *)&arg1); + ok &= jsval_to_vector2(cx, args.get(2), &arg2); + ok &= jsval_to_vector2(cx, args.get(3), &arg3); + JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_ParallaxNode_addChild : Error processing arguments"); + cobj->addChild(arg0, arg1, arg2, arg3); + args.rval().setUndefined(); + return true; + } + + JS_ReportError(cx, "js_cocos2dx_ParallaxNode_addChild : wrong number of arguments: %d, was expecting %d", argc, 4); + return false; +} +bool js_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup(JSContext *cx, uint32_t argc, jsval *vp) +{ + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + bool ok = true; + JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); + js_proxy_t *proxy = jsb_get_js_proxy(obj); + cocos2d::ParallaxNode* cobj = (cocos2d::ParallaxNode *)(proxy ? proxy->ptr : NULL); + JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup : Invalid Native Object"); + if (argc == 1) { + bool arg0; + arg0 = JS::ToBoolean(args.get(0)); + JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup : Error processing arguments"); + cobj->removeAllChildrenWithCleanup(arg0); + args.rval().setUndefined(); + return true; + } + + JS_ReportError(cx, "js_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup : wrong number of arguments: %d, was expecting %d", argc, 1); + return false; +} +bool js_cocos2dx_ParallaxNode_setParallaxArray(JSContext *cx, uint32_t argc, jsval *vp) +{ + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + bool ok = true; + JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); + js_proxy_t *proxy = jsb_get_js_proxy(obj); + cocos2d::ParallaxNode* cobj = (cocos2d::ParallaxNode *)(proxy ? proxy->ptr : NULL); + JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_ParallaxNode_setParallaxArray : Invalid Native Object"); + if (argc == 1) { + cocos2d::_ccArray* arg0; + #pragma warning NO CONVERSION TO NATIVE FOR _ccArray* + ok = false; + JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_ParallaxNode_setParallaxArray : Error processing arguments"); + cobj->setParallaxArray(arg0); + args.rval().setUndefined(); + return true; + } + + JS_ReportError(cx, "js_cocos2dx_ParallaxNode_setParallaxArray : wrong number of arguments: %d, was expecting %d", argc, 1); + return false; +} +bool js_cocos2dx_ParallaxNode_create(JSContext *cx, uint32_t argc, jsval *vp) +{ + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + if (argc == 0) { + cocos2d::ParallaxNode* ret = cocos2d::ParallaxNode::create(); + jsval jsret = JSVAL_NULL; + do { + if (ret) { + js_proxy_t *jsProxy = js_get_or_create_proxy(cx, (cocos2d::ParallaxNode*)ret); + jsret = OBJECT_TO_JSVAL(jsProxy->obj); + } else { + jsret = JSVAL_NULL; + } + } while (0); + args.rval().set(jsret); + return true; + } + JS_ReportError(cx, "js_cocos2dx_ParallaxNode_create : wrong number of arguments"); + return false; +} + +bool js_cocos2dx_ParallaxNode_constructor(JSContext *cx, uint32_t argc, jsval *vp) +{ + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + bool ok = true; + cocos2d::ParallaxNode* cobj = new (std::nothrow) cocos2d::ParallaxNode(); + cocos2d::Ref *_ccobj = dynamic_cast(cobj); + if (_ccobj) { + _ccobj->autorelease(); + } + TypeTest t; + js_type_class_t *typeClass = nullptr; + std::string typeName = t.s_name(); + auto typeMapIter = _js_global_type_map.find(typeName); + CCASSERT(typeMapIter != _js_global_type_map.end(), "Can't find the class type!"); + typeClass = typeMapIter->second; + CCASSERT(typeClass, "The value is null."); + // JSObject *obj = JS_NewObject(cx, typeClass->jsclass, typeClass->proto, typeClass->parentProto); + JS::RootedObject proto(cx, typeClass->proto.get()); + JS::RootedObject parent(cx, typeClass->parentProto.get()); + JS::RootedObject obj(cx, JS_NewObject(cx, typeClass->jsclass, proto, parent)); + args.rval().set(OBJECT_TO_JSVAL(obj)); + // link the native object with the javascript object + js_proxy_t* p = jsb_new_proxy(cobj, obj); + AddNamedObjectRoot(cx, &p->obj, "cocos2d::ParallaxNode"); + if (JS_HasProperty(cx, obj, "_ctor", &ok) && ok) + ScriptingCore::getInstance()->executeFunctionWithOwner(OBJECT_TO_JSVAL(obj), "_ctor", args); + return true; +} + + +extern JSObject *jsb_cocos2d_Node_prototype; + +void js_cocos2d_ParallaxNode_finalize(JSFreeOp *fop, JSObject *obj) { + CCLOGINFO("jsbindings: finalizing JS object %p (ParallaxNode)", obj); +} + +static bool js_cocos2d_ParallaxNode_ctor(JSContext *cx, uint32_t argc, jsval *vp) +{ + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); + cocos2d::ParallaxNode *nobj = new (std::nothrow) cocos2d::ParallaxNode(); + if (nobj) { + nobj->autorelease(); + } + js_proxy_t* p = jsb_new_proxy(nobj, obj); + AddNamedObjectRoot(cx, &p->obj, "cocos2d::ParallaxNode"); + bool isFound = false; + if (JS_HasProperty(cx, obj, "_ctor", &isFound) && isFound) + ScriptingCore::getInstance()->executeFunctionWithOwner(OBJECT_TO_JSVAL(obj), "_ctor", args); + args.rval().setUndefined(); + return true; +} +void js_register_cocos2dx_ParallaxNode(JSContext *cx, JS::HandleObject global) { + jsb_cocos2d_ParallaxNode_class = (JSClass *)calloc(1, sizeof(JSClass)); + jsb_cocos2d_ParallaxNode_class->name = "ParallaxNode"; + jsb_cocos2d_ParallaxNode_class->addProperty = JS_PropertyStub; + jsb_cocos2d_ParallaxNode_class->delProperty = JS_DeletePropertyStub; + jsb_cocos2d_ParallaxNode_class->getProperty = JS_PropertyStub; + jsb_cocos2d_ParallaxNode_class->setProperty = JS_StrictPropertyStub; + jsb_cocos2d_ParallaxNode_class->enumerate = JS_EnumerateStub; + jsb_cocos2d_ParallaxNode_class->resolve = JS_ResolveStub; + jsb_cocos2d_ParallaxNode_class->convert = JS_ConvertStub; + jsb_cocos2d_ParallaxNode_class->finalize = js_cocos2d_ParallaxNode_finalize; + jsb_cocos2d_ParallaxNode_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); + + static JSPropertySpec properties[] = { + JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_PS_END + }; + + static JSFunctionSpec funcs[] = { + JS_FN("getParallaxArray", js_cocos2dx_ParallaxNode_getParallaxArray, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("addChild", js_cocos2dx_ParallaxNode_addChild, 4, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("removeAllChildrenWithCleanup", js_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("setParallaxArray", js_cocos2dx_ParallaxNode_setParallaxArray, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("ctor", js_cocos2d_ParallaxNode_ctor, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FS_END + }; + + static JSFunctionSpec st_funcs[] = { + JS_FN("create", js_cocos2dx_ParallaxNode_create, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FS_END + }; + + jsb_cocos2d_ParallaxNode_prototype = JS_InitClass( + cx, global, + JS::RootedObject(cx, jsb_cocos2d_Node_prototype), + jsb_cocos2d_ParallaxNode_class, + js_cocos2dx_ParallaxNode_constructor, 0, // constructor + properties, + funcs, + NULL, // no static properties + st_funcs); + // make the class enumerable in the registered namespace +// bool found; +//FIXME: Removed in Firefox v27 +// JS_SetPropertyAttributes(cx, global, "ParallaxNode", JSPROP_ENUMERATE | JSPROP_READONLY, &found); + + // add the proto and JSClass to the type->js info hash table + TypeTest t; + js_type_class_t *p; + std::string typeName = t.s_name(); + if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) + { + p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); + p->jsclass = jsb_cocos2d_ParallaxNode_class; + p->proto = jsb_cocos2d_ParallaxNode_prototype; + p->parentProto = jsb_cocos2d_Node_prototype; + _js_global_type_map.insert(std::make_pair(typeName, p)); + } +} + JSClass *jsb_cocos2d_TMXObjectGroup_class; JSObject *jsb_cocos2d_TMXObjectGroup_prototype; @@ -63163,8 +63407,8 @@ void js_register_cocos2dx_TMXMapInfo(JSContext *cx, JS::HandleObject global) { } } -JSClass *jsb_cocos2d_experimental_TMXLayer_class; -JSObject *jsb_cocos2d_experimental_TMXLayer_prototype; +JSClass *jsb_cocos2d_TMXLayer_class; +JSObject *jsb_cocos2d_TMXLayer_prototype; bool js_cocos2dx_TMXLayer_getTileGIDAt(JSContext *cx, uint32_t argc, jsval *vp) { @@ -63172,15 +63416,15 @@ bool js_cocos2dx_TMXLayer_getTileGIDAt(JSContext *cx, uint32_t argc, jsval *vp) bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_getTileGIDAt : Invalid Native Object"); if (argc == 1) { cocos2d::Vec2 arg0; ok &= jsval_to_vector2(cx, args.get(0), &arg0); JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_TMXLayer_getTileGIDAt : Error processing arguments"); - int ret = cobj->getTileGIDAt(arg0); + unsigned int ret = cobj->getTileGIDAt(arg0); jsval jsret = JSVAL_NULL; - jsret = int32_to_jsval(cx, ret); + jsret = uint32_to_jsval(cx, ret); args.rval().set(jsret); return true; } @@ -63191,9 +63435,9 @@ bool js_cocos2dx_TMXLayer_getTileGIDAt(JSContext *cx, uint32_t argc, jsval *vp) #pragma warning NO CONVERSION TO NATIVE FOR TMXTileFlags_* ok = false; JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_TMXLayer_getTileGIDAt : Error processing arguments"); - int ret = cobj->getTileGIDAt(arg0, arg1); + unsigned int ret = cobj->getTileGIDAt(arg0, arg1); jsval jsret = JSVAL_NULL; - jsret = int32_to_jsval(cx, ret); + jsret = uint32_to_jsval(cx, ret); args.rval().set(jsret); return true; } @@ -63207,7 +63451,7 @@ bool js_cocos2dx_TMXLayer_getPositionAt(JSContext *cx, uint32_t argc, jsval *vp) bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_getPositionAt : Invalid Native Object"); if (argc == 1) { cocos2d::Vec2 arg0; @@ -63229,7 +63473,7 @@ bool js_cocos2dx_TMXLayer_setLayerOrientation(JSContext *cx, uint32_t argc, jsva bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_setLayerOrientation : Invalid Native Object"); if (argc == 1) { int arg0; @@ -63243,13 +63487,29 @@ bool js_cocos2dx_TMXLayer_setLayerOrientation(JSContext *cx, uint32_t argc, jsva JS_ReportError(cx, "js_cocos2dx_TMXLayer_setLayerOrientation : wrong number of arguments: %d, was expecting %d", argc, 1); return false; } +bool js_cocos2dx_TMXLayer_releaseMap(JSContext *cx, uint32_t argc, jsval *vp) +{ + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); + js_proxy_t *proxy = jsb_get_js_proxy(obj); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); + JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_releaseMap : Invalid Native Object"); + if (argc == 0) { + cobj->releaseMap(); + args.rval().setUndefined(); + return true; + } + + JS_ReportError(cx, "js_cocos2dx_TMXLayer_releaseMap : wrong number of arguments: %d, was expecting %d", argc, 0); + return false; +} bool js_cocos2dx_TMXLayer_setTiles(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_setTiles : Invalid Native Object"); if (argc == 1) { unsigned int* arg0; @@ -63269,7 +63529,7 @@ bool js_cocos2dx_TMXLayer_getLayerSize(JSContext *cx, uint32_t argc, jsval *vp) JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_getLayerSize : Invalid Native Object"); if (argc == 0) { const cocos2d::Size& ret = cobj->getLayerSize(); @@ -63288,7 +63548,7 @@ bool js_cocos2dx_TMXLayer_setMapTileSize(JSContext *cx, uint32_t argc, jsval *vp bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_setMapTileSize : Invalid Native Object"); if (argc == 1) { cocos2d::Size arg0; @@ -63307,7 +63567,7 @@ bool js_cocos2dx_TMXLayer_getLayerOrientation(JSContext *cx, uint32_t argc, jsva JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_getLayerOrientation : Invalid Native Object"); if (argc == 0) { int ret = cobj->getLayerOrientation(); @@ -63326,7 +63586,7 @@ bool js_cocos2dx_TMXLayer_setProperties(JSContext *cx, uint32_t argc, jsval *vp) bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_setProperties : Invalid Native Object"); if (argc == 1) { cocos2d::ValueMap arg0; @@ -63346,7 +63606,7 @@ bool js_cocos2dx_TMXLayer_setLayerName(JSContext *cx, uint32_t argc, jsval *vp) bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_setLayerName : Invalid Native Object"); if (argc == 1) { std::string arg0; @@ -63366,7 +63626,7 @@ bool js_cocos2dx_TMXLayer_removeTileAt(JSContext *cx, uint32_t argc, jsval *vp) bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_removeTileAt : Invalid Native Object"); if (argc == 1) { cocos2d::Vec2 arg0; @@ -63380,38 +63640,51 @@ bool js_cocos2dx_TMXLayer_removeTileAt(JSContext *cx, uint32_t argc, jsval *vp) JS_ReportError(cx, "js_cocos2dx_TMXLayer_removeTileAt : wrong number of arguments: %d, was expecting %d", argc, 1); return false; } -bool js_cocos2dx_TMXLayer_getProperties(JSContext *cx, uint32_t argc, jsval *vp) +bool js_cocos2dx_TMXLayer_initWithTilesetInfo(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); bool ok = true; - - JS::RootedObject obj(cx); - cocos2d::experimental::TMXLayer* cobj = NULL; - obj = args.thisv().toObjectOrNull(); + JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); - JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_getProperties : Invalid Native Object"); - do { - if (argc == 0) { - cocos2d::ValueMap& ret = cobj->getProperties(); - jsval jsret = JSVAL_NULL; - jsret = ccvaluemap_to_jsval(cx, ret); - args.rval().set(jsret); - return true; - } - } while(0); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); + JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_initWithTilesetInfo : Invalid Native Object"); + if (argc == 3) { + cocos2d::TMXTilesetInfo* arg0; + cocos2d::TMXLayerInfo* arg1; + cocos2d::TMXMapInfo* arg2; + do { + if (!args.get(0).isObject()) { ok = false; break; } + js_proxy_t *jsProxy; + JSObject *tmpObj = args.get(0).toObjectOrNull(); + jsProxy = jsb_get_js_proxy(tmpObj); + arg0 = (cocos2d::TMXTilesetInfo*)(jsProxy ? jsProxy->ptr : NULL); + JSB_PRECONDITION2( arg0, cx, false, "Invalid Native Object"); + } while (0); + do { + if (!args.get(1).isObject()) { ok = false; break; } + js_proxy_t *jsProxy; + JSObject *tmpObj = args.get(1).toObjectOrNull(); + jsProxy = jsb_get_js_proxy(tmpObj); + arg1 = (cocos2d::TMXLayerInfo*)(jsProxy ? jsProxy->ptr : NULL); + JSB_PRECONDITION2( arg1, cx, false, "Invalid Native Object"); + } while (0); + do { + if (!args.get(2).isObject()) { ok = false; break; } + js_proxy_t *jsProxy; + JSObject *tmpObj = args.get(2).toObjectOrNull(); + jsProxy = jsb_get_js_proxy(tmpObj); + arg2 = (cocos2d::TMXMapInfo*)(jsProxy ? jsProxy->ptr : NULL); + JSB_PRECONDITION2( arg2, cx, false, "Invalid Native Object"); + } while (0); + JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_TMXLayer_initWithTilesetInfo : Error processing arguments"); + bool ret = cobj->initWithTilesetInfo(arg0, arg1, arg2); + jsval jsret = JSVAL_NULL; + jsret = BOOLEAN_TO_JSVAL(ret); + args.rval().set(jsret); + return true; + } - do { - if (argc == 0) { - const cocos2d::ValueMap& ret = cobj->getProperties(); - jsval jsret = JSVAL_NULL; - jsret = ccvaluemap_to_jsval(cx, ret); - args.rval().set(jsret); - return true; - } - } while(0); - - JS_ReportError(cx, "js_cocos2dx_TMXLayer_getProperties : wrong number of arguments"); + JS_ReportError(cx, "js_cocos2dx_TMXLayer_initWithTilesetInfo : wrong number of arguments: %d, was expecting %d", argc, 3); return false; } bool js_cocos2dx_TMXLayer_setupTiles(JSContext *cx, uint32_t argc, jsval *vp) @@ -63419,7 +63692,7 @@ bool js_cocos2dx_TMXLayer_setupTiles(JSContext *cx, uint32_t argc, jsval *vp) JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_setupTiles : Invalid Native Object"); if (argc == 0) { cobj->setupTiles(); @@ -63430,52 +63703,21 @@ bool js_cocos2dx_TMXLayer_setupTiles(JSContext *cx, uint32_t argc, jsval *vp) JS_ReportError(cx, "js_cocos2dx_TMXLayer_setupTiles : wrong number of arguments: %d, was expecting %d", argc, 0); return false; } -bool js_cocos2dx_TMXLayer_setupTileSprite(JSContext *cx, uint32_t argc, jsval *vp) -{ - JS::CallArgs args = JS::CallArgsFromVp(argc, vp); - bool ok = true; - JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); - js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); - JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_setupTileSprite : Invalid Native Object"); - if (argc == 3) { - cocos2d::Sprite* arg0; - cocos2d::Vec2 arg1; - int arg2; - do { - if (!args.get(0).isObject()) { ok = false; break; } - js_proxy_t *jsProxy; - JSObject *tmpObj = args.get(0).toObjectOrNull(); - jsProxy = jsb_get_js_proxy(tmpObj); - arg0 = (cocos2d::Sprite*)(jsProxy ? jsProxy->ptr : NULL); - JSB_PRECONDITION2( arg0, cx, false, "Invalid Native Object"); - } while (0); - ok &= jsval_to_vector2(cx, args.get(1), &arg1); - ok &= jsval_to_int32(cx, args.get(2), (int32_t *)&arg2); - JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_TMXLayer_setupTileSprite : Error processing arguments"); - cobj->setupTileSprite(arg0, arg1, arg2); - args.rval().setUndefined(); - return true; - } - - JS_ReportError(cx, "js_cocos2dx_TMXLayer_setupTileSprite : wrong number of arguments: %d, was expecting %d", argc, 3); - return false; -} bool js_cocos2dx_TMXLayer_setTileGID(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); bool ok = true; JS::RootedObject obj(cx); - cocos2d::experimental::TMXLayer* cobj = NULL; + cocos2d::TMXLayer* cobj = NULL; obj = args.thisv().toObjectOrNull(); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_setTileGID : Invalid Native Object"); do { if (argc == 3) { - int arg0; - ok &= jsval_to_int32(cx, args.get(0), (int32_t *)&arg0); + unsigned int arg0; + ok &= jsval_to_uint32(cx, args.get(0), &arg0); if (!ok) { ok = true; break; } cocos2d::Vec2 arg1; ok &= jsval_to_vector2(cx, args.get(1), &arg1); @@ -63491,8 +63733,8 @@ bool js_cocos2dx_TMXLayer_setTileGID(JSContext *cx, uint32_t argc, jsval *vp) do { if (argc == 2) { - int arg0; - ok &= jsval_to_int32(cx, args.get(0), (int32_t *)&arg0); + unsigned int arg0; + ok &= jsval_to_uint32(cx, args.get(0), &arg0); if (!ok) { ok = true; break; } cocos2d::Vec2 arg1; ok &= jsval_to_vector2(cx, args.get(1), &arg1); @@ -63511,7 +63753,7 @@ bool js_cocos2dx_TMXLayer_getMapTileSize(JSContext *cx, uint32_t argc, jsval *vp JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_getMapTileSize : Invalid Native Object"); if (argc == 0) { const cocos2d::Size& ret = cobj->getMapTileSize(); @@ -63530,7 +63772,7 @@ bool js_cocos2dx_TMXLayer_getProperty(JSContext *cx, uint32_t argc, jsval *vp) bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_getProperty : Invalid Native Object"); if (argc == 1) { std::string arg0; @@ -63552,7 +63794,7 @@ bool js_cocos2dx_TMXLayer_setLayerSize(JSContext *cx, uint32_t argc, jsval *vp) bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_setLayerSize : Invalid Native Object"); if (argc == 1) { cocos2d::Size arg0; @@ -63571,7 +63813,7 @@ bool js_cocos2dx_TMXLayer_getLayerName(JSContext *cx, uint32_t argc, jsval *vp) JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_getLayerName : Invalid Native Object"); if (argc == 0) { const std::string& ret = cobj->getLayerName(); @@ -63590,7 +63832,7 @@ bool js_cocos2dx_TMXLayer_setTileSet(JSContext *cx, uint32_t argc, jsval *vp) bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_setTileSet : Invalid Native Object"); if (argc == 1) { cocos2d::TMXTilesetInfo* arg0; @@ -63616,7 +63858,7 @@ bool js_cocos2dx_TMXLayer_getTileSet(JSContext *cx, uint32_t argc, jsval *vp) JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_getTileSet : Invalid Native Object"); if (argc == 0) { cocos2d::TMXTilesetInfo* ret = cobj->getTileSet(); @@ -63636,13 +63878,47 @@ bool js_cocos2dx_TMXLayer_getTileSet(JSContext *cx, uint32_t argc, jsval *vp) JS_ReportError(cx, "js_cocos2dx_TMXLayer_getTileSet : wrong number of arguments: %d, was expecting %d", argc, 0); return false; } +bool js_cocos2dx_TMXLayer_getProperties(JSContext *cx, uint32_t argc, jsval *vp) +{ + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + bool ok = true; + + JS::RootedObject obj(cx); + cocos2d::TMXLayer* cobj = NULL; + obj = args.thisv().toObjectOrNull(); + js_proxy_t *proxy = jsb_get_js_proxy(obj); + cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); + JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_getProperties : Invalid Native Object"); + do { + if (argc == 0) { + cocos2d::ValueMap& ret = cobj->getProperties(); + jsval jsret = JSVAL_NULL; + jsret = ccvaluemap_to_jsval(cx, ret); + args.rval().set(jsret); + return true; + } + } while(0); + + do { + if (argc == 0) { + const cocos2d::ValueMap& ret = cobj->getProperties(); + jsval jsret = JSVAL_NULL; + jsret = ccvaluemap_to_jsval(cx, ret); + args.rval().set(jsret); + return true; + } + } while(0); + + JS_ReportError(cx, "js_cocos2dx_TMXLayer_getProperties : wrong number of arguments"); + return false; +} bool js_cocos2dx_TMXLayer_getTileAt(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXLayer* cobj = (cocos2d::experimental::TMXLayer *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXLayer* cobj = (cocos2d::TMXLayer *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXLayer_getTileAt : Invalid Native Object"); if (argc == 1) { cocos2d::Vec2 arg0; @@ -63698,11 +63974,11 @@ bool js_cocos2dx_TMXLayer_create(JSContext *cx, uint32_t argc, jsval *vp) JSB_PRECONDITION2( arg2, cx, false, "Invalid Native Object"); } while (0); JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_TMXLayer_create : Error processing arguments"); - cocos2d::experimental::TMXLayer* ret = cocos2d::experimental::TMXLayer::create(arg0, arg1, arg2); + cocos2d::TMXLayer* ret = cocos2d::TMXLayer::create(arg0, arg1, arg2); jsval jsret = JSVAL_NULL; do { if (ret) { - js_proxy_t *jsProxy = js_get_or_create_proxy(cx, (cocos2d::experimental::TMXLayer*)ret); + js_proxy_t *jsProxy = js_get_or_create_proxy(cx, (cocos2d::TMXLayer*)ret); jsret = OBJECT_TO_JSVAL(jsProxy->obj); } else { jsret = JSVAL_NULL; @@ -63719,12 +63995,12 @@ bool js_cocos2dx_TMXLayer_constructor(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); bool ok = true; - cocos2d::experimental::TMXLayer* cobj = new (std::nothrow) cocos2d::experimental::TMXLayer(); + cocos2d::TMXLayer* cobj = new (std::nothrow) cocos2d::TMXLayer(); cocos2d::Ref *_ccobj = dynamic_cast(cobj); if (_ccobj) { _ccobj->autorelease(); } - TypeTest t; + TypeTest t; js_type_class_t *typeClass = nullptr; std::string typeName = t.s_name(); auto typeMapIter = _js_global_type_map.find(typeName); @@ -63738,29 +64014,29 @@ bool js_cocos2dx_TMXLayer_constructor(JSContext *cx, uint32_t argc, jsval *vp) args.rval().set(OBJECT_TO_JSVAL(obj)); // link the native object with the javascript object js_proxy_t* p = jsb_new_proxy(cobj, obj); - AddNamedObjectRoot(cx, &p->obj, "cocos2d::experimental::TMXLayer"); + AddNamedObjectRoot(cx, &p->obj, "cocos2d::TMXLayer"); if (JS_HasProperty(cx, obj, "_ctor", &ok) && ok) ScriptingCore::getInstance()->executeFunctionWithOwner(OBJECT_TO_JSVAL(obj), "_ctor", args); return true; } -extern JSObject *jsb_cocos2d_Node_prototype; +extern JSObject *jsb_cocos2d_SpriteBatchNode_prototype; -void js_cocos2d_experimental_TMXLayer_finalize(JSFreeOp *fop, JSObject *obj) { +void js_cocos2d_TMXLayer_finalize(JSFreeOp *fop, JSObject *obj) { CCLOGINFO("jsbindings: finalizing JS object %p (TMXLayer)", obj); } -static bool js_cocos2d_experimental_TMXLayer_ctor(JSContext *cx, uint32_t argc, jsval *vp) +static bool js_cocos2d_TMXLayer_ctor(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); - cocos2d::experimental::TMXLayer *nobj = new (std::nothrow) cocos2d::experimental::TMXLayer(); + cocos2d::TMXLayer *nobj = new (std::nothrow) cocos2d::TMXLayer(); if (nobj) { nobj->autorelease(); } js_proxy_t* p = jsb_new_proxy(nobj, obj); - AddNamedObjectRoot(cx, &p->obj, "cocos2d::experimental::TMXLayer"); + AddNamedObjectRoot(cx, &p->obj, "cocos2d::TMXLayer"); bool isFound = false; if (JS_HasProperty(cx, obj, "_ctor", &isFound) && isFound) ScriptingCore::getInstance()->executeFunctionWithOwner(OBJECT_TO_JSVAL(obj), "_ctor", args); @@ -63768,17 +64044,17 @@ static bool js_cocos2d_experimental_TMXLayer_ctor(JSContext *cx, uint32_t argc, return true; } void js_register_cocos2dx_TMXLayer(JSContext *cx, JS::HandleObject global) { - jsb_cocos2d_experimental_TMXLayer_class = (JSClass *)calloc(1, sizeof(JSClass)); - jsb_cocos2d_experimental_TMXLayer_class->name = "TMXLayer"; - jsb_cocos2d_experimental_TMXLayer_class->addProperty = JS_PropertyStub; - jsb_cocos2d_experimental_TMXLayer_class->delProperty = JS_DeletePropertyStub; - jsb_cocos2d_experimental_TMXLayer_class->getProperty = JS_PropertyStub; - jsb_cocos2d_experimental_TMXLayer_class->setProperty = JS_StrictPropertyStub; - jsb_cocos2d_experimental_TMXLayer_class->enumerate = JS_EnumerateStub; - jsb_cocos2d_experimental_TMXLayer_class->resolve = JS_ResolveStub; - jsb_cocos2d_experimental_TMXLayer_class->convert = JS_ConvertStub; - jsb_cocos2d_experimental_TMXLayer_class->finalize = js_cocos2d_experimental_TMXLayer_finalize; - jsb_cocos2d_experimental_TMXLayer_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); + jsb_cocos2d_TMXLayer_class = (JSClass *)calloc(1, sizeof(JSClass)); + jsb_cocos2d_TMXLayer_class->name = "TMXLayer"; + jsb_cocos2d_TMXLayer_class->addProperty = JS_PropertyStub; + jsb_cocos2d_TMXLayer_class->delProperty = JS_DeletePropertyStub; + jsb_cocos2d_TMXLayer_class->getProperty = JS_PropertyStub; + jsb_cocos2d_TMXLayer_class->setProperty = JS_StrictPropertyStub; + jsb_cocos2d_TMXLayer_class->enumerate = JS_EnumerateStub; + jsb_cocos2d_TMXLayer_class->resolve = JS_ResolveStub; + jsb_cocos2d_TMXLayer_class->convert = JS_ConvertStub; + jsb_cocos2d_TMXLayer_class->finalize = js_cocos2d_TMXLayer_finalize; + jsb_cocos2d_TMXLayer_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), @@ -63789,6 +64065,7 @@ void js_register_cocos2dx_TMXLayer(JSContext *cx, JS::HandleObject global) { JS_FN("getTileGIDAt", js_cocos2dx_TMXLayer_getTileGIDAt, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getPositionAt", js_cocos2dx_TMXLayer_getPositionAt, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setLayerOrientation", js_cocos2dx_TMXLayer_setLayerOrientation, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("releaseMap", js_cocos2dx_TMXLayer_releaseMap, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setTiles", js_cocos2dx_TMXLayer_setTiles, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getLayerSize", js_cocos2dx_TMXLayer_getLayerSize, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setMapTileSize", js_cocos2dx_TMXLayer_setMapTileSize, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), @@ -63796,9 +64073,8 @@ void js_register_cocos2dx_TMXLayer(JSContext *cx, JS::HandleObject global) { JS_FN("setProperties", js_cocos2dx_TMXLayer_setProperties, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setLayerName", js_cocos2dx_TMXLayer_setLayerName, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("removeTileAt", js_cocos2dx_TMXLayer_removeTileAt, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("getProperties", js_cocos2dx_TMXLayer_getProperties, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("initWithTilesetInfo", js_cocos2dx_TMXLayer_initWithTilesetInfo, 3, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setupTiles", js_cocos2dx_TMXLayer_setupTiles, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("setupTileSprite", js_cocos2dx_TMXLayer_setupTileSprite, 3, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setTileGID", js_cocos2dx_TMXLayer_setTileGID, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getMapTileSize", js_cocos2dx_TMXLayer_getMapTileSize, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getProperty", js_cocos2dx_TMXLayer_getProperty, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), @@ -63806,8 +64082,9 @@ void js_register_cocos2dx_TMXLayer(JSContext *cx, JS::HandleObject global) { JS_FN("getLayerName", js_cocos2dx_TMXLayer_getLayerName, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setTileSet", js_cocos2dx_TMXLayer_setTileSet, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getTileSet", js_cocos2dx_TMXLayer_getTileSet, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("getProperties", js_cocos2dx_TMXLayer_getProperties, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getTileAt", js_cocos2dx_TMXLayer_getTileAt, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("ctor", js_cocos2d_experimental_TMXLayer_ctor, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("ctor", js_cocos2d_TMXLayer_ctor, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; @@ -63816,10 +64093,10 @@ void js_register_cocos2dx_TMXLayer(JSContext *cx, JS::HandleObject global) { JS_FS_END }; - jsb_cocos2d_experimental_TMXLayer_prototype = JS_InitClass( + jsb_cocos2d_TMXLayer_prototype = JS_InitClass( cx, global, - JS::RootedObject(cx, jsb_cocos2d_Node_prototype), - jsb_cocos2d_experimental_TMXLayer_class, + JS::RootedObject(cx, jsb_cocos2d_SpriteBatchNode_prototype), + jsb_cocos2d_TMXLayer_class, js_cocos2dx_TMXLayer_constructor, 0, // constructor properties, funcs, @@ -63831,21 +64108,21 @@ void js_register_cocos2dx_TMXLayer(JSContext *cx, JS::HandleObject global) { // JS_SetPropertyAttributes(cx, global, "TMXLayer", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table - TypeTest t; + TypeTest t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); - p->jsclass = jsb_cocos2d_experimental_TMXLayer_class; - p->proto = jsb_cocos2d_experimental_TMXLayer_prototype; - p->parentProto = jsb_cocos2d_Node_prototype; + p->jsclass = jsb_cocos2d_TMXLayer_class; + p->proto = jsb_cocos2d_TMXLayer_prototype; + p->parentProto = jsb_cocos2d_SpriteBatchNode_prototype; _js_global_type_map.insert(std::make_pair(typeName, p)); } } -JSClass *jsb_cocos2d_experimental_TMXTiledMap_class; -JSObject *jsb_cocos2d_experimental_TMXTiledMap_prototype; +JSClass *jsb_cocos2d_TMXTiledMap_class; +JSObject *jsb_cocos2d_TMXTiledMap_prototype; bool js_cocos2dx_TMXTiledMap_setObjectGroups(JSContext *cx, uint32_t argc, jsval *vp) { @@ -63853,7 +64130,7 @@ bool js_cocos2dx_TMXTiledMap_setObjectGroups(JSContext *cx, uint32_t argc, jsval bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXTiledMap* cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_setObjectGroups : Invalid Native Object"); if (argc == 1) { cocos2d::Vector arg0; @@ -63873,7 +64150,7 @@ bool js_cocos2dx_TMXTiledMap_getProperty(JSContext *cx, uint32_t argc, jsval *vp bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXTiledMap* cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_getProperty : Invalid Native Object"); if (argc == 1) { std::string arg0; @@ -63895,7 +64172,7 @@ bool js_cocos2dx_TMXTiledMap_setMapSize(JSContext *cx, uint32_t argc, jsval *vp) bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXTiledMap* cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_setMapSize : Invalid Native Object"); if (argc == 1) { cocos2d::Size arg0; @@ -63915,7 +64192,7 @@ bool js_cocos2dx_TMXTiledMap_getObjectGroup(JSContext *cx, uint32_t argc, jsval bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXTiledMap* cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_getObjectGroup : Invalid Native Object"); if (argc == 1) { std::string arg0; @@ -63944,10 +64221,10 @@ bool js_cocos2dx_TMXTiledMap_getObjectGroups(JSContext *cx, uint32_t argc, jsval bool ok = true; JS::RootedObject obj(cx); - cocos2d::experimental::TMXTiledMap* cobj = NULL; + cocos2d::TMXTiledMap* cobj = NULL; obj = args.thisv().toObjectOrNull(); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_getObjectGroups : Invalid Native Object"); do { if (argc == 0) { @@ -63972,12 +64249,58 @@ bool js_cocos2dx_TMXTiledMap_getObjectGroups(JSContext *cx, uint32_t argc, jsval JS_ReportError(cx, "js_cocos2dx_TMXTiledMap_getObjectGroups : wrong number of arguments"); return false; } +bool js_cocos2dx_TMXTiledMap_initWithXML(JSContext *cx, uint32_t argc, jsval *vp) +{ + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + bool ok = true; + JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); + js_proxy_t *proxy = jsb_get_js_proxy(obj); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_initWithXML : Invalid Native Object"); + if (argc == 2) { + std::string arg0; + std::string arg1; + ok &= jsval_to_std_string(cx, args.get(0), &arg0); + ok &= jsval_to_std_string(cx, args.get(1), &arg1); + JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_TMXTiledMap_initWithXML : Error processing arguments"); + bool ret = cobj->initWithXML(arg0, arg1); + jsval jsret = JSVAL_NULL; + jsret = BOOLEAN_TO_JSVAL(ret); + args.rval().set(jsret); + return true; + } + + JS_ReportError(cx, "js_cocos2dx_TMXTiledMap_initWithXML : wrong number of arguments: %d, was expecting %d", argc, 2); + return false; +} +bool js_cocos2dx_TMXTiledMap_initWithTMXFile(JSContext *cx, uint32_t argc, jsval *vp) +{ + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + bool ok = true; + JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); + js_proxy_t *proxy = jsb_get_js_proxy(obj); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_initWithTMXFile : Invalid Native Object"); + if (argc == 1) { + std::string arg0; + ok &= jsval_to_std_string(cx, args.get(0), &arg0); + JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_TMXTiledMap_initWithTMXFile : Error processing arguments"); + bool ret = cobj->initWithTMXFile(arg0); + jsval jsret = JSVAL_NULL; + jsret = BOOLEAN_TO_JSVAL(ret); + args.rval().set(jsret); + return true; + } + + JS_ReportError(cx, "js_cocos2dx_TMXTiledMap_initWithTMXFile : wrong number of arguments: %d, was expecting %d", argc, 1); + return false; +} bool js_cocos2dx_TMXTiledMap_getTileSize(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXTiledMap* cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_getTileSize : Invalid Native Object"); if (argc == 0) { const cocos2d::Size& ret = cobj->getTileSize(); @@ -63995,7 +64318,7 @@ bool js_cocos2dx_TMXTiledMap_getMapSize(JSContext *cx, uint32_t argc, jsval *vp) JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXTiledMap* cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_getMapSize : Invalid Native Object"); if (argc == 0) { const cocos2d::Size& ret = cobj->getMapSize(); @@ -64013,10 +64336,10 @@ bool js_cocos2dx_TMXTiledMap_getProperties(JSContext *cx, uint32_t argc, jsval * JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXTiledMap* cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_getProperties : Invalid Native Object"); if (argc == 0) { - const cocos2d::ValueMap& ret = cobj->getProperties(); + cocos2d::ValueMap& ret = cobj->getProperties(); jsval jsret = JSVAL_NULL; jsret = ccvaluemap_to_jsval(cx, ret); args.rval().set(jsret); @@ -64030,22 +64353,50 @@ bool js_cocos2dx_TMXTiledMap_getPropertiesForGID(JSContext *cx, uint32_t argc, j { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); bool ok = true; - JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); - js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXTiledMap* cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); - JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_getPropertiesForGID : Invalid Native Object"); - if (argc == 1) { - int arg0; - ok &= jsval_to_int32(cx, args.get(0), (int32_t *)&arg0); - JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_TMXTiledMap_getPropertiesForGID : Error processing arguments"); - cocos2d::Value ret = cobj->getPropertiesForGID(arg0); - jsval jsret = JSVAL_NULL; - jsret = ccvalue_to_jsval(cx, ret); - args.rval().set(jsret); - return true; - } - JS_ReportError(cx, "js_cocos2dx_TMXTiledMap_getPropertiesForGID : wrong number of arguments: %d, was expecting %d", argc, 1); + JS::RootedObject obj(cx); + cocos2d::TMXTiledMap* cobj = NULL; + obj = args.thisv().toObjectOrNull(); + js_proxy_t *proxy = jsb_get_js_proxy(obj); + cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_getPropertiesForGID : Invalid Native Object"); + do { + if (argc == 2) { + int arg0; + ok &= jsval_to_int32(cx, args.get(0), (int32_t *)&arg0); + if (!ok) { ok = true; break; } + cocos2d::Value** arg1; + do { + if (!args.get(1).isObject()) { ok = false; break; } + js_proxy_t *jsProxy; + JSObject *tmpObj = args.get(1).toObjectOrNull(); + jsProxy = jsb_get_js_proxy(tmpObj); + arg1 = (cocos2d::Value**)(jsProxy ? jsProxy->ptr : NULL); + JSB_PRECONDITION2( arg1, cx, false, "Invalid Native Object"); + } while (0); + if (!ok) { ok = true; break; } + bool ret = cobj->getPropertiesForGID(arg0, arg1); + jsval jsret = JSVAL_NULL; + jsret = BOOLEAN_TO_JSVAL(ret); + args.rval().set(jsret); + return true; + } + } while(0); + + do { + if (argc == 1) { + int arg0; + ok &= jsval_to_int32(cx, args.get(0), (int32_t *)&arg0); + if (!ok) { ok = true; break; } + cocos2d::Value ret = cobj->getPropertiesForGID(arg0); + jsval jsret = JSVAL_NULL; + jsret = ccvalue_to_jsval(cx, ret); + args.rval().set(jsret); + return true; + } + } while(0); + + JS_ReportError(cx, "js_cocos2dx_TMXTiledMap_getPropertiesForGID : wrong number of arguments"); return false; } bool js_cocos2dx_TMXTiledMap_setTileSize(JSContext *cx, uint32_t argc, jsval *vp) @@ -64054,7 +64405,7 @@ bool js_cocos2dx_TMXTiledMap_setTileSize(JSContext *cx, uint32_t argc, jsval *vp bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXTiledMap* cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_setTileSize : Invalid Native Object"); if (argc == 1) { cocos2d::Size arg0; @@ -64074,7 +64425,7 @@ bool js_cocos2dx_TMXTiledMap_setProperties(JSContext *cx, uint32_t argc, jsval * bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXTiledMap* cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_setProperties : Invalid Native Object"); if (argc == 1) { cocos2d::ValueMap arg0; @@ -64094,17 +64445,17 @@ bool js_cocos2dx_TMXTiledMap_getLayer(JSContext *cx, uint32_t argc, jsval *vp) bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXTiledMap* cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_getLayer : Invalid Native Object"); if (argc == 1) { std::string arg0; ok &= jsval_to_std_string(cx, args.get(0), &arg0); JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_TMXTiledMap_getLayer : Error processing arguments"); - cocos2d::experimental::TMXLayer* ret = cobj->getLayer(arg0); + cocos2d::TMXLayer* ret = cobj->getLayer(arg0); jsval jsret = JSVAL_NULL; do { if (ret) { - js_proxy_t *jsProxy = js_get_or_create_proxy(cx, (cocos2d::experimental::TMXLayer*)ret); + js_proxy_t *jsProxy = js_get_or_create_proxy(cx, (cocos2d::TMXLayer*)ret); jsret = OBJECT_TO_JSVAL(jsProxy->obj); } else { jsret = JSVAL_NULL; @@ -64122,7 +64473,7 @@ bool js_cocos2dx_TMXTiledMap_getMapOrientation(JSContext *cx, uint32_t argc, jsv JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXTiledMap* cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_getMapOrientation : Invalid Native Object"); if (argc == 0) { int ret = cobj->getMapOrientation(); @@ -64141,7 +64492,7 @@ bool js_cocos2dx_TMXTiledMap_setMapOrientation(JSContext *cx, uint32_t argc, jsv bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::experimental::TMXTiledMap* cobj = (cocos2d::experimental::TMXTiledMap *)(proxy ? proxy->ptr : NULL); + cocos2d::TMXTiledMap* cobj = (cocos2d::TMXTiledMap *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_TMXTiledMap_setMapOrientation : Invalid Native Object"); if (argc == 1) { int arg0; @@ -64163,11 +64514,11 @@ bool js_cocos2dx_TMXTiledMap_create(JSContext *cx, uint32_t argc, jsval *vp) std::string arg0; ok &= jsval_to_std_string(cx, args.get(0), &arg0); JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_TMXTiledMap_create : Error processing arguments"); - cocos2d::experimental::TMXTiledMap* ret = cocos2d::experimental::TMXTiledMap::create(arg0); + cocos2d::TMXTiledMap* ret = cocos2d::TMXTiledMap::create(arg0); jsval jsret = JSVAL_NULL; do { if (ret) { - js_proxy_t *jsProxy = js_get_or_create_proxy(cx, (cocos2d::experimental::TMXTiledMap*)ret); + js_proxy_t *jsProxy = js_get_or_create_proxy(cx, (cocos2d::TMXTiledMap*)ret); jsret = OBJECT_TO_JSVAL(jsProxy->obj); } else { jsret = JSVAL_NULL; @@ -64190,11 +64541,11 @@ bool js_cocos2dx_TMXTiledMap_createWithXML(JSContext *cx, uint32_t argc, jsval * ok &= jsval_to_std_string(cx, args.get(0), &arg0); ok &= jsval_to_std_string(cx, args.get(1), &arg1); JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_TMXTiledMap_createWithXML : Error processing arguments"); - cocos2d::experimental::TMXTiledMap* ret = cocos2d::experimental::TMXTiledMap::createWithXML(arg0, arg1); + cocos2d::TMXTiledMap* ret = cocos2d::TMXTiledMap::createWithXML(arg0, arg1); jsval jsret = JSVAL_NULL; do { if (ret) { - js_proxy_t *jsProxy = js_get_or_create_proxy(cx, (cocos2d::experimental::TMXTiledMap*)ret); + js_proxy_t *jsProxy = js_get_or_create_proxy(cx, (cocos2d::TMXTiledMap*)ret); jsret = OBJECT_TO_JSVAL(jsProxy->obj); } else { jsret = JSVAL_NULL; @@ -64207,242 +64558,16 @@ bool js_cocos2dx_TMXTiledMap_createWithXML(JSContext *cx, uint32_t argc, jsval * return false; } - -extern JSObject *jsb_cocos2d_Node_prototype; - -void js_cocos2d_experimental_TMXTiledMap_finalize(JSFreeOp *fop, JSObject *obj) { - CCLOGINFO("jsbindings: finalizing JS object %p (TMXTiledMap)", obj); -} - -static bool js_cocos2d_experimental_TMXTiledMap_ctor(JSContext *cx, uint32_t argc, jsval *vp) -{ - JS::CallArgs args = JS::CallArgsFromVp(argc, vp); - JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); - cocos2d::experimental::TMXTiledMap *nobj = new (std::nothrow) cocos2d::experimental::TMXTiledMap(); - if (nobj) { - nobj->autorelease(); - } - js_proxy_t* p = jsb_new_proxy(nobj, obj); - AddNamedObjectRoot(cx, &p->obj, "cocos2d::experimental::TMXTiledMap"); - bool isFound = false; - if (JS_HasProperty(cx, obj, "_ctor", &isFound) && isFound) - ScriptingCore::getInstance()->executeFunctionWithOwner(OBJECT_TO_JSVAL(obj), "_ctor", args); - args.rval().setUndefined(); - return true; -} -void js_register_cocos2dx_TMXTiledMap(JSContext *cx, JS::HandleObject global) { - jsb_cocos2d_experimental_TMXTiledMap_class = (JSClass *)calloc(1, sizeof(JSClass)); - jsb_cocos2d_experimental_TMXTiledMap_class->name = "TMXTiledMap"; - jsb_cocos2d_experimental_TMXTiledMap_class->addProperty = JS_PropertyStub; - jsb_cocos2d_experimental_TMXTiledMap_class->delProperty = JS_DeletePropertyStub; - jsb_cocos2d_experimental_TMXTiledMap_class->getProperty = JS_PropertyStub; - jsb_cocos2d_experimental_TMXTiledMap_class->setProperty = JS_StrictPropertyStub; - jsb_cocos2d_experimental_TMXTiledMap_class->enumerate = JS_EnumerateStub; - jsb_cocos2d_experimental_TMXTiledMap_class->resolve = JS_ResolveStub; - jsb_cocos2d_experimental_TMXTiledMap_class->convert = JS_ConvertStub; - jsb_cocos2d_experimental_TMXTiledMap_class->finalize = js_cocos2d_experimental_TMXTiledMap_finalize; - jsb_cocos2d_experimental_TMXTiledMap_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); - - static JSPropertySpec properties[] = { - JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_PS_END - }; - - static JSFunctionSpec funcs[] = { - JS_FN("setObjectGroups", js_cocos2dx_TMXTiledMap_setObjectGroups, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("getProperty", js_cocos2dx_TMXTiledMap_getProperty, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("setMapSize", js_cocos2dx_TMXTiledMap_setMapSize, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("getObjectGroup", js_cocos2dx_TMXTiledMap_getObjectGroup, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("getObjectGroups", js_cocos2dx_TMXTiledMap_getObjectGroups, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("getTileSize", js_cocos2dx_TMXTiledMap_getTileSize, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("getMapSize", js_cocos2dx_TMXTiledMap_getMapSize, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("getProperties", js_cocos2dx_TMXTiledMap_getProperties, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("getPropertiesForGID", js_cocos2dx_TMXTiledMap_getPropertiesForGID, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("setTileSize", js_cocos2dx_TMXTiledMap_setTileSize, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("setProperties", js_cocos2dx_TMXTiledMap_setProperties, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("getLayer", js_cocos2dx_TMXTiledMap_getLayer, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("getMapOrientation", js_cocos2dx_TMXTiledMap_getMapOrientation, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("setMapOrientation", js_cocos2dx_TMXTiledMap_setMapOrientation, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("ctor", js_cocos2d_experimental_TMXTiledMap_ctor, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FS_END - }; - - static JSFunctionSpec st_funcs[] = { - JS_FN("create", js_cocos2dx_TMXTiledMap_create, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("createWithXML", js_cocos2dx_TMXTiledMap_createWithXML, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FS_END - }; - - jsb_cocos2d_experimental_TMXTiledMap_prototype = JS_InitClass( - cx, global, - JS::RootedObject(cx, jsb_cocos2d_Node_prototype), - jsb_cocos2d_experimental_TMXTiledMap_class, - dummy_constructor, 0, // no constructor - properties, - funcs, - NULL, // no static properties - st_funcs); - // make the class enumerable in the registered namespace -// bool found; -//FIXME: Removed in Firefox v27 -// JS_SetPropertyAttributes(cx, global, "TMXTiledMap", JSPROP_ENUMERATE | JSPROP_READONLY, &found); - - // add the proto and JSClass to the type->js info hash table - TypeTest t; - js_type_class_t *p; - std::string typeName = t.s_name(); - if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) - { - p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); - p->jsclass = jsb_cocos2d_experimental_TMXTiledMap_class; - p->proto = jsb_cocos2d_experimental_TMXTiledMap_prototype; - p->parentProto = jsb_cocos2d_Node_prototype; - _js_global_type_map.insert(std::make_pair(typeName, p)); - } -} - -JSClass *jsb_cocos2d_ParallaxNode_class; -JSObject *jsb_cocos2d_ParallaxNode_prototype; - -bool js_cocos2dx_ParallaxNode_getParallaxArray(JSContext *cx, uint32_t argc, jsval *vp) +bool js_cocos2dx_TMXTiledMap_constructor(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); bool ok = true; - - JS::RootedObject obj(cx); - cocos2d::ParallaxNode* cobj = NULL; - obj = args.thisv().toObjectOrNull(); - js_proxy_t *proxy = jsb_get_js_proxy(obj); - cobj = (cocos2d::ParallaxNode *)(proxy ? proxy->ptr : NULL); - JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_ParallaxNode_getParallaxArray : Invalid Native Object"); - do { - if (argc == 0) { - const cocos2d::_ccArray* ret = cobj->getParallaxArray(); - jsval jsret = JSVAL_NULL; - #pragma warning NO CONVERSION FROM NATIVE FOR _ccArray*; - args.rval().set(jsret); - return true; - } - } while(0); - - do { - if (argc == 0) { - cocos2d::_ccArray* ret = cobj->getParallaxArray(); - jsval jsret = JSVAL_NULL; - #pragma warning NO CONVERSION FROM NATIVE FOR _ccArray*; - args.rval().set(jsret); - return true; - } - } while(0); - - JS_ReportError(cx, "js_cocos2dx_ParallaxNode_getParallaxArray : wrong number of arguments"); - return false; -} -bool js_cocos2dx_ParallaxNode_addChild(JSContext *cx, uint32_t argc, jsval *vp) -{ - JS::CallArgs args = JS::CallArgsFromVp(argc, vp); - bool ok = true; - JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); - js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::ParallaxNode* cobj = (cocos2d::ParallaxNode *)(proxy ? proxy->ptr : NULL); - JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_ParallaxNode_addChild : Invalid Native Object"); - if (argc == 4) { - cocos2d::Node* arg0; - int arg1; - cocos2d::Vec2 arg2; - cocos2d::Vec2 arg3; - do { - if (!args.get(0).isObject()) { ok = false; break; } - js_proxy_t *jsProxy; - JSObject *tmpObj = args.get(0).toObjectOrNull(); - jsProxy = jsb_get_js_proxy(tmpObj); - arg0 = (cocos2d::Node*)(jsProxy ? jsProxy->ptr : NULL); - JSB_PRECONDITION2( arg0, cx, false, "Invalid Native Object"); - } while (0); - ok &= jsval_to_int32(cx, args.get(1), (int32_t *)&arg1); - ok &= jsval_to_vector2(cx, args.get(2), &arg2); - ok &= jsval_to_vector2(cx, args.get(3), &arg3); - JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_ParallaxNode_addChild : Error processing arguments"); - cobj->addChild(arg0, arg1, arg2, arg3); - args.rval().setUndefined(); - return true; - } - - JS_ReportError(cx, "js_cocos2dx_ParallaxNode_addChild : wrong number of arguments: %d, was expecting %d", argc, 4); - return false; -} -bool js_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup(JSContext *cx, uint32_t argc, jsval *vp) -{ - JS::CallArgs args = JS::CallArgsFromVp(argc, vp); - bool ok = true; - JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); - js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::ParallaxNode* cobj = (cocos2d::ParallaxNode *)(proxy ? proxy->ptr : NULL); - JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup : Invalid Native Object"); - if (argc == 1) { - bool arg0; - arg0 = JS::ToBoolean(args.get(0)); - JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup : Error processing arguments"); - cobj->removeAllChildrenWithCleanup(arg0); - args.rval().setUndefined(); - return true; - } - - JS_ReportError(cx, "js_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup : wrong number of arguments: %d, was expecting %d", argc, 1); - return false; -} -bool js_cocos2dx_ParallaxNode_setParallaxArray(JSContext *cx, uint32_t argc, jsval *vp) -{ - JS::CallArgs args = JS::CallArgsFromVp(argc, vp); - bool ok = true; - JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); - js_proxy_t *proxy = jsb_get_js_proxy(obj); - cocos2d::ParallaxNode* cobj = (cocos2d::ParallaxNode *)(proxy ? proxy->ptr : NULL); - JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_ParallaxNode_setParallaxArray : Invalid Native Object"); - if (argc == 1) { - cocos2d::_ccArray* arg0; - #pragma warning NO CONVERSION TO NATIVE FOR _ccArray* - ok = false; - JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_ParallaxNode_setParallaxArray : Error processing arguments"); - cobj->setParallaxArray(arg0); - args.rval().setUndefined(); - return true; - } - - JS_ReportError(cx, "js_cocos2dx_ParallaxNode_setParallaxArray : wrong number of arguments: %d, was expecting %d", argc, 1); - return false; -} -bool js_cocos2dx_ParallaxNode_create(JSContext *cx, uint32_t argc, jsval *vp) -{ - JS::CallArgs args = JS::CallArgsFromVp(argc, vp); - if (argc == 0) { - cocos2d::ParallaxNode* ret = cocos2d::ParallaxNode::create(); - jsval jsret = JSVAL_NULL; - do { - if (ret) { - js_proxy_t *jsProxy = js_get_or_create_proxy(cx, (cocos2d::ParallaxNode*)ret); - jsret = OBJECT_TO_JSVAL(jsProxy->obj); - } else { - jsret = JSVAL_NULL; - } - } while (0); - args.rval().set(jsret); - return true; - } - JS_ReportError(cx, "js_cocos2dx_ParallaxNode_create : wrong number of arguments"); - return false; -} - -bool js_cocos2dx_ParallaxNode_constructor(JSContext *cx, uint32_t argc, jsval *vp) -{ - JS::CallArgs args = JS::CallArgsFromVp(argc, vp); - bool ok = true; - cocos2d::ParallaxNode* cobj = new (std::nothrow) cocos2d::ParallaxNode(); + cocos2d::TMXTiledMap* cobj = new (std::nothrow) cocos2d::TMXTiledMap(); cocos2d::Ref *_ccobj = dynamic_cast(cobj); if (_ccobj) { _ccobj->autorelease(); } - TypeTest t; + TypeTest t; js_type_class_t *typeClass = nullptr; std::string typeName = t.s_name(); auto typeMapIter = _js_global_type_map.find(typeName); @@ -64456,7 +64581,7 @@ bool js_cocos2dx_ParallaxNode_constructor(JSContext *cx, uint32_t argc, jsval *v args.rval().set(OBJECT_TO_JSVAL(obj)); // link the native object with the javascript object js_proxy_t* p = jsb_new_proxy(cobj, obj); - AddNamedObjectRoot(cx, &p->obj, "cocos2d::ParallaxNode"); + AddNamedObjectRoot(cx, &p->obj, "cocos2d::TMXTiledMap"); if (JS_HasProperty(cx, obj, "_ctor", &ok) && ok) ScriptingCore::getInstance()->executeFunctionWithOwner(OBJECT_TO_JSVAL(obj), "_ctor", args); return true; @@ -64465,38 +64590,38 @@ bool js_cocos2dx_ParallaxNode_constructor(JSContext *cx, uint32_t argc, jsval *v extern JSObject *jsb_cocos2d_Node_prototype; -void js_cocos2d_ParallaxNode_finalize(JSFreeOp *fop, JSObject *obj) { - CCLOGINFO("jsbindings: finalizing JS object %p (ParallaxNode)", obj); +void js_cocos2d_TMXTiledMap_finalize(JSFreeOp *fop, JSObject *obj) { + CCLOGINFO("jsbindings: finalizing JS object %p (TMXTiledMap)", obj); } -static bool js_cocos2d_ParallaxNode_ctor(JSContext *cx, uint32_t argc, jsval *vp) +static bool js_cocos2d_TMXTiledMap_ctor(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); - cocos2d::ParallaxNode *nobj = new (std::nothrow) cocos2d::ParallaxNode(); + cocos2d::TMXTiledMap *nobj = new (std::nothrow) cocos2d::TMXTiledMap(); if (nobj) { nobj->autorelease(); } js_proxy_t* p = jsb_new_proxy(nobj, obj); - AddNamedObjectRoot(cx, &p->obj, "cocos2d::ParallaxNode"); + AddNamedObjectRoot(cx, &p->obj, "cocos2d::TMXTiledMap"); bool isFound = false; if (JS_HasProperty(cx, obj, "_ctor", &isFound) && isFound) ScriptingCore::getInstance()->executeFunctionWithOwner(OBJECT_TO_JSVAL(obj), "_ctor", args); args.rval().setUndefined(); return true; } -void js_register_cocos2dx_ParallaxNode(JSContext *cx, JS::HandleObject global) { - jsb_cocos2d_ParallaxNode_class = (JSClass *)calloc(1, sizeof(JSClass)); - jsb_cocos2d_ParallaxNode_class->name = "ParallaxNode"; - jsb_cocos2d_ParallaxNode_class->addProperty = JS_PropertyStub; - jsb_cocos2d_ParallaxNode_class->delProperty = JS_DeletePropertyStub; - jsb_cocos2d_ParallaxNode_class->getProperty = JS_PropertyStub; - jsb_cocos2d_ParallaxNode_class->setProperty = JS_StrictPropertyStub; - jsb_cocos2d_ParallaxNode_class->enumerate = JS_EnumerateStub; - jsb_cocos2d_ParallaxNode_class->resolve = JS_ResolveStub; - jsb_cocos2d_ParallaxNode_class->convert = JS_ConvertStub; - jsb_cocos2d_ParallaxNode_class->finalize = js_cocos2d_ParallaxNode_finalize; - jsb_cocos2d_ParallaxNode_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); +void js_register_cocos2dx_TMXTiledMap(JSContext *cx, JS::HandleObject global) { + jsb_cocos2d_TMXTiledMap_class = (JSClass *)calloc(1, sizeof(JSClass)); + jsb_cocos2d_TMXTiledMap_class->name = "TMXTiledMap"; + jsb_cocos2d_TMXTiledMap_class->addProperty = JS_PropertyStub; + jsb_cocos2d_TMXTiledMap_class->delProperty = JS_DeletePropertyStub; + jsb_cocos2d_TMXTiledMap_class->getProperty = JS_PropertyStub; + jsb_cocos2d_TMXTiledMap_class->setProperty = JS_StrictPropertyStub; + jsb_cocos2d_TMXTiledMap_class->enumerate = JS_EnumerateStub; + jsb_cocos2d_TMXTiledMap_class->resolve = JS_ResolveStub; + jsb_cocos2d_TMXTiledMap_class->convert = JS_ConvertStub; + jsb_cocos2d_TMXTiledMap_class->finalize = js_cocos2d_TMXTiledMap_finalize; + jsb_cocos2d_TMXTiledMap_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), @@ -64504,24 +64629,37 @@ void js_register_cocos2dx_ParallaxNode(JSContext *cx, JS::HandleObject global) { }; static JSFunctionSpec funcs[] = { - JS_FN("getParallaxArray", js_cocos2dx_ParallaxNode_getParallaxArray, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("addChild", js_cocos2dx_ParallaxNode_addChild, 4, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("removeAllChildrenWithCleanup", js_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("setParallaxArray", js_cocos2dx_ParallaxNode_setParallaxArray, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), - JS_FN("ctor", js_cocos2d_ParallaxNode_ctor, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("setObjectGroups", js_cocos2dx_TMXTiledMap_setObjectGroups, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("getProperty", js_cocos2dx_TMXTiledMap_getProperty, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("setMapSize", js_cocos2dx_TMXTiledMap_setMapSize, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("getObjectGroup", js_cocos2dx_TMXTiledMap_getObjectGroup, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("getObjectGroups", js_cocos2dx_TMXTiledMap_getObjectGroups, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("initWithXML", js_cocos2dx_TMXTiledMap_initWithXML, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("initWithTMXFile", js_cocos2dx_TMXTiledMap_initWithTMXFile, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("getTileSize", js_cocos2dx_TMXTiledMap_getTileSize, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("getMapSize", js_cocos2dx_TMXTiledMap_getMapSize, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("getProperties", js_cocos2dx_TMXTiledMap_getProperties, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("getPropertiesForGID", js_cocos2dx_TMXTiledMap_getPropertiesForGID, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("setTileSize", js_cocos2dx_TMXTiledMap_setTileSize, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("setProperties", js_cocos2dx_TMXTiledMap_setProperties, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("getLayer", js_cocos2dx_TMXTiledMap_getLayer, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("getMapOrientation", js_cocos2dx_TMXTiledMap_getMapOrientation, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("setMapOrientation", js_cocos2dx_TMXTiledMap_setMapOrientation, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("ctor", js_cocos2d_TMXTiledMap_ctor, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; static JSFunctionSpec st_funcs[] = { - JS_FN("create", js_cocos2dx_ParallaxNode_create, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("create", js_cocos2dx_TMXTiledMap_create, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), + JS_FN("createWithXML", js_cocos2dx_TMXTiledMap_createWithXML, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; - jsb_cocos2d_ParallaxNode_prototype = JS_InitClass( + jsb_cocos2d_TMXTiledMap_prototype = JS_InitClass( cx, global, JS::RootedObject(cx, jsb_cocos2d_Node_prototype), - jsb_cocos2d_ParallaxNode_class, - js_cocos2dx_ParallaxNode_constructor, 0, // constructor + jsb_cocos2d_TMXTiledMap_class, + js_cocos2dx_TMXTiledMap_constructor, 0, // constructor properties, funcs, NULL, // no static properties @@ -64529,17 +64667,17 @@ void js_register_cocos2dx_ParallaxNode(JSContext *cx, JS::HandleObject global) { // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 -// JS_SetPropertyAttributes(cx, global, "ParallaxNode", JSPROP_ENUMERATE | JSPROP_READONLY, &found); +// JS_SetPropertyAttributes(cx, global, "TMXTiledMap", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table - TypeTest t; + TypeTest t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); - p->jsclass = jsb_cocos2d_ParallaxNode_class; - p->proto = jsb_cocos2d_ParallaxNode_prototype; + p->jsclass = jsb_cocos2d_TMXTiledMap_class; + p->proto = jsb_cocos2d_TMXTiledMap_prototype; p->parentProto = jsb_cocos2d_Node_prototype; _js_global_type_map.insert(std::make_pair(typeName, p)); } diff --git a/cocos/scripting/js-bindings/auto/jsb_cocos2dx_auto.hpp b/cocos/scripting/js-bindings/auto/jsb_cocos2dx_auto.hpp index 811a5ef1f9..a82ee08eaa 100644 --- a/cocos/scripting/js-bindings/auto/jsb_cocos2dx_auto.hpp +++ b/cocos/scripting/js-bindings/auto/jsb_cocos2dx_auto.hpp @@ -3624,6 +3624,20 @@ bool js_cocos2dx_TextFieldTTF_attachWithIME(JSContext *cx, uint32_t argc, jsval bool js_cocos2dx_TextFieldTTF_textFieldWithPlaceHolder(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TextFieldTTF_TextFieldTTF(JSContext *cx, uint32_t argc, jsval *vp); +extern JSClass *jsb_cocos2d_ParallaxNode_class; +extern JSObject *jsb_cocos2d_ParallaxNode_prototype; + +bool js_cocos2dx_ParallaxNode_constructor(JSContext *cx, uint32_t argc, jsval *vp); +void js_cocos2dx_ParallaxNode_finalize(JSContext *cx, JSObject *obj); +void js_register_cocos2dx_ParallaxNode(JSContext *cx, JS::HandleObject global); +void register_all_cocos2dx(JSContext* cx, JS::HandleObject obj); +bool js_cocos2dx_ParallaxNode_getParallaxArray(JSContext *cx, uint32_t argc, jsval *vp); +bool js_cocos2dx_ParallaxNode_addChild(JSContext *cx, uint32_t argc, jsval *vp); +bool js_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup(JSContext *cx, uint32_t argc, jsval *vp); +bool js_cocos2dx_ParallaxNode_setParallaxArray(JSContext *cx, uint32_t argc, jsval *vp); +bool js_cocos2dx_ParallaxNode_create(JSContext *cx, uint32_t argc, jsval *vp); +bool js_cocos2dx_ParallaxNode_ParallaxNode(JSContext *cx, uint32_t argc, jsval *vp); + extern JSClass *jsb_cocos2d_TMXObjectGroup_class; extern JSObject *jsb_cocos2d_TMXObjectGroup_prototype; @@ -3707,8 +3721,8 @@ bool js_cocos2dx_TMXMapInfo_create(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXMapInfo_createWithXML(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXMapInfo_TMXMapInfo(JSContext *cx, uint32_t argc, jsval *vp); -extern JSClass *jsb_cocos2d_experimental_TMXLayer_class; -extern JSObject *jsb_cocos2d_experimental_TMXLayer_prototype; +extern JSClass *jsb_cocos2d_TMXLayer_class; +extern JSObject *jsb_cocos2d_TMXLayer_prototype; bool js_cocos2dx_TMXLayer_constructor(JSContext *cx, uint32_t argc, jsval *vp); void js_cocos2dx_TMXLayer_finalize(JSContext *cx, JSObject *obj); @@ -3717,6 +3731,7 @@ void register_all_cocos2dx(JSContext* cx, JS::HandleObject obj); bool js_cocos2dx_TMXLayer_getTileGIDAt(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_getPositionAt(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_setLayerOrientation(JSContext *cx, uint32_t argc, jsval *vp); +bool js_cocos2dx_TMXLayer_releaseMap(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_setTiles(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_getLayerSize(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_setMapTileSize(JSContext *cx, uint32_t argc, jsval *vp); @@ -3724,9 +3739,8 @@ bool js_cocos2dx_TMXLayer_getLayerOrientation(JSContext *cx, uint32_t argc, jsva bool js_cocos2dx_TMXLayer_setProperties(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_setLayerName(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_removeTileAt(JSContext *cx, uint32_t argc, jsval *vp); -bool js_cocos2dx_TMXLayer_getProperties(JSContext *cx, uint32_t argc, jsval *vp); +bool js_cocos2dx_TMXLayer_initWithTilesetInfo(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_setupTiles(JSContext *cx, uint32_t argc, jsval *vp); -bool js_cocos2dx_TMXLayer_setupTileSprite(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_setTileGID(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_getMapTileSize(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_getProperty(JSContext *cx, uint32_t argc, jsval *vp); @@ -3734,12 +3748,13 @@ bool js_cocos2dx_TMXLayer_setLayerSize(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_getLayerName(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_setTileSet(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_getTileSet(JSContext *cx, uint32_t argc, jsval *vp); +bool js_cocos2dx_TMXLayer_getProperties(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_getTileAt(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_create(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXLayer_TMXLayer(JSContext *cx, uint32_t argc, jsval *vp); -extern JSClass *jsb_cocos2d_experimental_TMXTiledMap_class; -extern JSObject *jsb_cocos2d_experimental_TMXTiledMap_prototype; +extern JSClass *jsb_cocos2d_TMXTiledMap_class; +extern JSObject *jsb_cocos2d_TMXTiledMap_prototype; bool js_cocos2dx_TMXTiledMap_constructor(JSContext *cx, uint32_t argc, jsval *vp); void js_cocos2dx_TMXTiledMap_finalize(JSContext *cx, JSObject *obj); @@ -3750,6 +3765,8 @@ bool js_cocos2dx_TMXTiledMap_getProperty(JSContext *cx, uint32_t argc, jsval *vp bool js_cocos2dx_TMXTiledMap_setMapSize(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXTiledMap_getObjectGroup(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXTiledMap_getObjectGroups(JSContext *cx, uint32_t argc, jsval *vp); +bool js_cocos2dx_TMXTiledMap_initWithXML(JSContext *cx, uint32_t argc, jsval *vp); +bool js_cocos2dx_TMXTiledMap_initWithTMXFile(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXTiledMap_getTileSize(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXTiledMap_getMapSize(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXTiledMap_getProperties(JSContext *cx, uint32_t argc, jsval *vp); @@ -3761,20 +3778,7 @@ bool js_cocos2dx_TMXTiledMap_getMapOrientation(JSContext *cx, uint32_t argc, jsv bool js_cocos2dx_TMXTiledMap_setMapOrientation(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXTiledMap_create(JSContext *cx, uint32_t argc, jsval *vp); bool js_cocos2dx_TMXTiledMap_createWithXML(JSContext *cx, uint32_t argc, jsval *vp); - -extern JSClass *jsb_cocos2d_ParallaxNode_class; -extern JSObject *jsb_cocos2d_ParallaxNode_prototype; - -bool js_cocos2dx_ParallaxNode_constructor(JSContext *cx, uint32_t argc, jsval *vp); -void js_cocos2dx_ParallaxNode_finalize(JSContext *cx, JSObject *obj); -void js_register_cocos2dx_ParallaxNode(JSContext *cx, JS::HandleObject global); -void register_all_cocos2dx(JSContext* cx, JS::HandleObject obj); -bool js_cocos2dx_ParallaxNode_getParallaxArray(JSContext *cx, uint32_t argc, jsval *vp); -bool js_cocos2dx_ParallaxNode_addChild(JSContext *cx, uint32_t argc, jsval *vp); -bool js_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup(JSContext *cx, uint32_t argc, jsval *vp); -bool js_cocos2dx_ParallaxNode_setParallaxArray(JSContext *cx, uint32_t argc, jsval *vp); -bool js_cocos2dx_ParallaxNode_create(JSContext *cx, uint32_t argc, jsval *vp); -bool js_cocos2dx_ParallaxNode_ParallaxNode(JSContext *cx, uint32_t argc, jsval *vp); +bool js_cocos2dx_TMXTiledMap_TMXTiledMap(JSContext *cx, uint32_t argc, jsval *vp); extern JSClass *jsb_cocos2d_TileMapAtlas_class; extern JSObject *jsb_cocos2d_TileMapAtlas_prototype; diff --git a/cocos/scripting/js-bindings/manual/localstorage/js_bindings_system_functions.cpp b/cocos/scripting/js-bindings/manual/localstorage/js_bindings_system_functions.cpp index 6fe52144c3..590e26f198 100644 --- a/cocos/scripting/js-bindings/manual/localstorage/js_bindings_system_functions.cpp +++ b/cocos/scripting/js-bindings/manual/localstorage/js_bindings_system_functions.cpp @@ -69,5 +69,15 @@ bool JSB_localStorageSetItem(JSContext *cx, uint32_t argc, jsval *vp) { return true; } +// Arguments: char*, char* +// Ret value: void +bool JSB_localStorageClear(JSContext *cx, uint32_t argc, jsval *vp) { + JSB_PRECONDITION2( argc == 0, cx, false, "Invalid number of arguments" ); + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + + localStorageClear(); + args.rval().setUndefined(); + return true; +} //#endif // JSB_INCLUDE_SYSTEM diff --git a/cocos/scripting/js-bindings/manual/localstorage/js_bindings_system_functions.h b/cocos/scripting/js-bindings/manual/localstorage/js_bindings_system_functions.h index 85f9ea55c3..6560d0b2d3 100644 --- a/cocos/scripting/js-bindings/manual/localstorage/js_bindings_system_functions.h +++ b/cocos/scripting/js-bindings/manual/localstorage/js_bindings_system_functions.h @@ -12,6 +12,7 @@ extern "C" { bool JSB_localStorageGetItem(JSContext *cx, uint32_t argc, jsval *vp); bool JSB_localStorageRemoveItem(JSContext *cx, uint32_t argc, jsval *vp); bool JSB_localStorageSetItem(JSContext *cx, uint32_t argc, jsval *vp); +bool JSB_localStorageClear(JSContext *cx, uint32_t argc, jsval *vp); #ifdef __cplusplus } diff --git a/cocos/scripting/js-bindings/manual/localstorage/js_bindings_system_functions_registration.h b/cocos/scripting/js-bindings/manual/localstorage/js_bindings_system_functions_registration.h index 5774403878..c3798dd7f2 100644 --- a/cocos/scripting/js-bindings/manual/localstorage/js_bindings_system_functions_registration.h +++ b/cocos/scripting/js-bindings/manual/localstorage/js_bindings_system_functions_registration.h @@ -10,6 +10,7 @@ JS_DefineFunction(_cx, system, "getItem", JSB_localStorageGetItem, 1, JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_ENUMERATE ); JS_DefineFunction(_cx, system, "removeItem", JSB_localStorageRemoveItem, 1, JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_ENUMERATE ); JS_DefineFunction(_cx, system, "setItem", JSB_localStorageSetItem, 2, JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_ENUMERATE ); +JS_DefineFunction(_cx, system, "clear", JSB_localStorageClear, 0, JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_ENUMERATE ); //#endif // JSB_INCLUDE_SYSTEM diff --git a/cocos/scripting/js-bindings/manual/spine/jsb_cocos2dx_spine_manual.cpp b/cocos/scripting/js-bindings/manual/spine/jsb_cocos2dx_spine_manual.cpp index 22881421c7..c015e9c70d 100644 --- a/cocos/scripting/js-bindings/manual/spine/jsb_cocos2dx_spine_manual.cpp +++ b/cocos/scripting/js-bindings/manual/spine/jsb_cocos2dx_spine_manual.cpp @@ -69,7 +69,7 @@ jsval spbonedata_to_jsval(JSContext* cx, const spBoneData* v) // root haven't parent JS::RootedValue parentVal(cx); - if (strcmp(v->name, "root")) + if (strcmp(v->name, "root") && v->parent) parentVal = spbonedata_to_jsval(cx, v->parent); bool ok = JS_DefineProperty(cx, tmp, "name", JS::RootedValue(cx, c_string_to_jsval(cx, v->name)), JSPROP_ENUMERATE | JSPROP_PERMANENT) && @@ -98,7 +98,7 @@ jsval spbone_to_jsval(JSContext* cx, spBone& v) // root haven't parent JS::RootedValue parentVal(cx); - if (strcmp(v.data->name, "root")) + if (strcmp(v.data->name, "root") && v.parent) parentVal = spbone_to_jsval(cx, *v.parent); bool ok = JS_DefineProperty(cx, tmp, "data", JS::RootedValue(cx, spbonedata_to_jsval(cx, v.data)), JSPROP_ENUMERATE | JSPROP_PERMANENT) && diff --git a/cocos/scripting/js-bindings/script/ccui/jsb_ccui_create_apis.js b/cocos/scripting/js-bindings/script/ccui/jsb_ccui_create_apis.js index 86bd8f6ab7..f29af54e8d 100644 --- a/cocos/scripting/js-bindings/script/ccui/jsb_ccui_create_apis.js +++ b/cocos/scripting/js-bindings/script/ccui/jsb_ccui_create_apis.js @@ -150,7 +150,7 @@ cc.Scale9Sprite.prototype._ctor = function(file, rect, capInsets){ this.initWithFile(file, rect, capInsets); } }else{ - this.init(); + cc.Node.prototype.init.call(this); } }; diff --git a/cocos/scripting/js-bindings/script/jsb_cocos2d.js b/cocos/scripting/js-bindings/script/jsb_cocos2d.js index f97e120f39..f3ede487b4 100644 --- a/cocos/scripting/js-bindings/script/jsb_cocos2d.js +++ b/cocos/scripting/js-bindings/script/jsb_cocos2d.js @@ -246,8 +246,8 @@ cc.EventMouse.UP = 2; cc.EventMouse.MOVE = 3; cc.EventMouse.SCROLL = 4; cc.EventMouse.BUTTON_LEFT = 0; -cc.EventMouse.BUTTON_RIGHT = 2; -cc.EventMouse.BUTTON_MIDDLE = 1; +cc.EventMouse.BUTTON_RIGHT = 1; +cc.EventMouse.BUTTON_MIDDLE = 2; cc.EventMouse.BUTTON_4 = 3; cc.EventMouse.BUTTON_5 = 4; cc.EventMouse.BUTTON_6 = 5; diff --git a/cocos/scripting/js-bindings/script/jsb_property_apis.js b/cocos/scripting/js-bindings/script/jsb_property_apis.js index e80bc6aa33..41860118c3 100644 --- a/cocos/scripting/js-bindings/script/jsb_property_apis.js +++ b/cocos/scripting/js-bindings/script/jsb_property_apis.js @@ -250,7 +250,6 @@ cc.defineGetterSetter(_proto, "texture", _proto.getTexture, _proto.setTexture); _proto = cc.Texture2D.prototype; cc.defineGetterSetter(_proto, "name", _proto.getName); cc.defineGetterSetter(_proto, "pixelFormat", _proto.getPixelFormat); -cc.defineGetterSetter(_proto, "defaultPixelFormat", _proto.getDefaultAlphaPixelFormat, _proto.setDefaultAlphaPixelFormat); cc.defineGetterSetter(_proto, "pixelsWidth", _proto.getPixelsWide); cc.defineGetterSetter(_proto, "pixelsHeight", _proto.getPixelsHigh); cc.defineGetterSetter(_proto, "width", _proto._getWidth); @@ -258,6 +257,7 @@ cc.defineGetterSetter(_proto, "height", _proto._getHeight); cc.defineGetterSetter(_proto, "shaderProgram", _proto.getShaderProgram, _proto.setShaderProgram); cc.defineGetterSetter(_proto, "maxS", _proto.getMaxS, _proto.setMaxS); cc.defineGetterSetter(_proto, "maxT", _proto.getMaxT, _proto.setMaxT); +cc.defineGetterSetter(cc.Texture2D, "defaultPixelFormat", cc.Texture2D.getDefaultAlphaPixelFormat, cc.Texture2D.setDefaultAlphaPixelFormat); _proto = cc.LabelAtlas.prototype; cc.defineGetterSetter(_proto, "string", _proto.getString, _proto.setString); 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 a6366b4213..ae55f75851 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 @@ -1211,6 +1211,11 @@ -- @field [parent=#cc] SpriteFrameCache#SpriteFrameCache SpriteFrameCache preloaded module +-------------------------------------------------------- +-- the cc ParallaxNode +-- @field [parent=#cc] ParallaxNode#ParallaxNode ParallaxNode preloaded module + + -------------------------------------------------------- -- the cc TMXObjectGroup -- @field [parent=#cc] TMXObjectGroup#TMXObjectGroup TMXObjectGroup preloaded module @@ -1241,11 +1246,6 @@ -- @field [parent=#cc] TMXTiledMap#TMXTiledMap TMXTiledMap preloaded module --------------------------------------------------------- --- the cc ParallaxNode --- @field [parent=#cc] ParallaxNode#ParallaxNode ParallaxNode preloaded module - - -------------------------------------------------------- -- the cc TileMapAtlas -- @field [parent=#cc] TileMapAtlas#TileMapAtlas TileMapAtlas preloaded module diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp index 6dbd0519fe..8ab9cfbee0 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.cpp @@ -82176,6 +82176,209 @@ int lua_register_cocos2dx_SpriteFrameCache(lua_State* tolua_S) return 1; } +int lua_cocos2dx_ParallaxNode_addChild(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::ParallaxNode* 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.ParallaxNode",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::ParallaxNode*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_ParallaxNode_addChild'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 4) + { + cocos2d::Node* arg0; + int arg1; + cocos2d::Vec2 arg2; + cocos2d::Vec2 arg3; + + ok &= luaval_to_object(tolua_S, 2, "cc.Node",&arg0); + + ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "cc.ParallaxNode:addChild"); + + ok &= luaval_to_vec2(tolua_S, 4, &arg2, "cc.ParallaxNode:addChild"); + + ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.ParallaxNode:addChild"); + if(!ok) + { + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ParallaxNode_addChild'", nullptr); + return 0; + } + cobj->addChild(arg0, arg1, arg2, arg3); + lua_settop(tolua_S, 1); + return 1; + } + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.ParallaxNode:addChild",argc, 4); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ParallaxNode_addChild'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::ParallaxNode* 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.ParallaxNode",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::ParallaxNode*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + bool arg0; + + ok &= luaval_to_boolean(tolua_S, 2,&arg0, "cc.ParallaxNode:removeAllChildrenWithCleanup"); + if(!ok) + { + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup'", nullptr); + return 0; + } + cobj->removeAllChildrenWithCleanup(arg0); + lua_settop(tolua_S, 1); + return 1; + } + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.ParallaxNode:removeAllChildrenWithCleanup",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_ParallaxNode_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.ParallaxNode",0,&tolua_err)) goto tolua_lerror; +#endif + + argc = lua_gettop(tolua_S) - 1; + + if (argc == 0) + { + if(!ok) + { + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ParallaxNode_create'", nullptr); + return 0; + } + cocos2d::ParallaxNode* ret = cocos2d::ParallaxNode::create(); + object_to_luaval(tolua_S, "cc.ParallaxNode",(cocos2d::ParallaxNode*)ret); + return 1; + } + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.ParallaxNode:create",argc, 0); + return 0; +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ParallaxNode_create'.",&tolua_err); +#endif + return 0; +} +int lua_cocos2dx_ParallaxNode_constructor(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::ParallaxNode* 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) + { + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ParallaxNode_constructor'", nullptr); + return 0; + } + cobj = new cocos2d::ParallaxNode(); + cobj->autorelease(); + int ID = (int)cobj->_ID ; + int* luaID = &cobj->_luaID ; + toluafix_pushusertype_ccobject(tolua_S, ID, luaID, (void*)cobj,"cc.ParallaxNode"); + return 1; + } + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.ParallaxNode:ParallaxNode",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ParallaxNode_constructor'.",&tolua_err); +#endif + + return 0; +} + +static int lua_cocos2dx_ParallaxNode_finalize(lua_State* tolua_S) +{ + printf("luabindings: finalizing LUA object (ParallaxNode)"); + return 0; +} + +int lua_register_cocos2dx_ParallaxNode(lua_State* tolua_S) +{ + tolua_usertype(tolua_S,"cc.ParallaxNode"); + tolua_cclass(tolua_S,"ParallaxNode","cc.ParallaxNode","cc.Node",nullptr); + + tolua_beginmodule(tolua_S,"ParallaxNode"); + tolua_function(tolua_S,"new",lua_cocos2dx_ParallaxNode_constructor); + tolua_function(tolua_S,"addChild",lua_cocos2dx_ParallaxNode_addChild); + tolua_function(tolua_S,"removeAllChildrenWithCleanup",lua_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup); + tolua_function(tolua_S,"create", lua_cocos2dx_ParallaxNode_create); + tolua_endmodule(tolua_S); + std::string typeName = typeid(cocos2d::ParallaxNode).name(); + g_luaType[typeName] = "cc.ParallaxNode"; + g_typeCast["ParallaxNode"] = "cc.ParallaxNode"; + return 1; +} + int lua_cocos2dx_TMXObjectGroup_setPositionOffset(lua_State* tolua_S) { int argc = 0; @@ -84724,7 +84927,7 @@ int lua_register_cocos2dx_TMXMapInfo(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_getPositionAt(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -84733,10 +84936,10 @@ int lua_cocos2dx_TMXLayer_getPositionAt(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -84751,7 +84954,7 @@ int lua_cocos2dx_TMXLayer_getPositionAt(lua_State* tolua_S) { cocos2d::Vec2 arg0; - ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccexp.TMXLayer:getPositionAt"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.TMXLayer:getPositionAt"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_getPositionAt'", nullptr); @@ -84761,7 +84964,7 @@ int lua_cocos2dx_TMXLayer_getPositionAt(lua_State* tolua_S) vec2_to_luaval(tolua_S, ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:getPositionAt",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:getPositionAt",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -84774,7 +84977,7 @@ int lua_cocos2dx_TMXLayer_getPositionAt(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_setLayerOrientation(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -84783,10 +84986,10 @@ int lua_cocos2dx_TMXLayer_setLayerOrientation(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -84801,7 +85004,7 @@ int lua_cocos2dx_TMXLayer_setLayerOrientation(lua_State* tolua_S) { int arg0; - ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccexp.TMXLayer:setLayerOrientation"); + ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "cc.TMXLayer:setLayerOrientation"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_setLayerOrientation'", nullptr); @@ -84811,7 +85014,7 @@ int lua_cocos2dx_TMXLayer_setLayerOrientation(lua_State* tolua_S) lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:setLayerOrientation",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:setLayerOrientation",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -84821,10 +85024,10 @@ int lua_cocos2dx_TMXLayer_setLayerOrientation(lua_State* tolua_S) return 0; } -int lua_cocos2dx_TMXLayer_getLayerSize(lua_State* tolua_S) +int lua_cocos2dx_TMXLayer_releaseMap(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -84833,10 +85036,57 @@ int lua_cocos2dx_TMXLayer_getLayerSize(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_TMXLayer_releaseMap'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 0) + { + if(!ok) + { + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_releaseMap'", nullptr); + return 0; + } + cobj->releaseMap(); + lua_settop(tolua_S, 1); + return 1; + } + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:releaseMap",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_TMXLayer_releaseMap'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_TMXLayer_getLayerSize(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::TMXLayer* 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.TMXLayer",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -84858,7 +85108,7 @@ int lua_cocos2dx_TMXLayer_getLayerSize(lua_State* tolua_S) size_to_luaval(tolua_S, ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:getLayerSize",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:getLayerSize",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 @@ -84871,7 +85121,7 @@ int lua_cocos2dx_TMXLayer_getLayerSize(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_setMapTileSize(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -84880,10 +85130,10 @@ int lua_cocos2dx_TMXLayer_setMapTileSize(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -84898,7 +85148,7 @@ int lua_cocos2dx_TMXLayer_setMapTileSize(lua_State* tolua_S) { cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccexp.TMXLayer:setMapTileSize"); + ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.TMXLayer:setMapTileSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_setMapTileSize'", nullptr); @@ -84908,7 +85158,7 @@ int lua_cocos2dx_TMXLayer_setMapTileSize(lua_State* tolua_S) lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:setMapTileSize",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:setMapTileSize",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -84921,7 +85171,7 @@ int lua_cocos2dx_TMXLayer_setMapTileSize(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_getLayerOrientation(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -84930,10 +85180,10 @@ int lua_cocos2dx_TMXLayer_getLayerOrientation(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -84955,7 +85205,7 @@ int lua_cocos2dx_TMXLayer_getLayerOrientation(lua_State* tolua_S) tolua_pushnumber(tolua_S,(lua_Number)ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:getLayerOrientation",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:getLayerOrientation",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 @@ -84968,7 +85218,7 @@ int lua_cocos2dx_TMXLayer_getLayerOrientation(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_setProperties(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -84977,10 +85227,10 @@ int lua_cocos2dx_TMXLayer_setProperties(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -84995,7 +85245,7 @@ int lua_cocos2dx_TMXLayer_setProperties(lua_State* tolua_S) { cocos2d::ValueMap arg0; - ok &= luaval_to_ccvaluemap(tolua_S, 2, &arg0, "ccexp.TMXLayer:setProperties"); + ok &= luaval_to_ccvaluemap(tolua_S, 2, &arg0, "cc.TMXLayer:setProperties"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_setProperties'", nullptr); @@ -85005,7 +85255,7 @@ int lua_cocos2dx_TMXLayer_setProperties(lua_State* tolua_S) lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:setProperties",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:setProperties",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -85018,7 +85268,7 @@ int lua_cocos2dx_TMXLayer_setProperties(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_setLayerName(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85027,10 +85277,10 @@ int lua_cocos2dx_TMXLayer_setLayerName(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85045,7 +85295,7 @@ int lua_cocos2dx_TMXLayer_setLayerName(lua_State* tolua_S) { std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccexp.TMXLayer:setLayerName"); + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXLayer:setLayerName"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_setLayerName'", nullptr); @@ -85055,7 +85305,7 @@ int lua_cocos2dx_TMXLayer_setLayerName(lua_State* tolua_S) lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:setLayerName",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:setLayerName",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -85068,7 +85318,7 @@ int lua_cocos2dx_TMXLayer_setLayerName(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_removeTileAt(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85077,10 +85327,10 @@ int lua_cocos2dx_TMXLayer_removeTileAt(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85095,7 +85345,7 @@ int lua_cocos2dx_TMXLayer_removeTileAt(lua_State* tolua_S) { cocos2d::Vec2 arg0; - ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccexp.TMXLayer:removeTileAt"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.TMXLayer:removeTileAt"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_removeTileAt'", nullptr); @@ -85105,7 +85355,7 @@ int lua_cocos2dx_TMXLayer_removeTileAt(lua_State* tolua_S) lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:removeTileAt",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:removeTileAt",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -85115,49 +85365,58 @@ int lua_cocos2dx_TMXLayer_removeTileAt(lua_State* tolua_S) return 0; } -int lua_cocos2dx_TMXLayer_getProperties(lua_State* tolua_S) +int lua_cocos2dx_TMXLayer_initWithTilesetInfo(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; + #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif + #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); + #if COCOS2D_DEBUG >= 1 - if (!cobj) + if (!cobj) { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_TMXLayer_getProperties'", nullptr); + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_TMXLayer_initWithTilesetInfo'", nullptr); return 0; } #endif + argc = lua_gettop(tolua_S)-1; - do{ - if (argc == 0) { - cocos2d::ValueMap& ret = cobj->getProperties(); - ccvaluemap_to_luaval(tolua_S, ret); - return 1; + if (argc == 3) + { + cocos2d::TMXTilesetInfo* arg0; + cocos2d::TMXLayerInfo* arg1; + cocos2d::TMXMapInfo* arg2; + + ok &= luaval_to_object(tolua_S, 2, "cc.TMXTilesetInfo",&arg0); + + ok &= luaval_to_object(tolua_S, 3, "cc.TMXLayerInfo",&arg1); + + ok &= luaval_to_object(tolua_S, 4, "cc.TMXMapInfo",&arg2); + if(!ok) + { + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_initWithTilesetInfo'", nullptr); + return 0; } - }while(0); - ok = true; - do{ - if (argc == 0) { - const cocos2d::ValueMap& ret = cobj->getProperties(); - ccvaluemap_to_luaval(tolua_S, ret); - return 1; - } - }while(0); - ok = true; - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:getProperties",argc, 0); + bool ret = cobj->initWithTilesetInfo(arg0, arg1, arg2); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:initWithTilesetInfo",argc, 3); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_TMXLayer_getProperties'.",&tolua_err); + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_TMXLayer_initWithTilesetInfo'.",&tolua_err); #endif return 0; @@ -85165,7 +85424,7 @@ int lua_cocos2dx_TMXLayer_getProperties(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_setupTiles(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85174,10 +85433,10 @@ int lua_cocos2dx_TMXLayer_setupTiles(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85199,7 +85458,7 @@ int lua_cocos2dx_TMXLayer_setupTiles(lua_State* tolua_S) lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:setupTiles",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:setupTiles",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 @@ -85209,75 +85468,19 @@ int lua_cocos2dx_TMXLayer_setupTiles(lua_State* tolua_S) return 0; } -int lua_cocos2dx_TMXLayer_setupTileSprite(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; - bool ok = true; - -#if COCOS2D_DEBUG >= 1 - tolua_Error tolua_err; -#endif - - -#if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_TMXLayer_setupTileSprite'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 3) - { - cocos2d::Sprite* arg0; - cocos2d::Vec2 arg1; - int arg2; - - ok &= luaval_to_object(tolua_S, 2, "cc.Sprite",&arg0); - - ok &= luaval_to_vec2(tolua_S, 3, &arg1, "ccexp.TMXLayer:setupTileSprite"); - - ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "ccexp.TMXLayer:setupTileSprite"); - if(!ok) - { - tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_setupTileSprite'", nullptr); - return 0; - } - cobj->setupTileSprite(arg0, arg1, arg2); - lua_settop(tolua_S, 1); - return 1; - } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:setupTileSprite",argc, 3); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_TMXLayer_setupTileSprite'.",&tolua_err); -#endif - - return 0; -} int lua_cocos2dx_TMXLayer_setTileGID(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) { @@ -85288,16 +85491,16 @@ int lua_cocos2dx_TMXLayer_setTileGID(lua_State* tolua_S) argc = lua_gettop(tolua_S)-1; do{ if (argc == 3) { - int arg0; - ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccexp.TMXLayer:setTileGID"); + unsigned int arg0; + ok &= luaval_to_uint32(tolua_S, 2,&arg0, "cc.TMXLayer:setTileGID"); if (!ok) { break; } cocos2d::Vec2 arg1; - ok &= luaval_to_vec2(tolua_S, 3, &arg1, "ccexp.TMXLayer:setTileGID"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.TMXLayer:setTileGID"); if (!ok) { break; } cocos2d::TMXTileFlags_ arg2; - ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "ccexp.TMXLayer:setTileGID"); + ok &= luaval_to_int32(tolua_S, 4,(int *)&arg2, "cc.TMXLayer:setTileGID"); if (!ok) { break; } cobj->setTileGID(arg0, arg1, arg2); @@ -85308,12 +85511,12 @@ int lua_cocos2dx_TMXLayer_setTileGID(lua_State* tolua_S) ok = true; do{ if (argc == 2) { - int arg0; - ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccexp.TMXLayer:setTileGID"); + unsigned int arg0; + ok &= luaval_to_uint32(tolua_S, 2,&arg0, "cc.TMXLayer:setTileGID"); if (!ok) { break; } cocos2d::Vec2 arg1; - ok &= luaval_to_vec2(tolua_S, 3, &arg1, "ccexp.TMXLayer:setTileGID"); + ok &= luaval_to_vec2(tolua_S, 3, &arg1, "cc.TMXLayer:setTileGID"); if (!ok) { break; } cobj->setTileGID(arg0, arg1); @@ -85322,7 +85525,7 @@ int lua_cocos2dx_TMXLayer_setTileGID(lua_State* tolua_S) } }while(0); ok = true; - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:setTileGID",argc, 2); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:setTileGID",argc, 2); return 0; #if COCOS2D_DEBUG >= 1 @@ -85335,7 +85538,7 @@ int lua_cocos2dx_TMXLayer_setTileGID(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_getMapTileSize(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85344,10 +85547,10 @@ int lua_cocos2dx_TMXLayer_getMapTileSize(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85369,7 +85572,7 @@ int lua_cocos2dx_TMXLayer_getMapTileSize(lua_State* tolua_S) size_to_luaval(tolua_S, ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:getMapTileSize",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:getMapTileSize",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 @@ -85382,7 +85585,7 @@ int lua_cocos2dx_TMXLayer_getMapTileSize(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_getProperty(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85391,10 +85594,10 @@ int lua_cocos2dx_TMXLayer_getProperty(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85409,7 +85612,7 @@ int lua_cocos2dx_TMXLayer_getProperty(lua_State* tolua_S) { std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccexp.TMXLayer:getProperty"); + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXLayer:getProperty"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_getProperty'", nullptr); @@ -85419,7 +85622,7 @@ int lua_cocos2dx_TMXLayer_getProperty(lua_State* tolua_S) ccvalue_to_luaval(tolua_S, ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:getProperty",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:getProperty",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -85432,7 +85635,7 @@ int lua_cocos2dx_TMXLayer_getProperty(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_setLayerSize(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85441,10 +85644,10 @@ int lua_cocos2dx_TMXLayer_setLayerSize(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85459,7 +85662,7 @@ int lua_cocos2dx_TMXLayer_setLayerSize(lua_State* tolua_S) { cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccexp.TMXLayer:setLayerSize"); + ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.TMXLayer:setLayerSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_setLayerSize'", nullptr); @@ -85469,7 +85672,7 @@ int lua_cocos2dx_TMXLayer_setLayerSize(lua_State* tolua_S) lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:setLayerSize",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:setLayerSize",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -85482,7 +85685,7 @@ int lua_cocos2dx_TMXLayer_setLayerSize(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_getLayerName(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85491,10 +85694,10 @@ int lua_cocos2dx_TMXLayer_getLayerName(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85516,7 +85719,7 @@ int lua_cocos2dx_TMXLayer_getLayerName(lua_State* tolua_S) tolua_pushcppstring(tolua_S,ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:getLayerName",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:getLayerName",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 @@ -85529,7 +85732,7 @@ int lua_cocos2dx_TMXLayer_getLayerName(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_setTileSet(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85538,10 +85741,10 @@ int lua_cocos2dx_TMXLayer_setTileSet(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85566,7 +85769,7 @@ int lua_cocos2dx_TMXLayer_setTileSet(lua_State* tolua_S) lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:setTileSet",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:setTileSet",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -85579,7 +85782,7 @@ int lua_cocos2dx_TMXLayer_setTileSet(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_getTileSet(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85588,10 +85791,10 @@ int lua_cocos2dx_TMXLayer_getTileSet(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85613,7 +85816,7 @@ int lua_cocos2dx_TMXLayer_getTileSet(lua_State* tolua_S) object_to_luaval(tolua_S, "cc.TMXTilesetInfo",(cocos2d::TMXTilesetInfo*)ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:getTileSet",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:getTileSet",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 @@ -85623,10 +85826,57 @@ int lua_cocos2dx_TMXLayer_getTileSet(lua_State* tolua_S) return 0; } +int lua_cocos2dx_TMXLayer_getProperties(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::TMXLayer* 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.TMXLayer",0,&tolua_err)) goto tolua_lerror; +#endif + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_TMXLayer_getProperties'", nullptr); + return 0; + } +#endif + argc = lua_gettop(tolua_S)-1; + do{ + if (argc == 0) { + cocos2d::ValueMap& ret = cobj->getProperties(); + ccvaluemap_to_luaval(tolua_S, ret); + return 1; + } + }while(0); + ok = true; + do{ + if (argc == 0) { + const cocos2d::ValueMap& ret = cobj->getProperties(); + ccvaluemap_to_luaval(tolua_S, ret); + return 1; + } + }while(0); + ok = true; + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:getProperties",argc, 0); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_TMXLayer_getProperties'.",&tolua_err); +#endif + + return 0; +} int lua_cocos2dx_TMXLayer_getTileAt(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85635,10 +85885,10 @@ int lua_cocos2dx_TMXLayer_getTileAt(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXLayer*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXLayer*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85653,7 +85903,7 @@ int lua_cocos2dx_TMXLayer_getTileAt(lua_State* tolua_S) { cocos2d::Vec2 arg0; - ok &= luaval_to_vec2(tolua_S, 2, &arg0, "ccexp.TMXLayer:getTileAt"); + ok &= luaval_to_vec2(tolua_S, 2, &arg0, "cc.TMXLayer:getTileAt"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_getTileAt'", nullptr); @@ -85663,7 +85913,7 @@ int lua_cocos2dx_TMXLayer_getTileAt(lua_State* tolua_S) object_to_luaval(tolua_S, "cc.Sprite",(cocos2d::Sprite*)ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:getTileAt",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:getTileAt",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -85683,7 +85933,7 @@ int lua_cocos2dx_TMXLayer_create(lua_State* tolua_S) #endif #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertable(tolua_S,1,"ccexp.TMXLayer",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertable(tolua_S,1,"cc.TMXLayer",0,&tolua_err)) goto tolua_lerror; #endif argc = lua_gettop(tolua_S) - 1; @@ -85701,11 +85951,11 @@ int lua_cocos2dx_TMXLayer_create(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_create'", nullptr); return 0; } - cocos2d::experimental::TMXLayer* ret = cocos2d::experimental::TMXLayer::create(arg0, arg1, arg2); - object_to_luaval(tolua_S, "ccexp.TMXLayer",(cocos2d::experimental::TMXLayer*)ret); + cocos2d::TMXLayer* ret = cocos2d::TMXLayer::create(arg0, arg1, arg2); + object_to_luaval(tolua_S, "cc.TMXLayer",(cocos2d::TMXLayer*)ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "ccexp.TMXLayer:create",argc, 3); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.TMXLayer:create",argc, 3); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: @@ -85716,7 +85966,7 @@ int lua_cocos2dx_TMXLayer_create(lua_State* tolua_S) int lua_cocos2dx_TMXLayer_constructor(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXLayer* cobj = nullptr; + cocos2d::TMXLayer* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85733,14 +85983,14 @@ int lua_cocos2dx_TMXLayer_constructor(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXLayer_constructor'", nullptr); return 0; } - cobj = new cocos2d::experimental::TMXLayer(); + cobj = new cocos2d::TMXLayer(); cobj->autorelease(); int ID = (int)cobj->_ID ; int* luaID = &cobj->_luaID ; - toluafix_pushusertype_ccobject(tolua_S, ID, luaID, (void*)cobj,"ccexp.TMXLayer"); + toluafix_pushusertype_ccobject(tolua_S, ID, luaID, (void*)cobj,"cc.TMXLayer"); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXLayer:TMXLayer",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXLayer:TMXLayer",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 @@ -85758,22 +86008,22 @@ static int lua_cocos2dx_TMXLayer_finalize(lua_State* tolua_S) int lua_register_cocos2dx_TMXLayer(lua_State* tolua_S) { - tolua_usertype(tolua_S,"ccexp.TMXLayer"); - tolua_cclass(tolua_S,"TMXLayer","ccexp.TMXLayer","cc.Node",nullptr); + tolua_usertype(tolua_S,"cc.TMXLayer"); + tolua_cclass(tolua_S,"TMXLayer","cc.TMXLayer","cc.SpriteBatchNode",nullptr); tolua_beginmodule(tolua_S,"TMXLayer"); tolua_function(tolua_S,"new",lua_cocos2dx_TMXLayer_constructor); tolua_function(tolua_S,"getPositionAt",lua_cocos2dx_TMXLayer_getPositionAt); tolua_function(tolua_S,"setLayerOrientation",lua_cocos2dx_TMXLayer_setLayerOrientation); + tolua_function(tolua_S,"releaseMap",lua_cocos2dx_TMXLayer_releaseMap); tolua_function(tolua_S,"getLayerSize",lua_cocos2dx_TMXLayer_getLayerSize); tolua_function(tolua_S,"setMapTileSize",lua_cocos2dx_TMXLayer_setMapTileSize); tolua_function(tolua_S,"getLayerOrientation",lua_cocos2dx_TMXLayer_getLayerOrientation); tolua_function(tolua_S,"setProperties",lua_cocos2dx_TMXLayer_setProperties); tolua_function(tolua_S,"setLayerName",lua_cocos2dx_TMXLayer_setLayerName); tolua_function(tolua_S,"removeTileAt",lua_cocos2dx_TMXLayer_removeTileAt); - tolua_function(tolua_S,"getProperties",lua_cocos2dx_TMXLayer_getProperties); + tolua_function(tolua_S,"initWithTilesetInfo",lua_cocos2dx_TMXLayer_initWithTilesetInfo); tolua_function(tolua_S,"setupTiles",lua_cocos2dx_TMXLayer_setupTiles); - tolua_function(tolua_S,"setupTileSprite",lua_cocos2dx_TMXLayer_setupTileSprite); tolua_function(tolua_S,"setTileGID",lua_cocos2dx_TMXLayer_setTileGID); tolua_function(tolua_S,"getMapTileSize",lua_cocos2dx_TMXLayer_getMapTileSize); tolua_function(tolua_S,"getProperty",lua_cocos2dx_TMXLayer_getProperty); @@ -85781,19 +86031,20 @@ int lua_register_cocos2dx_TMXLayer(lua_State* tolua_S) tolua_function(tolua_S,"getLayerName",lua_cocos2dx_TMXLayer_getLayerName); tolua_function(tolua_S,"setTileSet",lua_cocos2dx_TMXLayer_setTileSet); tolua_function(tolua_S,"getTileSet",lua_cocos2dx_TMXLayer_getTileSet); + tolua_function(tolua_S,"getProperties",lua_cocos2dx_TMXLayer_getProperties); tolua_function(tolua_S,"getTileAt",lua_cocos2dx_TMXLayer_getTileAt); tolua_function(tolua_S,"create", lua_cocos2dx_TMXLayer_create); tolua_endmodule(tolua_S); - std::string typeName = typeid(cocos2d::experimental::TMXLayer).name(); - g_luaType[typeName] = "ccexp.TMXLayer"; - g_typeCast["TMXLayer"] = "ccexp.TMXLayer"; + std::string typeName = typeid(cocos2d::TMXLayer).name(); + g_luaType[typeName] = "cc.TMXLayer"; + g_typeCast["TMXLayer"] = "cc.TMXLayer"; return 1; } int lua_cocos2dx_TMXTiledMap_setObjectGroups(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXTiledMap* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85802,10 +86053,10 @@ int lua_cocos2dx_TMXTiledMap_setObjectGroups(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85820,7 +86071,7 @@ int lua_cocos2dx_TMXTiledMap_setObjectGroups(lua_State* tolua_S) { cocos2d::Vector arg0; - ok &= luaval_to_ccvector(tolua_S, 2, &arg0, "ccexp.TMXTiledMap:setObjectGroups"); + ok &= luaval_to_ccvector(tolua_S, 2, &arg0, "cc.TMXTiledMap:setObjectGroups"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_setObjectGroups'", nullptr); @@ -85830,7 +86081,7 @@ int lua_cocos2dx_TMXTiledMap_setObjectGroups(lua_State* tolua_S) lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXTiledMap:setObjectGroups",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:setObjectGroups",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -85843,7 +86094,7 @@ int lua_cocos2dx_TMXTiledMap_setObjectGroups(lua_State* tolua_S) int lua_cocos2dx_TMXTiledMap_getProperty(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXTiledMap* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85852,10 +86103,10 @@ int lua_cocos2dx_TMXTiledMap_getProperty(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85870,7 +86121,7 @@ int lua_cocos2dx_TMXTiledMap_getProperty(lua_State* tolua_S) { std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccexp.TMXTiledMap:getProperty"); + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXTiledMap:getProperty"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_getProperty'", nullptr); @@ -85880,7 +86131,7 @@ int lua_cocos2dx_TMXTiledMap_getProperty(lua_State* tolua_S) ccvalue_to_luaval(tolua_S, ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXTiledMap:getProperty",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:getProperty",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -85893,7 +86144,7 @@ int lua_cocos2dx_TMXTiledMap_getProperty(lua_State* tolua_S) int lua_cocos2dx_TMXTiledMap_setMapSize(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXTiledMap* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85902,10 +86153,10 @@ int lua_cocos2dx_TMXTiledMap_setMapSize(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85920,7 +86171,7 @@ int lua_cocos2dx_TMXTiledMap_setMapSize(lua_State* tolua_S) { cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccexp.TMXTiledMap:setMapSize"); + ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.TMXTiledMap:setMapSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_setMapSize'", nullptr); @@ -85930,7 +86181,7 @@ int lua_cocos2dx_TMXTiledMap_setMapSize(lua_State* tolua_S) lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXTiledMap:setMapSize",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:setMapSize",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -85943,7 +86194,7 @@ int lua_cocos2dx_TMXTiledMap_setMapSize(lua_State* tolua_S) int lua_cocos2dx_TMXTiledMap_getObjectGroup(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXTiledMap* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -85952,10 +86203,10 @@ int lua_cocos2dx_TMXTiledMap_getObjectGroup(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -85970,7 +86221,7 @@ int lua_cocos2dx_TMXTiledMap_getObjectGroup(lua_State* tolua_S) { std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccexp.TMXTiledMap:getObjectGroup"); + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXTiledMap:getObjectGroup"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_getObjectGroup'", nullptr); @@ -85980,7 +86231,7 @@ int lua_cocos2dx_TMXTiledMap_getObjectGroup(lua_State* tolua_S) object_to_luaval(tolua_S, "cc.TMXObjectGroup",(cocos2d::TMXObjectGroup*)ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXTiledMap:getObjectGroup",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:getObjectGroup",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -85993,16 +86244,16 @@ int lua_cocos2dx_TMXTiledMap_getObjectGroup(lua_State* tolua_S) int lua_cocos2dx_TMXTiledMap_getObjectGroups(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXTiledMap* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 tolua_Error tolua_err; #endif #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) { @@ -86027,7 +86278,7 @@ int lua_cocos2dx_TMXTiledMap_getObjectGroups(lua_State* tolua_S) } }while(0); ok = true; - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXTiledMap:getObjectGroups",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:getObjectGroups",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 @@ -86037,10 +86288,10 @@ int lua_cocos2dx_TMXTiledMap_getObjectGroups(lua_State* tolua_S) return 0; } -int lua_cocos2dx_TMXTiledMap_getTileSize(lua_State* tolua_S) +int lua_cocos2dx_TMXTiledMap_initWithXML(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXTiledMap* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -86049,10 +86300,113 @@ int lua_cocos2dx_TMXTiledMap_getTileSize(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_TMXTiledMap_initWithXML'", nullptr); + return 0; + } +#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.TMXTiledMap:initWithXML"); + + ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.TMXTiledMap:initWithXML"); + if(!ok) + { + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_initWithXML'", nullptr); + return 0; + } + bool ret = cobj->initWithXML(arg0, arg1); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:initWithXML",argc, 2); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_TMXTiledMap_initWithXML'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_TMXTiledMap_initWithTMXFile(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::TMXTiledMap* 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.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_TMXTiledMap_initWithTMXFile'", 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.TMXTiledMap:initWithTMXFile"); + if(!ok) + { + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_initWithTMXFile'", nullptr); + return 0; + } + bool ret = cobj->initWithTMXFile(arg0); + tolua_pushboolean(tolua_S,(bool)ret); + return 1; + } + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:initWithTMXFile",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 + tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_TMXTiledMap_initWithTMXFile'.",&tolua_err); +#endif + + return 0; +} +int lua_cocos2dx_TMXTiledMap_getTileSize(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::TMXTiledMap* 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.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -86074,7 +86428,7 @@ int lua_cocos2dx_TMXTiledMap_getTileSize(lua_State* tolua_S) size_to_luaval(tolua_S, ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXTiledMap:getTileSize",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:getTileSize",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 @@ -86087,7 +86441,7 @@ int lua_cocos2dx_TMXTiledMap_getTileSize(lua_State* tolua_S) int lua_cocos2dx_TMXTiledMap_getMapSize(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXTiledMap* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -86096,10 +86450,10 @@ int lua_cocos2dx_TMXTiledMap_getMapSize(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -86121,7 +86475,7 @@ int lua_cocos2dx_TMXTiledMap_getMapSize(lua_State* tolua_S) size_to_luaval(tolua_S, ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXTiledMap:getMapSize",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:getMapSize",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 @@ -86134,7 +86488,7 @@ int lua_cocos2dx_TMXTiledMap_getMapSize(lua_State* tolua_S) int lua_cocos2dx_TMXTiledMap_getProperties(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXTiledMap* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -86143,10 +86497,10 @@ int lua_cocos2dx_TMXTiledMap_getProperties(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -86164,11 +86518,11 @@ int lua_cocos2dx_TMXTiledMap_getProperties(lua_State* tolua_S) tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_getProperties'", nullptr); return 0; } - const cocos2d::ValueMap& ret = cobj->getProperties(); + cocos2d::ValueMap& ret = cobj->getProperties(); ccvaluemap_to_luaval(tolua_S, ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXTiledMap:getProperties",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:getProperties",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 @@ -86181,7 +86535,7 @@ int lua_cocos2dx_TMXTiledMap_getProperties(lua_State* tolua_S) int lua_cocos2dx_TMXTiledMap_setTileSize(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXTiledMap* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -86190,10 +86544,10 @@ int lua_cocos2dx_TMXTiledMap_setTileSize(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -86208,7 +86562,7 @@ int lua_cocos2dx_TMXTiledMap_setTileSize(lua_State* tolua_S) { cocos2d::Size arg0; - ok &= luaval_to_size(tolua_S, 2, &arg0, "ccexp.TMXTiledMap:setTileSize"); + ok &= luaval_to_size(tolua_S, 2, &arg0, "cc.TMXTiledMap:setTileSize"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_setTileSize'", nullptr); @@ -86218,7 +86572,7 @@ int lua_cocos2dx_TMXTiledMap_setTileSize(lua_State* tolua_S) lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXTiledMap:setTileSize",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:setTileSize",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -86231,7 +86585,7 @@ int lua_cocos2dx_TMXTiledMap_setTileSize(lua_State* tolua_S) int lua_cocos2dx_TMXTiledMap_setProperties(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXTiledMap* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -86240,10 +86594,10 @@ int lua_cocos2dx_TMXTiledMap_setProperties(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -86258,7 +86612,7 @@ int lua_cocos2dx_TMXTiledMap_setProperties(lua_State* tolua_S) { cocos2d::ValueMap arg0; - ok &= luaval_to_ccvaluemap(tolua_S, 2, &arg0, "ccexp.TMXTiledMap:setProperties"); + ok &= luaval_to_ccvaluemap(tolua_S, 2, &arg0, "cc.TMXTiledMap:setProperties"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_setProperties'", nullptr); @@ -86268,7 +86622,7 @@ int lua_cocos2dx_TMXTiledMap_setProperties(lua_State* tolua_S) lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXTiledMap:setProperties",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:setProperties",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -86281,7 +86635,7 @@ int lua_cocos2dx_TMXTiledMap_setProperties(lua_State* tolua_S) int lua_cocos2dx_TMXTiledMap_getLayer(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXTiledMap* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -86290,10 +86644,10 @@ int lua_cocos2dx_TMXTiledMap_getLayer(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -86308,17 +86662,17 @@ int lua_cocos2dx_TMXTiledMap_getLayer(lua_State* tolua_S) { std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccexp.TMXTiledMap:getLayer"); + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXTiledMap:getLayer"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_getLayer'", nullptr); return 0; } - cocos2d::experimental::TMXLayer* ret = cobj->getLayer(arg0); - object_to_luaval(tolua_S, "ccexp.TMXLayer",(cocos2d::experimental::TMXLayer*)ret); + cocos2d::TMXLayer* ret = cobj->getLayer(arg0); + object_to_luaval(tolua_S, "cc.TMXLayer",(cocos2d::TMXLayer*)ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXTiledMap:getLayer",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:getLayer",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -86331,7 +86685,7 @@ int lua_cocos2dx_TMXTiledMap_getLayer(lua_State* tolua_S) int lua_cocos2dx_TMXTiledMap_getMapOrientation(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXTiledMap* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -86340,10 +86694,10 @@ int lua_cocos2dx_TMXTiledMap_getMapOrientation(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -86365,7 +86719,7 @@ int lua_cocos2dx_TMXTiledMap_getMapOrientation(lua_State* tolua_S) tolua_pushnumber(tolua_S,(lua_Number)ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXTiledMap:getMapOrientation",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:getMapOrientation",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 @@ -86378,7 +86732,7 @@ int lua_cocos2dx_TMXTiledMap_getMapOrientation(lua_State* tolua_S) int lua_cocos2dx_TMXTiledMap_setMapOrientation(lua_State* tolua_S) { int argc = 0; - cocos2d::experimental::TMXTiledMap* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -86387,10 +86741,10 @@ int lua_cocos2dx_TMXTiledMap_setMapOrientation(lua_State* tolua_S) #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertype(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertype(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif - cobj = (cocos2d::experimental::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); + cobj = (cocos2d::TMXTiledMap*)tolua_tousertype(tolua_S,1,0); #if COCOS2D_DEBUG >= 1 if (!cobj) @@ -86405,7 +86759,7 @@ int lua_cocos2dx_TMXTiledMap_setMapOrientation(lua_State* tolua_S) { int arg0; - ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "ccexp.TMXTiledMap:setMapOrientation"); + ok &= luaval_to_int32(tolua_S, 2,(int *)&arg0, "cc.TMXTiledMap:setMapOrientation"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_setMapOrientation'", nullptr); @@ -86415,7 +86769,7 @@ int lua_cocos2dx_TMXTiledMap_setMapOrientation(lua_State* tolua_S) lua_settop(tolua_S, 1); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "ccexp.TMXTiledMap:setMapOrientation",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:setMapOrientation",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 @@ -86435,7 +86789,7 @@ int lua_cocos2dx_TMXTiledMap_create(lua_State* tolua_S) #endif #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertable(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertable(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif argc = lua_gettop(tolua_S) - 1; @@ -86443,17 +86797,17 @@ int lua_cocos2dx_TMXTiledMap_create(lua_State* tolua_S) if (argc == 1) { std::string arg0; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccexp.TMXTiledMap:create"); + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXTiledMap:create"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_create'", nullptr); return 0; } - cocos2d::experimental::TMXTiledMap* ret = cocos2d::experimental::TMXTiledMap::create(arg0); - object_to_luaval(tolua_S, "ccexp.TMXTiledMap",(cocos2d::experimental::TMXTiledMap*)ret); + cocos2d::TMXTiledMap* ret = cocos2d::TMXTiledMap::create(arg0); + object_to_luaval(tolua_S, "cc.TMXTiledMap",(cocos2d::TMXTiledMap*)ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "ccexp.TMXTiledMap:create",argc, 1); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.TMXTiledMap:create",argc, 1); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: @@ -86471,7 +86825,7 @@ int lua_cocos2dx_TMXTiledMap_createWithXML(lua_State* tolua_S) #endif #if COCOS2D_DEBUG >= 1 - if (!tolua_isusertable(tolua_S,1,"ccexp.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; + if (!tolua_isusertable(tolua_S,1,"cc.TMXTiledMap",0,&tolua_err)) goto tolua_lerror; #endif argc = lua_gettop(tolua_S) - 1; @@ -86480,18 +86834,18 @@ int lua_cocos2dx_TMXTiledMap_createWithXML(lua_State* tolua_S) { std::string arg0; std::string arg1; - ok &= luaval_to_std_string(tolua_S, 2,&arg0, "ccexp.TMXTiledMap:createWithXML"); - ok &= luaval_to_std_string(tolua_S, 3,&arg1, "ccexp.TMXTiledMap:createWithXML"); + ok &= luaval_to_std_string(tolua_S, 2,&arg0, "cc.TMXTiledMap:createWithXML"); + ok &= luaval_to_std_string(tolua_S, 3,&arg1, "cc.TMXTiledMap:createWithXML"); if(!ok) { tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_createWithXML'", nullptr); return 0; } - cocos2d::experimental::TMXTiledMap* ret = cocos2d::experimental::TMXTiledMap::createWithXML(arg0, arg1); - object_to_luaval(tolua_S, "ccexp.TMXTiledMap",(cocos2d::experimental::TMXTiledMap*)ret); + cocos2d::TMXTiledMap* ret = cocos2d::TMXTiledMap::createWithXML(arg0, arg1); + object_to_luaval(tolua_S, "cc.TMXTiledMap",(cocos2d::TMXTiledMap*)ret); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "ccexp.TMXTiledMap:createWithXML",argc, 2); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.TMXTiledMap:createWithXML",argc, 2); return 0; #if COCOS2D_DEBUG >= 1 tolua_lerror: @@ -86499,187 +86853,10 @@ int lua_cocos2dx_TMXTiledMap_createWithXML(lua_State* tolua_S) #endif return 0; } -static int lua_cocos2dx_TMXTiledMap_finalize(lua_State* tolua_S) -{ - printf("luabindings: finalizing LUA object (TMXTiledMap)"); - return 0; -} - -int lua_register_cocos2dx_TMXTiledMap(lua_State* tolua_S) -{ - tolua_usertype(tolua_S,"ccexp.TMXTiledMap"); - tolua_cclass(tolua_S,"TMXTiledMap","ccexp.TMXTiledMap","cc.Node",nullptr); - - tolua_beginmodule(tolua_S,"TMXTiledMap"); - tolua_function(tolua_S,"setObjectGroups",lua_cocos2dx_TMXTiledMap_setObjectGroups); - tolua_function(tolua_S,"getProperty",lua_cocos2dx_TMXTiledMap_getProperty); - tolua_function(tolua_S,"setMapSize",lua_cocos2dx_TMXTiledMap_setMapSize); - tolua_function(tolua_S,"getObjectGroup",lua_cocos2dx_TMXTiledMap_getObjectGroup); - tolua_function(tolua_S,"getObjectGroups",lua_cocos2dx_TMXTiledMap_getObjectGroups); - tolua_function(tolua_S,"getTileSize",lua_cocos2dx_TMXTiledMap_getTileSize); - tolua_function(tolua_S,"getMapSize",lua_cocos2dx_TMXTiledMap_getMapSize); - tolua_function(tolua_S,"getProperties",lua_cocos2dx_TMXTiledMap_getProperties); - tolua_function(tolua_S,"setTileSize",lua_cocos2dx_TMXTiledMap_setTileSize); - tolua_function(tolua_S,"setProperties",lua_cocos2dx_TMXTiledMap_setProperties); - tolua_function(tolua_S,"getLayer",lua_cocos2dx_TMXTiledMap_getLayer); - tolua_function(tolua_S,"getMapOrientation",lua_cocos2dx_TMXTiledMap_getMapOrientation); - tolua_function(tolua_S,"setMapOrientation",lua_cocos2dx_TMXTiledMap_setMapOrientation); - tolua_function(tolua_S,"create", lua_cocos2dx_TMXTiledMap_create); - tolua_function(tolua_S,"createWithXML", lua_cocos2dx_TMXTiledMap_createWithXML); - tolua_endmodule(tolua_S); - std::string typeName = typeid(cocos2d::experimental::TMXTiledMap).name(); - g_luaType[typeName] = "ccexp.TMXTiledMap"; - g_typeCast["TMXTiledMap"] = "ccexp.TMXTiledMap"; - return 1; -} - -int lua_cocos2dx_ParallaxNode_addChild(lua_State* tolua_S) +int lua_cocos2dx_TMXTiledMap_constructor(lua_State* tolua_S) { int argc = 0; - cocos2d::ParallaxNode* 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.ParallaxNode",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::ParallaxNode*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_ParallaxNode_addChild'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 4) - { - cocos2d::Node* arg0; - int arg1; - cocos2d::Vec2 arg2; - cocos2d::Vec2 arg3; - - ok &= luaval_to_object(tolua_S, 2, "cc.Node",&arg0); - - ok &= luaval_to_int32(tolua_S, 3,(int *)&arg1, "cc.ParallaxNode:addChild"); - - ok &= luaval_to_vec2(tolua_S, 4, &arg2, "cc.ParallaxNode:addChild"); - - ok &= luaval_to_vec2(tolua_S, 5, &arg3, "cc.ParallaxNode:addChild"); - if(!ok) - { - tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ParallaxNode_addChild'", nullptr); - return 0; - } - cobj->addChild(arg0, arg1, arg2, arg3); - lua_settop(tolua_S, 1); - return 1; - } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.ParallaxNode:addChild",argc, 4); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ParallaxNode_addChild'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::ParallaxNode* 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.ParallaxNode",0,&tolua_err)) goto tolua_lerror; -#endif - - cobj = (cocos2d::ParallaxNode*)tolua_tousertype(tolua_S,1,0); - -#if COCOS2D_DEBUG >= 1 - if (!cobj) - { - tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup'", nullptr); - return 0; - } -#endif - - argc = lua_gettop(tolua_S)-1; - if (argc == 1) - { - bool arg0; - - ok &= luaval_to_boolean(tolua_S, 2,&arg0, "cc.ParallaxNode:removeAllChildrenWithCleanup"); - if(!ok) - { - tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup'", nullptr); - return 0; - } - cobj->removeAllChildrenWithCleanup(arg0); - lua_settop(tolua_S, 1); - return 1; - } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.ParallaxNode:removeAllChildrenWithCleanup",argc, 1); - return 0; - -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup'.",&tolua_err); -#endif - - return 0; -} -int lua_cocos2dx_ParallaxNode_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.ParallaxNode",0,&tolua_err)) goto tolua_lerror; -#endif - - argc = lua_gettop(tolua_S) - 1; - - if (argc == 0) - { - if(!ok) - { - tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ParallaxNode_create'", nullptr); - return 0; - } - cocos2d::ParallaxNode* ret = cocos2d::ParallaxNode::create(); - object_to_luaval(tolua_S, "cc.ParallaxNode",(cocos2d::ParallaxNode*)ret); - return 1; - } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d\n ", "cc.ParallaxNode:create",argc, 0); - return 0; -#if COCOS2D_DEBUG >= 1 - tolua_lerror: - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ParallaxNode_create'.",&tolua_err); -#endif - return 0; -} -int lua_cocos2dx_ParallaxNode_constructor(lua_State* tolua_S) -{ - int argc = 0; - cocos2d::ParallaxNode* cobj = nullptr; + cocos2d::TMXTiledMap* cobj = nullptr; bool ok = true; #if COCOS2D_DEBUG >= 1 @@ -86693,46 +86870,60 @@ int lua_cocos2dx_ParallaxNode_constructor(lua_State* tolua_S) { if(!ok) { - tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_ParallaxNode_constructor'", nullptr); + tolua_error(tolua_S,"invalid arguments in function 'lua_cocos2dx_TMXTiledMap_constructor'", nullptr); return 0; } - cobj = new cocos2d::ParallaxNode(); + cobj = new cocos2d::TMXTiledMap(); cobj->autorelease(); int ID = (int)cobj->_ID ; int* luaID = &cobj->_luaID ; - toluafix_pushusertype_ccobject(tolua_S, ID, luaID, (void*)cobj,"cc.ParallaxNode"); + toluafix_pushusertype_ccobject(tolua_S, ID, luaID, (void*)cobj,"cc.TMXTiledMap"); return 1; } - luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.ParallaxNode:ParallaxNode",argc, 0); + luaL_error(tolua_S, "%s has wrong number of arguments: %d, was expecting %d \n", "cc.TMXTiledMap:TMXTiledMap",argc, 0); return 0; #if COCOS2D_DEBUG >= 1 - tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_ParallaxNode_constructor'.",&tolua_err); + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_TMXTiledMap_constructor'.",&tolua_err); #endif return 0; } -static int lua_cocos2dx_ParallaxNode_finalize(lua_State* tolua_S) +static int lua_cocos2dx_TMXTiledMap_finalize(lua_State* tolua_S) { - printf("luabindings: finalizing LUA object (ParallaxNode)"); + printf("luabindings: finalizing LUA object (TMXTiledMap)"); return 0; } -int lua_register_cocos2dx_ParallaxNode(lua_State* tolua_S) +int lua_register_cocos2dx_TMXTiledMap(lua_State* tolua_S) { - tolua_usertype(tolua_S,"cc.ParallaxNode"); - tolua_cclass(tolua_S,"ParallaxNode","cc.ParallaxNode","cc.Node",nullptr); + tolua_usertype(tolua_S,"cc.TMXTiledMap"); + tolua_cclass(tolua_S,"TMXTiledMap","cc.TMXTiledMap","cc.Node",nullptr); - tolua_beginmodule(tolua_S,"ParallaxNode"); - tolua_function(tolua_S,"new",lua_cocos2dx_ParallaxNode_constructor); - tolua_function(tolua_S,"addChild",lua_cocos2dx_ParallaxNode_addChild); - tolua_function(tolua_S,"removeAllChildrenWithCleanup",lua_cocos2dx_ParallaxNode_removeAllChildrenWithCleanup); - tolua_function(tolua_S,"create", lua_cocos2dx_ParallaxNode_create); + tolua_beginmodule(tolua_S,"TMXTiledMap"); + tolua_function(tolua_S,"new",lua_cocos2dx_TMXTiledMap_constructor); + tolua_function(tolua_S,"setObjectGroups",lua_cocos2dx_TMXTiledMap_setObjectGroups); + tolua_function(tolua_S,"getProperty",lua_cocos2dx_TMXTiledMap_getProperty); + tolua_function(tolua_S,"setMapSize",lua_cocos2dx_TMXTiledMap_setMapSize); + tolua_function(tolua_S,"getObjectGroup",lua_cocos2dx_TMXTiledMap_getObjectGroup); + tolua_function(tolua_S,"getObjectGroups",lua_cocos2dx_TMXTiledMap_getObjectGroups); + tolua_function(tolua_S,"initWithXML",lua_cocos2dx_TMXTiledMap_initWithXML); + tolua_function(tolua_S,"initWithTMXFile",lua_cocos2dx_TMXTiledMap_initWithTMXFile); + tolua_function(tolua_S,"getTileSize",lua_cocos2dx_TMXTiledMap_getTileSize); + tolua_function(tolua_S,"getMapSize",lua_cocos2dx_TMXTiledMap_getMapSize); + tolua_function(tolua_S,"getProperties",lua_cocos2dx_TMXTiledMap_getProperties); + tolua_function(tolua_S,"setTileSize",lua_cocos2dx_TMXTiledMap_setTileSize); + tolua_function(tolua_S,"setProperties",lua_cocos2dx_TMXTiledMap_setProperties); + tolua_function(tolua_S,"getLayer",lua_cocos2dx_TMXTiledMap_getLayer); + tolua_function(tolua_S,"getMapOrientation",lua_cocos2dx_TMXTiledMap_getMapOrientation); + tolua_function(tolua_S,"setMapOrientation",lua_cocos2dx_TMXTiledMap_setMapOrientation); + tolua_function(tolua_S,"create", lua_cocos2dx_TMXTiledMap_create); + tolua_function(tolua_S,"createWithXML", lua_cocos2dx_TMXTiledMap_createWithXML); tolua_endmodule(tolua_S); - std::string typeName = typeid(cocos2d::ParallaxNode).name(); - g_luaType[typeName] = "cc.ParallaxNode"; - g_typeCast["ParallaxNode"] = "cc.ParallaxNode"; + std::string typeName = typeid(cocos2d::TMXTiledMap).name(); + g_luaType[typeName] = "cc.TMXTiledMap"; + g_typeCast["TMXTiledMap"] = "cc.TMXTiledMap"; return 1; } diff --git a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp index d57f8ff5f9..ea1bdd252d 100644 --- a/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp +++ b/cocos/scripting/lua-bindings/auto/lua_cocos2dx_auto.hpp @@ -1964,6 +1964,10 @@ int register_all_cocos2dx(lua_State* tolua_S); + + + + diff --git a/cocos/storage/local-storage/LocalStorage-android.cpp b/cocos/storage/local-storage/LocalStorage-android.cpp index 67ebc8240e..1854109156 100644 --- a/cocos/storage/local-storage/LocalStorage-android.cpp +++ b/cocos/storage/local-storage/LocalStorage-android.cpp @@ -147,4 +147,16 @@ void localStorageRemoveItem( const std::string& key ) } +/** removes all items from the LS */ +void localStorageClear() +{ + assert( _initialized ); + JniMethodInfo t; + + if (JniHelper::getStaticMethodInfo(t, "org/cocos2dx/lib/Cocos2dxLocalStorage", "clear", "()V")) { + t.env->CallStaticVoidMethod(t.classID, t.methodID); + t.env->DeleteLocalRef(t.classID); + } +} + #endif // #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) diff --git a/cocos/storage/local-storage/LocalStorage.cpp b/cocos/storage/local-storage/LocalStorage.cpp index 4580015617..da61f960ac 100644 --- a/cocos/storage/local-storage/LocalStorage.cpp +++ b/cocos/storage/local-storage/LocalStorage.cpp @@ -42,6 +42,7 @@ static sqlite3 *_db; static sqlite3_stmt *_stmt_select; static sqlite3_stmt *_stmt_remove; static sqlite3_stmt *_stmt_update; +static sqlite3_stmt *_stmt_clear; static void localStorageCreateTable() @@ -80,6 +81,10 @@ void localStorageInit( const std::string& fullpath/* = "" */) // DELETE const char *sql_remove = "DELETE FROM data WHERE key=?;"; ret |= sqlite3_prepare_v2(_db, sql_remove, -1, &_stmt_remove, nullptr); + + // Clear + const char *sql_clear = "DELETE FROM data;"; + ret |= sqlite3_prepare_v2(_db, sql_clear, -1, &_stmt_clear, nullptr); if( ret != SQLITE_OK ) { printf("Error initializing DB\n"); @@ -130,11 +135,15 @@ bool localStorageGetItem( const std::string& key, std::string *outItem ) ok |= sqlite3_step(_stmt_select); const unsigned char *text = sqlite3_column_text(_stmt_select, 0); - if( (ok != SQLITE_OK && ok != SQLITE_DONE && ok != SQLITE_ROW) || !text) + if ( ok != SQLITE_OK && ok != SQLITE_DONE && ok != SQLITE_ROW ) { printf("Error in localStorage.getItem()\n"); return false; } + else if (!text) + { + return false; + } else { outItem->assign((const char*)text); @@ -157,4 +166,15 @@ void localStorageRemoveItem( const std::string& key ) printf("Error in localStorage.removeItem()\n"); } +/** removes all items from the LS */ +void localStorageClear() +{ + assert( _initialized ); + + int ok = sqlite3_step(_stmt_clear); + + if( ok != SQLITE_OK && ok != SQLITE_DONE) + printf("Error in localStorage.clear()\n"); +} + #endif // #if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID) diff --git a/cocos/storage/local-storage/LocalStorage.h b/cocos/storage/local-storage/LocalStorage.h index 642451a221..2c8dd1b8a1 100644 --- a/cocos/storage/local-storage/LocalStorage.h +++ b/cocos/storage/local-storage/LocalStorage.h @@ -51,6 +51,9 @@ bool CC_DLL localStorageGetItem( const std::string& key, std::string *outItem ); /** Removes an item from the JS. */ void CC_DLL localStorageRemoveItem( const std::string& key ); +/** Removes all items from the JS. */ +void CC_DLL localStorageClear(); + // end group /// @} diff --git a/templates/cocos2dx_files.json b/templates/cocos2dx_files.json index 3c257b88dc..cbee26cf0e 100644 --- a/templates/cocos2dx_files.json +++ b/templates/cocos2dx_files.json @@ -4925,6 +4925,94 @@ "tools/gen-prebuilt/module_organize.py", "tools/missing-tools.txt", "tools/particle/convert_YCoordFlipped.py", + "tools/simulator/.cocos-project.json", + "tools/simulator/.project", + "tools/simulator/config.json", + "tools/simulator/frameworks/runtime-src/Classes/AppDelegate.cpp", + "tools/simulator/frameworks/runtime-src/Classes/AppDelegate.h", + "tools/simulator/frameworks/runtime-src/Classes/ide-support/CodeIDESupport.h", + "tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeJsImpl.cpp", + "tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeJsImpl.h", + "tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeLuaImpl.cpp", + "tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeLuaImpl.h", + "tools/simulator/frameworks/runtime-src/Classes/ide-support/lang", + "tools/simulator/frameworks/runtime-src/Classes/ide-support/lua_debugger.c", + "tools/simulator/frameworks/runtime-src/Classes/ide-support/lua_debugger.h", + "tools/simulator/frameworks/runtime-src/Classes/js_module_register.h", + "tools/simulator/frameworks/runtime-src/Classes/lua_module_register.h", + "tools/simulator/frameworks/runtime-src/proj.android/.classpath", + "tools/simulator/frameworks/runtime-src/proj.android/.project", + "tools/simulator/frameworks/runtime-src/proj.android/.settings/org.eclipse.jdt.core.prefs", + "tools/simulator/frameworks/runtime-src/proj.android/AndroidManifest.xml", + "tools/simulator/frameworks/runtime-src/proj.android/ant.properties", + "tools/simulator/frameworks/runtime-src/proj.android/build-cfg.json", + "tools/simulator/frameworks/runtime-src/proj.android/build.xml", + "tools/simulator/frameworks/runtime-src/proj.android/jni/Android.mk", + "tools/simulator/frameworks/runtime-src/proj.android/jni/Application.mk", + "tools/simulator/frameworks/runtime-src/proj.android/jni/hellolua/main.cpp", + "tools/simulator/frameworks/runtime-src/proj.android/proguard-project.txt", + "tools/simulator/frameworks/runtime-src/proj.android/project.properties", + "tools/simulator/frameworks/runtime-src/proj.android/res/drawable-hdpi/icon.png", + "tools/simulator/frameworks/runtime-src/proj.android/res/drawable-ldpi/icon.png", + "tools/simulator/frameworks/runtime-src/proj.android/res/drawable-mdpi/icon.png", + "tools/simulator/frameworks/runtime-src/proj.android/res/values/strings.xml", + "tools/simulator/frameworks/runtime-src/proj.android/src/org/cocos2dx/lua/AppActivity.java", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/AppController.h", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/AppController.mm", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default-568h@2x.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default-667h@2x.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default-736h@3x.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default@2x.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-100.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-114.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-120.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-144.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-152.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-29.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-40.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-50.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-57.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-58.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-72.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-76.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-80.png", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Info.plist", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Prefix.pch", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.h", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.mm", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/build-cfg.json", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/main.m", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Base.lproj/ConsoleWindow.xib", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Base.lproj/MainMenu.xib", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/ConsoleWindowController.h", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/ConsoleWindowController.m", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Icon.icns", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Info.plist", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Prefix.pch", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/SimulatorApp.h", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/SimulatorApp.mm", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/build-cfg.json", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/en.lproj/MainMenu.xib", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/main.m", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/zh-Hans.lproj/ConsoleWindow.strings", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/zh-Hans.lproj/MainMenu.xib", + "tools/simulator/frameworks/runtime-src/proj.ios_mac/simulator.xcodeproj/project.pbxproj", + "tools/simulator/frameworks/runtime-src/proj.win32/SimulatorWin.cpp", + "tools/simulator/frameworks/runtime-src/proj.win32/SimulatorWin.h", + "tools/simulator/frameworks/runtime-src/proj.win32/build-cfg.json", + "tools/simulator/frameworks/runtime-src/proj.win32/game.rc", + "tools/simulator/frameworks/runtime-src/proj.win32/main.cpp", + "tools/simulator/frameworks/runtime-src/proj.win32/main.h", + "tools/simulator/frameworks/runtime-src/proj.win32/res/game.ico", + "tools/simulator/frameworks/runtime-src/proj.win32/resource.h", + "tools/simulator/frameworks/runtime-src/proj.win32/simulator.sln", + "tools/simulator/frameworks/runtime-src/proj.win32/simulator.vcxproj", + "tools/simulator/frameworks/runtime-src/proj.win32/simulator.vcxproj.filters", + "tools/simulator/frameworks/runtime-src/proj.win32/simulator.vcxproj.user", + "tools/simulator/frameworks/runtime-src/proj.win32/stdafx.cpp", + "tools/simulator/frameworks/runtime-src/proj.win32/stdafx.h", + "tools/simulator/frameworks/runtime-src/proj.win32/targetver.h", "tools/simulator/libsimulator/lib/AppEvent.cpp", "tools/simulator/libsimulator/lib/AppEvent.h", "tools/simulator/libsimulator/lib/AppLang.cpp", diff --git a/templates/js-template-default/frameworks/runtime-src/proj.win32/HelloJavascript.sln b/templates/js-template-default/frameworks/runtime-src/proj.win32/HelloJavascript.sln index 4f2b83420b..5aa0716c3a 100644 --- a/templates/js-template-default/frameworks/runtime-src/proj.win32/HelloJavascript.sln +++ b/templates/js-template-default/frameworks/runtime-src/proj.win32/HelloJavascript.sln @@ -17,6 +17,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "..\..\cocos2d EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjscocos2d", "..\..\cocos2d-x\cocos\scripting\js-bindings\proj.win32\libjscocos2d.vcxproj", "{39379840-825A-45A0-B363-C09FFEF864BD}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbullet", "..\..\cocos2d-x\external\bullet\proj.win32\libbullet.vcxproj", "{012DFF48-A13F-4F52-B07B-F8B9D21CE95B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -43,6 +45,10 @@ Global {39379840-825A-45A0-B363-C09FFEF864BD}.Debug|Win32.Build.0 = Debug|Win32 {39379840-825A-45A0-B363-C09FFEF864BD}.Release|Win32.ActiveCfg = Release|Win32 {39379840-825A-45A0-B363-C09FFEF864BD}.Release|Win32.Build.0 = Release|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Debug|Win32.ActiveCfg = Debug|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Debug|Win32.Build.0 = Debug|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Release|Win32.ActiveCfg = Release|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -50,5 +56,6 @@ Global GlobalSection(NestedProjects) = preSolution {B7C2A162-DEC9-4418-972E-240AB3CBFCAE} = {8C6B0381-B325-4D7F-B1BB-474ABACE46AC} {929480E7-23C0-4DF6-8456-096D71547116} = {8C6B0381-B325-4D7F-B1BB-474ABACE46AC} + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B} = {8C6B0381-B325-4D7F-B1BB-474ABACE46AC} EndGlobalSection EndGlobal diff --git a/templates/lua-template-default/frameworks/runtime-src/Classes/ide-support/lang b/templates/lua-template-default/frameworks/runtime-src/Classes/ide-support/lang index fa00857116..1c13dacd89 100644 --- a/templates/lua-template-default/frameworks/runtime-src/Classes/ide-support/lang +++ b/templates/lua-template-default/frameworks/runtime-src/Classes/ide-support/lang @@ -6,7 +6,13 @@ "Portrait": "ç«–å±", "Landscape": "横å±", "Refresh": "刷新(é‡å¯)", - "Zoom Out": "缩放" + "Zoom Out": "缩放", + "Simulator": "模拟器", + "Open File": "打开文件", + "Open Project": "打开工程", + "Error": "错误", + "Help": "帮助(&H)", + "About": "关于(&A)" }, "zh-Hans": { "View": "视图", @@ -15,6 +21,9 @@ "Portrait": "ç«–å±", "Landscape": "横å±", "Refresh": "刷新(é‡å¯)", - "Zoom Out": "缩放" + "Zoom Out": "缩放", + "Simulator": "模拟器", + "Help": "帮助(&H)", + "About": "关于(&A)" } } \ No newline at end of file diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.win32/HelloLua.sln b/templates/lua-template-default/frameworks/runtime-src/proj.win32/HelloLua.sln index d7ef682815..fcecb96c92 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.win32/HelloLua.sln +++ b/templates/lua-template-default/frameworks/runtime-src/proj.win32/HelloLua.sln @@ -18,6 +18,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libSpine", "..\..\cocos2d-x EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsimulator", "..\..\cocos2d-x\tools\simulator\libsimulator\proj.win32\libsimulator.vcxproj", "{001B324A-BB91-4E83-875C-C92F75C40857}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbullet", "..\..\cocos2d-x\external\bullet\proj.win32\libbullet.vcxproj", "{012DFF48-A13F-4F52-B07B-F8B9D21CE95B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.win32/SimulatorWin.cpp b/templates/lua-template-default/frameworks/runtime-src/proj.win32/SimulatorWin.cpp index d2d889fb66..ae2d30f235 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.win32/SimulatorWin.cpp +++ b/templates/lua-template-default/frameworks/runtime-src/proj.win32/SimulatorWin.cpp @@ -31,6 +31,14 @@ #include "platform/win32/PlayerWin.h" #include "platform/win32/PlayerMenuServiceWin.h" +// define 1 to open console ui and setup windows system menu, 0 to disable +#include "ide-support/CodeIDESupport.h" +#if (CC_CODE_IDE_DEBUG_SUPPORT > 0) +#define SIMULATOR_WITH_CONSOLE_AND_MENU 1 +#else +#define SIMULATOR_WITH_CONSOLE_AND_MENU 0 +#endif + USING_NS_CC; static WNDPROC g_oldWindowProc = NULL; @@ -243,6 +251,7 @@ int SimulatorWin::run() _app = new AppDelegate(); RuntimeEngine::getInstance()->setProjectConfig(_project); +#if (SIMULATOR_WITH_CONSOLE_AND_MENU > 0) // create console window if (_project.isShowConsole()) { @@ -262,6 +271,7 @@ int SimulatorWin::run() } } } +#endif // log file if (_project.isWriteDebugLogToFile()) @@ -356,9 +366,11 @@ int SimulatorWin::run() // path for looking Lang file, Studio Default images FileUtils::getInstance()->addSearchPath(getApplicationPath().c_str()); +#if SIMULATOR_WITH_CONSOLE_AND_MENU > 0 // init player services setupUI(); DrawMenuBar(_hwnd); +#endif // prepare FileUtils::getInstance()->setPopupNotify(false); @@ -367,11 +379,6 @@ int SimulatorWin::run() g_oldWindowProc = (WNDPROC)SetWindowLong(_hwnd, GWL_WNDPROC, (LONG)SimulatorWin::windowProc); - // update window size - RECT rect; - GetWindowRect(_hwnd, &rect); - MoveWindow(_hwnd, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top + GetSystemMetrics(SM_CYMENU), FALSE); - // startup message loop return app->run(); } @@ -442,6 +449,10 @@ void SimulatorWin::setupUI() scaleMenuVector.push_back(scale50Menu); scaleMenuVector.push_back(scale25Menu); + // About + menuBar->addItem("HELP_MENU", tr("Help")); + menuBar->addItem("ABOUT_MENUITEM", tr("About"), "HELP_MENU"); + menuBar->addItem("REFRESH_MENU_SEP", "-", "VIEW_MENU"); menuBar->addItem("REFRESH_MENU", tr("Refresh"), "VIEW_MENU"); @@ -527,6 +538,11 @@ void SimulatorWin::setupUI() project.changeFrameOrientationToLandscape(); _instance->openProjectWithProjectConfig(project); } + else if (data == "ABOUT_MENUITEM") + { + onHelpAbout(); + } + } } } @@ -725,6 +741,7 @@ LRESULT CALLBACK SimulatorWin::windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, L switch (uMsg) { + case WM_SYSCOMMAND: case WM_COMMAND: { if (HIWORD(wParam) == 0) @@ -754,10 +771,12 @@ LRESULT CALLBACK SimulatorWin::windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, L } case WM_KEYDOWN: { +#if (SIMULATOR_WITH_CONSOLE_AND_MENU > 0) if (wParam == VK_F5) { _instance->relaunch(); } +#endif break; } diff --git a/templates/lua-template-default/frameworks/runtime-src/proj.win32/resource.h b/templates/lua-template-default/frameworks/runtime-src/proj.win32/resource.h index d3ddc2bd16..bafd69ad92 100644 --- a/templates/lua-template-default/frameworks/runtime-src/proj.win32/resource.h +++ b/templates/lua-template-default/frameworks/runtime-src/proj.win32/resource.h @@ -3,10 +3,9 @@ // Used by game.rc // #define IDS_PROJNAME 100 -#define IDR_TESTLUA 100 -#define IDR_MENU_COCOS 201 +#define IDR_MENU_COCOS 200 #define IDD_DIALOG1 202 -#define IDD_DIALOG_ABOUT 202 +#define IDD_DIALOG_ABOUT 203 #define IDC_EDIT2 1001 #define ID_VIEW_SIZE 30001 #define ID_FILE_NEW_WINDOW 32771 @@ -27,7 +26,7 @@ #define ID_CONTROL_TOP 32793 // Next default values for new objects -// +// #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 201 diff --git a/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.cpp b/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.cpp index 30ac191168..9679b9818b 100644 --- a/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.cpp +++ b/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.cpp @@ -24,6 +24,9 @@ ****************************************************************************/ #include "MaterialSystemTest.h" + +#include + #include "../testResource.h" #include "cocos2d.h" @@ -42,6 +45,7 @@ MaterialSystemTest::MaterialSystemTest() ADD_TEST_CASE(Material_clone); ADD_TEST_CASE(Material_MultipleSprite3D); ADD_TEST_CASE(Material_Sprite3DTest); + ADD_TEST_CASE(Material_parsePerformance); } std::string MaterialSystemBaseTest::title() const @@ -107,7 +111,7 @@ void Material_2DEffects::onEnter() { MaterialSystemBaseTest::onEnter(); - auto properties = Properties::create("Materials/2d_effects.material#sample"); + auto properties = Properties::createWithoutAutorelease("Materials/2d_effects.material#sample"); // Print the properties of every namespace within this one. printProperties(properties, 0); @@ -133,6 +137,9 @@ void Material_2DEffects::onEnter() spriteEdgeDetect->setNormalizedPosition(Vec2(0.8, 0.5)); this->addChild(spriteEdgeDetect); spriteEdgeDetect->setGLProgramState(mat1->getTechniqueByName("edge_detect")->getPassByIndex(0)->getGLProgramState()); + + // properties is not a "Ref" object + CC_SAFE_DELETE(properties); } std::string Material_2DEffects::subtitle() const @@ -250,6 +257,32 @@ std::string Material_clone::subtitle() const return "Testing material->clone()"; } +// +// +// +void Material_parsePerformance::onEnter() +{ + MaterialSystemBaseTest::onEnter(); + + std::clock_t begin = std::clock(); + + for(int i=0;i<5000;i++) + { + Material::createWithFilename("Materials/2d_effects.material"); + Material::createWithFilename("Materials/3d_effects.material"); + } + + std::clock_t end = std::clock(); + double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC; + + log("Parsing took: %f", elapsed_secs); +} + +std::string Material_parsePerformance::subtitle() const +{ + return "Testing parsing performance"; +} + // MARK: Helper functions static void printProperties(Properties* properties, int indent) @@ -263,7 +296,7 @@ static void printProperties(Properties* properties, int indent) chindent[i] = ' '; chindent[i] = '\0'; - CCLOG("%sNamespace: %s ID: %s\n%s{", chindent, spacename, id, chindent); + log("%sNamespace: %s ID: %s\n%s{", chindent, spacename, id, chindent); // Print all properties in this namespace. const char* name = properties->getNextProperty(); @@ -271,7 +304,7 @@ static void printProperties(Properties* properties, int indent) while (name != NULL) { value = properties->getString(name); - CCLOG("%s%s = %s", chindent, name, value); + log("%s%s = %s", chindent, name, value); name = properties->getNextProperty(); } @@ -282,5 +315,5 @@ static void printProperties(Properties* properties, int indent) space = properties->getNextNamespace(); } - CCLOG("%s}\n",chindent); + log("%s}\n",chindent); } diff --git a/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.h b/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.h index a3f2b78415..a16d20939b 100644 --- a/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.h +++ b/tests/cpp-tests/Classes/MaterialSystemTest/MaterialSystemTest.h @@ -86,4 +86,13 @@ public: virtual std::string subtitle() const override; }; +class Material_parsePerformance : public MaterialSystemBaseTest +{ +public: + CREATE_FUNC(Material_parsePerformance); + + virtual void onEnter() override; + virtual std::string subtitle() const override; +}; + diff --git a/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.cpp b/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.cpp index 9a44f80a64..cb2d1e9934 100644 --- a/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.cpp +++ b/tests/cpp-tests/Classes/Physics3DTest/Physics3DTest.cpp @@ -626,20 +626,7 @@ bool Physics3DTerrainDemo::init() } //create mesh - std::vector trianglesList; - auto bundle = Bundle3D::createBundle(); - bundle->load("Sprite3DTest/boss.c3b"); - MeshDatas meshs; - bundle->loadMeshDatas(meshs); - Bundle3D::destroyBundle(bundle); - for (auto iter : meshs.meshDatas){ - int preVertexSize = iter->getPerVertexSize() / sizeof(float); - for (auto indexArray : iter->subMeshIndices){ - for (auto i : indexArray){ - trianglesList.push_back(Vec3(iter->vertex[i * preVertexSize], iter->vertex[i * preVertexSize + 1], iter->vertex[i * preVertexSize + 2])); - } - } - } + std::vector trianglesList = Bundle3D::getTrianglesList("Sprite3DTest/boss.c3b"); rbDes.mass = 0.0f; rbDes.shape = Physics3DShape::createMesh(&trianglesList[0], (int)trianglesList.size() / 3); @@ -707,19 +694,9 @@ bool Physics3DCollisionCallbackDemo::init() Physics3DRigidBodyDes rbDes; float scale = 2.0f; - std::vector trianglesList; - auto bundle = Bundle3D::createBundle(); - bundle->load("Sprite3DTest/boss.c3b"); - MeshDatas meshs; - bundle->loadMeshDatas(meshs); - Bundle3D::destroyBundle(bundle); - for (auto iter : meshs.meshDatas){ - int preVertexSize = iter->getPerVertexSize() / sizeof(float); - for (auto indexArray : iter->subMeshIndices){ - for (auto i : indexArray){ - trianglesList.push_back(Vec3(iter->vertex[i * preVertexSize], iter->vertex[i * preVertexSize + 1], iter->vertex[i * preVertexSize + 2]) * scale); - } - } + std::vector trianglesList = Bundle3D::getTrianglesList("Sprite3DTest/boss.c3b"); + for (auto& it : trianglesList) { + it *= scale; } rbDes.mass = 0.0f; 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 dee4b016ff..4d3bc42d79 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.cpp @@ -41,7 +41,7 @@ bool UIButtonTest_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIButton/crossplatform_UIButton_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIButton/res.csb"); Node* child = node->getChildByTag(4); child->removeFromParent(); _layout = static_cast(child); 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 16634e18a5..2b6d1a557c 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.cpp @@ -36,7 +36,7 @@ bool UICheckBoxTest_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UICheckBox/crossplatform_UICheckBox_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UICheckBox/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); 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 4c1d618317..a5a9bce809 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.cpp @@ -13,7 +13,7 @@ bool UIImageViewTest_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIImageView/crossplatform_UIImageView_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIImageView/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); 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 0f88262e3a..cf48ee6160 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp @@ -34,7 +34,7 @@ bool UILayoutTest_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout/Layout/crossplatform_UILayout_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout/Layout/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); @@ -65,7 +65,7 @@ bool UILayoutTest_Color_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout/Color/crossplatform_UILayout_Color_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout/Color/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); @@ -96,7 +96,7 @@ bool UILayoutTest_Gradient_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout/Gradient_Color/crossplatform_Gradient_Color.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout/Gradient_Color/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); @@ -127,7 +127,7 @@ bool UILayoutTest_BackGroundImage_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout/BackgroundImage/crossplatform_BackgroundImage.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout/BackgroundImage/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); @@ -158,7 +158,7 @@ bool UILayoutTest_BackGroundImage_Scale9_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout/Scale9_BackgroundImage/crossplatform_Scale9_BackgroundImage.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout/Scale9_BackgroundImage/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); @@ -196,7 +196,7 @@ bool UILayoutTest_Layout_Linear_Vertical_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout/Linear_Vertical_Layout/windows_ui_linear_vertical_layout.json")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout/Linear_Vertical_Layout/res.json")); _touchGroup->addChild(_layout); @@ -225,7 +225,7 @@ bool UILayoutTest_Layout_Linear_Horizontal_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout/Linear_Horizontal_Layout/windows_ui_linear_horizontal_layout.json")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout/Linear_Horizontal_Layout/res.json")); _touchGroup->addChild(_layout); this->configureGUIScene(); @@ -253,7 +253,7 @@ bool UILayoutTest_Layout_Relative_Align_Parent_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout/Relative_Align_Parent/windows_ui_relative_align_parent.json")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout/Relative_Align_Parent/res.json")); _touchGroup->addChild(_layout); this->configureGUIScene(); @@ -280,7 +280,7 @@ bool UILayoutTest_Layout_Relative_Location_Editor::init() { if (UIScene_Editor::init()) { - _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout/Relative_Align_Location/windows_ui_relative_align_location.json")); + _layout = static_cast(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UILayout/Relative_Align_Location/res.json")); _touchGroup->addChild(_layout); this->configureGUIScene(); 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 b44fdf589b..db674baa1d 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.cpp @@ -26,7 +26,7 @@ bool UIListViewTest_Vertical_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIListView/New/crossplatform_UIListView_Editor_Vertical.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIListView/New/resV.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = dynamic_cast(child); @@ -117,7 +117,7 @@ bool UIListViewTest_Horizontal_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIListView/New/crossplatform_UIListView_Editor_Horizontal.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIListView/New/resH.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = dynamic_cast(child); 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 956ce50c73..d7bdd1ac40 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.cpp @@ -39,7 +39,7 @@ bool UILoadingBarTest_Editor::init() { scheduleUpdate(); - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILoadingBar/crossplatform_UILoadingBar_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILoadingBar/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); 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 dec0c59b5a..ed903376b4 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.cpp @@ -26,7 +26,7 @@ bool UIPageViewTest_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIPageView/crossplatform_UIPageView_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIPageView/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); 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 d4dfcd6dba..37c7ba913e 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.cpp @@ -29,7 +29,7 @@ bool UIScrollViewTest_Vertical_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView/Vertical/crossplatform_UIScrollView_Vertical_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView/Vertical/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); @@ -60,7 +60,7 @@ bool UIScrollViewTest_Horizontal_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView/Horizontal/crossplatform_UIScrollView_Horizontal_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView/Horizontal/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); @@ -91,7 +91,7 @@ bool UIScrollViewTest_Both_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView/Both/crossplatform_UIScrollView_Both_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIScrollView/Both/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); 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 28793e1fa6..ac2ad352b9 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.cpp @@ -35,7 +35,7 @@ bool UISliderTest_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UISlider/crossplatform_UISlider_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UISlider/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); 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 accd776781..cb2ccfc9c8 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.cpp @@ -12,7 +12,7 @@ bool UITextAtlasTest_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabelAtlas/crossplatform_UILabelAtlas_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabelAtlas/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); 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 3926564b6d..3378c6354e 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.cpp @@ -14,7 +14,7 @@ bool UITextBMFontTest_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabelBMFont/crossplatform_UILabelBMFont_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabelBMFont/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); 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 7e6939ceca..8a16460de7 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.cpp @@ -37,7 +37,7 @@ bool UITextFieldTest_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UITextField/crossplatform_UITextField_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UITextField/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); 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 0c6bf27e40..7aa91e7160 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.cpp @@ -14,7 +14,7 @@ bool UITextTest_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabel/crossplatform_UILabel_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILabel/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); 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 cc0110297b..b8b82678e9 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.cpp @@ -41,7 +41,7 @@ bool UIWidgetAddNodeTest_Editor::init() { if (UIScene_Editor::init()) { - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIWidgetAddNode/crossplatform_UIWidgetAddNode_Editor_1.csb"); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UIWidgetAddNode/res.csb"); Node* child = node->getChildByTag(5); child->removeFromParent(); _layout = static_cast(child); diff --git a/tests/cpp-tests/Resources/ccs-res b/tests/cpp-tests/Resources/ccs-res index afa5ba56b3..0f5e0dff1a 160000 --- a/tests/cpp-tests/Resources/ccs-res +++ b/tests/cpp-tests/Resources/ccs-res @@ -1 +1 @@ -Subproject commit afa5ba56b3745b0fb94e730ea54a79e598c31ba8 +Subproject commit 0f5e0dff1a7545eef7bbe8f23d4b232d0d2d6ae3 diff --git a/tests/js-tests/src/SysTest/SysTest.js b/tests/js-tests/src/SysTest/SysTest.js index bfa114b764..2406db697d 100644 --- a/tests/js-tests/src/SysTest/SysTest.js +++ b/tests/js-tests/src/SysTest/SysTest.js @@ -77,19 +77,37 @@ var LocalStorageTest = SysTestBase.extend({ var key = 'key_' + Math.random(); var ls = cc.sys.localStorage; - cc.log(1); + cc.log("- Adding items"); ls.setItem(key, "Hello world"); + var key1 = "1" + key; + ls.setItem(key1, "Hello JavaScript"); + var key2 = "2" + key; + ls.setItem(key2, "Hello Cocos2d-JS"); + var key3 = "3" + key; + ls.setItem(key3, "Hello Cocos"); - cc.log(2); + cc.log("- Getting Hello world"); var r = ls.getItem(key); cc.log(r); - cc.log(3); + cc.log("- Removing Hello world"); ls.removeItem(key); - cc.log(4); + cc.log("- Getting Hello world"); r = ls.getItem(key); cc.log(r); + + cc.log("- Getting other items"); + cc.log( ls.getItem(key1) ); + cc.log( ls.getItem(key2) ); + cc.log( ls.getItem(key3) ); + + cc.log("- Clearing local storage"); + ls.clear(); + cc.log("- Getting other items"); + cc.log( ls.getItem(key1) ); + cc.log( ls.getItem(key2) ); + cc.log( ls.getItem(key3) ); } }); diff --git a/tools/cocos2d-console b/tools/cocos2d-console index ec36c46e0a..339f75bb11 160000 --- a/tools/cocos2d-console +++ b/tools/cocos2d-console @@ -1 +1 @@ -Subproject commit ec36c46e0a7e82d8e6c441d478f01dcd46377fbb +Subproject commit 339f75bb11a34e5d7c7a81ef293fd2918cb44b3f diff --git a/tools/simulator/.cocos-project.json b/tools/simulator/.cocos-project.json new file mode 100755 index 0000000000..6e3b558228 --- /dev/null +++ b/tools/simulator/.cocos-project.json @@ -0,0 +1,4 @@ +{ + "has_native": true, + "project_type": "lua" +} \ No newline at end of file diff --git a/tools/simulator/.project b/tools/simulator/.project new file mode 100644 index 0000000000..1ee849d993 --- /dev/null +++ b/tools/simulator/.project @@ -0,0 +1,13 @@ + + + Simulator + + + + + + + org.ccdt.cocosproject + org.eclipse.koneki.ldt.nature + + diff --git a/tools/simulator/config.json b/tools/simulator/config.json new file mode 100644 index 0000000000..bf8ea7edb7 --- /dev/null +++ b/tools/simulator/config.json @@ -0,0 +1,12 @@ +{ + "init_cfg":{ + "isLandscape": true, + "isWindowTop": false, + "name": "simulator", + "width": 960, + "height": 640, + "entry": "", + "consolePort": 6050, + "uploadPort": 6060 + } +} diff --git a/tools/simulator/frameworks/runtime-src/Classes/AppDelegate.cpp b/tools/simulator/frameworks/runtime-src/Classes/AppDelegate.cpp new file mode 100644 index 0000000000..0e61c50fd8 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/Classes/AppDelegate.cpp @@ -0,0 +1,82 @@ +#include "AppDelegate.h" +#include "CCLuaEngine.h" +#include "SimpleAudioEngine.h" +#include "cocos2d.h" +#include "ide-support/CodeIDESupport.h" + +#include "runtime/Runtime.h" + +// Lua +#include "ide-support/RuntimeLuaImpl.h" + +// Js +#include "ide-support/RuntimeJsImpl.h" + + +using namespace CocosDenshion; + +USING_NS_CC; +using namespace std; + +AppDelegate::AppDelegate() +{ +} + +AppDelegate::~AppDelegate() +{ + SimpleAudioEngine::end(); + + // NOTE:Please don't remove this call if you want to debug with Cocos Code IDE + RuntimeEngine::getInstance()->end(); +} + +//if you want a different context,just modify the value of glContextAttrs +//it will takes effect on all platforms +void AppDelegate::initGLContextAttrs() +{ + //set OpenGL context attributions,now can only set six attributions: + //red,green,blue,alpha,depth,stencil + GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8}; + + GLView::setGLContextAttrs(glContextAttrs); +} + +bool AppDelegate::applicationDidFinishLaunching() +{ + // set default FPS + Director::getInstance()->setAnimationInterval(1.0 / 60.0f); + + auto runtimeEngine = RuntimeEngine::getInstance(); + runtimeEngine->setEventTrackingEnable(true); + runtimeEngine->addRuntime(RuntimeLuaImpl::create(), kRuntimeEngineLua); + auto jsRuntime = RuntimeJsImpl::create(); + runtimeEngine->addRuntime(jsRuntime, kRuntimeEngineJs); + runtimeEngine->start(); + + // js need special debug port + if (runtimeEngine->getProjectConfig().getDebuggerType() != kCCRuntimeDebuggerNone) + { + jsRuntime->startWithDebugger(); + } + + + // Runtime end + cocos2d::log("iShow!"); + return true; +} + +// This function will be called when the app is inactive. When comes a phone call,it's be invoked too +void AppDelegate::applicationDidEnterBackground() +{ + Director::getInstance()->stopAnimation(); + + SimpleAudioEngine::getInstance()->pauseBackgroundMusic(); +} + +// this function will be called when the app is active again +void AppDelegate::applicationWillEnterForeground() +{ + Director::getInstance()->startAnimation(); + + SimpleAudioEngine::getInstance()->resumeBackgroundMusic(); +} diff --git a/tools/simulator/frameworks/runtime-src/Classes/AppDelegate.h b/tools/simulator/frameworks/runtime-src/Classes/AppDelegate.h new file mode 100755 index 0000000000..a2699dc754 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/Classes/AppDelegate.h @@ -0,0 +1,40 @@ +#ifndef __APP_DELEGATE_H__ +#define __APP_DELEGATE_H__ + +#include "cocos2d.h" + +/** +@brief The cocos2d Application. + +The reason for implement as private inheritance is to hide some interface call by Director. +*/ +class AppDelegate : private cocos2d::Application +{ +public: + AppDelegate(); + virtual ~AppDelegate(); + + virtual void initGLContextAttrs(); + + /** + @brief Implement Director and Scene init code here. + @return true Initialize success, app continue. + @return false Initialize failed, app terminate. + */ + virtual bool applicationDidFinishLaunching(); + + /** + @brief The function be called when the application enter background + @param the pointer of the application + */ + virtual void applicationDidEnterBackground(); + + /** + @brief The function be called when the application enter foreground + @param the pointer of the application + */ + virtual void applicationWillEnterForeground(); +}; + +#endif // __APP_DELEGATE_H__ + diff --git a/tools/simulator/frameworks/runtime-src/Classes/ide-support/CodeIDESupport.h b/tools/simulator/frameworks/runtime-src/Classes/ide-support/CodeIDESupport.h new file mode 100644 index 0000000000..3607d3c7b3 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/Classes/ide-support/CodeIDESupport.h @@ -0,0 +1,7 @@ +#ifndef __CODE_IDE_SUPPORT_H__ +#define __CODE_IDE_SUPPORT_H__ + +// define 1 to open Cocos Code IDE support, 0 to disable +#define CC_CODE_IDE_DEBUG_SUPPORT 1 + +#endif /* __CODE_IDE_SUPPORT_H__ */ diff --git a/tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeJsImpl.cpp b/tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeJsImpl.cpp new file mode 100644 index 0000000000..5e79dbdf3a --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeJsImpl.cpp @@ -0,0 +1,299 @@ +// +// RuntimeJsImpl.cpp +// Simulator +// +// + +#include "RuntimeJsImpl.h" + +#include "cocos2d.h" // 2dx engine + +#if (COCOS2D_DEBUG > 0) && (CC_CODE_IDE_DEBUG_SUPPORT > 0) + +#include "runtime/ConfigParser.h" // config +#include "runtime/Runtime.h" +#include "runtime/FileServer.h" + +// js +#include "js_module_register.h" + + +USING_NS_CC; + +static const char *RUNTIME_JS_BOOT_SCRIPT = "script/jsb_boot.js"; + +static bool reloadScript(const string& file) +{ + auto director = Director::getInstance(); + FontFNT::purgeCachedData(); + if (director->getOpenGLView()) + { + SpriteFrameCache::getInstance()->removeSpriteFrames(); + director->getTextureCache()->removeAllTextures(); + } + FileUtils::getInstance()->purgeCachedEntries(); + + //director->getScheduler()->unscheduleAll(); + //director->getScheduler()->scheduleUpdate(director->getActionManager(), Scheduler::PRIORITY_SYSTEM, false); + + string modulefile = file; + if (modulefile.empty()) + { + modulefile = ConfigParser::getInstance()->getEntryFile().c_str(); + } + + return ScriptingCore::getInstance()->runScript(modulefile.c_str()); +} + +bool runtime_FileUtils_addSearchPath(JSContext *cx, uint32_t argc, jsval *vp) +{ + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + bool ok = true; + JSObject *obj = JS_THIS_OBJECT(cx, vp); + js_proxy_t *proxy = jsb_get_js_proxy(obj); + cocos2d::FileUtils* cobj = (cocos2d::FileUtils *)(proxy ? proxy->ptr : NULL); + JSB_PRECONDITION2( cobj, cx, false, "cocos2dx_FileUtils_addSearchPath : Invalid Native Object"); + if (argc == 1 || argc == 2) { + std::string arg0; + bool arg1 = false; + + ok &= jsval_to_std_string(cx, args.get(0), &arg0); + JSB_PRECONDITION2(ok, cx, false, "cocos2dx_FileUtils_addSearchPath : Error processing arguments"); + + if (argc == 2) + { + arg1 = JS::ToBoolean(JS::RootedValue(cx, args.get(1))); + } + + if (! FileUtils::getInstance()->isAbsolutePath(arg0)) + { + // add write path to search path + if (FileServer::getShareInstance()->getIsUsingWritePath()) + { + cobj->addSearchPath(FileServer::getShareInstance()->getWritePath() + arg0, arg1); + } else + { + cobj->addSearchPath(arg0, arg1); + } + +#if(CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) + // add project path to search path + cobj->addSearchPath(RuntimeEngine::getInstance()->getRuntime()->getProjectPath() + arg0, arg1); +#endif + } + + args.rval().setUndefined(); + return true; + } + + JS_ReportError(cx, "cocos2dx_FileUtils_addSearchPath : wrong number of arguments: %d, was expecting %d", argc, 1); + return false; +} + +bool runtime_FileUtils_setSearchPaths(JSContext *cx, uint32_t argc, jsval *vp) +{ + JS::CallArgs args = JS::CallArgsFromVp(argc, vp); + bool ok = true; + JSObject *obj = JS_THIS_OBJECT(cx, vp); + js_proxy_t *proxy = jsb_get_js_proxy(obj); + cocos2d::FileUtils* cobj = (cocos2d::FileUtils *)(proxy ? proxy->ptr : NULL); + JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_FileUtils_setSearchPaths : Invalid Native Object"); + if (argc == 1) { + std::vector vecPaths, writePaths; + ok &= jsval_to_std_vector_string(cx, args.get(0), &vecPaths); + JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_FileUtils_setSearchPaths : Error processing arguments"); + + std::vector originPath; // for IOS platform. + std::vector projPath; // for Desktop platform. + for (int i = 0; i < vecPaths.size(); i++) + { + if (!FileUtils::getInstance()->isAbsolutePath(vecPaths[i])) + { + originPath.push_back(vecPaths[i]); // for IOS platform. + projPath.push_back(RuntimeEngine::getInstance()->getRuntime()->getProjectPath()+vecPaths[i]); //for Desktop platform. + writePaths.push_back(FileServer::getShareInstance()->getWritePath() + vecPaths[i]); + } + } + +#if(CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) + vecPaths.insert(vecPaths.end(), projPath.begin(), projPath.end()); +#endif + if (FileServer::getShareInstance()->getIsUsingWritePath()) + { + vecPaths.insert(vecPaths.end(), writePaths.begin(), writePaths.end()); + } else + { + vecPaths.insert(vecPaths.end(), originPath.begin(), originPath.end()); + } + + cobj->setSearchPaths(vecPaths); + + args.rval().setUndefined(); + return true; + } + + JS_ReportError(cx, "js_cocos2dx_FileUtils_setSearchPaths : wrong number of arguments: %d, was expecting %d", argc, 1); + return false; +} + +void register_FileUtils(JSContext *cx, JS::HandleObject global) +{ + JS::RootedValue nsval(cx); + JS::RootedObject ns(cx); + JS_GetProperty(cx, global, "cc", &nsval); + if (nsval == JSVAL_VOID) { + return; + } else { + ns.set(nsval.toObjectOrNull()); + } + + JS::RootedObject proto(cx, jsb_cocos2d_FileUtils_prototype); + JS_DefineFunction(cx, proto, "addSearchPath", runtime_FileUtils_addSearchPath, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE); + JS_DefineFunction(cx, proto, "setSearchPaths", runtime_FileUtils_setSearchPaths, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE); +} + +RuntimeJsImpl* RuntimeJsImpl::create() +{ + RuntimeJsImpl *instance = new RuntimeJsImpl(); + return instance; +} + +bool RuntimeJsImpl::initJsEnv() +{ + if (_hasStarted) + { + return true; + } + + js_module_register(); + ScriptingCore::getInstance()->addRegisterCallback(register_FileUtils); + ScriptingCore::getInstance()->start(); + _hasStarted = true; + + ScriptEngineProtocol *engine = ScriptingCore::getInstance(); + ScriptEngineManager::getInstance()->setScriptEngine(engine); + + return true; +} + +bool RuntimeJsImpl::startWithDebugger() +{ + initJsEnv(); + + int debugPort = 5086; +#if(CC_PLATFORM_MAC == CC_TARGET_PLATFORM || CC_PLATFORM_WIN32 == CC_TARGET_PLATFORM) + debugPort = ConfigParser::getInstance()->getDebugPort(); +#endif + ScriptingCore::getInstance()->enableDebugger(debugPort); + + return true; +} + +void RuntimeJsImpl::startScript(const std::string& path) +{ + loadScriptFile(path); +} + +void RuntimeJsImpl::onStartDebuger(const rapidjson::Document& dArgParse, rapidjson::Document& dReplyParse) +{ + if (loadScriptFile(ConfigParser::getInstance()->getEntryFile())) + { + dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); + } + else + { + dReplyParse.AddMember("code",1,dReplyParse.GetAllocator()); + } +} + +void RuntimeJsImpl::onClearCompile(const rapidjson::Document& dArgParse, rapidjson::Document& dReplyParse) +{ + if (dArgParse.HasMember("modulefiles") && dArgParse["modulefiles"].Size() != 0) + { + const rapidjson::Value& objectfiles = dArgParse["modulefiles"]; + for (rapidjson::SizeType i = 0; i < objectfiles.Size(); i++) + { + ScriptingCore::getInstance()->cleanScript(objectfiles[i].GetString()); + } + } + else + { + std::unordered_map filenameScript = ScriptingCore::getInstance()->getFileScript(); + filenameScript.clear(); + } + + dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); +} + +void RuntimeJsImpl::onPrecompile(const rapidjson::Document& dArgParse, rapidjson::Document& dReplyParse) +{ + const rapidjson::Value& objectfiles = dArgParse["modulefiles"]; + for (rapidjson::SizeType i = 0; i < objectfiles.Size(); i++) + { + ScriptingCore::getInstance()->compileScript(objectfiles[i].GetString()); + } + + dReplyParse.AddMember("code",0,dReplyParse.GetAllocator()); +} + +void RuntimeJsImpl::onReload(const rapidjson::Document &dArgParse, rapidjson::Document &dReplyParse) +{ + if (dArgParse.HasMember("modulefiles")){ + rapidjson::Value bodyvalue(rapidjson::kObjectType); + const rapidjson::Value& objectfiles = dArgParse["modulefiles"]; + for (rapidjson::SizeType i = 0; i < objectfiles.Size(); i++){ + if (!reloadScript(objectfiles[i].GetString())) { + bodyvalue.AddMember(objectfiles[i].GetString(),1,dReplyParse.GetAllocator()); + } + } + if (0 == objectfiles.Size()) + { + reloadScript(""); + } + dReplyParse.AddMember("body", bodyvalue, dReplyParse.GetAllocator()); + }else + { + reloadScript(""); + } + + dReplyParse.AddMember("code", 0, dReplyParse.GetAllocator()); +} + +void RuntimeJsImpl::onRemove(const std::string &filename) +{ + ScriptingCore::getInstance()->cleanScript(filename.c_str()); +} + +void RuntimeJsImpl::end() +{ + ScriptEngineManager::destroyInstance(); + RuntimeProtocol::end(); +} + +// private + +RuntimeJsImpl::RuntimeJsImpl() +: _hasStarted(false) +{ +} + +bool RuntimeJsImpl::loadScriptFile(const std::string& path) +{ + std::string filepath = path; + if (filepath.empty()) + { + filepath = ConfigParser::getInstance()->getEntryFile(); + } + CCLOG("------------------------------------------------"); + CCLOG("LOAD Js FILE: %s", filepath.c_str()); + CCLOG("------------------------------------------------"); + + initJsEnv(); + auto engine = ScriptingCore::getInstance(); + engine->runScript(RUNTIME_JS_BOOT_SCRIPT); + ScriptEngineManager::getInstance()->setScriptEngine(engine); + return ScriptingCore::getInstance()->runScript(filepath.c_str()); +} + + +#endif // (COCOS2D_DEBUG > 0) && (CC_CODE_IDE_DEBUG_SUPPORT > 0) \ No newline at end of file diff --git a/tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeJsImpl.h b/tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeJsImpl.h new file mode 100644 index 0000000000..d324f3fea2 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeJsImpl.h @@ -0,0 +1,39 @@ +// +// RuntimeJsImpl.h +// Simulator +// +// + +#ifndef __Simulator__RuntimeJsImpl__ +#define __Simulator__RuntimeJsImpl__ + +#include "CodeIDESupport.h" +#include "cocos2d.h" + +#if (COCOS2D_DEBUG > 0) && (CC_CODE_IDE_DEBUG_SUPPORT > 0) +#include "runtime/RuntimeProtocol.h" + +class RuntimeJsImpl : public RuntimeProtocol +{ +public: + static RuntimeJsImpl* create(); + + void startScript(const std::string& file); + void onStartDebuger(const rapidjson::Document& dArgParse, rapidjson::Document& dReplyParse); + void onClearCompile(const rapidjson::Document& dArgParse, rapidjson::Document& dReplyParse); + void onPrecompile(const rapidjson::Document& dArgParse, rapidjson::Document& dReplyParse); + void onReload(const rapidjson::Document& dArgParse, rapidjson::Document& dReplyParse); + void onRemove(const std::string &filename); + void end(); + + bool startWithDebugger(); +private: + RuntimeJsImpl(); + bool initJsEnv(); + bool loadScriptFile(const std::string& file); + bool _hasStarted; +}; + +#endif // (COCOS2D_DEBUG > 0) && (CC_CODE_IDE_DEBUG_SUPPORT > 0) + +#endif /* defined(__Simulator__RuntimeLua__) */ diff --git a/tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeLuaImpl.cpp b/tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeLuaImpl.cpp new file mode 100644 index 0000000000..5a91d00b2f --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeLuaImpl.cpp @@ -0,0 +1,341 @@ +// +// RuntimeLuaImpl.cpp +// Simulator +// +// + +#include "RuntimeLuaImpl.h" + +#if (COCOS2D_DEBUG > 0) && (CC_CODE_IDE_DEBUG_SUPPORT > 0) + +#include +#include + +#include "lua_debugger.h" +#include "CCLuaEngine.h" +#include "LuaBasicConversions.h" +#include "lua_module_register.h" + +#include "runtime/Runtime.h" +#include "runtime/ConfigParser.h" +#include "runtime/FileServer.h" + +extern std::string g_projectPath; // Runtime.cpp + +USING_NS_CC; +using namespace std; + +static void resetLuaModule(const string& fileName) +{ + if (fileName.empty()) + { + return; + } + auto engine = LuaEngine::getInstance(); + LuaStack* luaStack = engine->getLuaStack(); + lua_State* stack = luaStack->getLuaState(); + lua_getglobal(stack, "package"); /* L: package */ + lua_getfield(stack, -1, "loaded"); /* L: package loaded */ + lua_pushnil(stack); /* L: lotable ?-.. nil */ + while (0 != lua_next(stack, -2)) /* L: lotable ?-.. key value */ + { + //CCLOG("%s - %s \n", tolua_tostring(stack, -2, ""), lua_typename(stack, lua_type(stack, -1))); + std::string key = tolua_tostring(stack, -2, ""); + std::string tableKey = key; + size_t found = tableKey.rfind(".lua"); + if (found != std::string::npos) + tableKey = tableKey.substr(0, found); + tableKey = replaceAll(tableKey, ".", "/"); + tableKey = replaceAll(tableKey, "\\", "/"); + tableKey.append(".lua"); + found = fileName.rfind(tableKey); + if (0 == found || (found != std::string::npos && fileName.at(found - 1) == '/')) + { + lua_pushstring(stack, key.c_str()); + lua_pushnil(stack); + if (lua_istable(stack, -5)) + { + lua_settable(stack, -5); + } + } + lua_pop(stack, 1); + } + lua_pop(stack, 2); +} + +bool reloadScript(const string& file) +{ + auto director = Director::getInstance(); + FontFNT::purgeCachedData(); + if (director->getOpenGLView()) + { + SpriteFrameCache::getInstance()->removeSpriteFrames(); + director->getTextureCache()->removeAllTextures(); + } + FileUtils::getInstance()->purgeCachedEntries(); + string modulefile = file; + + if (! modulefile.empty()) + { + resetLuaModule(modulefile); + } + else + { + modulefile = ConfigParser::getInstance()->getEntryFile().c_str(); + } + + auto engine = LuaEngine::getInstance(); + LuaStack* luaStack = engine->getLuaStack(); + std::string require = "require \'" + modulefile + "\'"; + return luaStack->executeString(require.c_str()); +} + +int lua_cocos2dx_runtime_addSearchPath(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::FileUtils* 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.FileUtils",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::FileUtils*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_FileUtils_addSearchPath'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1 || argc == 2) + { + std::string arg0; + bool arg1 = false; + + ok &= luaval_to_std_string(tolua_S, 2,&arg0); + + if (argc == 2) + { + ok &= luaval_to_boolean(tolua_S, 3, &arg1); + } + + if(!ok) + return 0; + + if (! FileUtils::getInstance()->isAbsolutePath(arg0)) + { + // add write path to search path + if (FileServer::getShareInstance()->getIsUsingWritePath()) + { + cobj->addSearchPath(FileServer::getShareInstance()->getWritePath() + arg0, arg1); + } else + { + cobj->addSearchPath(arg0, arg1); + } + +#if(CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) + // add project path to search path + cobj->addSearchPath(g_projectPath + arg0, arg1); +#endif + } + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "addSearchPath",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_FileUtils_addSearchPath'.",&tolua_err); +#endif + + return 0; +} + +int lua_cocos2dx_runtime_setSearchPaths(lua_State* tolua_S) +{ + int argc = 0; + cocos2d::FileUtils* 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.FileUtils",0,&tolua_err)) goto tolua_lerror; +#endif + + cobj = (cocos2d::FileUtils*)tolua_tousertype(tolua_S,1,0); + +#if COCOS2D_DEBUG >= 1 + if (!cobj) + { + tolua_error(tolua_S,"invalid 'cobj' in function 'lua_cocos2dx_runtime_setSearchPaths'", nullptr); + return 0; + } +#endif + + argc = lua_gettop(tolua_S)-1; + if (argc == 1) + { + std::vector vecPaths, writePaths; + + ok &= luaval_to_std_vector_string(tolua_S, 2, &vecPaths); + if(!ok) + return 0; + std::vector originPath; // for IOS platform. + std::vector projPath; // for Desktop platform. + for (size_t i = 0; i < vecPaths.size(); i++) + { + if (!FileUtils::getInstance()->isAbsolutePath(vecPaths[i])) + { + originPath.push_back(vecPaths[i]); // for IOS platform. + projPath.push_back(g_projectPath + vecPaths[i]); //for Desktop platform. + writePaths.push_back(FileServer::getShareInstance()->getWritePath() + vecPaths[i]); + } + } + +#if(CC_TARGET_PLATFORM == CC_PLATFORM_MAC || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) + vecPaths.insert(vecPaths.end(), projPath.begin(), projPath.end()); +#endif + if (FileServer::getShareInstance()->getIsUsingWritePath()) + { + vecPaths.insert(vecPaths.end(), writePaths.begin(), writePaths.end()); + } else + { + vecPaths.insert(vecPaths.end(), originPath.begin(), originPath.end()); + } + + cobj->setSearchPaths(vecPaths); + return 0; + } + CCLOG("%s has wrong number of arguments: %d, was expecting %d \n", "setSearchPaths",argc, 1); + return 0; + +#if COCOS2D_DEBUG >= 1 +tolua_lerror: + tolua_error(tolua_S,"#ferror in function 'lua_cocos2dx_runtime_setSearchPaths'.",&tolua_err); +#endif + + return 0; +} + +static void register_runtime_override_function(lua_State* tolua_S) +{ + lua_pushstring(tolua_S, "cc.FileUtils"); + lua_rawget(tolua_S, LUA_REGISTRYINDEX); + if (lua_istable(tolua_S,-1)){ + tolua_function(tolua_S,"addSearchPath",lua_cocos2dx_runtime_addSearchPath); + tolua_function(tolua_S,"setSearchPaths",lua_cocos2dx_runtime_setSearchPaths); + } + lua_pop(tolua_S, 1); +} + +static void luaScriptLoader(std::string strDebugArg) +{ + +} + +//////////////////////////////////////// + +RuntimeLuaImpl *RuntimeLuaImpl::create() +{ + auto instance = new RuntimeLuaImpl(); + return instance; +} + +void RuntimeLuaImpl::onStartDebuger(const rapidjson::Document& dArgParse, rapidjson::Document& dReplyParse) +{ + // Lua + char szDebugArg[1024] = {0}; + sprintf(szDebugArg, "require('debugger')(%s,'%s')",dArgParse["debugcfg"].GetString(), ""); + startScript(szDebugArg); + dReplyParse.AddMember("code", 0, dReplyParse.GetAllocator()); +} + +void RuntimeLuaImpl::onReload(const rapidjson::Document &dArgParse, rapidjson::Document &dReplyParse) +{ + // lua + if (dArgParse.HasMember("modulefiles")) + { + rapidjson::Value bodyvalue(rapidjson::kObjectType); + const rapidjson::Value& objectfiles = dArgParse["modulefiles"]; + for (rapidjson::SizeType i = 0; i < objectfiles.Size(); i++) + { + if (!reloadScript(objectfiles[i].GetString())) + { + bodyvalue.AddMember(objectfiles[i].GetString(), 1, dReplyParse.GetAllocator()); + } + } + if (0 == objectfiles.Size()) + { + reloadScript(""); + } + dReplyParse.AddMember("body", bodyvalue, dReplyParse.GetAllocator()); + } + + dReplyParse.AddMember("code", 0, dReplyParse.GetAllocator()); +} + +void RuntimeLuaImpl::startScript(const std::string& strDebugArg) +{ + init(); + auto engine = LuaEngine::getInstance(); + auto stack = engine->getLuaStack(); + + const ProjectConfig &project = RuntimeEngine::getInstance()->getProjectConfig(); + + // set search path + string path = FileUtils::getInstance()->fullPathForFilename(project.getScriptFileRealPath().c_str()); + size_t pos; + while ((pos = path.find_first_of("\\")) != std::string::npos) + { + path.replace(pos, 1, "/"); + } + size_t p = path.find_last_of("/"); + string workdir; + if (p != path.npos) + { + workdir = path.substr(0, p); + stack->addSearchPath(workdir.c_str()); + FileUtils::getInstance()->addSearchPath(workdir); + } + + // register lua engine + if (!strDebugArg.empty()) + { + // open debugger.lua module + cocos2d::log("debug args = %s", strDebugArg.c_str()); + luaopen_lua_debugger(engine->getLuaStack()->getLuaState()); + engine->executeString(strDebugArg.c_str()); + } + std::string code("require \""); + code.append(ConfigParser::getInstance()->getEntryFile().c_str()); + code.append("\""); + engine->executeString(code.c_str()); +} + +// +// private +// + +void RuntimeLuaImpl::init() +{ + auto engine = LuaEngine::getInstance(); + ScriptEngineManager::getInstance()->setScriptEngine(engine); + lua_module_register(engine->getLuaStack()->getLuaState()); + register_runtime_override_function(engine->getLuaStack()->getLuaState()); + engine->getLuaStack()->setXXTEAKeyAndSign("2dxLua", strlen("2dxLua"), "XXTEA", strlen("XXTEA")); +} + +#endif // (COCOS2D_DEBUG > 0) && (CC_CODE_IDE_DEBUG_SUPPORT > 0) \ No newline at end of file diff --git a/tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeLuaImpl.h b/tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeLuaImpl.h new file mode 100644 index 0000000000..d67c923669 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/Classes/ide-support/RuntimeLuaImpl.h @@ -0,0 +1,32 @@ +// +// RuntimeLuaImpl.h +// Simulator +// +// + +#ifndef __Simulator__RuntimeLuaImpl__ +#define __Simulator__RuntimeLuaImpl__ + +#include "CodeIDESupport.h" +#include "cocos2d.h" + +#if (COCOS2D_DEBUG > 0) && (CC_CODE_IDE_DEBUG_SUPPORT > 0) + +#include "runtime/RuntimeProtocol.h" + +class RuntimeLuaImpl : public RuntimeProtocol +{ +public: + static RuntimeLuaImpl *create(); + + void onStartDebuger(const rapidjson::Document& dArgParse, rapidjson::Document& dReplyParse); + void onReload(const rapidjson::Document& dArgParse, rapidjson::Document& dReplyParse); + void startScript(const std::string& strDebugArg); + +private: + void init(); +}; + +#endif // (COCOS2D_DEBUG > 0) && (CC_CODE_IDE_DEBUG_SUPPORT > 0) + +#endif /* defined(__Simulator__RuntimeLua__) */ diff --git a/tools/simulator/frameworks/runtime-src/Classes/ide-support/lang b/tools/simulator/frameworks/runtime-src/Classes/ide-support/lang new file mode 100644 index 0000000000..1c13dacd89 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/Classes/ide-support/lang @@ -0,0 +1,29 @@ +{ + "zh-CN": { + "View": "视图(&V)", + "Exit": "退出(&X)", + "File": "文件(&F)", + "Portrait": "ç«–å±", + "Landscape": "横å±", + "Refresh": "刷新(é‡å¯)", + "Zoom Out": "缩放", + "Simulator": "模拟器", + "Open File": "打开文件", + "Open Project": "打开工程", + "Error": "错误", + "Help": "帮助(&H)", + "About": "关于(&A)" + }, + "zh-Hans": { + "View": "视图", + "Exit": "退出", + "File": "文件", + "Portrait": "ç«–å±", + "Landscape": "横å±", + "Refresh": "刷新(é‡å¯)", + "Zoom Out": "缩放", + "Simulator": "模拟器", + "Help": "帮助(&H)", + "About": "关于(&A)" + } +} \ No newline at end of file diff --git a/tools/simulator/frameworks/runtime-src/Classes/ide-support/lua_debugger.c b/tools/simulator/frameworks/runtime-src/Classes/ide-support/lua_debugger.c new file mode 100644 index 0000000000..2b695a1349 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/Classes/ide-support/lua_debugger.c @@ -0,0 +1,8673 @@ + +/* lua_debugger.c */ + +#if __cplusplus +extern "C" { +#endif + +#include "lua.h" +#include "lauxlib.h" +#include "lua_debugger.h" + +/* 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,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,0x6c,0x6f,0x63,0x61,0x6c,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, +}; + + + +int luaopen_lua_m_debugger(lua_State *L) { + luaL_loadbuffer(L, + (const char*)lua_m_debugger, + sizeof(lua_m_debugger), + "debugger"); + return 1; +} + + +static luaL_Reg lua_debugger_modules[] = { + {"debugger", luaopen_lua_m_debugger}, + {NULL, NULL} +}; + +void luaopen_lua_debugger(lua_State* L) +{ + luaL_Reg* lib = lua_debugger_modules; + lua_getglobal(L, "package"); + lua_getfield(L, -1, "preload"); + for (; lib->func; lib++) + { + lib->func(L); + lua_setfield(L, -2, lib->name); + } + lua_pop(L, 2); +} + +#if __cplusplus +} +#endif diff --git a/tools/simulator/frameworks/runtime-src/Classes/ide-support/lua_debugger.h b/tools/simulator/frameworks/runtime-src/Classes/ide-support/lua_debugger.h new file mode 100644 index 0000000000..43c2c8ae35 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/Classes/ide-support/lua_debugger.h @@ -0,0 +1,23 @@ + +/* lua_debugger.h.h */ + +#ifndef __LUA_MODULES_049C000C96FE547176CCBB7690BA01B6_H_ +#define __LUA_MODULES_049C000C96FE547176CCBB7690BA01B6_H_ + +#if __cplusplus +extern "C" { +#endif + +#include "lua.h" + +void luaopen_lua_debugger(lua_State* L); + +/* +int luaopen_lua_m_debugger(lua_State* L); +*/ + +#if __cplusplus +} +#endif + +#endif /* __LUA_MODULES_049C000C96FE547176CCBB7690BA01B6_H_ */ diff --git a/tools/simulator/frameworks/runtime-src/Classes/js_module_register.h b/tools/simulator/frameworks/runtime-src/Classes/js_module_register.h new file mode 100644 index 0000000000..37c482649e --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/Classes/js_module_register.h @@ -0,0 +1,79 @@ +#ifndef __JS_TEMPLATE_RUNTIME_FRAMEWORKS_RUNTIME_SRC_CLASSES_JS_MODULE_REGISTER_H__ +#define __JS_TEMPLATE_RUNTIME_FRAMEWORKS_RUNTIME_SRC_CLASSES_JS_MODULE_REGISTER_H__ + +#include "scripting/js-bindings/manual/ScriptingCore.h" +#include "jsb_cocos2dx_auto.hpp" +#include "jsb_cocos2dx_ui_auto.hpp" +#include "jsb_cocos2dx_studio_auto.hpp" +#include "jsb_cocos2dx_builder_auto.hpp" +#include "jsb_cocos2dx_spine_auto.hpp" +#include "jsb_cocos2dx_extension_auto.hpp" +#include "ui/jsb_cocos2dx_ui_manual.h" +#include "cocostudio/jsb_cocos2dx_studio_manual.h" +#include "cocosbuilder/js_bindings_ccbreader.h" +#include "spine/jsb_cocos2dx_spine_manual.h" +#include "extension/jsb_cocos2dx_extension_manual.h" +#include "localstorage/js_bindings_system_registration.h" +#include "chipmunk/js_bindings_chipmunk_registration.h" +#include "jsb_opengl_registration.h" +#include "network/XMLHTTPRequest.h" +#include "network/jsb_websocket.h" +#include "network/jsb_socketio.h" +#include "cocos2d_specifics.hpp" + +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) +#include "platform/android/CCJavascriptJavaBridge.h" +#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC) +#include "platform/ios/JavaScriptObjCBridge.h" +#endif + +USING_NS_CC; +int js_module_register() +{ + ScriptingCore* sc = ScriptingCore::getInstance(); + sc->addRegisterCallback(register_all_cocos2dx); + sc->addRegisterCallback(register_cocos2dx_js_core); + sc->addRegisterCallback(jsb_register_system); + + // extension can be commented out to reduce the package + sc->addRegisterCallback(register_all_cocos2dx_extension); + sc->addRegisterCallback(register_all_cocos2dx_extension_manual); + + // chipmunk can be commented out to reduce the package + sc->addRegisterCallback(jsb_register_chipmunk); + // opengl can be commented out to reduce the package + sc->addRegisterCallback(JSB_register_opengl); + + // builder can be commented out to reduce the package + sc->addRegisterCallback(register_all_cocos2dx_builder); + sc->addRegisterCallback(register_CCBuilderReader); + + // ui can be commented out to reduce the package, attension studio need ui module + sc->addRegisterCallback(register_all_cocos2dx_ui); + sc->addRegisterCallback(register_all_cocos2dx_ui_manual); + + // studio can be commented out to reduce the package, + sc->addRegisterCallback(register_all_cocos2dx_studio); + sc->addRegisterCallback(register_all_cocos2dx_studio_manual); + + // spine can be commented out to reduce the package + sc->addRegisterCallback(register_all_cocos2dx_spine); + sc->addRegisterCallback(register_all_cocos2dx_spine_manual); + + // XmlHttpRequest can be commented out to reduce the package + sc->addRegisterCallback(MinXmlHttpRequest::_js_register); + // websocket can be commented out to reduce the package + sc->addRegisterCallback(register_jsb_websocket); + // sokcet io can be commented out to reduce the package + sc->addRegisterCallback(register_jsb_socketio); + +#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) + sc->addRegisterCallback(JavascriptJavaBridge::_js_register); +#elif (CC_TARGET_PLATFORM == CC_PLATFORM_IOS|| CC_TARGET_PLATFORM == CC_PLATFORM_MAC) + sc->addRegisterCallback(JavaScriptObjCBridge::_js_register); +#endif + return 1; +} + +#endif // __JS_TEMPLATE_RUNTIME_FRAMEWORKS_RUNTIME_SRC_CLASSES_JS_MODULE_REGISTER_H__ + diff --git a/tools/simulator/frameworks/runtime-src/Classes/lua_module_register.h b/tools/simulator/frameworks/runtime-src/Classes/lua_module_register.h new file mode 100755 index 0000000000..76e9671243 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/Classes/lua_module_register.h @@ -0,0 +1,31 @@ +#ifndef __LUA_TEMPLATE_RUNTIME_FRAMEWORKS_RUNTIME_SRC_CLASSES_LUA_MODULE_REGISTER_H__ +#define __LUA_TEMPLATE_RUNTIME_FRAMEWORKS_RUNTIME_SRC_CLASSES_LUA_MODULE_REGISTER_H__ + +#include "cocosdenshion/lua_cocos2dx_cocosdenshion_manual.h" +#include "network/lua_cocos2dx_network_manual.h" +#include "cocosbuilder/lua_cocos2dx_cocosbuilder_manual.h" +#include "cocostudio/lua_cocos2dx_coco_studio_manual.hpp" +#include "extension/lua_cocos2dx_extension_manual.h" +#include "ui/lua_cocos2dx_ui_manual.hpp" +#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) +{ + //Dont' change the module register order unless you know what your are doing + register_cocosdenshion_module(L); + register_network_module(L); + register_cocosbuilder_module(L); + register_cocostudio_module(L); + register_ui_moudle(L); + register_extension_module(L); + register_spine_module(L); + register_cocos3d_module(L); + register_audioengine_module(L); + return 1; +} + +#endif // __LUA_TEMPLATE_RUNTIME_FRAMEWORKS_RUNTIME_SRC_CLASSES_LUA_MODULE_REGISTER_H__ + diff --git a/tools/simulator/frameworks/runtime-src/proj.android/.classpath b/tools/simulator/frameworks/runtime-src/proj.android/.classpath new file mode 100755 index 0000000000..d57ec02513 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tools/simulator/frameworks/runtime-src/proj.android/.project b/tools/simulator/frameworks/runtime-src/proj.android/.project new file mode 100755 index 0000000000..b593ae59ff --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/.project @@ -0,0 +1,33 @@ + + + simulator + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + diff --git a/tools/simulator/frameworks/runtime-src/proj.android/.settings/org.eclipse.jdt.core.prefs b/tools/simulator/frameworks/runtime-src/proj.android/.settings/org.eclipse.jdt.core.prefs new file mode 100755 index 0000000000..b080d2ddc8 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/tools/simulator/frameworks/runtime-src/proj.android/AndroidManifest.xml b/tools/simulator/frameworks/runtime-src/proj.android/AndroidManifest.xml new file mode 100755 index 0000000000..5068cd5af3 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/AndroidManifest.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/simulator/frameworks/runtime-src/proj.android/ant.properties b/tools/simulator/frameworks/runtime-src/proj.android/ant.properties new file mode 100755 index 0000000000..6bad1d5c60 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/ant.properties @@ -0,0 +1,21 @@ +# This file is used to override default values used by the Ant build system. +# +# This file must be checked into Version Control Systems, as it is +# integral to the build system of your project. + +# This file is only used by the Ant script. + +# You can use this to override default values such as +# 'source.dir' for the location of your java source folder and +# 'out.dir' for the location of your output folder. + +# You can also use it define how the release builds are signed by declaring +# the following properties: +# 'key.store' for the location of your keystore and +# 'key.alias' for the name of the key to use. +# The password will be asked during the build when you use the 'release' target. + +key.alias.password=android +key.store.password=android +key.store=/Users/jryin/.android/debug.keystore +key.alias=androiddebugkey diff --git a/tools/simulator/frameworks/runtime-src/proj.android/build-cfg.json b/tools/simulator/frameworks/runtime-src/proj.android/build-cfg.json new file mode 100755 index 0000000000..4d56ca71ea --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/build-cfg.json @@ -0,0 +1,16 @@ +{ + "ndk_module_path" :[ + "../../../../../", + "../../../../../cocos/", + "../../../../../external", + "../../../../../cocos/scripting" + ], + "copy_resources": [ + ], + "must_copy_resources": [ + { + "from": "../../../config.json", + "to": "" + } + ] +} diff --git a/tools/simulator/frameworks/runtime-src/proj.android/build.xml b/tools/simulator/frameworks/runtime-src/proj.android/build.xml new file mode 100755 index 0000000000..e6cd82c5ec --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/build.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/simulator/frameworks/runtime-src/proj.android/jni/Android.mk b/tools/simulator/frameworks/runtime-src/proj.android/jni/Android.mk new file mode 100644 index 0000000000..dd8fbcadba --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/jni/Android.mk @@ -0,0 +1,38 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := cocos2dlua_shared + +LOCAL_MODULE_FILENAME := libcocos2dlua + +ifeq ($(COCOS_SIMULATOR_BUILD),1) +LOCAL_ARM_MODE := arm +endif + +FILE_LIST := hellolua/main.cpp +FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp) +FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/ide-support/*.cpp) +FILE_LIST += $(wildcard $(LOCAL_PATH)/../../Classes/ide-support/*.c) + +LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%) + +LOCAL_C_INCLUDES := \ +$(LOCAL_PATH)/../../Classes/protobuf-lite \ +$(LOCAL_PATH)/../../Classes/runtime \ +$(LOCAL_PATH)/../../Classes \ +$(LOCAL_PATH)/../../../../../../external \ +$(LOCAL_PATH)/../../../../../../tools/simulator/libsimulator/lib \ +$(LOCAL_PATH)/../../../../../../tools/simulator/libsimulator/lib/protobuf-lite + +LOCAL_STATIC_LIBRARIES := cocos2d_lua_static +LOCAL_STATIC_LIBRARIES += cocos2d_simulator_static +LOCAL_STATIC_LIBRARIES += cocos2d_js_static + +LOCAL_EXPORT_CFLAGS := -DCOCOS2D_DEBUG=2 -DCOCOS2D_JAVASCRIPT + +include $(BUILD_SHARED_LIBRARY) + +$(call import-module,scripting/lua-bindings/proj.android) +$(call import-module,scripting/js-bindings/proj.android) +$(call import-module,tools/simulator/libsimulator/proj.android) diff --git a/tools/simulator/frameworks/runtime-src/proj.android/jni/Application.mk b/tools/simulator/frameworks/runtime-src/proj.android/jni/Application.mk new file mode 100644 index 0000000000..6e446c46fd --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/jni/Application.mk @@ -0,0 +1,16 @@ +APP_STL := gnustl_static + +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 +else + APP_CPPFLAGS += -DNDEBUG + APP_CPPFLAGS += -DCOCOS2D_DEBUG=1 + APP_OPTIM := release +endif + +COCOS_SIMULATOR_BUILD := 1 \ No newline at end of file diff --git a/tools/simulator/frameworks/runtime-src/proj.android/jni/hellolua/main.cpp b/tools/simulator/frameworks/runtime-src/proj.android/jni/hellolua/main.cpp new file mode 100755 index 0000000000..ff9c646e95 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/jni/hellolua/main.cpp @@ -0,0 +1,35 @@ +#include "AppDelegate.h" +#include "cocos2d.h" +#include "platform/android/jni/JniHelper.h" +#include +#include +#include "runtime/ConfigParser.h" +#include "ide-support/CodeIDESupport.h" + +#define LOG_TAG "main" +#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) + +using namespace cocos2d; + +void cocos_android_app_init (JNIEnv* env, jobject thiz) { + LOGD("cocos_android_app_init"); + AppDelegate *pAppDelegate = new AppDelegate(); +} + +extern "C" +{ + bool Java_org_cocos2dx_lua_AppActivity_nativeIsLandScape(JNIEnv *env, jobject thisz) + { + return ConfigParser::getInstance()->isLanscape(); + } + + bool Java_org_cocos2dx_lua_AppActivity_nativeIsDebug(JNIEnv *env, jobject thisz) + { +#if (COCOS2D_DEBUG > 0) && (CC_CODE_IDE_DEBUG_SUPPORT > 0) + return true; +#else + return false; +#endif + } +} + diff --git a/tools/simulator/frameworks/runtime-src/proj.android/proguard-project.txt b/tools/simulator/frameworks/runtime-src/proj.android/proguard-project.txt new file mode 100755 index 0000000000..f2fe1559a2 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/tools/simulator/frameworks/runtime-src/proj.android/project.properties b/tools/simulator/frameworks/runtime-src/proj.android/project.properties new file mode 100755 index 0000000000..3a475fb9e6 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/project.properties @@ -0,0 +1,13 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system use, +# "ant.properties", and override values to adapt the script to your +# project structure. + +# Project target. +target=android-10 + +android.library.reference.1=../../../../../cocos/platform/android/java diff --git a/tools/simulator/frameworks/runtime-src/proj.android/res/drawable-hdpi/icon.png b/tools/simulator/frameworks/runtime-src/proj.android/res/drawable-hdpi/icon.png new file mode 100755 index 0000000000..8aa4767c2f Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.android/res/drawable-hdpi/icon.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.android/res/drawable-ldpi/icon.png b/tools/simulator/frameworks/runtime-src/proj.android/res/drawable-ldpi/icon.png new file mode 100755 index 0000000000..17ce11a085 Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.android/res/drawable-ldpi/icon.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.android/res/drawable-mdpi/icon.png b/tools/simulator/frameworks/runtime-src/proj.android/res/drawable-mdpi/icon.png new file mode 100755 index 0000000000..3780aac46c Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.android/res/drawable-mdpi/icon.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.android/res/values/strings.xml b/tools/simulator/frameworks/runtime-src/proj.android/res/values/strings.xml new file mode 100755 index 0000000000..e41378172b --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/res/values/strings.xml @@ -0,0 +1,4 @@ + + + simulator + diff --git a/tools/simulator/frameworks/runtime-src/proj.android/src/org/cocos2dx/lua/AppActivity.java b/tools/simulator/frameworks/runtime-src/proj.android/src/org/cocos2dx/lua/AppActivity.java new file mode 100755 index 0000000000..e678b3ce41 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.android/src/org/cocos2dx/lua/AppActivity.java @@ -0,0 +1,130 @@ +/**************************************************************************** +Copyright (c) 2008-2010 Ricardo Quesada +Copyright (c) 2010-2012 cocos2d-x.org +Copyright (c) 2011 Zynga Inc. +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. +****************************************************************************/ +package org.cocos2dx.lua; + +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.util.Enumeration; +import java.util.ArrayList; + +import org.cocos2dx.lib.Cocos2dxActivity; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.pm.ApplicationInfo; +import android.content.pm.ActivityInfo; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.net.wifi.WifiInfo; +import android.net.wifi.WifiManager; +import android.os.Bundle; +import android.provider.Settings; +import android.text.format.Formatter; +import android.util.Log; +import android.view.WindowManager; +import android.widget.Toast; + + +public class AppActivity extends Cocos2dxActivity{ + + static String hostIPAdress = "0.0.0.0"; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if(nativeIsLandScape()) { + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); + } else { + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); + } + + //2.Set the format of window + + // Check the wifi is opened when the native is debug. + if(nativeIsDebug()) + { + getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + if(!isNetworkConnected()) + { + AlertDialog.Builder builder=new AlertDialog.Builder(this); + builder.setTitle("Warning"); + builder.setMessage("Please open WIFI for debuging..."); + builder.setPositiveButton("OK",new DialogInterface.OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, int which) { + startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); + finish(); + System.exit(0); + } + }); + + builder.setNegativeButton("Cancel", null); + builder.setCancelable(true); + builder.show(); + } + } + hostIPAdress = getHostIpAddress(); + } + private boolean isNetworkConnected() { + ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); + if (cm != null) { + NetworkInfo networkInfo = cm.getActiveNetworkInfo(); + ArrayList networkTypes = new ArrayList(); + networkTypes.add(ConnectivityManager.TYPE_WIFI); + try { + networkTypes.add(ConnectivityManager.class.getDeclaredField("TYPE_ETHERNET").getInt(null)); + } catch (NoSuchFieldException nsfe) { + } + catch (IllegalAccessException iae) { + throw new RuntimeException(iae); + } + if (networkInfo != null && networkTypes.contains(networkInfo.getType())) { + return true; + } + } + return false; + } + + public String getHostIpAddress() { + WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE); + WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); + int ip = wifiInfo.getIpAddress(); + return ((ip & 0xFF) + "." + ((ip >>>= 8) & 0xFF) + "." + ((ip >>>= 8) & 0xFF) + "." + ((ip >>>= 8) & 0xFF)); + } + + public static String getLocalIpAddress() { + return hostIPAdress; + } + + private static native boolean nativeIsLandScape(); + private static native boolean nativeIsDebug(); + +} diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/AppController.h b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/AppController.h new file mode 100755 index 0000000000..2e8186124e --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/AppController.h @@ -0,0 +1,35 @@ +/**************************************************************************** + Copyright (c) 2010-2013 cocos2d-x.org + 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. + ****************************************************************************/ + +@class RootViewController; + +@interface AppController : NSObject +{ + UIWindow *window; + RootViewController *viewController; +} + +@end + diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/AppController.mm b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/AppController.mm new file mode 100755 index 0000000000..396f92ca30 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/AppController.mm @@ -0,0 +1,148 @@ +/**************************************************************************** + Copyright (c) 2010-2013 cocos2d-x.org + 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. + ****************************************************************************/ + +#import +#import "cocos2d.h" + +#import "AppController.h" +#import "AppDelegate.h" +#import "RootViewController.h" +#import "platform/ios/CCEAGLView-ios.h" + +@implementation AppController + +#pragma mark - +#pragma mark Application lifecycle + +// cocos2d application instance +static AppDelegate s_sharedApplication; + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + + cocos2d::Application *app = cocos2d::Application::getInstance(); + app->initGLContextAttrs(); + cocos2d::GLViewImpl::convertAttrs(); + + // Override point for customization after application launch. + + // Add the view controller's view to the window and display. + window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; + CCEAGLView *eaglView = [CCEAGLView viewWithFrame: [window bounds] + pixelFormat: (NSString*)cocos2d::GLViewImpl::_pixelFormat + depthFormat: cocos2d::GLViewImpl::_depthFormat + preserveBackbuffer: NO + sharegroup: nil + multiSampling: NO + numberOfSamples: 0 ]; + + [eaglView setMultipleTouchEnabled:YES]; + + // Use RootViewController manage CCEAGLView + viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil]; + viewController.wantsFullScreenLayout = YES; + viewController.view = eaglView; + + // Set RootViewController to window + if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0) + { + // warning: addSubView doesn't work on iOS6 + [window addSubview: viewController.view]; + } + else + { + // use this method on ios6 + [window setRootViewController:viewController]; + } + + [window makeKeyAndVisible]; + + [[UIApplication sharedApplication] setStatusBarHidden: YES]; + + // IMPORTANT: Setting the GLView should be done after creating the RootViewController + cocos2d::GLView *glview = cocos2d::GLViewImpl::createWithEAGLView(eaglView); + cocos2d::Director::getInstance()->setOpenGLView(glview); + + app->run(); + return YES; +} + + +- (void)applicationWillResignActive:(UIApplication *)application { + /* + Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. + */ + cocos2d::Director::getInstance()->pause(); +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + /* + Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. + */ + cocos2d::Director::getInstance()->resume(); +} + +- (void)applicationDidEnterBackground:(UIApplication *)application { + /* + Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + If your application supports background execution, called instead of applicationWillTerminate: when the user quits. + */ + cocos2d::Application::getInstance()->applicationDidEnterBackground(); +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + /* + Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. + */ + cocos2d::Application::getInstance()->applicationWillEnterForeground(); +} + +- (void)applicationWillTerminate:(UIApplication *)application { + /* + Called when the application is about to terminate. + See also applicationDidEnterBackground:. + */ +} + + +#pragma mark - +#pragma mark Memory management + +- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { + /* + Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. + */ + cocos2d::Director::getInstance()->purgeCachedData(); +} + + +- (void)dealloc { + [super dealloc]; +} + + +@end + diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default-568h@2x.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default-568h@2x.png new file mode 100755 index 0000000000..66c6d1cead Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default-568h@2x.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default-667h@2x.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default-667h@2x.png new file mode 100755 index 0000000000..a0f61ec8e6 Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default-667h@2x.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default-736h@3x.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default-736h@3x.png new file mode 100755 index 0000000000..dadccee686 Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default-736h@3x.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default.png new file mode 100755 index 0000000000..dcb80725de Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default@2x.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default@2x.png new file mode 100755 index 0000000000..84689888a1 Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Default@2x.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-100.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-100.png new file mode 100755 index 0000000000..ef38d4500a Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-100.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-114.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-114.png new file mode 100755 index 0000000000..c3807861ad Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-114.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-120.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-120.png new file mode 100755 index 0000000000..a5b49ccbb1 Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-120.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-144.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-144.png new file mode 100755 index 0000000000..1526615c02 Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-144.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-152.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-152.png new file mode 100755 index 0000000000..8aa82506d0 Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-152.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-29.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-29.png new file mode 100755 index 0000000000..0500184c86 Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-29.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-40.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-40.png new file mode 100755 index 0000000000..775685daca Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-40.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-50.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-50.png new file mode 100755 index 0000000000..ac381bc20e Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-50.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-57.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-57.png new file mode 100755 index 0000000000..4fcc6fddff Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-57.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-58.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-58.png new file mode 100755 index 0000000000..f0f8b7fe98 Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-58.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-72.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-72.png new file mode 100755 index 0000000000..2c573c8df4 Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-72.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-76.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-76.png new file mode 100755 index 0000000000..8a1fa1850c Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-76.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-80.png b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-80.png new file mode 100755 index 0000000000..d9c7ab446b Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Icon-80.png differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Info.plist b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Info.plist new file mode 100644 index 0000000000..7037667ac7 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Info.plist @@ -0,0 +1,157 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIconFiles + + Icon-80 + Icon-58 + Icon-29 + Icon-120 + Icon-57.png + Icon-114.png + Icon-72.png + Icon-144.png + + CFBundleIconFiles~ipad + + Icon-58 + Icon-29 + Icon-80 + Icon-40 + Icon-100 + Icon-50 + Icon-152 + Icon-76 + Icon-120 + Icon-57.png + Icon-114.png + Icon-72.png + Icon-144.png + + CFBundleIdentifier + com.cocos.apps.simulator + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + simulator + CFBundlePackageType + APPL + CFBundleShortVersionString + 3.5rc0 + CFBundleSignature + ???? + CFBundleVersion + 20150314 + LSRequiresIPhoneOS + + 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} + + + UIPrerenderedIcon + + UIRequiredDeviceCapabilities + + accelerometer + + opengles-1 + + + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Prefix.pch b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Prefix.pch new file mode 100755 index 0000000000..5ec7dfe43e --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/Prefix.pch @@ -0,0 +1,8 @@ +// +// Prefix header for all source files of the 'simulator' target in the 'simulator' project +// + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.h b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.h new file mode 100755 index 0000000000..11dfc4bf88 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.h @@ -0,0 +1,33 @@ +/**************************************************************************** + Copyright (c) 2010-2011 cocos2d-x.org + Copyright (c) 2010 Ricardo Quesada + + 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. + ****************************************************************************/ + +#import + + +@interface RootViewController : UIViewController { + +} +- (BOOL)prefersStatusBarHidden; +@end diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.mm b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.mm new file mode 100755 index 0000000000..5bc929e35f --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.mm @@ -0,0 +1,127 @@ +/**************************************************************************** + Copyright (c) 2010-2011 cocos2d-x.org + Copyright (c) 2010 Ricardo Quesada + + 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. + ****************************************************************************/ + +#import "RootViewController.h" +#import "cocos2d.h" +#import "platform/ios/CCEAGLView-ios.h" +#include "runtime/ConfigParser.h" + +@implementation RootViewController + +/* + // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { + // Custom initialization + } + return self; +} +*/ + +/* +// Implement loadView to create a view hierarchy programmatically, without using a nib. +- (void)loadView { +} +*/ + +/* +// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. +- (void)viewDidLoad { + [super viewDidLoad]; +} + +*/ +// Override to allow orientations other than the default portrait orientation. +// This method is deprecated on ios6 +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + if (ConfigParser::getInstance()->isLanscape()) { + return UIInterfaceOrientationIsLandscape( interfaceOrientation ); + }else{ + return UIInterfaceOrientationIsPortrait( interfaceOrientation ); + } +} + +// For ios6, use supportedInterfaceOrientations & shouldAutorotate instead +- (NSUInteger) supportedInterfaceOrientations{ +#ifdef __IPHONE_6_0 + if (ConfigParser::getInstance()->isLanscape()) { + return UIInterfaceOrientationMaskLandscape; + }else{ + return UIInterfaceOrientationMaskPortraitUpsideDown; + } +#endif +} + +- (BOOL) shouldAutorotate { + if (ConfigParser::getInstance()->isLanscape()) { + return YES; + }else{ + return NO; + } +} + +- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { + [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; + + cocos2d::GLView *glview = cocos2d::Director::getInstance()->getOpenGLView(); + + if (glview) + { + CCEAGLView *eaglview = (CCEAGLView*) glview->getEAGLView(); + + if (eaglview) + { + CGSize s = CGSizeMake([eaglview getWidth], [eaglview getHeight]); + cocos2d::Application::getInstance()->applicationScreenSizeChanged((int) s.width, (int) s.height); + } + } +} + +//fix not hide status on ios7 +- (BOOL)prefersStatusBarHidden +{ + return YES; +} + +- (void)didReceiveMemoryWarning { + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + + // Release any cached data, images, etc that aren't in use. +} + +- (void)viewDidUnload { + [super viewDidUnload]; + // Release any retained subviews of the main view. + // e.g. self.myOutlet = nil; +} + + +- (void)dealloc { + [super dealloc]; +} + + +@end diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/build-cfg.json b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/build-cfg.json new file mode 100755 index 0000000000..e93fceb246 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/build-cfg.json @@ -0,0 +1,6 @@ +{ + "remove_res" : [ + "src", + "res" + ] +} diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/main.m b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/main.m new file mode 100755 index 0000000000..39146b5c74 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/ios/main.m @@ -0,0 +1,16 @@ +// +// main.m +// simulator +// +// Copyright __MyCompanyName__ 2011. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) { + + NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; + int retVal = UIApplicationMain(argc, argv, nil, @"AppController"); + [pool release]; + return retVal; +} diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Base.lproj/ConsoleWindow.xib b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Base.lproj/ConsoleWindow.xib new file mode 100644 index 0000000000..1cc9932310 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Base.lproj/ConsoleWindow.xib @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Base.lproj/MainMenu.xib b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Base.lproj/MainMenu.xib new file mode 100755 index 0000000000..95349511fa --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Base.lproj/MainMenu.xib @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/ConsoleWindowController.h b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/ConsoleWindowController.h new file mode 100755 index 0000000000..7b1c06d215 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/ConsoleWindowController.h @@ -0,0 +1,23 @@ + +#import + +@interface ConsoleWindowController : NSWindowController +{ + NSTextView *textView; + IBOutlet NSButton *checkScroll; + IBOutlet NSButton *topCheckBox; + NSMutableArray *linesCount; + NSUInteger traceCount; +} + +@property (assign) IBOutlet NSTextView *textView; + +- (void) trace:(NSString*)msg; +- (IBAction)onClear:(id)sender; +- (IBAction)onScrollChange:(id)sender; +- (IBAction)onTopChange:(id)sender; + +@end + + + diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/ConsoleWindowController.m b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/ConsoleWindowController.m new file mode 100755 index 0000000000..aa56938433 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/ConsoleWindowController.m @@ -0,0 +1,100 @@ + +#import "ConsoleWindowController.h" + +@interface ConsoleWindowController () + +@end + +#define SKIP_LINES_COUNT 3 +#define MAX_LINE_LEN 4096 +#define MAX_LINES_COUNT 200 + +@implementation ConsoleWindowController +@synthesize textView; + +- (id)initWithWindow:(NSWindow *)window +{ + self = [super initWithWindow:window]; + if (self) + { + // Initialization code here. + linesCount = [[NSMutableArray arrayWithCapacity:MAX_LINES_COUNT + 1] retain]; + } + + return self; +} + +- (void)dealloc +{ + [linesCount release]; + [super dealloc]; +} + +- (void)windowDidLoad +{ + [super windowDidLoad]; + // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. +} + +- (void) trace:(NSString*)msg +{ + if (traceCount >= SKIP_LINES_COUNT && [msg length] > MAX_LINE_LEN) + { + msg = [NSString stringWithFormat:@"%@ ...", [msg substringToIndex:MAX_LINE_LEN - 4]]; + } + traceCount++; + NSFont *font = [NSFont fontWithName:@"Monaco" size:12.0]; + NSDictionary *attrsDictionary = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName]; + NSAttributedString *string = [[NSAttributedString alloc] initWithString:msg attributes:attrsDictionary]; + NSNumber *len = [NSNumber numberWithUnsignedInteger:[string length]]; + [linesCount addObject:len]; + + NSTextStorage *storage = [textView textStorage]; + [storage beginEditing]; + [storage appendAttributedString:string]; + + if ([linesCount count] >= MAX_LINES_COUNT) + { + len = [linesCount objectAtIndex:0]; + [storage deleteCharactersInRange:NSMakeRange(0, [len unsignedIntegerValue])]; + [linesCount removeObjectAtIndex:0]; + } + + [storage endEditing]; + [self changeScroll]; +} + +- (void) changeScroll +{ + BOOL scroll = [checkScroll state] == NSOnState; + if(scroll) + { + [self.textView scrollRangeToVisible: NSMakeRange(self.textView.string.length, 0)]; + } +} + +- (IBAction)onClear:(id)sender +{ + NSTextStorage *storage = [textView textStorage]; + [storage setAttributedString:[[[NSAttributedString alloc] initWithString:@""] autorelease]]; +} + +- (IBAction)onScrollChange:(id)sender +{ + [self changeScroll]; +} + +- (IBAction)onTopChange:(id)sender +{ + BOOL isTop = [topCheckBox state] == NSOnState; + if(isTop) + { + [self.window setLevel:NSFloatingWindowLevel]; + } + else + { + [self.window setLevel:NSNormalWindowLevel]; + } +} + +@end diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Icon.icns b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Icon.icns new file mode 100755 index 0000000000..2040fc6fe6 Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Icon.icns differ diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Info.plist b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Info.plist new file mode 100644 index 0000000000..b4d91ddeaa --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Info.plist @@ -0,0 +1,60 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDocumentTypes + + + CFBundleTypeName + Folder + CFBundleTypeOSTypes + + folder + + CFBundleTypeRole + Viewer + + + CFBundleTypeExtensions + + csd + csb + + CFBundleTypeName + Cocos Studio Project + CFBundleTypeRole + Viewer + + + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + Icon + CFBundleIdentifier + com.cocos.apps.simulator + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Cocos Simulator + CFBundlePackageType + APPL + CFBundleShortVersionString + 3.7 + CFBundleSignature + ???? + CFBundleVersion + 20150314 + LSApplicationCategoryType + public.app-category.utilities + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2015. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Prefix.pch b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Prefix.pch new file mode 100755 index 0000000000..46c36a7e99 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'Paralaxer' target in the 'Paralaxer' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/SimulatorApp.h b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/SimulatorApp.h new file mode 100755 index 0000000000..ce9cc7f82d --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/SimulatorApp.h @@ -0,0 +1,59 @@ +/**************************************************************************** + Copyright (c) 2010 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 +#import + +#import "ConsoleWindowController.h" +#include "ProjectConfig/ProjectConfig.h" +#include "ProjectConfig/SimulatorConfig.h" +#include "AppDelegate.h" + +@interface AppController : NSObject +{ + NSWindow *_window; + NSMenu *menu; + + AppDelegate *_app; + ProjectConfig _project; + int _debugLogFile; + std::string _entryPath; + + //log file + ConsoleWindowController *_consoleController; + NSFileHandle *_fileHandle; + + //console pipe + NSPipe *_pipe; + NSFileHandle *_pipeReadHandle; +} + +@property (nonatomic, assign) IBOutlet NSMenu* menu; + +-(BOOL)application:(NSApplication*)app openFile:(NSString*)path; +-(IBAction)onFileClose:(id)sender; +-(IBAction)onWindowAlwaysOnTop:(id)sender; + +@end diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/SimulatorApp.mm b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/SimulatorApp.mm new file mode 100755 index 0000000000..fac974fe4b --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/SimulatorApp.mm @@ -0,0 +1,684 @@ +/**************************************************************************** + Copyright (c) 2010 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 +#include +#include +#include +#include + +#import "SimulatorApp.h" +#include "AppDelegate.h" +#include "glfw3.h" +#include "glfw3native.h" +#include "runtime/Runtime.h" +#include "runtime/ConfigParser.h" + +#include "cocos2d.h" +#include "CodeIDESupport.h" + +#include "platform/mac/PlayerMac.h" +#include "AppEvent.h" +#include "AppLang.h" + + +#if (GLFW_VERSION_MAJOR >= 3) && (GLFW_VERSION_MINOR >= 1) +#define PLAYER_SUPPORT_DROP 1 +#else +#define PLAYER_SUPPORT_DROP 0 +#endif + +using namespace std; +using namespace cocos2d; + +static id SIMULATOR = nullptr; +@implementation AppController + +@synthesize menu; + +std::string getCurAppPath(void) +{ + return [[[NSBundle mainBundle] bundlePath] UTF8String]; +} + +std::string getCurAppName(void) +{ + string appName = [[[NSProcessInfo processInfo] processName] UTF8String]; + int found = appName.find(" "); + if (found!=std::string::npos) + appName = appName.substr(0,found); + + return appName; +} + +#if (PLAYER_SUPPORT_DROP > 0) +static void glfwDropFunc(GLFWwindow *window, int count, const char **files) +{ + AppEvent forwardEvent(kAppEventDropName, APP_EVENT_DROP); + std::string firstFile(files[0]); + forwardEvent.setDataString(firstFile); + + Director::getInstance()->getEventDispatcher()->dispatchEvent(&forwardEvent); +} +#endif + +-(void) dealloc +{ + Director::getInstance()->end(); + player::PlayerProtocol::getInstance()->purgeInstance(); + [super dealloc]; +} + +#pragma mark - +#pragma delegates + +-(BOOL)application:(NSApplication*)app openFile:(NSString*)path +{ + NSFileManager *fm = [NSFileManager defaultManager]; + BOOL isDirectory = NO; + if (![fm fileExistsAtPath:path isDirectory:&isDirectory]) + { + return NO; + } + + if (isDirectory) + { + // check src folder + if ([fm fileExistsAtPath:[path stringByAppendingString:@"/src/main.lua"]]) + { + _project.setProjectDir([path cStringUsingEncoding:NSUTF8StringEncoding]); + _entryPath = "$(PROJDIR)/src/main.lua"; + } + else if ([fm fileExistsAtPath:[path stringByAppendingString:@"/src/main.js"]]) + { + _project.setProjectDir([path cStringUsingEncoding:NSUTF8StringEncoding]); + _entryPath = "$(PROJDIR)/src/main.js"; + } + } + else + { + _entryPath = [path cStringUsingEncoding:NSUTF8StringEncoding]; + } + + return YES; +} + +-(void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + SIMULATOR = self; + player::PlayerMac::create(); + + _debugLogFile = 0; + + [self parseCocosProjectConfig:&_project]; + [self updateProjectFromCommandLineArgs:&_project]; + + if (_entryPath.length()) + { + _project.setScriptFile(_entryPath); + } + + [self createWindowAndGLView]; + [self startup]; +} + +#pragma mark - +#pragma mark functions + +- (BOOL) windowShouldClose:(id)sender +{ + return YES; +} + +- (void) windowWillClose:(NSNotification *)notification +{ + [[NSRunningApplication currentApplication] terminate]; +} + +- (BOOL) applicationShouldTerminateAfterLastWindowClosed:(NSApplication*)theApplication +{ + return YES; +} + +- (NSMutableArray*) makeCommandLineArgsFromProjectConfig +{ + return [self makeCommandLineArgsFromProjectConfig:kProjectConfigAll]; +} + +- (NSMutableArray*) makeCommandLineArgsFromProjectConfig:(unsigned int)mask +{ + _project.setWindowOffset(Vec2(_window.frame.origin.x, _window.frame.origin.y)); + vector args = _project.makeCommandLineVector(); + NSMutableArray *commandArray = [NSMutableArray arrayWithCapacity:args.size()]; + for (auto &path : args) + { + [commandArray addObject:[NSString stringWithUTF8String:path.c_str()]]; + } + return commandArray; +} + +- (void) parseCocosProjectConfig:(ProjectConfig*)config +{ + // get project directory + ProjectConfig tmpConfig; + NSArray *nsargs = [[NSProcessInfo processInfo] arguments]; + long n = [nsargs count]; + if (n >= 2) + { + vector args; + for (int i = 0; i < [nsargs count]; ++i) + { + string arg = [[nsargs objectAtIndex:i] cStringUsingEncoding:NSUTF8StringEncoding]; + if (arg.length()) args.push_back(arg); + } + + if (args.size() && args.at(1).at(0) == '/') + { + // FIXME: + // for Code IDE before RC2 + tmpConfig.setProjectDir(args.at(1)); + } + + tmpConfig.parseCommandLine(args); + } + + // set project directory as search root path + FileUtils::getInstance()->setDefaultResourceRootPath(tmpConfig.getProjectDir()); + + // parse config.json + auto parser = ConfigParser::getInstance(); + auto configPath = tmpConfig.getProjectDir().append(CONFIG_FILE); + parser->readConfig(configPath); + + // set information + config->setConsolePort(parser->getConsolePort()); + config->setFileUploadPort(parser->getUploadPort()); + config->setFrameSize(parser->getInitViewSize()); + if (parser->isLanscape()) + { + config->changeFrameOrientationToLandscape(); + } + else + { + config->changeFrameOrientationToPortait(); + } + config->setScriptFile(parser->getEntryFile()); +} + +- (void) updateProjectFromCommandLineArgs:(ProjectConfig*)config +{ + NSArray *nsargs = [[NSProcessInfo processInfo] arguments]; + long n = [nsargs count]; + if (n >= 2) + { + vector args; + for (int i = 0; i < [nsargs count]; ++i) + { + string arg = [[nsargs objectAtIndex:i] cStringUsingEncoding:NSUTF8StringEncoding]; + if (arg.length()) args.push_back(arg); + } + + if (args.size() && args.at(1).at(0) == '/') + { + // for Code IDE before RC2 + config->setProjectDir(args.at(1)); + config->setDebuggerType(kCCRuntimeDebuggerCodeIDE); + } + config->parseCommandLine(args); + } +} + +- (bool) launch:(NSArray*)args +{ + NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]; + NSMutableDictionary *configuration = [NSMutableDictionary dictionaryWithObject:args forKey:NSWorkspaceLaunchConfigurationArguments]; + NSError *error = [[[NSError alloc] init] autorelease]; + [[NSWorkspace sharedWorkspace] launchApplicationAtURL:url + options:NSWorkspaceLaunchNewInstance + configuration:configuration + error:&error]; + + if (error.code != 0) + { + NSLog(@"Failed to launch app: %@", [error localizedDescription]); + } + return (error.code==0); +} + +- (void) relaunch:(NSArray*)args +{ + if ([self launch:args]) + { + [[NSApplication sharedApplication] terminate:self]; + } + else + { + NSLog(@"RELAUNCH: %@", args); + } +} + +- (void) relaunch +{ + [self relaunch:[self makeCommandLineArgsFromProjectConfig]]; +} + +- (float) titleBarHeight +{ + NSRect frame = NSMakeRect (0, 0, 100, 100); + + NSRect contentRect; + contentRect = [NSWindow contentRectForFrameRect: frame + styleMask: NSTitledWindowMask]; + + return (frame.size.height - contentRect.size.height); + +} + +- (void) createWindowAndGLView +{ + GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8}; + GLView::setGLContextAttrs(glContextAttrs); + + // create console window **MUST** before create opengl view +#if (CC_CODE_IDE_DEBUG_SUPPORT == 1) + if (_project.isShowConsole()) + { + [self openConsoleWindow]; + CCLOG("%s\n",Configuration::getInstance()->getInfo().c_str()); + } +#endif + float frameScale = _project.getFrameScale(); + + // get frame size + cocos2d::Size frameSize = _project.getFrameSize(); + ConfigParser::getInstance()->setInitViewSize(frameSize); + + // check screen workarea size + NSRect workarea = [NSScreen mainScreen].visibleFrame; + float workareaWidth = workarea.size.width; + float workareaHeight = workarea.size.height - [self titleBarHeight]; + CCLOG("WORKAREA WIDTH %0.2f, HEIGHT %0.2f", workareaWidth, workareaHeight); + while (true && frameScale > 0.25f) + { + if (frameSize.width * frameScale > workareaWidth || frameSize.height * frameScale > workareaHeight) + { + frameScale = frameScale - 0.25f; + } + else + { + break; + } + } + + if (frameScale < 0.25f) frameScale = 0.25f; + _project.setFrameScale(frameScale); + CCLOG("FRAME SCALE = %0.2f", frameScale); + + // check window offset + Vec2 pos = _project.getWindowOffset(); + if (pos.x < 0) pos.x = 0; + if (pos.y < 0) pos.y = 0; + + // create opengl view + const cocos2d::Rect frameRect = cocos2d::Rect(0, 0, frameSize.width, frameSize.height); + std::stringstream title; + title << "Cocos Simulator (" << _project.getFrameScale() * 100 << "%)"; + GLViewImpl *eglView = GLViewImpl::createWithRect(title.str(), frameRect, frameScale); + + auto director = Director::getInstance(); + director->setOpenGLView(eglView); + + _window = eglView->getCocoaWindow(); + [[NSApplication sharedApplication] setDelegate: self]; + [_window center]; + + [self setZoom:_project.getFrameScale()]; + if (pos.x != 0 && pos.y != 0) + { + [_window setFrameOrigin:NSMakePoint(pos.x, pos.y)]; + } + +#if (PLAYER_SUPPORT_DROP > 0) + glfwSetDropCallback(eglView->getWindow(), glfwDropFunc); +#endif +} + +- (void) adjustEditMenuIndex +{ + NSApplication *thisApp = [NSApplication sharedApplication]; + NSMenu *mainMenu = [thisApp mainMenu]; + + NSMenuItem *editMenuItem = [mainMenu itemWithTitle:@"Edit"]; + if (editMenuItem) + { + NSUInteger index = 2; + if (index > [mainMenu itemArray].count) + index = [mainMenu itemArray].count; + [[editMenuItem menu] removeItem:editMenuItem]; + [mainMenu insertItem:editMenuItem atIndex:index]; + } +} +- (void) startup +{ + FileUtils::getInstance()->setPopupNotify(false); + + _project.dump(); + + const string projectDir = _project.getProjectDir(); + if (projectDir.length()) + { + FileUtils::getInstance()->setDefaultResourceRootPath(projectDir); + if (_project.isWriteDebugLogToFile()) + { + [self writeDebugLogToFile:_project.getDebugLogFilePath()]; + } + } + + const string writablePath = _project.getWritableRealPath(); + if (writablePath.length()) + { + FileUtils::getInstance()->setWritablePath(writablePath.c_str()); + } + + // path for looking Lang file, Studio Default images + NSString *resourcePath = [[NSBundle mainBundle] resourcePath]; + FileUtils::getInstance()->addSearchPath(resourcePath.UTF8String); + + // app + _app = new AppDelegate(); + + [self setupUI]; + [self adjustEditMenuIndex]; + + RuntimeEngine::getInstance()->setProjectConfig(_project); + Application::getInstance()->run(); + // After run, application needs to be terminated immediately. + [NSApp terminate: self]; +} + +- (void) setupUI +{ + auto menuBar = player::PlayerProtocol::getInstance()->getMenuService(); + + // VIEW + menuBar->addItem("VIEW_MENU", tr("View")); + SimulatorConfig *config = SimulatorConfig::getInstance(); + int current = config->checkScreenSize(_project.getFrameSize()); + for (int i = 0; i < config->getScreenSizeCount(); i++) + { + SimulatorScreenSize size = config->getScreenSize(i); + std::stringstream menuId; + menuId << "VIEWSIZE_ITEM_MENU_" << i; + auto menuItem = menuBar->addItem(menuId.str(), size.title.c_str(), "VIEW_MENU"); + + if (i == current) + { + menuItem->setChecked(true); + } + } + + menuBar->addItem("DIRECTION_MENU_SEP", "-", "VIEW_MENU"); + menuBar->addItem("DIRECTION_PORTRAIT_MENU", tr("Portrait"), "VIEW_MENU") + ->setChecked(_project.isPortraitFrame()); + menuBar->addItem("DIRECTION_LANDSCAPE_MENU", tr("Landscape"), "VIEW_MENU") + ->setChecked(_project.isLandscapeFrame()); + + menuBar->addItem("VIEW_SCALE_MENU_SEP", "-", "VIEW_MENU"); + + std::vector scaleMenuVector; + auto scale100Menu = menuBar->addItem("VIEW_SCALE_MENU_100", tr("Zoom Out").append(" (100%)"), "VIEW_MENU"); + scale100Menu->setShortcut("super+0"); + + auto scale75Menu = menuBar->addItem("VIEW_SCALE_MENU_75", tr("Zoom Out").append(" (75%)"), "VIEW_MENU"); + scale75Menu->setShortcut("super+7"); + + auto scale50Menu = menuBar->addItem("VIEW_SCALE_MENU_50", tr("Zoom Out").append(" (50%)"), "VIEW_MENU"); + scale50Menu->setShortcut("super+6"); + + auto scale25Menu = menuBar->addItem("VIEW_SCALE_MENU_25", tr("Zoom Out").append(" (25%)"), "VIEW_MENU"); + scale25Menu->setShortcut("super+5"); + + int frameScale = int(_project.getFrameScale() * 100); + if (frameScale == 100) + { + scale100Menu->setChecked(true); + } + else if (frameScale == 75) + { + scale75Menu->setChecked(true); + } + else if (frameScale == 50) + { + scale50Menu->setChecked(true); + } + else if (frameScale == 25) + { + scale25Menu->setChecked(true); + } + else + { + scale100Menu->setChecked(true); + } + + scaleMenuVector.push_back(scale100Menu); + scaleMenuVector.push_back(scale75Menu); + scaleMenuVector.push_back(scale50Menu); + scaleMenuVector.push_back(scale25Menu); + + menuBar->addItem("REFRESH_MENU_SEP", "-", "VIEW_MENU"); + menuBar->addItem("REFRESH_MENU", tr("Refresh"), "VIEW_MENU")->setShortcut("super+r"); + + ProjectConfig &project = _project; + auto dispatcher = Director::getInstance()->getEventDispatcher(); + auto window = _window; + dispatcher->addEventListenerWithFixedPriority(EventListenerCustom::create(kAppEventName, [&project, scaleMenuVector, window](EventCustom* event){ + auto menuEvent = dynamic_cast(event); + if (menuEvent) + { + rapidjson::Document dArgParse; + dArgParse.Parse<0>(menuEvent->getDataString().c_str()); + if (dArgParse.HasMember("name")) + { + string strcmd = dArgParse["name"].GetString(); + + if (strcmd == "menuClicked") + { + player::PlayerMenuItem *menuItem = static_cast(menuEvent->getUserData()); + if (menuItem) + { + if (menuItem->isChecked()) + { + return ; + } + + string data = dArgParse["data"].GetString(); + if ((data == "CLOSE_MENU") || (data == "EXIT_MENU")) + { + Director::getInstance()->end(); + } + else if (data == "REFRESH_MENU") + { + [SIMULATOR relaunch]; + } + else if (data.find("VIEW_SCALE_MENU_") == 0) // begin with VIEW_SCALE_MENU_ + { + string tmp = data.erase(0, strlen("VIEW_SCALE_MENU_")); + float scale = atof(tmp.c_str()) / 100.0f; + [SIMULATOR setZoom:scale]; + + // update scale menu state + for (auto &it : scaleMenuVector) + { + it->setChecked(false); + } + menuItem->setChecked(true); + } + else if (data.find("VIEWSIZE_ITEM_MENU_") == 0) // begin with VIEWSIZE_ITEM_MENU_ + { + string tmp = data.erase(0, strlen("VIEWSIZE_ITEM_MENU_")); + int index = atoi(tmp.c_str()); + SimulatorScreenSize size = SimulatorConfig::getInstance()->getScreenSize(index); + + if (project.isLandscapeFrame()) + { + std::swap(size.width, size.height); + } + + project.setFrameSize(cocos2d::Size(size.width, size.height)); + [SIMULATOR relaunch]; + } + else if (data == "DIRECTION_PORTRAIT_MENU") + { + project.changeFrameOrientationToPortait(); + [SIMULATOR relaunch]; + } + else if (data == "DIRECTION_LANDSCAPE_MENU") + { + project.changeFrameOrientationToLandscape(); + [SIMULATOR relaunch]; + } + } + } + } + } + }), 1); + + // drop + AppDelegate *app = _app; + auto listener = EventListenerCustom::create(kAppEventDropName, [&project, app](EventCustom* event) + { + AppEvent *dropEvent = dynamic_cast(event); + if (dropEvent) + { + string dirPath = dropEvent->getDataString() + "/"; + string configFilePath = dirPath + CONFIG_FILE; + + if (FileUtils::getInstance()->isDirectoryExist(dirPath) && + FileUtils::getInstance()->isFileExist(configFilePath)) + { + // parse config.json + ConfigParser::getInstance()->readConfig(configFilePath); + + project.setProjectDir(dirPath); + project.setScriptFile(ConfigParser::getInstance()->getEntryFile()); + project.setWritablePath(dirPath); + + RuntimeEngine::getInstance()->setProjectConfig(project); +// app->setProjectConfig(project); +// app->reopenProject(); + } + } + }); + dispatcher->addEventListenerWithFixedPriority(listener, 1); +} + +- (void) openConsoleWindow +{ + if (!_consoleController) + { + _consoleController = [[ConsoleWindowController alloc] initWithWindowNibName:@"ConsoleWindow"]; + } + [_consoleController.window orderFrontRegardless]; + + //set console pipe + _pipe = [NSPipe pipe] ; + _pipeReadHandle = [_pipe fileHandleForReading] ; + + int outfd = [[_pipe fileHandleForWriting] fileDescriptor]; + if (dup2(outfd, fileno(stderr)) != fileno(stderr) || dup2(outfd, fileno(stdout)) != fileno(stdout)) + { + perror("Unable to redirect output"); + // [self showAlert:@"Unable to redirect output to console!" withTitle:@"player error"]; + } + else + { + [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(handleNotification:) name: NSFileHandleReadCompletionNotification object: _pipeReadHandle] ; + [_pipeReadHandle readInBackgroundAndNotify] ; + } +} + +- (bool) writeDebugLogToFile:(const string)path +{ + if (_debugLogFile) return true; + //log to file + if(_fileHandle) return true; + NSString *fPath = [NSString stringWithCString:path.c_str() encoding:[NSString defaultCStringEncoding]]; + [[NSFileManager defaultManager] createFileAtPath:fPath contents:nil attributes:nil] ; + _fileHandle = [NSFileHandle fileHandleForWritingAtPath:fPath]; + [_fileHandle retain]; + return true; +} + +- (void)handleNotification:(NSNotification *)note +{ + //NSLog(@"Received notification: %@", note); + [_pipeReadHandle readInBackgroundAndNotify] ; + NSData *data = [[note userInfo] objectForKey:NSFileHandleNotificationDataItem]; + NSString *str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; + + //show log to console + [_consoleController trace:str]; + if(_fileHandle!=nil){ + [_fileHandle writeData:[str dataUsingEncoding:NSUTF8StringEncoding]]; + } +} + +- (void) setZoom:(float)scale +{ + Director::getInstance()->getOpenGLView()->setFrameZoomFactor(scale); + _project.setFrameScale(scale); + std::stringstream title; + title << "Cocos " << tr("Simulator") << " (" << _project.getFrameScale() * 100 << "%)"; + [_window setTitle:[NSString stringWithUTF8String:title.str().c_str()]]; +} + +- (BOOL) applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag +{ + return NO; +} + +#pragma mark - + +-(IBAction)onFileClose:(id)sender +{ + [[NSApplication sharedApplication] terminate:self]; +} + +-(IBAction)onWindowAlwaysOnTop:(id)sender +{ + NSInteger state = [sender state]; + + if (state == NSOffState) + { + [_window setLevel:NSFloatingWindowLevel]; + [sender setState:NSOnState]; + } + else + { + [_window setLevel:NSNormalWindowLevel]; + [sender setState:NSOffState]; + } +} + +@end diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/build-cfg.json b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/build-cfg.json new file mode 100755 index 0000000000..7a138cb477 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/build-cfg.json @@ -0,0 +1,7 @@ +{ + "remove_res" : [ + "src", + "res", + "config.json" + ] +} diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/en.lproj/MainMenu.xib b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/en.lproj/MainMenu.xib new file mode 100755 index 0000000000..a803574695 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/en.lproj/MainMenu.xib @@ -0,0 +1,887 @@ + + + + 1060 + 13D65 + 5056 + 1265.20 + 698.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 5056 + + + NSCustomObject + NSMenu + NSMenuItem + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + AppController + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + Cocos-player + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + + Cocos-player + + + + About Cocos-player + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + + Services + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide Cocos-player + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit Cocos-player + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + + File + + + + Close + w + 1048576 + 2147483647 + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + + View + + + + YES + YES + + + 2147483647 + + + + + + Portait + + 2147483647 + 1 + + + + + + Landscape + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Actual (100%) + 0 + 1048576 + 2147483647 + 1 + + + 100 + + + + Zoom Out (75%) + 6 + 1048576 + 2147483647 + + + 75 + + + + Zoom Out (50%) + 5 + 1048576 + 2147483647 + + + 50 + + + + Zoom Out (25%) + 4 + 1048576 + 2147483647 + + + 25 + + + + + + + Control + + 2147483647 + + + submenuAction: + + + Control + + + + Relaunch + r + 1048576 + 2147483647 + + + + + + Keep Window Top + + 2147483647 + + + + + + + + + Help + + 2147483647 + + + submenuAction: + + + Help + + _NSHelpMenu + + + + _NSMainMenu + + + NSFontManager + + + AppController + + + + NO + + + + hide: + + + + SGN-0p-7lH + + + + hideOtherApplications: + + + + iJd-Ba-eXG + + + + unhideAllApplications: + + + + DR8-By-ymv + + + + terminate: + + + + DyL-yF-GYq + + + + delegate + + + + 537 + + + + menu + + + + 650 + + + + orderFrontStandardAboutPanel: + + + + tSA-7z-LPk + + + + onFileClose: + + + + 661 + + + + onScreenPortait: + + + + 667 + + + + onScreenLandscape: + + + + 647 + + + + onScreenZoomOut: + + + + yUj-fN-Rh7 + + + + onScreenZoomOut: + + + + yps-LZ-egB + + + + onScreenZoomOut: + + + + 654 + + + + onScreenZoomOut: + + + + DSu-if-D2T + + + + onRelaunch: + + + + XXg-eJ-YSn + + + + onSetTop: + + + + jvv-x1-KeN + + + + menu + + + + 550 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + + + GS6-Lb-ftA + + + + + + + + YN2-V8-ty0 + + + + + + + + + + + + + + + + HhF-Es-coQ + + + + + OzD-Nm-tPt + + + + + TOj-vg-cDm + + + + + + + + e98-We-UX5 + + + + + muN-Hw-eeZ + + + + + sH6-na-PTL + + + + + XG8-CE-veT + + + + + IqD-3v-zQT + + + + + GU5-eI-OTq + + + + + 7Z7-ot-jqY + + + + + 83 + + + + + + + + 81 + + + + + + + + 611 + + + + + 295 + + + + + + Menu Item - View + + + 296 + + + + + + + + + + + + + Menu - View + + + 579 + + + + + 592 + + + + + 593 + + + + + 594 + + + + + 595 + + + + + pqR-xy-5ip + + + + + 596 + + + + + QB8-6D-hAr + + + + + Heh-SD-KHE + + + + + + + + ysx-9J-ekz + + + + + + + + + hfu-OP-8X3 + + + + + 490 + + + + + + + + 491 + + + + + 420 + + + + + 536 + + + + + CXy-V7-NaY + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + + + + + AppController + NSObject + + id + id + id + id + id + id + id + + + + onFileClose: + id + + + onRelaunch: + id + + + onScreenLandscape: + id + + + onScreenPortait: + id + + + onScreenZoomOut: + id + + + onSetTop: + id + + + onViewChangeFrameSize: + id + + + + menu + NSMenu + + + menu + + menu + NSMenu + + + + IBProjectSource + ./Classes/AppController.h + + + + + 0 + IBCocoaFramework + YES + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + {11, 11} + {10, 3} + + + diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/main.m b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/main.m new file mode 100755 index 0000000000..658f0c14ee --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/main.m @@ -0,0 +1,7 @@ + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +} diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/zh-Hans.lproj/ConsoleWindow.strings b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/zh-Hans.lproj/ConsoleWindow.strings new file mode 100644 index 0000000000..f9518fdfd4 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/zh-Hans.lproj/ConsoleWindow.strings @@ -0,0 +1,12 @@ + +/* Class = "NSWindow"; title = "Console"; ObjectID = "1"; */ +"1.title" = "控制å°"; + +/* Class = "NSButtonCell"; title = "Clear"; ObjectID = "47"; */ +"47.title" = "清除"; + +/* Class = "NSButtonCell"; title = "scroll bottom"; ObjectID = "51"; */ +"51.title" = "自动滚动"; + +/* Class = "NSButtonCell"; title = "always top"; ObjectID = "61"; */ +"61.title" = "总在最å‰æ–¹"; diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/zh-Hans.lproj/MainMenu.xib b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/zh-Hans.lproj/MainMenu.xib new file mode 100755 index 0000000000..b610cf20e9 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/mac/zh-Hans.lproj/MainMenu.xib @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/simulator/frameworks/runtime-src/proj.ios_mac/simulator.xcodeproj/project.pbxproj b/tools/simulator/frameworks/runtime-src/proj.ios_mac/simulator.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..c5a2e406ed --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.ios_mac/simulator.xcodeproj/project.pbxproj @@ -0,0 +1,1039 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 15427CD3198F221400DC375D /* libcocos2d iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A8A4251834BDA200142BE0 /* libcocos2d iOS.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 */; }; + 1AF4C403178663F200122817 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AF4C402178663F200122817 /* libz.dylib */; }; + 3EEEDB61197107C0006A9FF8 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EEEDB60197107C0006A9FF8 /* MediaPlayer.framework */; }; + 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 */; }; + 5023811A17EBBCAC00990C9B /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023810A17EBBCAC00990C9B /* Default.png */; }; + 5023811B17EBBCAC00990C9B /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023810B17EBBCAC00990C9B /* Default@2x.png */; }; + 5023811D17EBBCAC00990C9B /* Icon-120.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023810D17EBBCAC00990C9B /* Icon-120.png */; }; + 5023811E17EBBCAC00990C9B /* Icon-144.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023810E17EBBCAC00990C9B /* Icon-144.png */; }; + 5023811F17EBBCAC00990C9B /* Icon-152.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023810F17EBBCAC00990C9B /* Icon-152.png */; }; + 5023812017EBBCAC00990C9B /* Icon-57.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023811017EBBCAC00990C9B /* Icon-57.png */; }; + 5023812117EBBCAC00990C9B /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023811117EBBCAC00990C9B /* Icon-72.png */; }; + 5023812217EBBCAC00990C9B /* Icon-76.png in Resources */ = {isa = PBXBuildFile; fileRef = 5023811217EBBCAC00990C9B /* Icon-76.png */; }; + 5023812417EBBCAC00990C9B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5023811417EBBCAC00990C9B /* main.m */; }; + 5023812517EBBCAC00990C9B /* RootViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5023811717EBBCAC00990C9B /* RootViewController.mm */; }; + 5023813317EBBCE400990C9B /* AppDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F293BB7E15EB831F00256477 /* AppDelegate.cpp */; }; + 5023813717EBBCE400990C9B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AF4C402178663F200122817 /* libz.dylib */; }; + 5023813E17EBBCE400990C9B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3CC15EB7BE500256477 /* QuartzCore.framework */; }; + 5023814017EBBCE400990C9B /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3D015EB7BE500256477 /* OpenAL.framework */; }; + 5023814117EBBCE400990C9B /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3D215EB7BE500256477 /* AudioToolbox.framework */; }; + 5023814417EBBCE400990C9B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3D815EB7BE500256477 /* Foundation.framework */; }; + 5023814517EBBCE400990C9B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3DA15EB7BE500256477 /* CoreGraphics.framework */; }; + 5023817617EBBE3400990C9B /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5023817217EBBE3400990C9B /* Icon.icns */; }; + 5023817A17EBBE8300990C9B /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5023817917EBBE8300990C9B /* OpenGLES.framework */; }; + 50805AAF17EBBEAA004CFAD3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50805AAE17EBBEAA004CFAD3 /* UIKit.framework */; }; + 5091733617ECE17A00D62437 /* Icon-29.png in Resources */ = {isa = PBXBuildFile; fileRef = 5091733017ECE17A00D62437 /* Icon-29.png */; }; + 5091733717ECE17A00D62437 /* Icon-40.png in Resources */ = {isa = PBXBuildFile; fileRef = 5091733117ECE17A00D62437 /* Icon-40.png */; }; + 5091733817ECE17A00D62437 /* Icon-50.png in Resources */ = {isa = PBXBuildFile; fileRef = 5091733217ECE17A00D62437 /* Icon-50.png */; }; + 5091733917ECE17A00D62437 /* Icon-58.png in Resources */ = {isa = PBXBuildFile; fileRef = 5091733317ECE17A00D62437 /* Icon-58.png */; }; + 5091733A17ECE17A00D62437 /* Icon-80.png in Resources */ = {isa = PBXBuildFile; fileRef = 5091733417ECE17A00D62437 /* Icon-80.png */; }; + 5091733B17ECE17A00D62437 /* Icon-100.png in Resources */ = {isa = PBXBuildFile; fileRef = 5091733517ECE17A00D62437 /* Icon-100.png */; }; + 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 */; }; + 5200BECA1A53D9A500AC45E4 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5200BEC91A53D9A500AC45E4 /* Security.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 */; }; + 87A2EC1E1AB34BEE00513747 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 87A2EC1D1AB34BEE00513747 /* Security.framework */; }; + 9F7214271A5C1E4C00DAED06 /* libluacocos2d Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F7213E01A5C19ED00DAED06 /* libluacocos2d Mac.a */; }; + 9F7214281A5C1E5B00DAED06 /* libluacocos2d iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F7213E21A5C19ED00DAED06 /* libluacocos2d iOS.a */; }; + 9FB5D5F91A691342002361CA /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 9FB5D5F81A691342002361CA /* libsqlite3.dylib */; }; + 9FB5D6081A691774002361CA /* libjscocos2d iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9FB5D5D61A68FA00002361CA /* libjscocos2d iOS.a */; }; + 9FB5D60A1A6917D8002361CA /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 9FB5D6091A6917D8002361CA /* libsqlite3.dylib */; }; + 9FB5D60E1A691A02002361CA /* libjscocos2d Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9FB5D5D41A68FA00002361CA /* libjscocos2d Mac.a */; }; + 9FB6C05F1A69815100945236 /* lang in Resources */ = {isa = PBXBuildFile; fileRef = 9FB6C0571A69815100945236 /* lang */; }; + 9FB6C0601A69815100945236 /* lua_debugger.c in Sources */ = {isa = PBXBuildFile; fileRef = 9FB6C0581A69815100945236 /* lua_debugger.c */; }; + 9FB6C0611A69815100945236 /* lua_debugger.c in Sources */ = {isa = PBXBuildFile; fileRef = 9FB6C0581A69815100945236 /* lua_debugger.c */; }; + 9FB6C0621A69815100945236 /* RuntimeJsImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FB6C05A1A69815100945236 /* RuntimeJsImpl.cpp */; }; + 9FB6C0631A69815100945236 /* RuntimeJsImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FB6C05A1A69815100945236 /* RuntimeJsImpl.cpp */; }; + 9FB6C0641A69815100945236 /* RuntimeLuaImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FB6C05C1A69815100945236 /* RuntimeLuaImpl.cpp */; }; + 9FB6C0651A69815100945236 /* RuntimeLuaImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FB6C05C1A69815100945236 /* RuntimeLuaImpl.cpp */; }; + 9FD6FC0B1A5D27870028EDC6 /* libsimulator Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9FD6FC081A5D26580028EDC6 /* libsimulator Mac.a */; settings = {ATTRIBUTES = (Required, ); }; }; + 9FD6FC0C1A5D278E0028EDC6 /* libsimulator iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9FD6FC0A1A5D26580028EDC6 /* libsimulator iOS.a */; }; + 9FD6FC731A5D2A820028EDC6 /* ConsoleWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9FD6FC711A5D2A820028EDC6 /* ConsoleWindowController.m */; }; + 9FFC07361A4A764100AED399 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9FFC07341A4A764100AED399 /* MainMenu.xib */; }; + C05D1C121923449100B808A4 /* config.json in Resources */ = {isa = PBXBuildFile; fileRef = C05D1C111923449100B808A4 /* config.json */; }; + C05D1C131923449100B808A4 /* config.json in Resources */ = {isa = PBXBuildFile; fileRef = C05D1C111923449100B808A4 /* config.json */; }; + C07828F818B4D72E00BD2287 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C07828F418B4D72E00BD2287 /* main.m */; }; + C07828FA18B4D72E00BD2287 /* SimulatorApp.mm in Sources */ = {isa = PBXBuildFile; fileRef = C07828F718B4D72E00BD2287 /* SimulatorApp.mm */; }; + D6B061351803AC000077942B /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6B061341803AC000077942B /* CoreMotion.framework */; }; + DA96489E1A70F925001F41E8 /* ConsoleWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA9648A01A70F925001F41E8 /* ConsoleWindow.xib */; }; + F293B3CD15EB7BE500256477 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3CC15EB7BE500256477 /* QuartzCore.framework */; }; + F293B3D115EB7BE500256477 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3D015EB7BE500256477 /* OpenAL.framework */; }; + F293B3D315EB7BE500256477 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3D215EB7BE500256477 /* AudioToolbox.framework */; }; + F293B3D515EB7BE500256477 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F293B3D415EB7BE500256477 /* AVFoundation.framework */; }; + 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 */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 15A8A4161834BDA200142BE0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 15A8A4031834BDA200142BE0 /* cocos2d_libs.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1551A33F158F2AB200E66CFE; + remoteInfo = "cocos2dx Mac"; + }; + 15A8A4241834BDA200142BE0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 15A8A4031834BDA200142BE0 /* cocos2d_libs.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = A07A4D641783777C0073F6A7; + remoteInfo = "cocos2dx iOS"; + }; + 15D1F3081994BBCA00302043 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 15A8A4031834BDA200142BE0 /* cocos2d_libs.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = A07A4C241783777C0073F6A7; + remoteInfo = "libcocos2d iOS"; + }; + 9F7213DF1A5C19ED00DAED06 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C03781AE18BF654500FE4F13 /* cocos2d_lua_bindings.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 15C1C2CC198748D200A46ACC; + remoteInfo = "libluacocos2d Mac"; + }; + 9F7213E11A5C19ED00DAED06 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C03781AE18BF654500FE4F13 /* cocos2d_lua_bindings.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 15EFA616198B2DAA000C57D3; + remoteInfo = "libluacocos2d iOS"; + }; + 9F7214211A5C1D3A00DAED06 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C03781AE18BF654500FE4F13 /* cocos2d_lua_bindings.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 15C1C255198748D200A46ACC; + remoteInfo = "libluacocos2d Mac"; + }; + 9F7214251A5C1D4200DAED06 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C03781AE18BF654500FE4F13 /* cocos2d_lua_bindings.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 15EFA59E198B2DAA000C57D3; + remoteInfo = "libluacocos2d iOS"; + }; + 9F78A2531A89B7EA00EB22E3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9FB5D5CE1A68F9FF002361CA /* cocos2d_js_bindings.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = A07A4FB5178387750073F6A7; + remoteInfo = "libjscocos2d iOS"; + }; + 9FB5D5D31A68FA00002361CA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9FB5D5CE1A68F9FF002361CA /* cocos2d_js_bindings.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1A5410A418B785A10016A3AF; + remoteInfo = "libjscocos2d Mac"; + }; + 9FB5D5D51A68FA00002361CA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9FB5D5CE1A68F9FF002361CA /* cocos2d_js_bindings.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1A5410A518B785A10016A3AF; + remoteInfo = "libjscocos2d iOS"; + }; + 9FB5D5E81A69054A002361CA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9FB5D5CE1A68F9FF002361CA /* cocos2d_js_bindings.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = A03F31E81781479B006731B9; + remoteInfo = "libjscocos2d Mac"; + }; + 9FD6FC071A5D26580028EDC6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9FD6FC021A5D26580028EDC6 /* libsimulator.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9F7214351A5C271F00DAED06; + remoteInfo = libsimulator; + }; + 9FD6FC091A5D26580028EDC6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9FD6FC021A5D26580028EDC6 /* libsimulator.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9F7214851A5C28BA00DAED06; + remoteInfo = libsimulator_iOS; + }; + 9FF504CB1A5EB19500AFDA55 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9FD6FC021A5D26580028EDC6 /* libsimulator.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 9F7214841A5C28BA00DAED06; + remoteInfo = libsimulator_iOS; + }; + 9FF504CF1A5EB19900AFDA55 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9FD6FC021A5D26580028EDC6 /* libsimulator.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 9F7214341A5C271F00DAED06; + remoteInfo = libsimulator; + }; + C0A2F04018975FF80072A7AB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 15A8A4031834BDA200142BE0 /* cocos2d_libs.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1551A33E158F2AB200E66CFE; + remoteInfo = "cocos2dx Mac"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 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 = ../../../../../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; }; + 15C1568D1683131500D239F2 /* libcurl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcurl.a; path = ../../../../../cocos/third_party/ios/libraries/libcurl.a; 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; }; + 3EEEDB60197107C0006A9FF8 /* 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; }; + 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 = ""; }; + 5023810917EBBCAC00990C9B /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + 5023810A17EBBCAC00990C9B /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + 5023810B17EBBCAC00990C9B /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; + 5023810C17EBBCAC00990C9B /* Icon-114.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-114.png"; sourceTree = ""; }; + 5023810D17EBBCAC00990C9B /* Icon-120.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-120.png"; sourceTree = ""; }; + 5023810E17EBBCAC00990C9B /* Icon-144.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-144.png"; sourceTree = ""; }; + 5023810F17EBBCAC00990C9B /* Icon-152.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-152.png"; sourceTree = ""; }; + 5023811017EBBCAC00990C9B /* Icon-57.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-57.png"; sourceTree = ""; }; + 5023811117EBBCAC00990C9B /* Icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-72.png"; sourceTree = ""; }; + 5023811217EBBCAC00990C9B /* Icon-76.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-76.png"; sourceTree = ""; }; + 5023811317EBBCAC00990C9B /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5023811417EBBCAC00990C9B /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 5023811517EBBCAC00990C9B /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = ""; }; + 5023811617EBBCAC00990C9B /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; + 5023811717EBBCAC00990C9B /* RootViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RootViewController.mm; sourceTree = ""; }; + 5023816B17EBBCE400990C9B /* Simulator.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Simulator.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 5023817217EBBE3400990C9B /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = ""; }; + 5023817317EBBE3400990C9B /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5023817517EBBE3400990C9B /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = ""; }; + 5023817917EBBE8300990C9B /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; + 50805AAE17EBBEAA004CFAD3 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + 5091733017ECE17A00D62437 /* Icon-29.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-29.png"; sourceTree = ""; }; + 5091733117ECE17A00D62437 /* Icon-40.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-40.png"; sourceTree = ""; }; + 5091733217ECE17A00D62437 /* Icon-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-50.png"; sourceTree = ""; }; + 5091733317ECE17A00D62437 /* Icon-58.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-58.png"; sourceTree = ""; }; + 5091733417ECE17A00D62437 /* Icon-80.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-80.png"; sourceTree = ""; }; + 5091733517ECE17A00D62437 /* Icon-100.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon-100.png"; sourceTree = ""; }; + 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; }; + 5200BEC91A53D9A500AC45E4 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; + 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 = ""; }; + 87A2EC1D1AB34BEE00513747 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; + 9FB5D5CE1A68F9FF002361CA /* cocos2d_js_bindings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2d_js_bindings.xcodeproj; path = "../../../../../cocos/scripting/js-bindings/proj.ios_mac/cocos2d_js_bindings.xcodeproj"; sourceTree = ""; }; + 9FB5D5F81A691342002361CA /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; + 9FB5D5FA1A6915F6002361CA /* libjs_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjs_static.a; path = ../../../../../external/spidermonkey/prebuilt/mac/libjs_static.a; sourceTree = ""; }; + 9FB5D6091A6917D8002361CA /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/usr/lib/libsqlite3.dylib; sourceTree = DEVELOPER_DIR; }; + 9FB5D60C1A69184C002361CA /* libjs_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjs_static.a; path = ../../../../../external/spidermonkey/prebuilt/ios/libjs_static.a; sourceTree = ""; }; + 9FB5D7321A692CF0002361CA /* js_module_register.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = js_module_register.h; path = ../Classes/js_module_register.h; sourceTree = ""; }; + 9FB6C0561A69815100945236 /* CodeIDESupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeIDESupport.h; sourceTree = ""; }; + 9FB6C0571A69815100945236 /* lang */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = lang; sourceTree = ""; }; + 9FB6C0581A69815100945236 /* lua_debugger.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lua_debugger.c; sourceTree = ""; }; + 9FB6C0591A69815100945236 /* lua_debugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_debugger.h; sourceTree = ""; }; + 9FB6C05A1A69815100945236 /* RuntimeJsImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RuntimeJsImpl.cpp; sourceTree = ""; }; + 9FB6C05B1A69815100945236 /* RuntimeJsImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RuntimeJsImpl.h; sourceTree = ""; }; + 9FB6C05C1A69815100945236 /* RuntimeLuaImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RuntimeLuaImpl.cpp; sourceTree = ""; }; + 9FB6C05D1A69815100945236 /* RuntimeLuaImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RuntimeLuaImpl.h; sourceTree = ""; }; + 9FD6FC021A5D26580028EDC6 /* libsimulator.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = libsimulator.xcodeproj; path = ../../../libsimulator/proj.ios_mac/libsimulator.xcodeproj; sourceTree = ""; }; + 9FD6FC701A5D2A820028EDC6 /* ConsoleWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConsoleWindowController.h; sourceTree = ""; }; + 9FD6FC711A5D2A820028EDC6 /* ConsoleWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConsoleWindowController.m; sourceTree = ""; }; + 9FFC07351A4A764100AED399 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 9FFC07371A4A765100AED399 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "zh-Hans"; path = "zh-Hans.lproj/MainMenu.xib"; sourceTree = ""; }; + C03781AE18BF654500FE4F13 /* cocos2d_lua_bindings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2d_lua_bindings.xcodeproj; path = "../../../../../cocos/scripting/lua-bindings/proj.ios_mac/cocos2d_lua_bindings.xcodeproj"; sourceTree = ""; }; + C05D1C111923449100B808A4 /* config.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = config.json; path = ../../../config.json; sourceTree = ""; }; + C07828F418B4D72E00BD2287 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; 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; }; + DA96489F1A70F925001F41E8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ConsoleWindow.xib; sourceTree = ""; }; + DA9648A31A70F93D001F41E8 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/ConsoleWindow.strings"; sourceTree = ""; }; + F293B3C815EB7BE500256477 /* Simulator.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Simulator.app; sourceTree = BUILT_PRODUCTS_DIR; }; + F293B3CC15EB7BE500256477 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + F293B3CE15EB7BE500256477 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + F293B3D015EB7BE500256477 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; + F293B3D215EB7BE500256477 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + F293B3D415EB7BE500256477 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + F293B3D615EB7BE500256477 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + F293B3D815EB7BE500256477 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 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 = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5023813617EBBCE400990C9B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 87A2EC1E1AB34BEE00513747 /* Security.framework in Frameworks */, + 9FB5D60E1A691A02002361CA /* libjscocos2d Mac.a in Frameworks */, + 9FB5D5F91A691342002361CA /* libsqlite3.dylib in Frameworks */, + 9FD6FC0B1A5D27870028EDC6 /* libsimulator Mac.a in Frameworks */, + 9F7214271A5C1E4C00DAED06 /* libluacocos2d Mac.a in Frameworks */, + 15427CEE198F24AF00DC375D /* libcocos2d Mac.a in Frameworks */, + 15A8A4881834C90F00142BE0 /* libcurl.dylib in Frameworks */, + 50D7C97017EBBEEC005D0B91 /* IOKit.framework in Frameworks */, + 50D7C96E17EBBEE6005D0B91 /* AppKit.framework in Frameworks */, + 50D7C96C17EBBEDF005D0B91 /* OpenGL.framework in Frameworks */, + 5023813717EBBCE400990C9B /* libz.dylib in Frameworks */, + 5023813E17EBBCE400990C9B /* QuartzCore.framework in Frameworks */, + 5023814017EBBCE400990C9B /* OpenAL.framework in Frameworks */, + 5023814117EBBCE400990C9B /* AudioToolbox.framework in Frameworks */, + 5023814417EBBCE400990C9B /* Foundation.framework in Frameworks */, + 5023814517EBBCE400990C9B /* CoreGraphics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F293B3C515EB7BE500256477 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9FB5D60A1A6917D8002361CA /* libsqlite3.dylib in Frameworks */, + 9FB5D6081A691774002361CA /* libjscocos2d iOS.a in Frameworks */, + 9FD6FC0C1A5D278E0028EDC6 /* libsimulator iOS.a in Frameworks */, + 9F7214281A5C1E5B00DAED06 /* libluacocos2d iOS.a in Frameworks */, + 5200BECA1A53D9A500AC45E4 /* Security.framework in Frameworks */, + 15427CD3198F221400DC375D /* libcocos2d iOS.a in Frameworks */, + 3EEEDB61197107C0006A9FF8 /* MediaPlayer.framework in Frameworks */, + D6B061351803AC000077942B /* CoreMotion.framework in Frameworks */, + 1AF4C403178663F200122817 /* libz.dylib in Frameworks */, + 50805AAF17EBBEAA004CFAD3 /* UIKit.framework in Frameworks */, + 5023817A17EBBE8300990C9B /* OpenGLES.framework in Frameworks */, + F293B3CD15EB7BE500256477 /* QuartzCore.framework in Frameworks */, + F293B3D115EB7BE500256477 /* OpenAL.framework in Frameworks */, + F293B3D315EB7BE500256477 /* AudioToolbox.framework in Frameworks */, + F293B3D515EB7BE500256477 /* AVFoundation.framework in Frameworks */, + F293B3D915EB7BE500256477 /* Foundation.framework in Frameworks */, + F293B3DB15EB7BE500256477 /* CoreGraphics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 15A8A4041834BDA200142BE0 /* Products */ = { + isa = PBXGroup; + children = ( + 15A8A4171834BDA200142BE0 /* libcocos2d Mac.a */, + 15A8A4251834BDA200142BE0 /* libcocos2d iOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 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 */, + 5023810A17EBBCAC00990C9B /* Default.png */, + 5023810B17EBBCAC00990C9B /* Default@2x.png */, + 5091734A17ECE18300D62437 /* Icons */, + 5023811317EBBCAC00990C9B /* Info.plist */, + 5023811417EBBCAC00990C9B /* main.m */, + 5023811517EBBCAC00990C9B /* Prefix.pch */, + 5023811617EBBCAC00990C9B /* RootViewController.h */, + 5023811717EBBCAC00990C9B /* RootViewController.mm */, + ); + path = ios; + sourceTree = ""; + }; + 5023817117EBBE3400990C9B /* mac */ = { + isa = PBXGroup; + children = ( + DA9648A01A70F925001F41E8 /* ConsoleWindow.xib */, + 9FD6FC701A5D2A820028EDC6 /* ConsoleWindowController.h */, + 9FD6FC711A5D2A820028EDC6 /* ConsoleWindowController.m */, + 5023817217EBBE3400990C9B /* Icon.icns */, + 9FFC07341A4A764100AED399 /* MainMenu.xib */, + C07828F418B4D72E00BD2287 /* main.m */, + C07828F618B4D72E00BD2287 /* SimulatorApp.h */, + C07828F718B4D72E00BD2287 /* SimulatorApp.mm */, + 5023817317EBBE3400990C9B /* Info.plist */, + 5023817517EBBE3400990C9B /* Prefix.pch */, + ); + path = mac; + sourceTree = ""; + }; + 5091734A17ECE18300D62437 /* Icons */ = { + isa = PBXGroup; + children = ( + 5091733017ECE17A00D62437 /* Icon-29.png */, + 5091733117ECE17A00D62437 /* Icon-40.png */, + 5091733217ECE17A00D62437 /* Icon-50.png */, + 5091733317ECE17A00D62437 /* Icon-58.png */, + 5091733417ECE17A00D62437 /* Icon-80.png */, + 5091733517ECE17A00D62437 /* Icon-100.png */, + 5023810C17EBBCAC00990C9B /* Icon-114.png */, + 5023810D17EBBCAC00990C9B /* Icon-120.png */, + 5023810E17EBBCAC00990C9B /* Icon-144.png */, + 5023810F17EBBCAC00990C9B /* Icon-152.png */, + 5023811017EBBCAC00990C9B /* Icon-57.png */, + 5023811117EBBCAC00990C9B /* Icon-72.png */, + 5023811217EBBCAC00990C9B /* Icon-76.png */, + ); + name = Icons; + sourceTree = ""; + }; + 9F7213DB1A5C19EC00DAED06 /* Products */ = { + isa = PBXGroup; + children = ( + 9F7213E01A5C19ED00DAED06 /* libluacocos2d Mac.a */, + 9F7213E21A5C19ED00DAED06 /* libluacocos2d iOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 9FB5D5CF1A68F9FF002361CA /* Products */ = { + isa = PBXGroup; + children = ( + 9FB5D5D41A68FA00002361CA /* libjscocos2d Mac.a */, + 9FB5D5D61A68FA00002361CA /* libjscocos2d iOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 9FB6C0551A69815100945236 /* ide-support */ = { + isa = PBXGroup; + children = ( + 9FB6C0561A69815100945236 /* CodeIDESupport.h */, + 9FB6C0571A69815100945236 /* lang */, + 9FB6C0581A69815100945236 /* lua_debugger.c */, + 9FB6C0591A69815100945236 /* lua_debugger.h */, + 9FB6C05A1A69815100945236 /* RuntimeJsImpl.cpp */, + 9FB6C05B1A69815100945236 /* RuntimeJsImpl.h */, + 9FB6C05C1A69815100945236 /* RuntimeLuaImpl.cpp */, + 9FB6C05D1A69815100945236 /* RuntimeLuaImpl.h */, + ); + name = "ide-support"; + path = "../Classes/ide-support"; + sourceTree = ""; + }; + 9FD6FC031A5D26580028EDC6 /* Products */ = { + isa = PBXGroup; + children = ( + 9FD6FC081A5D26580028EDC6 /* libsimulator Mac.a */, + 9FD6FC0A1A5D26580028EDC6 /* libsimulator iOS.a */, + ); + name = Products; + sourceTree = ""; + }; + F293B3BD15EB7BE500256477 = { + isa = PBXGroup; + children = ( + 9FB5D5CE1A68F9FF002361CA /* cocos2d_js_bindings.xcodeproj */, + 9FD6FC021A5D26580028EDC6 /* libsimulator.xcodeproj */, + C03781AE18BF654500FE4F13 /* cocos2d_lua_bindings.xcodeproj */, + 15A8A4031834BDA200142BE0 /* cocos2d_libs.xcodeproj */, + 5023810617EBBCAC00990C9B /* ios */, + 5023817117EBBE3400990C9B /* mac */, + F293BB7C15EB830F00256477 /* Classes */, + F293B3CB15EB7BE500256477 /* Frameworks */, + F293B3C915EB7BE500256477 /* Products */, + F293BC4615EB859D00256477 /* Resources */, + ); + sourceTree = ""; + }; + F293B3C915EB7BE500256477 /* Products */ = { + isa = PBXGroup; + children = ( + F293B3C815EB7BE500256477 /* Simulator.app */, + 5023816B17EBBCE400990C9B /* Simulator.app */, + ); + name = Products; + sourceTree = ""; + }; + F293B3CB15EB7BE500256477 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 87A2EC1D1AB34BEE00513747 /* Security.framework */, + 9FB5D60C1A69184C002361CA /* libjs_static.a */, + 9FB5D6091A6917D8002361CA /* libsqlite3.dylib */, + 9FB5D5FA1A6915F6002361CA /* libjs_static.a */, + 9FB5D5F81A691342002361CA /* libsqlite3.dylib */, + 5200BEC91A53D9A500AC45E4 /* Security.framework */, + 3EEEDB60197107C0006A9FF8 /* MediaPlayer.framework */, + 3EB51526195187AF006966AA /* CFNetwork.framework */, + 15A8A4871834C90E00142BE0 /* libcurl.dylib */, + D6B061341803AC000077942B /* CoreMotion.framework */, + 50D7C96F17EBBEEC005D0B91 /* IOKit.framework */, + 50D7C96D17EBBEE6005D0B91 /* AppKit.framework */, + 50D7C96B17EBBEDF005D0B91 /* OpenGL.framework */, + 50805AAE17EBBEAA004CFAD3 /* UIKit.framework */, + 5023817917EBBE8300990C9B /* OpenGLES.framework */, + 1AF4C402178663F200122817 /* libz.dylib */, + 15C1568D1683131500D239F2 /* libcurl.a */, + F293B3CC15EB7BE500256477 /* QuartzCore.framework */, + F293B3CE15EB7BE500256477 /* OpenGLES.framework */, + F293B3D015EB7BE500256477 /* OpenAL.framework */, + F293B3D215EB7BE500256477 /* AudioToolbox.framework */, + F293B3D415EB7BE500256477 /* AVFoundation.framework */, + F293B3D615EB7BE500256477 /* UIKit.framework */, + F293B3D815EB7BE500256477 /* Foundation.framework */, + F293B3DA15EB7BE500256477 /* CoreGraphics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + F293BB7C15EB830F00256477 /* Classes */ = { + isa = PBXGroup; + children = ( + 9FB6C0551A69815100945236 /* ide-support */, + 15427CE2198F237300DC375D /* lua_module_register.h */, + 9FB5D7321A692CF0002361CA /* js_module_register.h */, + F293BB7E15EB831F00256477 /* AppDelegate.cpp */, + F293BB7F15EB831F00256477 /* AppDelegate.h */, + ); + name = Classes; + sourceTree = ""; + }; + F293BC4615EB859D00256477 /* Resources */ = { + isa = PBXGroup; + children = ( + C05D1C111923449100B808A4 /* config.json */, + ); + name = Resources; + path = ../Resources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5023812617EBBCE400990C9B /* Simulator Mac */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5023816817EBBCE400990C9B /* Build configuration list for PBXNativeTarget "Simulator Mac" */; + buildPhases = ( + 5023813117EBBCE400990C9B /* Sources */, + 5023813617EBBCE400990C9B /* Frameworks */, + 5023814617EBBCE400990C9B /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9FB5D5E91A69054A002361CA /* PBXTargetDependency */, + 9FF504D01A5EB19900AFDA55 /* PBXTargetDependency */, + 9F7214221A5C1D3A00DAED06 /* PBXTargetDependency */, + C0A2F04118975FF80072A7AB /* PBXTargetDependency */, + ); + name = "Simulator Mac"; + productName = simulator; + productReference = 5023816B17EBBCE400990C9B /* Simulator.app */; + productType = "com.apple.product-type.application"; + }; + F293B3C715EB7BE500256477 /* Simulator iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = F293B6C415EB7BEA00256477 /* Build configuration list for PBXNativeTarget "Simulator iOS" */; + buildPhases = ( + F293B3C415EB7BE500256477 /* Sources */, + F293B3C515EB7BE500256477 /* Frameworks */, + F293B3C615EB7BE500256477 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 9F78A2541A89B7EA00EB22E3 /* PBXTargetDependency */, + 9FF504CC1A5EB19500AFDA55 /* PBXTargetDependency */, + 9F7214261A5C1D4200DAED06 /* PBXTargetDependency */, + 15D1F3091994BBCA00302043 /* PBXTargetDependency */, + ); + name = "Simulator iOS"; + productName = simulator; + productReference = F293B3C815EB7BE500256477 /* Simulator.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + F293B3BF15EB7BE500256477 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0500; + TargetAttributes = { + F293B3C715EB7BE500256477 = { + DevelopmentTeam = MDDB52YB8L; + }; + }; + }; + buildConfigurationList = F293B3C215EB7BE500256477 /* Build configuration list for PBXProject "simulator" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + "zh-Hans", + ); + mainGroup = F293B3BD15EB7BE500256477; + productRefGroup = F293B3C915EB7BE500256477 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 9FB5D5CF1A68F9FF002361CA /* Products */; + ProjectRef = 9FB5D5CE1A68F9FF002361CA /* cocos2d_js_bindings.xcodeproj */; + }, + { + ProductGroup = 15A8A4041834BDA200142BE0 /* Products */; + ProjectRef = 15A8A4031834BDA200142BE0 /* cocos2d_libs.xcodeproj */; + }, + { + ProductGroup = 9F7213DB1A5C19EC00DAED06 /* Products */; + ProjectRef = C03781AE18BF654500FE4F13 /* cocos2d_lua_bindings.xcodeproj */; + }, + { + ProductGroup = 9FD6FC031A5D26580028EDC6 /* Products */; + ProjectRef = 9FD6FC021A5D26580028EDC6 /* libsimulator.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + F293B3C715EB7BE500256477 /* Simulator iOS */, + 5023812617EBBCE400990C9B /* Simulator Mac */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 15A8A4171834BDA200142BE0 /* libcocos2d Mac.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libcocos2d Mac.a"; + remoteRef = 15A8A4161834BDA200142BE0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 15A8A4251834BDA200142BE0 /* libcocos2d iOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libcocos2d iOS.a"; + remoteRef = 15A8A4241834BDA200142BE0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9F7213E01A5C19ED00DAED06 /* libluacocos2d Mac.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libluacocos2d Mac.a"; + remoteRef = 9F7213DF1A5C19ED00DAED06 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9F7213E21A5C19ED00DAED06 /* libluacocos2d iOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libluacocos2d iOS.a"; + remoteRef = 9F7213E11A5C19ED00DAED06 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9FB5D5D41A68FA00002361CA /* libjscocos2d Mac.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libjscocos2d Mac.a"; + remoteRef = 9FB5D5D31A68FA00002361CA /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9FB5D5D61A68FA00002361CA /* libjscocos2d iOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libjscocos2d iOS.a"; + remoteRef = 9FB5D5D51A68FA00002361CA /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9FD6FC081A5D26580028EDC6 /* libsimulator Mac.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libsimulator Mac.a"; + remoteRef = 9FD6FC071A5D26580028EDC6 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9FD6FC0A1A5D26580028EDC6 /* libsimulator iOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libsimulator iOS.a"; + remoteRef = 9FD6FC091A5D26580028EDC6 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 5023814617EBBCE400990C9B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9FB6C05F1A69815100945236 /* lang in Resources */, + DA96489E1A70F925001F41E8 /* ConsoleWindow.xib in Resources */, + 5023817617EBBE3400990C9B /* Icon.icns in Resources */, + 9FFC07361A4A764100AED399 /* MainMenu.xib in Resources */, + C05D1C131923449100B808A4 /* config.json in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F293B3C615EB7BE500256477 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 15A8A4491834C64F00142BE0 /* Icon-114.png in Resources */, + 5023811D17EBBCAC00990C9B /* Icon-120.png in Resources */, + 5091733B17ECE17A00D62437 /* Icon-100.png in Resources */, + 5023811B17EBBCAC00990C9B /* Default@2x.png in Resources */, + 5091733617ECE17A00D62437 /* Icon-29.png in Resources */, + 5023811917EBBCAC00990C9B /* Default-568h@2x.png in Resources */, + 5091733917ECE17A00D62437 /* Icon-58.png in Resources */, + 5023811F17EBBCAC00990C9B /* Icon-152.png in Resources */, + 5023812017EBBCAC00990C9B /* Icon-57.png in Resources */, + 521A8E7019F0C3D200D177D7 /* Default-667h@2x.png in Resources */, + 5023812217EBBCAC00990C9B /* Icon-76.png in Resources */, + 5091733A17ECE17A00D62437 /* Icon-80.png in Resources */, + 5091733717ECE17A00D62437 /* Icon-40.png in Resources */, + 5023811E17EBBCAC00990C9B /* Icon-144.png in Resources */, + 5023811A17EBBCAC00990C9B /* Default.png in Resources */, + 5091733817ECE17A00D62437 /* Icon-50.png in Resources */, + 5023812117EBBCAC00990C9B /* Icon-72.png in Resources */, + C05D1C121923449100B808A4 /* config.json in Resources */, + 521A8E7119F0C3D200D177D7 /* Default-736h@3x.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5023813117EBBCE400990C9B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C07828FA18B4D72E00BD2287 /* SimulatorApp.mm in Sources */, + 9FB6C0631A69815100945236 /* RuntimeJsImpl.cpp in Sources */, + 9FB6C0611A69815100945236 /* lua_debugger.c in Sources */, + 5023813317EBBCE400990C9B /* AppDelegate.cpp in Sources */, + 9FD6FC731A5D2A820028EDC6 /* ConsoleWindowController.m in Sources */, + 9FB6C0651A69815100945236 /* RuntimeLuaImpl.cpp in Sources */, + C07828F818B4D72E00BD2287 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F293B3C415EB7BE500256477 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5023812517EBBCAC00990C9B /* RootViewController.mm in Sources */, + 9FB6C0621A69815100945236 /* RuntimeJsImpl.cpp in Sources */, + 9FB6C0601A69815100945236 /* lua_debugger.c in Sources */, + F293BB9C15EB831F00256477 /* AppDelegate.cpp in Sources */, + 5023812417EBBCAC00990C9B /* main.m in Sources */, + 9FB6C0641A69815100945236 /* RuntimeLuaImpl.cpp in Sources */, + 5023811817EBBCAC00990C9B /* AppController.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 15D1F3091994BBCA00302043 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libcocos2d iOS"; + targetProxy = 15D1F3081994BBCA00302043 /* PBXContainerItemProxy */; + }; + 9F7214221A5C1D3A00DAED06 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libluacocos2d Mac"; + targetProxy = 9F7214211A5C1D3A00DAED06 /* PBXContainerItemProxy */; + }; + 9F7214261A5C1D4200DAED06 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libluacocos2d iOS"; + targetProxy = 9F7214251A5C1D4200DAED06 /* PBXContainerItemProxy */; + }; + 9F78A2541A89B7EA00EB22E3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libjscocos2d iOS"; + targetProxy = 9F78A2531A89B7EA00EB22E3 /* PBXContainerItemProxy */; + }; + 9FB5D5E91A69054A002361CA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libjscocos2d Mac"; + targetProxy = 9FB5D5E81A69054A002361CA /* PBXContainerItemProxy */; + }; + 9FF504CC1A5EB19500AFDA55 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = libsimulator_iOS; + targetProxy = 9FF504CB1A5EB19500AFDA55 /* PBXContainerItemProxy */; + }; + 9FF504D01A5EB19900AFDA55 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = libsimulator; + targetProxy = 9FF504CF1A5EB19900AFDA55 /* PBXContainerItemProxy */; + }; + C0A2F04118975FF80072A7AB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "cocos2dx Mac"; + targetProxy = C0A2F04018975FF80072A7AB /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 9FFC07341A4A764100AED399 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 9FFC07351A4A764100AED399 /* Base */, + 9FFC07371A4A765100AED399 /* zh-Hans */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; + DA9648A01A70F925001F41E8 /* ConsoleWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + DA96489F1A70F925001F41E8 /* Base */, + DA9648A31A70F93D001F41E8 /* zh-Hans */, + ); + name = ConsoleWindow.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 5023816917EBBCE400990C9B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)"; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = mac/Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + GLFW_EXPOSE_NATIVE_COCOA, + GLFW_EXPOSE_NATIVE_NSGL, + CC_TARGET_OS_MAC, + ); + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../Classes", + "$(SRCROOT)/../../../libsimulator/lib", + "$(SRCROOT)/../../../libsimulator/lib/protobuf-lite", + ); + INFOPLIST_FILE = mac/Info.plist; + LIBRARY_SEARCH_PATHS = ""; + MACOSX_DEPLOYMENT_TARGET = 10.8; + OTHER_LDFLAGS = ( + "-image_base", + 100000000, + "-pagezero_size", + 10000, + ); + PRODUCT_NAME = Simulator; + SDKROOT = macosx; + USER_HEADER_SEARCH_PATHS = "$(inherited) $(SRCROOT)/../../../../../cocos/platform/mac $(SRCROOT)/../../../../../external/glfw3/include/mac"; + VALID_ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + }; + name = Debug; + }; + 5023816A17EBBCE400990C9B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = mac/Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + GLFW_EXPOSE_NATIVE_COCOA, + GLFW_EXPOSE_NATIVE_NSGL, + CC_TARGET_OS_MAC, + ); + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../Classes", + "$(SRCROOT)/../../../libsimulator/lib", + "$(SRCROOT)/../../../libsimulator/lib/protobuf-lite", + ); + INFOPLIST_FILE = mac/Info.plist; + LIBRARY_SEARCH_PATHS = ""; + MACOSX_DEPLOYMENT_TARGET = 10.8; + OTHER_LDFLAGS = ( + "-image_base", + 100000000, + "-pagezero_size", + 10000, + ); + PRODUCT_NAME = Simulator; + SDKROOT = macosx; + USER_HEADER_SEARCH_PATHS = "$(inherited) $(SRCROOT)/../../../../../cocos/platform/mac $(SRCROOT)/../../../../../external/glfw3/include/mac"; + VALID_ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + }; + name = Release; + }; + F293B6C215EB7BEA00256477 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; + CLANG_CXX_LIBRARY = "libc++"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "COCOS2D_DEBUG=1", + USE_FILE32API, + "CC_LUA_ENGINE_ENABLED=1", + "CC_ENABLE_CHIPMUNK_INTEGRATION=1", + COCOS2D_JAVASCRIPT, + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ""; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; + MACOSX_DEPLOYMENT_TARGET = 10.8; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../../ $(SRCROOT)/../../../../../cocos $(SRCROOT)/../../../../../cocos/base $(SRCROOT)/../../../../../cocos/physics $(SRCROOT)/../../../../../cocos/math/kazmath $(SRCROOT)/../../../../../cocos/2d $(SRCROOT)/../../../../../cocos/ui $(SRCROOT)/../../../../../cocos/network $(SRCROOT)/../../../../../cocos/audio/include $(SRCROOT)/../../../../../cocos/editor-support $(SRCROOT)/../../../../../extensions $(SRCROOT)/../../../../../external $(SRCROOT)/../../../../../external/chipmunk/include/chipmunk $(SRCROOT)/../../../../../external/lua/luajit/include $(SRCROOT)/../../../../../external/lua/tolua $(SRCROOT)/../../../../../cocos/scripting/lua-bindings/manual $(SRCROOT)/../../../../../cocos/scripting/lua-bindings/auto $(SRCROOT)/../../../../../cocos/scripting/js-bindings/auto $(SRCROOT)/../../../../../cocos/scripting/js-bindings/manual $(SRCROOT)/../../../../../external/spidermonkey/include/mac"; + VALID_ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + }; + name = Debug; + }; + F293B6C315EB7BEA00256477 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; + CLANG_CXX_LIBRARY = "libc++"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_PREPROCESSOR_DEFINITIONS = ( + "COCOS2D_DEBUG=1", + USE_FILE32API, + "CC_LUA_ENGINE_ENABLED=1", + "CC_ENABLE_CHIPMUNK_INTEGRATION=1", + COCOS2D_JAVASCRIPT, + NDEBUG, + ); + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ""; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; + MACOSX_DEPLOYMENT_TARGET = 10.8; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + PRODUCT_NAME = "$(TARGET_NAME)"; + USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../../ $(SRCROOT)/../../../../../cocos $(SRCROOT)/../../../../../cocos/base $(SRCROOT)/../../../../../cocos/physics $(SRCROOT)/../../../../../cocos/math/kazmath $(SRCROOT)/../../../../../cocos/2d $(SRCROOT)/../../../../../cocos/ui $(SRCROOT)/../../../../../cocos/network $(SRCROOT)/../../../../../cocos/audio/include $(SRCROOT)/../../../../../cocos/editor-support $(SRCROOT)/../../../../../extensions $(SRCROOT)/../../../../../external $(SRCROOT)/../../../../../external/chipmunk/include/chipmunk $(SRCROOT)/../../../../../external/lua/luajit/include $(SRCROOT)/../../../../../external/lua/tolua $(SRCROOT)/../../../../../cocos/scripting/lua-bindings/manual $(SRCROOT)/../../../../../cocos/scripting/lua-bindings/auto $(SRCROOT)/../../../../../cocos/scripting/js-bindings/auto $(SRCROOT)/../../../../../cocos/scripting/js-bindings/manual $(SRCROOT)/../../../../../external/spidermonkey/include/mac"; + VALIDATE_PRODUCT = YES; + VALID_ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + }; + name = Release; + }; + F293B6C515EB7BEA00256477 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + armv7, + arm64, + ); + CODE_SIGN_IDENTITY = "iPhone Developer: wang zhe (UTF8Q753X4)"; + COMPRESS_PNG_FILES = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = ios/Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + CC_TARGET_OS_IPHONE, + "$(inherited)", + ); + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../Classes", + "$(SRCROOT)/../../../libsimulator/lib", + "$(SRCROOT)/../../../libsimulator/lib/protobuf-lite", + ); + INFOPLIST_FILE = ios/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; + LIBRARY_SEARCH_PATHS = ""; + PRODUCT_NAME = Simulator; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + USER_HEADER_SEARCH_PATHS = "$(inherited) $(SRCROOT)/../../../../../cocos/platform/ios $(SRCROOT)/../../../../../external/curl/include/ios"; + VALID_ARCHS = "armv7 arm64"; + }; + name = Debug; + }; + F293B6C615EB7BEA00256477 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + ARCHS = ( + armv7, + arm64, + ); + CODE_SIGN_IDENTITY = "iPhone Developer: wang zhe (UTF8Q753X4)"; + COMPRESS_PNG_FILES = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = ios/Prefix.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + CC_TARGET_OS_IPHONE, + "$(inherited)", + ); + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../Classes", + "$(SRCROOT)/../../../libsimulator/lib", + "$(SRCROOT)/../../../libsimulator/lib/protobuf-lite", + ); + INFOPLIST_FILE = ios/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 5.1.1; + LIBRARY_SEARCH_PATHS = ""; + PRODUCT_NAME = Simulator; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + USER_HEADER_SEARCH_PATHS = "$(inherited) $(SRCROOT)/../../../../../cocos/platform/ios $(SRCROOT)/../../../../../external/curl/include/ios"; + VALID_ARCHS = "armv7 arm64"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5023816817EBBCE400990C9B /* Build configuration list for PBXNativeTarget "Simulator Mac" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5023816917EBBCE400990C9B /* Debug */, + 5023816A17EBBCE400990C9B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F293B3C215EB7BE500256477 /* Build configuration list for PBXProject "simulator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F293B6C215EB7BEA00256477 /* Debug */, + F293B6C315EB7BEA00256477 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F293B6C415EB7BEA00256477 /* Build configuration list for PBXNativeTarget "Simulator iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F293B6C515EB7BEA00256477 /* Debug */, + F293B6C615EB7BEA00256477 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = F293B3BF15EB7BE500256477 /* Project object */; +} diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/SimulatorWin.cpp b/tools/simulator/frameworks/runtime-src/proj.win32/SimulatorWin.cpp new file mode 100644 index 0000000000..16bf32bb20 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/SimulatorWin.cpp @@ -0,0 +1,1056 @@ + +#pragma comment(lib, "comctl32.lib") +#pragma comment(linker, "\"/manifestdependency:type='Win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='X86' publicKeyToken='6595b64144ccf1df' language='*'\"") + +#include "stdafx.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "SimulatorWin.h" + +#include "glfw3.h" +#include "glfw3native.h" + +#include "AppEvent.h" +#include "AppLang.h" +#include "runtime/ConfigParser.h" +#include "runtime/Runtime.h" + +#include "platform/win32/PlayerWin.h" +#include "platform/win32/PlayerMenuServiceWin.h" + +#include "resource.h" + +USING_NS_CC; + +static WNDPROC g_oldWindowProc = NULL; +INT_PTR CALLBACK AboutDialogCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +{ + LOGFONT lf; + HFONT hFont; + + UNREFERENCED_PARAMETER(lParam); + switch (message) + { + case WM_INITDIALOG: + ZeroMemory(&lf, sizeof(LOGFONT)); + lf.lfHeight = 24; + lf.lfWeight = 200; + _tcscpy(lf.lfFaceName, _T("Arial")); + + hFont = CreateFontIndirect(&lf); + if ((HFONT)0 != hFont) + { + SendMessage(GetDlgItem(hDlg, IDC_ABOUT_TITLE), WM_SETFONT, (WPARAM)hFont, (LPARAM)TRUE); + } + return (INT_PTR)TRUE; + + case WM_COMMAND: + if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) + { + EndDialog(hDlg, LOWORD(wParam)); + return (INT_PTR)TRUE; + } + break; + } + return (INT_PTR)FALSE; +} +void onHelpAbout() +{ + DialogBox(GetModuleHandle(NULL), + MAKEINTRESOURCE(IDD_DIALOG_ABOUT), + Director::getInstance()->getOpenGLView()->getWin32Window(), + AboutDialogCallback); +} + +void shutDownApp() +{ + auto glview = dynamic_cast (Director::getInstance()->getOpenGLView()); + HWND hWnd = glview->getWin32Window(); + ::SendMessage(hWnd, WM_CLOSE, NULL, NULL); +} + +std::string getCurAppPath(void) +{ + TCHAR szAppDir[MAX_PATH] = {0}; + if (!GetModuleFileName(NULL, szAppDir, MAX_PATH)) + return ""; + int nEnd = 0; + for (int i = 0; szAppDir[i]; i++) + { + if (szAppDir[i] == '\\') + nEnd = i; + } + szAppDir[nEnd] = 0; + int iLen = 2 * wcslen(szAppDir); + char* chRtn = new char[iLen + 1]; + wcstombs(chRtn, szAppDir, iLen + 1); + std::string strPath = chRtn; + delete[] chRtn; + chRtn = NULL; + char fuldir[MAX_PATH] = {0}; + _fullpath(fuldir, strPath.c_str(), MAX_PATH); + return fuldir; +} + +static bool stringEndWith(const std::string str, const std::string needle) +{ + if (str.length() >= needle.length()) + { + return (0 == str.compare(str.length() - needle.length(), needle.length(), needle)); + } + return false; +} + +static void initGLContextAttrs() +{ + //set OpenGL context attributions,now can only set six attributions: + //red,green,blue,alpha,depth,stencil + GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8}; + + GLView::setGLContextAttrs(glContextAttrs); +} + +SimulatorWin *SimulatorWin::_instance = nullptr; + +SimulatorWin *SimulatorWin::getInstance() +{ + if (!_instance) + { + _instance = new SimulatorWin(); + } + return _instance; +} + +SimulatorWin::SimulatorWin() + : _app(nullptr) + , _hwnd(NULL) + , _hwndConsole(NULL) + , _writeDebugLogFile(nullptr) +{ +} + +SimulatorWin::~SimulatorWin() +{ + CC_SAFE_DELETE(_app); + if (_writeDebugLogFile) + { + fclose(_writeDebugLogFile); + } +} + +void SimulatorWin::quit() +{ + Director::getInstance()->end(); +} + +void SimulatorWin::relaunch() +{ + _project.setWindowOffset(Vec2(getPositionX(), getPositionY())); + openNewPlayerWithProjectConfig(_project); + + quit(); +} + +void SimulatorWin::openNewPlayer() +{ + openNewPlayerWithProjectConfig(_project); +} + +void SimulatorWin::openNewPlayerWithProjectConfig(const ProjectConfig &config) +{ + static long taskid = 100; + stringstream buf; + buf << taskid++; + + string commandLine; + commandLine.append(getApplicationExePath()); + commandLine.append(" "); + commandLine.append(config.makeCommandLine()); + + CCLOG("SimulatorWin::openNewPlayerWithProjectConfig(): %s", commandLine.c_str()); + + // http://msdn.microsoft.com/en-us/library/windows/desktop/ms682499(v=vs.85).aspx + SECURITY_ATTRIBUTES sa = {0}; + sa.nLength = sizeof(sa); + + PROCESS_INFORMATION pi = {0}; + STARTUPINFO si = {0}; + si.cb = sizeof(STARTUPINFO); + +#define MAX_COMMAND 1024 // lenth of commandLine is always beyond MAX_PATH + + WCHAR command[MAX_COMMAND]; + memset(command, 0, sizeof(command)); + MultiByteToWideChar(CP_UTF8, 0, commandLine.c_str(), -1, command, MAX_COMMAND); + + BOOL success = CreateProcess(NULL, + command, // command line + NULL, // process security attributes + NULL, // primary thread security attributes + FALSE, // handles are inherited + 0, // creation flags + NULL, // use parent's environment + NULL, // use parent's current directory + &si, // STARTUPINFO pointer + &pi); // receives PROCESS_INFORMATION + + if (!success) + { + CCLOG("PlayerTaskWin::run() - create process failed, for execute %s", commandLine.c_str()); + } +} + +void SimulatorWin::openProjectWithProjectConfig(const ProjectConfig &config) +{ + openNewPlayerWithProjectConfig(config); + quit(); +} + +int SimulatorWin::getPositionX() +{ + RECT rect; + GetWindowRect(_hwnd, &rect); + return rect.left; +} + +int SimulatorWin::getPositionY() +{ + RECT rect; + GetWindowRect(_hwnd, &rect); + return rect.top; +} + +int SimulatorWin::run() +{ + INITCOMMONCONTROLSEX InitCtrls; + InitCtrls.dwSize = sizeof(InitCtrls); + InitCtrls.dwICC = ICC_WIN95_CLASSES; + InitCommonControlsEx(&InitCtrls); + + parseCocosProjectConfig(_project); + + // load project config from command line args + vector args; + for (int i = 0; i < __argc; ++i) + { + wstring ws(__wargv[i]); + string s; + s.assign(ws.begin(), ws.end()); + args.push_back(s); + } + _project.parseCommandLine(args); + + if (_project.getProjectDir().empty()) + { + if (args.size() == 2) + { + // for Code IDE before RC2 + _project.setProjectDir(args.at(1)); + _project.setDebuggerType(kCCRuntimeDebuggerCodeIDE); + } + } + + // create the application instance + _app = new AppDelegate(); + RuntimeEngine::getInstance()->setProjectConfig(_project); + + // create console window + if (_project.isShowConsole()) + { + AllocConsole(); + _hwndConsole = GetConsoleWindow(); + if (_hwndConsole != NULL) + { + ShowWindow(_hwndConsole, SW_SHOW); + BringWindowToTop(_hwndConsole); + freopen("CONOUT$", "wt", stdout); + freopen("CONOUT$", "wt", stderr); + + HMENU hmenu = GetSystemMenu(_hwndConsole, FALSE); + if (hmenu != NULL) + { + DeleteMenu(hmenu, SC_CLOSE, MF_BYCOMMAND); + } + } + } + + // log file + if (_project.isWriteDebugLogToFile()) + { + const string debugLogFilePath = _project.getDebugLogFilePath(); + _writeDebugLogFile = fopen(debugLogFilePath.c_str(), "w"); + if (!_writeDebugLogFile) + { + CCLOG("Cannot create debug log file %s", debugLogFilePath.c_str()); + } + } + + // set environments + SetCurrentDirectoryA(_project.getProjectDir().c_str()); + FileUtils::getInstance()->setDefaultResourceRootPath(_project.getProjectDir()); + FileUtils::getInstance()->setWritablePath(_project.getWritableRealPath().c_str()); + + // check screen DPI + HDC screen = GetDC(0); + int dpi = GetDeviceCaps(screen, LOGPIXELSX); + ReleaseDC(0, screen); + + // set scale with DPI + // 96 DPI = 100 % scaling + // 120 DPI = 125 % scaling + // 144 DPI = 150 % scaling + // 192 DPI = 200 % scaling + // http://msdn.microsoft.com/en-us/library/windows/desktop/dn469266%28v=vs.85%29.aspx#dpi_and_the_desktop_scaling_factor + // + // enable DPI-Aware with DeclareDPIAware.manifest + // http://msdn.microsoft.com/en-us/library/windows/desktop/dn469266%28v=vs.85%29.aspx#declaring_dpi_awareness + float screenScale = 1.0f; + if (dpi >= 120 && dpi < 144) + { + screenScale = 1.25f; + } + else if (dpi >= 144 && dpi < 192) + { + screenScale = 1.5f; + } + else if (dpi >= 192) + { + screenScale = 2.0f; + } + CCLOG("SCREEN DPI = %d, SCREEN SCALE = %0.2f", dpi, screenScale); + + // check scale + Size frameSize = _project.getFrameSize(); + float frameScale = 1.0f; + if (_project.isRetinaDisplay()) + { + frameSize.width *= screenScale; + frameSize.height *= screenScale; + } + else + { + frameScale = screenScale; + } + + // check screen workarea + RECT workareaSize; + if (SystemParametersInfo(SPI_GETWORKAREA, NULL, &workareaSize, NULL)) + { + float workareaWidth = fabsf(workareaSize.right - workareaSize.left); + float workareaHeight = fabsf(workareaSize.bottom - workareaSize.top); + float frameBorderCX = GetSystemMetrics(SM_CXSIZEFRAME); + float frameBorderCY = GetSystemMetrics(SM_CYSIZEFRAME); + workareaWidth -= frameBorderCX * 2; + workareaHeight -= (frameBorderCY * 2 + GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYMENU)); + CCLOG("WORKAREA WIDTH %0.2f, HEIGHT %0.2f", workareaWidth, workareaHeight); + while (true && frameScale > 0.25f) + { + if (frameSize.width * frameScale > workareaWidth || frameSize.height * frameScale > workareaHeight) + { + frameScale = frameScale - 0.25f; + } + else + { + break; + } + } + + if (frameScale < 0.25f) frameScale = 0.25f; + } + _project.setFrameScale(frameScale); + CCLOG("FRAME SCALE = %0.2f", frameScale); + + // create opengl view + const Rect frameRect = Rect(0, 0, frameSize.width, frameSize.height); + ConfigParser::getInstance()->setInitViewSize(frameSize); + const bool isResize = _project.isResizeWindow(); + std::stringstream title; + title << "Cocos Simulator (" << _project.getFrameScale() * 100 << "%)"; + initGLContextAttrs(); + auto glview = GLViewImpl::createWithRect(title.str(), frameRect, frameScale); + _hwnd = glview->getWin32Window(); + player::PlayerWin::createWithHwnd(_hwnd); + DragAcceptFiles(_hwnd, TRUE); + //SendMessage(_hwnd, WM_SETICON, ICON_BIG, (LPARAM)icon); + //SendMessage(_hwnd, WM_SETICON, ICON_SMALL, (LPARAM)icon); + //FreeResource(icon); + + // path for looking Lang file, Studio Default images + FileUtils::getInstance()->addSearchPath(getApplicationPath().c_str()); + + auto director = Director::getInstance(); + director->setOpenGLView(glview); + + director->setAnimationInterval(1.0 / 60.0); + + // set window position + if (_project.getProjectDir().length()) + { + setZoom(_project.getFrameScale()); + } + Vec2 pos = _project.getWindowOffset(); + if (pos.x != 0 && pos.y != 0) + { + RECT rect; + GetWindowRect(_hwnd, &rect); + MoveWindow(_hwnd, pos.x, pos.y, rect.right - rect.left, rect.bottom - rect.top, FALSE); + } + + // init player services + setupUI(); + DrawMenuBar(_hwnd); + + // prepare + FileUtils::getInstance()->setPopupNotify(false); + _project.dump(); + auto app = Application::getInstance(); + + g_oldWindowProc = (WNDPROC)SetWindowLong(_hwnd, GWL_WNDPROC, (LONG)SimulatorWin::windowProc); + + // update window title + updateWindowTitle(); + + // startup message loop + return app->run(); +} + +// services + +void SimulatorWin::setupUI() +{ + auto menuBar = player::PlayerProtocol::getInstance()->getMenuService(); + + // FILE + menuBar->addItem("FILE_MENU", tr("File")); + menuBar->addItem("OPEN_FILE_MENU", tr("Open File") + "...", "FILE_MENU"); + menuBar->addItem("OPEN_PROJECT_MENU", tr("Open Project") + "...", "FILE_MENU"); + menuBar->addItem("FILE_MENU_SEP1", "-", "FILE_MENU"); + menuBar->addItem("EXIT_MENU", tr("Exit"), "FILE_MENU"); + + // VIEW + menuBar->addItem("VIEW_MENU", tr("View")); + SimulatorConfig *config = SimulatorConfig::getInstance(); + int current = config->checkScreenSize(_project.getFrameSize()); + for (int i = 0; i < config->getScreenSizeCount(); i++) + { + SimulatorScreenSize size = config->getScreenSize(i); + std::stringstream menuId; + menuId << "VIEWSIZE_ITEM_MENU_" << i; + auto menuItem = menuBar->addItem(menuId.str(), size.title.c_str(), "VIEW_MENU"); + + if (i == current) + { + menuItem->setChecked(true); + } + } + + // About + menuBar->addItem("HELP_MENU", tr("Help")); + menuBar->addItem("ABOUT_MENUITEM", tr("About"), "HELP_MENU"); + + menuBar->addItem("DIRECTION_MENU_SEP", "-", "VIEW_MENU"); + menuBar->addItem("DIRECTION_PORTRAIT_MENU", tr("Portrait"), "VIEW_MENU") + ->setChecked(_project.isPortraitFrame()); + menuBar->addItem("DIRECTION_LANDSCAPE_MENU", tr("Landscape"), "VIEW_MENU") + ->setChecked(_project.isLandscapeFrame()); + + menuBar->addItem("VIEW_SCALE_MENU_SEP", "-", "VIEW_MENU"); + std::vector scaleMenuVector; + auto scale200Menu = menuBar->addItem("VIEW_SCALE_MENU_200", tr("Zoom Out").append(" (200%)"), "VIEW_MENU"); + auto scale175Menu = menuBar->addItem("VIEW_SCALE_MENU_175", tr("Zoom Out").append(" (175%)"), "VIEW_MENU"); + auto scale150Menu = menuBar->addItem("VIEW_SCALE_MENU_150", tr("Zoom Out").append(" (150%)"), "VIEW_MENU"); + auto scale125Menu = menuBar->addItem("VIEW_SCALE_MENU_125", tr("Zoom Out").append(" (125%)"), "VIEW_MENU"); + auto scale100Menu = menuBar->addItem("VIEW_SCALE_MENU_100", tr("Zoom Out").append(" (100%)"), "VIEW_MENU"); + auto scale75Menu = menuBar->addItem("VIEW_SCALE_MENU_75", tr("Zoom Out").append(" (75%)"), "VIEW_MENU"); + auto scale50Menu = menuBar->addItem("VIEW_SCALE_MENU_50", tr("Zoom Out").append(" (50%)"), "VIEW_MENU"); + auto scale25Menu = menuBar->addItem("VIEW_SCALE_MENU_25", tr("Zoom Out").append(" (25%)"), "VIEW_MENU"); + int frameScale = int(_project.getFrameScale() * 100); + + if (frameScale == 200) + { + scale200Menu->setChecked(true); + } + else if (frameScale == 175) + { + scale175Menu->setChecked(true); + } + else if (frameScale == 150) + { + scale150Menu->setChecked(true); + } + else if (frameScale == 125) + { + scale125Menu->setChecked(true); + } + else if (frameScale == 100) + { + scale100Menu->setChecked(true); + } + else if (frameScale == 75) + { + scale75Menu->setChecked(true); + } + else if (frameScale == 50) + { + scale50Menu->setChecked(true); + } + else if (frameScale == 25) + { + scale25Menu->setChecked(true); + } + else + { + scale100Menu->setChecked(true); + } + + scaleMenuVector.push_back(scale200Menu); + scaleMenuVector.push_back(scale175Menu); + scaleMenuVector.push_back(scale150Menu); + scaleMenuVector.push_back(scale125Menu); + scaleMenuVector.push_back(scale100Menu); + scaleMenuVector.push_back(scale75Menu); + scaleMenuVector.push_back(scale50Menu); + scaleMenuVector.push_back(scale25Menu); + + menuBar->addItem("REFRESH_MENU_SEP", "-", "VIEW_MENU"); + menuBar->addItem("REFRESH_MENU", tr("Refresh"), "VIEW_MENU"); + + HWND &hwnd = _hwnd; + ProjectConfig &project = _project; + auto dispatcher = Director::getInstance()->getEventDispatcher(); + dispatcher->addEventListenerWithFixedPriority(EventListenerCustom::create("APP.EVENT", [&project, &hwnd, scaleMenuVector](EventCustom* event){ + auto menuEvent = dynamic_cast(event); + if (menuEvent) + { + rapidjson::Document dArgParse; + dArgParse.Parse<0>(menuEvent->getDataString().c_str()); + if (dArgParse.HasMember("name")) + { + string strcmd = dArgParse["name"].GetString(); + + if (strcmd == "menuClicked") + { + player::PlayerMenuItem *menuItem = static_cast(menuEvent->getUserData()); + if (menuItem) + { + if (menuItem->isChecked()) + { + return; + } + + string data = dArgParse["data"].GetString(); + + if ((data == "CLOSE_MENU") || (data == "EXIT_MENU")) + { + _instance->quit(); + } + else if (data == "REFRESH_MENU") + { + _instance->relaunch(); + } + else if (data.find("VIEW_SCALE_MENU_") == 0) // begin with VIEW_SCALE_MENU_ + { + string tmp = data.erase(0, strlen("VIEW_SCALE_MENU_")); + float scale = atof(tmp.c_str()) / 100.0f; + project.setFrameScale(scale); + + _instance->setZoom(scale); + + // update scale menu state + for (auto &it : scaleMenuVector) + { + it->setChecked(false); + } + menuItem->setChecked(true); + + // update window title + _instance->updateWindowTitle(); + + // update window size + RECT rect; + GetWindowRect(hwnd, &rect); + MoveWindow(hwnd, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top + GetSystemMetrics(SM_CYMENU), FALSE); + + // fix: can not update window on some windows system + ::SendMessage(hwnd, WM_MOVE, NULL, NULL); + } + else if (data.find("VIEWSIZE_ITEM_MENU_") == 0) // begin with VIEWSIZE_ITEM_MENU_ + { + string tmp = data.erase(0, strlen("VIEWSIZE_ITEM_MENU_")); + int index = atoi(tmp.c_str()); + SimulatorScreenSize size = SimulatorConfig::getInstance()->getScreenSize(index); + + if (project.isLandscapeFrame()) + { + std::swap(size.width, size.height); + } + + project.setFrameSize(cocos2d::Size(size.width, size.height)); + project.setWindowOffset(cocos2d::Vec2(_instance->getPositionX(), _instance->getPositionY())); + _instance->openProjectWithProjectConfig(project); + } + else if (data == "DIRECTION_PORTRAIT_MENU") + { + project.changeFrameOrientationToPortait(); + _instance->openProjectWithProjectConfig(project); + } + else if (data == "DIRECTION_LANDSCAPE_MENU") + { + project.changeFrameOrientationToLandscape(); + _instance->openProjectWithProjectConfig(project); + } + else if (data == "OPEN_FILE_MENU") + { + auto fileDialog = player::PlayerProtocol::getInstance()->getFileDialogService(); + stringstream extensions; + extensions << "All Support File|config.json,*.csd,*csd;" + << "Project Config File|config.json;" + << "Cocos Studio File|*.csd;" + << "Cocos Studio Binary File|*.csb"; + auto entry = fileDialog->openFile(tr("Choose File"), "", extensions.str()); + + _instance->onOpenFile(entry); + } + else if (data == "OPEN_PROJECT_MENU") + { + auto fileDialog = player::PlayerProtocol::getInstance()->getFileDialogService(); + auto path = fileDialog->openDirectory(tr("Choose Folder"), ""); + + _instance->onOpenProjectFolder(path); + } + else if (data == "ABOUT_MENUITEM") + { + onHelpAbout(); + } + } + } + } + } + }), 1); + + AppDelegate *app = _app; + auto listener = EventListenerCustom::create(kAppEventDropName, [&project, app](EventCustom* event) + { + AppEvent *dropEvent = dynamic_cast(event); + if (dropEvent) + { + string dirPath = dropEvent->getDataString() + "/"; + string configFilePath = dirPath + CONFIG_FILE; + + if (FileUtils::getInstance()->isDirectoryExist(dirPath) && + FileUtils::getInstance()->isFileExist(configFilePath)) + { + // parse config.json + ConfigParser::getInstance()->readConfig(configFilePath); + + project.setProjectDir(dirPath); + project.setScriptFile(ConfigParser::getInstance()->getEntryFile()); + project.setWritablePath(dirPath); + + RuntimeEngine::getInstance()->setProjectConfig(project); + } + } + }); + dispatcher->addEventListenerWithFixedPriority(listener, 1); +} + +void SimulatorWin::setZoom(float frameScale) +{ + _project.setFrameScale(frameScale); + cocos2d::Director::getInstance()->getOpenGLView()->setFrameZoomFactor(frameScale); +} + +void SimulatorWin::updateWindowTitle() +{ + std::stringstream title; + title << "Cocos " << tr("Simulator") << " (" << _project.getFrameScale() * 100 << "%)"; + std::u16string u16title; + cocos2d::StringUtils::UTF8ToUTF16(title.str(), u16title); + SetWindowText(_hwnd, (LPCTSTR)u16title.c_str()); +} + +// debug log +void SimulatorWin::writeDebugLog(const char *log) +{ + if (!_writeDebugLogFile) return; + + fputs(log, _writeDebugLogFile); + fputc('\n', _writeDebugLogFile); + fflush(_writeDebugLogFile); +} + +void SimulatorWin::parseCocosProjectConfig(ProjectConfig &config) +{ + // get project directory + ProjectConfig tmpConfig; + // load project config from command line args + vector args; + for (int i = 0; i < __argc; ++i) + { + wstring ws(__wargv[i]); + string s; + s.assign(ws.begin(), ws.end()); + args.push_back(s); + } + + if (args.size() >= 2) + { + if (args.size() && args.at(1).at(0) == '/') + { + // FIXME: + // for Code IDE before RC2 + tmpConfig.setProjectDir(args.at(1)); + } + + tmpConfig.parseCommandLine(args); + } + + // set project directory as search root path + FileUtils::getInstance()->setDefaultResourceRootPath(tmpConfig.getProjectDir().c_str()); + + // parse config.json + auto parser = ConfigParser::getInstance(); + auto configPath = tmpConfig.getProjectDir().append(CONFIG_FILE); + parser->readConfig(configPath); + + // set information + config.setConsolePort(parser->getConsolePort()); + config.setFileUploadPort(parser->getUploadPort()); + config.setFrameSize(parser->getInitViewSize()); + if (parser->isLanscape()) + { + config.changeFrameOrientationToLandscape(); + } + else + { + config.changeFrameOrientationToPortait(); + } + config.setScriptFile(parser->getEntryFile()); +} + +// +// D:\aaa\bbb\ccc\ddd\abc.txt --> D:/aaa/bbb/ccc/ddd/abc.txt +// +std::string SimulatorWin::convertPathFormatToUnixStyle(const std::string& path) +{ + std::string ret = path; + int len = ret.length(); + for (int i = 0; i < len; ++i) + { + if (ret[i] == '\\') + { + ret[i] = '/'; + } + } + return ret; +} + +// +// @return: C:/Users/win8/Documents/ +// +std::string SimulatorWin::getUserDocumentPath() +{ + TCHAR filePath[MAX_PATH]; + SHGetSpecialFolderPath(NULL, filePath, CSIDL_PERSONAL, FALSE); + int length = 2 * wcslen(filePath); + char* tempstring = new char[length + 1]; + wcstombs(tempstring, filePath, length + 1); + string userDocumentPath(tempstring); + free(tempstring); + + userDocumentPath = convertPathFormatToUnixStyle(userDocumentPath); + userDocumentPath.append("/"); + + return userDocumentPath; +} + +// +// convert Unicode/LocalCode TCHAR to Utf8 char +// +char* SimulatorWin::convertTCharToUtf8(const TCHAR* src) +{ +#ifdef UNICODE + WCHAR* tmp = (WCHAR*)src; + size_t size = wcslen(src) * 3 + 1; + char* dest = new char[size]; + memset(dest, 0, size); + WideCharToMultiByte(CP_UTF8, 0, tmp, -1, dest, size, NULL, NULL); + return dest; +#else + char* tmp = (char*)src; + uint32 size = strlen(tmp) + 1; + WCHAR* dest = new WCHAR[size]; + memset(dest, 0, sizeof(WCHAR)*size); + MultiByteToWideChar(CP_ACP, 0, src, -1, dest, (int)size); // convert local code to unicode. + + size = wcslen(dest) * 3 + 1; + char* dest2 = new char[size]; + memset(dest2, 0, size); + WideCharToMultiByte(CP_UTF8, 0, dest, -1, dest2, size, NULL, NULL); // convert unicode to utf8. + delete[] dest; + return dest2; +#endif +} + +// +std::string SimulatorWin::getApplicationExePath() +{ + TCHAR szFileName[MAX_PATH]; + GetModuleFileName(NULL, szFileName, MAX_PATH); + std::u16string u16ApplicationName; + char *applicationExePath = convertTCharToUtf8(szFileName); + std::string path(applicationExePath); + CC_SAFE_FREE(applicationExePath); + + return path; +} + +std::string SimulatorWin::getApplicationPath() +{ + std::string path = getApplicationExePath(); + size_t pos; + while ((pos = path.find_first_of("\\")) != std::string::npos) + { + path.replace(pos, 1, "/"); + } + size_t p = path.find_last_of("/"); + string workdir; + if (p != path.npos) + { + workdir = path.substr(0, p); + } + + return workdir; +} + +LRESULT CALLBACK SimulatorWin::windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + if (!_instance) return 0; + + switch (uMsg) + { + case WM_SYSCOMMAND: + case WM_COMMAND: + { + if (HIWORD(wParam) == 0) + { + // menu + WORD menuId = LOWORD(wParam); + auto menuService = dynamic_cast (player::PlayerProtocol::getInstance()->getMenuService()); + auto menuItem = menuService->getItemByCommandId(menuId); + if (menuItem) + { + AppEvent event("APP.EVENT", APP_EVENT_MENU); + + std::stringstream buf; + buf << "{\"data\":\"" << menuItem->getMenuId().c_str() << "\""; + buf << ",\"name\":" << "\"menuClicked\"" << "}"; + event.setDataString(buf.str()); + event.setUserData(menuItem); + Director::getInstance()->getEventDispatcher()->dispatchEvent(&event); + } + + if (menuId == ID_HELP_ABOUT) + { + onHelpAbout(); + } + } + break; + } + case WM_KEYDOWN: + { + if (wParam == VK_F5) + { + _instance->relaunch(); + } + break; + } + + case WM_COPYDATA: + { + PCOPYDATASTRUCT pMyCDS = (PCOPYDATASTRUCT)lParam; + if (pMyCDS->dwData == 1) + { + const char *szBuf = (const char*)(pMyCDS->lpData); + SimulatorWin::getInstance()->writeDebugLog(szBuf); + break; + } + } + + case WM_DESTROY: + { + DragAcceptFiles(hWnd, FALSE); + break; + } + + case WM_DROPFILES: + { + HDROP hDrop = (HDROP)wParam; + + const int count = DragQueryFileW(hDrop, 0xffffffff, NULL, 0); + + if (count > 0) + { + int fileIndex = 0; + + const UINT length = DragQueryFileW(hDrop, fileIndex, NULL, 0); + WCHAR* buffer = (WCHAR*)calloc(length + 1, sizeof(WCHAR)); + + DragQueryFileW(hDrop, fileIndex, buffer, length + 1); + char *utf8 = SimulatorWin::convertTCharToUtf8(buffer); + std::string firstFile(utf8); + CC_SAFE_FREE(utf8); + DragFinish(hDrop); + + _instance->onDrop(firstFile); + } + } // WM_DROPFILES + + } + return g_oldWindowProc(hWnd, uMsg, wParam, lParam); +} + +void SimulatorWin::onOpenFile(const std::string &filePath) +{ + string entry = filePath; + if (entry.empty()) return; + + if (stringEndWith(entry, "config.json") || stringEndWith(entry, ".csb") || stringEndWith(entry, ".csd")) + { + replaceAll(entry, "\\", "/"); + size_t p = entry.find_last_of("/"); + if (p != entry.npos) + { + string workdir = entry.substr(0, p); + _project.setProjectDir(workdir); + } + + _project.setScriptFile(entry); + if (stringEndWith(entry, CONFIG_FILE)) + { + ConfigParser::getInstance()->readConfig(entry); + _project.setScriptFile(ConfigParser::getInstance()->getEntryFile()); + } + openProjectWithProjectConfig(_project); + } + else + { + auto title = tr("Open File") + tr("Error"); + auto msg = tr("Only support") + " config.json;*.csb;*.csd"; + auto msgBox = player::PlayerProtocol::getInstance()->getMessageBoxService(); + msgBox->showMessageBox(title, msg); + } +} + +/* +1. find @folderPath/config.json +2. get project name from file: @folderPath/folderName.ccs +3. find @folderPath/cocosstudio/MainScene.csd +4. find @folderPath/cocosstudio/MainScene.csb +*/ +void SimulatorWin::onOpenProjectFolder(const std::string &folderPath) +{ + string path = folderPath; + if (!path.empty()) + { + replaceAll(path, "\\", "/"); + + auto fileUtils = FileUtils::getInstance(); + bool foundProjectFile = false; + // 1. check config.json + auto configPath = path + "/" + CONFIG_FILE; + if (fileUtils->isFileExist(configPath)) + { + ConfigParser::getInstance()->readConfig(configPath); + _project.setProjectDir(path); + _project.setScriptFile(ConfigParser::getInstance()->getEntryFile()); + foundProjectFile = true; + } + // check ccs project + else + { + // 2. + if (path.at(path.size() - 1) == '/') path.erase(path.size() - 1); + ssize_t pos = path.find_last_of('/'); + if (pos != std::string::npos) + { + auto folderName = path.substr(path.find_last_of('/'), path.size()); + auto ccsFilePath = path + folderName + ".ccs"; + if (fileUtils->isFileExist(ccsFilePath)) + { + auto fileContent = fileUtils->getStringFromFile(ccsFilePath); + + string matchString("isFileExist(csdFilePath)) + { + _project.setProjectDir(path); + _project.setScriptFile(csdFilePath); + foundProjectFile = true; + } + // 4. + else if (fileUtils->isFileExist(csbFilePath)) + { + _project.setProjectDir(path); + _project.setScriptFile(csbFilePath); + foundProjectFile = true; + } + } + } + + if (foundProjectFile) + { + openProjectWithProjectConfig(_project); + } + else + { + auto title = tr("Open Project") + tr("Error"); + auto msgBox = player::PlayerProtocol::getInstance()->getMessageBoxService(); + msgBox->showMessageBox(title, tr("Can not find project")); + } + } +} + +void SimulatorWin::onDrop(const std::string &path) +{ + auto fileUtils = FileUtils::getInstance(); + if (fileUtils->isDirectoryExist(path)) + { + onOpenProjectFolder(path); + } + else if (fileUtils->isFileExist(path)) + { + onOpenFile(path); + } +} diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/SimulatorWin.h b/tools/simulator/frameworks/runtime-src/proj.win32/SimulatorWin.h new file mode 100755 index 0000000000..dce617ffd9 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/SimulatorWin.h @@ -0,0 +1,58 @@ +#pragma once + +#include "stdafx.h" +#include "Resource.h" +#include "cocos2d.h" +#include "AppDelegate.h" +#include "ProjectConfig/ProjectConfig.h" +#include "ProjectConfig/SimulatorConfig.h" + +class SimulatorWin +{ +public: + static SimulatorWin *getInstance(); + virtual ~SimulatorWin(); + int run(); + + virtual void quit(); + virtual void relaunch(); + virtual void openNewPlayer(); + virtual void openNewPlayerWithProjectConfig(const ProjectConfig &config); + virtual void openProjectWithProjectConfig(const ProjectConfig &config); + + virtual int getPositionX(); + virtual int getPositionY(); +protected: + SimulatorWin(); + + static SimulatorWin *_instance; + ProjectConfig _project; + HWND _hwnd; + HWND _hwndConsole; + AppDelegate *_app; + FILE *_writeDebugLogFile; + + // + void setupUI(); + void setZoom(float frameScale); + void updateWindowTitle(); + + // debug log + void writeDebugLog(const char *log); + void parseCocosProjectConfig(ProjectConfig &config); + + // + void onOpenFile(const std::string &filePath); + void onOpenProjectFolder(const std::string &folderPath); + void onDrop(const std::string &path); + + // helper + std::string convertPathFormatToUnixStyle(const std::string& path); + std::string getUserDocumentPath(); + std::string getApplicationExePath(); + std::string getApplicationPath(); + static char* convertTCharToUtf8(const TCHAR* src); + + static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); +}; + diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/build-cfg.json b/tools/simulator/frameworks/runtime-src/proj.win32/build-cfg.json new file mode 100644 index 0000000000..07c6788bbf --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/build-cfg.json @@ -0,0 +1,22 @@ +{ + "copy_resources": [ + { + "from": "../../../src", + "to": "src" + }, + { + "from": "../../../res", + "to": "res" + }, + { + "from": "../../../config.json", + "to": "" + }, + { + "from": "../Classes/ide-support/lang", + "to": "" + } + ], + "must_copy_resources": [ + ] +} diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/game.rc b/tools/simulator/frameworks/runtime-src/proj.win32/game.rc new file mode 100755 index 0000000000..dada0181c8 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/game.rc @@ -0,0 +1,201 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Chinese (Simplified, PRC) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED +#pragma code_page(936) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDR_MENU_COCOS MENU +BEGIN + POPUP "°ïÖú(&H)" + BEGIN + MENUITEM "¹ØÓÚ(&A)", ID_HELP_ABOUT + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_DIALOG_ABOUT DIALOGEX 0, 0, 243, 134 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About Simulator" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CTEXT "Version 3.5beta0 (20150227)",IDC_ABOUT_VERSION,35,70,173,17 + CTEXT "Cocos Simulator",IDC_ABOUT_TITLE,35,49,173,17 + CTEXT "Copyright (C) 2015. All rights reserved.",IDC_STATIC,35,94,173,17 + ICON "GLFW_ICON",IDC_STATIC,111,15,20,20 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_DIALOG_ABOUT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 236 + TOPMARGIN, 7 + BOTTOMMARGIN, 127 + END +END +#endif // APSTUDIO_INVOKED + +#endif // Chinese (Simplified, PRC) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDR_MENU_COCOS MENU +BEGIN + POPUP "&Help" + BEGIN + MENUITEM "&About ...", ID_HELP_ABOUT + END +END + +#endif // English resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +GLFW_ICON ICON "res\\game.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "FileDescription", "game Module" + VALUE "FileVersion", "1, 0, 0, 1" + VALUE "InternalName", "game" + VALUE "LegalCopyright", "Copyright " + VALUE "OriginalFilename", "game.exe" + VALUE "ProductName", "game Module" + VALUE "ProductVersion", "1, 0, 0, 1" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/main.cpp b/tools/simulator/frameworks/runtime-src/proj.win32/main.cpp new file mode 100755 index 0000000000..c4c0104259 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/main.cpp @@ -0,0 +1,14 @@ +#include "main.h" +#include "SimulatorWin.h" +#include + +int APIENTRY _tWinMain(HINSTANCE hInstance, + HINSTANCE hPrevInstance, + LPTSTR lpCmdLine, + int nCmdShow) +{ + UNREFERENCED_PARAMETER(hPrevInstance); + UNREFERENCED_PARAMETER(lpCmdLine); + auto simulator = SimulatorWin::getInstance(); + return simulator->run(); +} diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/main.h b/tools/simulator/frameworks/runtime-src/proj.win32/main.h new file mode 100755 index 0000000000..d756fd1e57 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/main.h @@ -0,0 +1,10 @@ +#ifndef __MAIN_H__ +#define __MAIN_H__ + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers + +// Windows Header Files: +#include +#include + +#endif // __WINMAIN_H__ diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/res/game.ico b/tools/simulator/frameworks/runtime-src/proj.win32/res/game.ico new file mode 100755 index 0000000000..feaf932a74 Binary files /dev/null and b/tools/simulator/frameworks/runtime-src/proj.win32/res/game.ico differ diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/resource.h b/tools/simulator/frameworks/runtime-src/proj.win32/resource.h new file mode 100755 index 0000000000..88a519df74 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/resource.h @@ -0,0 +1,39 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by game.rc +// +#define IDS_PROJNAME 100 +#define IDR_MENU_COCOS 200 +#define IDD_DIALOG1 202 +#define IDD_DIALOG_ABOUT 203 +#define IDC_ABOUT_TITLE 1000 +#define IDC_EDIT2 1001 +#define IDC_ABOUT_VERSION 1001 +#define ID_VIEW_SIZE 30001 +#define ID_FILE_NEW_WINDOW 32771 +#define ID_VIEW_PORTRAIT 32775 +#define ID_VIEW_LANDSCAPE 32776 +#define ID_VIEW_CUSTOM 32777 +#define ID_HELP_ABOUT 32778 +#define ID_FILE_EXIT 32779 +#define ID_Menu 32780 +#define ID_Menu32781 32781 +#define ID_TEST_RESET 32782 +#define ID_CONTROL 32783 +#define ID_CONTROL_RELOAD 32784 +#define ID_VIEW_ZOOMOUT100 32785 +#define ID_VIEW_ZOOMOUT75 32786 +#define ID_VIEW_ZOOMOUT50 32787 +#define ID_VIEW_ZOOMOUT25 32788 +#define ID_CONTROL_TOP 32793 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 201 +#define _APS_NEXT_COMMAND_VALUE 32794 +#define _APS_NEXT_CONTROL_VALUE 1002 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/simulator.sln b/tools/simulator/frameworks/runtime-src/proj.win32/simulator.sln new file mode 100644 index 0000000000..e81b11e41c --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/simulator.sln @@ -0,0 +1,67 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.30501.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simulator", "simulator.vcxproj", "{4E6A7A0E-DDD8-4BAA-8B22-C964069364ED}" + ProjectSection(ProjectDependencies) = postProject + {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E} = {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "..\..\..\..\..\cocos\2d\libcocos2d.vcxproj", "{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}" +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("{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}") = "libsimulator", "..\..\..\libsimulator\proj.win32\libsimulator.vcxproj", "{001B324A-BB91-4E83-875C-C92F75C40857}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libjscocos2d", "..\..\..\..\..\cocos\scripting\js-bindings\proj.win32\libjscocos2d.vcxproj", "{39379840-825A-45A0-B363-C09FFEF864BD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbullet", "..\..\..\..\..\external\bullet\proj.win32\libbullet.vcxproj", "{012DFF48-A13F-4F52-B07B-F8B9D21CE95B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4E6A7A0E-DDD8-4BAA-8B22-C964069364ED}.Debug|Win32.ActiveCfg = Debug|Win32 + {4E6A7A0E-DDD8-4BAA-8B22-C964069364ED}.Debug|Win32.Build.0 = Debug|Win32 + {4E6A7A0E-DDD8-4BAA-8B22-C964069364ED}.Release|Win32.ActiveCfg = Release|Win32 + {4E6A7A0E-DDD8-4BAA-8B22-C964069364ED}.Release|Win32.Build.0 = Release|Win32 + {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Debug|Win32.ActiveCfg = Debug|Win32 + {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Debug|Win32.Build.0 = Debug|Win32 + {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Release|Win32.ActiveCfg = Release|Win32 + {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Release|Win32.Build.0 = Release|Win32 + {9F2D6CE6-C893-4400-B50C-6DB70CC2562F}.Debug|Win32.ActiveCfg = Debug|Win32 + {9F2D6CE6-C893-4400-B50C-6DB70CC2562F}.Debug|Win32.Build.0 = Debug|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|Win32.ActiveCfg = Debug|Win32 + {929480E7-23C0-4DF6-8456-096D71547116}.Debug|Win32.Build.0 = Debug|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|Win32.ActiveCfg = Debug|Win32 + {B7C2A162-DEC9-4418-972E-240AB3CBFCAE}.Debug|Win32.Build.0 = Debug|Win32 + {B7C2A162-DEC9-4418-972E-240AB3CBFCAE}.Release|Win32.ActiveCfg = Release|Win32 + {B7C2A162-DEC9-4418-972E-240AB3CBFCAE}.Release|Win32.Build.0 = Release|Win32 + {001B324A-BB91-4E83-875C-C92F75C40857}.Debug|Win32.ActiveCfg = Debug|Win32 + {001B324A-BB91-4E83-875C-C92F75C40857}.Debug|Win32.Build.0 = Debug|Win32 + {001B324A-BB91-4E83-875C-C92F75C40857}.Release|Win32.ActiveCfg = Release|Win32 + {001B324A-BB91-4E83-875C-C92F75C40857}.Release|Win32.Build.0 = Release|Win32 + {39379840-825A-45A0-B363-C09FFEF864BD}.Debug|Win32.ActiveCfg = Debug|Win32 + {39379840-825A-45A0-B363-C09FFEF864BD}.Debug|Win32.Build.0 = Debug|Win32 + {39379840-825A-45A0-B363-C09FFEF864BD}.Release|Win32.ActiveCfg = Release|Win32 + {39379840-825A-45A0-B363-C09FFEF864BD}.Release|Win32.Build.0 = Release|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Debug|Win32.ActiveCfg = Debug|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Debug|Win32.Build.0 = Debug|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Release|Win32.ActiveCfg = Release|Win32 + {012DFF48-A13F-4F52-B07B-F8B9D21CE95B}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/simulator.vcxproj b/tools/simulator/frameworks/runtime-src/proj.win32/simulator.vcxproj new file mode 100644 index 0000000000..30633aecc9 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/simulator.vcxproj @@ -0,0 +1,241 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {4E6A7A0E-DDD8-4BAA-8B22-C964069364ED} + simulator + + + + Application + true + Unicode + v110 + v120 + + + Application + false + Unicode + v110 + v120 + + + + + + + + + + + + + + + + + $(SolutionDir)$(Configuration).win32\ + $(Configuration).win32\ + true + $(IncludePath) + $(SourcePath); + AllRules.ruleset + + + $(SolutionDir)$(Configuration).win32\ + $(Configuration).win32\ + false + + + $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\lib;$(LibraryPath) + + + $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\lib;$(LibraryPath) + + + + $(ProjectDir)..\Classes;$(ProjectDir)..\Classes\runtime;$(ProjectDir)..\Classes\ide-support;$(EngineRoot)cocos\base;$(EngineRoot)external\win32-specific\zlib\include;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\scripting\js-bindings\auto;$(EngineRoot)cocos\scripting\js-bindings\manual;$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\lua\lua;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\spidermonkey\include\win32;$(EngineRoot)tools\simulator\libsimulator\lib;$(EngineRoot)tools\simulator\libsimulator\lib\protobuf-lite;$(EngineRoot)extensions;$(EngineRoot);%(AdditionalIncludeDirectories) + NotUsing + Level3 + MultiThreadedDebugDLL + false + ProgramDatabase + EnableFastChecks + Disabled + WIN32;_WINDOWS;STRICT;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS_DEBUG;COCOS2D_DEBUG=1;GLFW_EXPOSE_NATIVE_WIN32;GLFW_EXPOSE_NATIVE_WGL;%(PreprocessorDefinitions) + 4267;4251;4244;%(DisableSpecificWarnings) + true + $(IntDir)vc$(PlatformToolsetVersion).pdb + algorithm + CompileAsCpp + + + Windows + MachineX86 + true + $(OutDir);$(EngineRoot)external\spidermonkey\prebuilt\win32;%(AdditionalLibraryDirectories) + libcurl_imp.lib;lua51.lib;websockets.lib;mozjs-33.lib;%(AdditionalDependencies) + $(ProjectDir)../../../runtime/win32/$(TargetName).pdb + $(ProjectDir)../../../runtime/win32/$(TargetName)$(TargetExt) + + + 0x0409 + $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\include;$(IntDir);%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + + + false + Win32 + _DEBUG;%(PreprocessorDefinitions) + simulator.h + simulator_i.c + simulator_p.c + true + $(IntDir)/simulator.tlb + + + + + if not exist "$(OutDir)" mkdir "$(OutDir)" + +xcopy /Y /Q "$(ProjectDir)..\Classes\ide-support\lang" "$(OutDir)" + + + + + + + + + + if not exist "$(ProjectDir)..\..\..\runtime" mkdir "$(ProjectDir)..\..\..\runtime" + +if not exist "$(ProjectDir)..\..\..\runtime\win32" mkdir "$(ProjectDir)..\..\..\runtime\win32" + +xcopy /Y /Q "$(OutDir)*.dll" "$(ProjectDir)..\..\..\runtime\win32" +xcopy /Y /Q "$(OutDir)*.exe" "$(ProjectDir)..\..\..\runtime\win32" +xcopy /Y /Q "$(OutDir)lang" "$(ProjectDir)..\..\..\runtime\win32" + + + + + + $(ProjectDir)..\Classes;$(ProjectDir)..\Classes\runtime;$(EngineRoot)cocos\base;$(EngineRoot)tools\simulator\libsimulator\lib\protobuf-lite;$(EngineRoot)external\win32-specific\zlib\include;$(EngineRoot)cocos\scripting\lua-bindings\auto;$(EngineRoot)cocos\scripting\lua-bindings\manual;$(EngineRoot)cocos\scripting\js-bindings\auto;$(EngineRoot)cocos\scripting\js-bindings\manual;$(EngineRoot)cocos\audio\include;$(EngineRoot)external;$(EngineRoot)external\lua\lua;$(EngineRoot)external\lua\tolua;$(EngineRoot)external\chipmunk\include\chipmunk;$(EngineRoot)extensions;$(EngineRoot)external\curl\include\win32;$(EngineRoot)external\spidermonkey\include\win32;$(EngineRoot)tools\simulator\libsimulator\lib;$(EngineRoot);%(AdditionalIncludeDirectories) + NotUsing + Level3 + MultiThreadedDLL + Sync + ProgramDatabase + COCOS2D_DEBUG=1;WIN32;_WINDOWS;STRICT;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGSNDEBUG;GLFW_EXPOSE_NATIVE_WIN32;GLFW_EXPOSE_NATIVE_WGL;%(PreprocessorDefinitions) + 4267;4251;4244;%(DisableSpecificWarnings) + true + $(IntDir)vc$(PlatformToolsetVersion).pdb + algorithm + CompileAsCpp + Default + true + + + Windows + MachineX86 + $(OutDir);$(EngineRoot)external\spidermonkey\prebuilt\win32;%(AdditionalLibraryDirectories) + libcurl_imp.lib;lua51.lib;websockets.lib;mozjs-33.lib;%(AdditionalDependencies) + false + $(OutDir)$(ProjectName).exe + + + 0x0409 + $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\include;$(IntDir);%(AdditionalIncludeDirectories) + NDEBUG;%(PreprocessorDefinitions) + + + false + Win32 + NDEBUG;%(PreprocessorDefinitions) + simulator.h + simulator_i.c + simulator_p.c + true + $(IntDir)/simulator.tlb + + + + + if not exist "$(OutDir)" mkdir "$(OutDir)" + +xcopy /Y /Q "$(ProjectDir)..\Classes\ide-support\lang" "$(OutDir)" + + + + + + + + + + if not exist "$(ProjectDir)..\..\..\runtime" mkdir "$(ProjectDir)..\..\..\runtime" + +if not exist "$(ProjectDir)..\..\..\runtime\win32" mkdir "$(ProjectDir)..\..\..\runtime\win32" + +xcopy /Y /Q "$(OutDir)*.dll" "$(ProjectDir)..\..\..\runtime\win32" +xcopy /Y /Q "$(OutDir)*.exe" "$(ProjectDir)..\..\..\runtime\win32" +xcopy /Y /Q "$(OutDir)lang" "$(ProjectDir)..\..\..\runtime\win32" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39379840-825a-45a0-b363-c09ffef864bd} + + + {9f2d6ce6-c893-4400-b50c-6db70cc2562f} + + + {001b324a-bb91-4e83-875c-c92f75c40857} + + + + + + \ No newline at end of file diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/simulator.vcxproj.filters b/tools/simulator/frameworks/runtime-src/proj.win32/simulator.vcxproj.filters new file mode 100644 index 0000000000..77a9182794 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/simulator.vcxproj.filters @@ -0,0 +1,74 @@ + + + + + {fc5cb953-2953-4968-83b3-39e3ff951754} + + + {037a9a02-b906-4cc5-ad98-304acd4e25ee} + + + {2d1d0979-58cd-4ab6-b91c-13650158f1fa} + + + {9f68f9a7-7069-4c93-94ae-942a0aa910c1} + + + + + Classes + + + win32 + + + + + win32 + + + win32 + + + Classes\ide-support + + + Classes\ide-support + + + Classes\ide-support + + + Classes\ide-support + + + + + Classes + + + win32 + + + + win32 + + + Classes\ide-support + + + Classes\ide-support + + + Classes\ide-support + + + + + resource + + + + + + \ No newline at end of file diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/simulator.vcxproj.user b/tools/simulator/frameworks/runtime-src/proj.win32/simulator.vcxproj.user new file mode 100644 index 0000000000..006b7cbe27 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/simulator.vcxproj.user @@ -0,0 +1,16 @@ + + + + false + $(OutDir) + WindowsLocalDebugger + WindowsLocalDebugger + + + $(OutDir) + $(TargetPath) + + + $(TargetPath) + + \ No newline at end of file diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/stdafx.cpp b/tools/simulator/frameworks/runtime-src/proj.win32/stdafx.cpp new file mode 100755 index 0000000000..b8b9773e01 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// player.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/stdafx.h b/tools/simulator/frameworks/runtime-src/proj.win32/stdafx.h new file mode 100755 index 0000000000..bb80440ee2 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/stdafx.h @@ -0,0 +1,21 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + +#include "targetver.h" + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +// Windows Header Files: +#include + +// C RunTime Header Files +#include +#include +#include +#include + + +// TODO: reference additional headers your program requires here diff --git a/tools/simulator/frameworks/runtime-src/proj.win32/targetver.h b/tools/simulator/frameworks/runtime-src/proj.win32/targetver.h new file mode 100755 index 0000000000..87c0086de7 --- /dev/null +++ b/tools/simulator/frameworks/runtime-src/proj.win32/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/tools/simulator/libsimulator/lib/platform/win32/PlayerMenuServiceWin.cpp b/tools/simulator/libsimulator/lib/platform/win32/PlayerMenuServiceWin.cpp index 66a0cf2af0..839d0f2857 100644 --- a/tools/simulator/libsimulator/lib/platform/win32/PlayerMenuServiceWin.cpp +++ b/tools/simulator/libsimulator/lib/platform/win32/PlayerMenuServiceWin.cpp @@ -113,7 +113,7 @@ PlayerMenuServiceWin::PlayerMenuServiceWin(HWND hwnd) _root._commandId = 0; // hwnd has menu - HMENU menu = GetMenu(hwnd); + HMENU menu = GetSystemMenu(hwnd, FALSE);// GetMenu(hwnd); if (menu) { _root._hmenu = menu; diff --git a/web b/web index bd519eeca9..39e53a863b 160000 --- a/web +++ b/web @@ -1 +1 @@ -Subproject commit bd519eeca93c0237e531d5b7a9246f30c4f29291 +Subproject commit 39e53a863b3f663562c4f044f1bd50d782e4cc89