Subversion Repository Public Repository

Nextrek

Diff Revisions 1085 vs 1086 for /s2s/data/37BD01A5KBA1BA4238S876AE816A837C1419.json

Diff revisions: vs.
  @@ -6,10 +6,10 @@
6 6 "name": "Object_Scene",
7 7 "type": "game_script",
8 8 "order": 16,
9 - "content": "# ===================================================================\n#\n# Script: Object_Scene\n#\n# $$COPYRIGHT$$\n#\n# ===================================================================\nclass Object_Scene extends gs.Object_Base\n # @objectCodecBlackList = [\"parent\", \"subObjects\", \"preparing\", \"behavior\", \"interpreter\", \"events\", \"sceneData\",\n # \"characterContainer\", \"pictureContainer\", \"textContainer\", \"videoContainer\", \"messageAreas\", \"hotspotContainer\", \"commonEventContainer\",\n # \"pictures\", \"texts\", \"videos\", \"messageAreas\", \"hotspots\", \"commonEvents\", \"layout\", \"layoutNVL\"]\n \n @accessors \"visible\", \n set: (v) -> \n if v != @visible_\n @visible_ = v\n @needsUpdate = yes\n @fullRefresh()\n \n get: -> @visible_ and (!@parent or @parent.visible)\n \n ###*\n * A scene object manages a whole visual novel scene with backgrounds, characters,\n * messages, etc.\n *\n * @module vn\n * @class Object_Scene\n * @extends gs.Object_Base\n * @memberof vn\n * @constructor\n ### \n constructor: ->\n super()\n \n ###*\n * Indicates that the scene is still in prepare-state and not ready yet.\n * @property preparing\n * @type boolean\n ###\n @preparing = yes\n \n ###*\n * The behavior-component for the VN scene specific behavior.\n * @property behavior\n * @type gs.Component_GameSceneBehavior\n ###\n @behavior = new vn.Component_GameSceneBehavior()\n \n ###*\n * An interpreter to execute the commands of scene.\n * @property interpreter\n * @type gs.Component_CommandInterpreter\n ###\n @interpreter = new gs.Component_CommandInterpreter()\n \n ###*\n * An event-emitter to emit events.\n * @property events\n * @type gs.Component_EventEmitter\n ###\n @events = new gs.Component_EventEmitter()\n \n ###*\n * Contains all background objects of the scene.\n * @property backgroundContainer\n * @type gs.Object_Container\n ###\n @backgroundContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all character objects of the scene.\n * @property characterContainer\n * @type gs.Object_Container\n ###\n @characterContainer = new gs.Object_Container(gs.ContainerDisposeBehavior.REMOVE)\n \n ###*\n * Contains all picture objects of the scene.\n * @property pictureContainer\n * @type gs.Object_Container\n ###\n @pictureContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all video objects of the scene.\n * @property videoContainer\n * @type gs.Object_Container\n ###\n @videoContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all text objects of the scene.\n * @property textContainer\n * @type gs.Object_Container\n ###\n @textContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all hotspot objects of the scene.\n * @property hotspotContainer\n * @type gs.Object_Container\n ###\n @hotspotContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all common events which are running parallel/auto to the scene.\n * @property commonEventContainer\n * @type gs.Object_Container\n ###\n @commonEventContainer = new gs.Object_Container(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all viewports which are used to create multi-layered screen effects.\n * @property viewportContainer\n * @type gs.Object_Container\n ###\n @viewportContainer = new gs.Object_Container(gs.ContainerDisposeBehavior.REMOVE)\n \n ###*\n * Contains all interval timers.\n * @property timerContainer\n * @type gs.Object_Container\n ###\n @timerContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all message areas of the scene.\n * @property messageAreaContainer\n * @type gs.Object_Container\n ###\n @messageAreaContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n @characterContainer.visible = yes\n \n ###*\n * All picture objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property pictures\n * @type gs.Object_Picture[]\n * @readOnly\n ###\n @pictures = @pictureContainer.subObjects\n \n ###*\n * All video objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property videos\n * @type gs.Object_Video[]\n * @readOnly\n ###\n @videos = @videoContainer.subObjects\n \n ###*\n * All text objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property texts\n * @type gs.Object_Text[]\n * @readOnly\n ###\n @texts = @textContainer.subObjects\n \n ###*\n * All character objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property characters\n * @type gs.Object_Character[]\n * @readOnly\n ###\n @characters = @characterContainer.subObjects\n \n ###*\n * All backgrounds as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property backgrounds\n * @type gs.Object_Background[]\n * @readOnly\n ###\n @backgrounds = @backgroundContainer.subObjects\n \n ###*\n * All hotspot objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property hotspots\n * @type gs.Object_Hotspot[]\n * @readOnly\n ###\n @hotspots = @hotspotContainer.subObjects\n \n ###*\n * All interval timer objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property timers\n * @type gs.Object_IntervalTimer[]\n * @readOnly\n ###\n @timers = @timerContainer.subObjects\n \n ###*\n * All message areas as array.\n * @property messageAreas\n * @type vn.MessageArea[]\n * @readOnly\n ###\n @messageAreas = @messageAreaContainer.subObjects\n \n \n ###*\n * A timer object used for choices with time-limit.\n * @property choiceTimer\n * @type gs.Object_Timer\n ###\n @choiceTimer = new gs.Object_Timer()\n \n ###*\n * Indicates if the UI layout is visible.\n * @property visible\n * @type boolean\n ###\n @visible = yes\n \n ###*\n * @property visible_\n * @type boolean\n * @protected\n ###\n @visible_ = yes\n \n ###*\n * The game settings.\n * @property settings\n * @type Object\n ###\n @settings = GameManager.settings\n \n ###*\n * Temporary settings like skip, etc.\n * @property tempSettings\n * @type Object\n ###\n @tempSettings = GameManager.settings\n \n ###*\n * Contains all data necessary to construct the scene.\n * @property sceneData\n * @type Object\n ###\n @sceneData = GameManager.sceneData\n \n @addObject(@backgroundContainer)\n @addObject(@characterContainer)\n @addObject(@pictureContainer)\n @addObject(@textContainer)\n @addObject(@videoContainer)\n @addObject(@hotspotContainer)\n @addObject(@viewportContainer)\n @addObject(@commonEventContainer)\n @addObject(@timerContainer)\n @addObject(@choiceTimer)\n @addObject(@messageAreaContainer)\n \n \n @addComponent(new gs.Component_InputHandler())\n @addComponent(@behavior)\n @addComponent(@interpreter)\n \n \nvn.Object_Scene = Object_Scene",
9 + "content": "# ===================================================================\n#\n# Script: Object_Scene\n#\n# $$COPYRIGHT$$\n#\n# ===================================================================\nclass Object_Scene extends gs.Object_Base\n # @objectCodecBlackList = [\"parent\", \"subObjects\", \"preparing\", \"behavior\", \"interpreter\", \"events\", \"sceneData\",\n # \"characterContainer\", \"pictureContainer\", \"textContainer\", \"videoContainer\", \"messageAreas\", \"hotspotContainer\", \"commonEventContainer\",\n # \"pictures\", \"texts\", \"videos\", \"messageAreas\", \"hotspots\", \"commonEvents\", \"layout\", \"layoutNVL\"]\n \n @accessors \"visible\", \n set: (v) -> \n if v != @visible_\n @visible_ = v\n @needsUpdate = yes\n @fullRefresh()\n \n get: -> @visible_ and (!@parent or @parent.visible)\n \n ###*\n * A scene object manages a whole visual novel scene with backgrounds, characters,\n * messages, etc.\n *\n * @module vn\n * @class Object_Scene\n * @extends gs.Object_Base\n * @memberof vn\n * @constructor\n ### \n constructor: ->\n super()\n \n ###*\n * Indicates that the scene is still in prepare-state and not ready yet.\n * @property preparing\n * @type boolean\n ###\n @preparing = yes\n \n ###*\n * The behavior-component for the VN scene specific behavior.\n * @property behavior\n * @type gs.Component_GameSceneBehavior\n ###\n @behavior = new vn.Component_GameSceneBehavior()\n \n ###*\n * An interpreter to execute the commands of scene.\n * @property interpreter\n * @type gs.Component_CommandInterpreter\n ###\n @interpreter = new gs.Component_CommandInterpreter()\n \n ###*\n * An event-emitter to emit events.\n * @property events\n * @type gs.Component_EventEmitter\n ###\n @events = new gs.Component_EventEmitter()\n \n ###*\n * Contains all background objects of the scene.\n * @property backgroundContainer\n * @type gs.Object_Container\n ###\n @backgroundContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all character objects of the scene.\n * @property characterContainer\n * @type gs.Object_Container\n ###\n @characterContainer = new gs.Object_Container(gs.ContainerDisposeBehavior.REMOVE)\n \n ###*\n * Contains all picture objects of the scene.\n * @property pictureContainer\n * @type gs.Object_Container\n ###\n @pictureContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all video objects of the scene.\n * @property videoContainer\n * @type gs.Object_Container\n ###\n @videoContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all text objects of the scene.\n * @property textContainer\n * @type gs.Object_Container\n ###\n @textContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all hotspot objects of the scene.\n * @property hotspotContainer\n * @type gs.Object_Container\n ###\n @hotspotContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all common events which are running parallel/auto to the scene.\n * @property commonEventContainer\n * @type gs.Object_Container\n ###\n @commonEventContainer = new gs.Object_Container(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all viewports which are used to create multi-layered screen effects.\n * @property viewportContainer\n * @type gs.Object_Container\n ###\n @viewportContainer = new gs.Object_Container(gs.ContainerDisposeBehavior.REMOVE)\n \n ###*\n * Contains all interval timers.\n * @property timerContainer\n * @type gs.Object_Container\n ###\n @timerContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n ###*\n * Contains all message areas of the scene.\n * @property messageAreaContainer\n * @type gs.Object_Container\n ###\n @messageAreaContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL)\n \n @characterContainer.visible = yes\n \n ###*\n * All picture objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property pictures\n * @type gs.Object_Picture[]\n * @readOnly\n ###\n @pictures = @pictureContainer.subObjects\n \n ###*\n * All video objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property videos\n * @type gs.Object_Video[]\n * @readOnly\n ###\n @videos = @videoContainer.subObjects\n \n ###*\n * All text objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property texts\n * @type gs.Object_Text[]\n * @readOnly\n ###\n @texts = @textContainer.subObjects\n \n ###*\n * All character objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property characters\n * @type gs.Object_Character[]\n * @readOnly\n ###\n @characters = @characterContainer.subObjects\n \n ###*\n * All backgrounds as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property backgrounds\n * @type gs.Object_Background[]\n * @readOnly\n ###\n @backgrounds = @backgroundContainer.subObjects\n \n ###*\n * All hotspot objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property hotspots\n * @type gs.Object_Hotspot[]\n * @readOnly\n ###\n @hotspots = @hotspotContainer.subObjects\n \n ###*\n * All interval timer objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property timers\n * @type gs.Object_IntervalTimer[]\n * @readOnly\n ###\n @timers = @timerContainer.subObjects\n \n ###*\n * All message areas as array.\n * @property messageAreas\n * @type vn.MessageArea[]\n * @readOnly\n ###\n @messageAreas = @messageAreaContainer.subObjects\n \n ###*\n * The current list of choices which should be displayed\n * on the screen. New choices are usually added using\n * Add Choice command in Scene Editor before all choices are\n * displayed via Show Choices command.\n * @property choices\n * @type vn.Choice[]\n ###\n @choices = []\n \n ###*\n * A timer object used for choices with time-limit.\n * @property choiceTimer\n * @type gs.Object_Timer\n ###\n @choiceTimer = new gs.Object_Timer()\n \n ###*\n * Indicates if the UI layout is visible.\n * @property visible\n * @type boolean\n ###\n @visible = yes\n \n ###*\n * @property visible_\n * @type boolean\n * @protected\n ###\n @visible_ = yes\n \n ###*\n * The game settings.\n * @property settings\n * @type Object\n ###\n @settings = GameManager.settings\n \n ###*\n * Temporary settings like skip, etc.\n * @property tempSettings\n * @type Object\n ###\n @tempSettings = GameManager.tempSettings\n \n ###*\n * Contains all data necessary to construct the scene.\n * @property sceneData\n * @type Object\n ###\n @sceneData = GameManager.sceneData\n \n @addObject(@backgroundContainer)\n @addObject(@characterContainer)\n @addObject(@pictureContainer)\n @addObject(@textContainer)\n @addObject(@videoContainer)\n @addObject(@hotspotContainer)\n @addObject(@viewportContainer)\n @addObject(@commonEventContainer)\n @addObject(@timerContainer)\n @addObject(@choiceTimer)\n @addObject(@messageAreaContainer)\n \n \n @addComponent(new gs.Component_InputHandler())\n @addComponent(@behavior)\n @addComponent(@interpreter)\n \n \nvn.Object_Scene = Object_Scene",
10 10 "parentId": "A05E7029K45DBA459BSADF4EEC07A526241A",
11 11 "folder": false,
12 - "compiledContent": "var Object_Scene,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\nObject_Scene = (function(superClass) {\n extend(Object_Scene, superClass);\n\n Object_Scene.accessors(\"visible\", {\n set: function(v) {\n if (v !== this.visible_) {\n this.visible_ = v;\n this.needsUpdate = true;\n return this.fullRefresh();\n }\n },\n get: function() {\n return this.visible_ && (!this.parent || this.parent.visible);\n }\n });\n\n\n /**\n * A scene object manages a whole visual novel scene with backgrounds, characters,\n * messages, etc.\n *\n * @module vn\n * @class Object_Scene\n * @extends gs.Object_Base\n * @memberof vn\n * @constructor\n */\n\n function Object_Scene() {\n Object_Scene.__super__.constructor.call(this);\n\n /**\n * Indicates that the scene is still in prepare-state and not ready yet.\n * @property preparing\n * @type boolean\n */\n this.preparing = true;\n\n /**\n * The behavior-component for the VN scene specific behavior.\n * @property behavior\n * @type gs.Component_GameSceneBehavior\n */\n this.behavior = new vn.Component_GameSceneBehavior();\n\n /**\n * An interpreter to execute the commands of scene.\n * @property interpreter\n * @type gs.Component_CommandInterpreter\n */\n this.interpreter = new gs.Component_CommandInterpreter();\n\n /**\n * An event-emitter to emit events.\n * @property events\n * @type gs.Component_EventEmitter\n */\n this.events = new gs.Component_EventEmitter();\n\n /**\n * Contains all background objects of the scene.\n * @property backgroundContainer\n * @type gs.Object_Container\n */\n this.backgroundContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all character objects of the scene.\n * @property characterContainer\n * @type gs.Object_Container\n */\n this.characterContainer = new gs.Object_Container(gs.ContainerDisposeBehavior.REMOVE);\n\n /**\n * Contains all picture objects of the scene.\n * @property pictureContainer\n * @type gs.Object_Container\n */\n this.pictureContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all video objects of the scene.\n * @property videoContainer\n * @type gs.Object_Container\n */\n this.videoContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all text objects of the scene.\n * @property textContainer\n * @type gs.Object_Container\n */\n this.textContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all hotspot objects of the scene.\n * @property hotspotContainer\n * @type gs.Object_Container\n */\n this.hotspotContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all common events which are running parallel/auto to the scene.\n * @property commonEventContainer\n * @type gs.Object_Container\n */\n this.commonEventContainer = new gs.Object_Container(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all viewports which are used to create multi-layered screen effects.\n * @property viewportContainer\n * @type gs.Object_Container\n */\n this.viewportContainer = new gs.Object_Container(gs.ContainerDisposeBehavior.REMOVE);\n\n /**\n * Contains all interval timers.\n * @property timerContainer\n * @type gs.Object_Container\n */\n this.timerContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all message areas of the scene.\n * @property messageAreaContainer\n * @type gs.Object_Container\n */\n this.messageAreaContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n this.characterContainer.visible = true;\n\n /**\n * All picture objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property pictures\n * @type gs.Object_Picture[]\n * @readOnly\n */\n this.pictures = this.pictureContainer.subObjects;\n\n /**\n * All video objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property videos\n * @type gs.Object_Video[]\n * @readOnly\n */\n this.videos = this.videoContainer.subObjects;\n\n /**\n * All text objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property texts\n * @type gs.Object_Text[]\n * @readOnly\n */\n this.texts = this.textContainer.subObjects;\n\n /**\n * All character objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property characters\n * @type gs.Object_Character[]\n * @readOnly\n */\n this.characters = this.characterContainer.subObjects;\n\n /**\n * All backgrounds as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property backgrounds\n * @type gs.Object_Background[]\n * @readOnly\n */\n this.backgrounds = this.backgroundContainer.subObjects;\n\n /**\n * All hotspot objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property hotspots\n * @type gs.Object_Hotspot[]\n * @readOnly\n */\n this.hotspots = this.hotspotContainer.subObjects;\n\n /**\n * All interval timer objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property timers\n * @type gs.Object_IntervalTimer[]\n * @readOnly\n */\n this.timers = this.timerContainer.subObjects;\n\n /**\n * All message areas as array.\n * @property messageAreas\n * @type vn.MessageArea[]\n * @readOnly\n */\n this.messageAreas = this.messageAreaContainer.subObjects;\n\n /**\n * A timer object used for choices with time-limit.\n * @property choiceTimer\n * @type gs.Object_Timer\n */\n this.choiceTimer = new gs.Object_Timer();\n\n /**\n * Indicates if the UI layout is visible.\n * @property visible\n * @type boolean\n */\n this.visible = true;\n\n /**\n * @property visible_\n * @type boolean\n * @protected\n */\n this.visible_ = true;\n\n /**\n * The game settings.\n * @property settings\n * @type Object\n */\n this.settings = GameManager.settings;\n\n /**\n * Temporary settings like skip, etc.\n * @property tempSettings\n * @type Object\n */\n this.tempSettings = GameManager.settings;\n\n /**\n * Contains all data necessary to construct the scene.\n * @property sceneData\n * @type Object\n */\n this.sceneData = GameManager.sceneData;\n this.addObject(this.backgroundContainer);\n this.addObject(this.characterContainer);\n this.addObject(this.pictureContainer);\n this.addObject(this.textContainer);\n this.addObject(this.videoContainer);\n this.addObject(this.hotspotContainer);\n this.addObject(this.viewportContainer);\n this.addObject(this.commonEventContainer);\n this.addObject(this.timerContainer);\n this.addObject(this.choiceTimer);\n this.addObject(this.messageAreaContainer);\n this.addComponent(new gs.Component_InputHandler());\n this.addComponent(this.behavior);\n this.addComponent(this.interpreter);\n }\n\n return Object_Scene;\n\n})(gs.Object_Base);\n\nvn.Object_Scene = Object_Scene;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUEsWUFBQTtFQUFBOzs7QUFBTTs7O0VBS0YsWUFBQyxDQUFBLFNBQUQsQ0FBVyxTQUFYLEVBQ0k7SUFBQSxHQUFBLEVBQUssU0FBQyxDQUFEO01BQ0QsSUFBRyxDQUFBLEtBQUssSUFBQyxDQUFBLFFBQVQ7UUFDSSxJQUFDLENBQUEsUUFBRCxHQUFZO1FBQ1osSUFBQyxDQUFBLFdBQUQsR0FBZTtlQUNmLElBQUMsQ0FBQSxXQUFELENBQUEsRUFISjs7SUFEQyxDQUFMO0lBTUEsR0FBQSxFQUFLLFNBQUE7YUFBRyxJQUFDLENBQUEsUUFBRCxJQUFjLENBQUMsQ0FBQyxJQUFDLENBQUEsTUFBRixJQUFZLElBQUMsQ0FBQSxNQUFNLENBQUMsT0FBckI7SUFBakIsQ0FOTDtHQURKOzs7QUFTQTs7Ozs7Ozs7Ozs7RUFVYSxzQkFBQTtJQUNULDRDQUFBOztBQUVBOzs7OztJQUtBLElBQUMsQ0FBQSxTQUFELEdBQWE7O0FBRWI7Ozs7O0lBS0EsSUFBQyxDQUFBLFFBQUQsR0FBZ0IsSUFBQSxFQUFFLENBQUMsMkJBQUgsQ0FBQTs7QUFFaEI7Ozs7O0lBS0EsSUFBQyxDQUFBLFdBQUQsR0FBbUIsSUFBQSxFQUFFLENBQUMsNEJBQUgsQ0FBQTs7QUFFbkI7Ozs7O0lBS0EsSUFBQyxDQUFBLE1BQUQsR0FBYyxJQUFBLEVBQUUsQ0FBQyxzQkFBSCxDQUFBOztBQUVkOzs7OztJQUtBLElBQUMsQ0FBQSxtQkFBRCxHQUEyQixJQUFBLEVBQUUsQ0FBQyxzQkFBSCxDQUEwQixFQUFFLENBQUMsd0JBQXdCLENBQUMsSUFBdEQ7O0FBRTNCOzs7OztJQUtBLElBQUMsQ0FBQSxrQkFBRCxHQUEwQixJQUFBLEVBQUUsQ0FBQyxnQkFBSCxDQUFvQixFQUFFLENBQUMsd0JBQXdCLENBQUMsTUFBaEQ7O0FBRTFCOzs7OztJQUtBLElBQUMsQ0FBQSxnQkFBRCxHQUF3QixJQUFBLEVB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QSxvQkFBWjtJQUNBLElBQUMsQ0FBQSxTQUFELENBQVcsSUFBQyxDQUFBLGNBQVo7SUFDQSxJQUFDLENBQUEsU0FBRCxDQUFXLElBQUMsQ0FBQSxXQUFaO0lBQ0EsSUFBQyxDQUFBLFNBQUQsQ0FBVyxJQUFDLENBQUEsb0JBQVo7SUFHQSxJQUFDLENBQUEsWUFBRCxDQUFrQixJQUFBLEVBQUUsQ0FBQyxzQkFBSCxDQUFBLENBQWxCO0lBQ0EsSUFBQyxDQUFBLFlBQUQsQ0FBYyxJQUFDLENBQUEsUUFBZjtJQUNBLElBQUMsQ0FBQSxZQUFELENBQWMsSUFBQyxDQUFBLFdBQWY7RUF4T1M7Ozs7R0F4QlUsRUFBRSxDQUFDOztBQW1ROUIsRUFBRSxDQUFDLFlBQUgsR0FBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiNcbiMgICBTY3JpcHQ6IE9iamVjdF9TY2VuZVxuI1xuIyAgICQkQ09QWVJJR0hUJCRcbiNcbiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuY2xhc3MgT2JqZWN0X1NjZW5lIGV4dGVuZHMgZ3MuT2JqZWN0X0Jhc2VcbiAgIyAgQG9iamVjdENvZGVjQmxhY2tMaXN0ID0gW1wicGFyZW50XCIsIFwic3ViT2JqZWN0c1wiLCBcInByZXBhcmluZ1wiLCBcImJlaGF2aW9yXCIsIFwiaW50ZXJwcmV0ZXJcIiwgXCJldmVudHNcIiwgXCJzY2VuZURhdGFcIixcbiAgIyAgXCJjaGFyYWN0ZXJDb250YWluZXJcIiwgXCJwaWN0dXJlQ29udGFpbmVyXCIsIFwidGV4dENvbnRhaW5lclwiLCBcInZpZGVvQ29udGFpbmVyXCIsIFwibWVzc2FnZUFyZWFzXCIsIFwiaG90c3BvdENvbnRhaW5lclwiLCBcImNvbW1vbkV2ZW50Q29udGFpbmVyXCIsXG4gICMgIFwicGljdHVyZXNcIiwgXCJ0ZXh0c1wiLCBcInZpZGVvc1wiLCBcIm1lc3NhZ2VBcmVhc1wiLCBcImhvdHNwb3RzXCIsIFwiY29tbW9uRXZlbnRzXCIsIFwibGF5b3V0XCIsIFwibGF5b3V0TlZMXCJdXG4gICAgXG4gICAgQGFjY2Vzc29ycyBcInZpc2libGVcIiwgXG4gICAgICAgIHNldDogKHYpIC0+IFxuICAgICAgICAgICAgaWYgdiAhPSBAdmlzaWJsZV9cbiAgICAgICAgICAgICAgICBAdmlzaWJsZV8gPSB2XG4gICAgICAgICAgICAgICAgQG5lZWRzVXBkYXRlID0geWVzXG4gICAgICAgICAgICAgICAgQGZ1bGxSZWZyZXNoKClcbiAgICAgICAgICAgIFxuICAgICAgICBnZXQ6IC0+IEB2aXNpYmxlXyBhbmQgKCFAcGFyZW50IG9yIEBwYXJlbnQudmlzaWJsZSlcbiAgICBcbiAgICAjIyMqXG4gICAgKiBBIHNjZW5lIG9iamVjdCBtYW5hZ2VzIGEgd2hvbGUgdmlzdWFsIG5vdmVsIHNjZW5lIHdpdGggYmFja2dyb3VuZHMsIGNoYXJhY3RlcnMsXG4gICAgKiBtZXNzYWdlcywgZXRjLlxuICAgICpcbiAgICAqIEBtb2R1bGUgdm5cbiAgICAqIEBjbGFzcyBPYmplY3RfU2NlbmVcbiAgICAqIEBleHRlbmRzIGdzLk9iamVjdF9CYXNlXG4gICAgKiBAbWVtYmVyb2Ygdm5cbiAgICAqIEBjb25zdHJ1Y3RvclxuICAgICMjIyAgICBcbiAgICBjb25zdHJ1Y3RvcjogLT5cbiAgICAgICAgc3VwZXIoKVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSBzY2VuZSBpcyBzdGlsbCBpbiBwcmVwYXJlLXN0YXRlIGFuZCBub3QgcmVhZHkgeWV0LlxuICAgICAgICAqIEBwcm9wZXJ0eSBwcmVwYXJpbmdcbiAgICAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICAgICMjI1xuICAgICAgICBAcHJlcGFyaW5nID0geWVzXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogVGhlIGJlaGF2aW9yLWNvbXBvbmVudCBmb3IgdGhlIFZOIHNjZW5lIHNwZWNpZmljIGJlaGF2aW9yLlxuICAgICAgICAqIEBwcm9wZXJ0eSBiZWhhdmlvclxuICAgICAgICAqIEB0eXBlIGdzLkNvbXBvbmVudF9HYW1lU2NlbmVCZWhhdmlvclxuICAgICAgICAjIyNcbiAgICAgICAgQGJlaGF2aW9yID0gbmV3IHZuLkNvbXBvbmVudF9HYW1lU2NlbmVCZWhhdmlvcigpXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQW4gaW50ZXJwcmV0ZXIgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZHMgb2Ygc2NlbmUuXG4gICAgICAgICogQHByb3BlcnR5IGludGVycHJldGVyXG4gICAgICAgICogQHR5cGUgZ3MuQ29tcG9uZW50X0NvbW1hbmRJbnRlcnByZXRlclxuICAgICAgICAjIyNcbiAgICAgICAgQGludGVycHJldGVyID0gbmV3IGdzLkNvbXBvbmVudF9Db21tYW5kSW50ZXJwcmV0ZXIoKVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEFuIGV2ZW50LWVtaXR0ZXIgdG8gZW1pdCBldmVudHMuXG4gICAgICAgICogQHByb3BlcnR5IGV2ZW50c1xuICAgICAgICAqIEB0eXBlIGdzLkNvbXBvbmVudF9FdmVudEVtaXR0ZXJcbiAgICAgICAgIyMjXG4gICAgICAgIEBldmVudHMgPSBuZXcgZ3MuQ29tcG9uZW50X0V2ZW50RW1pdHRlcigpXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQ29udGFpbnMgYWxsIGJhY2tncm91bmQgb2JqZWN0cyBvZiB0aGUgc2NlbmUuXG4gICAgICAgICogQHByb3BlcnR5IGJhY2tncm91bmRDb250YWluZXJcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfQ29udGFpbmVyXG4gICAgICAgICMjI1xuICAgICAgICBAYmFja2dyb3VuZENvbnRhaW5lciA9IG5ldyBncy5PYmplY3RfRG9tYWluQ29udGFpbmVyKGdzLkNvbnRhaW5lckRpc3Bvc2VCZWhhdmlvci5OVUxMKVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIENvbnRhaW5zIGFsbCBjaGFyYWN0ZXIgb2JqZWN0cyBvZiB0aGUgc2NlbmUuXG4gICAgICAgICogQHByb3BlcnR5IGNoYXJhY3RlckNvbnRhaW5lclxuICAgICAgICAqIEB0eXBlIGdzLk9iamVjdF9Db250YWluZXJcbiAgICAgICAgIyMjXG4gICAgICAgIEBjaGFyYWN0ZXJDb250YWluZXIgPSBuZXcgZ3MuT2JqZWN0X0NvbnRhaW5lcihncy5Db250YWluZXJEaXNwb3NlQmVoYXZpb3IuUkVNT1ZFKVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIENvbnRhaW5zIGFsbCBwaWN0dXJlIG9iamVjdHMgb2YgdGhlIHNjZW5lLlxuICAgICAgICAqIEBwcm9wZXJ0eSBwaWN0dXJlQ29udGFpbmVyXG4gICAgICAgICogQHR5cGUgZ3MuT2JqZWN0X0NvbnRhaW5lclxuICAgICAgICAjIyNcbiAgICAgICAgQHBpY3R1cmVDb250YWluZXIgPSBuZXcgZ3MuT2JqZWN0X0RvbWFpbkNvbnRhaW5lcihncy5Db250YWluZXJEaXNwb3NlQmVoYXZpb3IuTlVMTClcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBDb250YWlucyBhbGwgdmlkZW8gb2JqZWN0cyBvZiB0aGUgc2NlbmUuXG4gICAgICAgICogQHByb3BlcnR5IHZpZGVvQ29udGFpbmVyXG4gICAgICAgICogQHR5cGUgZ3MuT2JqZWN0X0NvbnRhaW5lclxuICAgICAgICAjIyNcbiAgICAgICAgQHZpZGVvQ29udGFpbmVyID0gbmV3IGdzLk9iamVjdF9Eb21haW5Db250YWluZXIoZ3MuQ29udGFpbmVyRGlzcG9zZUJlaGF2aW9yLk5VTEwpXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQ29udGFpbnMgYWxsIHRleHQgb2JqZWN0cyBvZiB0aGUgc2NlbmUuXG4gICAgICAgICogQHByb3BlcnR5IHRleHRDb250YWluZXJcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfQ29udGFpbmVyXG4gICAgICAgICMjI1xuICAgICAgICBAdGV4dENvbnRhaW5lciA9IG5ldyBncy5PYmplY3RfRG9tYWluQ29udGFpbmVyKGdzLkNvbnRhaW5lckRpc3Bvc2VCZWhhdmlvci5OVUxMKVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIENvbnRhaW5zIGFsbCBob3RzcG90IG9iamVjdHMgb2YgdGhlIHNjZW5lLlxuICAgICAgICAqIEBwcm9wZXJ0eSBob3RzcG90Q29udGFpbmVyXG4gICAgICAgICogQHR5cGUgZ3MuT2JqZWN0X0NvbnRhaW5lclxuICAgICAgICAjIyNcbiAgICAgICAgQGhvdHNwb3RDb250YWluZXIgPSBuZXcgZ3MuT2JqZWN0X0RvbWFpbkNvbnRhaW5lcihncy5Db250YWluZXJEaXNwb3NlQmVoYXZpb3IuTlVMTClcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBDb250YWlucyBhbGwgY29tbW9uIGV2ZW50cyB3aGljaCBhcmUgcnVubmluZyBwYXJhbGxlbC9hdXRvIHRvIHRoZSBzY2VuZS5cbiAgICAgICAgKiBAcHJvcGVydHkgY29tbW9uRXZlbnRDb250YWluZXJcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfQ29udGFpbmVyXG4gICAgICAgICMjI1xuICAgICAgICBAY29tbW9uRXZlbnRDb250YWluZXIgPSBuZXcgZ3MuT2JqZWN0X0NvbnRhaW5lcihncy5Db250YWluZXJEaXNwb3NlQmVoYXZpb3IuTlVMTClcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBDb250YWlucyBhbGwgdmlld3BvcnRzIHdoaWNoIGFyZSB1c2VkIHRvIGNyZWF0ZSBtdWx0aS1sYXllcmVkIHNjcmVlbiBlZmZlY3RzLlxuICAgICAgICAqIEBwcm9wZXJ0eSB2aWV3cG9ydENvbnRhaW5lclxuICAgICAgICAqIEB0eXBlIGdzLk9iamVjdF9Db250YWluZXJcbiAgICAgICAgIyMjXG4gICAgICAgIEB2aWV3cG9ydENvbnRhaW5lciA9IG5ldyBncy5PYmplY3RfQ29udGFpbmVyKGdzLkNvbnRhaW5lckRpc3Bvc2VCZWhhdmlvci5SRU1PVkUpXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQ29udGFpbnMgYWxsIGludGVydmFsIHRpbWVycy5cbiAgICAgICAgKiBAcHJvcGVydHkgdGltZXJDb250YWluZXJcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfQ29udGFpbmVyXG4gICAgICAgICMjI1xuICAgICAgICBAdGltZXJDb250YWluZXIgPSBuZXcgZ3MuT2JqZWN0X0RvbWFpbkNvbnRhaW5lcihncy5Db250YWluZXJEaXNwb3NlQmVoYXZpb3IuTlVMTClcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBDb250YWlucyBhbGwgbWVzc2FnZSBhcmVhcyBvZiB0aGUgc2NlbmUuXG4gICAgICAgICogQHByb3BlcnR5IG1lc3NhZ2VBcmVhQ29udGFpbmVyXG4gICAgICAgICogQHR5cGUgZ3MuT2JqZWN0X0NvbnRhaW5lclxuICAgICAgICAjIyNcbiAgICAgICAgQG1lc3NhZ2VBcmVhQ29udGFpbmVyID0gbmV3IGdzLk9iamVjdF9Eb21haW5Db250YWluZXIoZ3MuQ29udGFpbmVyRGlzcG9zZUJlaGF2aW9yLk5VTEwpXG4gICAgICAgIFxuICAgICAgICBAY2hhcmFjdGVyQ29udGFpbmVyLnZpc2libGUgPSB5ZXNcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBBbGwgcGljdHVyZSBvYmplY3RzIGFzIGFycmF5LiBUaGF0IGlzIHRoZSBzYW1lIGxpa2UgYWNjZXNzaW5nIHRoZSA8Yj5zdWJPYmplY3RzPC9iPiBvZiB0aGVcbiAgICAgICAgKiBjb250YWluZXIgb2JqZWN0LlxuICAgICAgICAqIEBwcm9wZXJ0eSBwaWN0dXJlc1xuICAgICAgICAqIEB0eXBlIGdzLk9iamVjdF9QaWN0dXJlW11cbiAgICAgICAgKiBAcmVhZE9ubHlcbiAgICAgICAgIyMjXG4gICAgICAgIEBwaWN0dXJlcyA9IEBwaWN0dXJlQ29udGFpbmVyLnN1Yk9iamVjdHNcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBBbGwgdmlkZW8gb2JqZWN0cyBhcyBhcnJheS4gVGhhdCBpcyB0aGUgc2FtZSBsaWtlIGFjY2Vzc2luZyB0aGUgPGI+c3ViT2JqZWN0czwvYj4gb2YgdGhlXG4gICAgICAgICogY29udGFpbmVyIG9iamVjdC5cbiAgICAgICAgKiBAcHJvcGVydHkgdmlkZW9zXG4gICAgICAgICogQHR5cGUgZ3MuT2JqZWN0X1ZpZGVvW11cbiAgICAgICAgKiBAcmVhZE9ubHlcbiAgICAgICAgIyMjXG4gICAgICAgIEB2aWRlb3MgPSBAdmlkZW9Db250YWluZXIuc3ViT2JqZWN0c1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEFsbCB0ZXh0IG9iamVjdHMgYXMgYXJyYXkuIFRoYXQgaXMgdGhlIHNhbWUgbGlrZSBhY2Nlc3NpbmcgdGhlIDxiPnN1Yk9iamVjdHM8L2I+IG9mIHRoZVxuICAgICAgICAqIGNvbnRhaW5lciBvYmplY3QuXG4gICAgICAgICogQHByb3BlcnR5IHRleHRzXG4gICAgICAgICogQHR5cGUgZ3MuT2JqZWN0X1RleHRbXVxuICAgICAgICAqIEByZWFkT25seVxuICAgICAgICAjIyNcbiAgICAgICAgQHRleHRzID0gQHRleHRDb250YWluZXIuc3ViT2JqZWN0c1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEFsbCBjaGFyYWN0ZXIgb2JqZWN0cyBhcyBhcnJheS4gVGhhdCBpcyB0aGUgc2FtZSBsaWtlIGFjY2Vzc2luZyB0aGUgPGI+c3ViT2JqZWN0czwvYj4gb2YgdGhlXG4gICAgICAgICogY29udGFpbmVyIG9iamVjdC5cbiAgICAgICAgKiBAcHJvcGVydHkgY2hhcmFjdGVyc1xuICAgICAgICAqIEB0eXBlIGdzLk9iamVjdF9DaGFyYWN0ZXJbXVxuICAgICAgICAqIEByZWFkT25seVxuICAgICAgICAjIyNcbiAgICAgICAgQGNoYXJhY3RlcnMgPSBAY2hhcmFjdGVyQ29udGFpbmVyLnN1Yk9iamVjdHNcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBBbGwgYmFja2dyb3VuZHMgYXMgYXJyYXkuIFRoYXQgaXMgdGhlIHNhbWUgbGlrZSBhY2Nlc3NpbmcgdGhlIDxiPnN1Yk9iamVjdHM8L2I+IG9mIHRoZVxuICAgICAgICAqIGNvbnRhaW5lciBvYmplY3QuXG4gICAgICAgICogQHByb3BlcnR5IGJhY2tncm91bmRzXG4gICAgICAgICogQHR5cGUgZ3MuT2JqZWN0X0JhY2tncm91bmRbXVxuICAgICAgICAqIEByZWFkT25seVxuICAgICAgICAjIyNcbiAgICAgICAgQGJhY2tncm91bmRzID0gQGJhY2tncm91bmRDb250YWluZXIuc3ViT2JqZWN0c1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEFsbCBob3RzcG90IG9iamVjdHMgYXMgYXJyYXkuIFRoYXQgaXMgdGhlIHNhbWUgbGlrZSBhY2Nlc3NpbmcgdGhlIDxiPnN1Yk9iamVjdHM8L2I+IG9mIHRoZVxuICAgICAgICAqIGNvbnRhaW5lciBvYmplY3QuXG4gICAgICAgICogQHByb3BlcnR5IGhvdHNwb3RzXG4gICAgICAgICogQHR5cGUgZ3MuT2JqZWN0X0hvdHNwb3RbXVxuICAgICAgICAqIEByZWFkT25seVxuICAgICAgICAjIyNcbiAgICAgICAgQGhvdHNwb3RzID0gQGhvdHNwb3RDb250YWluZXIuc3ViT2JqZWN0c1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEFsbCBpbnRlcnZhbCB0aW1lciBvYmplY3RzIGFzIGFycmF5LiBUaGF0IGlzIHRoZSBzYW1lIGxpa2UgYWNjZXNzaW5nIHRoZSA8Yj5zdWJPYmplY3RzPC9iPiBvZiB0aGVcbiAgICAgICAgKiBjb250YWluZXIgb2JqZWN0LlxuICAgICAgICAqIEBwcm9wZXJ0eSB0aW1lcnNcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfSW50ZXJ2YWxUaW1lcltdXG4gICAgICAgICogQHJlYWRPbmx5XG4gICAgICAgICMjI1xuICAgICAgICBAdGltZXJzID0gQHRpbWVyQ29udGFpbmVyLnN1Yk9iamVjdHNcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBBbGwgbWVzc2FnZSBhcmVhcyBhcyBhcnJheS5cbiAgICAgICAgKiBAcHJvcGVydHkgbWVzc2FnZUFyZWFzXG4gICAgICAgICogQHR5cGUgdm4uTWVzc2FnZUFyZWFbXVxuICAgICAgICAqIEByZWFkT25seVxuICAgICAgICAjIyNcbiAgICAgICAgQG1lc3NhZ2VBcmVhcyA9IEBtZXNzYWdlQXJlYUNvbnRhaW5lci5zdWJPYmplY3RzXG4gICAgXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQSB0aW1lciBvYmplY3QgdXNlZCBmb3IgY2hvaWNlcyB3aXRoIHRpbWUtbGltaXQuXG4gICAgICAgICogQHByb3BlcnR5IGNob2ljZVRpbWVyXG4gICAgICAgICogQHR5cGUgZ3MuT2JqZWN0X1RpbWVyXG4gICAgICAgICMjI1xuICAgICAgICBAY2hvaWNlVGltZXIgPSBuZXcgZ3MuT2JqZWN0X1RpbWVyKClcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBJbmRpY2F0ZXMgaWYgdGhlIFVJIGxheW91dCBpcyB2aXNpYmxlLlxuICAgICAgICAqIEBwcm9wZXJ0eSB2aXNpYmxlXG4gICAgICAgICogQHR5cGUgYm9vbGVhblxuICAgICAgICAjIyNcbiAgICAgICAgQHZpc2libGUgPSB5ZXNcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBAcHJvcGVydHkgdmlzaWJsZV9cbiAgICAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICAgICogQHByb3RlY3RlZFxuICAgICAgICAjIyNcbiAgICAgICAgQHZpc2libGVfID0geWVzXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogVGhlIGdhbWUgc2V0dGluZ3MuXG4gICAgICAgICogQHByb3BlcnR5IHNldHRpbmdzXG4gICAgICAgICogQHR5cGUgT2JqZWN0XG4gICAgICAgICMjI1xuICAgICAgICBAc2V0dGluZ3MgPSBHYW1lTWFuYWdlci5zZXR0aW5nc1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIFRlbXBvcmFyeSBzZXR0aW5ncyBsaWtlIHNraXAsIGV0Yy5cbiAgICAgICAgKiBAcHJvcGVydHkgdGVtcFNldHRpbmdzXG4gICAgICAgICogQHR5cGUgT2JqZWN0XG4gICAgICAgICMjI1xuICAgICAgICBAdGVtcFNldHRpbmdzID0gR2FtZU1hbmFnZXIuc2V0dGluZ3NcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBDb250YWlucyBhbGwgZGF0YSBuZWNlc3NhcnkgdG8gY29uc3RydWN0IHRoZSBzY2VuZS5cbiAgICAgICAgKiBAcHJvcGVydHkgc2NlbmVEYXRhXG4gICAgICAgICogQHR5cGUgT2JqZWN0XG4gICAgICAgICMjI1xuICAgICAgICBAc2NlbmVEYXRhID0gR2FtZU1hbmFnZXIuc2NlbmVEYXRhXG4gICAgICAgIFxuICAgICAgICBAYWRkT2JqZWN0KEBiYWNrZ3JvdW5kQ29udGFpbmVyKVxuICAgICAgICBAYWRkT2JqZWN0KEBjaGFyYWN0ZXJDb250YWluZXIpXG4gICAgICAgIEBhZGRPYmplY3QoQHBpY3R1cmVDb250YWluZXIpXG4gICAgICAgIEBhZGRPYmplY3QoQHRleHRDb250YWluZXIpXG4gICAgICAgIEBhZGRPYmplY3QoQHZpZGVvQ29udGFpbmVyKVxuICAgICAgICBAYWRkT2JqZWN0KEBob3RzcG90Q29udGFpbmVyKVxuICAgICAgICBAYWRkT2JqZWN0KEB2aWV3cG9ydENvbnRhaW5lcilcbiAgICAgICAgQGFkZE9iamVjdChAY29tbW9uRXZlbnRDb250YWluZXIpXG4gICAgICAgIEBhZGRPYmplY3QoQHRpbWVyQ29udGFpbmVyKVxuICAgICAgICBAYWRkT2JqZWN0KEBjaG9pY2VUaW1lcilcbiAgICAgICAgQGFkZE9iamVjdChAbWVzc2FnZUFyZWFDb250YWluZXIpXG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAgQGFkZENvbXBvbmVudChuZXcgZ3MuQ29tcG9uZW50X0lucHV0SGFuZGxlcigpKVxuICAgICAgICBAYWRkQ29tcG9uZW50KEBiZWhhdmlvcilcbiAgICAgICAgQGFkZENvbXBvbmVudChAaW50ZXJwcmV0ZXIpXG4gICAgICAgIFxuICAgICAgICBcbnZuLk9iamVjdF9TY2VuZSA9IE9iamVjdF9TY2VuZSJdfQ==\n//# sourceURL=Object_Scene_151.js"
12 + "compiledContent": "var Object_Scene,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\nObject_Scene = (function(superClass) {\n extend(Object_Scene, superClass);\n\n Object_Scene.accessors(\"visible\", {\n set: function(v) {\n if (v !== this.visible_) {\n this.visible_ = v;\n this.needsUpdate = true;\n return this.fullRefresh();\n }\n },\n get: function() {\n return this.visible_ && (!this.parent || this.parent.visible);\n }\n });\n\n\n /**\n * A scene object manages a whole visual novel scene with backgrounds, characters,\n * messages, etc.\n *\n * @module vn\n * @class Object_Scene\n * @extends gs.Object_Base\n * @memberof vn\n * @constructor\n */\n\n function Object_Scene() {\n Object_Scene.__super__.constructor.call(this);\n\n /**\n * Indicates that the scene is still in prepare-state and not ready yet.\n * @property preparing\n * @type boolean\n */\n this.preparing = true;\n\n /**\n * The behavior-component for the VN scene specific behavior.\n * @property behavior\n * @type gs.Component_GameSceneBehavior\n */\n this.behavior = new vn.Component_GameSceneBehavior();\n\n /**\n * An interpreter to execute the commands of scene.\n * @property interpreter\n * @type gs.Component_CommandInterpreter\n */\n this.interpreter = new gs.Component_CommandInterpreter();\n\n /**\n * An event-emitter to emit events.\n * @property events\n * @type gs.Component_EventEmitter\n */\n this.events = new gs.Component_EventEmitter();\n\n /**\n * Contains all background objects of the scene.\n * @property backgroundContainer\n * @type gs.Object_Container\n */\n this.backgroundContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all character objects of the scene.\n * @property characterContainer\n * @type gs.Object_Container\n */\n this.characterContainer = new gs.Object_Container(gs.ContainerDisposeBehavior.REMOVE);\n\n /**\n * Contains all picture objects of the scene.\n * @property pictureContainer\n * @type gs.Object_Container\n */\n this.pictureContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all video objects of the scene.\n * @property videoContainer\n * @type gs.Object_Container\n */\n this.videoContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all text objects of the scene.\n * @property textContainer\n * @type gs.Object_Container\n */\n this.textContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all hotspot objects of the scene.\n * @property hotspotContainer\n * @type gs.Object_Container\n */\n this.hotspotContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all common events which are running parallel/auto to the scene.\n * @property commonEventContainer\n * @type gs.Object_Container\n */\n this.commonEventContainer = new gs.Object_Container(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all viewports which are used to create multi-layered screen effects.\n * @property viewportContainer\n * @type gs.Object_Container\n */\n this.viewportContainer = new gs.Object_Container(gs.ContainerDisposeBehavior.REMOVE);\n\n /**\n * Contains all interval timers.\n * @property timerContainer\n * @type gs.Object_Container\n */\n this.timerContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n\n /**\n * Contains all message areas of the scene.\n * @property messageAreaContainer\n * @type gs.Object_Container\n */\n this.messageAreaContainer = new gs.Object_DomainContainer(gs.ContainerDisposeBehavior.NULL);\n this.characterContainer.visible = true;\n\n /**\n * All picture objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property pictures\n * @type gs.Object_Picture[]\n * @readOnly\n */\n this.pictures = this.pictureContainer.subObjects;\n\n /**\n * All video objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property videos\n * @type gs.Object_Video[]\n * @readOnly\n */\n this.videos = this.videoContainer.subObjects;\n\n /**\n * All text objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property texts\n * @type gs.Object_Text[]\n * @readOnly\n */\n this.texts = this.textContainer.subObjects;\n\n /**\n * All character objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property characters\n * @type gs.Object_Character[]\n * @readOnly\n */\n this.characters = this.characterContainer.subObjects;\n\n /**\n * All backgrounds as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property backgrounds\n * @type gs.Object_Background[]\n * @readOnly\n */\n this.backgrounds = this.backgroundContainer.subObjects;\n\n /**\n * All hotspot objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property hotspots\n * @type gs.Object_Hotspot[]\n * @readOnly\n */\n this.hotspots = this.hotspotContainer.subObjects;\n\n /**\n * All interval timer objects as array. That is the same like accessing the <b>subObjects</b> of the\n * container object.\n * @property timers\n * @type gs.Object_IntervalTimer[]\n * @readOnly\n */\n this.timers = this.timerContainer.subObjects;\n\n /**\n * All message areas as array.\n * @property messageAreas\n * @type vn.MessageArea[]\n * @readOnly\n */\n this.messageAreas = this.messageAreaContainer.subObjects;\n\n /**\n * The current list of choices which should be displayed\n * on the screen. New choices are usually added using\n * Add Choice command in Scene Editor before all choices are\n * displayed via Show Choices command.\n * @property choices\n * @type vn.Choice[]\n */\n this.choices = [];\n\n /**\n * A timer object used for choices with time-limit.\n * @property choiceTimer\n * @type gs.Object_Timer\n */\n this.choiceTimer = new gs.Object_Timer();\n\n /**\n * Indicates if the UI layout is visible.\n * @property visible\n * @type boolean\n */\n this.visible = true;\n\n /**\n * @property visible_\n * @type boolean\n * @protected\n */\n this.visible_ = true;\n\n /**\n * The game settings.\n * @property settings\n * @type Object\n */\n this.settings = GameManager.settings;\n\n /**\n * Temporary settings like skip, etc.\n * @property tempSettings\n * @type Object\n */\n this.tempSettings = GameManager.tempSettings;\n\n /**\n * Contains all data necessary to construct the scene.\n * @property sceneData\n * @type Object\n */\n this.sceneData = GameManager.sceneData;\n this.addObject(this.backgroundContainer);\n this.addObject(this.characterContainer);\n this.addObject(this.pictureContainer);\n this.addObject(this.textContainer);\n this.addObject(this.videoContainer);\n this.addObject(this.hotspotContainer);\n this.addObject(this.viewportContainer);\n this.addObject(this.commonEventContainer);\n this.addObject(this.timerContainer);\n this.addObject(this.choiceTimer);\n this.addObject(this.messageAreaContainer);\n this.addComponent(new gs.Component_InputHandler());\n this.addComponent(this.behavior);\n this.addComponent(this.interpreter);\n }\n\n return Object_Scene;\n\n})(gs.Object_Base);\n\nvn.Object_Scene = Object_Scene;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUEsWUFBQTtFQUFBOzs7QUFBTTs7O0VBS0YsWUFBQyxDQUFBLFNBQUQsQ0FBVyxTQUFYLEVBQ0k7SUFBQSxHQUFBLEVBQUssU0FBQyxDQUFEO01BQ0QsSUFBRyxDQUFBLEtBQUssSUFBQyxDQUFBLFFBQVQ7UUFDSSxJQUFDLENBQUEsUUFBRCxHQUFZO1FBQ1osSUFBQyxDQUFBLFdBQUQsR0FBZTtlQUNmLElBQUMsQ0FBQSxXQUFELENBQUEsRUFISjs7SUFEQyxDQUFMO0lBTUEsR0FBQSxFQUFLLFNBQUE7YUFBRyxJQUFDLENBQUEsUUFBRCxJQUFjLENBQUMsQ0FBQyxJQUFDLENBQUEsTUFBRixJQUFZLElBQUMsQ0FBQSxNQUFNLENBQUMsT0FBckI7SUFBakIsQ0FOTDtHQURKOzs7QUFTQTs7Ozs7Ozs7Ozs7RUFVYSxzQkFBQTtJQUNULDRDQUFBOztBQUVBOzs7OztJQUtBLElBQUMsQ0FBQSxTQUFELEdBQWE7O0FBRWI7Ozs7O0lBS0EsSUFBQyxDQUFBLFFBQUQsR0FBZ0IsSUFBQSxFQUFFLENBQUMsMkJBQUgsQ0FBQTs7QUFFaEI7Ozs7O0lBS0EsSUFBQyxDQUFBLFdBQUQsR0FBbUIsSUFBQSxFQUFFLENBQUMsNEJBQUgsQ0FBQTs7QUFFbkI7Ozs7O0lBS0EsSUFBQyxDQUFBLE1BQUQsR0FBYyxJQUFBLEVBQUUsQ0FBQyxzQkFBSCxDQUFBOztBQUVkOzs7OztJQUtBLElBQUMsQ0FBQSxtQkFBRCxHQUEyQixJQUFBLEVBQUUsQ0FBQyxzQkFBSCxDQUEwQixFQUFFLENBQUMsd0JBQXdCLENBQUMsSUFBdEQ7O0FBRTNCOzs7OztJQUtBLElBQUMsQ0FBQSxrQkFBRCxHQUEwQixJQUFBLEVBQUUsQ0FBQyxnQkFBSCxDQUFvQixFQUFFLENBQUMsd0JBQXdCLENBQUMsTUFBaEQ7O0FBRTFCOzs7OztJQUtBLElBQUMsQ0FBQSxnQkFBRCxHQUF3QixJQUFBLEVB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QkFBWjtJQUNBLElBQUMsQ0FBQSxTQUFELENBQVcsSUFBQyxDQUFBLG9CQUFaO0lBQ0EsSUFBQyxDQUFBLFNBQUQsQ0FBVyxJQUFDLENBQUEsY0FBWjtJQUNBLElBQUMsQ0FBQSxTQUFELENBQVcsSUFBQyxDQUFBLFdBQVo7SUFDQSxJQUFDLENBQUEsU0FBRCxDQUFXLElBQUMsQ0FBQSxvQkFBWjtJQUdBLElBQUMsQ0FBQSxZQUFELENBQWtCLElBQUEsRUFBRSxDQUFDLHNCQUFILENBQUEsQ0FBbEI7SUFDQSxJQUFDLENBQUEsWUFBRCxDQUFjLElBQUMsQ0FBQSxRQUFmO0lBQ0EsSUFBQyxDQUFBLFlBQUQsQ0FBYyxJQUFDLENBQUEsV0FBZjtFQWpQUzs7OztHQXhCVSxFQUFFLENBQUM7O0FBNFE5QixFQUFFLENBQUMsWUFBSCxHQUFrQiIsInNvdXJjZXNDb250ZW50IjpbIiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuI1xuIyAgIFNjcmlwdDogT2JqZWN0X1NjZW5lXG4jXG4jICAgJCRDT1BZUklHSFQkJFxuI1xuIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5jbGFzcyBPYmplY3RfU2NlbmUgZXh0ZW5kcyBncy5PYmplY3RfQmFzZVxuICAjICBAb2JqZWN0Q29kZWNCbGFja0xpc3QgPSBbXCJwYXJlbnRcIiwgXCJzdWJPYmplY3RzXCIsIFwicHJlcGFyaW5nXCIsIFwiYmVoYXZpb3JcIiwgXCJpbnRlcnByZXRlclwiLCBcImV2ZW50c1wiLCBcInNjZW5lRGF0YVwiLFxuICAjICBcImNoYXJhY3RlckNvbnRhaW5lclwiLCBcInBpY3R1cmVDb250YWluZXJcIiwgXCJ0ZXh0Q29udGFpbmVyXCIsIFwidmlkZW9Db250YWluZXJcIiwgXCJtZXNzYWdlQXJlYXNcIiwgXCJob3RzcG90Q29udGFpbmVyXCIsIFwiY29tbW9uRXZlbnRDb250YWluZXJcIixcbiAgIyAgXCJwaWN0dXJlc1wiLCBcInRleHRzXCIsIFwidmlkZW9zXCIsIFwibWVzc2FnZUFyZWFzXCIsIFwiaG90c3BvdHNcIiwgXCJjb21tb25FdmVudHNcIiwgXCJsYXlvdXRcIiwgXCJsYXlvdXROVkxcIl1cbiAgICBcbiAgICBAYWNjZXNzb3JzIFwidmlzaWJsZVwiLCBcbiAgICAgICAgc2V0OiAodikgLT4gXG4gICAgICAgICAgICBpZiB2ICE9IEB2aXNpYmxlX1xuICAgICAgICAgICAgICAgIEB2aXNpYmxlXyA9IHZcbiAgICAgICAgICAgICAgICBAbmVlZHNVcGRhdGUgPSB5ZXNcbiAgICAgICAgICAgICAgICBAZnVsbFJlZnJlc2goKVxuICAgICAgICAgICAgXG4gICAgICAgIGdldDogLT4gQHZpc2libGVfIGFuZCAoIUBwYXJlbnQgb3IgQHBhcmVudC52aXNpYmxlKVxuICAgIFxuICAgICMjIypcbiAgICAqIEEgc2NlbmUgb2JqZWN0IG1hbmFnZXMgYSB3aG9sZSB2aXN1YWwgbm92ZWwgc2NlbmUgd2l0aCBiYWNrZ3JvdW5kcywgY2hhcmFjdGVycyxcbiAgICAqIG1lc3NhZ2VzLCBldGMuXG4gICAgKlxuICAgICogQG1vZHVsZSB2blxuICAgICogQGNsYXNzIE9iamVjdF9TY2VuZVxuICAgICogQGV4dGVuZHMgZ3MuT2JqZWN0X0Jhc2VcbiAgICAqIEBtZW1iZXJvZiB2blxuICAgICogQGNvbnN0cnVjdG9yXG4gICAgIyMjICAgIFxuICAgIGNvbnN0cnVjdG9yOiAtPlxuICAgICAgICBzdXBlcigpXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHNjZW5lIGlzIHN0aWxsIGluIHByZXBhcmUtc3RhdGUgYW5kIG5vdCByZWFkeSB5ZXQuXG4gICAgICAgICogQHByb3BlcnR5IHByZXBhcmluZ1xuICAgICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgICAgIyMjXG4gICAgICAgIEBwcmVwYXJpbmcgPSB5ZXNcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBUaGUgYmVoYXZpb3ItY29tcG9uZW50IGZvciB0aGUgVk4gc2NlbmUgc3BlY2lmaWMgYmVoYXZpb3IuXG4gICAgICAgICogQHByb3BlcnR5IGJlaGF2aW9yXG4gICAgICAgICogQHR5cGUgZ3MuQ29tcG9uZW50X0dhbWVTY2VuZUJlaGF2aW9yXG4gICAgICAgICMjI1xuICAgICAgICBAYmVoYXZpb3IgPSBuZXcgdm4uQ29tcG9uZW50X0dhbWVTY2VuZUJlaGF2aW9yKClcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBBbiBpbnRlcnByZXRlciB0byBleGVjdXRlIHRoZSBjb21tYW5kcyBvZiBzY2VuZS5cbiAgICAgICAgKiBAcHJvcGVydHkgaW50ZXJwcmV0ZXJcbiAgICAgICAgKiBAdHlwZSBncy5Db21wb25lbnRfQ29tbWFuZEludGVycHJldGVyXG4gICAgICAgICMjI1xuICAgICAgICBAaW50ZXJwcmV0ZXIgPSBuZXcgZ3MuQ29tcG9uZW50X0NvbW1hbmRJbnRlcnByZXRlcigpXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQW4gZXZlbnQtZW1pdHRlciB0byBlbWl0IGV2ZW50cy5cbiAgICAgICAgKiBAcHJvcGVydHkgZXZlbnRzXG4gICAgICAgICogQHR5cGUgZ3MuQ29tcG9uZW50X0V2ZW50RW1pdHRlclxuICAgICAgICAjIyNcbiAgICAgICAgQGV2ZW50cyA9IG5ldyBncy5Db21wb25lbnRfRXZlbnRFbWl0dGVyKClcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBDb250YWlucyBhbGwgYmFja2dyb3VuZCBvYmplY3RzIG9mIHRoZSBzY2VuZS5cbiAgICAgICAgKiBAcHJvcGVydHkgYmFja2dyb3VuZENvbnRhaW5lclxuICAgICAgICAqIEB0eXBlIGdzLk9iamVjdF9Db250YWluZXJcbiAgICAgICAgIyMjXG4gICAgICAgIEBiYWNrZ3JvdW5kQ29udGFpbmVyID0gbmV3IGdzLk9iamVjdF9Eb21haW5Db250YWluZXIoZ3MuQ29udGFpbmVyRGlzcG9zZUJlaGF2aW9yLk5VTEwpXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQ29udGFpbnMgYWxsIGNoYXJhY3RlciBvYmplY3RzIG9mIHRoZSBzY2VuZS5cbiAgICAgICAgKiBAcHJvcGVydHkgY2hhcmFjdGVyQ29udGFpbmVyXG4gICAgICAgICogQHR5cGUgZ3MuT2JqZWN0X0NvbnRhaW5lclxuICAgICAgICAjIyNcbiAgICAgICAgQGNoYXJhY3RlckNvbnRhaW5lciA9IG5ldyBncy5PYmplY3RfQ29udGFpbmVyKGdzLkNvbnRhaW5lckRpc3Bvc2VCZWhhdmlvci5SRU1PVkUpXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQ29udGFpbnMgYWxsIHBpY3R1cmUgb2JqZWN0cyBvZiB0aGUgc2NlbmUuXG4gICAgICAgICogQHByb3BlcnR5IHBpY3R1cmVDb250YWluZXJcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfQ29udGFpbmVyXG4gICAgICAgICMjI1xuICAgICAgICBAcGljdHVyZUNvbnRhaW5lciA9IG5ldyBncy5PYmplY3RfRG9tYWluQ29udGFpbmVyKGdzLkNvbnRhaW5lckRpc3Bvc2VCZWhhdmlvci5OVUxMKVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIENvbnRhaW5zIGFsbCB2aWRlbyBvYmplY3RzIG9mIHRoZSBzY2VuZS5cbiAgICAgICAgKiBAcHJvcGVydHkgdmlkZW9Db250YWluZXJcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfQ29udGFpbmVyXG4gICAgICAgICMjI1xuICAgICAgICBAdmlkZW9Db250YWluZXIgPSBuZXcgZ3MuT2JqZWN0X0RvbWFpbkNvbnRhaW5lcihncy5Db250YWluZXJEaXNwb3NlQmVoYXZpb3IuTlVMTClcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBDb250YWlucyBhbGwgdGV4dCBvYmplY3RzIG9mIHRoZSBzY2VuZS5cbiAgICAgICAgKiBAcHJvcGVydHkgdGV4dENvbnRhaW5lclxuICAgICAgICAqIEB0eXBlIGdzLk9iamVjdF9Db250YWluZXJcbiAgICAgICAgIyMjXG4gICAgICAgIEB0ZXh0Q29udGFpbmVyID0gbmV3IGdzLk9iamVjdF9Eb21haW5Db250YWluZXIoZ3MuQ29udGFpbmVyRGlzcG9zZUJlaGF2aW9yLk5VTEwpXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQ29udGFpbnMgYWxsIGhvdHNwb3Qgb2JqZWN0cyBvZiB0aGUgc2NlbmUuXG4gICAgICAgICogQHByb3BlcnR5IGhvdHNwb3RDb250YWluZXJcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfQ29udGFpbmVyXG4gICAgICAgICMjI1xuICAgICAgICBAaG90c3BvdENvbnRhaW5lciA9IG5ldyBncy5PYmplY3RfRG9tYWluQ29udGFpbmVyKGdzLkNvbnRhaW5lckRpc3Bvc2VCZWhhdmlvci5OVUxMKVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIENvbnRhaW5zIGFsbCBjb21tb24gZXZlbnRzIHdoaWNoIGFyZSBydW5uaW5nIHBhcmFsbGVsL2F1dG8gdG8gdGhlIHNjZW5lLlxuICAgICAgICAqIEBwcm9wZXJ0eSBjb21tb25FdmVudENvbnRhaW5lclxuICAgICAgICAqIEB0eXBlIGdzLk9iamVjdF9Db250YWluZXJcbiAgICAgICAgIyMjXG4gICAgICAgIEBjb21tb25FdmVudENvbnRhaW5lciA9IG5ldyBncy5PYmplY3RfQ29udGFpbmVyKGdzLkNvbnRhaW5lckRpc3Bvc2VCZWhhdmlvci5OVUxMKVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIENvbnRhaW5zIGFsbCB2aWV3cG9ydHMgd2hpY2ggYXJlIHVzZWQgdG8gY3JlYXRlIG11bHRpLWxheWVyZWQgc2NyZWVuIGVmZmVjdHMuXG4gICAgICAgICogQHByb3BlcnR5IHZpZXdwb3J0Q29udGFpbmVyXG4gICAgICAgICogQHR5cGUgZ3MuT2JqZWN0X0NvbnRhaW5lclxuICAgICAgICAjIyNcbiAgICAgICAgQHZpZXdwb3J0Q29udGFpbmVyID0gbmV3IGdzLk9iamVjdF9Db250YWluZXIoZ3MuQ29udGFpbmVyRGlzcG9zZUJlaGF2aW9yLlJFTU9WRSlcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBDb250YWlucyBhbGwgaW50ZXJ2YWwgdGltZXJzLlxuICAgICAgICAqIEBwcm9wZXJ0eSB0aW1lckNvbnRhaW5lclxuICAgICAgICAqIEB0eXBlIGdzLk9iamVjdF9Db250YWluZXJcbiAgICAgICAgIyMjXG4gICAgICAgIEB0aW1lckNvbnRhaW5lciA9IG5ldyBncy5PYmplY3RfRG9tYWluQ29udGFpbmVyKGdzLkNvbnRhaW5lckRpc3Bvc2VCZWhhdmlvci5OVUxMKVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIENvbnRhaW5zIGFsbCBtZXNzYWdlIGFyZWFzIG9mIHRoZSBzY2VuZS5cbiAgICAgICAgKiBAcHJvcGVydHkgbWVzc2FnZUFyZWFDb250YWluZXJcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfQ29udGFpbmVyXG4gICAgICAgICMjI1xuICAgICAgICBAbWVzc2FnZUFyZWFDb250YWluZXIgPSBuZXcgZ3MuT2JqZWN0X0RvbWFpbkNvbnRhaW5lcihncy5Db250YWluZXJEaXNwb3NlQmVoYXZpb3IuTlVMTClcbiAgICAgICAgXG4gICAgICAgIEBjaGFyYWN0ZXJDb250YWluZXIudmlzaWJsZSA9IHllc1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEFsbCBwaWN0dXJlIG9iamVjdHMgYXMgYXJyYXkuIFRoYXQgaXMgdGhlIHNhbWUgbGlrZSBhY2Nlc3NpbmcgdGhlIDxiPnN1Yk9iamVjdHM8L2I+IG9mIHRoZVxuICAgICAgICAqIGNvbnRhaW5lciBvYmplY3QuXG4gICAgICAgICogQHByb3BlcnR5IHBpY3R1cmVzXG4gICAgICAgICogQHR5cGUgZ3MuT2JqZWN0X1BpY3R1cmVbXVxuICAgICAgICAqIEByZWFkT25seVxuICAgICAgICAjIyNcbiAgICAgICAgQHBpY3R1cmVzID0gQHBpY3R1cmVDb250YWluZXIuc3ViT2JqZWN0c1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEFsbCB2aWRlbyBvYmplY3RzIGFzIGFycmF5LiBUaGF0IGlzIHRoZSBzYW1lIGxpa2UgYWNjZXNzaW5nIHRoZSA8Yj5zdWJPYmplY3RzPC9iPiBvZiB0aGVcbiAgICAgICAgKiBjb250YWluZXIgb2JqZWN0LlxuICAgICAgICAqIEBwcm9wZXJ0eSB2aWRlb3NcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfVmlkZW9bXVxuICAgICAgICAqIEByZWFkT25seVxuICAgICAgICAjIyNcbiAgICAgICAgQHZpZGVvcyA9IEB2aWRlb0NvbnRhaW5lci5zdWJPYmplY3RzXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQWxsIHRleHQgb2JqZWN0cyBhcyBhcnJheS4gVGhhdCBpcyB0aGUgc2FtZSBsaWtlIGFjY2Vzc2luZyB0aGUgPGI+c3ViT2JqZWN0czwvYj4gb2YgdGhlXG4gICAgICAgICogY29udGFpbmVyIG9iamVjdC5cbiAgICAgICAgKiBAcHJvcGVydHkgdGV4dHNcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfVGV4dFtdXG4gICAgICAgICogQHJlYWRPbmx5XG4gICAgICAgICMjI1xuICAgICAgICBAdGV4dHMgPSBAdGV4dENvbnRhaW5lci5zdWJPYmplY3RzXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQWxsIGNoYXJhY3RlciBvYmplY3RzIGFzIGFycmF5LiBUaGF0IGlzIHRoZSBzYW1lIGxpa2UgYWNjZXNzaW5nIHRoZSA8Yj5zdWJPYmplY3RzPC9iPiBvZiB0aGVcbiAgICAgICAgKiBjb250YWluZXIgb2JqZWN0LlxuICAgICAgICAqIEBwcm9wZXJ0eSBjaGFyYWN0ZXJzXG4gICAgICAgICogQHR5cGUgZ3MuT2JqZWN0X0NoYXJhY3RlcltdXG4gICAgICAgICogQHJlYWRPbmx5XG4gICAgICAgICMjI1xuICAgICAgICBAY2hhcmFjdGVycyA9IEBjaGFyYWN0ZXJDb250YWluZXIuc3ViT2JqZWN0c1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEFsbCBiYWNrZ3JvdW5kcyBhcyBhcnJheS4gVGhhdCBpcyB0aGUgc2FtZSBsaWtlIGFjY2Vzc2luZyB0aGUgPGI+c3ViT2JqZWN0czwvYj4gb2YgdGhlXG4gICAgICAgICogY29udGFpbmVyIG9iamVjdC5cbiAgICAgICAgKiBAcHJvcGVydHkgYmFja2dyb3VuZHNcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfQmFja2dyb3VuZFtdXG4gICAgICAgICogQHJlYWRPbmx5XG4gICAgICAgICMjI1xuICAgICAgICBAYmFja2dyb3VuZHMgPSBAYmFja2dyb3VuZENvbnRhaW5lci5zdWJPYmplY3RzXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQWxsIGhvdHNwb3Qgb2JqZWN0cyBhcyBhcnJheS4gVGhhdCBpcyB0aGUgc2FtZSBsaWtlIGFjY2Vzc2luZyB0aGUgPGI+c3ViT2JqZWN0czwvYj4gb2YgdGhlXG4gICAgICAgICogY29udGFpbmVyIG9iamVjdC5cbiAgICAgICAgKiBAcHJvcGVydHkgaG90c3BvdHNcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfSG90c3BvdFtdXG4gICAgICAgICogQHJlYWRPbmx5XG4gICAgICAgICMjI1xuICAgICAgICBAaG90c3BvdHMgPSBAaG90c3BvdENvbnRhaW5lci5zdWJPYmplY3RzXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogQWxsIGludGVydmFsIHRpbWVyIG9iamVjdHMgYXMgYXJyYXkuIFRoYXQgaXMgdGhlIHNhbWUgbGlrZSBhY2Nlc3NpbmcgdGhlIDxiPnN1Yk9iamVjdHM8L2I+IG9mIHRoZVxuICAgICAgICAqIGNvbnRhaW5lciBvYmplY3QuXG4gICAgICAgICogQHByb3BlcnR5IHRpbWVyc1xuICAgICAgICAqIEB0eXBlIGdzLk9iamVjdF9JbnRlcnZhbFRpbWVyW11cbiAgICAgICAgKiBAcmVhZE9ubHlcbiAgICAgICAgIyMjXG4gICAgICAgIEB0aW1lcnMgPSBAdGltZXJDb250YWluZXIuc3ViT2JqZWN0c1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEFsbCBtZXNzYWdlIGFyZWFzIGFzIGFycmF5LlxuICAgICAgICAqIEBwcm9wZXJ0eSBtZXNzYWdlQXJlYXNcbiAgICAgICAgKiBAdHlwZSB2bi5NZXNzYWdlQXJlYVtdXG4gICAgICAgICogQHJlYWRPbmx5XG4gICAgICAgICMjI1xuICAgICAgICBAbWVzc2FnZUFyZWFzID0gQG1lc3NhZ2VBcmVhQ29udGFpbmVyLnN1Yk9iamVjdHNcbiAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIFRoZSBjdXJyZW50IGxpc3Qgb2YgY2hvaWNlcyB3aGljaCBzaG91bGQgYmUgZGlzcGxheWVkXG4gICAgICAgICogb24gdGhlIHNjcmVlbi4gTmV3IGNob2ljZXMgYXJlIHVzdWFsbHkgYWRkZWQgdXNpbmdcbiAgICAgICAgKiBBZGQgQ2hvaWNlIGNvbW1hbmQgaW4gU2NlbmUgRWRpdG9yIGJlZm9yZSBhbGwgY2hvaWNlcyBhcmVcbiAgICAgICAgKiBkaXNwbGF5ZWQgdmlhIFNob3cgQ2hvaWNlcyBjb21tYW5kLlxuICAgICAgICAqIEBwcm9wZXJ0eSBjaG9pY2VzXG4gICAgICAgICogQHR5cGUgdm4uQ2hvaWNlW11cbiAgICAgICAgIyMjXG4gICAgICAgIEBjaG9pY2VzID0gW11cbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBBIHRpbWVyIG9iamVjdCB1c2VkIGZvciBjaG9pY2VzIHdpdGggdGltZS1saW1pdC5cbiAgICAgICAgKiBAcHJvcGVydHkgY2hvaWNlVGltZXJcbiAgICAgICAgKiBAdHlwZSBncy5PYmplY3RfVGltZXJcbiAgICAgICAgIyMjXG4gICAgICAgIEBjaG9pY2VUaW1lciA9IG5ldyBncy5PYmplY3RfVGltZXIoKVxuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEluZGljYXRlcyBpZiB0aGUgVUkgbGF5b3V0IGlzIHZpc2libGUuXG4gICAgICAgICogQHByb3BlcnR5IHZpc2libGVcbiAgICAgICAgKiBAdHlwZSBib29sZWFuXG4gICAgICAgICMjI1xuICAgICAgICBAdmlzaWJsZSA9IHllc1xuICAgICAgICBcbiAgICAgICAgIyMjKlxuICAgICAgICAqIEBwcm9wZXJ0eSB2aXNpYmxlX1xuICAgICAgICAqIEB0eXBlIGJvb2xlYW5cbiAgICAgICAgKiBAcHJvdGVjdGVkXG4gICAgICAgICMjI1xuICAgICAgICBAdmlzaWJsZV8gPSB5ZXNcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBUaGUgZ2FtZSBzZXR0aW5ncy5cbiAgICAgICAgKiBAcHJvcGVydHkgc2V0dGluZ3NcbiAgICAgICAgKiBAdHlwZSBPYmplY3RcbiAgICAgICAgIyMjXG4gICAgICAgIEBzZXR0aW5ncyA9IEdhbWVNYW5hZ2VyLnNldHRpbmdzXG4gICAgICAgIFxuICAgICAgICAjIyMqXG4gICAgICAgICogVGVtcG9yYXJ5IHNldHRpbmdzIGxpa2Ugc2tpcCwgZXRjLlxuICAgICAgICAqIEBwcm9wZXJ0eSB0ZW1wU2V0dGluZ3NcbiAgICAgICAgKiBAdHlwZSBPYmplY3RcbiAgICAgICAgIyMjXG4gICAgICAgIEB0ZW1wU2V0dGluZ3MgPSBHYW1lTWFuYWdlci50ZW1wU2V0dGluZ3NcbiAgICAgICAgXG4gICAgICAgICMjIypcbiAgICAgICAgKiBDb250YWlucyBhbGwgZGF0YSBuZWNlc3NhcnkgdG8gY29uc3RydWN0IHRoZSBzY2VuZS5cbiAgICAgICAgKiBAcHJvcGVydHkgc2NlbmVEYXRhXG4gICAgICAgICogQHR5cGUgT2JqZWN0XG4gICAgICAgICMjI1xuICAgICAgICBAc2NlbmVEYXRhID0gR2FtZU1hbmFnZXIuc2NlbmVEYXRhXG4gICAgICAgIFxuICAgICAgICBAYWRkT2JqZWN0KEBiYWNrZ3JvdW5kQ29udGFpbmVyKVxuICAgICAgICBAYWRkT2JqZWN0KEBjaGFyYWN0ZXJDb250YWluZXIpXG4gICAgICAgIEBhZGRPYmplY3QoQHBpY3R1cmVDb250YWluZXIpXG4gICAgICAgIEBhZGRPYmplY3QoQHRleHRDb250YWluZXIpXG4gICAgICAgIEBhZGRPYmplY3QoQHZpZGVvQ29udGFpbmVyKVxuICAgICAgICBAYWRkT2JqZWN0KEBob3RzcG90Q29udGFpbmVyKVxuICAgICAgICBAYWRkT2JqZWN0KEB2aWV3cG9ydENvbnRhaW5lcilcbiAgICAgICAgQGFkZE9iamVjdChAY29tbW9uRXZlbnRDb250YWluZXIpXG4gICAgICAgIEBhZGRPYmplY3QoQHRpbWVyQ29udGFpbmVyKVxuICAgICAgICBAYWRkT2JqZWN0KEBjaG9pY2VUaW1lcilcbiAgICAgICAgQGFkZE9iamVjdChAbWVzc2FnZUFyZWFDb250YWluZXIpXG4gICAgICAgIFxuICAgICAgICBcbiAgICAgICAgQGFkZENvbXBvbmVudChuZXcgZ3MuQ29tcG9uZW50X0lucHV0SGFuZGxlcigpKVxuICAgICAgICBAYWRkQ29tcG9uZW50KEBiZWhhdmlvcilcbiAgICAgICAgQGFkZENvbXBvbmVudChAaW50ZXJwcmV0ZXIpXG4gICAgICAgIFxuICAgICAgICBcbnZuLk9iamVjdF9TY2VuZSA9IE9iamVjdF9TY2VuZSJdfQ==\n//# sourceURL=Object_Scene_161.js"
13 13 },
14 14 "summary": [
15 15 "name",