1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
{
"uid": "7F1D60F1K265BA40B5SA78EEAB249F02B709",
"isLoaded": true,
"lastModificationTime": 1421095528911,
"items": {
"name": "DataManager",
"type": "game_script",
"order": 6,
"content": "# ===================================================================\n#\n# Script: DataManager\n#\n# $$COPYRIGHT$$\n#\n# ===================================================================\nclass DataManager\n ###*\n * Manages the game's data like loading documents. Documents are stored\n * in the data folder of the game in JSON format. The UID is used as the file-name.\n * A document has the following structure:<br>\n * <br>\n * UID - Unique Identifier<br>\n * Items -> An object containing all the items/fields of the document.<br>\n * Items.Type -> The type of the document<br>\n * Items.Name -> The name of the document<br>\n * <br>\n * @module gs\n * @class DataManager\n * @memberof gs\n * @constructor\n ###\n constructor: ->\n ###*\n * Stores all documents by UID.\n * @property documentsByUid\n * @type gs.Document[]\n ### \n @documentsByUid = {}\n \n ###*\n * Stores all documents.\n * @property documents\n * @type gs.Document[]\n ###\n @documents = []\n \n ###*\n * Indiciates if all requested documents are loaded.\n * @property documentsLoaded\n * @type boolean\n ###\n @documentsLoaded = true\n \n ###*\n * @property events\n * @type gs.EventEmitter\n ###\n @events = new gs.EventEmitter()\n \n\n ###*\n * Unloads all documents with a specified type.\n *\n * @method disposeDocumentsByType\n * @param {String} type - The document type.\n ### \n disposeDocumentsByType: (type) ->\n i = 0\n \n while i < @documents.length\n d = @documents[i]\n if d && d.items && d.items.type == type\n \t@documents.remove(d)\n \t@documentsByUid[d.uid] = null\n \tGS.dataCache[d.uid] = null\n \tdelete @documentsByUid[d.uid]\n \tdelete GS.dataCache[d.uid]\n \ti--;\n i++\n \n return null\n \t\t\n\t\n ###*\n * Gets all documents with a specified type.\n *\n * @method getDocumentsByType\n * @param {String} type - The document type.\n * @return {gs.Document[]} The documents.\n ### \n getDocumentsByType: (type) ->\n result = []\n \n for uid of @summaries.items\n summary = @summaries.items[uid]\n if summary.items? and summary.items.type == type\n result.push(@getDocument(uid))\n\n return result\n \n ###*\n * Gets the first document with the specified type.\n *\n * @method getDocumentByType\n * @param {String} type - The document type.\n * @return {gs.Document} The document or <b>null</b> if a document with the specified type doesn't exist.\n ### \n getDocumentByType: (type) ->\n result = null\n \n for uid of @summaries.items\n summary = @summaries.items[uid]\n if summary.items? and summary.items.type == type\n result = @getDocument(uid)\n break\n\n return result\n \n ###*\n * Gets a document by its UID.\n *\n * @method getDocument\n * @param {String} uid - The UID of the document to get.\n * @return {gs.Document} The document or <b>null</b> if a document with the specified UID doesn't exist.\n ### \n getDocument: (uid) ->\n result = @documentsByUid[uid]\n \n if not result?\n gs.Data.load(uid, (dataObject, error) =>\n if !error\n r = @documentsByUid[dataObject.uid]\n r.items = dataObject.items;\n r.loaded = true;\n )\n \n if @summaries and @summaries.items\n summary = @summaries.items[uid]\n if summary\n result = { uid: uid, items: summary.items, loaded: false }\n else\n result = { uid: uid, loaded: false }\n \n if result\n @documentsByUid[uid] = result\n @documents.push(result)\n @documentsLoaded = false\n \n if uid == \"SUMMARIES\" then @summaries = result\n \n return result\n \n \n ###*\n * Gets a document by its UID. If the document isn't already loaded this method\n * only returned document only contains summary data.\n *\n * @method getDocumentSummary\n * @param {String} uid - The UID of the document to get.\n * @return {gs.Document} The document or <b>null</b> if a document with the specified UID doesn't exist.\n ### \n getDocumentSummary: (uid) -> @summaries.items[uid]\n \n ###*\n * Updates the loading process of documents.\n *\n * @method update\n ### \n update: ->\n if not @documentsLoaded\n @documentsLoaded = true\n \n for i in [0...@documents.length]\n if not @documents[i].loaded\n @documentsLoaded = false\n break\n \n if @documentsLoaded\n @events.emit(\"loaded\", this)\n \n return null\n\nwindow.DataManager = DataManager\ngs.DataManager = DataManager",
"compiledContent": "var DataManager;\n\nDataManager = (function() {\n\n /**\n * Manages the game's data like loading documents. Documents are stored\n * in the data folder of the game in JSON format. The UID is used as the file-name.\n * A document has the following structure:<br>\n * <br>\n * UID - Unique Identifier<br>\n * Items -> An object containing all the items/fields of the document.<br>\n * Items.Type -> The type of the document<br>\n * Items.Name -> The name of the document<br>\n * <br>\n * @module gs\n * @class DataManager\n * @memberof gs\n * @constructor\n */\n function DataManager() {\n\n /**\n * Stores all documents by UID.\n * @property documentsByUid\n * @type gs.Document[]\n */\n this.documentsByUid = {};\n\n /**\n * Stores all documents.\n * @property documents\n * @type gs.Document[]\n */\n this.documents = [];\n\n /**\n * Indiciates if all requested documents are loaded.\n * @property documentsLoaded\n * @type boolean\n */\n this.documentsLoaded = true;\n\n /**\n * @property events\n * @type gs.EventEmitter\n */\n this.events = new gs.EventEmitter();\n }\n\n\n /**\n * Unloads all documents with a specified type.\n *\n * @method disposeDocumentsByType\n * @param {String} type - The document type.\n */\n\n DataManager.prototype.disposeDocumentsByType = function(type) {\n var d, i;\n i = 0;\n while (i < this.documents.length) {\n d = this.documents[i];\n if (d && d.items && d.items.type === type) {\n this.documents.remove(d);\n this.documentsByUid[d.uid] = null;\n GS.dataCache[d.uid] = null;\n delete this.documentsByUid[d.uid];\n delete GS.dataCache[d.uid];\n i--;\n }\n i++;\n }\n return null;\n };\n\n\n /**\n * Gets all documents with a specified type.\n *\n * @method getDocumentsByType\n * @param {String} type - The document type.\n * @return {gs.Document[]} The documents.\n */\n\n DataManager.prototype.getDocumentsByType = function(type) {\n var result, summary, uid;\n result = [];\n for (uid in this.summaries.items) {\n summary = this.summaries.items[uid];\n if ((summary.items != null) && summary.items.type === type) {\n result.push(this.getDocument(uid));\n }\n }\n return result;\n };\n\n\n /**\n * Gets the first document with the specified type.\n *\n * @method getDocumentByType\n * @param {String} type - The document type.\n * @return {gs.Document} The document or <b>null</b> if a document with the specified type doesn't exist.\n */\n\n DataManager.prototype.getDocumentByType = function(type) {\n var result, summary, uid;\n result = null;\n for (uid in this.summaries.items) {\n summary = this.summaries.items[uid];\n if ((summary.items != null) && summary.items.type === type) {\n result = this.getDocument(uid);\n break;\n }\n }\n return result;\n };\n\n\n /**\n * Gets a document by its UID.\n *\n * @method getDocument\n * @param {String} uid - The UID of the document to get.\n * @return {gs.Document} The document or <b>null</b> if a document with the specified UID doesn't exist.\n */\n\n DataManager.prototype.getDocument = function(uid) {\n var result, summary;\n result = this.documentsByUid[uid];\n if (result == null) {\n gs.Data.load(uid, (function(_this) {\n return function(dataObject, error) {\n var r;\n if (!error) {\n r = _this.documentsByUid[dataObject.uid];\n r.items = dataObject.items;\n return r.loaded = true;\n }\n };\n })(this));\n if (this.summaries && this.summaries.items) {\n summary = this.summaries.items[uid];\n if (summary) {\n result = {\n uid: uid,\n items: summary.items,\n loaded: false\n };\n }\n } else {\n result = {\n uid: uid,\n loaded: false\n };\n }\n if (result) {\n this.documentsByUid[uid] = result;\n this.documents.push(result);\n this.documentsLoaded = false;\n }\n if (uid === \"SUMMARIES\") {\n this.summaries = result;\n }\n }\n return result;\n };\n\n\n /**\n * Gets a document by its UID. If the document isn't already loaded this method\n * only returned document only contains summary data.\n *\n * @method getDocumentSummary\n * @param {String} uid - The UID of the document to get.\n * @return {gs.Document} The document or <b>null</b> if a document with the specified UID doesn't exist.\n */\n\n DataManager.prototype.getDocumentSummary = function(uid) {\n return this.summaries.items[uid];\n };\n\n\n /**\n * Updates the loading process of documents.\n *\n * @method update\n */\n\n DataManager.prototype.update = function() {\n var i, j, ref;\n if (!this.documentsLoaded) {\n this.documentsLoaded = true;\n for (i = j = 0, ref = this.documents.length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {\n if (!this.documents[i].loaded) {\n this.documentsLoaded = false;\n break;\n }\n }\n if (this.documentsLoaded) {\n this.events.emit(\"loaded\", this);\n }\n }\n return null;\n };\n\n return DataManager;\n\n})();\n\nwindow.DataManager = DataManager;\n\ngs.DataManager = DataManager;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUE7O0FBQU07O0FBQ0Y7Ozs7Ozs7Ozs7Ozs7OztFQWVhLHFCQUFBOztBQUNUOzs7OztJQUtBLElBQUMsQ0FBQSxjQUFELEdBQWtCOztBQUVsQjs7Ozs7SUFLQSxJQUFDLENBQUEsU0FBRCxHQUFhOztBQUViOzs7OztJQUtBLElBQUMsQ0FBQSxlQUFELEdBQW1COztBQUVuQjs7OztJQUlBLElBQUMsQ0FBQSxNQUFELEdBQWMsSUFBQSxFQUFFLENBQUMsWUFBSCxDQUFBO0VBMUJMOzs7QUE2QmI7Ozs7Ozs7d0JBTUEsc0JBQUEsR0FBd0IsU0FBQyxJQUFEO0FBQ3BCLFFBQUE7SUFBQSxDQUFBLEdBQUk7QUFFSixXQUFNLENBQUEsR0FBSSxJQUFDLENBQUEsU0FBUyxDQUFDLE1BQXJCO01BQ0ksQ0FBQSxHQUFJLElBQUMsQ0FBQSxTQUFVLENBQUEsQ0FBQTtNQUNmLElBQUcsQ0FBQSxJQUFLLENBQUMsQ0FBQyxLQUFQLElBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBUixLQUFnQixJQUFuQztRQUNDLElBQUMsQ0FBQSxTQUFTLENBQUMsTUFBWCxDQUFrQixDQUFsQjtRQUNBLElBQUMsQ0FBQSxjQUFlLENBQUEsQ0FBQyxDQUFDLEdBQUYsQ0FBaEIsR0FBeUI7UUFDekIsRUFBRSxDQUFDLFNBQVUsQ0FBQSxDQUFDLENBQUMsR0FBRixDQUFiLEdBQXNCO1FBQ3RCLE9BQU8sSUFBQyxDQUFBLGNBQWUsQ0FBQSxDQUFDLENBQUMsR0FBRjtRQUN2QixPQUFPLEVBQUUsQ0FBQyxTQUFVLENBQUEsQ0FBQyxDQUFDLEdBQUY7UUFDcEIsQ0FBQSxHQU5EOztNQU9BLENBQUE7SUFUSjtBQVdBLFdBQU87RUFkYTs7O0FBaUJ4Qjs7Ozs7Ozs7d0JBT0Esa0JBQUEsR0FBb0IsU0FBQyxJQUFEO0FBQ2hCLFFBQUE7SUFBQSxNQUFBLEdBQVM7QUFFVCxTQUFBLDJCQUFB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QUFILEdBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4jXG4jICAgU2NyaXB0OiBEYXRhTWFuYWdlclxuI1xuIyAgICQkQ09QWVJJR0hUJCRcbiNcbiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuY2xhc3MgRGF0YU1hbmFnZXJcbiAgICAjIyMqXG4gICAgKiBNYW5hZ2VzIHRoZSBnYW1lJ3MgZGF0YSBsaWtlIGxvYWRpbmcgZG9jdW1lbnRzLiBEb2N1bWVudHMgYXJlIHN0b3JlZFxuICAgICogaW4gdGhlIGRhdGEgZm9sZGVyIG9mIHRoZSBnYW1lIGluIEpTT04gZm9ybWF0LiBUaGUgVUlEIGlzIHVzZWQgYXMgdGhlIGZpbGUtbmFtZS5cbiAgICAqIEEgZG9jdW1lbnQgaGFzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOjxicj5cbiAgICAqIDxicj5cbiAgICAqIFVJRCAtIFVuaXF1ZSBJZGVudGlmaWVyPGJyPlxuICAgICogSXRlbXMgLT4gQW4gb2JqZWN0IGNvbnRhaW5pbmcgYWxsIHRoZSBpdGVtcy9maWVsZHMgb2YgdGhlIGRvY3VtZW50Ljxicj5cbiAgICAqIEl0ZW1zLlR5cGUgLT4gVGhlIHR5cGUgb2YgdGhlIGRvY3VtZW50PGJyPlxuICAgICogSXRlbXMuTmFtZSAtPiBUaGUgbmFtZSBvZiB0aGUgZG9jdW1lbnQ8YnI+XG4gICAgKiA8YnI+XG4gICAgKiBAbW9kdWxlIGdzXG4gICAgKiBAY2xhc3MgRGF0YU1hbmFnZXJcbiAgICAqIEBtZW1iZXJvZiBnc1xuICAgICogQGNvbnN0cnVjdG9yXG4gICAgIyMjXG4gICAgY29uc3RydWN0b3I6IC0+XG4gICAgICAgICMjIypcbiAgICAgICAgKiBTdG9yZXMgYWxsIGRvY3VtZW50cyBieSBVSUQuXG4gICAgICAgICogQHByb3BlcnR5IGRvY3VtZW50c0J5VWlkXG4gICAgICAgICogQHR5cGUgZ3MuRG9jdW1lbnRbXVxuICAgICAgICAjIyMgXG4gICAgICAgIEBkb2N1bWVudHNCeVVpZCA9IHt9XG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogU3RvcmVzIGFsbCBkb2N1bWVudHMuXG4gICAgICAgICogQHByb3BlcnR5IGRvY3VtZW50c1xuICAgICAgICAqIEB0eXBlIGdzLkRvY3VtZW50W11cbiAgICAgICAgIyMjXG4gICAgICAgIEBkb2N1bWVudHMgPSBbXVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEluZGljaWF0ZXMgaWYgYWxsIHJlcXVlc3RlZCBkb2N1bWVudHMgYXJlIGxvYWRlZC5cbiAgICAgICAgKiBAcHJvcGVydHkgZG9jdW1lbnRzTG9hZGVkXG4gICAgICAgICogQHR5cGUgYm9vbGVhblxuICAgICAgICAjIyNcbiAgICAgICAgQGRvY3VtZW50c0xvYWRlZCA9IHRydWVcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBAcHJvcGVydHkgZXZlbnRzXG4gICAgICAgICogQHR5cGUgZ3MuRXZlbnRFbWl0dGVyXG4gICAgICAgICMjI1xuICAgICAgICBAZXZlbnRzID0gbmV3IGdzLkV2ZW50RW1pdHRlcigpXG4gICAgICAgIFxuXG4gICAgIyMjKlxuICAgICogVW5sb2FkcyBhbGwgZG9jdW1lbnRzIHdpdGggYSBzcGVjaWZpZWQgdHlwZS5cbiAgICAqXG4gICAgKiBAbWV0aG9kIGRpc3Bvc2VEb2N1bWVudHNCeVR5cGVcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIC0gVGhlIGRvY3VtZW50IHR5cGUuXG4gICAgIyMjICBcbiAgICBkaXNwb3NlRG9jdW1lbnRzQnlUeXBlOiAodHlwZSkgLT5cbiAgICAgICAgaSA9IDBcbiAgICAgICAgXG4gICAgICAgIHdoaWxlIGkgPCBAZG9jdW1lbnRzLmxlbmd0aFxuICAgICAgICAgICAgZCA9IEBkb2N1bWVudHNbaV1cbiAgICAgICAgICAgIGlmIGQgJiYgZC5pdGVtcyAmJiBkLml0ZW1zLnR5cGUgPT0gdHlwZVxuICAgICAgICAgICAgXHRAZG9jdW1lbnRzLnJlbW92ZShkKVxuICAgICAgICAgICAgXHRAZG9jdW1lbnRzQnlVaWRbZC51aWRdID0gbnVsbFxuICAgICAgICAgICAgXHRHUy5kYXRhQ2FjaGVbZC51aWRdID0gbnVsbFxuICAgICAgICAgICAgXHRkZWxldGUgQGRvY3VtZW50c0J5VWlkW2QudWlkXVxuICAgICAgICAgICAgXHRkZWxldGUgR1MuZGF0YUNhY2hlW2QudWlkXVxuICAgICAgICAgICAgXHRpLS07XG4gICAgICAgICAgICBpKytcbiAgICAgICAgICAgIFxuICAgICAgICByZXR1cm4gbnVsbFxuICAgIFx0XHRcblx0XG4gICAgIyMjKlxuICAgICogR2V0cyBhbGwgZG9jdW1lbnRzIHdpdGggYSBzcGVjaWZpZWQgdHlwZS5cbiAgICAqXG4gICAgKiBAbWV0aG9kIGdldERvY3VtZW50c0J5VHlwZVxuICAgICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgLSBUaGUgZG9jdW1lbnQgdHlwZS5cbiAgICAqIEByZXR1cm4ge2dzLkRvY3VtZW50W119IFRoZSBkb2N1bWVudHMuXG4gICAgIyMjICBcbiAgICBnZXREb2N1bWVudHNCeVR5cGU6ICh0eXBlKSAtPlxuICAgICAgICByZXN1bHQgPSBbXVxuICAgICAgICBcbiAgICAgICAgZm9yIHVpZCBvZiBAc3VtbWFyaWVzLml0ZW1zXG4gICAgICAgICAgICBzdW1tYXJ5ID0gQHN1bW1hcmllcy5pdGVtc1t1aWRdXG4gICAgICAgICAgICBpZiBzdW1tYXJ5Lml0ZW1zPyBhbmQgc3VtbWFyeS5pdGVtcy50eXBlID09IHR5cGVcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChAZ2V0RG9jdW1lbnQodWlkKSlcblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIFxuICAgICMjIypcbiAgICAqIEdldHMgdGhlIGZpcnN0IGRvY3VtZW50IHdpdGggdGhlIHNwZWNpZmllZCB0eXBlLlxuICAgICpcbiAgICAqIEBtZXRob2QgZ2V0RG9jdW1lbnRCeVR5cGVcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIC0gVGhlIGRvY3VtZW50IHR5cGUuXG4gICAgKiBAcmV0dXJuIHtncy5Eb2N1bWVudH0gVGhlIGRvY3VtZW50IG9yIDxiPm51bGw8L2I+IGlmIGEgZG9jdW1lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIHR5cGUgZG9lc24ndCBleGlzdC5cbiAgICAjIyMgIFxuICAgIGdldERvY3VtZW50QnlUeXBlOiAodHlwZSkgLT5cbiAgICAgICAgcmVzdWx0ID0gbnVsbFxuICAgICAgICBcbiAgICAgICAgZm9yIHVpZCBvZiBAc3VtbWFyaWVzLml0ZW1zXG4gICAgICAgICAgICBzdW1tYXJ5ID0gQHN1bW1hcmllcy5pdGVtc1t1aWRdXG4gICAgICAgICAgICBpZiBzdW1tYXJ5Lml0ZW1zPyBhbmQgc3VtbWFyeS5pdGVtcy50eXBlID09IHR5cGVcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBAZ2V0RG9jdW1lbnQodWlkKVxuICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICBcbiAgICAjIyMqXG4gICAgKiBHZXRzIGEgZG9jdW1lbnQgYnkgaXRzIFVJRC5cbiAgICAqXG4gICAgKiBAbWV0aG9kIGdldERvY3VtZW50XG4gICAgKiBAcGFyYW0ge1N0cmluZ30gdWlkIC0gVGhlIFVJRCBvZiB0aGUgZG9jdW1lbnQgdG8gZ2V0LlxuICAgICogQHJldHVybiB7Z3MuRG9jdW1lbnR9IFRoZSBkb2N1bWVudCBvciA8Yj5udWxsPC9iPiBpZiBhIGRvY3VtZW50IHdpdGggdGhlIHNwZWNpZmllZCBVSUQgZG9lc24ndCBleGlzdC5cbiAgICAjIyMgIFxuICAgIGdldERvY3VtZW50OiAodWlkKSAtPlxuICAgICAgICByZXN1bHQgPSBAZG9jdW1lbnRzQnlVaWRbdWlkXVxuICAgIFxuICAgICAgICBpZiBub3QgcmVzdWx0P1xuICAgICAgICAgICAgZ3MuRGF0YS5sb2FkKHVpZCwgKGRhdGFPYmplY3QsIGVycm9yKSA9PlxuICAgICAgICAgICAgICAgIGlmICFlcnJvclxuICAgICAgICAgICAgICAgICAgICByID0gQGRvY3VtZW50c0J5VWlkW2RhdGFPYmplY3QudWlkXVxuICAgICAgICAgICAgICAgICAgICByLml0ZW1zID0gZGF0YU9iamVjdC5pdGVtcztcbiAgICAgICAgICAgICAgICAgICAgci5sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiBAc3VtbWFyaWVzIGFuZCBAc3VtbWFyaWVzLml0ZW1zXG4gICAgICAgICAgICAgICAgc3VtbWFyeSA9IEBzdW1tYXJpZXMuaXRlbXNbdWlkXVxuICAgICAgICAgICAgICAgIGlmIHN1bW1hcnlcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0geyB1aWQ6IHVpZCwgaXRlbXM6IHN1bW1hcnkuaXRlbXMsIGxvYWRlZDogZmFsc2UgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHsgdWlkOiB1aWQsIGxvYWRlZDogZmFsc2UgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiByZXN1bHRcbiAgICAgICAgICAgICAgICBAZG9jdW1lbnRzQnlVaWRbdWlkXSA9IHJlc3VsdFxuICAgICAgICAgICAgICAgIEBkb2N1bWVudHMucHVzaChyZXN1bHQpXG4gICAgICAgICAgICAgICAgQGRvY3VtZW50c0xvYWRlZCA9IGZhbHNlXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIHVpZCA9PSBcIlNVTU1BUklFU1wiIHRoZW4gQHN1bW1hcmllcyA9IHJlc3VsdFxuICAgIFxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIFxuICAgIFxuICAgICMjIypcbiAgICAqIEdldHMgYSBkb2N1bWVudCBieSBpdHMgVUlELiBJZiB0aGUgZG9jdW1lbnQgaXNuJ3QgYWxyZWFkeSBsb2FkZWQgdGhpcyBtZXRob2RcbiAgICAqIG9ubHkgcmV0dXJuZWQgZG9jdW1lbnQgb25seSBjb250YWlucyBzdW1tYXJ5IGRhdGEuXG4gICAgKlxuICAgICogQG1ldGhvZCBnZXREb2N1bWVudFN1bW1hcnlcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSB1aWQgLSBUaGUgVUlEIG9mIHRoZSBkb2N1bWVudCB0byBnZXQuXG4gICAgKiBAcmV0dXJuIHtncy5Eb2N1bWVudH0gVGhlIGRvY3VtZW50IG9yIDxiPm51bGw8L2I+IGlmIGEgZG9jdW1lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIFVJRCBkb2Vzbid0IGV4aXN0LlxuICAgICMjIyBcbiAgICBnZXREb2N1bWVudFN1bW1hcnk6ICh1aWQpIC0+IEBzdW1tYXJpZXMuaXRlbXNbdWlkXVxuICAgIFxuICAgICMjIypcbiAgICAqIFVwZGF0ZXMgdGhlIGxvYWRpbmcgcHJvY2VzcyBvZiBkb2N1bWVudHMuXG4gICAgKlxuICAgICogQG1ldGhvZCB1cGRhdGVcbiAgICAjIyMgXG4gICAgdXBkYXRlOiAtPlxuICAgICAgICBpZiBub3QgQGRvY3VtZW50c0xvYWRlZFxuICAgICAgICAgICAgQGRvY3VtZW50c0xvYWRlZCA9IHRydWVcbiAgICBcbiAgICAgICAgICAgIGZvciBpIGluIFswLi4uQGRvY3VtZW50cy5sZW5ndGhdXG4gICAgICAgICAgICAgICAgaWYgbm90IEBkb2N1bWVudHNbaV0ubG9hZGVkXG4gICAgICAgICAgICAgICAgICAgIEBkb2N1bWVudHNMb2FkZWQgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIEBkb2N1bWVudHNMb2FkZWRcbiAgICAgICAgICAgICAgICBAZXZlbnRzLmVtaXQoXCJsb2FkZWRcIiwgdGhpcylcbiAgICAgICAgXG4gICAgICAgIHJldHVybiBudWxsXG5cbndpbmRvdy5EYXRhTWFuYWdlciA9IERhdGFNYW5hZ2VyXG5ncy5EYXRhTWFuYWdlciA9IERhdGFNYW5hZ2VyIl19\n//# sourceURL=DataManager_77.js",
"parentId": "C0268943K60B3A42B7SA6F1EDDCF2F642FD7"
},
"summary": [
"name",
"type",
"order"
]
}
|