OSDN Git Service

Saccubus.jarがHD対応nicovideo.dllの追加引数を扱えるように対応
[coroid/inqubus.git] / vhook / docs / nicoplayer.swf.source
1 //■ABC File MinorVersion:16 , MajorVersion:46
2
3 //INT cnt=143
4 //UINT cnt=1
5 //DOUBLE cnt=32
6 //STRING cnt=6667
7 //NAMESPACES cnt=1166
8 //NAMESPACE_SETS cnt=279
9 //MULTINAMES cnt=7959
10 //Methods cnt=5427
11 //METADATA cnt=0
12 //INTERFACE cnt=465
13 //CLASS cnt=465
14 //SCRIPT cnt=396
15
16 //■script000■
17
18 package jp.nicovideo.ext{
19
20         import jp.nicovideo.ext.config.IThumbConfig
21         import jp.nicovideo.nicoplayer.models.flashvars.NicoFlashVars
22
23         //■class(instance)_index:0
24         public interface IThumbPlayer
25         {
26                 //static constructor
27                 public static function IThumbPlayer$cinit()
28                 {       //MethodID:0, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
29                 }
30
31                 //variables/etc.
32                 function setThumbWatchVars(hug1:IThumbConfig, hug2:NicoFlashVars):void;     //MethodID:1, dispID:0
33
34                 function get initialized():Boolean;                                         //MethodID:2, dispID:0
35
36                 function playThumbPlayer():void;                                            //MethodID:3, dispID:0
37
38                 function pauseThumbPlayer():void;                                           //MethodID:4, dispID:0
39
40                 function set onChangedVideoStatus(hug1:Function):void;                      //MethodID:5, dispID:0
41
42                 function get videoPlayerStatus():String;                                    //MethodID:6, dispID:0
43
44                 //constructor
45                 public function IThumbPlayer();                                             //MethodID:7, dispID:0
46         }
47 }
48
49 //■script001■
50
51 package jp.nicovideo.nicoplayer{
52
53         import flash.display.DisplayObject
54         import flash.display.MovieClip
55         import flash.display.Sprite
56         import flash.display.StageAlign
57         import flash.display.StageScaleMode
58         import flash.errors.IOError
59         import flash.errors.IllegalOperationError
60         import flash.events.Event
61         import flash.events.TimerEvent
62         import flash.net.URLRequest
63         import flash.net.URLVariables
64         import flash.net.navigateToURL
65         import flash.system.Security
66         import flash.ui.ContextMenu
67         import flash.utils.Timer
68         import jp.nicovideo.ext.config.IThumbConfig
69         import jp.nicovideo.hiroba.HirobaConnectorClient
70         import jp.nicovideo.hiroba.IHirobaConnector
71         import jp.nicovideo.hiroba.events.HirobaErrorEvent
72         import jp.nicovideo.hiroba.events.HirobaEvent
73         import jp.nicovideo.hiroba.events.HirobaEventReferer
74         import jp.nicovideo.hiroba.models.HirobaMessageServerInfo
75         import jp.nicovideo.marquee.INicoMarqueePlayer
76         import jp.nicovideo.marquee.MarqueeClient
77         import jp.nicovideo.nicoplayer.app.ApplibarLoader
78         import jp.nicovideo.nicoplayer.config.DebugMode
79         import jp.nicovideo.nicoplayer.config.DefaultInitializer
80         import jp.nicovideo.nicoplayer.config.NicoConfig
81         import jp.nicovideo.nicoplayer.config.getDebugMode
82         import jp.nicovideo.nicoplayer.external.ExternalClient
83         import jp.nicovideo.nicoplayer.hiroba.HirobaPlayer
84         import jp.nicovideo.nicoplayer.hiroba.events.HirobaErrorStatus
85         import jp.nicovideo.nicoplayer.models.IPlayerConfig
86         import jp.nicovideo.nicoplayer.models.MyList
87         import jp.nicovideo.nicoplayer.models.PlayDelay
88         import jp.nicovideo.nicoplayer.models.PlayerConfig
89         import jp.nicovideo.nicoplayer.models.PlayerInfo
90         import jp.nicovideo.nicoplayer.models.PlayerVersion
91         import jp.nicovideo.nicoplayer.models.RelatedVideoList
92         import jp.nicovideo.nicoplayer.models.ScreenAspectRatio
93         import jp.nicovideo.nicoplayer.models.StartVposConfig
94         import jp.nicovideo.nicoplayer.models.SystemMessage
95         import jp.nicovideo.nicoplayer.models.VideoDetail
96         import jp.nicovideo.nicoplayer.models.VideoLoadGuardian
97         import jp.nicovideo.nicoplayer.models.api.BGMVideoInfo
98         import jp.nicovideo.nicoplayer.models.api.GetBGM
99         import jp.nicovideo.nicoplayer.models.api.GetChecklist
100         import jp.nicovideo.nicoplayer.models.api.GetFLV
101         import jp.nicovideo.nicoplayer.models.api.GetRelation
102         import jp.nicovideo.nicoplayer.models.api.GetSponsorInfo
103         import jp.nicovideo.nicoplayer.models.api.ICapturableVideoContainer
104         import jp.nicovideo.nicoplayer.models.api.IKeygen
105         import jp.nicovideo.nicoplayer.models.api.InitializeInfo
106         import jp.nicovideo.nicoplayer.models.api.Jumper
107         import jp.nicovideo.nicoplayer.models.api.Keygen
108         import jp.nicovideo.nicoplayer.models.api.RegisterBGM
109         import jp.nicovideo.nicoplayer.models.comment.CommentConstants
110         import jp.nicovideo.nicoplayer.models.comment.CommentList
111         import jp.nicovideo.nicoplayer.models.comment.CommentListPublicStatus
112         import jp.nicovideo.nicoplayer.models.comment.CommentPoolContainer
113         import jp.nicovideo.nicoplayer.models.comment.CommentRouter
114         import jp.nicovideo.nicoplayer.models.comment.CommentStorageEvents
115         import jp.nicovideo.nicoplayer.models.comment.ICommentList
116         import jp.nicovideo.nicoplayer.models.comment.LocalCommentList
117         import jp.nicovideo.nicoplayer.models.comment.OwnerCommentList
118         import jp.nicovideo.nicoplayer.models.comment.TimeMachine
119         import jp.nicovideo.nicoplayer.models.filter.ChannelReplacer
120         import jp.nicovideo.nicoplayer.models.filter.DeleteFilter
121         import jp.nicovideo.nicoplayer.models.filter.LockedComment
122         import jp.nicovideo.nicoplayer.models.filter.NGComment
123         import jp.nicovideo.nicoplayer.models.filter.NGInfo
124         import jp.nicovideo.nicoplayer.models.filter.NGResponseConstants
125         import jp.nicovideo.nicoplayer.models.filter.NGType
126         import jp.nicovideo.nicoplayer.models.filter.Replacer
127         import jp.nicovideo.nicoplayer.models.flashvars.NicoFlashVars
128         import jp.nicovideo.nicoplayer.models.flashvars.NicoFlashVarsInitializer
129         import jp.nicovideo.nicoplayer.models.flashvars.PlaylistFlashVars
130         import jp.nicovideo.nicoplayer.models.log.LogManager
131         import jp.nicovideo.nicoplayer.models.mylist.DefaultMylistAppender
132         import jp.nicovideo.nicoplayer.models.playlist.Playlist
133         import jp.nicovideo.nicoplayer.models.playlist.PlaylistController
134         import jp.nicovideo.nicoplayer.models.playlist.PlaylistErrorManager
135         import jp.nicovideo.nicoplayer.models.video.ChildVideoName
136         import jp.nicovideo.nicoplayer.models.video.FLVVideo
137         import jp.nicovideo.nicoplayer.models.video.IVideo
138         import jp.nicovideo.nicoplayer.models.video.SWFVideo
139         import jp.nicovideo.nicoplayer.models.video.VideoController
140         import jp.nicovideo.nicoplayer.models.video.VideoLoadWatcher
141         import jp.nicovideo.nicoplayer.models.video.VideoType
142         import jp.nicovideo.nicoplayer.models.video.VideoWrapper
143         import jp.nicovideo.nicoplayer.models.video.VposWatcher
144         import jp.nicovideo.nicoplayer.models.video.userSponsor.IUserSponsorVideo
145         import jp.nicovideo.nicoplayer.models.video.userSponsor.UserSponsorVideoClient
146         import jp.nicovideo.nicoplayer.plugin.NicoPluginClient
147         import jp.nicovideo.nicoplayer.remocon.RemoconClient
148         import jp.nicovideo.nicoplayer.remocon.RemoconFullScreenKeeper
149         import jp.nicovideo.nicoplayer.remocon.RemoconNotifier
150         import jp.nicovideo.nicoplayer.remocon.RemoconPlayerStateObserver
151         import jp.nicovideo.nicoplayer.remocon.RemoconReceiver
152         import jp.nicovideo.nicoplayer.remocon.RemoconState
153         import jp.nicovideo.nicoplayer.remocon.method.defineRemoconMethods
154         import jp.nicovideo.nicoplayer.storages.CommentStorage
155         import jp.nicovideo.nicoplayer.storages.CommentStorageError
156         import jp.nicovideo.nicoplayer.storages.ICommentStorage
157         import jp.nicovideo.nicoplayer.storages.MessageServerClient
158         import jp.nicovideo.nicoplayer.tpls.INicoViewController
159         import jp.nicovideo.nicoplayer.tpls.NicoViewControllerClient
160         import jp.nicovideo.nicoplayer.tpls.shutter.AudioShutterConstants
161         import jp.nicovideo.nicoplayer.tpls.shutter.CommentShutterConstants
162         import jp.nicovideo.nicoplayer.tpls.shutter.ControllerShutter
163         import jp.nicovideo.nicoplayer.videoender.IVideoenderTesterConfig
164         import jp.nicovideo.nicoplayer.videoender.VideoenderTesterConfig
165         import jp.nicovideo.nicoplayer.views.JumpMessageLayer
166         import jp.nicovideo.nicoplayer.views.VideoLayerConstants
167         import jp.nicovideo.nicoplayer.views.VideoLayerManager
168         import jp.nicovideo.nicoplayer.views.comment.CommentLayer
169         import jp.nicovideo.nicoplayer.views.comment.CommentLayerID
170         import jp.nicovideo.nicoplayer.views.comment.CommentLayerView
171         import jp.nicovideo.nicoplayer.views.comment.CommentViewTransformer
172         import jp.nicovideo.nicoplayer.views.framerate.FrameRateBooster
173         import jp.nicovideo.nicoscript.INicoSPlayer
174         import jp.nicovideo.nicoscript.NicoSClient
175         import jp.nicovideo.nicoscript.NicoSConstants
176         import jp.nicovideo.nicoscript.macro.parsers.IMacroParserResult
177         import jp.nicovideo.util.CrossSharedObject
178         import jp.nicovideo.util.HTTPUtils
179         import jp.nicovideo.util.ObjectUtils
180         import jp.nicovideo.util.StringUtils
181         import jp.nicovideo.util.api.APICacheProxy
182         import jp.nicovideo.util.events.EventBarrier
183         import jp.nicovideo.util.events.EventChunk
184         import jp.nicovideo.util.events.EventPipe
185         import jp.nicovideo.util.events.EventResult
186         import jp.nicovideo.util.events.EventSequence
187         import jp.nicovideo.util.events.event_sender
188         import jp.nicovideo.util.external.JSConnector
189         import jp.nicovideo.util.loka.Loka
190         import jp.nicovideo.util.loka.__MSG__
191
192         //■class(instance)_index:1
193         public class NicoPlayer extends Sprite implements IThumbPlayer
194         {
195                 //static constructor
196                 public static function NicoPlayer$cinit()
197                 {       //MethodID:9, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 54
198                         DEBUG_MODE = getDebugMode();
199                         DEBUG_MODE_EXT = ((DEBUG_MODE == DebugMode.NON) ? DebugMode.NON : DebugMode.EXTDEV);
200                 }
201
202                 //static variables/etc.
203                 private static const DEBUG_MODE:uint;                           //slotID:1
204                 private static const DEBUG_MODE_EXT:uint;                       //slotID:2
205
206                 //constructor
207                 public function NicoPlayer()
208                 {       //MethodID:10, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 137
209                         this.commentListContainer = {};
210                         this.systemMessage = SystemMessage.instance;
211                         this.nicoViewControllerClient = new NicoViewControllerClient();
212                         this.pluginClient = new NicoPluginClient();
213                         this._playlistSequences = [];
214
215                         super();
216                         Security.allowDomain("*");
217
218                         this.isThumbWatchMode = (loaderInfo.parameters[this._IS_THUMBWATCH_PARAM] == "1");
219                         this.configure = new NicoConfig();
220                         Loka.instance.debug = true;
221
222                         if(this.isThumbWatchMode) return;
223
224                         if(loaderInfo.parameters[this._PLAYLIST_ID]){
225                                 this.initializePlaylistPlayer();
226
227                                 return;
228                         }
229
230                         this.initializeWatchPlayer();
231                 }
232
233                 //variables/etc.
234                 private const _IS_THUMBWATCH_PARAM:String = "thumbWatch";       //slotID:0
235                 private const _PLAYLIST_ID:String = "playlistId";               //slotID:0
236                 private var getFLV:GetFLV;                                      //slotID:0
237                 private var flashVars:NicoFlashVars;                            //slotID:0
238                 private var playlistFlashVars:PlaylistFlashVars;                //slotID:0
239                 private var playerConfig:IPlayerConfig;                         //slotID:0
240                 private var video:VideoWrapper;                                 //slotID:0
241                 private var commentListContainer:Object;                        //slotID:0
242                 private var mainCommentListName:String = "commentlist:main";    //slotID:0
243                 private var commentList:CommentList;                            //slotID:0
244                 private var ownerCommentList:OwnerCommentList;                  //slotID:0
245                 private var privateCommentList:CommentList;                     //slotID:0
246                 private var nicoSCommentList:CommentList;                       //slotID:0
247                 private var localCommentList:LocalCommentList;                  //slotID:0
248                 private var systemMessage:SystemMessage;                        //slotID:0
249                 private var relatedList:RelatedVideoList;                       //slotID:0
250                 private var ngComment:NGComment;                                //slotID:0
251                 private var lockedComment:LockedComment;                        //slotID:0
252                 private var replacer:Replacer;                                  //slotID:0
253                 private var playerVersion:PlayerVersion;                        //slotID:0
254                 private var playerInfo:PlayerInfo;                              //slotID:0
255                 private var timeMachine:TimeMachine;                            //slotID:0
256                 private var deleteFilter:DeleteFilter;                          //slotID:0
257                 private var channelReplacer:ChannelReplacer;                    //slotID:0
258                 private var videoLoadGuardian:VideoLoadGuardian;                //slotID:0
259                 private var getChecklist:GetChecklist;                          //slotID:0
260                 private var myList:MyList;                                      //slotID:0
261                 private var playlist:Playlist;                                  //slotID:0
262                 private var initializeInfo:InitializeInfo;                      //slotID:0
263                 private var _startVposConfig:StartVposConfig;                   //slotID:0
264                 private var commentLayerView:CommentLayerView;                  //slotID:0
265                 private var commentLayer:CommentLayer;                          //slotID:0
266                 private var commentViewTransformer:CommentViewTransformer;      //slotID:0
267                 private var commentRouter:CommentRouter;                        //slotID:0
268                 private var videoLayerManager:VideoLayerManager;                //slotID:0
269                 private var videoController:VideoController;                    //slotID:0
270                 private var jumpMsgLayer:JumpMessageLayer;                      //slotID:0
271                 private var nicoViewController:INicoViewController;             //slotID:0
272                 private var nicoViewControllerClient:NicoViewControllerClient;  //slotID:0
273                 private var vposWatcher:VposWatcher;                            //slotID:0
274                 private var commentShutter:ControllerShutter;                   //slotID:0
275                 private var audioShutter:ControllerShutter;                     //slotID:0
276                 private var playlistController:PlaylistController;              //slotID:0
277                 private var frameRateBooster:FrameRateBooster;                  //slotID:0
278                 private var userSponsorVideo:IUserSponsorVideo;                 //slotID:0
279                 private var hirobaPlayer:HirobaPlayer;                          //slotID:0
280                 private var hirobaConnectorClient:HirobaConnectorClient;        //slotID:0
281                 private var _thumbConfig:IThumbConfig;                          //slotID:0
282                 private var configure:NicoConfig;                               //slotID:0
283                 private var keygen:IKeygen;                                     //slotID:0
284                 private var commentStorage:ICommentStorage;                     //slotID:0
285                 private var jumper:Jumper;                                      //slotID:0
286                 private var nicosPlayer:INicoSPlayer;                           //slotID:0
287                 private var nicosClient:NicoSClient;                            //slotID:0
288                 private var nicosPipe:Function;                                 //slotID:0
289                 private var BGMVideoInfos:Array;                                //slotID:0
290                 private var marqueeClient:MarqueeClient;                        //slotID:0
291                 private var externalClient:ExternalClient;                      //slotID:0
292                 private var isThumbWatchMode:Boolean = false;                   //slotID:0
293                 private var _onChangedVideoStatus:Function;                     //slotID:0
294                 private var _initialized:Boolean = false;                       //slotID:0
295                 private var _wholeVideoLoadSucceeded:Boolean = false;           //slotID:0
296                 private var pluginClient:NicoPluginClient;                      //slotID:0
297                 private var _playlistSequences:Array;                           //slotID:0
298                 private var _isPlaylist:Boolean = false;                        //slotID:0
299                 private var _videoLoadSucceeded:Boolean;                        //slotID:0
300                 private var _isPlaylistPrepared:Boolean = false;                //slotID:0
301                 private var _shutterKeyLastClosed:int = -1;                     //slotID:0
302                 private var _isShowedDialog:Boolean = false;                    //slotID:0
303                 private var _logManager:LogManager;                             //slotID:0
304                 private var _playerPageMyselfURL:String;                        //slotID:0
305                 private var _videoenderTesterConfig:IVideoenderTesterConfig;    //slotID:0
306
307                 private function initializePlaylistPlayer():void
308                 {       //MethodID:12, LocalCount= 2 , MaxScope= 2, MaxStack= 19, CodeLength= 422
309                         internal var menu:ContextMenu;                                  //slotID:1
310                         internal var vars:Object;                                       //slotID:2
311                         internal var seq:EventSequence;                                 //slotID:3
312
313                         this._isPlaylist = true;
314
315                         DefaultInitializer.setConfig(this.configure, loaderInfo.url, DEBUG_MODE);
316
317                         this.keygen = new Keygen(this.configure);
318                         stage.align = StageAlign.TOP_LEFT;
319                         stage.scaleMode = StageScaleMode.NO_SCALE;
320                         menu = new ContextMenu();
321
322                         menu.hideBuiltInItems();
323
324                         menu.builtInItems.quality = true;
325                         contextMenu = menu;
326                         vars = loaderInfo.parameters;
327                         this.flashVars = new NicoFlashVars();
328
329                         NicoFlashVarsInitializer.setFlashVars(this.flashVars, vars);
330
331                         this.playlistFlashVars = new PlaylistFlashVars(vars);
332                         this._playerPageMyselfURL = function():String{  //MethodID:11, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 49
333                                 var hug1:* = {};
334
335                                 if(playlistFlashVars.playlistSort) hug1["sort"] = playlistFlashVars.playlistSort;
336
337                                 return StringUtils.joinQuery((configure.PLAYLIST_PAGE_BASE_URL + playlistFlashVars.playlistID), hug1);
338                         }();
339                         this.nicoViewControllerClient.nicoConfig = this.configure;
340
341                         this.nicoViewControllerClient.flashVars = this.flashVars;
342                         this.nicoViewControllerClient.playlistFlashVars = this.playlistFlashVars;
343                         this.nicoViewControllerClient.playerPageMyselfURL = this._playerPageMyselfURL;
344
345                         this.pluginClient.setProperty("nicoConfig", this.configure);
346                         this.pluginClient.setProperty("flashVars", this.flashVars);
347
348                         this.nicoViewControllerClient.pluginClient = this.pluginClient;
349                         this._playlistSequences = [this._loadWatchAPI, this.loadVideoInfoAPI, this.initializeMyList, this.loadBGMVideoInfo, this.initializeCommentStorage, this.initializeGetChecklist, this.initializeHiroba, this.prepareVideo, this.prepareCommentLists, this.initializeModelAndView, this.initializeCommentRouter, this.initializeModelAndView4Watch, this.initializeLogger, this.loadConfirm, this.initializePlugin, this.initializeCommentLists, this._delayVideo, this._loadVideo];
350                         seq = new EventSequence(this);
351
352                         seq.push(this.initializePlayerVersion, this.initializePlayerInfo, this.initializeCrossSharedObjectSWF, this.initializeJSConnector, this.initializeJumper, this.createLogger, this.initializePlayerConfig, this.loadTemplateSWF, this.initializePlaylist, this.loadViewControllerSWF, this.loadNicoScriptSWF, this.checkInitializePlaylist, this.initializeNG, this.startPlaylist);
353                         seq.next();
354                 }
355
356                 private function startPlaylist():void
357                 {       //MethodID:13, LocalCount= 1 , MaxScope= 1, MaxStack= 5, CodeLength= 54
358                         if(this.playlistController) this.playlistController.play(null, null, (this.playerConfig.autoPlay && !this.initializeInfo.isPremium));
359                         EventSequence.current.next();
360                 }
361
362                 private function _loadWatchAPI():void
363                 {       //MethodID:15, LocalCount= 2 , MaxScope= 2, MaxStack= 4, CodeLength= 96
364                         internal var apiParams:Object;                                  //slotID:1
365
366                         this.nicoViewControllerClient.flashVars = null;
367                         apiParams = {};
368
369                         if(this._isPlaylist){
370                                 apiParams["mode"] = "playlist";
371                                 apiParams["playlist_token"] = this.playlist.token;
372                         }
373
374                         HTTPUtils.loadJSON(EventSequence.bind(function(hug1:Object):void{       //MethodID:14, LocalCount= 5 , MaxScope= 0, MaxStack= 4, CodeLength= 245
375                                 var hug2:* = undefined;
376
377                                 if(!hug1 || (hug1.status == "ng")){
378                                         if(_isPlaylist){
379                                                 if(hug1.status_message == PlaylistErrorManager.TOKEN_TIMEOUT){
380                                                         if(playlistController.errorCount < 1){
381                                                                 playlistController.errorCount++;
382                                                                 playlistController.isInvalidToken = true;
383                                                                 playlistController.isVideoUpdating = false;
384
385                                                                 playlistController.play(playlistController.threadID);
386
387                                                                 return;
388                                                         }
389                                                 }
390
391                                                 playlistController.onError(hug1.status_message.toString());
392
393                                                 if(PlaylistErrorManager.TABWINDOW_ALERT_ERRORS.indexOf(hug1.status_message.toString()) != (-1)) playlistController.goNext(null, (playerConfig.autoPlay && !initializeInfo.isPremium));
394                                         }
395
396                                         return;
397                                 }
398
399                                 flashVars = new NicoFlashVars();
400
401                                 NicoFlashVarsInitializer.setFlashVars(flashVars, hug1);
402
403                                 if(_isPlaylist){
404                                         hug2 = playlist.getVideoInfo(playlistController.threadID);
405                                         hug2.flashVars = flashVars;
406                                 }
407
408                                 nicoViewControllerClient.flashVars = flashVars;
409
410                                 EventSequence.current.next();
411                         }), (this.configure.WATCH_API_URL + this.playlistController.threadID), apiParams);
412                 }
413
414                 private function initializePlaylist():void
415                 {       //MethodID:18, LocalCount= 2 , MaxScope= 2, MaxStack= 7, CodeLength= 96
416                         internal var apiParams:Object;                                  //slotID:1
417
418                         apiParams = {};
419                         apiParams["ts"] = new Date().time;
420                         apiParams["playlist_token"] = this.playlistFlashVars.playlistToken;
421                         this.playlist = new Playlist((this.configure.GET_PLAYLIST_URL + this.playlistFlashVars.playlistID), apiParams, this.playlistFlashVars.playlistSort, EventSequence.bind(function(hug1:Boolean):void{     //MethodID:17, LocalCount= 3 , MaxScope= 1, MaxStack= 11, CodeLength= 172
422                                 internal var success:Boolean;                                   //slotID:1
423                                 internal var reset:Function;                                    //slotID:2
424
425                                 reset = null;
426                                 success = hug1;
427                                 reset = function():void{        //MethodID:16, LocalCount= 1 , MaxScope= 0, MaxStack= 2, CodeLength= 43
428                                         nicoViewControllerClient.getFLVData = null;
429                                         nicoViewControllerClient.videoController = null;
430                                         nicoViewControllerClient.commentRouter = null;
431                                         nicoViewControllerClient.relatedList = null;
432                                         nicoViewControllerClient.myList = null;
433                                         nicoViewControllerClient.defaultMylistAppender = null;
434                                 };
435
436                                 _isPlaylistPrepared = success;
437
438                                 if(!success){
439                                         EventSequence.current.next();
440
441                                         return;
442                                 }
443
444                                 if(playlistController){
445                                         EventSequence.current.next();
446
447                                         return;
448                                 }
449
450                                 initializeInfo = InitializeInfo.getInstance();
451                                 nicoViewControllerClient.initializeInfo = initializeInfo;
452
453                                 pluginClient.setProperty("initializeInfo", initializeInfo);
454
455                                 playlistController = new PlaylistController(_playlistSequences, initializePlaylist, playlist, playlistFlashVars, configure, playerInfo.playlistLimit, reset, playerConfig.isPlaylistRandomPlay, _playerPageMyselfURL);
456                                 nicoViewControllerClient.playlistController = playlistController;
457
458                                 EventSequence.current.next();
459                         }));
460                 }
461
462                 private function checkInitializePlaylist():void
463                 {       //MethodID:19, LocalCount= 2 , MaxScope= 1, MaxStack= 3, CodeLength= 105
464                         var hug1:String = null;
465
466                         if(!this.initializeInfo || !this.initializeInfo.userID){
467                                 this.systemMessage.informln(__MSG__("ユーザー情報の取得に失敗"));
468
469                                 hug1 = ("<p><b>" + __MSG__("ユーザー情報の取得に失敗しました。") + "</b></p>" + "<p>" + __MSG__("ログインしていない可能性があります。") + "</p>");
470
471                                 this.systemMessage.alert(hug1);
472
473                                 return;
474                         }
475
476                         EventSequence.current.next();
477                 }
478
479                 public function setThumbWatchVars(hug1:IThumbConfig, hug2:NicoFlashVars):void
480                 {       //MethodID:20, LocalCount= 4 , MaxScope= 1, MaxStack= 23, CodeLength= 234
481                         if(DEBUG_MODE_EXT != DebugMode.NON){
482                                 DefaultInitializer.setConfig(this.configure, loaderInfo.url, DEBUG_MODE_EXT);
483                                 DefaultInitializer.setThumbDebugMode(this.configure);
484                         }else{
485                                 DefaultInitializer.setConfig(this.configure, hug1.playerURL, DebugMode.NON);
486                         }
487
488                         this.keygen = new Keygen(this.configure);
489                         this._thumbConfig = hug1;
490                         this.flashVars = hug2;
491                         this.nicoViewControllerClient.thumbConfig = hug1;
492                         this.nicoViewControllerClient.nicoConfig = this.configure;
493                         this.nicoViewControllerClient.flashVars = hug2;
494                         var hug3:EventSequence = new EventSequence(this);
495
496                         hug3.push(this.initializePlayerVersion, this.initializePlayerInfo, this.initializeCrossSharedObjectSWF, this.initializeJSConnector, this.initializeJumper, this.initializePlayerConfig, this._loadThumbViewSWF, this._loadThumbControllerSWF, this.loadNicoScriptSWF, this._loadThumbVideoInfo, this.loadBGMVideoInfo, this.initializeNG, this.initializeCommentStorage, this.prepareVideo, this.prepareCommentLists, this.initializeModelAndView, this._initializeModelAndViewThumbWatch, this.initializeSponsorVideo, this._delayVideo, this._loadVideo, this.initializeCommentLists, this.beginToPlayVideo);
497                         hug3.next();
498                 }
499
500                 public function get initialized():Boolean
501                 {       //MethodID:21, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
502                         return this._initialized;
503                 }
504
505                 public function playThumbPlayer():void
506                 {       //MethodID:22, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 47
507                         if(this.isThumbWatchMode && this.video && this.video.isInitialized) this.video.play();
508                 }
509
510                 public function pauseThumbPlayer():void
511                 {       //MethodID:23, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 47
512                         if(this.isThumbWatchMode && this.video && this.video.isInitialized) this.video.stop();
513                 }
514
515                 public function set onChangedVideoStatus(hug1:Function):void
516                 {       //MethodID:25, LocalCount= 3 , MaxScope= 2, MaxStack= 2, CodeLength= 57
517                         internal var onChanged:Function;                                //slotID:1
518
519                         onChanged = hug1;
520
521                         if(!this.isThumbWatchMode) throw new IllegalOperationError("NicoPlayer.set onChangedVideoStatus: player is not in thumbwatch.");
522
523                         if(onChanged == null) throw new ArgumentError("NicoPlayer.set onChangedVideoStatus: invalid parameters onChanged is null.");
524
525                         this._onChangedVideoStatus = function(hug1:String):void{        //MethodID:24, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 24
526                                 if(!_initialized) _initialized = true;
527                                 onChanged(hug1);
528                         };
529                 }
530
531                 public function get videoPlayerStatus():String
532                 {       //MethodID:26, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 49
533                         if(this.isThumbWatchMode && this.video && this.video.isInitialized) return this.video.videoPlayerStatus;
534
535                         return "";
536                 }
537
538                 private function initializeWatchPlayer():void
539                 {       //MethodID:27, LocalCount= 4 , MaxScope= 1, MaxStack= 31, CodeLength= 362
540                         DefaultInitializer.setConfig(this.configure, loaderInfo.url, DEBUG_MODE);
541
542                         this.keygen = new Keygen(this.configure);
543                         stage.align = StageAlign.TOP_LEFT;
544                         stage.scaleMode = StageScaleMode.NO_SCALE;
545                         var hug1:ContextMenu = new ContextMenu();
546
547                         hug1.hideBuiltInItems();
548
549                         hug1.builtInItems.quality = true;
550                         contextMenu = hug1;
551                         var hug2:Object = loaderInfo.parameters;
552                         this.flashVars = new NicoFlashVars();
553
554                         NicoFlashVarsInitializer.setFlashVars(this.flashVars, hug2);
555
556                         this._playerPageMyselfURL = (this.configure.BASE_URL + "watch/" + this.flashVars.watchID);
557                         this.nicoViewControllerClient.nicoConfig = this.configure;
558                         this.nicoViewControllerClient.flashVars = this.flashVars;
559                         this.nicoViewControllerClient.playerPageMyselfURL = this._playerPageMyselfURL;
560
561                         this.pluginClient.setProperty("nicoConfig", this.configure);
562                         this.pluginClient.setProperty("flashVars", this.flashVars);
563
564                         this.nicoViewControllerClient.pluginClient = this.pluginClient;
565                         var hug3:EventSequence = new EventSequence(this);
566
567                         hug3.push(this.initializePlayerVersion, this.initializePlayerInfo, this.initializeCrossSharedObjectSWF, this.initializeJSConnector, this.initializeJumper, this.createLogger, this.initializePlayerConfig, this.loadTemplateSWF, this.loadViewControllerSWF, this.loadNicoScriptSWF, this.loadVideoInfoAPI, this.initializeMyList, this.loadBGMVideoInfo, this.initializeNG, this.initializeCommentStorage, this.initializeGetChecklist, this.initializeHiroba, this.prepareVideo, this.prepareCommentLists, this.initializeModelAndView, this.initializeCommentRouter, this.initializeModelAndView4Watch, this.initializeSponsorVideo, this.initializeLogger, this.loadConfirm, this.initializePlugin, this.initializeCommentLists, this._delayVideo, this._loadVideo, this.beginToPlayVideo);
568                         hug3.next();
569                 }
570
571                 private function initializeCrossSharedObjectSWF():void
572                 {       //MethodID:30, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 64
573                         internal var _url:String;                                       //slotID:1
574
575                         _url = null;
576                         _url = StringUtils.joinQuery(this.configure.CROSSSHAREDOBJECT_SWF_URL, {t:this.playerVersion.crossSharedObject});
577
578                         CrossSharedObject.init(_url, EventSequence.bind(function(hug1:Boolean):void{    //MethodID:29, LocalCount= 3 , MaxScope= 1, MaxStack= 5, CodeLength= 134
579                                 internal var sccessed:Boolean;                                  //slotID:1
580
581                                 sccessed = hug1;
582
583                                 if(!sccessed) throw new Error("NicoPlayer.loadCrossSharedObjectSWF: failure to load \"" + configure.CROSSSHAREDOBJECT_SWF_URL + "\"");
584
585                                 if(CrossSharedObject.isPersistable || !configure.CROSSSHAREDOBJECT_NONIMG_SWF_URL){
586                                         EventSequence.current.next();
587                                 }else{
588                                         CrossSharedObject.terminate();
589
590                                         _url = StringUtils.joinQuery(configure.CROSSSHAREDOBJECT_NONIMG_SWF_URL, {t:playerVersion.crossSharedObject});
591
592                                         CrossSharedObject.init(_url, EventSequence.bind(function(hug1:Boolean):void{    //MethodID:28, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 38
593                                                 if(!hug1) throw new Error("NicoPlayer.loadCrossSharedObjectNoNimgSWF: failure to load \"" + configure.CROSSSHAREDOBJECT_NONIMG_SWF_URL + "\"");
594                                                 EventSequence.current.next();
595                                         }));
596                                 }
597                         }));
598                 }
599
600                 private function createLogger():void
601                 {       //MethodID:31, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 42
602                         this._logManager = new LogManager(!CrossSharedObject.isPersistable);
603                         this.nicoViewControllerClient.logManager = this._logManager;
604
605                         EventSequence.current.next();
606                 }
607
608                 private function initializePlayerConfig():void
609                 {       //MethodID:32, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 116
610                         this.playerConfig = new PlayerConfig(this.isThumbWatchMode);
611                         this.nicoViewControllerClient.playerConfig = this.playerConfig;
612
613                         this.pluginClient.setProperty("playerConfig", this.playerConfig);
614
615                         this.playerConfig.deepenedCommentForce = this.flashVars.isDeepenedCommentForce;
616                         this.playerConfig.aspectRatio = ((this.flashVars.isWide || this._isPlaylist) ? ScreenAspectRatio.WIDE : ScreenAspectRatio.NORMAL);
617
618                         EventSequence.current.next();
619                 }
620
621                 private function initializeJumper():void
622                 {       //MethodID:33, LocalCount= 1 , MaxScope= 1, MaxStack= 4, CodeLength= 74
623                         this.jumper = new Jumper(this.configure, this.flashVars.watchID);
624                         this.nicoViewControllerClient.jumper = this.jumper;
625                         this._startVposConfig = new StartVposConfig(this.jumper, this.flashVars);
626                         this.nicoViewControllerClient.startVposConfig = this._startVposConfig;
627
628                         EventSequence.current.next();
629                 }
630
631                 private function initializePlayerVersion():void
632                 {       //MethodID:35, LocalCount= 2 , MaxScope= 2, MaxStack= 7, CodeLength= 116
633                         internal var request:URLRequest;                                //slotID:1
634                         internal var params:URLVariables;                               //slotID:2
635                         internal var api:APICacheProxy;                                 //slotID:3
636
637                         request = new URLRequest(this.configure.PLAYERVERSION_XML_URL);
638                         params = new URLVariables();
639                         params.v = this.flashVars.playerVersionUpdated;
640                         request.data = params;
641                         api = new APICacheProxy(request, 0, uint.MAX_VALUE, this.flashVars.playerVersionUpdated, false);
642                         this.playerVersion = new PlayerVersion(EventSequence.bind(function(hug1:Boolean):void{  //MethodID:34, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 36
643                                 if(!hug1) throw new Error("NicoPlayer.playerVersion. initialize error");
644
645                                 nicoViewControllerClient.playerVersion = playerVersion;
646
647                                 EventSequence.current.next();
648                         }), api);
649                 }
650
651                 private function initializeJSConnector():void
652                 {       //MethodID:37, LocalCount= 2 , MaxScope= 2, MaxStack= 4, CodeLength= 71
653                         internal var request:URLRequest;                                //slotID:1
654
655                         request = new URLRequest(this.configure.JSCONNECTOR_SWF_URL);
656                         request.data = new URLVariables("v=" + this.playerVersion.jsconnector);
657
658                         JSConnector.init(request, EventSequence.current.bind(function(hug1:Boolean):void{       //MethodID:36, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 27
659                                 if(!hug1) throw new IOError("NicoPlayer.initializeJSConnector: initialize error.");
660                                 EventSequence.current.next();
661                         }));
662                 }
663
664                 private function initializePlayerInfo():void
665                 {       //MethodID:39, LocalCount= 2 , MaxScope= 2, MaxStack= 7, CodeLength= 116
666                         internal var request:URLRequest;                                //slotID:1
667                         internal var params:URLVariables;                               //slotID:2
668                         internal var api:APICacheProxy;                                 //slotID:3
669
670                         request = new URLRequest(this.configure.PLAYERINFO_XML_URL);
671                         params = new URLVariables();
672                         params.v = this.flashVars.playerInfoUpdated;
673                         request.data = params;
674                         api = new APICacheProxy(request, 0, uint.MAX_VALUE, this.flashVars.playerInfoUpdated, false);
675                         this.playerInfo = new PlayerInfo(EventSequence.bind(function(hug1:Boolean):void{        //MethodID:38, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 36
676                                 if(!hug1) throw new Error("NicoPlayer.playerInfo. initialize error");
677
678                                 nicoViewControllerClient.playerInfo = playerInfo;
679
680                                 EventSequence.current.next();
681                         }), api);
682                 }
683
684                 private function loadTemplateSWF():void
685                 {       //MethodID:41, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 42
686                         HTTPUtils.loadSWF(EventSequence.bind(function(hug1:*):void{     //MethodID:40, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 45
687                                 if(!hug1) throw new Error("NicoPlayer.loadTemplateSWF: failure to load \"" + configure.VIEW_SWF_URL + "\"");
688
689                                 nicoViewControllerClient.viewRoot = hug1;
690
691                                 EventSequence.current.next();
692                         }), this.configure.VIEW_SWF_URL, {t:this.playerVersion.nicoplayerTemplate});
693                 }
694
695                 private function loadViewControllerSWF():void
696                 {       //MethodID:43, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 42
697                         HTTPUtils.loadSWF(EventSequence.bind(function(hug1:*):void{     //MethodID:42, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 89
698                                 if(!hug1) throw new Error("NicoPlayer.loadViewControllerSWF: failure to load \"" + configure.VIEWCONTROLLER_SWF_URL + "\"");
699                                 addChild(nicoViewControllerClient.viewRoot);
700
701                                 nicoViewController = INicoViewController(hug1);
702
703                                 nicoViewController.startInit(nicoViewControllerClient);
704
705                                 if(playlistController) playlistController.nicoViewController = nicoViewController;
706                                 EventSequence.current.next();
707                         }), this.configure.VIEWCONTROLLER_SWF_URL, {t:this.playerVersion.nicoplayerViewController});
708                 }
709
710                 private function loadNicoScriptSWF():void
711                 {       //MethodID:45, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 76
712                         if(!this.flashVars.hasOwnerThread && !this.playlistFlashVars){
713                                 EventSequence.current.next();
714
715                                 return;
716                         }
717
718                         HTTPUtils.loadSWF(EventSequence.bind(function(hug1:*):void{     //MethodID:44, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 50
719                                 if(!hug1) throw new Error("NicoPlayer.loadViewControllerSWF: failure to load \"" + configure.NICOSPLAYER_URL + "\"");
720
721                                 nicosPlayer = INicoSPlayer(hug1);
722
723                                 EventSequence.current.next();
724                         }), this.configure.NICOSPLAYER_URL, {t:this.playerVersion.nicoscriptPlayer});
725                 }
726
727                 private function getGetFLVAPIParams():Object
728                 {       //MethodID:46, LocalCount= 2 , MaxScope= 1, MaxStack= 4, CodeLength= 165
729                         var hug1:Object = {};
730                         hug1["v"] = ((this._isPlaylist && this.playlistController) ? this.playlistController.threadID : this.flashVars.watchID);
731
732                         if(this.flashVars.videoType == VideoType.SWF) hug1["as3"] = "1";
733
734                         if(this.flashVars.forceLowMode) hug1["lo"] = "1";
735
736                         if(this.flashVars.economyMode) hug1["eco"] = this.flashVars.economyMode;
737
738                         if(this.flashVars.watchFlashVars.noHiroba || this._isPlaylist) hug1["nh"] = "1";
739
740                         return hug1;
741                 }
742
743                 private function loadVideoInfoAPI():void
744                 {       //MethodID:48, LocalCount= 2 , MaxScope= 2, MaxStack= 6, CodeLength= 65
745                         this.nicoViewControllerClient.getFLVData = null;
746
747                         this.systemMessage.informln(__MSG__("動画情報を取得開始"));
748
749                         this.getFLV = new GetFLV(this.configure.GETFLV_URL, this.getGetFLVAPIParams(), EventSequence.bind(function(hug1:Boolean):void{  //MethodID:47, LocalCount= 7 , MaxScope= 0, MaxStack= 4, CodeLength= 508
750                                 var hug2:* = undefined;
751                                 var hug6:* = undefined;
752                                 var hug3:* = _playerPageMyselfURL;
753
754                                 if(!hug1 || getFLV.closed){
755                                         systemMessage.informln(__MSG__("動画情報の取得に失敗"));
756
757                                         hug2 = (("<p><b>" + __MSG__("動画情報の取得に失敗しました。") + "</b></p>" + "<p>" + __MSG__("ログイン状態が解除されているか、動画が非公開状態にある可能性があります。") + "<br />") + __MSG__("<a href=\"[[url]]\">リロードして再度ログイン</a>", hug3) + "</p>");
758
759                                         systemMessage.alert(hug2);
760
761                                         return;
762                                 }
763
764                                 if(!initializeInfo){
765                                         initializeInfo = InitializeInfo.getInstance();
766                                         nicoViewControllerClient.initializeInfo = initializeInfo;
767
768                                         pluginClient.setProperty("initializeInfo", initializeInfo);
769                                 }
770
771                                 if(!initializeInfo.userID){
772                                         systemMessage.informln(__MSG__("ユーザー情報の取得に失敗"));
773
774                                         hug2 = ("<p><b>" + __MSG__("ユーザー情報の取得に失敗しました。") + "</b></p>" + "<p>" + __MSG__("以下のページにアクセスしログインしてください。") + "<a href=\"" + hug3 + "\">" + hug3 + "</a>" + "</p>");
775
776                                         systemMessage.alert(hug2);
777
778                                         return;
779                                 }
780
781                                 if(flashVars.isChannel){
782                                         systemMessage.informln(__MSG__("チャンネル動画"));
783                                 }else if(flashVars.isCommunityThread){
784                                         systemMessage.informln(__MSG__("コミュニティ動画"));
785                                 }
786
787                                 nicoViewControllerClient.getFLVData = getFLV;
788
789                                 if(!pluginClient.hasInitialized("getFLV")) pluginClient.setProperty("getFLV", getFLV);
790                                 SystemMessage.instance.informln(__MSG__("スレッド(動画)") + ":" + flashVars.watchID);
791
792                                 var hug4:* = new RegExp("(https?|rtmp(e|t|te)?)://([^.]+).+", "ig");
793                                 var hug5:* = hug4.exec(getFLV.videoURL);
794
795                                 if(hug5 != null){
796                                         hug6 = ((__MSG__("動画ホスト") + ":") + ((hug5.length >= 1) ? hug5[3] : ""));
797
798                                         if(new RegExp("low$").test(getFLV.videoURL)) hug6 += __MSG__(" (エコノミー)");
799                                         SystemMessage.instance.informln(hug6);
800                                 }
801
802                                 EventSequence.current.next();
803                         }));
804                 }
805
806                 private function initializeMyList():void
807                 {       //MethodID:49, LocalCount= 1 , MaxScope= 1, MaxStack= 4, CodeLength= 46
808                         this.myList = new MyList(this.configure, this.getFLV.threadID);
809                         this.nicoViewControllerClient.myList = this.myList;
810
811                         EventSequence.current.next();
812                 }
813
814                 private function loadBGMVideoInfo():void
815                 {       //MethodID:51, LocalCount= 2 , MaxScope= 2, MaxStack= 4, CodeLength= 119
816                         this.BGMVideoInfos = [];
817
818                         if((!this.flashVars.importedBGMVideos || (this.flashVars.importedBGMVideos.length == 0)) || ((this.getFLV.deleted != 0) && (this.getFLV.deleted != 8))){
819                                 EventSequence.current.next();
820
821                                 return;
822                         }
823
824                         GetBGM.exec(EventSequence.bind(function(hug1:Boolean, hug2:Array):void{ //MethodID:50, LocalCount= 5 , MaxScope= 0, MaxStack= 3, CodeLength= 118
825                                 var hug3:* = undefined;
826                                 var hug4:* = undefined;
827
828                                 if(!hug1){
829                                         systemMessage.informln(__MSG__("引用動画の情報の取得に失敗"));
830
831                                         hug3 = _playerPageMyselfURL;
832                                         hug4 = ("<p><b>" + __MSG__("引用動画の情報の取得に失敗しました。") + "</b></p>" + "<p>" + __MSG__("お手数ですが以下のリンクをおしてページをロードしてください。") + "<a href=\"" + hug3 + "\">" + hug3 + "</a>" + "</p>");
833
834                                         systemMessage.alert(hug4);
835
836                                         return;
837                                 }
838
839                                 BGMVideoInfos = hug2;
840
841                                 EventSequence.current.next();
842                         }), this.configure.GETBGM_API_URL, this.getFLV.threadID);
843                 }
844
845                 private function initializeNG():void
846                 {       //MethodID:55, LocalCount= 2 , MaxScope= 2, MaxStack= 11, CodeLength= 145
847                         internal var noLoad:Boolean;                                    //slotID:1
848
849                         noLoad = !CrossSharedObject.isPersistable;
850                         this.nicoViewControllerClient.ngFilter = null;
851                         this.ngComment = new NGComment(this.initializeInfo.userID, this.initializeInfo.ngRevision, this.configure.GETCONFIGURENGCLIENT_URL, this.initializeInfo.isPremium, this.playerConfig, this.initializeInfo.isNGMaintenance, noLoad, this.flashVars.isMymemory, (this.isThumbWatchMode ? null : this.flashVars.watchFlashVars.csrfToken));
852
853                         this.ngComment.onInitialized.add(EventSequence.bind(function(hug1:Boolean):void{        //MethodID:53, LocalCount= 3 , MaxScope= 1, MaxStack= 4, CodeLength= 187
854                                 internal var success:Boolean;                                   //slotID:1
855                                 internal var ngCommentLength:*;                                 //slotID:2
856                                 internal var ngUserLength:*;                                    //slotID:3
857
858                                 ngCommentLength = undefined;
859                                 ngUserLength = undefined;
860                                 success = hug1;
861
862                                 if(!success) systemMessage.alert("<p><b>" + __MSG__("NG設定の読み込みに失敗") + "</b></p>" + "<p>" + __MSG__("時間を空けてアクセスしていただくか、下のリンクからお知らせください。") + "<br />" + "<a href=\"https://secure.nicovideo.jp/secure/support_form\" target=\"_blank\">" + "お問い合わせ" + "</a>" + "</p>");
863
864                                 nicoViewControllerClient.ngFilter = ngComment;
865
866                                 if(!pluginClient.hasInitialized("ngFilter")) pluginClient.setProperty("ngFilter", ngComment);
867
868                                 if(!isThumbWatchMode){
869                                         ngCommentLength = 0;
870                                         ngUserLength = 0;
871
872                                         ngComment.list.forEach(function(hug1:NGInfo, hug2:int, hug3:Array):void{        //MethodID:52, LocalCount= 6 , MaxScope= 0, MaxStack= 2, CodeLength= 79
873                                                 if(hug1.type == NGType.MESSAGE){
874                                                         ngCommentLength++;
875                                                 }else if(hug1.type == NGType.USER_ID){
876                                                         ngUserLength++;
877                                                 }
878                                         });
879                                         _logManager.observer.onNGCommentInitialized(ngCommentLength, ngUserLength);
880                                 }
881
882                                 EventSequence.current.next();
883                         }));
884                         this.ngComment.onUpdated.add(function(hug1:Array, hug2:String):void{    //MethodID:54, LocalCount= 6 , MaxScope= 0, MaxStack= 2, CodeLength= 56
885                                 var hug3:ICommentList = null;
886
887                                 if(hug2 == NGResponseConstants.UNSERVE) return;
888
889                                 for each(hug3 in commentListContainer){
890                                         hug3.serveCommentList();
891                                 }
892                         });
893                 }
894
895                 private function initializeCommentStorage():void
896                 {       //MethodID:59, LocalCount= 2 , MaxScope= 2, MaxStack= 3, CodeLength= 106
897                         internal var client:MessageServerClient;                        //slotID:1
898
899                         client = null;
900                         this.nicoViewControllerClient.commentStorageEvents = null;
901                         client = new MessageServerClient(this.getFLV.messageServerURL);
902
903                         client.connectionLost.add(function(hug1:String):void{   //MethodID:56, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 20
904                                 systemMessage.informln(__MSG__("コメント受信中にエラーが発生: ") + hug1);
905                         });
906                         client.connected.add(function():void{   //MethodID:57, LocalCount= 1 , MaxScope= 0, MaxStack= 3, CodeLength= 18
907                                 systemMessage.informln(__MSG__("コメントサーバーへの接続準備完了"));
908                         });
909
910                         if(this._logManager) this._logManager.observer.onThreadLoadStarted();
911                         client.connect(EventSequence.bind(function(hug1:Boolean, hug2:String):void{     //MethodID:58, LocalCount= 3 , MaxScope= 0, MaxStack= 8, CodeLength= 131
912                                 commentStorage = new CommentStorage(client, keygen, initializeInfo.userID, initializeInfo.isPremium, flashVars, getFLV);
913
914                                 if((playerInfo.leafFilter.indexOf(getFLV.messageServerURL) != (-1)) || (flashVars.leafSwitch == NicoFlashVars.LEAF_DISABLE)) commentStorage.forceLeafOff = true;
915
916                                 nicoViewControllerClient.commentStorageEvents = new CommentStorageEvents(commentStorage);
917
918                                 if(_logManager) _logManager.observer.onThreadLoadCompleted(hug1);
919                                 EventSequence.current.next();
920                         }));
921                 }
922
923                 private function initializeGetChecklist():void
924                 {       //MethodID:61, LocalCount= 2 , MaxScope= 2, MaxStack= 6, CodeLength= 102
925                         internal var apiCacheProxy:APICacheProxy;                       //slotID:1
926                         internal var callback:Function;                                 //slotID:2
927                         internal var noLoad:Boolean;                                    //slotID:3
928
929                         apiCacheProxy = new APICacheProxy(new URLRequest(this.configure.GET_CHECKLIST_URL), 0, 0, this.initializeInfo.userID);
930                         callback = EventSequence.bind(function(hug1:Boolean):void{      //MethodID:60, LocalCount= 2 , MaxScope= 0, MaxStack= 1, CodeLength= 11
931                                 EventSequence.current.next();
932                         });
933
934                         noLoad = !CrossSharedObject.isPersistable;
935                         this.getChecklist = new GetChecklist(callback, apiCacheProxy, this.flashVars.watchFlashVars.useChecklistCache, noLoad);
936                 }
937
938                 private function initializeHiroba():void
939                 {       //MethodID:69, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 380
940                         this._logManager.observer.onHirobaInitializeStarted();
941
942                         if((this.getFLV.hirobaHost == null) || (this.getFLV.hirobaPort == 0) || (this.getFLV.hirobaThreadID == null) || this.flashVars.watchFlashVars.noHiroba || this.flashVars.isNoComment || this.flashVars.watchFlashVars.isOwnerThreadEditMode || this.flashVars.watchFlashVars.isEditMode){
943                                 if(!(((this.getFLV.hirobaHost != null) && (this.getFLV.hirobaPort != 0) && !(!(this.getFLV.hirobaThreadID == null))) && (this.flashVars.watchFlashVars.noHiroba || this.flashVars.isNoComment || this.flashVars.watchFlashVars.isOwnerThreadEditMode || this.flashVars.watchFlashVars.isEditMode))) this._logManager.observer.onHirobaConnected(false, HirobaErrorStatus.HIROBA_INFO_NOT_FOUND, HirobaEventReferer.NICO_PLAYER);
944                                 EventSequence.current.next();
945
946                                 return;
947                         }
948
949                         if(this.nicoViewControllerClient.hirobaPlayer){
950                                 this._logManager.observer.onHirobaInitializeAborted();
951                                 EventSequence.current.next();
952
953                                 return;
954                         }
955
956                         this.hirobaPlayer = new HirobaPlayer(this.playerConfig, this.initializeInfo.isPremium);
957                         this.nicoViewControllerClient.hirobaPlayer = this.hirobaPlayer;
958
959                         HTTPUtils.loadSWF(function(hug1:Sprite):void{   //MethodID:68, LocalCount= 3 , MaxScope= 1, MaxStack= 6, CodeLength= 276
960                                 internal var swf:Sprite;                                        //slotID:1
961                                 internal var connector:IHirobaConnector;                        //slotID:2
962                                 internal var succeeded:Boolean;                                 //slotID:3
963                                 internal var client:HirobaConnectorClient;                      //slotID:4
964                                 internal var onConnectionFailed:Function;                       //slotID:5
965                                 internal var onDisconnected:Function;                           //slotID:6
966                                 internal var onConnected:Function;                              //slotID:7
967
968                                 connector = null;
969                                 client = null;
970                                 onConnectionFailed = null;
971                                 onDisconnected = null;
972                                 onConnected = null;
973                                 swf = hug1;
974                                 onConnectionFailed = function(hug1:HirobaErrorEvent):void{      //MethodID:63, LocalCount= 2 , MaxScope= 0, MaxStack= 4, CodeLength= 37
975                                         systemMessage.informln(__MSG__("広場の接続中にエラーが発生"));
976                                         _logManager.observer.onHirobaConnected(false, hug1.text, hug1.referer);
977                                 };
978
979                                 onDisconnected = function(hug1:HirobaErrorEvent):void{  //MethodID:64, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 36
980                                         systemMessage.informln(__MSG__("広場の接続中にエラーが発生"));
981                                         _logManager.observer.onHirobaDisconnected(hug1.text, hug1.referer);
982                                 };
983
984                                 onConnected = function(hug1:Boolean, hug2:String, hug3:String):void{    //MethodID:66, LocalCount= 5 , MaxScope= 1, MaxStack= 4, CodeLength= 243
985                                         internal var succeeded:Boolean;                                 //slotID:1
986                                         internal var status:String;                                     //slotID:2
987                                         internal var referer:String;                                    //slotID:3
988
989                                         succeeded = hug1;
990                                         status = hug2;
991                                         referer = hug3;
992
993                                         if((referer == HirobaEventReferer.HIROBA_AGENT) && succeeded){
994                                                 _logManager.observer.onHirobaConnected(true, status, referer);
995
996                                                 return;
997                                         }
998
999                                         if(!succeeded){
1000                                                 systemMessage.informln(__MSG__("広場の接続に失敗"));
1001                                                 _logManager.observer.onHirobaConnected(false, status, referer);
1002
1003                                                 return;
1004                                         }
1005
1006                                         systemMessage.informln(__MSG__("広場の接続に成功"));
1007                                         _logManager.observer.onHirobaConnected(true, status, referer);
1008                                         hirobaPlayer.onClickedLink.add(function():void{ //MethodID:65, LocalCount= 1 , MaxScope= 0, MaxStack= 1, CodeLength= 15
1009                                                 if(videoController) videoController.stop();
1010                                         });
1011
1012                                         hirobaPlayer.connector = connector;
1013
1014                                         if(commentRouter) commentRouter.addHiroba(hirobaPlayer);
1015
1016                                         if(marqueeClient && marqueeClient.marqueePlayer) client.insertItemOnMarquee_0 = INicoMarqueePlayer(marqueeClient.marqueePlayer).interruptContent;
1017
1018                                         hirobaConnectorClient = client;
1019
1020                                         nicoViewController.onHirobaInitialized();
1021                                 };
1022
1023                                 connector = IHirobaConnector(swf);
1024                                 succeeded = (connector != null);
1025
1026                                 if(!succeeded){
1027                                         systemMessage.informln(__MSG__("広場の接続に失敗"));
1028                                         _logManager.observer.onHirobaConnected(false, HirobaErrorStatus.HIROBA_CONNECTOR_NOT_FOUND, HirobaEventReferer.NICO_PLAYER);
1029
1030                                         return;
1031                                 }
1032
1033                                 client = new HirobaConnectorClient(new HirobaMessageServerInfo(getFLV, configure.GETFLV_URL, getGetFLVAPIParams()), initializeInfo.userID, keygen, function():Number{   //MethodID:62, LocalCount= 1 , MaxScope= 0, MaxStack= 1, CodeLength= 25
1034                                         return (playerConfig.isMute ? 0 : playerConfig.volume);
1035                                 });
1036
1037                                 client.checkList = getChecklist;
1038
1039                                 connector.initialize(client);
1040                                 connector.addEventListener(HirobaErrorEvent.CONNECTION_FAIL, onConnectionFailed);
1041                                 connector.addEventListener(HirobaErrorEvent.DISCONNECTED, onDisconnected);
1042                                 connector.addEventListener(HirobaEvent.CLICKED_LINK, function(hug1:Event):void{ //MethodID:67, LocalCount= 2 , MaxScope= 0, MaxStack= 1, CodeLength= 15
1043                                         if(videoController) videoController.stop();
1044                                 });
1045                                 connector.connect(onConnected);
1046                         }, this.configure.HIROBACONNECTOR_SWF_URL, {v:this.playerVersion.hirobaconnector});
1047                         EventSequence.current.next();
1048                 }
1049
1050                 private function prepareVideo():void
1051                 {       //MethodID:71, LocalCount= 2 , MaxScope= 2, MaxStack= 8, CodeLength= 570
1052                         internal var videoWidth:int;                                    //slotID:1
1053                         internal var videoHeight:int;                                   //slotID:2
1054
1055                         this.nicoViewControllerClient.video = null;
1056                         this.nicoViewControllerClient.videoController = null;
1057
1058                         if(!this.videoLayerManager){
1059                                 this.videoLayerManager = new VideoLayerManager(this.nicoViewController.videoBase, this.playerConfig.aspectRatio);
1060
1061                                 if(this.playerConfig.deepenedComment){
1062                                         ObjectUtils.callLater(function():void{  //MethodID:70, LocalCount= 1 , MaxScope= 0, MaxStack= 1, CodeLength= 8
1063                                                 videoLayerManager.deepenComment();
1064                                         });
1065                                 }
1066
1067                                 this.nicoViewControllerClient.videoLayerManager = this.videoLayerManager;
1068                         }else{
1069                                 this.videoLayerManager.refreshLayers();
1070                         }
1071
1072                         if(!this.pluginClient.hasInitialized("videoLayerManager")) this.pluginClient.setProperty("videoLayerManager", this.videoLayerManager);
1073
1074                         videoWidth = ((this.flashVars.isWide || this._isPlaylist) ? VideoLayerConstants.VIDEO_LAYER_HD_WIDTH : VideoLayerConstants.VIDEO_LAYER_SD_WIDTH);
1075                         videoHeight = ((this.flashVars.isWide || this._isPlaylist) ? VideoLayerConstants.VIDEO_LAYER_HD_HEIGHT : VideoLayerConstants.VIDEO_LAYER_SD_HEIGHT);
1076
1077                         if(this.video && this.video.isInitialized){
1078                                 this.video.close();
1079
1080                                 this.video = null;
1081                         }
1082
1083                         this.video = new VideoWrapper(this.videoLayerManager.videoLayer, this.getFLV, this.configure, this.flashVars, videoWidth, videoHeight);
1084                         this.nicoViewControllerClient.video = this.video;
1085                         this.videoController = new VideoController(this.video, this.playerConfig, this.initializeInfo.isPremium, this._isPlaylist);
1086                         this.nicoViewControllerClient.videoController = this.videoController;
1087
1088                         if(this._logManager){
1089                                 this.video.onVideoLoadComplete.add(this._logManager.observer.onVideoLoadCompleted);
1090                                 this.video.onVideoBufferingStarted.add(this._logManager.observer.onVideoBufferingStarted);
1091                         }
1092
1093                         if(this.playlistController) this.playlistController.videoController = this.videoController;
1094
1095                         if(!this.pluginClient.hasInitialized("videoController")) this.pluginClient.setProperty("videoController", this.videoController);
1096
1097                         if(this._onChangedVideoStatus != null) this.video.onChangedVideoStatus.add(this._onChangedVideoStatus);
1098
1099                         if(this.vposWatcher) this.vposWatcher.kill();
1100
1101                         this.vposWatcher = new VposWatcher(this.video);
1102
1103                         if(this.videoLoadGuardian != null) this.videoLoadGuardian.destroy();
1104
1105                         this.videoLoadGuardian = new VideoLoadGuardian(this.video, this.initializeInfo.isPremium);
1106
1107                         if(this.nicoViewControllerClient.videoLoadWatcher == null) this.nicoViewControllerClient.videoLoadWatcher = new VideoLoadWatcher();
1108                         EventSequence.current.next();
1109                 }
1110
1111                 private function prepareCommentLists():void
1112                 {       //MethodID:73, LocalCount= 2 , MaxScope= 2, MaxStack= 12, CodeLength= 597
1113                         internal var normalThreadID:String;                             //slotID:1
1114                         internal var leafMode:Boolean;                                  //slotID:2
1115                         internal var clear:Function;                                    //slotID:3
1116                         internal var filtered:CommentPoolContainer;                     //slotID:4
1117
1118                         filtered = null;
1119                         clear = function():void{        //MethodID:72, LocalCount= 1 , MaxScope= 0, MaxStack= 2, CodeLength= 150
1120                                 nicoViewControllerClient.commentListContainer = null;
1121                                 nicoViewControllerClient.nicoSClient = null;
1122
1123                                 if(nicosClient) nicosClient.clear();
1124
1125                                 if(nicosPlayer) nicosPlayer.clear();
1126
1127                                 nicosClient = null;
1128                                 privateCommentList = null;
1129                                 commentList = null;
1130                                 nicoSCommentList = null;
1131                                 ownerCommentList = null;
1132                                 localCommentList = null;
1133
1134                                 delete commentListContainer[CommentConstants.CL_PRIVATE];
1135                                 delete commentListContainer[CommentConstants.CL_MAIN];
1136                                 delete commentListContainer[CommentConstants.CL_NICOS];
1137                                 delete commentListContainer[CommentConstants.CL_OWNER];
1138                                 delete commentListContainer[CommentConstants.CL_LOCAL];
1139                         };
1140
1141                         clear();
1142
1143                         normalThreadID = this.getFLV.threadID;
1144                         leafMode = (((this.playerInfo.leafFilter.indexOf(this.getFLV.messageServerURL) != (-1)) || (this.flashVars.leafSwitch != NicoFlashVars.LEAF_DISABLE)) && this.playerConfig.isEnabledLeafMode);
1145
1146                         if(this.flashVars.isCommunityThread){
1147                                 this.privateCommentList = new CommentList(this.getFLV.threadID, this.getFLV.videoLength, this.commentStorage, CommentConstants.CL_PRIVATE, this.flashVars.isMymemory, leafMode);
1148                                 this.commentListContainer[CommentConstants.CL_PRIVATE] = this.privateCommentList;
1149                                 this.mainCommentListName = CommentConstants.CL_PRIVATE;
1150                                 normalThreadID = this.getFLV.optionalThreadID;
1151                         }
1152
1153                         if(this.getFLV.nicoSThreadID){
1154                                 this.nicoSCommentList = new CommentList(this.getFLV.nicoSThreadID, this.getFLV.videoLength, this.commentStorage, CommentConstants.CL_NICOS);
1155                                 this.commentListContainer[CommentConstants.CL_NICOS] = this.nicoSCommentList;
1156                         }
1157
1158                         this.commentList = new CommentList(normalThreadID, this.getFLV.videoLength, this.commentStorage, CommentConstants.CL_MAIN, this.flashVars.isMymemory, leafMode);
1159                         this.commentListContainer[CommentConstants.CL_MAIN] = this.commentList;
1160
1161                         if(this.flashVars.hasOwnerThread){
1162                                 this.nicosClient = new NicoSClient(this.nicosPlayer, this.videoController, this.videoLayerManager, this.jumper, this.flashVars, null, null, this.nicoSCommentList, this.playerConfig, this._isPlaylist);
1163                                 this.ownerCommentList = new OwnerCommentList(normalThreadID, this.commentStorage, this.nicosClient, new RegisterBGM(this.configure));
1164                                 this.commentListContainer[CommentConstants.CL_OWNER] = this.ownerCommentList;
1165                         }
1166
1167                         this.localCommentList = new LocalCommentList();
1168                         this.commentListContainer[CommentConstants.CL_LOCAL] = this.localCommentList;
1169                         this.nicoViewControllerClient.commentListContainer = this.commentListContainer;
1170                         this.nicoViewControllerClient.nicoSClient = this.nicosClient;
1171
1172                         if(!this.pluginClient.hasInitialized("commentListContainer")) this.pluginClient.setProperty("commentListContainer", this.commentListContainer);
1173
1174                         if(!this.nicoViewControllerClient.filteredCommentPoolContainers) this.nicoViewControllerClient.filteredCommentPoolContainers = [];
1175
1176                         if(!this.pluginClient.hasInitialized("filteredCommentPoolContainer")){
1177                                 filtered = new CommentPoolContainer();
1178
1179                                 this.pluginClient.setProperty("filteredCommentPoolContainer", filtered);
1180                                 this.nicoViewControllerClient.filteredCommentPoolContainers.push(filtered);
1181                         }
1182
1183                         EventSequence.current.next();
1184                 }
1185
1186                 private function initializeModelAndView():void
1187                 {       //MethodID:74, LocalCount= 3 , MaxScope= 1, MaxStack= 9, CodeLength= 768
1188                         var hug2:GetRelation = null;
1189                         this.nicoViewControllerClient.commentLayer = null;
1190                         this.nicoViewControllerClient.commentLayerView = null;
1191                         this.nicoViewControllerClient.commentViewTransformer = null;
1192                         this.nicoViewControllerClient.jumpMessageLayer = null;
1193                         this.nicoViewControllerClient.replacer = null;
1194                         this.nicoViewControllerClient.channelReplacer = null;
1195                         this.nicoViewControllerClient.deleteFilter = null;
1196                         this.nicoViewControllerClient.externalClient = null;
1197
1198                         this.initializeCommentLayerView();
1199
1200                         this.nicoViewControllerClient.commentLayer = this.commentLayer;
1201                         this.nicoViewControllerClient.commentLayerView = this.commentLayerView;
1202                         this.nicoViewControllerClient.commentViewTransformer = this.commentViewTransformer;
1203
1204                         if(this.nicosClient){
1205                                 this.nicosClient.commentLayerView_ = this.commentLayerView;
1206                                 this.nicosClient.commentLayer_ = this.commentLayer;
1207                         }
1208
1209                         this.jumpMsgLayer = new JumpMessageLayer(this.videoLayerManager.jumpMsgLayer);
1210                         this.nicoViewControllerClient.jumpMessageLayer = this.jumpMsgLayer;
1211                         this.replacer = new Replacer(this.getFLV.ownerFilter, this.configure.GET_CONFIGURE_NGWORD, this.flashVars.watchID, this.initializeInfo.isNGMaintenance, (this.isThumbWatchMode ? null : this.flashVars.watchFlashVars.csrfToken));
1212                         this.nicoViewControllerClient.replacer = this.replacer;
1213
1214                         if(this.getFLV.channelFilter){
1215                                 this.channelReplacer = new ChannelReplacer(this.getFLV.channelFilter);
1216                                 this.nicoViewControllerClient.channelReplacer = this.channelReplacer;
1217                         }
1218
1219                         var hug1:Object = {};
1220
1221                         if(this.commentList) hug1[CommentConstants.CL_MAIN] = this.commentList;
1222
1223                         if(this.nicoSCommentList) hug1[CommentConstants.CL_NICOS] = this.nicoSCommentList;
1224
1225                         if(this.privateCommentList) hug1[CommentConstants.CL_PRIVATE] = this.privateCommentList;
1226
1227                         this.deleteFilter = new DeleteFilter(hug1, (this.isThumbWatchMode ? false : this.flashVars.watchFlashVars.isEditMode));
1228                         this.nicoViewControllerClient.deleteFilter = this.deleteFilter;
1229
1230                         if(!this.audioShutter){
1231                                 this.audioShutter = new ControllerShutter(AudioShutterConstants.END_OF_ENUM, "AUDIO");
1232                                 this.nicoViewControllerClient.audioShutter = this.audioShutter;
1233
1234                                 this.pluginClient.setProperty("audioShutter", this.audioShutter);
1235                         }
1236
1237                         if(!this.externalClient) this.externalClient = new ExternalClient();
1238                         this.externalClient.initialize(this.flashVars.watchID, this.video, this.videoController, this.playerConfig, this.initializeInfo.isPremium, (this.isThumbWatchMode ? false : this.flashVars.watchFlashVars.isOwnerThreadEditMode), (this.getFLV.nicoSThreadID != null));
1239
1240                         this.externalClient.localCommentList = this.localCommentList;
1241                         this.externalClient.ownerCommentList = this.ownerCommentList;
1242                         this.nicoViewControllerClient.externalClient = this.externalClient;
1243
1244                         this.video.onChangedVideoStatus.add(this.externalClient.onChangeVideoStatus);
1245
1246                         if(!this.commentShutter){
1247                                 this.commentShutter = new ControllerShutter(CommentShutterConstants.END_OF_ENUM, "COMMENT");
1248                                 this.nicoViewControllerClient.commentShutter = this.commentShutter;
1249
1250                                 if(this.playlistController != null) this.playlistController.commentShutter = this.commentShutter;
1251                         }
1252
1253                         if(this.nicosClient){
1254                                 this.nicosClient.audioShutter = this.audioShutter;
1255                                 this.nicosClient.commentShutter = this.commentShutter;
1256                         }
1257
1258                         if(!this.flashVars.forceRelationInvisible){
1259                                 hug2 = new GetRelation(HTTPUtils.loadXML, this.configure.GETRELATION_URL, this.flashVars.watchID, this.flashVars.category);
1260                                 this.relatedList = new RelatedVideoList(hug2, this.flashVars.noRelatedVideo);
1261                                 this.nicoViewControllerClient.relatedList = this.relatedList;
1262                         }
1263
1264                         EventSequence.current.next();
1265                 }
1266
1267                 private function initializeCommentRouter():void
1268                 {       //MethodID:78, LocalCount= 2 , MaxScope= 2, MaxStack= 8, CodeLength= 271
1269                         this.nicoViewControllerClient.lockedComment = null;
1270                         this.nicoViewControllerClient.commentRouter = null;
1271
1272                         if(this.isThumbWatchMode && !this.flashVars.thumbFlashVars.thumbComment){
1273                                 EventSequence.current.next();
1274
1275                                 return;
1276                         }
1277
1278                         this.lockedComment = new LockedComment(this.getFLV.threadID, this.mainCommentListName, this.flashVars.watchFlashVars.isPostLocked, this.flashVars.watchFlashVars.isEditMode);
1279                         this.nicoViewControllerClient.lockedComment = this.lockedComment;
1280                         this.deleteFilter.lockedComment = this.lockedComment;
1281                         this.commentRouter = new CommentRouter(this.flashVars, this.playerConfig, this.lockedComment, this.nicosClient, this.initializeInfo.isPremium, this.channelReplacer);
1282
1283                         this.commentRouter.onCommentPostErorr.add(function(hug1:String):void{   //MethodID:75, LocalCount= 3 , MaxScope= 0, MaxStack= 5, CodeLength= 580
1284                                 var hug2:String = hug1;
1285
1286                                 switch(hug2){
1287                                 case CommentRouter.ERROR_POST_184:
1288                                         systemMessage.informComment(__MSG__("チャンネルとコミュニティ動画では184コマンドを使用できません"));
1289                                         break;
1290                                 case CommentRouter.ERROR_POST_AT_COMMENT_UNDEFINED:
1291                                         systemMessage.alert(__MSG__("入力された@コメントは、以下のどちらかの理由で使用できません。<br />") + __MSG__("・存在しない<br />") + __MSG__("・投稿者以外は使えない<br />") + __MSG__("現在、動画閲覧者が使用できるのは、") + "<a href=\"http://info.nicovideo.jp/help/player/script/90.html#s01\" target=\"_blank\">" + __MSG__("@ボタン(閲覧者用)") + "</a>、<a href=\"http://info.nicovideo.jp/help/player/script/90.html#s02\" target=\"_blank\">" + __MSG__("@ピザ") + "</a>" + __MSG__("の2つです。"));
1292                                         break;
1293                                 case CommentRouter.ERROR_POST_BUTTON_ONCE:
1294                                         systemMessage.informComment(__MSG__("@ボタンは、1視聴につき1つまでしかご利用になれません"));
1295                                         break;
1296                                 case CommentRouter.ERROR_POST_BUTTON_PREMIUM_ONLY:
1297                                         systemMessage.alert(__MSG__("@ボタンは現在[[a_tag_open]]プレミアム会員[[a_tag_close]]のみ使用可能です。", "<a href=\"http://www.nicovideo.jp/?p=premium_top&sec=at_button\" target=\"_blank\">", "</a>"));
1298                                         break;
1299                                 case CommentRouter.ERROR_POST_HIROBA:
1300                                         systemMessage.informComment(__MSG__("広場では@ボタンは使えません。"));
1301                                         break;
1302                                 case CommentRouter.ERROR_POST_INITIALIZE:
1303                                         systemMessage.informComment(__MSG__("コメント投稿の準備が未完了です"));
1304                                         break;
1305                                 case CommentRouter.ERROR_POST_BUTTON_ARGUMENTS:
1306                                         systemMessage.informComment(__MSG__("@ボタンの設定項目が足りません。"));
1307                                         break;
1308                                 case CommentRouter.ERROR_POST_SAME_COMMENT:
1309                                         systemMessage.informComment(__MSG__("同じコメントを連続で投稿することができません。"));
1310                                         break;
1311                                 case CommentRouter.ERROR_POST_CHANNEL_FILTER:
1312                                         systemMessage.informComment(__MSG__("入力されたコメントはこの動画では投稿できません。"));
1313                                         break;
1314                                 case CommentRouter.ERROR_POST_AT_COMMENT_DISABLED:
1315                                         systemMessage.informComment(__MSG__("この動画では@コメントは使えません。"));
1316                                         break;
1317                                 case CommentRouter.ERROR_POST_COMMAND_DISABLED:
1318                                         systemMessage.informComment(__MSG__("この動画ではコマンドは使えません。"));
1319                                         break;
1320                                 default:
1321                                         break;
1322                                 }
1323                         });
1324
1325                         if(this.flashVars.watchFlashVars.noAtPizza || this.isThumbWatchMode){
1326                                 this.commentRouter.onCommentHavingMacro.add(function(hug1:IMacroParserResult):void{     //MethodID:76, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 22
1327                                         if(hug1.macroName == "ピザ") systemMessage.informComment("@ピザは、使用できません。");
1328                                 });
1329                         }else{
1330                                 this.commentRouter.onCommentHavingMacro.add(function(hug1:IMacroParserResult):void{     //MethodID:77, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 40
1331                                         if(hug1.macroName == "ピザ"){
1332                                                 navigateToURL(new URLRequest(configure.PIZZA_URL), "_blank");
1333                                                 videoController.stop();
1334                                         }
1335                                 });
1336                         }
1337
1338                         if(this.nicosClient) this.nicosClient.commentRouter = this.commentRouter;
1339
1340                         this.nicoViewControllerClient.commentRouter = this.commentRouter;
1341                         EventSequence.current.next();
1342                 }
1343
1344                 private function initializeModelAndView4Watch():void
1345                 {       //MethodID:82, LocalCount= 3 , MaxScope= 2, MaxStack= 10, CodeLength= 1164
1346                         internal var linkURL:String;                                    //slotID:1
1347                         internal var pageURL:String;                                    //slotID:2
1348                         internal var messageHTML:String;                                //slotID:3
1349                         internal var onMarqueePlayerLoaded:Function;                    //slotID:4
1350                         internal var isUseVideoEnder:Boolean;                           //slotID:5
1351
1352                         linkURL = null;
1353                         pageURL = null;
1354                         messageHTML = null;
1355                         isUseVideoEnder = false;
1356                         this.nicoViewControllerClient.timeMachine = null;
1357                         this.nicoViewControllerClient.marqueeClient = null;
1358                         this.nicoViewControllerClient.frameRateBooster = null;
1359                         this.timeMachine = new TimeMachine(new Date(parseInt(this.getFLV.threadID, 10) * 1000));
1360                         this.nicoViewControllerClient.timeMachine = this.timeMachine;
1361
1362                         if(!this.frameRateBooster) this.frameRateBooster = new FrameRateBooster(stage);
1363
1364                         this.nicoViewControllerClient.frameRateBooster = this.frameRateBooster;
1365
1366                         if(this._isPlaylist && (this._shutterKeyLastClosed >= 0)){
1367                                 this.commentShutter.open(this._shutterKeyLastClosed);
1368
1369                                 this._shutterKeyLastClosed = -1;
1370                         }
1371
1372                         if(this.flashVars.isMymemory){
1373                                 this.commentShutter.close(this._shutterKeyLastClosed = CommentShutterConstants.SHUTTER_MYMEMORY, __MSG__("マイメモリーはコメントできません"));
1374                         }else if(!this.getFLV.commentExpire && !this.flashVars.watchFlashVars.isOwnerThreadEditMode){
1375                                 if(this.flashVars.watchFlashVars.commentListPublicStatus == CommentListPublicStatus.MEMBER_ONLY){
1376                                         linkURL = (this.configure.CHANNEL_URL + (this.flashVars.isChannel ? "channel" : "community") + "/" + this.flashVars.communityGlobalID);
1377
1378                                         this.commentShutter.close(this._shutterKeyLastClosed = CommentShutterConstants.SHUTTER_CHANNEL_COMMUNITY, (("<a href=\"" + linkURL + "\"><u>") + (this.flashVars.isChannel ? __MSG__("コメントするにはチャンネルに入会してください") : __MSG__("コメントするにはコミュニティに入会してください")) + "</u></a>"));
1379                                 }else{
1380                                         this.commentShutter.close(this._shutterKeyLastClosed = CommentShutterConstants.SHUTTER_OTHER, "");
1381                                 }
1382                         }else if(this.flashVars.watchFlashVars.isCommentShuttered){
1383                                 this.commentShutter.close(this._shutterKeyLastClosed = CommentShutterConstants.SHUTTER_LOCKED, __MSG__("あなたはコメントを禁止されています"));
1384                         }
1385
1386                         if(!CrossSharedObject.isPersistable){
1387                                 if(!this.flashVars.watchFlashVars.isEditMode && !this.flashVars.watchFlashVars.isOwnerThreadEditMode) this.commentShutter.close(this._shutterKeyLastClosed = CommentShutterConstants.SHUTTER_NOSHAREDOBJECT, ("<p>" + __MSG__("ローカル記憶領域が使用できないため、コメント機能を制限をしています") + "</p>"));
1388
1389                                 if(!this._isShowedDialog){
1390                                         this._isShowedDialog = true;
1391
1392                                         this.systemMessage.informln(__MSG__("SharedObjectの初期に失敗しました。"));
1393
1394                                         pageURL = this._playerPageMyselfURL;
1395                                         messageHTML = ("<p><b>" + __MSG__("ローカル記憶領域の書き込みが出来ません。") + "</b></p>" + "<p>" + __MSG__("NG設定、音量設定の保存、ニコニコニュース、RSS、") + "<br>" + __MSG__("生放送開始のお知らせ、ユーザーが設定した@CMなど、") + "<br>" + __MSG__("プレーヤーの機能がご利用出来ない状態です。") + "<br>" + __MSG__("プレーヤーの各機能を有効にするため、Flashの設定を変更してください。") + "<br>" + "<a href=\"" + this.configure.NOSO_URL + "\" target=\"_blank\">ローカル記憶領域の設定を変更する方法について</a>" + "</p>");
1396
1397                                         this.systemMessage.alert(messageHTML);
1398                                 }
1399                         }
1400
1401                         if(this.flashVars.watchFlashVars.isEditMode){
1402                                 this.deleteFilter.onFinishedEdit = function(hug1:Boolean):void{ //MethodID:79, LocalCount= 5 , MaxScope= 0, MaxStack= 4, CodeLength= 144
1403                                         var hug3:String = null;
1404                                         var hug4:String = null;
1405                                         var hug2:String = _playerPageMyselfURL;
1406
1407                                         if(!hug1){
1408                                                 if(flashVars.isMymemory){
1409                                                         hug3 = StringUtils.joinQuery(hug2, {edit:"mymemory"});
1410                                                         hug4 = ("<b>マイメモリーの編集に失敗しました。</b>" + "再度編集しなおす場合は、以下のURLからお願いします。<br />" + "<a href=\"" + hug3 + "\">" + hug3 + "</a>");
1411                                                 }else{
1412                                                         hug3 = StringUtils.joinQuery(hug2, {edit:"comment"});
1413                                                         hug4 = ("<b>編集の保存に失敗しました。</b>" + "再度編集しなおす場合は、以下のURLからお願いします。<br />" + "<a href=\"" + hug3 + "\">" + hug3 + "</a>");
1414                                                 }
1415
1416                                                 systemMessage.alert(hug4);
1417
1418                                                 return;
1419                                         }
1420
1421                                         navigateToURL(new URLRequest(hug2), "_self");
1422                                 };
1423                         }
1424
1425                         if(!this.flashVars.watchFlashVars.isNoMarquee && !this.flashVars.watchFlashVars.isEditMode && !this.flashVars.watchFlashVars.isOwnerThreadEditMode && CrossSharedObject.isPersistable){
1426                                 onMarqueePlayerLoaded = function():void{        //MethodID:80, LocalCount= 1 , MaxScope= 0, MaxStack= 3, CodeLength= 94
1427                                         if(nicosClient) nicosClient.marqueePlayer = INicoMarqueePlayer(marqueeClient.marqueePlayer);
1428
1429                                         if(hirobaConnectorClient) hirobaConnectorClient.insertItemOnMarquee_0 = INicoMarqueePlayer(marqueeClient.marqueePlayer).interruptContent;
1430
1431                                         if(playlistController) playlistController.marqueeClient = marqueeClient;
1432                                         pluginClient.setProperty("marqueeClient", marqueeClient);
1433                                         commentRouter.addMarqueePlayer(marqueeClient.marqueePlayer);
1434                                 };
1435
1436                                 if(!this.marqueeClient) this.marqueeClient = new MarqueeClient(this.configure.MARQUEE_PLAYER_URL, this.playerVersion, this.playerInfo, this.nicoViewController.marqueeBase, this.videoLayerManager, this.playerConfig, this.initializeInfo, onMarqueePlayerLoaded);
1437
1438                                 if(this.nicosClient) this.nicosClient.marqueePlayer = INicoMarqueePlayer(this.marqueeClient.marqueePlayer);
1439
1440                                 this.marqueeClient.videoController = this.videoController;
1441                                 this.marqueeClient.flashVars = this.flashVars;
1442                                 this.nicoViewControllerClient.marqueeClient = this.marqueeClient;
1443                         }
1444
1445                         if(!this.flashVars.watchFlashVars.isNoAppli && !this.pluginClient.hasInitialized("videoDetail")) this.pluginClient.setProperty("videoDetail", new VideoDetail(this.flashVars.category, this.flashVars.videoDetail));
1446                         function():void{        //MethodID:81, LocalCount= 5 , MaxScope= 0, MaxStack= 23, CodeLength= 193
1447                                 if(_isPlaylist) return;
1448
1449                                 var hug1:* = new RemoconNotifier(configure.REMOCON_ALERT_SWF_URL + "?" + playerVersion.remoconAlert);
1450                                 var hug2:* = new RemoconFullScreenKeeper(playerConfig, externalClient);
1451                                 var hug3:* = new RemoconPlayerStateObserver(externalClient.udpateRemoconState, hug1, hug2);
1452
1453                                 commentRouter.onCommentPostErorr.add(hug3.onCommentRouterPostError);
1454
1455                                 var hug4:* = new RemoconClient(hug3, hug1, RemoconState.instance);
1456
1457                                 RemoconReceiver.initialize({videoController:videoController, playerConfig:playerConfig, commentRouter:commentRouter, isPremium:initializeInfo.isPremium, stateObserver:hug3, notifier:hug1, userID:initializeInfo.userID, userNasme:initializeInfo.nickname, commentShutter:commentShutter, audioShutter:audioShutter, fullScreenKeeper:hug2}, defineRemoconMethods);
1458                                 hug2.start();
1459
1460                                 nicoViewControllerClient.remoconClient = hug4;
1461                         }();
1462
1463                         this.nicoViewControllerClient.defaultMylistAppender = new DefaultMylistAppender(HTTPUtils.loadJSON, this.configure.MYLIST_ADD_API_URL, this.getFLV.threadID, this.flashVars.watchFlashVars.noDeflistAdd, this.flashVars.watchFlashVars.csrfToken);
1464
1465                         if(this.nicoViewControllerClient.videoenderTesterConfig == null){
1466                                 if(this._isPlaylist){
1467                                         isUseVideoEnder = (this.playlistFlashVars && this.playlistFlashVars.useVideoEnder);
1468                                 }else{
1469                                         isUseVideoEnder = (this.flashVars.watchFlashVars && this.flashVars.watchFlashVars.useVideoEnder);
1470                                 }
1471
1472                                 this._videoenderTesterConfig = new VideoenderTesterConfig(isUseVideoEnder);
1473                                 this.nicoViewControllerClient.videoenderTesterConfig = this._videoenderTesterConfig;
1474                         }
1475
1476                         EventSequence.current.next();
1477                 }
1478
1479                 private function initializeSponsorVideo():void
1480                 {       //MethodID:85, LocalCount= 2 , MaxScope= 2, MaxStack= 7, CodeLength= 169
1481                         internal var url:String;                                        //slotID:1
1482                         internal var info:GetSponsorInfo;                               //slotID:2
1483
1484                         info = null;
1485                         this.nicoViewControllerClient.getSponsorInfo = null;
1486
1487                         if(!this.isThumbWatchMode && (this.flashVars.isMymemory || this.flashVars.watchFlashVars.isEditMode || this.flashVars.watchFlashVars.isOwnerThreadEditMode)){
1488                                 EventSequence.current.next();
1489
1490                                 return;
1491                         }
1492
1493                         url = StringUtils.joinQuery(this.configure.GETSPONSOR_API_URL, {limit:"4", videoid:this.flashVars.originalVideoID});
1494                         info = new GetSponsorInfo(url, function(hug1:Boolean):void{     //MethodID:84, LocalCount= 3 , MaxScope= 1, MaxStack= 5, CodeLength= 213
1495                                 internal var succeeded:Boolean;                                 //slotID:1
1496                                 internal var layer:*;                                           //slotID:2
1497                                 internal var userSponsorSWFURL:*;                               //slotID:3
1498                                 internal var otherSponsorLink:*;                                //slotID:4
1499                                 internal var youAlsoLink:*;                                     //slotID:5
1500
1501                                 layer = undefined;
1502                                 otherSponsorLink = undefined;
1503                                 youAlsoLink = undefined;
1504                                 succeeded = hug1;
1505
1506                                 if(!succeeded || (info.sponsorInfoList.length == 0)) return;
1507
1508                                 layer = videoLayerManager.createOptionalLayer(VideoLayerManager.OPTIONAL_LAYER_SPONSORVIDEOLAYER);
1509                                 userSponsorSWFURL = StringUtils.joinQuery(configure.USERSPONSOR_MOVIE_URL, {t:playerVersion.userSponsorMovie});
1510                                 otherSponsorLink = (StringUtils.joinQuery(configure.OTHERSPONSOR_URL, {vid:flashVars.originalVideoID}) + "&video_player");
1511                                 youAlsoLink = (StringUtils.joinQuery(configure.OTHERSPONSOR_URL, {vid:flashVars.originalVideoID}) + "&video_player_also");
1512
1513                                 if(video.hasLoaded){
1514                                         HTTPUtils.loadSWF(function(hug1:*):void{        //MethodID:83, LocalCount= 2 , MaxScope= 0, MaxStack= 8, CodeLength= 76
1515                                                 if(hug1){
1516                                                         userSponsorVideo = IUserSponsorVideo(hug1);
1517
1518                                                         userSponsorVideo.initialize(new UserSponsorVideoClient(info, layer, otherSponsorLink, youAlsoLink, ICapturableVideoContainer(videoController.videoWrapper), vposWatcher));
1519                                                         video.appendVideo(ChildVideoName.USER_SPONSOR, userSponsorVideo);
1520                                                 }
1521                                         }, userSponsorSWFURL, {});
1522                                 }else{
1523                                         video.appendVideo(ChildVideoName.USER_SPONSOR, userSponsorVideo);
1524                                 }
1525                         });
1526
1527                         this.nicoViewControllerClient.getSponsorInfo = info;
1528
1529                         EventSequence.current.next();
1530                 }
1531
1532                 private function loadConfirm():void
1533                 {       //MethodID:87, LocalCount= 2 , MaxScope= 2, MaxStack= 3, CodeLength= 24
1534                         this.videoLoadGuardian.loadStart(EventSequence.bind(function(hug1:Boolean):void{        //MethodID:86, LocalCount= 3 , MaxScope= 0, MaxStack= 5, CodeLength= 144
1535                                 var hug2:* = undefined;
1536
1537                                 if(hug1){
1538                                         EventSequence.current.next();
1539                                 }else if(!isThumbWatchMode){
1540                                         if(_isPlaylist && playlistController){
1541                                                 playlistController.onError(PlaylistErrorManager.VIDEO_LOAD_STOP);
1542                                         }else{
1543                                                 hug2 = _playerPageMyselfURL;
1544
1545                                                 SystemMessage.instance.alert(("<p><b>" + __MSG__("動画の読み込みができません。") + "</b></p>" + "<p>" + __MSG__("別のタブかウィンドウで、動画をいくつか読み込み中です。<br />") + __MSG__("読み込みが完了してから再度アクセスしてください。<br />") + "<br />") + __MSG__("<a href=\"[[url]]\">リロードする</a>", hug2) + "</p>");
1546                                         }
1547                                 }
1548                         }));
1549                 }
1550
1551                 private function initializePlugin():void
1552                 {       //MethodID:91, LocalCount= 2 , MaxScope= 2, MaxStack= 9, CodeLength= 208
1553                         internal var loader:ApplibarLoader;                             //slotID:1
1554
1555                         loader = null;
1556
1557                         if(this.flashVars.watchFlashVars.isNoAppli || this.flashVars.watchFlashVars.isEditMode || this.flashVars.watchFlashVars.isOwnerThreadEditMode || !CrossSharedObject.isPersistable){
1558                                 EventSequence.current.next();
1559
1560                                 return;
1561                         }
1562
1563                         loader = new ApplibarLoader(this.configure.APPLIBAR_URL, {v:this.playerVersion.applibar}, this.initializeInfo.userID, this.flashVars.watchFlashVars.bootApp, this.playerConfig, this.flashVars.watchFlashVars.appliInstalled, this.flashVars.watchFlashVars.isAppliPromotion);
1564
1565                         loader.onLoaded.add(function(hug1:Boolean):void{        //MethodID:88, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 26
1566                                 if(!hug1) return;
1567
1568                                 nicoViewControllerClient.applibarLoader = loader;
1569
1570                                 loader.setPluginClient(pluginClient);
1571                         });
1572                         loader.onPageOpen.add(function():void{  //MethodID:89, LocalCount= 1 , MaxScope= 0, MaxStack= 1, CodeLength= 18
1573                                 if(videoController.isPlaying) videoController.stop();
1574                         });
1575                         this._playlistSequences.forEach(function(hug1:Function, hug2:int, hug3:Array):Boolean{  //MethodID:90, LocalCount= 4 , MaxScope= 0, MaxStack= 3, CodeLength= 22
1576                                 if(hug1 == initializePlugin){
1577                                         _playlistSequences.splice(hug2, 1);
1578
1579                                         return false;
1580                                 }
1581
1582                                 return true;
1583                         });
1584                         EventSequence.current.next();
1585                 }
1586
1587                 private function _delayVideo():void
1588                 {       //MethodID:93, LocalCount= 2 , MaxScope= 2, MaxStack= 4, CodeLength= 101
1589                         internal var delay:Number;                                      //slotID:1
1590                         internal var timer:Timer;                                       //slotID:2
1591                         internal var handler:Function;                                  //slotID:3
1592
1593                         timer = null;
1594                         handler = null;
1595                         delay = PlayDelay.getPlayDelayTime(this.initializeInfo.isPremium, this.isThumbWatchMode);
1596                         timer = new Timer(delay, 1);
1597                         handler = EventSequence.bind(function():void{   //MethodID:92, LocalCount= 1 , MaxScope= 0, MaxStack= 3, CodeLength= 40
1598                                 timer.stop();
1599                                 timer.reset();
1600                                 timer.removeEventListener(TimerEvent.TIMER_COMPLETE, handler);
1601                                 EventSequence.current.next();
1602                         });
1603                         timer.addEventListener(TimerEvent.TIMER_COMPLETE, handler);
1604                         timer.start();
1605                 }
1606
1607                 private function _loadVideo():void
1608                 {       //MethodID:97, LocalCount= 5 , MaxScope= 2, MaxStack= 10, CodeLength= 779
1609                         internal var barrier:EventBarrier;                              //slotID:1
1610                         internal var succeeded_all:Boolean;                             //slotID:2
1611                         internal var bgmNeeded:Boolean;                                 //slotID:3
1612                         internal var bgmVideos:Object;                                  //slotID:4
1613                         internal var cmVideos:Object;                                   //slotID:5
1614                         internal var bgmInfo:BGMVideoInfo;                              //slotID:6
1615                         internal var bgmVideo:IVideo;                                   //slotID:7
1616                         internal var container:Sprite;                                  //slotID:8
1617
1618                         succeeded_all = false;
1619                         bgmNeeded = false;
1620                         bgmVideos = null;
1621                         cmVideos = null;
1622                         bgmInfo = null;
1623                         bgmVideo = null;
1624                         container = null;
1625
1626                         if(this._logManager) this._logManager.observer.onVideoLoadStarted();
1627
1628                         barrier = new EventBarrier();
1629                         succeeded_all = true;
1630
1631                         this.systemMessage.informln(__MSG__("動画の読み込みを開始"));
1632
1633                         if((this.getFLV.videoProtocol == "rtmp") || (this.getFLV.videoProtocol == "rtmpe") || (this.getFLV.videoProtocol == "rtmpt") || (this.getFLV.videoProtocol == "rtmpte")) this.systemMessage.informln(__MSG__("動画に接続"));
1634
1635                         this.video.isRetryable = false;
1636
1637                         this.video.load(barrier.bind(function(hug1:Boolean):void{       //MethodID:94, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 110
1638                                 succeeded_all = (succeeded_all && hug1);
1639
1640                                 if(!hug1 && !isThumbWatchMode && _logManager) _logManager.observer.onVideoLoadErrorOccurred();
1641
1642                                 if(_startVposConfig.halfwayStartEnabled) _startVposConfig.judgebyVideoLength(video);
1643
1644                                 if(!_startVposConfig.halfwayStartEnabled){
1645                                         nicoViewController.initVideoEventPipe(vposWatcher);
1646                                         nicoViewController.onVideoInitialized(hug1);
1647                                 }
1648
1649                                 _videoLoadSucceeded = hug1;
1650                         }));
1651
1652                         bgmNeeded = Boolean(this.BGMVideoInfos.length != 0);
1653
1654                         bgmVideos = {};
1655                         cmVideos = {};
1656
1657                         if(this.flashVars.watchFlashVars && !this.flashVars.watchFlashVars.isOwnerThreadEditMode || this.flashVars.thumbFlashVars && this.BGMVideoInfos && bgmNeeded){
1658                                 for each(bgmInfo in this.BGMVideoInfos){
1659                                         if(bgmInfo.type == BGMVideoInfo.TYPE_BGM){
1660                                                 container = new Sprite();
1661
1662                                                 container.graphics.beginFill(0);
1663                                                 container.graphics.drawRect(0, 0, NicoSConstants.ATBGM_VIDEO_WIDTH, NicoSConstants.ATBGM_VIDEO_HEIGHT);
1664                                         }else{
1665                                                 container = new MovieClip();
1666
1667                                                 container.graphics.beginFill(0);
1668                                                 container.graphics.drawRect(0, 0, NicoSConstants.ATCM_VIDEO_WIDTH, NicoSConstants.ATCM_VIDEO_HEIGHT);
1669                                         }
1670
1671                                         container.graphics.endFill();
1672
1673                                         switch(bgmInfo.movieType){
1674                                         case VideoType.FLV:
1675                                         case VideoType.MP4:
1676                                                 bgmVideo = new FLVVideo(bgmInfo.URL, container, -1);
1677                                                 break;
1678                                         case VideoType.SWF:
1679                                                 bgmVideo = new SWFVideo(bgmInfo.URL, container, NaN, false, "", null, "", bgmInfo.isAS3);
1680                                                 break;
1681                                         default:
1682                                                 throw new Error("未定義のBGMタイプ:" + bgmInfo.movieType);
1683                                                 break;
1684                                         }
1685
1686                                         if(bgmInfo.type == BGMVideoInfo.TYPE_BGM){
1687                                                 bgmVideos[bgmInfo.ID] = bgmVideo;
1688                                         }else{
1689                                                 cmVideos[bgmInfo.ID] = bgmVideo;
1690                                         }
1691
1692                                         bgmVideo.load(barrier.bind(function(hug1:Boolean):void{ //MethodID:95, LocalCount= 2 , MaxScope= 0, MaxStack= 4, CodeLength= 102
1693                                                 if(!succeeded_all) return;
1694
1695                                                 succeeded_all = (succeeded_all && hug1);
1696
1697                                                 if(!hug1){
1698                                                         if(!isThumbWatchMode) SystemMessage.instance.alert("<p><b>" + __MSG__("引用動画の読み込みに失敗") + "</b></p>" + "<p>" + __MSG__("問題解消に向けて努力しております。") + "<br />" + __MSG__("しばらく時間をおいて再度アクセスしてみて下さい。") + "</p>");
1699
1700                                                         return;
1701                                                 }
1702                                         }));
1703                                 }
1704                         }
1705
1706                         barrier.finish(EventSequence.bind(function():void{      //MethodID:96, LocalCount= 5 , MaxScope= 0, MaxStack= 4, CodeLength= 145
1707                                 var hug1:* = undefined;
1708                                 var hug2:* = undefined;
1709                                 _wholeVideoLoadSucceeded = succeeded_all;
1710
1711                                 if(!succeeded_all){
1712                                         EventSequence.current.next();
1713
1714                                         return;
1715                                 }
1716
1717                                 if(bgmNeeded){
1718                                         hug1 = {};
1719
1720                                         for(hug2 in cmVideos){
1721                                                 hug1[hug2] = cmVideos[hug2].movieClip;
1722                                         }
1723
1724                                         nicosClient.setBGMVideos(bgmVideos, hug1);
1725                                 }
1726
1727                                 if(getFLV.deleted == 0) PlayDelay.countUp();
1728
1729                                 if(marqueeClient) marqueeClient.load();
1730                                 EventSequence.current.next();
1731                         }));
1732                 }
1733
1734                 private function initializeLogger():void
1735                 {       //MethodID:98, LocalCount= 1 , MaxScope= 1, MaxStack= 13, CodeLength= 63
1736                         this._logManager.initialize(this.initializeInfo, this.configure, this.flashVars, this.getFLV, this.playerConfig, this.playerInfo, this, this.isThumbWatchMode, this.video, this, this._isPlaylist, this._videoenderTesterConfig);
1737                         EventSequence.current.next();
1738                 }
1739
1740                 private function initializeCommentLists():void
1741                 {       //MethodID:102, LocalCount= 2 , MaxScope= 2, MaxStack= 3, CodeLength= 241
1742                         internal var barrier:EventBarrier;                              //slotID:1
1743                         internal var error:CommentStorageError;                         //slotID:2
1744                         internal var init_handler:Function;                             //slotID:3
1745
1746                         barrier = null;
1747                         error = null;
1748                         init_handler = null;
1749                         init_handler = function(hug1:CommentStorageError):void{ //MethodID:99, LocalCount= 3 , MaxScope= 0, MaxStack= 3, CodeLength= 38
1750                                 var hug2:CommentStorageError = hug1;
1751                                 error = hug2;
1752
1753                                 if(!(error || hug2)) return;
1754                                 barrier.finish();
1755                         };
1756
1757                         if(this.nicosClient) this.nicosClient.setup();
1758                         this.systemMessage.informln(__MSG__("コメントサーバーへの接続を開始"));
1759
1760                         barrier = new EventBarrier();
1761                         error = null;
1762
1763                         this.commentList.onCommentPostFinished.add(function(hug1:String, hug2:int, hug3:int):void{      //MethodID:100, LocalCount= 5 , MaxScope= 0, MaxStack= 2, CodeLength= 63
1764                                 var hug4:XMLList = null;
1765
1766                                 if(hug2 == MessageServerClient.POST_INVALID_THREAD){
1767                                         hug4 = playerInfo.getThreadError;
1768
1769                                         if(hug4 && (hug4.post_invalid_thread != "")) SystemMessage.instance.alert(hug4.post_invalid_thread);
1770                                 }
1771                         });
1772                         this.commentList.initialize(barrier.bind(init_handler));
1773
1774                         if(this.flashVars.isCommunityThread) this.privateCommentList.initialize(barrier.bind(init_handler));
1775
1776                         if(this.nicoSCommentList) this.nicoSCommentList.initialize(barrier.bind(init_handler));
1777
1778                         if(this.flashVars.hasOwnerThread) this.ownerCommentList.initialize(barrier.bind(init_handler));
1779                         barrier.finish(function():void{ //MethodID:101, LocalCount= 4 , MaxScope= 0, MaxStack= 4, CodeLength= 201
1780                                 var hug1:String = null;
1781
1782                                 if(error){
1783                                         if(error.isInLowerLayer){
1784                                                 systemMessage.informln(__MSG__("コメントサーバーへの接続に失敗"));
1785                                         }else{
1786                                                 systemMessage.informln(threadStatusCodeToMessage(error.status));
1787                                         }
1788
1789                                         nicoViewController.onCommentListInitialized(false);
1790
1791                                         return;
1792                                 }
1793
1794                                 systemMessage.informln(__MSG__("コメントサーバーへの接続に成功"));
1795
1796                                 if(flashVars.thumbFlashVars && flashVars.thumbFlashVars.thumbComment || !isThumbWatchMode && !flashVars.isMymemory){
1797                                         for(hug1 in commentListContainer){
1798                                                 commentRouter.add(hug1, commentListContainer[hug1]);
1799                                         }
1800                                 }
1801
1802                                 nicoViewController.onCommentListInitialized(true);
1803                                 setupCommentListEventPipes();
1804                         });
1805                         EventSequence.current.next();
1806                 }
1807
1808                 private function setupCommentListEventPipes():void
1809                 {       //MethodID:103, LocalCount= 4 , MaxScope= 1, MaxStack= 2, CodeLength= 51
1810                         var hug1:ICommentList = null;
1811
1812                         this.nicoViewController.initCommentEventPipe();
1813
1814                         for each(hug1 in this.commentListContainer){
1815                                 hug1.serveCommentList();
1816                         }
1817                 }
1818
1819                 private function beginToPlayVideo():void
1820                 {       //MethodID:108, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 216
1821                         internal var alreadyBegan:Boolean;                              //slotID:1
1822                         internal var begin:Function;                                    //slotID:2
1823                         internal var vpos:Number;                                       //slotID:3
1824
1825                         alreadyBegan = false;
1826                         vpos = NaN;
1827                         begin = function():void{        //MethodID:104, LocalCount= 1 , MaxScope= 0, MaxStack= 3, CodeLength= 129
1828                                 if(_startVposConfig.halfwayStartEnabled) nicoViewController.initVideoEventPipe(vposWatcher);
1829
1830                                 if(isThumbWatchMode){
1831                                         if(!flashVars.thumbFlashVars.isP4Mode) videoController.play();
1832                                 }else{
1833                                         videoController.startToPlay(_startVposConfig.isAutoPlay || (nicoViewControllerClient.initializeInfo.isPremium && playerConfig.autoPlay));
1834
1835                                         if(!_wholeVideoLoadSucceeded) videoController.stop();
1836                                 }
1837
1838                                 if(_startVposConfig.halfwayStartEnabled) nicoViewController.onVideoInitialized(_videoLoadSucceeded);
1839                         };
1840
1841                         this.externalClient.onPlayerReady();
1842
1843                         if(this.isThumbWatchMode){
1844                                 begin();
1845
1846                                 return;
1847                         }
1848
1849                         if(this.flashVars.watchFlashVars.jumpReturnVideoID){
1850                                 vpos = this.flashVars.watchFlashVars.jumpPlayLength;
1851
1852                                 if(this._startVposConfig.halfwayStartEnabled) vpos += this.flashVars.watchFlashVars.jumpVPosPlayFrom;
1853
1854                                 vpos *= 1000;
1855
1856                                 this.vposWatcher.addWatchPoint(function():void{ //MethodID:106, LocalCount= 2 , MaxScope= 1, MaxStack= 4, CodeLength= 97
1857                                         internal var params:Object;                                     //slotID:1
1858
1859                                         params = null;
1860
1861                                         videoController.stop();
1862
1863                                         params = {};
1864
1865                                         if(flashVars.watchFlashVars.jumpVPosReturnTo > 0) params.from = flashVars.watchFlashVars.jumpVPosReturnTo;
1866                                         SystemMessage.instance.informJumpMessage(function():void{       //MethodID:105, LocalCount= 4 , MaxScope= 0, MaxStack= 10, CodeLength= 109
1867                                                 var hug1:Object = jumper.tossedObject;
1868                                                 var hug2:String = flashVars.watchFlashVars.jumpReturnVideoID;
1869                                                 var hug3:Object = {};
1870
1871                                                 if(hug1 && hug1.jumpHistory) hug3 = hug1.jumpHistory;
1872
1873                                                 hug3[flashVars.watchID] = true;
1874
1875                                                 jumper.jump(hug2, params, false, {jumpFrom:flashVars.watchID, jumpHistory:hug3, jumpHash_:(hug1 ? hug1.jumpHash : undefined)});
1876                                         }, (flashVars.watchFlashVars.jumpReturnMessage || __MSG__("元の動画にジャンプします")));
1877                                 }, vpos, 0x7FFFFFFF);
1878                         }
1879
1880                         if(!this._startVposConfig.halfwayStartEnabled){
1881                                 begin();
1882
1883                                 return;
1884                         }
1885
1886                         alreadyBegan = false;
1887
1888                         EventPipe.serial(new EventChunk(this.video, ["onVideoSeeked"]), this.videoController, EventSequence.bind(function(hug1:String, hug2:Array):EventResult{ //MethodID:107, LocalCount= 3 , MaxScope= 0, MaxStack= 2, CodeLength= 28
1889                                 if(!alreadyBegan){
1890                                         alreadyBegan = true;
1891
1892                                         begin();
1893                                 }
1894
1895                                 return EventResult.BREAK;
1896                         }));
1897                         this.videoController.seek(this._startVposConfig.fromMsec, true);
1898                 }
1899
1900                 private function initializeCommentLayerView():void
1901                 {       //MethodID:109, LocalCount= 2 , MaxScope= 1, MaxStack= 7, CodeLength= 343
1902                         this.commentLayer = new CommentLayer(this.videoLayerManager.commentLayer, this.playerConfig, this.initializeInfo.isPremium);
1903
1904                         this.commentLayer.addLayer(CommentLayerID.MAIN);
1905                         this.commentLayer.addLayer(CommentLayerID.OWNER);
1906
1907                         var hug1:Object = {};
1908
1909                         if(this.flashVars.isCommunityThread){
1910                                 hug1[CommentLayerID.MAIN] = [CommentConstants.CL_PRIVATE, CommentConstants.CL_LOCAL];
1911                                 hug1[CommentLayerID.OWNER] = [CommentConstants.CL_OWNER];
1912                                 hug1[CommentLayerID.OPTION] = [CommentConstants.CL_MAIN];
1913
1914                                 this.commentLayer.addLayer(CommentLayerID.OPTION, 0);
1915                                 this.commentLayer.setOptionalLayer(CommentLayerID.OPTION);
1916                         }else{
1917                                 hug1[CommentLayerID.MAIN] = [CommentConstants.CL_MAIN, CommentConstants.CL_LOCAL, CommentConstants.CL_NICOS];
1918                                 hug1[CommentLayerID.OWNER] = [CommentConstants.CL_OWNER];
1919                         }
1920
1921                         this.commentLayerView = new CommentLayerView(this, this.video, VideoLayerConstants.COMMENT_LAYER_SD_WIDTH, VideoLayerConstants.COMMENT_LAYER_SD_HEIGHT, this.getFLV.videoLength);
1922                         this.commentViewTransformer = new CommentViewTransformer(hug1, this.commentLayer, this.commentLayerView, (this.nicosClient ? this.nicosClient.player : null));
1923
1924                         if(this.isThumbWatchMode && this.flashVars.thumbFlashVars && this.flashVars.thumbFlashVars.isP4Mode) this.commentViewTransformer.setP4Mode();
1925                 }
1926
1927                 private function threadStatusCodeToMessage(hug1:int):String
1928                 {       //MethodID:110, LocalCount= 4 , MaxScope= 1, MaxStack= 3, CodeLength= 415
1929                         var hug2:XMLList = null;
1930                         var hug3:int = hug1;
1931
1932                         switch(hug3){
1933                         case MessageServerClient.THREAD_FOUND:
1934                                 return __MSG__("...");
1935                         case MessageServerClient.THREAD_INVALID:
1936                                 return __MSG__("メッセージサーバーへの接続に失敗");
1937                         case MessageServerClient.THREAD_NOT_FOUND:
1938                                 hug2 = this.playerInfo.getThreadError;
1939
1940                                 if(hug2 && (hug2.thread_not_found != "")) SystemMessage.instance.alert(hug2.thread_not_found);
1941
1942                                 return __MSG__("スレッドが見つかりません");
1943                         case MessageServerClient.THREAD_VERSION:
1944                                 return __MSG__("プレイヤーのバージョンが不正");
1945                         case MessageServerClient.THREAD_INVALID_ADMINKEY:
1946                                 return __MSG__("AdminKeyが不正");
1947                         case MessageServerClient.THREAD_TOO_OLD_ADMINKEY:
1948                                 return __MSG__("AdminKeyが失効");
1949                         case MessageServerClient.THREAD_INVALID_WAYBACKKEY:
1950                                 return __MSG__("WaybackKeyが不正");
1951                         case MessageServerClient.THREAD_TOO_OLD_WAYBACKKEY:
1952                                 return __MSG__("WaybackKeyが失効");
1953                         case MessageServerClient.THREAD_INVALID_THREADKEY:
1954                                 return __MSG__("ThreadKeyが不正");
1955                         case MessageServerClient.THREAD_TOO_OLD_THREADKEY:
1956                                 return __MSG__("ThreadKeyが失効");
1957                         default:
1958                                 return __MSG__("不明なエラー:code=[code]", hug1);
1959                                 break;
1960                         }
1961                 }
1962
1963                 private function _loadThumbViewSWF():void
1964                 {       //MethodID:112, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 42
1965                         HTTPUtils.loadSWF(EventSequence.bind(function(hug1:*):void{     //MethodID:111, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 73
1966                                 if(!hug1) throw new Error("NicoPlayer._loadThumbViewSWF: load failure.");
1967
1968                                 if(!hug1 is MovieClip) throw new Error("NicoPlayer._loadThumbViewSWF: content is not MovieClip.");
1969                                 addChild(hug1 as DisplayObject);
1970
1971                                 (hug1 as DisplayObject).visible = false;
1972                                 nicoViewControllerClient.viewRoot = hug1;
1973
1974                                 EventSequence.current.next();
1975                         }), this.configure.THUMBPLAYER_VIEW_URL, {t:this.playerVersion.thumbplayerView});
1976                 }
1977
1978                 private function _loadThumbControllerSWF():void
1979                 {       //MethodID:114, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 42
1980                         HTTPUtils.loadSWF(EventSequence.bind(function(hug1:*):void{     //MethodID:113, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 67
1981                                 if(!hug1) throw new Error("NicoPlayer._loadThumbControllerSWF: load failure.");
1982
1983                                 nicoViewController = INicoViewController(hug1);
1984
1985                                 if(!nicoViewController) throw new Error("NicoPlayer._loadThumbControllerSWF: content is not INicoViewController.");
1986                                 nicoViewController.startInit(nicoViewControllerClient);
1987                                 EventSequence.current.next();
1988                         }), this.configure.THUMBPLAYER_CONTROLLER_URL, {t:this.playerVersion.thumbplayerController});
1989                 }
1990
1991                 private function _loadThumbVideoInfo():void
1992                 {       //MethodID:116, LocalCount= 2 , MaxScope= 2, MaxStack= 6, CodeLength= 148
1993                         internal var apiParams:Object;                                  //slotID:1
1994
1995                         apiParams = {};
1996                         apiParams["as3"] = "1";
1997                         apiParams["v"] = this.flashVars.watchID;
1998                         apiParams["k"] = this.flashVars.thumbFlashVars.thumbPlayKey;
1999
2000                         if(this.flashVars.forceLowMode) apiParams["lo"] = "1";
2001
2002                         if(this.flashVars.economyMode) apiParams["eco"] = this.flashVars.economyMode;
2003
2004                         this.getFLV = new GetFLV(this.configure.THUMBWATCH_URL, apiParams, EventSequence.bind(function(hug1:Boolean):void{      //MethodID:115, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 41
2005                                 nicoViewControllerClient.getFLVData = getFLV;
2006                                 initializeInfo = InitializeInfo.getInstance();
2007                                 nicoViewControllerClient.initializeInfo = initializeInfo;
2008
2009                                 EventSequence.current.next();
2010                         }));
2011                 }
2012
2013                 private function _initializeModelAndViewThumbWatch():void
2014                 {       //MethodID:119, LocalCount= 2 , MaxScope= 2, MaxStack= 7, CodeLength= 118
2015                         if(this.flashVars.thumbFlashVars.thumbComment){
2016                                 this.commentRouter = new CommentRouter(this.flashVars, this.playerConfig, null, this.nicosClient, this.initializeInfo.isPremium);
2017
2018                                 this.commentRouter.onCommentPostErorr.add(function(hug1:String):void{   //MethodID:117, LocalCount= 3 , MaxScope= 0, MaxStack= 3, CodeLength= 346
2019                                         var hug2:String = hug1;
2020
2021                                         switch(hug2){
2022                                         case CommentRouter.ERROR_POST_184:
2023                                                 systemMessage.informComment(__MSG__("チャンネルとコミュニティ動画では184コマンドを使用できません。"));
2024                                                 break;
2025                                         case CommentRouter.ERROR_POST_BUTTON_ARGUMENTS:
2026                                         case CommentRouter.ERROR_POST_BUTTON_ONCE:
2027                                         case CommentRouter.ERROR_POST_BUTTON_PREMIUM_ONLY:
2028                                         case CommentRouter.ERROR_POST_BUTTON_DISABLED:
2029                                                 systemMessage.informComment(__MSG__("@ボタンは、使用できません。"));
2030                                                 break;
2031                                         case CommentRouter.ERROR_POST_AT_COMMENT_UNDEFINED:
2032                                                 systemMessage.informComment(__MSG__("その@コメントは存在しないか、投稿者以外は使えないかのどちらかです。"));
2033                                                 break;
2034                                         case CommentRouter.ERROR_POST_INITIALIZE:
2035                                                 systemMessage.informComment(__MSG__("コメント投稿の準備が未完了です。"));
2036                                                 break;
2037                                         case CommentRouter.ERROR_POST_SAME_COMMENT:
2038                                                 systemMessage.informComment(__MSG__("同じコメントを連続で投稿することができません。"));
2039                                                 break;
2040                                         case CommentRouter.ERROR_POST_CHANNEL_FILTER:
2041                                                 systemMessage.informComment(__MSG__("入力されたコメントはチャンネルにより規制されています。"));
2042                                                 break;
2043                                         default:
2044                                                 break;
2045                                         }
2046                                 });
2047                                 this.commentRouter.onCommentHavingMacro.add(function(hug1:IMacroParserResult):void{     //MethodID:118, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 22
2048                                         if(hug1.macroName == "ピザ") systemMessage.informComment("@ピザは、使用できません。");
2049                                 });
2050
2051                                 if(this.nicosClient) this.nicosClient.commentRouter = this.commentRouter;
2052
2053                                 this.nicoViewControllerClient.commentRouter = this.commentRouter;
2054                         }
2055
2056                         EventSequence.current.next();
2057                 }
2058         }
2059 }
2060
2061 //■script002■
2062
2063 package{
2064
2065         import jp.nicovideo.nicoplayer.NicoPlayer
2066
2067         //■class(instance)_index:2
2068         public class nicoplayer extends NicoPlayer
2069         {
2070                 //static constructor
2071                 public static function nicoplayer$cinit()
2072                 {       //MethodID:121, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
2073                 }
2074
2075                 //constructor
2076                 public function nicoplayer()
2077                 {       //MethodID:122, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
2078                         super();
2079                 }
2080         }
2081 }
2082
2083 //■script003■
2084
2085 package jp.nicovideo.ext.config{
2086
2087         //■class(instance)_index:3
2088         public interface IThumbConfig
2089         {
2090                 //static constructor
2091                 public static function IThumbConfig$cinit()
2092                 {       //MethodID:124, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
2093                 }
2094
2095                 //variables/etc.
2096                 function get nicovideoURL():String;                                         //MethodID:125, dispID:0
2097
2098                 function get playerURL():String;                                            //MethodID:126, dispID:0
2099
2100                 //constructor
2101                 public function IThumbConfig();                                             //MethodID:127, dispID:0
2102         }
2103 }
2104
2105 //■script004■
2106
2107 package jp.nicovideo.nicoplayer.models.flashvars{
2108
2109         //■class(instance)_index:4
2110         public class NicoFlashVars extends Object
2111         {
2112                 //static constructor
2113                 public static function NicoFlashVars$cinit()
2114                 {       //MethodID:129, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 27
2115                         LEAF_NO_LOCK = 0;
2116                         LEAF_HIDDEN_MENU = 1;
2117                         LEAF_DISABLE = 2;
2118                 }
2119
2120                 //static variables/etc.
2121                 public static const LEAF_NO_LOCK:uint = 0;                      //slotID:1
2122                 public static const LEAF_HIDDEN_MENU:uint = 1;                  //slotID:2
2123                 public static const LEAF_DISABLE:uint = 2;                      //slotID:3
2124
2125                 //variables/etc.
2126                 private var _watchFlashVars:WatchFlashVars;                     //slotID:0
2127                 private var _thumbFlashVars:ThumbFlashVars;                     //slotID:0
2128                 private var _watchID:String;                                    //slotID:0
2129                 private var _originalVideoID:String;                            //slotID:0
2130                 private var _mylistCount:uint;                                  //slotID:0
2131                 private var _videoType:String;                                  //slotID:0
2132                 private var _videoTitle:String = "";                            //slotID:0
2133                 private var _videoDescription:String = "";                      //slotID:0
2134                 private var _isMymemory:Boolean;                                //slotID:0
2135                 private var _waitsSWFVideoInit:Boolean;                         //slotID:0
2136                 private var _forceLowMode:Boolean;                              //slotID:0
2137                 private var _economyMode:String;                                //slotID:0
2138                 private var _playerVersionUpdated:String;                       //slotID:0
2139                 private var _playerInfoUpdated:String;                          //slotID:0
2140                 private var _isCommunityVideo:Boolean;                          //slotID:0
2141                 private var _isCommunityThread:Boolean;                         //slotID:0
2142                 private var _hasOwnerThread:Boolean;                            //slotID:0
2143                 private var _isDeepenedCommentForce:Boolean;                    //slotID:0
2144                 private var _isChannel:Boolean;                                 //slotID:0
2145                 private var _isNoComment:Boolean;                               //slotID:0
2146                 private var _importedBGMVideos:Array;                           //slotID:0
2147                 private var _category:String;                                   //slotID:0
2148                 private var _categoryGroup:String;                              //slotID:0
2149                 private var _communityID:String;                                //slotID:0
2150                 private var _communityGlobalID:String;                          //slotID:0
2151                 private var _isNoCommand:Boolean;                               //slotID:0
2152                 private var _isNoAtComment:Boolean;                             //slotID:0
2153                 private var _isWide:Boolean;                                    //slotID:0
2154                 private var _countryCode:String;                                //slotID:0
2155                 private var _videoDetail:Object;                                //slotID:0
2156                 private var _leafSwitch:uint = 0;                               //slotID:0
2157                 private var _noRelation:Boolean;                                //slotID:0
2158                 private var _noRelatedVideo:Boolean;                            //slotID:0
2159
2160                 public function get watchID():String
2161                 {       //MethodID:130, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2162                         return this._watchID;
2163                 }
2164
2165                 internal function set watchID(hug1:String):void
2166                 {       //MethodID:131, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2167                         this._watchID = hug1;
2168                 }
2169
2170                 public function get originalVideoID():String
2171                 {       //MethodID:132, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2172                         return this._originalVideoID;
2173                 }
2174
2175                 internal function set originalVideoID(hug1:String):void
2176                 {       //MethodID:133, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2177                         this._originalVideoID = hug1;
2178                 }
2179
2180                 public function get mylistCount():uint
2181                 {       //MethodID:134, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2182                         return this._mylistCount;
2183                 }
2184
2185                 internal function set mylistCount(hug1:uint):void
2186                 {       //MethodID:135, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2187                         this._mylistCount = hug1;
2188                 }
2189
2190                 public function get videoType():String
2191                 {       //MethodID:136, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2192                         return this._videoType;
2193                 }
2194
2195                 internal function set videoType(hug1:String):void
2196                 {       //MethodID:137, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2197                         this._videoType = hug1;
2198                 }
2199
2200                 public function get videoTitle():String
2201                 {       //MethodID:138, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2202                         return this._videoTitle;
2203                 }
2204
2205                 internal function set videoTitle(hug1:String):void
2206                 {       //MethodID:139, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2207                         this._videoTitle = hug1;
2208                 }
2209
2210                 public function get videoDescription():String
2211                 {       //MethodID:140, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2212                         return this._videoDescription;
2213                 }
2214
2215                 internal function set videoDescription(hug1:String):void
2216                 {       //MethodID:141, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2217                         this._videoDescription = hug1;
2218                 }
2219
2220                 public function get isMymemory():Boolean
2221                 {       //MethodID:142, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2222                         return this._isMymemory;
2223                 }
2224
2225                 internal function set isMymemory(hug1:Boolean):void
2226                 {       //MethodID:143, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2227                         this._isMymemory = hug1;
2228                 }
2229
2230                 public function get waitsSWFVideoInit():Boolean
2231                 {       //MethodID:144, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2232                         return this._waitsSWFVideoInit;
2233                 }
2234
2235                 internal function set waitsSWFVideoInit(hug1:Boolean):void
2236                 {       //MethodID:145, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2237                         this._waitsSWFVideoInit = hug1;
2238                 }
2239
2240                 public function get forceLowMode():Boolean
2241                 {       //MethodID:146, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2242                         return this._forceLowMode;
2243                 }
2244
2245                 internal function set forceLowMode(hug1:Boolean):void
2246                 {       //MethodID:147, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2247                         this._forceLowMode = hug1;
2248                 }
2249
2250                 public function get economyMode():String
2251                 {       //MethodID:148, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2252                         return this._economyMode;
2253                 }
2254
2255                 internal function set economyMode(hug1:String):void
2256                 {       //MethodID:149, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2257                         this._economyMode = hug1;
2258                 }
2259
2260                 public function get playerVersionUpdated():String
2261                 {       //MethodID:150, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2262                         return this._playerVersionUpdated;
2263                 }
2264
2265                 internal function set playerVersionUpdated(hug1:String):void
2266                 {       //MethodID:151, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2267                         this._playerVersionUpdated = hug1;
2268                 }
2269
2270                 public function get playerInfoUpdated():String
2271                 {       //MethodID:152, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2272                         return this._playerInfoUpdated;
2273                 }
2274
2275                 internal function set playerInfoUpdated(hug1:String):void
2276                 {       //MethodID:153, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2277                         this._playerInfoUpdated = hug1;
2278                 }
2279
2280                 public function get isCommunityVideo():Boolean
2281                 {       //MethodID:154, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2282                         return this._isCommunityVideo;
2283                 }
2284
2285                 internal function set isCommunityVideo(hug1:Boolean):void
2286                 {       //MethodID:155, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2287                         this._isCommunityVideo = hug1;
2288                 }
2289
2290                 public function get isCommunityThread():Boolean
2291                 {       //MethodID:156, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2292                         return this._isCommunityThread;
2293                 }
2294
2295                 internal function set isCommunityThread(hug1:Boolean):void
2296                 {       //MethodID:157, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2297                         this._isCommunityThread = hug1;
2298                 }
2299
2300                 public function get hasOwnerThread():Boolean
2301                 {       //MethodID:158, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2302                         return this._hasOwnerThread;
2303                 }
2304
2305                 internal function set hasOwnerThread(hug1:Boolean):void
2306                 {       //MethodID:159, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2307                         this._hasOwnerThread = hug1;
2308                 }
2309
2310                 public function get isDeepenedCommentForce():Boolean
2311                 {       //MethodID:160, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2312                         return this._isDeepenedCommentForce;
2313                 }
2314
2315                 internal function set isDeepenedCommentForce(hug1:Boolean):void
2316                 {       //MethodID:161, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2317                         this._isDeepenedCommentForce = hug1;
2318                 }
2319
2320                 public function get importedBGMVideos():Array
2321                 {       //MethodID:162, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2322                         return this._importedBGMVideos;
2323                 }
2324
2325                 internal function set importedBGMVideos(hug1:Array):void
2326                 {       //MethodID:163, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2327                         this._importedBGMVideos = hug1;
2328                 }
2329
2330                 public function get isChannel():Boolean
2331                 {       //MethodID:164, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2332                         return this._isChannel;
2333                 }
2334
2335                 internal function set isChannel(hug1:Boolean):void
2336                 {       //MethodID:165, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2337                         this._isChannel = hug1;
2338                 }
2339
2340                 public function get isNoComment():Boolean
2341                 {       //MethodID:166, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2342                         return this._isNoComment;
2343                 }
2344
2345                 internal function set isNoComment(hug1:Boolean):void
2346                 {       //MethodID:167, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2347                         this._isNoComment = hug1;
2348                 }
2349
2350                 public function get category():String
2351                 {       //MethodID:168, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2352                         return this._category;
2353                 }
2354
2355                 internal function set category(hug1:String):void
2356                 {       //MethodID:169, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2357                         this._category = hug1;
2358                 }
2359
2360                 public function get categoryGroup():String
2361                 {       //MethodID:170, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2362                         return this._categoryGroup;
2363                 }
2364
2365                 internal function set categoryGroup(hug1:String):void
2366                 {       //MethodID:171, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2367                         this._categoryGroup = hug1;
2368                 }
2369
2370                 public function get watchFlashVars():WatchFlashVars
2371                 {       //MethodID:172, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2372                         return this._watchFlashVars;
2373                 }
2374
2375                 internal function set watchFlashVars(hug1:WatchFlashVars):void
2376                 {       //MethodID:173, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2377                         this._watchFlashVars = hug1;
2378                 }
2379
2380                 public function get thumbFlashVars():ThumbFlashVars
2381                 {       //MethodID:174, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2382                         return this._thumbFlashVars;
2383                 }
2384
2385                 internal function set thumbFlashVars(hug1:ThumbFlashVars):void
2386                 {       //MethodID:175, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2387                         this._thumbFlashVars = hug1;
2388                 }
2389
2390                 public function get communityID():String
2391                 {       //MethodID:176, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2392                         return this._communityID;
2393                 }
2394
2395                 internal function set communityID(hug1:String):void
2396                 {       //MethodID:177, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2397                         this._communityID = hug1;
2398                 }
2399
2400                 public function get communityGlobalID():String
2401                 {       //MethodID:178, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2402                         return this._communityGlobalID;
2403                 }
2404
2405                 internal function set communityGlobalID(hug1:String):void
2406                 {       //MethodID:179, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2407                         this._communityGlobalID = hug1;
2408                 }
2409
2410                 public function get isNoCommand():Boolean
2411                 {       //MethodID:180, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2412                         return this._isNoCommand;
2413                 }
2414
2415                 internal function set isNoCommand(hug1:Boolean):void
2416                 {       //MethodID:181, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2417                         this._isNoCommand = hug1;
2418                 }
2419
2420                 public function get isNoAtComment():Boolean
2421                 {       //MethodID:182, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2422                         return this._isNoAtComment;
2423                 }
2424
2425                 internal function set isNoAtComment(hug1:Boolean):void
2426                 {       //MethodID:183, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2427                         this._isNoAtComment = hug1;
2428                 }
2429
2430                 public function get isWide():Boolean
2431                 {       //MethodID:184, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2432                         return this._isWide;
2433                 }
2434
2435                 internal function set isWide(hug1:Boolean):void
2436                 {       //MethodID:185, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2437                         this._isWide = hug1;
2438                 }
2439
2440                 public function get countryCode():String
2441                 {       //MethodID:186, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2442                         return this._countryCode;
2443                 }
2444
2445                 internal function set countryCode(hug1:String):void
2446                 {       //MethodID:187, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2447                         this._countryCode = hug1;
2448                 }
2449
2450                 public function get videoDetail():Object
2451                 {       //MethodID:188, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2452                         return this._videoDetail;
2453                 }
2454
2455                 internal function set videoDetail(hug1:Object):void
2456                 {       //MethodID:189, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2457                         this._videoDetail = hug1;
2458                 }
2459
2460                 public function get leafSwitch():uint
2461                 {       //MethodID:190, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2462                         return this._leafSwitch;
2463                 }
2464
2465                 internal function set leafSwitch(hug1:uint):void
2466                 {       //MethodID:191, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2467                         this._leafSwitch = hug1;
2468                 }
2469
2470                 public function get forceRelationInvisible():Boolean
2471                 {       //MethodID:192, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2472                         return this._noRelation;
2473                 }
2474
2475                 internal function set forceRelationInvisible(hug1:Boolean):void
2476                 {       //MethodID:193, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2477                         this._noRelation = hug1;
2478                 }
2479
2480                 public function get noRelatedVideo():Boolean
2481                 {       //MethodID:194, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
2482                         return this._noRelatedVideo;
2483                 }
2484
2485                 internal function set noRelatedVideo(hug1:Boolean):void
2486                 {       //MethodID:195, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
2487                         this._noRelatedVideo = hug1;
2488                 }
2489
2490                 //constructor
2491                 public function NicoFlashVars()
2492                 {       //MethodID:196, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
2493                         super();
2494                 }
2495         }
2496 }
2497
2498 //■script005■
2499
2500 package jp.nicovideo.nicoplayer.models.video{
2501
2502         //■class(instance)_index:5
2503         public class VideoType extends Object
2504         {
2505                 //static constructor
2506                 public static function VideoType$cinit()
2507                 {       //MethodID:198, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 30
2508                         FLV = "flv";
2509                         MP4 = "mp4";
2510                         SWF = "swf";
2511                 }
2512
2513                 //static variables/etc.
2514                 public static const FLV:String = "flv";                         //slotID:1
2515                 public static const MP4:String = "mp4";                         //slotID:2
2516                 public static const SWF:String = "swf";                         //slotID:3
2517
2518                 //constructor
2519                 public function VideoType()
2520                 {       //MethodID:199, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
2521                         super();
2522                 }
2523         }
2524 }
2525
2526 //■script006■
2527
2528 package jp.nicovideo.nicoplayer.views.comment{
2529
2530         //■class(instance)_index:6
2531         public class CommentLayerID extends Object
2532         {
2533                 //static constructor
2534                 public static function CommentLayerID$cinit()
2535                 {       //MethodID:201, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 30
2536                         MAIN = "main";
2537                         OWNER = "owner";
2538                         OPTION = "option";