OSDN Git Service

nicoplayer.swfのデコンパイル結果ドキュメントを追加
authoryukihane <yukihane.feather@gmail.com>
Wed, 3 Aug 2011 10:09:03 +0000 (19:09 +0900)
committeryukihane <yukihane.feather@gmail.com>
Wed, 3 Aug 2011 10:09:03 +0000 (19:09 +0900)
vhook/docs/nicoplayer.swf.readme [new file with mode: 0644]
vhook/docs/nicoplayer.swf.source [new file with mode: 0644]

diff --git a/vhook/docs/nicoplayer.swf.readme b/vhook/docs/nicoplayer.swf.readme
new file mode 100644 (file)
index 0000000..f4b8ca6
--- /dev/null
@@ -0,0 +1,2 @@
+http://blogs.yahoo.co.jp/kerupani/9913707.html
+に記載されていたnicoplayer.swfのデコンパイルテキストです.
diff --git a/vhook/docs/nicoplayer.swf.source b/vhook/docs/nicoplayer.swf.source
new file mode 100644 (file)
index 0000000..a132a00
--- /dev/null
@@ -0,0 +1,45599 @@
+//■ABC File MinorVersion:16 , MajorVersion:46
+
+//INT cnt=143
+//UINT cnt=1
+//DOUBLE cnt=32
+//STRING cnt=6667
+//NAMESPACES cnt=1166
+//NAMESPACE_SETS cnt=279
+//MULTINAMES cnt=7959
+//Methods cnt=5427
+//METADATA cnt=0
+//INTERFACE cnt=465
+//CLASS cnt=465
+//SCRIPT cnt=396
+
+//■script000■
+
+package jp.nicovideo.ext{
+
+       import jp.nicovideo.ext.config.IThumbConfig
+       import jp.nicovideo.nicoplayer.models.flashvars.NicoFlashVars
+
+       //■class(instance)_index:0
+       public interface IThumbPlayer
+       {
+               //static constructor
+               public static function IThumbPlayer$cinit()
+               {       //MethodID:0, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function setThumbWatchVars(hug1:IThumbConfig, hug2:NicoFlashVars):void;     //MethodID:1, dispID:0
+
+               function get initialized():Boolean;                                         //MethodID:2, dispID:0
+
+               function playThumbPlayer():void;                                            //MethodID:3, dispID:0
+
+               function pauseThumbPlayer():void;                                           //MethodID:4, dispID:0
+
+               function set onChangedVideoStatus(hug1:Function):void;                      //MethodID:5, dispID:0
+
+               function get videoPlayerStatus():String;                                    //MethodID:6, dispID:0
+
+               //constructor
+               public function IThumbPlayer();                                             //MethodID:7, dispID:0
+       }
+}
+
+//■script001■
+
+package jp.nicovideo.nicoplayer{
+
+       import flash.display.DisplayObject
+       import flash.display.MovieClip
+       import flash.display.Sprite
+       import flash.display.StageAlign
+       import flash.display.StageScaleMode
+       import flash.errors.IOError
+       import flash.errors.IllegalOperationError
+       import flash.events.Event
+       import flash.events.TimerEvent
+       import flash.net.URLRequest
+       import flash.net.URLVariables
+       import flash.net.navigateToURL
+       import flash.system.Security
+       import flash.ui.ContextMenu
+       import flash.utils.Timer
+       import jp.nicovideo.ext.config.IThumbConfig
+       import jp.nicovideo.hiroba.HirobaConnectorClient
+       import jp.nicovideo.hiroba.IHirobaConnector
+       import jp.nicovideo.hiroba.events.HirobaErrorEvent
+       import jp.nicovideo.hiroba.events.HirobaEvent
+       import jp.nicovideo.hiroba.events.HirobaEventReferer
+       import jp.nicovideo.hiroba.models.HirobaMessageServerInfo
+       import jp.nicovideo.marquee.INicoMarqueePlayer
+       import jp.nicovideo.marquee.MarqueeClient
+       import jp.nicovideo.nicoplayer.app.ApplibarLoader
+       import jp.nicovideo.nicoplayer.config.DebugMode
+       import jp.nicovideo.nicoplayer.config.DefaultInitializer
+       import jp.nicovideo.nicoplayer.config.NicoConfig
+       import jp.nicovideo.nicoplayer.config.getDebugMode
+       import jp.nicovideo.nicoplayer.external.ExternalClient
+       import jp.nicovideo.nicoplayer.hiroba.HirobaPlayer
+       import jp.nicovideo.nicoplayer.hiroba.events.HirobaErrorStatus
+       import jp.nicovideo.nicoplayer.models.IPlayerConfig
+       import jp.nicovideo.nicoplayer.models.MyList
+       import jp.nicovideo.nicoplayer.models.PlayDelay
+       import jp.nicovideo.nicoplayer.models.PlayerConfig
+       import jp.nicovideo.nicoplayer.models.PlayerInfo
+       import jp.nicovideo.nicoplayer.models.PlayerVersion
+       import jp.nicovideo.nicoplayer.models.RelatedVideoList
+       import jp.nicovideo.nicoplayer.models.ScreenAspectRatio
+       import jp.nicovideo.nicoplayer.models.StartVposConfig
+       import jp.nicovideo.nicoplayer.models.SystemMessage
+       import jp.nicovideo.nicoplayer.models.VideoDetail
+       import jp.nicovideo.nicoplayer.models.VideoLoadGuardian
+       import jp.nicovideo.nicoplayer.models.api.BGMVideoInfo
+       import jp.nicovideo.nicoplayer.models.api.GetBGM
+       import jp.nicovideo.nicoplayer.models.api.GetChecklist
+       import jp.nicovideo.nicoplayer.models.api.GetFLV
+       import jp.nicovideo.nicoplayer.models.api.GetRelation
+       import jp.nicovideo.nicoplayer.models.api.GetSponsorInfo
+       import jp.nicovideo.nicoplayer.models.api.ICapturableVideoContainer
+       import jp.nicovideo.nicoplayer.models.api.IKeygen
+       import jp.nicovideo.nicoplayer.models.api.InitializeInfo
+       import jp.nicovideo.nicoplayer.models.api.Jumper
+       import jp.nicovideo.nicoplayer.models.api.Keygen
+       import jp.nicovideo.nicoplayer.models.api.RegisterBGM
+       import jp.nicovideo.nicoplayer.models.comment.CommentConstants
+       import jp.nicovideo.nicoplayer.models.comment.CommentList
+       import jp.nicovideo.nicoplayer.models.comment.CommentListPublicStatus
+       import jp.nicovideo.nicoplayer.models.comment.CommentPoolContainer
+       import jp.nicovideo.nicoplayer.models.comment.CommentRouter
+       import jp.nicovideo.nicoplayer.models.comment.CommentStorageEvents
+       import jp.nicovideo.nicoplayer.models.comment.ICommentList
+       import jp.nicovideo.nicoplayer.models.comment.LocalCommentList
+       import jp.nicovideo.nicoplayer.models.comment.OwnerCommentList
+       import jp.nicovideo.nicoplayer.models.comment.TimeMachine
+       import jp.nicovideo.nicoplayer.models.filter.ChannelReplacer
+       import jp.nicovideo.nicoplayer.models.filter.DeleteFilter
+       import jp.nicovideo.nicoplayer.models.filter.LockedComment
+       import jp.nicovideo.nicoplayer.models.filter.NGComment
+       import jp.nicovideo.nicoplayer.models.filter.NGInfo
+       import jp.nicovideo.nicoplayer.models.filter.NGResponseConstants
+       import jp.nicovideo.nicoplayer.models.filter.NGType
+       import jp.nicovideo.nicoplayer.models.filter.Replacer
+       import jp.nicovideo.nicoplayer.models.flashvars.NicoFlashVars
+       import jp.nicovideo.nicoplayer.models.flashvars.NicoFlashVarsInitializer
+       import jp.nicovideo.nicoplayer.models.flashvars.PlaylistFlashVars
+       import jp.nicovideo.nicoplayer.models.log.LogManager
+       import jp.nicovideo.nicoplayer.models.mylist.DefaultMylistAppender
+       import jp.nicovideo.nicoplayer.models.playlist.Playlist
+       import jp.nicovideo.nicoplayer.models.playlist.PlaylistController
+       import jp.nicovideo.nicoplayer.models.playlist.PlaylistErrorManager
+       import jp.nicovideo.nicoplayer.models.video.ChildVideoName
+       import jp.nicovideo.nicoplayer.models.video.FLVVideo
+       import jp.nicovideo.nicoplayer.models.video.IVideo
+       import jp.nicovideo.nicoplayer.models.video.SWFVideo
+       import jp.nicovideo.nicoplayer.models.video.VideoController
+       import jp.nicovideo.nicoplayer.models.video.VideoLoadWatcher
+       import jp.nicovideo.nicoplayer.models.video.VideoType
+       import jp.nicovideo.nicoplayer.models.video.VideoWrapper
+       import jp.nicovideo.nicoplayer.models.video.VposWatcher
+       import jp.nicovideo.nicoplayer.models.video.userSponsor.IUserSponsorVideo
+       import jp.nicovideo.nicoplayer.models.video.userSponsor.UserSponsorVideoClient
+       import jp.nicovideo.nicoplayer.plugin.NicoPluginClient
+       import jp.nicovideo.nicoplayer.remocon.RemoconClient
+       import jp.nicovideo.nicoplayer.remocon.RemoconFullScreenKeeper
+       import jp.nicovideo.nicoplayer.remocon.RemoconNotifier
+       import jp.nicovideo.nicoplayer.remocon.RemoconPlayerStateObserver
+       import jp.nicovideo.nicoplayer.remocon.RemoconReceiver
+       import jp.nicovideo.nicoplayer.remocon.RemoconState
+       import jp.nicovideo.nicoplayer.remocon.method.defineRemoconMethods
+       import jp.nicovideo.nicoplayer.storages.CommentStorage
+       import jp.nicovideo.nicoplayer.storages.CommentStorageError
+       import jp.nicovideo.nicoplayer.storages.ICommentStorage
+       import jp.nicovideo.nicoplayer.storages.MessageServerClient
+       import jp.nicovideo.nicoplayer.tpls.INicoViewController
+       import jp.nicovideo.nicoplayer.tpls.NicoViewControllerClient
+       import jp.nicovideo.nicoplayer.tpls.shutter.AudioShutterConstants
+       import jp.nicovideo.nicoplayer.tpls.shutter.CommentShutterConstants
+       import jp.nicovideo.nicoplayer.tpls.shutter.ControllerShutter
+       import jp.nicovideo.nicoplayer.videoender.IVideoenderTesterConfig
+       import jp.nicovideo.nicoplayer.videoender.VideoenderTesterConfig
+       import jp.nicovideo.nicoplayer.views.JumpMessageLayer
+       import jp.nicovideo.nicoplayer.views.VideoLayerConstants
+       import jp.nicovideo.nicoplayer.views.VideoLayerManager
+       import jp.nicovideo.nicoplayer.views.comment.CommentLayer
+       import jp.nicovideo.nicoplayer.views.comment.CommentLayerID
+       import jp.nicovideo.nicoplayer.views.comment.CommentLayerView
+       import jp.nicovideo.nicoplayer.views.comment.CommentViewTransformer
+       import jp.nicovideo.nicoplayer.views.framerate.FrameRateBooster
+       import jp.nicovideo.nicoscript.INicoSPlayer
+       import jp.nicovideo.nicoscript.NicoSClient
+       import jp.nicovideo.nicoscript.NicoSConstants
+       import jp.nicovideo.nicoscript.macro.parsers.IMacroParserResult
+       import jp.nicovideo.util.CrossSharedObject
+       import jp.nicovideo.util.HTTPUtils
+       import jp.nicovideo.util.ObjectUtils
+       import jp.nicovideo.util.StringUtils
+       import jp.nicovideo.util.api.APICacheProxy
+       import jp.nicovideo.util.events.EventBarrier
+       import jp.nicovideo.util.events.EventChunk
+       import jp.nicovideo.util.events.EventPipe
+       import jp.nicovideo.util.events.EventResult
+       import jp.nicovideo.util.events.EventSequence
+       import jp.nicovideo.util.events.event_sender
+       import jp.nicovideo.util.external.JSConnector
+       import jp.nicovideo.util.loka.Loka
+       import jp.nicovideo.util.loka.__MSG__
+
+       //■class(instance)_index:1
+       public class NicoPlayer extends Sprite implements IThumbPlayer
+       {
+               //static constructor
+               public static function NicoPlayer$cinit()
+               {       //MethodID:9, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 54
+                       DEBUG_MODE = getDebugMode();
+                       DEBUG_MODE_EXT = ((DEBUG_MODE == DebugMode.NON) ? DebugMode.NON : DebugMode.EXTDEV);
+               }
+
+               //static variables/etc.
+               private static const DEBUG_MODE:uint;                           //slotID:1
+               private static const DEBUG_MODE_EXT:uint;                       //slotID:2
+
+               //constructor
+               public function NicoPlayer()
+               {       //MethodID:10, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 137
+                       this.commentListContainer = {};
+                       this.systemMessage = SystemMessage.instance;
+                       this.nicoViewControllerClient = new NicoViewControllerClient();
+                       this.pluginClient = new NicoPluginClient();
+                       this._playlistSequences = [];
+
+                       super();
+                       Security.allowDomain("*");
+
+                       this.isThumbWatchMode = (loaderInfo.parameters[this._IS_THUMBWATCH_PARAM] == "1");
+                       this.configure = new NicoConfig();
+                       Loka.instance.debug = true;
+
+                       if(this.isThumbWatchMode) return;
+
+                       if(loaderInfo.parameters[this._PLAYLIST_ID]){
+                               this.initializePlaylistPlayer();
+
+                               return;
+                       }
+
+                       this.initializeWatchPlayer();
+               }
+
+               //variables/etc.
+               private const _IS_THUMBWATCH_PARAM:String = "thumbWatch";       //slotID:0
+               private const _PLAYLIST_ID:String = "playlistId";               //slotID:0
+               private var getFLV:GetFLV;                                      //slotID:0
+               private var flashVars:NicoFlashVars;                            //slotID:0
+               private var playlistFlashVars:PlaylistFlashVars;                //slotID:0
+               private var playerConfig:IPlayerConfig;                         //slotID:0
+               private var video:VideoWrapper;                                 //slotID:0
+               private var commentListContainer:Object;                        //slotID:0
+               private var mainCommentListName:String = "commentlist:main";    //slotID:0
+               private var commentList:CommentList;                            //slotID:0
+               private var ownerCommentList:OwnerCommentList;                  //slotID:0
+               private var privateCommentList:CommentList;                     //slotID:0
+               private var nicoSCommentList:CommentList;                       //slotID:0
+               private var localCommentList:LocalCommentList;                  //slotID:0
+               private var systemMessage:SystemMessage;                        //slotID:0
+               private var relatedList:RelatedVideoList;                       //slotID:0
+               private var ngComment:NGComment;                                //slotID:0
+               private var lockedComment:LockedComment;                        //slotID:0
+               private var replacer:Replacer;                                  //slotID:0
+               private var playerVersion:PlayerVersion;                        //slotID:0
+               private var playerInfo:PlayerInfo;                              //slotID:0
+               private var timeMachine:TimeMachine;                            //slotID:0
+               private var deleteFilter:DeleteFilter;                          //slotID:0
+               private var channelReplacer:ChannelReplacer;                    //slotID:0
+               private var videoLoadGuardian:VideoLoadGuardian;                //slotID:0
+               private var getChecklist:GetChecklist;                          //slotID:0
+               private var myList:MyList;                                      //slotID:0
+               private var playlist:Playlist;                                  //slotID:0
+               private var initializeInfo:InitializeInfo;                      //slotID:0
+               private var _startVposConfig:StartVposConfig;                   //slotID:0
+               private var commentLayerView:CommentLayerView;                  //slotID:0
+               private var commentLayer:CommentLayer;                          //slotID:0
+               private var commentViewTransformer:CommentViewTransformer;      //slotID:0
+               private var commentRouter:CommentRouter;                        //slotID:0
+               private var videoLayerManager:VideoLayerManager;                //slotID:0
+               private var videoController:VideoController;                    //slotID:0
+               private var jumpMsgLayer:JumpMessageLayer;                      //slotID:0
+               private var nicoViewController:INicoViewController;             //slotID:0
+               private var nicoViewControllerClient:NicoViewControllerClient;  //slotID:0
+               private var vposWatcher:VposWatcher;                            //slotID:0
+               private var commentShutter:ControllerShutter;                   //slotID:0
+               private var audioShutter:ControllerShutter;                     //slotID:0
+               private var playlistController:PlaylistController;              //slotID:0
+               private var frameRateBooster:FrameRateBooster;                  //slotID:0
+               private var userSponsorVideo:IUserSponsorVideo;                 //slotID:0
+               private var hirobaPlayer:HirobaPlayer;                          //slotID:0
+               private var hirobaConnectorClient:HirobaConnectorClient;        //slotID:0
+               private var _thumbConfig:IThumbConfig;                          //slotID:0
+               private var configure:NicoConfig;                               //slotID:0
+               private var keygen:IKeygen;                                     //slotID:0
+               private var commentStorage:ICommentStorage;                     //slotID:0
+               private var jumper:Jumper;                                      //slotID:0
+               private var nicosPlayer:INicoSPlayer;                           //slotID:0
+               private var nicosClient:NicoSClient;                            //slotID:0
+               private var nicosPipe:Function;                                 //slotID:0
+               private var BGMVideoInfos:Array;                                //slotID:0
+               private var marqueeClient:MarqueeClient;                        //slotID:0
+               private var externalClient:ExternalClient;                      //slotID:0
+               private var isThumbWatchMode:Boolean = false;                   //slotID:0
+               private var _onChangedVideoStatus:Function;                     //slotID:0
+               private var _initialized:Boolean = false;                       //slotID:0
+               private var _wholeVideoLoadSucceeded:Boolean = false;           //slotID:0
+               private var pluginClient:NicoPluginClient;                      //slotID:0
+               private var _playlistSequences:Array;                           //slotID:0
+               private var _isPlaylist:Boolean = false;                        //slotID:0
+               private var _videoLoadSucceeded:Boolean;                        //slotID:0
+               private var _isPlaylistPrepared:Boolean = false;                //slotID:0
+               private var _shutterKeyLastClosed:int = -1;                     //slotID:0
+               private var _isShowedDialog:Boolean = false;                    //slotID:0
+               private var _logManager:LogManager;                             //slotID:0
+               private var _playerPageMyselfURL:String;                        //slotID:0
+               private var _videoenderTesterConfig:IVideoenderTesterConfig;    //slotID:0
+
+               private function initializePlaylistPlayer():void
+               {       //MethodID:12, LocalCount= 2 , MaxScope= 2, MaxStack= 19, CodeLength= 422
+                       internal var menu:ContextMenu;                                  //slotID:1
+                       internal var vars:Object;                                       //slotID:2
+                       internal var seq:EventSequence;                                 //slotID:3
+
+                       this._isPlaylist = true;
+
+                       DefaultInitializer.setConfig(this.configure, loaderInfo.url, DEBUG_MODE);
+
+                       this.keygen = new Keygen(this.configure);
+                       stage.align = StageAlign.TOP_LEFT;
+                       stage.scaleMode = StageScaleMode.NO_SCALE;
+                       menu = new ContextMenu();
+
+                       menu.hideBuiltInItems();
+
+                       menu.builtInItems.quality = true;
+                       contextMenu = menu;
+                       vars = loaderInfo.parameters;
+                       this.flashVars = new NicoFlashVars();
+
+                       NicoFlashVarsInitializer.setFlashVars(this.flashVars, vars);
+
+                       this.playlistFlashVars = new PlaylistFlashVars(vars);
+                       this._playerPageMyselfURL = function():String{  //MethodID:11, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 49
+                               var hug1:* = {};
+
+                               if(playlistFlashVars.playlistSort) hug1["sort"] = playlistFlashVars.playlistSort;
+
+                               return StringUtils.joinQuery((configure.PLAYLIST_PAGE_BASE_URL + playlistFlashVars.playlistID), hug1);
+                       }();
+                       this.nicoViewControllerClient.nicoConfig = this.configure;
+
+                       this.nicoViewControllerClient.flashVars = this.flashVars;
+                       this.nicoViewControllerClient.playlistFlashVars = this.playlistFlashVars;
+                       this.nicoViewControllerClient.playerPageMyselfURL = this._playerPageMyselfURL;
+
+                       this.pluginClient.setProperty("nicoConfig", this.configure);
+                       this.pluginClient.setProperty("flashVars", this.flashVars);
+
+                       this.nicoViewControllerClient.pluginClient = this.pluginClient;
+                       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];
+                       seq = new EventSequence(this);
+
+                       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);
+                       seq.next();
+               }
+
+               private function startPlaylist():void
+               {       //MethodID:13, LocalCount= 1 , MaxScope= 1, MaxStack= 5, CodeLength= 54
+                       if(this.playlistController) this.playlistController.play(null, null, (this.playerConfig.autoPlay && !this.initializeInfo.isPremium));
+                       EventSequence.current.next();
+               }
+
+               private function _loadWatchAPI():void
+               {       //MethodID:15, LocalCount= 2 , MaxScope= 2, MaxStack= 4, CodeLength= 96
+                       internal var apiParams:Object;                                  //slotID:1
+
+                       this.nicoViewControllerClient.flashVars = null;
+                       apiParams = {};
+
+                       if(this._isPlaylist){
+                               apiParams["mode"] = "playlist";
+                               apiParams["playlist_token"] = this.playlist.token;
+                       }
+
+                       HTTPUtils.loadJSON(EventSequence.bind(function(hug1:Object):void{       //MethodID:14, LocalCount= 5 , MaxScope= 0, MaxStack= 4, CodeLength= 245
+                               var hug2:* = undefined;
+
+                               if(!hug1 || (hug1.status == "ng")){
+                                       if(_isPlaylist){
+                                               if(hug1.status_message == PlaylistErrorManager.TOKEN_TIMEOUT){
+                                                       if(playlistController.errorCount < 1){
+                                                               playlistController.errorCount++;
+                                                               playlistController.isInvalidToken = true;
+                                                               playlistController.isVideoUpdating = false;
+
+                                                               playlistController.play(playlistController.threadID);
+
+                                                               return;
+                                                       }
+                                               }
+
+                                               playlistController.onError(hug1.status_message.toString());
+
+                                               if(PlaylistErrorManager.TABWINDOW_ALERT_ERRORS.indexOf(hug1.status_message.toString()) != (-1)) playlistController.goNext(null, (playerConfig.autoPlay && !initializeInfo.isPremium));
+                                       }
+
+                                       return;
+                               }
+
+                               flashVars = new NicoFlashVars();
+
+                               NicoFlashVarsInitializer.setFlashVars(flashVars, hug1);
+
+                               if(_isPlaylist){
+                                       hug2 = playlist.getVideoInfo(playlistController.threadID);
+                                       hug2.flashVars = flashVars;
+                               }
+
+                               nicoViewControllerClient.flashVars = flashVars;
+
+                               EventSequence.current.next();
+                       }), (this.configure.WATCH_API_URL + this.playlistController.threadID), apiParams);
+               }
+
+               private function initializePlaylist():void
+               {       //MethodID:18, LocalCount= 2 , MaxScope= 2, MaxStack= 7, CodeLength= 96
+                       internal var apiParams:Object;                                  //slotID:1
+
+                       apiParams = {};
+                       apiParams["ts"] = new Date().time;
+                       apiParams["playlist_token"] = this.playlistFlashVars.playlistToken;
+                       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
+                               internal var success:Boolean;                                   //slotID:1
+                               internal var reset:Function;                                    //slotID:2
+
+                               reset = null;
+                               success = hug1;
+                               reset = function():void{        //MethodID:16, LocalCount= 1 , MaxScope= 0, MaxStack= 2, CodeLength= 43
+                                       nicoViewControllerClient.getFLVData = null;
+                                       nicoViewControllerClient.videoController = null;
+                                       nicoViewControllerClient.commentRouter = null;
+                                       nicoViewControllerClient.relatedList = null;
+                                       nicoViewControllerClient.myList = null;
+                                       nicoViewControllerClient.defaultMylistAppender = null;
+                               };
+
+                               _isPlaylistPrepared = success;
+
+                               if(!success){
+                                       EventSequence.current.next();
+
+                                       return;
+                               }
+
+                               if(playlistController){
+                                       EventSequence.current.next();
+
+                                       return;
+                               }
+
+                               initializeInfo = InitializeInfo.getInstance();
+                               nicoViewControllerClient.initializeInfo = initializeInfo;
+
+                               pluginClient.setProperty("initializeInfo", initializeInfo);
+
+                               playlistController = new PlaylistController(_playlistSequences, initializePlaylist, playlist, playlistFlashVars, configure, playerInfo.playlistLimit, reset, playerConfig.isPlaylistRandomPlay, _playerPageMyselfURL);
+                               nicoViewControllerClient.playlistController = playlistController;
+
+                               EventSequence.current.next();
+                       }));
+               }
+
+               private function checkInitializePlaylist():void
+               {       //MethodID:19, LocalCount= 2 , MaxScope= 1, MaxStack= 3, CodeLength= 105
+                       var hug1:String = null;
+
+                       if(!this.initializeInfo || !this.initializeInfo.userID){
+                               this.systemMessage.informln(__MSG__("ユーザー情報の取得に失敗"));
+
+                               hug1 = ("<p><b>" + __MSG__("ユーザー情報の取得に失敗しました。") + "</b></p>" + "<p>" + __MSG__("ログインしていない可能性があります。") + "</p>");
+
+                               this.systemMessage.alert(hug1);
+
+                               return;
+                       }
+
+                       EventSequence.current.next();
+               }
+
+               public function setThumbWatchVars(hug1:IThumbConfig, hug2:NicoFlashVars):void
+               {       //MethodID:20, LocalCount= 4 , MaxScope= 1, MaxStack= 23, CodeLength= 234
+                       if(DEBUG_MODE_EXT != DebugMode.NON){
+                               DefaultInitializer.setConfig(this.configure, loaderInfo.url, DEBUG_MODE_EXT);
+                               DefaultInitializer.setThumbDebugMode(this.configure);
+                       }else{
+                               DefaultInitializer.setConfig(this.configure, hug1.playerURL, DebugMode.NON);
+                       }
+
+                       this.keygen = new Keygen(this.configure);
+                       this._thumbConfig = hug1;
+                       this.flashVars = hug2;
+                       this.nicoViewControllerClient.thumbConfig = hug1;
+                       this.nicoViewControllerClient.nicoConfig = this.configure;
+                       this.nicoViewControllerClient.flashVars = hug2;
+                       var hug3:EventSequence = new EventSequence(this);
+
+                       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);
+                       hug3.next();
+               }
+
+               public function get initialized():Boolean
+               {       //MethodID:21, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._initialized;
+               }
+
+               public function playThumbPlayer():void
+               {       //MethodID:22, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 47
+                       if(this.isThumbWatchMode && this.video && this.video.isInitialized) this.video.play();
+               }
+
+               public function pauseThumbPlayer():void
+               {       //MethodID:23, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 47
+                       if(this.isThumbWatchMode && this.video && this.video.isInitialized) this.video.stop();
+               }
+
+               public function set onChangedVideoStatus(hug1:Function):void
+               {       //MethodID:25, LocalCount= 3 , MaxScope= 2, MaxStack= 2, CodeLength= 57
+                       internal var onChanged:Function;                                //slotID:1
+
+                       onChanged = hug1;
+
+                       if(!this.isThumbWatchMode) throw new IllegalOperationError("NicoPlayer.set onChangedVideoStatus: player is not in thumbwatch.");
+
+                       if(onChanged == null) throw new ArgumentError("NicoPlayer.set onChangedVideoStatus: invalid parameters onChanged is null.");
+
+                       this._onChangedVideoStatus = function(hug1:String):void{        //MethodID:24, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 24
+                               if(!_initialized) _initialized = true;
+                               onChanged(hug1);
+                       };
+               }
+
+               public function get videoPlayerStatus():String
+               {       //MethodID:26, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 49
+                       if(this.isThumbWatchMode && this.video && this.video.isInitialized) return this.video.videoPlayerStatus;
+
+                       return "";
+               }
+
+               private function initializeWatchPlayer():void
+               {       //MethodID:27, LocalCount= 4 , MaxScope= 1, MaxStack= 31, CodeLength= 362
+                       DefaultInitializer.setConfig(this.configure, loaderInfo.url, DEBUG_MODE);
+
+                       this.keygen = new Keygen(this.configure);
+                       stage.align = StageAlign.TOP_LEFT;
+                       stage.scaleMode = StageScaleMode.NO_SCALE;
+                       var hug1:ContextMenu = new ContextMenu();
+
+                       hug1.hideBuiltInItems();
+
+                       hug1.builtInItems.quality = true;
+                       contextMenu = hug1;
+                       var hug2:Object = loaderInfo.parameters;
+                       this.flashVars = new NicoFlashVars();
+
+                       NicoFlashVarsInitializer.setFlashVars(this.flashVars, hug2);
+
+                       this._playerPageMyselfURL = (this.configure.BASE_URL + "watch/" + this.flashVars.watchID);
+                       this.nicoViewControllerClient.nicoConfig = this.configure;
+                       this.nicoViewControllerClient.flashVars = this.flashVars;
+                       this.nicoViewControllerClient.playerPageMyselfURL = this._playerPageMyselfURL;
+
+                       this.pluginClient.setProperty("nicoConfig", this.configure);
+                       this.pluginClient.setProperty("flashVars", this.flashVars);
+
+                       this.nicoViewControllerClient.pluginClient = this.pluginClient;
+                       var hug3:EventSequence = new EventSequence(this);
+
+                       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);
+                       hug3.next();
+               }
+
+               private function initializeCrossSharedObjectSWF():void
+               {       //MethodID:30, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 64
+                       internal var _url:String;                                       //slotID:1
+
+                       _url = null;
+                       _url = StringUtils.joinQuery(this.configure.CROSSSHAREDOBJECT_SWF_URL, {t:this.playerVersion.crossSharedObject});
+
+                       CrossSharedObject.init(_url, EventSequence.bind(function(hug1:Boolean):void{    //MethodID:29, LocalCount= 3 , MaxScope= 1, MaxStack= 5, CodeLength= 134
+                               internal var sccessed:Boolean;                                  //slotID:1
+
+                               sccessed = hug1;
+
+                               if(!sccessed) throw new Error("NicoPlayer.loadCrossSharedObjectSWF: failure to load \"" + configure.CROSSSHAREDOBJECT_SWF_URL + "\"");
+
+                               if(CrossSharedObject.isPersistable || !configure.CROSSSHAREDOBJECT_NONIMG_SWF_URL){
+                                       EventSequence.current.next();
+                               }else{
+                                       CrossSharedObject.terminate();
+
+                                       _url = StringUtils.joinQuery(configure.CROSSSHAREDOBJECT_NONIMG_SWF_URL, {t:playerVersion.crossSharedObject});
+
+                                       CrossSharedObject.init(_url, EventSequence.bind(function(hug1:Boolean):void{    //MethodID:28, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 38
+                                               if(!hug1) throw new Error("NicoPlayer.loadCrossSharedObjectNoNimgSWF: failure to load \"" + configure.CROSSSHAREDOBJECT_NONIMG_SWF_URL + "\"");
+                                               EventSequence.current.next();
+                                       }));
+                               }
+                       }));
+               }
+
+               private function createLogger():void
+               {       //MethodID:31, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 42
+                       this._logManager = new LogManager(!CrossSharedObject.isPersistable);
+                       this.nicoViewControllerClient.logManager = this._logManager;
+
+                       EventSequence.current.next();
+               }
+
+               private function initializePlayerConfig():void
+               {       //MethodID:32, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 116
+                       this.playerConfig = new PlayerConfig(this.isThumbWatchMode);
+                       this.nicoViewControllerClient.playerConfig = this.playerConfig;
+
+                       this.pluginClient.setProperty("playerConfig", this.playerConfig);
+
+                       this.playerConfig.deepenedCommentForce = this.flashVars.isDeepenedCommentForce;
+                       this.playerConfig.aspectRatio = ((this.flashVars.isWide || this._isPlaylist) ? ScreenAspectRatio.WIDE : ScreenAspectRatio.NORMAL);
+
+                       EventSequence.current.next();
+               }
+
+               private function initializeJumper():void
+               {       //MethodID:33, LocalCount= 1 , MaxScope= 1, MaxStack= 4, CodeLength= 74
+                       this.jumper = new Jumper(this.configure, this.flashVars.watchID);
+                       this.nicoViewControllerClient.jumper = this.jumper;
+                       this._startVposConfig = new StartVposConfig(this.jumper, this.flashVars);
+                       this.nicoViewControllerClient.startVposConfig = this._startVposConfig;
+
+                       EventSequence.current.next();
+               }
+
+               private function initializePlayerVersion():void
+               {       //MethodID:35, LocalCount= 2 , MaxScope= 2, MaxStack= 7, CodeLength= 116
+                       internal var request:URLRequest;                                //slotID:1
+                       internal var params:URLVariables;                               //slotID:2
+                       internal var api:APICacheProxy;                                 //slotID:3
+
+                       request = new URLRequest(this.configure.PLAYERVERSION_XML_URL);
+                       params = new URLVariables();
+                       params.v = this.flashVars.playerVersionUpdated;
+                       request.data = params;
+                       api = new APICacheProxy(request, 0, uint.MAX_VALUE, this.flashVars.playerVersionUpdated, false);
+                       this.playerVersion = new PlayerVersion(EventSequence.bind(function(hug1:Boolean):void{  //MethodID:34, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 36
+                               if(!hug1) throw new Error("NicoPlayer.playerVersion. initialize error");
+
+                               nicoViewControllerClient.playerVersion = playerVersion;
+
+                               EventSequence.current.next();
+                       }), api);
+               }
+
+               private function initializeJSConnector():void
+               {       //MethodID:37, LocalCount= 2 , MaxScope= 2, MaxStack= 4, CodeLength= 71
+                       internal var request:URLRequest;                                //slotID:1
+
+                       request = new URLRequest(this.configure.JSCONNECTOR_SWF_URL);
+                       request.data = new URLVariables("v=" + this.playerVersion.jsconnector);
+
+                       JSConnector.init(request, EventSequence.current.bind(function(hug1:Boolean):void{       //MethodID:36, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 27
+                               if(!hug1) throw new IOError("NicoPlayer.initializeJSConnector: initialize error.");
+                               EventSequence.current.next();
+                       }));
+               }
+
+               private function initializePlayerInfo():void
+               {       //MethodID:39, LocalCount= 2 , MaxScope= 2, MaxStack= 7, CodeLength= 116
+                       internal var request:URLRequest;                                //slotID:1
+                       internal var params:URLVariables;                               //slotID:2
+                       internal var api:APICacheProxy;                                 //slotID:3
+
+                       request = new URLRequest(this.configure.PLAYERINFO_XML_URL);
+                       params = new URLVariables();
+                       params.v = this.flashVars.playerInfoUpdated;
+                       request.data = params;
+                       api = new APICacheProxy(request, 0, uint.MAX_VALUE, this.flashVars.playerInfoUpdated, false);
+                       this.playerInfo = new PlayerInfo(EventSequence.bind(function(hug1:Boolean):void{        //MethodID:38, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 36
+                               if(!hug1) throw new Error("NicoPlayer.playerInfo. initialize error");
+
+                               nicoViewControllerClient.playerInfo = playerInfo;
+
+                               EventSequence.current.next();
+                       }), api);
+               }
+
+               private function loadTemplateSWF():void
+               {       //MethodID:41, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 42
+                       HTTPUtils.loadSWF(EventSequence.bind(function(hug1:*):void{     //MethodID:40, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 45
+                               if(!hug1) throw new Error("NicoPlayer.loadTemplateSWF: failure to load \"" + configure.VIEW_SWF_URL + "\"");
+
+                               nicoViewControllerClient.viewRoot = hug1;
+
+                               EventSequence.current.next();
+                       }), this.configure.VIEW_SWF_URL, {t:this.playerVersion.nicoplayerTemplate});
+               }
+
+               private function loadViewControllerSWF():void
+               {       //MethodID:43, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 42
+                       HTTPUtils.loadSWF(EventSequence.bind(function(hug1:*):void{     //MethodID:42, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 89
+                               if(!hug1) throw new Error("NicoPlayer.loadViewControllerSWF: failure to load \"" + configure.VIEWCONTROLLER_SWF_URL + "\"");
+                               addChild(nicoViewControllerClient.viewRoot);
+
+                               nicoViewController = INicoViewController(hug1);
+
+                               nicoViewController.startInit(nicoViewControllerClient);
+
+                               if(playlistController) playlistController.nicoViewController = nicoViewController;
+                               EventSequence.current.next();
+                       }), this.configure.VIEWCONTROLLER_SWF_URL, {t:this.playerVersion.nicoplayerViewController});
+               }
+
+               private function loadNicoScriptSWF():void
+               {       //MethodID:45, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 76
+                       if(!this.flashVars.hasOwnerThread && !this.playlistFlashVars){
+                               EventSequence.current.next();
+
+                               return;
+                       }
+
+                       HTTPUtils.loadSWF(EventSequence.bind(function(hug1:*):void{     //MethodID:44, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 50
+                               if(!hug1) throw new Error("NicoPlayer.loadViewControllerSWF: failure to load \"" + configure.NICOSPLAYER_URL + "\"");
+
+                               nicosPlayer = INicoSPlayer(hug1);
+
+                               EventSequence.current.next();
+                       }), this.configure.NICOSPLAYER_URL, {t:this.playerVersion.nicoscriptPlayer});
+               }
+
+               private function getGetFLVAPIParams():Object
+               {       //MethodID:46, LocalCount= 2 , MaxScope= 1, MaxStack= 4, CodeLength= 165
+                       var hug1:Object = {};
+                       hug1["v"] = ((this._isPlaylist && this.playlistController) ? this.playlistController.threadID : this.flashVars.watchID);
+
+                       if(this.flashVars.videoType == VideoType.SWF) hug1["as3"] = "1";
+
+                       if(this.flashVars.forceLowMode) hug1["lo"] = "1";
+
+                       if(this.flashVars.economyMode) hug1["eco"] = this.flashVars.economyMode;
+
+                       if(this.flashVars.watchFlashVars.noHiroba || this._isPlaylist) hug1["nh"] = "1";
+
+                       return hug1;
+               }
+
+               private function loadVideoInfoAPI():void
+               {       //MethodID:48, LocalCount= 2 , MaxScope= 2, MaxStack= 6, CodeLength= 65
+                       this.nicoViewControllerClient.getFLVData = null;
+
+                       this.systemMessage.informln(__MSG__("動画情報を取得開始"));
+
+                       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
+                               var hug2:* = undefined;
+                               var hug6:* = undefined;
+                               var hug3:* = _playerPageMyselfURL;
+
+                               if(!hug1 || getFLV.closed){
+                                       systemMessage.informln(__MSG__("動画情報の取得に失敗"));
+
+                                       hug2 = (("<p><b>" + __MSG__("動画情報の取得に失敗しました。") + "</b></p>" + "<p>" + __MSG__("ログイン状態が解除されているか、動画が非公開状態にある可能性があります。") + "<br />") + __MSG__("<a href=\"[[url]]\">リロードして再度ログイン</a>", hug3) + "</p>");
+
+                                       systemMessage.alert(hug2);
+
+                                       return;
+                               }
+
+                               if(!initializeInfo){
+                                       initializeInfo = InitializeInfo.getInstance();
+                                       nicoViewControllerClient.initializeInfo = initializeInfo;
+
+                                       pluginClient.setProperty("initializeInfo", initializeInfo);
+                               }
+
+                               if(!initializeInfo.userID){
+                                       systemMessage.informln(__MSG__("ユーザー情報の取得に失敗"));
+
+                                       hug2 = ("<p><b>" + __MSG__("ユーザー情報の取得に失敗しました。") + "</b></p>" + "<p>" + __MSG__("以下のページにアクセスしログインしてください。") + "<a href=\"" + hug3 + "\">" + hug3 + "</a>" + "</p>");
+
+                                       systemMessage.alert(hug2);
+
+                                       return;
+                               }
+
+                               if(flashVars.isChannel){
+                                       systemMessage.informln(__MSG__("チャンネル動画"));
+                               }else if(flashVars.isCommunityThread){
+                                       systemMessage.informln(__MSG__("コミュニティ動画"));
+                               }
+
+                               nicoViewControllerClient.getFLVData = getFLV;
+
+                               if(!pluginClient.hasInitialized("getFLV")) pluginClient.setProperty("getFLV", getFLV);
+                               SystemMessage.instance.informln(__MSG__("スレッド(動画)") + ":" + flashVars.watchID);
+
+                               var hug4:* = new RegExp("(https?|rtmp(e|t|te)?)://([^.]+).+", "ig");
+                               var hug5:* = hug4.exec(getFLV.videoURL);
+
+                               if(hug5 != null){
+                                       hug6 = ((__MSG__("動画ホスト") + ":") + ((hug5.length >= 1) ? hug5[3] : ""));
+
+                                       if(new RegExp("low$").test(getFLV.videoURL)) hug6 += __MSG__(" (エコノミー)");
+                                       SystemMessage.instance.informln(hug6);
+                               }
+
+                               EventSequence.current.next();
+                       }));
+               }
+
+               private function initializeMyList():void
+               {       //MethodID:49, LocalCount= 1 , MaxScope= 1, MaxStack= 4, CodeLength= 46
+                       this.myList = new MyList(this.configure, this.getFLV.threadID);
+                       this.nicoViewControllerClient.myList = this.myList;
+
+                       EventSequence.current.next();
+               }
+
+               private function loadBGMVideoInfo():void
+               {       //MethodID:51, LocalCount= 2 , MaxScope= 2, MaxStack= 4, CodeLength= 119
+                       this.BGMVideoInfos = [];
+
+                       if((!this.flashVars.importedBGMVideos || (this.flashVars.importedBGMVideos.length == 0)) || ((this.getFLV.deleted != 0) && (this.getFLV.deleted != 8))){
+                               EventSequence.current.next();
+
+                               return;
+                       }
+
+                       GetBGM.exec(EventSequence.bind(function(hug1:Boolean, hug2:Array):void{ //MethodID:50, LocalCount= 5 , MaxScope= 0, MaxStack= 3, CodeLength= 118
+                               var hug3:* = undefined;
+                               var hug4:* = undefined;
+
+                               if(!hug1){
+                                       systemMessage.informln(__MSG__("引用動画の情報の取得に失敗"));
+
+                                       hug3 = _playerPageMyselfURL;
+                                       hug4 = ("<p><b>" + __MSG__("引用動画の情報の取得に失敗しました。") + "</b></p>" + "<p>" + __MSG__("お手数ですが以下のリンクをおしてページをロードしてください。") + "<a href=\"" + hug3 + "\">" + hug3 + "</a>" + "</p>");
+
+                                       systemMessage.alert(hug4);
+
+                                       return;
+                               }
+
+                               BGMVideoInfos = hug2;
+
+                               EventSequence.current.next();
+                       }), this.configure.GETBGM_API_URL, this.getFLV.threadID);
+               }
+
+               private function initializeNG():void
+               {       //MethodID:55, LocalCount= 2 , MaxScope= 2, MaxStack= 11, CodeLength= 145
+                       internal var noLoad:Boolean;                                    //slotID:1
+
+                       noLoad = !CrossSharedObject.isPersistable;
+                       this.nicoViewControllerClient.ngFilter = null;
+                       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));
+
+                       this.ngComment.onInitialized.add(EventSequence.bind(function(hug1:Boolean):void{        //MethodID:53, LocalCount= 3 , MaxScope= 1, MaxStack= 4, CodeLength= 187
+                               internal var success:Boolean;                                   //slotID:1
+                               internal var ngCommentLength:*;                                 //slotID:2
+                               internal var ngUserLength:*;                                    //slotID:3
+
+                               ngCommentLength = undefined;
+                               ngUserLength = undefined;
+                               success = hug1;
+
+                               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>");
+
+                               nicoViewControllerClient.ngFilter = ngComment;
+
+                               if(!pluginClient.hasInitialized("ngFilter")) pluginClient.setProperty("ngFilter", ngComment);
+
+                               if(!isThumbWatchMode){
+                                       ngCommentLength = 0;
+                                       ngUserLength = 0;
+
+                                       ngComment.list.forEach(function(hug1:NGInfo, hug2:int, hug3:Array):void{        //MethodID:52, LocalCount= 6 , MaxScope= 0, MaxStack= 2, CodeLength= 79
+                                               if(hug1.type == NGType.MESSAGE){
+                                                       ngCommentLength++;
+                                               }else if(hug1.type == NGType.USER_ID){
+                                                       ngUserLength++;
+                                               }
+                                       });
+                                       _logManager.observer.onNGCommentInitialized(ngCommentLength, ngUserLength);
+                               }
+
+                               EventSequence.current.next();
+                       }));
+                       this.ngComment.onUpdated.add(function(hug1:Array, hug2:String):void{    //MethodID:54, LocalCount= 6 , MaxScope= 0, MaxStack= 2, CodeLength= 56
+                               var hug3:ICommentList = null;
+
+                               if(hug2 == NGResponseConstants.UNSERVE) return;
+
+                               for each(hug3 in commentListContainer){
+                                       hug3.serveCommentList();
+                               }
+                       });
+               }
+
+               private function initializeCommentStorage():void
+               {       //MethodID:59, LocalCount= 2 , MaxScope= 2, MaxStack= 3, CodeLength= 106
+                       internal var client:MessageServerClient;                        //slotID:1
+
+                       client = null;
+                       this.nicoViewControllerClient.commentStorageEvents = null;
+                       client = new MessageServerClient(this.getFLV.messageServerURL);
+
+                       client.connectionLost.add(function(hug1:String):void{   //MethodID:56, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 20
+                               systemMessage.informln(__MSG__("コメント受信中にエラーが発生: ") + hug1);
+                       });
+                       client.connected.add(function():void{   //MethodID:57, LocalCount= 1 , MaxScope= 0, MaxStack= 3, CodeLength= 18
+                               systemMessage.informln(__MSG__("コメントサーバーへの接続準備完了"));
+                       });
+
+                       if(this._logManager) this._logManager.observer.onThreadLoadStarted();
+                       client.connect(EventSequence.bind(function(hug1:Boolean, hug2:String):void{     //MethodID:58, LocalCount= 3 , MaxScope= 0, MaxStack= 8, CodeLength= 131
+                               commentStorage = new CommentStorage(client, keygen, initializeInfo.userID, initializeInfo.isPremium, flashVars, getFLV);
+
+                               if((playerInfo.leafFilter.indexOf(getFLV.messageServerURL) != (-1)) || (flashVars.leafSwitch == NicoFlashVars.LEAF_DISABLE)) commentStorage.forceLeafOff = true;
+
+                               nicoViewControllerClient.commentStorageEvents = new CommentStorageEvents(commentStorage);
+
+                               if(_logManager) _logManager.observer.onThreadLoadCompleted(hug1);
+                               EventSequence.current.next();
+                       }));
+               }
+
+               private function initializeGetChecklist():void
+               {       //MethodID:61, LocalCount= 2 , MaxScope= 2, MaxStack= 6, CodeLength= 102
+                       internal var apiCacheProxy:APICacheProxy;                       //slotID:1
+                       internal var callback:Function;                                 //slotID:2
+                       internal var noLoad:Boolean;                                    //slotID:3
+
+                       apiCacheProxy = new APICacheProxy(new URLRequest(this.configure.GET_CHECKLIST_URL), 0, 0, this.initializeInfo.userID);
+                       callback = EventSequence.bind(function(hug1:Boolean):void{      //MethodID:60, LocalCount= 2 , MaxScope= 0, MaxStack= 1, CodeLength= 11
+                               EventSequence.current.next();
+                       });
+
+                       noLoad = !CrossSharedObject.isPersistable;
+                       this.getChecklist = new GetChecklist(callback, apiCacheProxy, this.flashVars.watchFlashVars.useChecklistCache, noLoad);
+               }
+
+               private function initializeHiroba():void
+               {       //MethodID:69, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 380
+                       this._logManager.observer.onHirobaInitializeStarted();
+
+                       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){
+                               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);
+                               EventSequence.current.next();
+
+                               return;
+                       }
+
+                       if(this.nicoViewControllerClient.hirobaPlayer){
+                               this._logManager.observer.onHirobaInitializeAborted();
+                               EventSequence.current.next();
+
+                               return;
+                       }
+
+                       this.hirobaPlayer = new HirobaPlayer(this.playerConfig, this.initializeInfo.isPremium);
+                       this.nicoViewControllerClient.hirobaPlayer = this.hirobaPlayer;
+
+                       HTTPUtils.loadSWF(function(hug1:Sprite):void{   //MethodID:68, LocalCount= 3 , MaxScope= 1, MaxStack= 6, CodeLength= 276
+                               internal var swf:Sprite;                                        //slotID:1
+                               internal var connector:IHirobaConnector;                        //slotID:2
+                               internal var succeeded:Boolean;                                 //slotID:3
+                               internal var client:HirobaConnectorClient;                      //slotID:4
+                               internal var onConnectionFailed:Function;                       //slotID:5
+                               internal var onDisconnected:Function;                           //slotID:6
+                               internal var onConnected:Function;                              //slotID:7
+
+                               connector = null;
+                               client = null;
+                               onConnectionFailed = null;
+                               onDisconnected = null;
+                               onConnected = null;
+                               swf = hug1;
+                               onConnectionFailed = function(hug1:HirobaErrorEvent):void{      //MethodID:63, LocalCount= 2 , MaxScope= 0, MaxStack= 4, CodeLength= 37
+                                       systemMessage.informln(__MSG__("広場の接続中にエラーが発生"));
+                                       _logManager.observer.onHirobaConnected(false, hug1.text, hug1.referer);
+                               };
+
+                               onDisconnected = function(hug1:HirobaErrorEvent):void{  //MethodID:64, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 36
+                                       systemMessage.informln(__MSG__("広場の接続中にエラーが発生"));
+                                       _logManager.observer.onHirobaDisconnected(hug1.text, hug1.referer);
+                               };
+
+                               onConnected = function(hug1:Boolean, hug2:String, hug3:String):void{    //MethodID:66, LocalCount= 5 , MaxScope= 1, MaxStack= 4, CodeLength= 243
+                                       internal var succeeded:Boolean;                                 //slotID:1
+                                       internal var status:String;                                     //slotID:2
+                                       internal var referer:String;                                    //slotID:3
+
+                                       succeeded = hug1;
+                                       status = hug2;
+                                       referer = hug3;
+
+                                       if((referer == HirobaEventReferer.HIROBA_AGENT) && succeeded){
+                                               _logManager.observer.onHirobaConnected(true, status, referer);
+
+                                               return;
+                                       }
+
+                                       if(!succeeded){
+                                               systemMessage.informln(__MSG__("広場の接続に失敗"));
+                                               _logManager.observer.onHirobaConnected(false, status, referer);
+
+                                               return;
+                                       }
+
+                                       systemMessage.informln(__MSG__("広場の接続に成功"));
+                                       _logManager.observer.onHirobaConnected(true, status, referer);
+                                       hirobaPlayer.onClickedLink.add(function():void{ //MethodID:65, LocalCount= 1 , MaxScope= 0, MaxStack= 1, CodeLength= 15
+                                               if(videoController) videoController.stop();
+                                       });
+
+                                       hirobaPlayer.connector = connector;
+
+                                       if(commentRouter) commentRouter.addHiroba(hirobaPlayer);
+
+                                       if(marqueeClient && marqueeClient.marqueePlayer) client.insertItemOnMarquee_0 = INicoMarqueePlayer(marqueeClient.marqueePlayer).interruptContent;
+
+                                       hirobaConnectorClient = client;
+
+                                       nicoViewController.onHirobaInitialized();
+                               };
+
+                               connector = IHirobaConnector(swf);
+                               succeeded = (connector != null);
+
+                               if(!succeeded){
+                                       systemMessage.informln(__MSG__("広場の接続に失敗"));
+                                       _logManager.observer.onHirobaConnected(false, HirobaErrorStatus.HIROBA_CONNECTOR_NOT_FOUND, HirobaEventReferer.NICO_PLAYER);
+
+                                       return;
+                               }
+
+                               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
+                                       return (playerConfig.isMute ? 0 : playerConfig.volume);
+                               });
+
+                               client.checkList = getChecklist;
+
+                               connector.initialize(client);
+                               connector.addEventListener(HirobaErrorEvent.CONNECTION_FAIL, onConnectionFailed);
+                               connector.addEventListener(HirobaErrorEvent.DISCONNECTED, onDisconnected);
+                               connector.addEventListener(HirobaEvent.CLICKED_LINK, function(hug1:Event):void{ //MethodID:67, LocalCount= 2 , MaxScope= 0, MaxStack= 1, CodeLength= 15
+                                       if(videoController) videoController.stop();
+                               });
+                               connector.connect(onConnected);
+                       }, this.configure.HIROBACONNECTOR_SWF_URL, {v:this.playerVersion.hirobaconnector});
+                       EventSequence.current.next();
+               }
+
+               private function prepareVideo():void
+               {       //MethodID:71, LocalCount= 2 , MaxScope= 2, MaxStack= 8, CodeLength= 570
+                       internal var videoWidth:int;                                    //slotID:1
+                       internal var videoHeight:int;                                   //slotID:2
+
+                       this.nicoViewControllerClient.video = null;
+                       this.nicoViewControllerClient.videoController = null;
+
+                       if(!this.videoLayerManager){
+                               this.videoLayerManager = new VideoLayerManager(this.nicoViewController.videoBase, this.playerConfig.aspectRatio);
+
+                               if(this.playerConfig.deepenedComment){
+                                       ObjectUtils.callLater(function():void{  //MethodID:70, LocalCount= 1 , MaxScope= 0, MaxStack= 1, CodeLength= 8
+                                               videoLayerManager.deepenComment();
+                                       });
+                               }
+
+                               this.nicoViewControllerClient.videoLayerManager = this.videoLayerManager;
+                       }else{
+                               this.videoLayerManager.refreshLayers();
+                       }
+
+                       if(!this.pluginClient.hasInitialized("videoLayerManager")) this.pluginClient.setProperty("videoLayerManager", this.videoLayerManager);
+
+                       videoWidth = ((this.flashVars.isWide || this._isPlaylist) ? VideoLayerConstants.VIDEO_LAYER_HD_WIDTH : VideoLayerConstants.VIDEO_LAYER_SD_WIDTH);
+                       videoHeight = ((this.flashVars.isWide || this._isPlaylist) ? VideoLayerConstants.VIDEO_LAYER_HD_HEIGHT : VideoLayerConstants.VIDEO_LAYER_SD_HEIGHT);
+
+                       if(this.video && this.video.isInitialized){
+                               this.video.close();
+
+                               this.video = null;
+                       }
+
+                       this.video = new VideoWrapper(this.videoLayerManager.videoLayer, this.getFLV, this.configure, this.flashVars, videoWidth, videoHeight);
+                       this.nicoViewControllerClient.video = this.video;
+                       this.videoController = new VideoController(this.video, this.playerConfig, this.initializeInfo.isPremium, this._isPlaylist);
+                       this.nicoViewControllerClient.videoController = this.videoController;
+
+                       if(this._logManager){
+                               this.video.onVideoLoadComplete.add(this._logManager.observer.onVideoLoadCompleted);
+                               this.video.onVideoBufferingStarted.add(this._logManager.observer.onVideoBufferingStarted);
+                       }
+
+                       if(this.playlistController) this.playlistController.videoController = this.videoController;
+
+                       if(!this.pluginClient.hasInitialized("videoController")) this.pluginClient.setProperty("videoController", this.videoController);
+
+                       if(this._onChangedVideoStatus != null) this.video.onChangedVideoStatus.add(this._onChangedVideoStatus);
+
+                       if(this.vposWatcher) this.vposWatcher.kill();
+
+                       this.vposWatcher = new VposWatcher(this.video);
+
+                       if(this.videoLoadGuardian != null) this.videoLoadGuardian.destroy();
+
+                       this.videoLoadGuardian = new VideoLoadGuardian(this.video, this.initializeInfo.isPremium);
+
+                       if(this.nicoViewControllerClient.videoLoadWatcher == null) this.nicoViewControllerClient.videoLoadWatcher = new VideoLoadWatcher();
+                       EventSequence.current.next();
+               }
+
+               private function prepareCommentLists():void
+               {       //MethodID:73, LocalCount= 2 , MaxScope= 2, MaxStack= 12, CodeLength= 597
+                       internal var normalThreadID:String;                             //slotID:1
+                       internal var leafMode:Boolean;                                  //slotID:2
+                       internal var clear:Function;                                    //slotID:3
+                       internal var filtered:CommentPoolContainer;                     //slotID:4
+
+                       filtered = null;
+                       clear = function():void{        //MethodID:72, LocalCount= 1 , MaxScope= 0, MaxStack= 2, CodeLength= 150
+                               nicoViewControllerClient.commentListContainer = null;
+                               nicoViewControllerClient.nicoSClient = null;
+
+                               if(nicosClient) nicosClient.clear();
+
+                               if(nicosPlayer) nicosPlayer.clear();
+
+                               nicosClient = null;
+                               privateCommentList = null;
+                               commentList = null;
+                               nicoSCommentList = null;
+                               ownerCommentList = null;
+                               localCommentList = null;
+
+                               delete commentListContainer[CommentConstants.CL_PRIVATE];
+                               delete commentListContainer[CommentConstants.CL_MAIN];
+                               delete commentListContainer[CommentConstants.CL_NICOS];
+                               delete commentListContainer[CommentConstants.CL_OWNER];
+                               delete commentListContainer[CommentConstants.CL_LOCAL];
+                       };
+
+                       clear();
+
+                       normalThreadID = this.getFLV.threadID;
+                       leafMode = (((this.playerInfo.leafFilter.indexOf(this.getFLV.messageServerURL) != (-1)) || (this.flashVars.leafSwitch != NicoFlashVars.LEAF_DISABLE)) && this.playerConfig.isEnabledLeafMode);
+
+                       if(this.flashVars.isCommunityThread){
+                               this.privateCommentList = new CommentList(this.getFLV.threadID, this.getFLV.videoLength, this.commentStorage, CommentConstants.CL_PRIVATE, this.flashVars.isMymemory, leafMode);
+                               this.commentListContainer[CommentConstants.CL_PRIVATE] = this.privateCommentList;
+                               this.mainCommentListName = CommentConstants.CL_PRIVATE;
+                               normalThreadID = this.getFLV.optionalThreadID;
+                       }
+
+                       if(this.getFLV.nicoSThreadID){
+                               this.nicoSCommentList = new CommentList(this.getFLV.nicoSThreadID, this.getFLV.videoLength, this.commentStorage, CommentConstants.CL_NICOS);
+                               this.commentListContainer[CommentConstants.CL_NICOS] = this.nicoSCommentList;
+                       }
+
+                       this.commentList = new CommentList(normalThreadID, this.getFLV.videoLength, this.commentStorage, CommentConstants.CL_MAIN, this.flashVars.isMymemory, leafMode);
+                       this.commentListContainer[CommentConstants.CL_MAIN] = this.commentList;
+
+                       if(this.flashVars.hasOwnerThread){
+                               this.nicosClient = new NicoSClient(this.nicosPlayer, this.videoController, this.videoLayerManager, this.jumper, this.flashVars, null, null, this.nicoSCommentList, this.playerConfig, this._isPlaylist);
+                               this.ownerCommentList = new OwnerCommentList(normalThreadID, this.commentStorage, this.nicosClient, new RegisterBGM(this.configure));
+                               this.commentListContainer[CommentConstants.CL_OWNER] = this.ownerCommentList;
+                       }
+
+                       this.localCommentList = new LocalCommentList();
+                       this.commentListContainer[CommentConstants.CL_LOCAL] = this.localCommentList;
+                       this.nicoViewControllerClient.commentListContainer = this.commentListContainer;
+                       this.nicoViewControllerClient.nicoSClient = this.nicosClient;
+
+                       if(!this.pluginClient.hasInitialized("commentListContainer")) this.pluginClient.setProperty("commentListContainer", this.commentListContainer);
+
+                       if(!this.nicoViewControllerClient.filteredCommentPoolContainers) this.nicoViewControllerClient.filteredCommentPoolContainers = [];
+
+                       if(!this.pluginClient.hasInitialized("filteredCommentPoolContainer")){
+                               filtered = new CommentPoolContainer();
+
+                               this.pluginClient.setProperty("filteredCommentPoolContainer", filtered);
+                               this.nicoViewControllerClient.filteredCommentPoolContainers.push(filtered);
+                       }
+
+                       EventSequence.current.next();
+               }
+
+               private function initializeModelAndView():void
+               {       //MethodID:74, LocalCount= 3 , MaxScope= 1, MaxStack= 9, CodeLength= 768
+                       var hug2:GetRelation = null;
+                       this.nicoViewControllerClient.commentLayer = null;
+                       this.nicoViewControllerClient.commentLayerView = null;
+                       this.nicoViewControllerClient.commentViewTransformer = null;
+                       this.nicoViewControllerClient.jumpMessageLayer = null;
+                       this.nicoViewControllerClient.replacer = null;
+                       this.nicoViewControllerClient.channelReplacer = null;
+                       this.nicoViewControllerClient.deleteFilter = null;
+                       this.nicoViewControllerClient.externalClient = null;
+
+                       this.initializeCommentLayerView();
+
+                       this.nicoViewControllerClient.commentLayer = this.commentLayer;
+                       this.nicoViewControllerClient.commentLayerView = this.commentLayerView;
+                       this.nicoViewControllerClient.commentViewTransformer = this.commentViewTransformer;
+
+                       if(this.nicosClient){
+                               this.nicosClient.commentLayerView_ = this.commentLayerView;
+                               this.nicosClient.commentLayer_ = this.commentLayer;
+                       }
+
+                       this.jumpMsgLayer = new JumpMessageLayer(this.videoLayerManager.jumpMsgLayer);
+                       this.nicoViewControllerClient.jumpMessageLayer = this.jumpMsgLayer;
+                       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));
+                       this.nicoViewControllerClient.replacer = this.replacer;
+
+                       if(this.getFLV.channelFilter){
+                               this.channelReplacer = new ChannelReplacer(this.getFLV.channelFilter);
+                               this.nicoViewControllerClient.channelReplacer = this.channelReplacer;
+                       }
+
+                       var hug1:Object = {};
+
+                       if(this.commentList) hug1[CommentConstants.CL_MAIN] = this.commentList;
+
+                       if(this.nicoSCommentList) hug1[CommentConstants.CL_NICOS] = this.nicoSCommentList;
+
+                       if(this.privateCommentList) hug1[CommentConstants.CL_PRIVATE] = this.privateCommentList;
+
+                       this.deleteFilter = new DeleteFilter(hug1, (this.isThumbWatchMode ? false : this.flashVars.watchFlashVars.isEditMode));
+                       this.nicoViewControllerClient.deleteFilter = this.deleteFilter;
+
+                       if(!this.audioShutter){
+                               this.audioShutter = new ControllerShutter(AudioShutterConstants.END_OF_ENUM, "AUDIO");
+                               this.nicoViewControllerClient.audioShutter = this.audioShutter;
+
+                               this.pluginClient.setProperty("audioShutter", this.audioShutter);
+                       }
+
+                       if(!this.externalClient) this.externalClient = new ExternalClient();
+                       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));
+
+                       this.externalClient.localCommentList = this.localCommentList;
+                       this.externalClient.ownerCommentList = this.ownerCommentList;
+                       this.nicoViewControllerClient.externalClient = this.externalClient;
+
+                       this.video.onChangedVideoStatus.add(this.externalClient.onChangeVideoStatus);
+
+                       if(!this.commentShutter){
+                               this.commentShutter = new ControllerShutter(CommentShutterConstants.END_OF_ENUM, "COMMENT");
+                               this.nicoViewControllerClient.commentShutter = this.commentShutter;
+
+                               if(this.playlistController != null) this.playlistController.commentShutter = this.commentShutter;
+                       }
+
+                       if(this.nicosClient){
+                               this.nicosClient.audioShutter = this.audioShutter;
+                               this.nicosClient.commentShutter = this.commentShutter;
+                       }
+
+                       if(!this.flashVars.forceRelationInvisible){
+                               hug2 = new GetRelation(HTTPUtils.loadXML, this.configure.GETRELATION_URL, this.flashVars.watchID, this.flashVars.category);
+                               this.relatedList = new RelatedVideoList(hug2, this.flashVars.noRelatedVideo);
+                               this.nicoViewControllerClient.relatedList = this.relatedList;
+                       }
+
+                       EventSequence.current.next();
+               }
+
+               private function initializeCommentRouter():void
+               {       //MethodID:78, LocalCount= 2 , MaxScope= 2, MaxStack= 8, CodeLength= 271
+                       this.nicoViewControllerClient.lockedComment = null;
+                       this.nicoViewControllerClient.commentRouter = null;
+
+                       if(this.isThumbWatchMode && !this.flashVars.thumbFlashVars.thumbComment){
+                               EventSequence.current.next();
+
+                               return;
+                       }
+
+                       this.lockedComment = new LockedComment(this.getFLV.threadID, this.mainCommentListName, this.flashVars.watchFlashVars.isPostLocked, this.flashVars.watchFlashVars.isEditMode);
+                       this.nicoViewControllerClient.lockedComment = this.lockedComment;
+                       this.deleteFilter.lockedComment = this.lockedComment;
+                       this.commentRouter = new CommentRouter(this.flashVars, this.playerConfig, this.lockedComment, this.nicosClient, this.initializeInfo.isPremium, this.channelReplacer);
+
+                       this.commentRouter.onCommentPostErorr.add(function(hug1:String):void{   //MethodID:75, LocalCount= 3 , MaxScope= 0, MaxStack= 5, CodeLength= 580
+                               var hug2:String = hug1;
+
+                               switch(hug2){
+                               case CommentRouter.ERROR_POST_184:
+                                       systemMessage.informComment(__MSG__("チャンネルとコミュニティ動画では184コマンドを使用できません"));
+                                       break;
+                               case CommentRouter.ERROR_POST_AT_COMMENT_UNDEFINED:
+                                       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つです。"));
+                                       break;
+                               case CommentRouter.ERROR_POST_BUTTON_ONCE:
+                                       systemMessage.informComment(__MSG__("@ボタンは、1視聴につき1つまでしかご利用になれません"));
+                                       break;
+                               case CommentRouter.ERROR_POST_BUTTON_PREMIUM_ONLY:
+                                       systemMessage.alert(__MSG__("@ボタンは現在[[a_tag_open]]プレミアム会員[[a_tag_close]]のみ使用可能です。", "<a href=\"http://www.nicovideo.jp/?p=premium_top&sec=at_button\" target=\"_blank\">", "</a>"));
+                                       break;
+                               case CommentRouter.ERROR_POST_HIROBA:
+                                       systemMessage.informComment(__MSG__("広場では@ボタンは使えません。"));
+                                       break;
+                               case CommentRouter.ERROR_POST_INITIALIZE:
+                                       systemMessage.informComment(__MSG__("コメント投稿の準備が未完了です"));
+                                       break;
+                               case CommentRouter.ERROR_POST_BUTTON_ARGUMENTS:
+                                       systemMessage.informComment(__MSG__("@ボタンの設定項目が足りません。"));
+                                       break;
+                               case CommentRouter.ERROR_POST_SAME_COMMENT:
+                                       systemMessage.informComment(__MSG__("同じコメントを連続で投稿することができません。"));
+                                       break;
+                               case CommentRouter.ERROR_POST_CHANNEL_FILTER:
+                                       systemMessage.informComment(__MSG__("入力されたコメントはこの動画では投稿できません。"));
+                                       break;
+                               case CommentRouter.ERROR_POST_AT_COMMENT_DISABLED:
+                                       systemMessage.informComment(__MSG__("この動画では@コメントは使えません。"));
+                                       break;
+                               case CommentRouter.ERROR_POST_COMMAND_DISABLED:
+                                       systemMessage.informComment(__MSG__("この動画ではコマンドは使えません。"));
+                                       break;
+                               default:
+                                       break;
+                               }
+                       });
+
+                       if(this.flashVars.watchFlashVars.noAtPizza || this.isThumbWatchMode){
+                               this.commentRouter.onCommentHavingMacro.add(function(hug1:IMacroParserResult):void{     //MethodID:76, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 22
+                                       if(hug1.macroName == "ピザ") systemMessage.informComment("@ピザは、使用できません。");
+                               });
+                       }else{
+                               this.commentRouter.onCommentHavingMacro.add(function(hug1:IMacroParserResult):void{     //MethodID:77, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 40
+                                       if(hug1.macroName == "ピザ"){
+                                               navigateToURL(new URLRequest(configure.PIZZA_URL), "_blank");
+                                               videoController.stop();
+                                       }
+                               });
+                       }
+
+                       if(this.nicosClient) this.nicosClient.commentRouter = this.commentRouter;
+
+                       this.nicoViewControllerClient.commentRouter = this.commentRouter;
+                       EventSequence.current.next();
+               }
+
+               private function initializeModelAndView4Watch():void
+               {       //MethodID:82, LocalCount= 3 , MaxScope= 2, MaxStack= 10, CodeLength= 1164
+                       internal var linkURL:String;                                    //slotID:1
+                       internal var pageURL:String;                                    //slotID:2
+                       internal var messageHTML:String;                                //slotID:3
+                       internal var onMarqueePlayerLoaded:Function;                    //slotID:4
+                       internal var isUseVideoEnder:Boolean;                           //slotID:5
+
+                       linkURL = null;
+                       pageURL = null;
+                       messageHTML = null;
+                       isUseVideoEnder = false;
+                       this.nicoViewControllerClient.timeMachine = null;
+                       this.nicoViewControllerClient.marqueeClient = null;
+                       this.nicoViewControllerClient.frameRateBooster = null;
+                       this.timeMachine = new TimeMachine(new Date(parseInt(this.getFLV.threadID, 10) * 1000));
+                       this.nicoViewControllerClient.timeMachine = this.timeMachine;
+
+                       if(!this.frameRateBooster) this.frameRateBooster = new FrameRateBooster(stage);
+
+                       this.nicoViewControllerClient.frameRateBooster = this.frameRateBooster;
+
+                       if(this._isPlaylist && (this._shutterKeyLastClosed >= 0)){
+                               this.commentShutter.open(this._shutterKeyLastClosed);
+
+                               this._shutterKeyLastClosed = -1;
+                       }
+
+                       if(this.flashVars.isMymemory){
+                               this.commentShutter.close(this._shutterKeyLastClosed = CommentShutterConstants.SHUTTER_MYMEMORY, __MSG__("マイメモリーはコメントできません"));
+                       }else if(!this.getFLV.commentExpire && !this.flashVars.watchFlashVars.isOwnerThreadEditMode){
+                               if(this.flashVars.watchFlashVars.commentListPublicStatus == CommentListPublicStatus.MEMBER_ONLY){
+                                       linkURL = (this.configure.CHANNEL_URL + (this.flashVars.isChannel ? "channel" : "community") + "/" + this.flashVars.communityGlobalID);
+
+                                       this.commentShutter.close(this._shutterKeyLastClosed = CommentShutterConstants.SHUTTER_CHANNEL_COMMUNITY, (("<a href=\"" + linkURL + "\"><u>") + (this.flashVars.isChannel ? __MSG__("コメントするにはチャンネルに入会してください") : __MSG__("コメントするにはコミュニティに入会してください")) + "</u></a>"));
+                               }else{
+                                       this.commentShutter.close(this._shutterKeyLastClosed = CommentShutterConstants.SHUTTER_OTHER, "");
+                               }
+                       }else if(this.flashVars.watchFlashVars.isCommentShuttered){
+                               this.commentShutter.close(this._shutterKeyLastClosed = CommentShutterConstants.SHUTTER_LOCKED, __MSG__("あなたはコメントを禁止されています"));
+                       }
+
+                       if(!CrossSharedObject.isPersistable){
+                               if(!this.flashVars.watchFlashVars.isEditMode && !this.flashVars.watchFlashVars.isOwnerThreadEditMode) this.commentShutter.close(this._shutterKeyLastClosed = CommentShutterConstants.SHUTTER_NOSHAREDOBJECT, ("<p>" + __MSG__("ローカル記憶領域が使用できないため、コメント機能を制限をしています") + "</p>"));
+
+                               if(!this._isShowedDialog){
+                                       this._isShowedDialog = true;
+
+                                       this.systemMessage.informln(__MSG__("SharedObjectの初期に失敗しました。"));
+
+                                       pageURL = this._playerPageMyselfURL;
+                                       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>");
+
+                                       this.systemMessage.alert(messageHTML);
+                               }
+                       }
+
+                       if(this.flashVars.watchFlashVars.isEditMode){
+                               this.deleteFilter.onFinishedEdit = function(hug1:Boolean):void{ //MethodID:79, LocalCount= 5 , MaxScope= 0, MaxStack= 4, CodeLength= 144
+                                       var hug3:String = null;
+                                       var hug4:String = null;
+                                       var hug2:String = _playerPageMyselfURL;
+
+                                       if(!hug1){
+                                               if(flashVars.isMymemory){
+                                                       hug3 = StringUtils.joinQuery(hug2, {edit:"mymemory"});
+                                                       hug4 = ("<b>マイメモリーの編集に失敗しました。</b>" + "再度編集しなおす場合は、以下のURLからお願いします。<br />" + "<a href=\"" + hug3 + "\">" + hug3 + "</a>");
+                                               }else{
+                                                       hug3 = StringUtils.joinQuery(hug2, {edit:"comment"});
+                                                       hug4 = ("<b>編集の保存に失敗しました。</b>" + "再度編集しなおす場合は、以下のURLからお願いします。<br />" + "<a href=\"" + hug3 + "\">" + hug3 + "</a>");
+                                               }
+
+                                               systemMessage.alert(hug4);
+
+                                               return;
+                                       }
+
+                                       navigateToURL(new URLRequest(hug2), "_self");
+                               };
+                       }
+
+                       if(!this.flashVars.watchFlashVars.isNoMarquee && !this.flashVars.watchFlashVars.isEditMode && !this.flashVars.watchFlashVars.isOwnerThreadEditMode && CrossSharedObject.isPersistable){
+                               onMarqueePlayerLoaded = function():void{        //MethodID:80, LocalCount= 1 , MaxScope= 0, MaxStack= 3, CodeLength= 94
+                                       if(nicosClient) nicosClient.marqueePlayer = INicoMarqueePlayer(marqueeClient.marqueePlayer);
+
+                                       if(hirobaConnectorClient) hirobaConnectorClient.insertItemOnMarquee_0 = INicoMarqueePlayer(marqueeClient.marqueePlayer).interruptContent;
+
+                                       if(playlistController) playlistController.marqueeClient = marqueeClient;
+                                       pluginClient.setProperty("marqueeClient", marqueeClient);
+                                       commentRouter.addMarqueePlayer(marqueeClient.marqueePlayer);
+                               };
+
+                               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);
+
+                               if(this.nicosClient) this.nicosClient.marqueePlayer = INicoMarqueePlayer(this.marqueeClient.marqueePlayer);
+
+                               this.marqueeClient.videoController = this.videoController;
+                               this.marqueeClient.flashVars = this.flashVars;
+                               this.nicoViewControllerClient.marqueeClient = this.marqueeClient;
+                       }
+
+                       if(!this.flashVars.watchFlashVars.isNoAppli && !this.pluginClient.hasInitialized("videoDetail")) this.pluginClient.setProperty("videoDetail", new VideoDetail(this.flashVars.category, this.flashVars.videoDetail));
+                       function():void{        //MethodID:81, LocalCount= 5 , MaxScope= 0, MaxStack= 23, CodeLength= 193
+                               if(_isPlaylist) return;
+
+                               var hug1:* = new RemoconNotifier(configure.REMOCON_ALERT_SWF_URL + "?" + playerVersion.remoconAlert);
+                               var hug2:* = new RemoconFullScreenKeeper(playerConfig, externalClient);
+                               var hug3:* = new RemoconPlayerStateObserver(externalClient.udpateRemoconState, hug1, hug2);
+
+                               commentRouter.onCommentPostErorr.add(hug3.onCommentRouterPostError);
+
+                               var hug4:* = new RemoconClient(hug3, hug1, RemoconState.instance);
+
+                               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);
+                               hug2.start();
+
+                               nicoViewControllerClient.remoconClient = hug4;
+                       }();
+
+                       this.nicoViewControllerClient.defaultMylistAppender = new DefaultMylistAppender(HTTPUtils.loadJSON, this.configure.MYLIST_ADD_API_URL, this.getFLV.threadID, this.flashVars.watchFlashVars.noDeflistAdd, this.flashVars.watchFlashVars.csrfToken);
+
+                       if(this.nicoViewControllerClient.videoenderTesterConfig == null){
+                               if(this._isPlaylist){
+                                       isUseVideoEnder = (this.playlistFlashVars && this.playlistFlashVars.useVideoEnder);
+                               }else{
+                                       isUseVideoEnder = (this.flashVars.watchFlashVars && this.flashVars.watchFlashVars.useVideoEnder);
+                               }
+
+                               this._videoenderTesterConfig = new VideoenderTesterConfig(isUseVideoEnder);
+                               this.nicoViewControllerClient.videoenderTesterConfig = this._videoenderTesterConfig;
+                       }
+
+                       EventSequence.current.next();
+               }
+
+               private function initializeSponsorVideo():void
+               {       //MethodID:85, LocalCount= 2 , MaxScope= 2, MaxStack= 7, CodeLength= 169
+                       internal var url:String;                                        //slotID:1
+                       internal var info:GetSponsorInfo;                               //slotID:2
+
+                       info = null;
+                       this.nicoViewControllerClient.getSponsorInfo = null;
+
+                       if(!this.isThumbWatchMode && (this.flashVars.isMymemory || this.flashVars.watchFlashVars.isEditMode || this.flashVars.watchFlashVars.isOwnerThreadEditMode)){
+                               EventSequence.current.next();
+
+                               return;
+                       }
+
+                       url = StringUtils.joinQuery(this.configure.GETSPONSOR_API_URL, {limit:"4", videoid:this.flashVars.originalVideoID});
+                       info = new GetSponsorInfo(url, function(hug1:Boolean):void{     //MethodID:84, LocalCount= 3 , MaxScope= 1, MaxStack= 5, CodeLength= 213
+                               internal var succeeded:Boolean;                                 //slotID:1
+                               internal var layer:*;                                           //slotID:2
+                               internal var userSponsorSWFURL:*;                               //slotID:3
+                               internal var otherSponsorLink:*;                                //slotID:4
+                               internal var youAlsoLink:*;                                     //slotID:5
+
+                               layer = undefined;
+                               otherSponsorLink = undefined;
+                               youAlsoLink = undefined;
+                               succeeded = hug1;
+
+                               if(!succeeded || (info.sponsorInfoList.length == 0)) return;
+
+                               layer = videoLayerManager.createOptionalLayer(VideoLayerManager.OPTIONAL_LAYER_SPONSORVIDEOLAYER);
+                               userSponsorSWFURL = StringUtils.joinQuery(configure.USERSPONSOR_MOVIE_URL, {t:playerVersion.userSponsorMovie});
+                               otherSponsorLink = (StringUtils.joinQuery(configure.OTHERSPONSOR_URL, {vid:flashVars.originalVideoID}) + "&video_player");
+                               youAlsoLink = (StringUtils.joinQuery(configure.OTHERSPONSOR_URL, {vid:flashVars.originalVideoID}) + "&video_player_also");
+
+                               if(video.hasLoaded){
+                                       HTTPUtils.loadSWF(function(hug1:*):void{        //MethodID:83, LocalCount= 2 , MaxScope= 0, MaxStack= 8, CodeLength= 76
+                                               if(hug1){
+                                                       userSponsorVideo = IUserSponsorVideo(hug1);
+
+                                                       userSponsorVideo.initialize(new UserSponsorVideoClient(info, layer, otherSponsorLink, youAlsoLink, ICapturableVideoContainer(videoController.videoWrapper), vposWatcher));
+                                                       video.appendVideo(ChildVideoName.USER_SPONSOR, userSponsorVideo);
+                                               }
+                                       }, userSponsorSWFURL, {});
+                               }else{
+                                       video.appendVideo(ChildVideoName.USER_SPONSOR, userSponsorVideo);
+                               }
+                       });
+
+                       this.nicoViewControllerClient.getSponsorInfo = info;
+
+                       EventSequence.current.next();
+               }
+
+               private function loadConfirm():void
+               {       //MethodID:87, LocalCount= 2 , MaxScope= 2, MaxStack= 3, CodeLength= 24
+                       this.videoLoadGuardian.loadStart(EventSequence.bind(function(hug1:Boolean):void{        //MethodID:86, LocalCount= 3 , MaxScope= 0, MaxStack= 5, CodeLength= 144
+                               var hug2:* = undefined;
+
+                               if(hug1){
+                                       EventSequence.current.next();
+                               }else if(!isThumbWatchMode){
+                                       if(_isPlaylist && playlistController){
+                                               playlistController.onError(PlaylistErrorManager.VIDEO_LOAD_STOP);
+                                       }else{
+                                               hug2 = _playerPageMyselfURL;
+
+                                               SystemMessage.instance.alert(("<p><b>" + __MSG__("動画の読み込みができません。") + "</b></p>" + "<p>" + __MSG__("別のタブかウィンドウで、動画をいくつか読み込み中です。<br />") + __MSG__("読み込みが完了してから再度アクセスしてください。<br />") + "<br />") + __MSG__("<a href=\"[[url]]\">リロードする</a>", hug2) + "</p>");
+                                       }
+                               }
+                       }));
+               }
+
+               private function initializePlugin():void
+               {       //MethodID:91, LocalCount= 2 , MaxScope= 2, MaxStack= 9, CodeLength= 208
+                       internal var loader:ApplibarLoader;                             //slotID:1
+
+                       loader = null;
+
+                       if(this.flashVars.watchFlashVars.isNoAppli || this.flashVars.watchFlashVars.isEditMode || this.flashVars.watchFlashVars.isOwnerThreadEditMode || !CrossSharedObject.isPersistable){
+                               EventSequence.current.next();
+
+                               return;
+                       }
+
+                       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);
+
+                       loader.onLoaded.add(function(hug1:Boolean):void{        //MethodID:88, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 26
+                               if(!hug1) return;
+
+                               nicoViewControllerClient.applibarLoader = loader;
+
+                               loader.setPluginClient(pluginClient);
+                       });
+                       loader.onPageOpen.add(function():void{  //MethodID:89, LocalCount= 1 , MaxScope= 0, MaxStack= 1, CodeLength= 18
+                               if(videoController.isPlaying) videoController.stop();
+                       });
+                       this._playlistSequences.forEach(function(hug1:Function, hug2:int, hug3:Array):Boolean{  //MethodID:90, LocalCount= 4 , MaxScope= 0, MaxStack= 3, CodeLength= 22
+                               if(hug1 == initializePlugin){
+                                       _playlistSequences.splice(hug2, 1);
+
+                                       return false;
+                               }
+
+                               return true;
+                       });
+                       EventSequence.current.next();
+               }
+
+               private function _delayVideo():void
+               {       //MethodID:93, LocalCount= 2 , MaxScope= 2, MaxStack= 4, CodeLength= 101
+                       internal var delay:Number;                                      //slotID:1
+                       internal var timer:Timer;                                       //slotID:2
+                       internal var handler:Function;                                  //slotID:3
+
+                       timer = null;
+                       handler = null;
+                       delay = PlayDelay.getPlayDelayTime(this.initializeInfo.isPremium, this.isThumbWatchMode);
+                       timer = new Timer(delay, 1);
+                       handler = EventSequence.bind(function():void{   //MethodID:92, LocalCount= 1 , MaxScope= 0, MaxStack= 3, CodeLength= 40
+                               timer.stop();
+                               timer.reset();
+                               timer.removeEventListener(TimerEvent.TIMER_COMPLETE, handler);
+                               EventSequence.current.next();
+                       });
+                       timer.addEventListener(TimerEvent.TIMER_COMPLETE, handler);
+                       timer.start();
+               }
+
+               private function _loadVideo():void
+               {       //MethodID:97, LocalCount= 5 , MaxScope= 2, MaxStack= 10, CodeLength= 779
+                       internal var barrier:EventBarrier;                              //slotID:1
+                       internal var succeeded_all:Boolean;                             //slotID:2
+                       internal var bgmNeeded:Boolean;                                 //slotID:3
+                       internal var bgmVideos:Object;                                  //slotID:4
+                       internal var cmVideos:Object;                                   //slotID:5
+                       internal var bgmInfo:BGMVideoInfo;                              //slotID:6
+                       internal var bgmVideo:IVideo;                                   //slotID:7
+                       internal var container:Sprite;                                  //slotID:8
+
+                       succeeded_all = false;
+                       bgmNeeded = false;
+                       bgmVideos = null;
+                       cmVideos = null;
+                       bgmInfo = null;
+                       bgmVideo = null;
+                       container = null;
+
+                       if(this._logManager) this._logManager.observer.onVideoLoadStarted();
+
+                       barrier = new EventBarrier();
+                       succeeded_all = true;
+
+                       this.systemMessage.informln(__MSG__("動画の読み込みを開始"));
+
+                       if((this.getFLV.videoProtocol == "rtmp") || (this.getFLV.videoProtocol == "rtmpe") || (this.getFLV.videoProtocol == "rtmpt") || (this.getFLV.videoProtocol == "rtmpte")) this.systemMessage.informln(__MSG__("動画に接続"));
+
+                       this.video.isRetryable = false;
+
+                       this.video.load(barrier.bind(function(hug1:Boolean):void{       //MethodID:94, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 110
+                               succeeded_all = (succeeded_all && hug1);
+
+                               if(!hug1 && !isThumbWatchMode && _logManager) _logManager.observer.onVideoLoadErrorOccurred();
+
+                               if(_startVposConfig.halfwayStartEnabled) _startVposConfig.judgebyVideoLength(video);
+
+                               if(!_startVposConfig.halfwayStartEnabled){
+                                       nicoViewController.initVideoEventPipe(vposWatcher);
+                                       nicoViewController.onVideoInitialized(hug1);
+                               }
+
+                               _videoLoadSucceeded = hug1;
+                       }));
+
+                       bgmNeeded = Boolean(this.BGMVideoInfos.length != 0);
+
+                       bgmVideos = {};
+                       cmVideos = {};
+
+                       if(this.flashVars.watchFlashVars && !this.flashVars.watchFlashVars.isOwnerThreadEditMode || this.flashVars.thumbFlashVars && this.BGMVideoInfos && bgmNeeded){
+                               for each(bgmInfo in this.BGMVideoInfos){
+                                       if(bgmInfo.type == BGMVideoInfo.TYPE_BGM){
+                                               container = new Sprite();
+
+                                               container.graphics.beginFill(0);
+                                               container.graphics.drawRect(0, 0, NicoSConstants.ATBGM_VIDEO_WIDTH, NicoSConstants.ATBGM_VIDEO_HEIGHT);
+                                       }else{
+                                               container = new MovieClip();
+
+                                               container.graphics.beginFill(0);
+                                               container.graphics.drawRect(0, 0, NicoSConstants.ATCM_VIDEO_WIDTH, NicoSConstants.ATCM_VIDEO_HEIGHT);
+                                       }
+
+                                       container.graphics.endFill();
+
+                                       switch(bgmInfo.movieType){
+                                       case VideoType.FLV:
+                                       case VideoType.MP4:
+                                               bgmVideo = new FLVVideo(bgmInfo.URL, container, -1);
+                                               break;
+                                       case VideoType.SWF:
+                                               bgmVideo = new SWFVideo(bgmInfo.URL, container, NaN, false, "", null, "", bgmInfo.isAS3);
+                                               break;
+                                       default:
+                                               throw new Error("未定義のBGMタイプ:" + bgmInfo.movieType);
+                                               break;
+                                       }
+
+                                       if(bgmInfo.type == BGMVideoInfo.TYPE_BGM){
+                                               bgmVideos[bgmInfo.ID] = bgmVideo;
+                                       }else{
+                                               cmVideos[bgmInfo.ID] = bgmVideo;
+                                       }
+
+                                       bgmVideo.load(barrier.bind(function(hug1:Boolean):void{ //MethodID:95, LocalCount= 2 , MaxScope= 0, MaxStack= 4, CodeLength= 102
+                                               if(!succeeded_all) return;
+
+                                               succeeded_all = (succeeded_all && hug1);
+
+                                               if(!hug1){
+                                                       if(!isThumbWatchMode) SystemMessage.instance.alert("<p><b>" + __MSG__("引用動画の読み込みに失敗") + "</b></p>" + "<p>" + __MSG__("問題解消に向けて努力しております。") + "<br />" + __MSG__("しばらく時間をおいて再度アクセスしてみて下さい。") + "</p>");
+
+                                                       return;
+                                               }
+                                       }));
+                               }
+                       }
+
+                       barrier.finish(EventSequence.bind(function():void{      //MethodID:96, LocalCount= 5 , MaxScope= 0, MaxStack= 4, CodeLength= 145
+                               var hug1:* = undefined;
+                               var hug2:* = undefined;
+                               _wholeVideoLoadSucceeded = succeeded_all;
+
+                               if(!succeeded_all){
+                                       EventSequence.current.next();
+
+                                       return;
+                               }
+
+                               if(bgmNeeded){
+                                       hug1 = {};
+
+                                       for(hug2 in cmVideos){
+                                               hug1[hug2] = cmVideos[hug2].movieClip;
+                                       }
+
+                                       nicosClient.setBGMVideos(bgmVideos, hug1);
+                               }
+
+                               if(getFLV.deleted == 0) PlayDelay.countUp();
+
+                               if(marqueeClient) marqueeClient.load();
+                               EventSequence.current.next();
+                       }));
+               }
+
+               private function initializeLogger():void
+               {       //MethodID:98, LocalCount= 1 , MaxScope= 1, MaxStack= 13, CodeLength= 63
+                       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);
+                       EventSequence.current.next();
+               }
+
+               private function initializeCommentLists():void
+               {       //MethodID:102, LocalCount= 2 , MaxScope= 2, MaxStack= 3, CodeLength= 241
+                       internal var barrier:EventBarrier;                              //slotID:1
+                       internal var error:CommentStorageError;                         //slotID:2
+                       internal var init_handler:Function;                             //slotID:3
+
+                       barrier = null;
+                       error = null;
+                       init_handler = null;
+                       init_handler = function(hug1:CommentStorageError):void{ //MethodID:99, LocalCount= 3 , MaxScope= 0, MaxStack= 3, CodeLength= 38
+                               var hug2:CommentStorageError = hug1;
+                               error = hug2;
+
+                               if(!(error || hug2)) return;
+                               barrier.finish();
+                       };
+
+                       if(this.nicosClient) this.nicosClient.setup();
+                       this.systemMessage.informln(__MSG__("コメントサーバーへの接続を開始"));
+
+                       barrier = new EventBarrier();
+                       error = null;
+
+                       this.commentList.onCommentPostFinished.add(function(hug1:String, hug2:int, hug3:int):void{      //MethodID:100, LocalCount= 5 , MaxScope= 0, MaxStack= 2, CodeLength= 63
+                               var hug4:XMLList = null;
+
+                               if(hug2 == MessageServerClient.POST_INVALID_THREAD){
+                                       hug4 = playerInfo.getThreadError;
+
+                                       if(hug4 && (hug4.post_invalid_thread != "")) SystemMessage.instance.alert(hug4.post_invalid_thread);
+                               }
+                       });
+                       this.commentList.initialize(barrier.bind(init_handler));
+
+                       if(this.flashVars.isCommunityThread) this.privateCommentList.initialize(barrier.bind(init_handler));
+
+                       if(this.nicoSCommentList) this.nicoSCommentList.initialize(barrier.bind(init_handler));
+
+                       if(this.flashVars.hasOwnerThread) this.ownerCommentList.initialize(barrier.bind(init_handler));
+                       barrier.finish(function():void{ //MethodID:101, LocalCount= 4 , MaxScope= 0, MaxStack= 4, CodeLength= 201
+                               var hug1:String = null;
+
+                               if(error){
+                                       if(error.isInLowerLayer){
+                                               systemMessage.informln(__MSG__("コメントサーバーへの接続に失敗"));
+                                       }else{
+                                               systemMessage.informln(threadStatusCodeToMessage(error.status));
+                                       }
+
+                                       nicoViewController.onCommentListInitialized(false);
+
+                                       return;
+                               }
+
+                               systemMessage.informln(__MSG__("コメントサーバーへの接続に成功"));
+
+                               if(flashVars.thumbFlashVars && flashVars.thumbFlashVars.thumbComment || !isThumbWatchMode && !flashVars.isMymemory){
+                                       for(hug1 in commentListContainer){
+                                               commentRouter.add(hug1, commentListContainer[hug1]);
+                                       }
+                               }
+
+                               nicoViewController.onCommentListInitialized(true);
+                               setupCommentListEventPipes();
+                       });
+                       EventSequence.current.next();
+               }
+
+               private function setupCommentListEventPipes():void
+               {       //MethodID:103, LocalCount= 4 , MaxScope= 1, MaxStack= 2, CodeLength= 51
+                       var hug1:ICommentList = null;
+
+                       this.nicoViewController.initCommentEventPipe();
+
+                       for each(hug1 in this.commentListContainer){
+                               hug1.serveCommentList();
+                       }
+               }
+
+               private function beginToPlayVideo():void
+               {       //MethodID:108, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 216
+                       internal var alreadyBegan:Boolean;                              //slotID:1
+                       internal var begin:Function;                                    //slotID:2
+                       internal var vpos:Number;                                       //slotID:3
+
+                       alreadyBegan = false;
+                       vpos = NaN;
+                       begin = function():void{        //MethodID:104, LocalCount= 1 , MaxScope= 0, MaxStack= 3, CodeLength= 129
+                               if(_startVposConfig.halfwayStartEnabled) nicoViewController.initVideoEventPipe(vposWatcher);
+
+                               if(isThumbWatchMode){
+                                       if(!flashVars.thumbFlashVars.isP4Mode) videoController.play();
+                               }else{
+                                       videoController.startToPlay(_startVposConfig.isAutoPlay || (nicoViewControllerClient.initializeInfo.isPremium && playerConfig.autoPlay));
+
+                                       if(!_wholeVideoLoadSucceeded) videoController.stop();
+                               }
+
+                               if(_startVposConfig.halfwayStartEnabled) nicoViewController.onVideoInitialized(_videoLoadSucceeded);
+                       };
+
+                       this.externalClient.onPlayerReady();
+
+                       if(this.isThumbWatchMode){
+                               begin();
+
+                               return;
+                       }
+
+                       if(this.flashVars.watchFlashVars.jumpReturnVideoID){
+                               vpos = this.flashVars.watchFlashVars.jumpPlayLength;
+
+                               if(this._startVposConfig.halfwayStartEnabled) vpos += this.flashVars.watchFlashVars.jumpVPosPlayFrom;
+
+                               vpos *= 1000;
+
+                               this.vposWatcher.addWatchPoint(function():void{ //MethodID:106, LocalCount= 2 , MaxScope= 1, MaxStack= 4, CodeLength= 97
+                                       internal var params:Object;                                     //slotID:1
+
+                                       params = null;
+
+                                       videoController.stop();
+
+                                       params = {};
+
+                                       if(flashVars.watchFlashVars.jumpVPosReturnTo > 0) params.from = flashVars.watchFlashVars.jumpVPosReturnTo;
+                                       SystemMessage.instance.informJumpMessage(function():void{       //MethodID:105, LocalCount= 4 , MaxScope= 0, MaxStack= 10, CodeLength= 109
+                                               var hug1:Object = jumper.tossedObject;
+                                               var hug2:String = flashVars.watchFlashVars.jumpReturnVideoID;
+                                               var hug3:Object = {};
+
+                                               if(hug1 && hug1.jumpHistory) hug3 = hug1.jumpHistory;
+
+                                               hug3[flashVars.watchID] = true;
+
+                                               jumper.jump(hug2, params, false, {jumpFrom:flashVars.watchID, jumpHistory:hug3, jumpHash_:(hug1 ? hug1.jumpHash : undefined)});
+                                       }, (flashVars.watchFlashVars.jumpReturnMessage || __MSG__("元の動画にジャンプします")));
+                               }, vpos, 0x7FFFFFFF);
+                       }
+
+                       if(!this._startVposConfig.halfwayStartEnabled){
+                               begin();
+
+                               return;
+                       }
+
+                       alreadyBegan = false;
+
+                       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
+                               if(!alreadyBegan){
+                                       alreadyBegan = true;
+
+                                       begin();
+                               }
+
+                               return EventResult.BREAK;
+                       }));
+                       this.videoController.seek(this._startVposConfig.fromMsec, true);
+               }
+
+               private function initializeCommentLayerView():void
+               {       //MethodID:109, LocalCount= 2 , MaxScope= 1, MaxStack= 7, CodeLength= 343
+                       this.commentLayer = new CommentLayer(this.videoLayerManager.commentLayer, this.playerConfig, this.initializeInfo.isPremium);
+
+                       this.commentLayer.addLayer(CommentLayerID.MAIN);
+                       this.commentLayer.addLayer(CommentLayerID.OWNER);
+
+                       var hug1:Object = {};
+
+                       if(this.flashVars.isCommunityThread){
+                               hug1[CommentLayerID.MAIN] = [CommentConstants.CL_PRIVATE, CommentConstants.CL_LOCAL];
+                               hug1[CommentLayerID.OWNER] = [CommentConstants.CL_OWNER];
+                               hug1[CommentLayerID.OPTION] = [CommentConstants.CL_MAIN];
+
+                               this.commentLayer.addLayer(CommentLayerID.OPTION, 0);
+                               this.commentLayer.setOptionalLayer(CommentLayerID.OPTION);
+                       }else{
+                               hug1[CommentLayerID.MAIN] = [CommentConstants.CL_MAIN, CommentConstants.CL_LOCAL, CommentConstants.CL_NICOS];
+                               hug1[CommentLayerID.OWNER] = [CommentConstants.CL_OWNER];
+                       }
+
+                       this.commentLayerView = new CommentLayerView(this, this.video, VideoLayerConstants.COMMENT_LAYER_SD_WIDTH, VideoLayerConstants.COMMENT_LAYER_SD_HEIGHT, this.getFLV.videoLength);
+                       this.commentViewTransformer = new CommentViewTransformer(hug1, this.commentLayer, this.commentLayerView, (this.nicosClient ? this.nicosClient.player : null));
+
+                       if(this.isThumbWatchMode && this.flashVars.thumbFlashVars && this.flashVars.thumbFlashVars.isP4Mode) this.commentViewTransformer.setP4Mode();
+               }
+
+               private function threadStatusCodeToMessage(hug1:int):String
+               {       //MethodID:110, LocalCount= 4 , MaxScope= 1, MaxStack= 3, CodeLength= 415
+                       var hug2:XMLList = null;
+                       var hug3:int = hug1;
+
+                       switch(hug3){
+                       case MessageServerClient.THREAD_FOUND:
+                               return __MSG__("...");
+                       case MessageServerClient.THREAD_INVALID:
+                               return __MSG__("メッセージサーバーへの接続に失敗");
+                       case MessageServerClient.THREAD_NOT_FOUND:
+                               hug2 = this.playerInfo.getThreadError;
+
+                               if(hug2 && (hug2.thread_not_found != "")) SystemMessage.instance.alert(hug2.thread_not_found);
+
+                               return __MSG__("スレッドが見つかりません");
+                       case MessageServerClient.THREAD_VERSION:
+                               return __MSG__("プレイヤーのバージョンが不正");
+                       case MessageServerClient.THREAD_INVALID_ADMINKEY:
+                               return __MSG__("AdminKeyが不正");
+                       case MessageServerClient.THREAD_TOO_OLD_ADMINKEY:
+                               return __MSG__("AdminKeyが失効");
+                       case MessageServerClient.THREAD_INVALID_WAYBACKKEY:
+                               return __MSG__("WaybackKeyが不正");
+                       case MessageServerClient.THREAD_TOO_OLD_WAYBACKKEY:
+                               return __MSG__("WaybackKeyが失効");
+                       case MessageServerClient.THREAD_INVALID_THREADKEY:
+                               return __MSG__("ThreadKeyが不正");
+                       case MessageServerClient.THREAD_TOO_OLD_THREADKEY:
+                               return __MSG__("ThreadKeyが失効");
+                       default:
+                               return __MSG__("不明なエラー:code=[code]", hug1);
+                               break;
+                       }
+               }
+
+               private function _loadThumbViewSWF():void
+               {       //MethodID:112, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 42
+                       HTTPUtils.loadSWF(EventSequence.bind(function(hug1:*):void{     //MethodID:111, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 73
+                               if(!hug1) throw new Error("NicoPlayer._loadThumbViewSWF: load failure.");
+
+                               if(!hug1 is MovieClip) throw new Error("NicoPlayer._loadThumbViewSWF: content is not MovieClip.");
+                               addChild(hug1 as DisplayObject);
+
+                               (hug1 as DisplayObject).visible = false;
+                               nicoViewControllerClient.viewRoot = hug1;
+
+                               EventSequence.current.next();
+                       }), this.configure.THUMBPLAYER_VIEW_URL, {t:this.playerVersion.thumbplayerView});
+               }
+
+               private function _loadThumbControllerSWF():void
+               {       //MethodID:114, LocalCount= 2 , MaxScope= 2, MaxStack= 5, CodeLength= 42
+                       HTTPUtils.loadSWF(EventSequence.bind(function(hug1:*):void{     //MethodID:113, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 67
+                               if(!hug1) throw new Error("NicoPlayer._loadThumbControllerSWF: load failure.");
+
+                               nicoViewController = INicoViewController(hug1);
+
+                               if(!nicoViewController) throw new Error("NicoPlayer._loadThumbControllerSWF: content is not INicoViewController.");
+                               nicoViewController.startInit(nicoViewControllerClient);
+                               EventSequence.current.next();
+                       }), this.configure.THUMBPLAYER_CONTROLLER_URL, {t:this.playerVersion.thumbplayerController});
+               }
+
+               private function _loadThumbVideoInfo():void
+               {       //MethodID:116, LocalCount= 2 , MaxScope= 2, MaxStack= 6, CodeLength= 148
+                       internal var apiParams:Object;                                  //slotID:1
+
+                       apiParams = {};
+                       apiParams["as3"] = "1";
+                       apiParams["v"] = this.flashVars.watchID;
+                       apiParams["k"] = this.flashVars.thumbFlashVars.thumbPlayKey;
+
+                       if(this.flashVars.forceLowMode) apiParams["lo"] = "1";
+
+                       if(this.flashVars.economyMode) apiParams["eco"] = this.flashVars.economyMode;
+
+                       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
+                               nicoViewControllerClient.getFLVData = getFLV;
+                               initializeInfo = InitializeInfo.getInstance();
+                               nicoViewControllerClient.initializeInfo = initializeInfo;
+
+                               EventSequence.current.next();
+                       }));
+               }
+
+               private function _initializeModelAndViewThumbWatch():void
+               {       //MethodID:119, LocalCount= 2 , MaxScope= 2, MaxStack= 7, CodeLength= 118
+                       if(this.flashVars.thumbFlashVars.thumbComment){
+                               this.commentRouter = new CommentRouter(this.flashVars, this.playerConfig, null, this.nicosClient, this.initializeInfo.isPremium);
+
+                               this.commentRouter.onCommentPostErorr.add(function(hug1:String):void{   //MethodID:117, LocalCount= 3 , MaxScope= 0, MaxStack= 3, CodeLength= 346
+                                       var hug2:String = hug1;
+
+                                       switch(hug2){
+                                       case CommentRouter.ERROR_POST_184:
+                                               systemMessage.informComment(__MSG__("チャンネルとコミュニティ動画では184コマンドを使用できません。"));
+                                               break;
+                                       case CommentRouter.ERROR_POST_BUTTON_ARGUMENTS:
+                                       case CommentRouter.ERROR_POST_BUTTON_ONCE:
+                                       case CommentRouter.ERROR_POST_BUTTON_PREMIUM_ONLY:
+                                       case CommentRouter.ERROR_POST_BUTTON_DISABLED:
+                                               systemMessage.informComment(__MSG__("@ボタンは、使用できません。"));
+                                               break;
+                                       case CommentRouter.ERROR_POST_AT_COMMENT_UNDEFINED:
+                                               systemMessage.informComment(__MSG__("その@コメントは存在しないか、投稿者以外は使えないかのどちらかです。"));
+                                               break;
+                                       case CommentRouter.ERROR_POST_INITIALIZE:
+                                               systemMessage.informComment(__MSG__("コメント投稿の準備が未完了です。"));
+                                               break;
+                                       case CommentRouter.ERROR_POST_SAME_COMMENT:
+                                               systemMessage.informComment(__MSG__("同じコメントを連続で投稿することができません。"));
+                                               break;
+                                       case CommentRouter.ERROR_POST_CHANNEL_FILTER:
+                                               systemMessage.informComment(__MSG__("入力されたコメントはチャンネルにより規制されています。"));
+                                               break;
+                                       default:
+                                               break;
+                                       }
+                               });
+                               this.commentRouter.onCommentHavingMacro.add(function(hug1:IMacroParserResult):void{     //MethodID:118, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 22
+                                       if(hug1.macroName == "ピザ") systemMessage.informComment("@ピザは、使用できません。");
+                               });
+
+                               if(this.nicosClient) this.nicosClient.commentRouter = this.commentRouter;
+
+                               this.nicoViewControllerClient.commentRouter = this.commentRouter;
+                       }
+
+                       EventSequence.current.next();
+               }
+       }
+}
+
+//■script002■
+
+package{
+
+       import jp.nicovideo.nicoplayer.NicoPlayer
+
+       //■class(instance)_index:2
+       public class nicoplayer extends NicoPlayer
+       {
+               //static constructor
+               public static function nicoplayer$cinit()
+               {       //MethodID:121, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               //constructor
+               public function nicoplayer()
+               {       //MethodID:122, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+                       super();
+               }
+       }
+}
+
+//■script003■
+
+package jp.nicovideo.ext.config{
+
+       //■class(instance)_index:3
+       public interface IThumbConfig
+       {
+               //static constructor
+               public static function IThumbConfig$cinit()
+               {       //MethodID:124, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function get nicovideoURL():String;                                         //MethodID:125, dispID:0
+
+               function get playerURL():String;                                            //MethodID:126, dispID:0
+
+               //constructor
+               public function IThumbConfig();                                             //MethodID:127, dispID:0
+       }
+}
+
+//■script004■
+
+package jp.nicovideo.nicoplayer.models.flashvars{
+
+       //■class(instance)_index:4
+       public class NicoFlashVars extends Object
+       {
+               //static constructor
+               public static function NicoFlashVars$cinit()
+               {       //MethodID:129, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 27
+                       LEAF_NO_LOCK = 0;
+                       LEAF_HIDDEN_MENU = 1;
+                       LEAF_DISABLE = 2;
+               }
+
+               //static variables/etc.
+               public static const LEAF_NO_LOCK:uint = 0;                      //slotID:1
+               public static const LEAF_HIDDEN_MENU:uint = 1;                  //slotID:2
+               public static const LEAF_DISABLE:uint = 2;                      //slotID:3
+
+               //variables/etc.
+               private var _watchFlashVars:WatchFlashVars;                     //slotID:0
+               private var _thumbFlashVars:ThumbFlashVars;                     //slotID:0
+               private var _watchID:String;                                    //slotID:0
+               private var _originalVideoID:String;                            //slotID:0
+               private var _mylistCount:uint;                                  //slotID:0
+               private var _videoType:String;                                  //slotID:0
+               private var _videoTitle:String = "";                            //slotID:0
+               private var _videoDescription:String = "";                      //slotID:0
+               private var _isMymemory:Boolean;                                //slotID:0
+               private var _waitsSWFVideoInit:Boolean;                         //slotID:0
+               private var _forceLowMode:Boolean;                              //slotID:0
+               private var _economyMode:String;                                //slotID:0
+               private var _playerVersionUpdated:String;                       //slotID:0
+               private var _playerInfoUpdated:String;                          //slotID:0
+               private var _isCommunityVideo:Boolean;                          //slotID:0
+               private var _isCommunityThread:Boolean;                         //slotID:0
+               private var _hasOwnerThread:Boolean;                            //slotID:0
+               private var _isDeepenedCommentForce:Boolean;                    //slotID:0
+               private var _isChannel:Boolean;                                 //slotID:0
+               private var _isNoComment:Boolean;                               //slotID:0
+               private var _importedBGMVideos:Array;                           //slotID:0
+               private var _category:String;                                   //slotID:0
+               private var _categoryGroup:String;                              //slotID:0
+               private var _communityID:String;                                //slotID:0
+               private var _communityGlobalID:String;                          //slotID:0
+               private var _isNoCommand:Boolean;                               //slotID:0
+               private var _isNoAtComment:Boolean;                             //slotID:0
+               private var _isWide:Boolean;                                    //slotID:0
+               private var _countryCode:String;                                //slotID:0
+               private var _videoDetail:Object;                                //slotID:0
+               private var _leafSwitch:uint = 0;                               //slotID:0
+               private var _noRelation:Boolean;                                //slotID:0
+               private var _noRelatedVideo:Boolean;                            //slotID:0
+
+               public function get watchID():String
+               {       //MethodID:130, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._watchID;
+               }
+
+               internal function set watchID(hug1:String):void
+               {       //MethodID:131, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._watchID = hug1;
+               }
+
+               public function get originalVideoID():String
+               {       //MethodID:132, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._originalVideoID;
+               }
+
+               internal function set originalVideoID(hug1:String):void
+               {       //MethodID:133, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._originalVideoID = hug1;
+               }
+
+               public function get mylistCount():uint
+               {       //MethodID:134, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._mylistCount;
+               }
+
+               internal function set mylistCount(hug1:uint):void
+               {       //MethodID:135, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._mylistCount = hug1;
+               }
+
+               public function get videoType():String
+               {       //MethodID:136, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._videoType;
+               }
+
+               internal function set videoType(hug1:String):void
+               {       //MethodID:137, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._videoType = hug1;
+               }
+
+               public function get videoTitle():String
+               {       //MethodID:138, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._videoTitle;
+               }
+
+               internal function set videoTitle(hug1:String):void
+               {       //MethodID:139, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._videoTitle = hug1;
+               }
+
+               public function get videoDescription():String
+               {       //MethodID:140, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._videoDescription;
+               }
+
+               internal function set videoDescription(hug1:String):void
+               {       //MethodID:141, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._videoDescription = hug1;
+               }
+
+               public function get isMymemory():Boolean
+               {       //MethodID:142, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isMymemory;
+               }
+
+               internal function set isMymemory(hug1:Boolean):void
+               {       //MethodID:143, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._isMymemory = hug1;
+               }
+
+               public function get waitsSWFVideoInit():Boolean
+               {       //MethodID:144, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._waitsSWFVideoInit;
+               }
+
+               internal function set waitsSWFVideoInit(hug1:Boolean):void
+               {       //MethodID:145, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._waitsSWFVideoInit = hug1;
+               }
+
+               public function get forceLowMode():Boolean
+               {       //MethodID:146, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._forceLowMode;
+               }
+
+               internal function set forceLowMode(hug1:Boolean):void
+               {       //MethodID:147, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._forceLowMode = hug1;
+               }
+
+               public function get economyMode():String
+               {       //MethodID:148, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._economyMode;
+               }
+
+               internal function set economyMode(hug1:String):void
+               {       //MethodID:149, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._economyMode = hug1;
+               }
+
+               public function get playerVersionUpdated():String
+               {       //MethodID:150, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._playerVersionUpdated;
+               }
+
+               internal function set playerVersionUpdated(hug1:String):void
+               {       //MethodID:151, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._playerVersionUpdated = hug1;
+               }
+
+               public function get playerInfoUpdated():String
+               {       //MethodID:152, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._playerInfoUpdated;
+               }
+
+               internal function set playerInfoUpdated(hug1:String):void
+               {       //MethodID:153, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._playerInfoUpdated = hug1;
+               }
+
+               public function get isCommunityVideo():Boolean
+               {       //MethodID:154, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isCommunityVideo;
+               }
+
+               internal function set isCommunityVideo(hug1:Boolean):void
+               {       //MethodID:155, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._isCommunityVideo = hug1;
+               }
+
+               public function get isCommunityThread():Boolean
+               {       //MethodID:156, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isCommunityThread;
+               }
+
+               internal function set isCommunityThread(hug1:Boolean):void
+               {       //MethodID:157, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._isCommunityThread = hug1;
+               }
+
+               public function get hasOwnerThread():Boolean
+               {       //MethodID:158, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._hasOwnerThread;
+               }
+
+               internal function set hasOwnerThread(hug1:Boolean):void
+               {       //MethodID:159, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._hasOwnerThread = hug1;
+               }
+
+               public function get isDeepenedCommentForce():Boolean
+               {       //MethodID:160, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isDeepenedCommentForce;
+               }
+
+               internal function set isDeepenedCommentForce(hug1:Boolean):void
+               {       //MethodID:161, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._isDeepenedCommentForce = hug1;
+               }
+
+               public function get importedBGMVideos():Array
+               {       //MethodID:162, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._importedBGMVideos;
+               }
+
+               internal function set importedBGMVideos(hug1:Array):void
+               {       //MethodID:163, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._importedBGMVideos = hug1;
+               }
+
+               public function get isChannel():Boolean
+               {       //MethodID:164, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isChannel;
+               }
+
+               internal function set isChannel(hug1:Boolean):void
+               {       //MethodID:165, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._isChannel = hug1;
+               }
+
+               public function get isNoComment():Boolean
+               {       //MethodID:166, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isNoComment;
+               }
+
+               internal function set isNoComment(hug1:Boolean):void
+               {       //MethodID:167, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._isNoComment = hug1;
+               }
+
+               public function get category():String
+               {       //MethodID:168, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._category;
+               }
+
+               internal function set category(hug1:String):void
+               {       //MethodID:169, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._category = hug1;
+               }
+
+               public function get categoryGroup():String
+               {       //MethodID:170, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._categoryGroup;
+               }
+
+               internal function set categoryGroup(hug1:String):void
+               {       //MethodID:171, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._categoryGroup = hug1;
+               }
+
+               public function get watchFlashVars():WatchFlashVars
+               {       //MethodID:172, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._watchFlashVars;
+               }
+
+               internal function set watchFlashVars(hug1:WatchFlashVars):void
+               {       //MethodID:173, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._watchFlashVars = hug1;
+               }
+
+               public function get thumbFlashVars():ThumbFlashVars
+               {       //MethodID:174, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._thumbFlashVars;
+               }
+
+               internal function set thumbFlashVars(hug1:ThumbFlashVars):void
+               {       //MethodID:175, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._thumbFlashVars = hug1;
+               }
+
+               public function get communityID():String
+               {       //MethodID:176, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._communityID;
+               }
+
+               internal function set communityID(hug1:String):void
+               {       //MethodID:177, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._communityID = hug1;
+               }
+
+               public function get communityGlobalID():String
+               {       //MethodID:178, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._communityGlobalID;
+               }
+
+               internal function set communityGlobalID(hug1:String):void
+               {       //MethodID:179, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._communityGlobalID = hug1;
+               }
+
+               public function get isNoCommand():Boolean
+               {       //MethodID:180, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isNoCommand;
+               }
+
+               internal function set isNoCommand(hug1:Boolean):void
+               {       //MethodID:181, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._isNoCommand = hug1;
+               }
+
+               public function get isNoAtComment():Boolean
+               {       //MethodID:182, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isNoAtComment;
+               }
+
+               internal function set isNoAtComment(hug1:Boolean):void
+               {       //MethodID:183, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._isNoAtComment = hug1;
+               }
+
+               public function get isWide():Boolean
+               {       //MethodID:184, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isWide;
+               }
+
+               internal function set isWide(hug1:Boolean):void
+               {       //MethodID:185, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._isWide = hug1;
+               }
+
+               public function get countryCode():String
+               {       //MethodID:186, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._countryCode;
+               }
+
+               internal function set countryCode(hug1:String):void
+               {       //MethodID:187, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._countryCode = hug1;
+               }
+
+               public function get videoDetail():Object
+               {       //MethodID:188, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._videoDetail;
+               }
+
+               internal function set videoDetail(hug1:Object):void
+               {       //MethodID:189, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._videoDetail = hug1;
+               }
+
+               public function get leafSwitch():uint
+               {       //MethodID:190, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._leafSwitch;
+               }
+
+               internal function set leafSwitch(hug1:uint):void
+               {       //MethodID:191, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._leafSwitch = hug1;
+               }
+
+               public function get forceRelationInvisible():Boolean
+               {       //MethodID:192, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._noRelation;
+               }
+
+               internal function set forceRelationInvisible(hug1:Boolean):void
+               {       //MethodID:193, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._noRelation = hug1;
+               }
+
+               public function get noRelatedVideo():Boolean
+               {       //MethodID:194, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._noRelatedVideo;
+               }
+
+               internal function set noRelatedVideo(hug1:Boolean):void
+               {       //MethodID:195, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._noRelatedVideo = hug1;
+               }
+
+               //constructor
+               public function NicoFlashVars()
+               {       //MethodID:196, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+                       super();
+               }
+       }
+}
+
+//■script005■
+
+package jp.nicovideo.nicoplayer.models.video{
+
+       //■class(instance)_index:5
+       public class VideoType extends Object
+       {
+               //static constructor
+               public static function VideoType$cinit()
+               {       //MethodID:198, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 30
+                       FLV = "flv";
+                       MP4 = "mp4";
+                       SWF = "swf";
+               }
+
+               //static variables/etc.
+               public static const FLV:String = "flv";                         //slotID:1
+               public static const MP4:String = "mp4";                         //slotID:2
+               public static const SWF:String = "swf";                         //slotID:3
+
+               //constructor
+               public function VideoType()
+               {       //MethodID:199, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+                       super();
+               }
+       }
+}
+
+//■script006■
+
+package jp.nicovideo.nicoplayer.views.comment{
+
+       //■class(instance)_index:6
+       public class CommentLayerID extends Object
+       {
+               //static constructor
+               public static function CommentLayerID$cinit()
+               {       //MethodID:201, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 30
+                       MAIN = "main";
+                       OWNER = "owner";
+                       OPTION = "option";
+               }
+
+               //static variables/etc.
+               public static const MAIN:String = "main";                       //slotID:1
+               public static const OWNER:String = "owner";                     //slotID:2
+               public static const OPTION:String = "option";                   //slotID:3
+
+               //constructor
+               public function CommentLayerID()
+               {       //MethodID:202, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+                       super();
+               }
+       }
+}
+
+//■script007■
+
+package jp.nicovideo.nicoplayer.models.video.swf{
+
+       //■class(instance)_index:7
+       public interface ISWFVideoClient
+       {
+               //static constructor
+               public static function ISWFVideoClient$cinit()
+               {       //MethodID:204, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function getSourceData(hug1:Function):void;                                 //MethodID:205, dispID:0
+
+               //constructor
+               public function ISWFVideoClient();                                          //MethodID:206, dispID:0
+       }
+}
+
+//■script008■
+
+package jp.nicovideo.nicoplayer.models.video{
+
+       //■class(instance)_index:8
+       public interface ITimeline
+       {
+               //static constructor
+               public static function ITimeline$cinit()
+               {       //MethodID:208, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function get length():Number;                                               //MethodID:209, dispID:0
+
+               function get vpos():Number;                                                 //MethodID:210, dispID:0
+
+               function get isInitialized():Boolean;                                       //MethodID:211, dispID:0
+
+               //constructor
+               public function ITimeline();                                                //MethodID:212, dispID:0
+       }
+}
+
+//■script009■
+
+package jp.nicovideo.nicoplayer.models.video{
+
+       import flash.display.DisplayObject
+       import jp.nicovideo.util.Functions
+
+       //■class(instance)_index:9
+       public interface IVideo implements ITimeline
+       {
+               //static constructor
+               public static function IVideo$cinit()
+               {       //MethodID:214, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function load(hug1:Function):void;                                          //MethodID:215, dispID:0
+
+               function play():void;                                                       //MethodID:216, dispID:0
+
+               function stop():void;                                                       //MethodID:217, dispID:0
+
+               function seek(hug1:Number):void;                                            //MethodID:218, dispID:0
+
+               function resize(hug1:Number, hug2:Number):void;                             //MethodID:219, dispID:0
+
+               function get loadedLength():Number;                                         //MethodID:220, dispID:0
+
+               function get isPlaying():Boolean;                                           //MethodID:221, dispID:0
+
+               function get isPausing():Boolean;                                           //MethodID:222, dispID:0
+
+               function get isSeeking():Boolean;                                           //MethodID:223, dispID:0
+
+               function get isEnd():Boolean;                                               //MethodID:224, dispID:0
+
+               function get isBuffering():Boolean;                                         //MethodID:225, dispID:0
+
+               function set isLoop(hug1:Boolean):void;                                     //MethodID:226, dispID:0
+
+               function set volume(hug1:Number):void;                                      //MethodID:227, dispID:0
+
+               function get isControllable():Boolean;                                      //MethodID:228, dispID:0
+
+               function get videoPlayerStatus():String;                                    //MethodID:229, dispID:0
+
+               function get layer():DisplayObject;                                         //MethodID:230, dispID:0
+
+               function get onVideoBufferingStarted():Functions;                           //MethodID:231, dispID:0
+
+               function get onVideoLoadComplete():Functions;                               //MethodID:232, dispID:0
+
+               function get contentWidth():int;                                            //MethodID:233, dispID:0
+
+               function get contentHeight():int;                                           //MethodID:234, dispID:0
+
+               //constructor
+               public function IVideo();                                                   //MethodID:235, dispID:0
+       }
+}
+
+//■script010■
+
+package jp.nicovideo.nicoplayer.models.video{
+
+       import flash.display.DisplayObject
+       import jp.nicovideo.util.Functions
+
+       //■class(instance)_index:10
+       public interface IChildVideo implements IVideo
+       {
+               //static constructor
+               public static function IChildVideo$cinit()
+               {       //MethodID:237, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function close():void;                                                      //MethodID:238, dispID:0
+
+               function get onVideoEnded():Functions;                                      //MethodID:239, dispID:0
+
+               function get onVideoSeeked():Functions;                                     //MethodID:240, dispID:0
+
+               function get onVideoSeeking():Functions;                                    //MethodID:241, dispID:0
+
+               function get onVideoPlayed():Functions;                                     //MethodID:242, dispID:0
+
+               function get onVideoStopped():Functions;                                    //MethodID:243, dispID:0
+
+               function get onVideoError():Functions;                                      //MethodID:244, dispID:0
+
+               function get source():DisplayObject;                                        //MethodID:245, dispID:0
+
+               //constructor
+               public function IChildVideo();                                              //MethodID:246, dispID:0
+       }
+}
+
+//■script011■
+
+package jp.nicovideo.nicoplayer.models.video.swf{
+
+       //■class(instance)_index:11
+       public interface IGameRankingClient implements ISWFVideoClient
+       {
+               //static constructor
+               public static function IGameRankingClient$cinit()
+               {       //MethodID:248, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function getThumbnailURL(hug1:String, hug2:Function):void;                  //MethodID:249, dispID:0
+
+               //constructor
+               public function IGameRankingClient();                                       //MethodID:250, dispID:0
+       }
+}
+
+//■script012■
+
+package jp.nicovideo.nicoplayer.models.video{
+
+       import flash.display.DisplayObject
+       import flash.display.Loader
+       import flash.display.LoaderInfo
+       import flash.display.MovieClip
+       import flash.display.Sprite
+       import flash.events.Event
+       import flash.events.EventDispatcher
+       import flash.events.IOErrorEvent
+       import flash.events.ProgressEvent
+       import flash.events.SecurityErrorEvent
+       import flash.media.SoundTransform
+       import flash.net.URLRequest
+       import flash.system.ApplicationDomain
+       import flash.system.LoaderContext
+       import flash.system.Security
+       import flash.system.SecurityDomain
+       import jp.nicovideo.nicoplayer.config.NicoConfig
+       import jp.nicovideo.nicoplayer.models.video.swf.ISWFVideoClient
+       import jp.nicovideo.nicoplayer.models.video.swf.ISWFVideoContent
+       import jp.nicovideo.nicoplayer.models.video.swf.SWFVideoType
+       import jp.nicovideo.util.Functions
+       import jp.nicovideo.util.ObjectUtils
+       import jp.nicovideo.util.StringUtils
+       import org.libspark.utils.ForcibleLoader
+
+       use namespace (http://www.nicovideo.jp/as3_ns/nicoplayer/util.test);
+
+       //■class(instance)_index:12
+       public class SWFVideo extends Object implements IChildVideo
+       {
+               //static constructor
+               public static function SWFVideo$cinit()
+               {       //MethodID:252, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               //constructor
+               public function SWFVideo(hug1:String, hug2:Sprite, hug3:Number, hug4:Boolean=false, hug5:String, hug6:NicoConfig=null, hug7:String, hug8:Boolean=false)
+               {       //MethodID:253, LocalCount= 9 , MaxScope= 1, MaxStack= 2, CodeLength= 156
+                       this._onVideoEnded = new Functions();
+                       this._onVideoSeeked = new Functions();
+                       this._onVideoSeeking = new Functions();
+                       this._onVideoPlayed = new Functions();
+                       this._onVideoStopped = new Functions();
+                       this._onVideoBufferingStarted = new Functions();
+                       this._onVideoLoadComplete = new Functions();
+                       this._onVideoError = new Functions();
+
+                       super();
+
+                       this._this = this;
+                       this._url = hug1;
+                       this._length = hug3;
+                       this._videoLayer = hug2;
+                       this._layerWidth = this._videoLayer.width;
+                       this._layerHeight = this._videoLayer.height;
+                       this._isAS3 = hug8;
+
+                       if(!hug4) return;
+
+                       this._waitingLoad = true;
+                       this._videoTitle = hug5;
+                       this._configure = hug6;
+                       this._videoID = hug7;
+               }
+
+               //variables/etc.
+               private var _this:IVideo;                                       //slotID:0
+               private var _videoLayer:Sprite;                                 //slotID:0
+               private var _video:MovieClip;                                   //slotID:0
+               private var _url:String;                                        //slotID:0
+               private var _length:Number;                                     //slotID:0
+               private var _bytesLoaded:uint = 0;                              //slotID:0
+               private var _bytesTotal:uint;                                   //slotID:0
+               private var _isInitialized:Boolean = false;                     //slotID:0
+               private var _isLoaded:Boolean = false;                          //slotID:0
+               private var _isPlaying:Boolean = false;                         //slotID:0
+               private var _waitingLoad:Boolean = false;                       //slotID:0
+               private var _videoTitle:String;                                 //slotID:0
+               private var _configure:NicoConfig;                              //slotID:0
+               private var _videoID:String;                                    //slotID:0
+               private var _isLoop:Boolean;                                    //slotID:0
+               private const _onVideoEnded:Functions;                          //slotID:0
+               private const _onVideoSeeked:Functions;                         //slotID:0
+               private const _onVideoSeeking:Functions;                        //slotID:0
+               private const _onVideoPlayed:Functions;                         //slotID:0
+               private const _onVideoStopped:Functions;                        //slotID:0
+               private const _onVideoBufferingStarted:Functions;               //slotID:0
+               private const _onVideoLoadComplete:Functions;                   //slotID:0
+               private const _onVideoError:Functions;                          //slotID:0
+               private var _isAS3:Boolean = false;                             //slotID:0
+               private var _isLoading:Boolean = false;                         //slotID:0
+               private var _isPausing:Boolean = true;                          //slotID:0
+               private var _isEnd:Boolean = false;                             //slotID:0
+               private var _isSeeking:Boolean = false;                         //slotID:0
+               private var _layerWidth:int;                                    //slotID:0
+               private var _layerHeight:int;                                   //slotID:0
+               private var _contentWidth:int;                                  //slotID:0
+               private var _contentHeight:int;                                 //slotID:0
+
+               public function get movieClip():MovieClip
+               {       //MethodID:254, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._video;
+               }
+
+               public function load(hug1:Function):void
+               {       //MethodID:261, LocalCount= 4 , MaxScope= 5, MaxStack= 6, CodeLength= 414
+                       internal var f:Function;                                        //slotID:1
+                       internal var loader:Loader;                                     //slotID:2
+                       internal var context:LoaderContext;                             //slotID:3
+                       internal var request:URLRequest;                                //slotID:4
+                       internal var info:LoaderInfo;                                   //slotID:5
+                       internal var applied:Boolean;                                   //slotID:6
+                       internal var ioErrorHandler:Function;                           //slotID:7
+                       internal var securityErrorHandler:Function;                     //slotID:8
+                       internal var eventDispatcher:EventDispatcher;                   //slotID:9
+
+                       info = null;
+                       applied = false;
+                       ioErrorHandler = null;
+                       securityErrorHandler = null;
+                       eventDispatcher = null;
+                       f = hug1;
+                       ioErrorHandler = function(hug1:IOErrorEvent):void{      //MethodID:255, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 17
+                               _isLoading = false;
+
+                               f(false);
+                       };
+
+                       securityErrorHandler = function(hug1:SecurityErrorEvent):void{  //MethodID:256, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 17
+                               _isLoading = false;
+
+                               f(false);
+                       };
+
+                       loader = new Loader();
+                       context = new LoaderContext(false, ApplicationDomain.currentDomain, ((Security.sandboxType == Security.REMOTE) ? SecurityDomain.currentDomain : null));
+                       request = new URLRequest(this._url);
+                       info = loader.contentLoaderInfo;
+
+                       info.addEventListener(Event.INIT, function(hug1:Event):void{    //MethodID:257, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 160
+                               _bytesLoaded = info.bytesLoaded;
+                               _video = (hug1.target.content as MovieClip);
+                               _contentWidth = hug1.target.width;
+                               _contentHeight = hug1.target.height;
+
+                               if(!_video){
+                                       f(false);
+
+                                       return;
+                               }
+
+                               _video.stop();
+
+                               _video.soundTransform = new SoundTransform(0.0);
+                               _length = ((_video.totalFrames / 25) * 1000);
+
+                               resize(_layerWidth, _layerHeight);
+
+                               if(_waitingLoad){
+                                       initializeSWFVideo(f);
+
+                                       return;
+                               }
+
+                               _isInitialized = true;
+
+                               f(true);
+                       });
+                       info.addEventListener(Event.COMPLETE, function(hug1:Event):void{        //MethodID:258, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 15
+                               _isLoaded = true;
+                               _isLoading = false;
+                       });
+
+                       applied = false;
+                       info.addEventListener(ProgressEvent.PROGRESS, function(hug1:ProgressEvent):void{        //MethodID:259, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 55
+                               _bytesTotal = hug1.bytesTotal;
+                               _bytesLoaded = hug1.bytesLoaded;
+
+                               if(!applied && (_bytesTotal > 0)){
+                                       applied = true;
+
+                                       _onVideoBufferingStarted.apply();
+                               }
+                       });
+                       info.addEventListener(Event.COMPLETE, function(hug1:Event):void{        //MethodID:260, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 11
+                               _onVideoLoadComplete.apply(_bytesTotal);
+                       });
+                       info.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
+                       info.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
+                       this._videoLayer.addChild(loader);
+
+                       this._isLoading = true;
+
+                       try{
+                               if(this._isAS3){
+                                       loader.load(request, context);
+                               }else{
+                                       eventDispatcher = new EventDispatcher();
+
+                                       eventDispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
+                                       eventDispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
+                                       new ForcibleLoader(loader, eventDispatcher).load(request);
+                               }
+                       }
+                       catch(error:Error){
+                               ObjectUtils.callLater(f, false);
+                       }
+               }
+
+               public function resize(hug1:Number, hug2:Number):void
+               {       //MethodID:262, LocalCount= 5 , MaxScope= 1, MaxStack= 4, CodeLength= 199
+                       this._layerWidth = hug1;
+                       this._layerHeight = hug2;
+
+                       if(!this._video || (this._contentWidth <= 0) || (this._contentHeight <= 0)) return;
+
+                       var hug3:Number = 1;
+
+                       if((this._contentHeight / this._contentWidth) < (hug2 / hug1)){
+                               hug3 = (this._layerWidth / this._contentWidth);
+                               var hug4:Number = hug3;
+                               this._video.scaleY = hug4;
+                               this._video.scaleX = hug4;
+                               this._video.x = 0;
+                               this._video.y = ((this._layerHeight - (this._contentHeight * hug3)) / 2);
+                       }else{
+                               hug3 = (this._layerHeight / this._contentHeight);
+                               var hug4:Number = hug3;
+                               this._video.scaleY = hug4;
+                               this._video.scaleX = hug4;
+                               this._video.x = ((this._layerWidth - (this._contentWidth * hug3)) / 2);
+                               this._video.y = 0;
+                       }
+               }
+
+               public function get isPlaying():Boolean
+               {       //MethodID:263, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isPlaying;
+               }
+
+               public function get isPausing():Boolean
+               {       //MethodID:264, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isPausing;
+               }
+
+               public function get isSeeking():Boolean
+               {       //MethodID:265, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isSeeking;
+               }
+
+               public function get isEnd():Boolean
+               {       //MethodID:266, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isEnd;
+               }
+
+               public function get isBuffering():Boolean
+               {       //MethodID:267, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isLoading;
+               }
+
+               public function set volume(hug1:Number):void
+               {       //MethodID:268, LocalCount= 4 , MaxScope= 1, MaxStack= 3, CodeLength= 149
+                       if((hug1 < 0) || (hug1 > 1)) return;
+
+                       hug1 *= 100;
+
+                       if(hug1 == 0){
+                               this._video.soundTransform = new SoundTransform(0);
+                               return;
+                       }
+
+                       if(hug1 == 100){
+                               this._video.soundTransform = new SoundTransform(1);
+                               return;
+                       }
+
+                       hug1 = ((hug1 * (4 / 5)) + 20);
+                       var hug2:Number = this._getACurb(100);
+                       var hug3:Number = (this._getACurb(hug1) * (1 / hug2));
+
+                       if(hug3 < 0.01){
+                               this._video.soundTransform = new SoundTransform(0.01);
+                               return;
+                       }
+
+                       this._video.soundTransform = new SoundTransform(hug3);
+               }
+
+               private function _getACurb(hug1:Number):Number
+               {       //MethodID:269, LocalCount= 2 , MaxScope= 1, MaxStack= 5, CodeLength= 35
+                       return (((0.6838 * Math.pow(hug1, 3)) - (1.7262 * Math.pow(hug1, 2))) + (2.4252 * hug1));
+               }
+
+               private function initializeSWFVideo(hug1:Function):void
+               {       //MethodID:271, LocalCount= 3 , MaxScope= 2, MaxStack= 7, CodeLength= 198
+                       internal var f:Function;                                        //slotID:1
+                       internal var content:ISWFVideoContent;                          //slotID:2
+                       internal var client:ISWFVideoClient;                            //slotID:3
+
+                       client = null;
+                       f = hug1;
+                       content = ISWFVideoContent(this._video);
+
+                       if(!content) throw new Error("SWFVideo.initializeSWFVideo: invalid type.");
+
+                       if(content.videoType == SWFVideoType.INTERRUPT_GAME_RANKING){
+                               client = new _GameRankingClient(this._videoID, this._configure.GETGAMERANKING_URL, this._configure.GETTHUMBINFO_URL);
+                       }else if(content.videoType == SWFVideoType.INTERRUPT_ENQUETE_RESULT){
+                               client = new _SWFVideoClient(this._videoID, StringUtils.joinQuery(this._configure.GETENQUESTERESULT_URL, {enquete_id:this._videoID}));
+                       }else{
+                               throw new Error("SWFVideo.initializeSWFVideo: invalid videoType.");
+                       }
+
+                       content.initialize(client, function():void{     //MethodID:270, LocalCount= 1 , MaxScope= 0, MaxStack= 2, CodeLength= 17
+                               _isInitialized = true;
+
+                               f(true);
+                       });
+               }
+
+               private function _onEnterFrame(hug1:Event):void
+               {       //MethodID:272, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 68
+                       if(!this._isEnd && (this._video.currentFrame == this._video.totalFrames)){
+                               this._video.stop();
+
+                               this._isPausing = false;
+                               this._isPlaying = false;
+                               this._isEnd = true;
+
+                               this._onVideoEnded.apply(this._isLoop);
+                       }
+               }
+
+               public function play():void
+               {       //MethodID:273, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 64
+                       this._video.gotoAndPlay(this._video.currentFrame);
+
+                       this._isPlaying = true;
+                       this._isPausing = false;
+                       this._isEnd = false;
+
+                       this._video.addEventListener(Event.ENTER_FRAME, this._onEnterFrame);
+                       ObjectUtils.callLater(this._onVideoPlayed.apply);
+               }
+
+               public function stop():void
+               {       //MethodID:274, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 47
+                       this._video.stop();
+
+                       this._isPausing = true;
+
+                       this._video.removeEventListener(Event.ENTER_FRAME, this._onEnterFrame);
+                       ObjectUtils.callLater(this._onVideoStopped.apply);
+               }
+
+               public function close():void
+               {       //MethodID:275, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               public function seek(hug1:Number):void
+               {       //MethodID:277, LocalCount= 3 , MaxScope= 2, MaxStack= 4, CodeLength= 65
+                       internal var vpos:Number;                                       //slotID:1
+                       internal var _frame:uint;                                       //slotID:2
+
+                       _frame = 0;
+                       vpos = hug1;
+                       this._isEnd = false;
+                       this._isSeeking = true;
+                       _frame = (Math.round((vpos / 1000) * 25) + 1);
+
+                       ObjectUtils.callLater(function():void{  //MethodID:276, LocalCount= 1 , MaxScope= 0, MaxStack= 2, CodeLength= 49
+                               _isSeeking = false;
+
+                               if(_isPausing){
+                                       _video.gotoAndStop(_frame);
+                               }else{
+                                       _video.gotoAndPlay(_frame);
+                               }
+
+                               _onVideoSeeked.apply(vpos);
+                       });
+               }
+
+               public function get length():Number
+               {       //MethodID:278, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._length;
+               }
+
+               public function get loadedLength():Number
+               {       //MethodID:279, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 32
+                       return ((Number(this._bytesLoaded) / Number(this._bytesTotal)) * Number(this._length));
+               }
+
+               public function get vpos():Number
+               {       //MethodID:280, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 18
+                       return (((this._video.currentFrame - 1) / 25) * 1000);
+               }
+
+               public function get isInitialized():Boolean
+               {       //MethodID:281, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isInitialized;
+               }
+
+               public function get isControllable():Boolean
+               {       //MethodID:282, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isInitialized;
+               }
+
+               public function set isLoop(hug1:Boolean):void
+               {       //MethodID:283, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._isLoop = hug1;
+               }
+
+               public function get onVideoSeeked():Functions
+               {       //MethodID:284, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._onVideoSeeked;
+               }
+
+               public function get onVideoSeeking():Functions
+               {       //MethodID:285, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._onVideoSeeking;
+               }
+
+               public function get onVideoPlayed():Functions
+               {       //MethodID:286, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._onVideoPlayed;
+               }
+
+               public function get onVideoStopped():Functions
+               {       //MethodID:287, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._onVideoStopped;
+               }
+
+               public function get onVideoEnded():Functions
+               {       //MethodID:288, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._onVideoEnded;
+               }
+
+               public function get onVideoBufferingStarted():Functions
+               {       //MethodID:289, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._onVideoBufferingStarted;
+               }
+
+               public function get onVideoLoadComplete():Functions
+               {       //MethodID:290, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._onVideoLoadComplete;
+               }
+
+               public function get onVideoError():Functions
+               {       //MethodID:291, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._onVideoError;
+               }
+
+               public function get layer():DisplayObject
+               {       //MethodID:292, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._videoLayer;
+               }
+
+               public function get source():DisplayObject
+               {       //MethodID:293, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._video;
+               }
+
+               public function get videoPlayerStatus():String
+               {       //MethodID:294, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 69
+                       if(this._isEnd) return VideoPlayerStatus.END;
+
+                       if(this._isPlaying){
+                               if(this._isPausing) return VideoPlayerStatus.PAUSED;
+
+                               return VideoPlayerStatus.PLAYING;
+                       }
+
+                       if(this._isLoading) return VideoPlayerStatus.LOADING;
+
+                       return VideoPlayerStatus.STOPPED;
+               }
+
+               public function get contentWidth():int
+               {       //MethodID:295, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._contentWidth;
+               }
+
+               public function get contentHeight():int
+               {       //MethodID:296, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._contentHeight;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.test) function get videoLayer():Sprite
+               {       //MethodID:297, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._videoLayer;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.test) function get video():MovieClip
+               {       //MethodID:298, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._video;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.test) function get isLoop():Boolean
+               {       //MethodID:299, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isLoop;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.test) function get waitingLoad():Boolean
+               {       //MethodID:300, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._waitingLoad;
+               }
+       }
+}
+
+import flash.events.Event
+import flash.events.IOErrorEvent
+import flash.events.SecurityErrorEvent
+import flash.net.URLLoader
+import flash.net.URLRequest
+import jp.nicovideo.util.StringUtils
+
+//■class(instance)_index:13
+//private
+class _SWFVideoClient extends Object implements ISWFVideoClient
+{
+       //static constructor
+       public static function _SWFVideoClient$cinit()
+       {       //MethodID:301, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+       }
+
+       //constructor
+       public function _SWFVideoClient(hug1:String, hug2:String):void
+       {       //MethodID:302, LocalCount= 3 , MaxScope= 1, MaxStack= 2, CodeLength= 16
+               super();
+
+               this._videoID = hug1;
+               this._apiURL = hug2;
+       }
+
+       //variables/etc.
+       private var _videoID:String;                                    //slotID:0
+       private var _apiURL:String;                                     //slotID:0
+
+       public function getSourceData(hug1:Function):void
+       {       //MethodID:306, LocalCount= 3 , MaxScope= 2, MaxStack= 3, CodeLength= 99
+               private var callback:Function;                                  //slotID:1
+               private var loader:URLLoader;                                   //slotID:2
+
+               loader = null;
+               callback = hug1;
+               loader = new URLLoader();
+
+               loader.load(new URLRequest(this._apiURL));
+               loader.addEventListener(Event.COMPLETE, function(hug1:Event):void{      //MethodID:303, LocalCount= 3 , MaxScope= 0, MaxStack= 3, CodeLength= 58
+                       var hug2:XML = new XML(loader.data);
+
+                       if(hug2.attribute("status").toString() == "ok"){
+                               callback(true, hug2);
+                       }else{
+                               callback(false, null);
+                       }
+               });
+               loader.addEventListener(IOErrorEvent.IO_ERROR, function(hug1:IOErrorEvent):void{        //MethodID:304, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 11
+                       callback(false, null);
+               });
+               loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(hug1:SecurityErrorEvent):void{      //MethodID:305, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 11
+                       callback(false, null);
+               });
+       }
+}
+
+//■class(instance)_index:14
+//private
+class _GameRankingClient extends Object implements IGameRankingClient
+{
+       //static constructor
+       public static function _GameRankingClient$cinit()
+       {       //MethodID:307, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+       }
+
+       //constructor
+       public function _GameRankingClient(hug1:String, hug2:String, hug3:String):void
+       {       //MethodID:308, LocalCount= 4 , MaxScope= 1, MaxStack= 5, CodeLength= 34
+               super();
+
+               this._videoID = hug1;
+               this._getGameRankURL = StringUtils.joinQuery(hug2, {game_id:hug1});
+               this._getThumbInfoURL = hug3;
+       }
+
+       //variables/etc.
+       private var _videoID:String;                                    //slotID:0
+       private var _getGameRankURL:String;                             //slotID:0
+       private var _getThumbInfoURL:String;                            //slotID:0
+
+       public function getSourceData(hug1:Function):void
+       {       //MethodID:312, LocalCount= 3 , MaxScope= 2, MaxStack= 3, CodeLength= 99
+               private var callback:Function;                                  //slotID:1
+               private var loader:URLLoader;                                   //slotID:2
+
+               loader = null;
+               callback = hug1;
+               loader = new URLLoader();
+
+               loader.load(new URLRequest(this._getGameRankURL));
+               loader.addEventListener(Event.COMPLETE, function(hug1:Event):void{      //MethodID:309, LocalCount= 2 , MaxScope= 0, MaxStack= 4, CodeLength= 21
+                       callback(true, new XML(loader.data));
+               });
+               loader.addEventListener(IOErrorEvent.IO_ERROR, function(hug1:IOErrorEvent):void{        //MethodID:310, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 11
+                       callback(false, null);
+               });
+               loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(hug1:SecurityErrorEvent):void{      //MethodID:311, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 11
+                       callback(false, null);
+               });
+       }
+
+       public function getThumbnailURL(hug1:String, hug2:Function):void
+       {       //MethodID:316, LocalCount= 4 , MaxScope= 2, MaxStack= 4, CodeLength= 109
+               private var videoID:String;                                     //slotID:1
+               private var callback:Function;                                  //slotID:2
+               private var loader:URLLoader;                                   //slotID:3
+
+               loader = null;
+               videoID = hug1;
+               callback = hug2;
+               loader = new URLLoader();
+
+               loader.load(new URLRequest(this._getThumbInfoURL + videoID));
+               loader.addEventListener(Event.COMPLETE, function(hug1:Event):void{      //MethodID:313, LocalCount= 3 , MaxScope= 0, MaxStack= 3, CodeLength= 49
+                       var hug2:String = XML(loader.data).thumb.thumbnail_url;
+
+                       if(!hug2){
+                               callback(false, null);
+                       }else{
+                               callback(true, hug2);
+                       }
+               });
+               loader.addEventListener(IOErrorEvent.IO_ERROR, function(hug1:IOErrorEvent):void{        //MethodID:314, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 11
+                       callback(false, null);
+               });
+               loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(hug1:SecurityErrorEvent):void{      //MethodID:315, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 11
+                       callback(false, null);
+               });
+       }
+}
+
+//■script013■
+
+package jp.nicovideo.util.events{
+
+       import flash.errors.IllegalOperationError
+
+       //■class(instance)_index:15
+       public class EventBarrier extends Object
+       {
+               //static constructor
+               public static function EventBarrier$cinit()
+               {       //MethodID:318, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               //constructor
+               public function EventBarrier()
+               {       //MethodID:319, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+                       super();
+               }
+
+               //variables/etc.
+               private var __counter:int = 0;                                  //slotID:0
+               private var __f:Function;                                       //slotID:0
+
+               public function bind(hug1:Function):Function
+               {       //MethodID:321, LocalCount= 5 , MaxScope= 2, MaxStack= 2, CodeLength= 55
+                       internal var f:Function;                                        //slotID:1
+
+                       f = hug1;
+
+                       if(this.__counter <= (-1)) throw new IllegalOperationError("Barrier have been broken.");
+
+                       this.__counter++;
+                       return function(... rest):*{    //MethodID:320, LocalCount= 7 , MaxScope= 4, MaxStack= 5, CodeLength= 151
+                               public var args:Array;                                          //slotID:1
+
+                               internal var args:Object = rest;
+
+                               try{
+                                       var hug3:* = f.apply(null, args);
+                                       return hug3;
+                               }
+                               finally{
+                                       if(((--__counter) <= 0) && (__f is Function)) __finish_0();
+                               }
+                       };
+               }
+
+               public function finish(hug1:Function=null):void
+               {       //MethodID:322, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 37
+                       if(!(hug1 is Function) || (this.__counter <= 0)){
+                               this.__finish_0(hug1);
+
+                               return;
+                       }
+
+                       this.__f = hug1;
+               }
+
+               private function __finish_0(hug1:Function=null):void
+               {       //MethodID:323, LocalCount= 3 , MaxScope= 1, MaxStack= 2, CodeLength= 52
+                       if(this.__counter <= (-1)) return;
+
+                       this.__counter = -1;
+                       var hug2:Function = this.__f;
+                       hug1 = hug2;
+
+                       if(hug1 || hug2) hug1();
+               }
+       }
+}
+
+//■script014■
+
+package jp.nicovideo.util.api{
+
+       //■class(instance)_index:16
+       public interface IAPICacheProxy
+       {
+               //static constructor
+               public static function IAPICacheProxy$cinit()
+               {       //MethodID:325, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function load(hug1:Function, hug2:Boolean):void;                            //MethodID:326, dispID:0
+
+               function get isCacheUsable():Boolean;                                       //MethodID:327, dispID:0
+
+               //constructor
+               public function IAPICacheProxy();                                           //MethodID:328, dispID:0
+       }
+}
+
+//■script015■
+
+package jp.nicovideo.util.api{
+
+       import flash.events.Event
+       import flash.events.IOErrorEvent
+       import flash.events.TimerEvent
+       import flash.net.URLLoader
+       import flash.net.URLRequest
+       import flash.utils.Timer
+       import jp.nicovideo.util.CrossSharedObject
+       import jp.nicovideo.util.ObjectUtils
+       import jp.nicovideo.util.TimeUtils
+       import jp.nicovideo.util.storage.LocalStorage
+
+       use namespace (http://www.nicovideo.jp/as3_ns/nicoplayer/util.test);
+
+       //■class(instance)_index:18
+       public class APICacheProxy extends Object implements IAPICacheProxy
+       {
+               //static constructor
+               public static function APICacheProxy$cinit()
+               {       //MethodID:332, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               //constructor
+               public function APICacheProxy(hug1:URLRequest, hug2:Number=0.0, hug3:Number=0.0, hug4:String=null, hug5:Boolean=true)
+               {       //MethodID:333, LocalCount= 6 , MaxScope= 1, MaxStack= 3, CodeLength= 147
+                       this._loader = new URLLoader();
+                       this._onLoaded = [];
+
+                       super();
+
+                       if((hug1 == null) || (hug1.url == null)) throw new ArgumentError("APICacheProxy.APICacheProxy: illegal parameter.");
+
+                       this._request = hug1;
+                       this._interval = ((isNaN(hug2) || (hug2 < 0)) ? 0 : hug2);
+                       this._cacheExpire = ((isNaN(hug3) || (hug3 < 0)) ? 0 : hug3);
+                       this._cacheKey = hug4;
+                       this._useCommonCache = hug5;
+
+                       this._constructor();
+               }
+
+               //variables/etc.
+               private var _request:URLRequest;                                //slotID:0
+               private var _loader:URLLoader;                                  //slotID:0
+               private var _interval:Number;                                   //slotID:0
+               private var _cacheExpire:Number = 0.0;                          //slotID:0
+               private var _cache:LocalStorage;                                //slotID:0
+               private var _cacheData:_CacheData;                              //slotID:0
+               private var _onLoaded:Array;                                    //slotID:0
+               private var _loadTimer:Timer;                                   //slotID:0
+               private var _isLocked:Boolean = false;                          //slotID:0
+               private var _cacheKey:String;                                   //slotID:0
+               private var _useCommonCache:Boolean;                            //slotID:0
+
+               private function _constructor():void
+               {       //MethodID:337, LocalCount= 3 , MaxScope= 5, MaxStack= 5, CodeLength= 295
+                       internal var path:String;                                       //slotID:1
+
+                       path = this._request.url.replace(new RegExp("[\.\/~\\%&:;\"',<>?#]", "g"), "_");
+
+                       try{
+                               this._cache = (this._useCommonCache ? CrossSharedObject.getStorage(path) : CrossSharedObject.getStorageNative(path));
+                               this._cacheData = new _CacheData(this._cache.data);
+                       }
+                       catch(e:Error){
+                               _cache = null;
+                               _cacheData = new _CacheData();
+                       }
+
+                       if((((this._cacheData.cacheKey == null) || ((this._cacheKey != null) && (this._cacheData.cacheKey != this._cacheKey))) || isNaN(this._cacheData.lastAccessTime)) || (this._cacheData.source == undefined)){
+                               this._cacheData.cacheKey = "";
+                               this._cacheData.lastAccessTime = -1;
+                               this._cacheData.source = null;
+
+                               this._updateCacheData();
+                       }
+
+                       this._loadTimer = new Timer(0, 1);
+
+                       this._loader.addEventListener(Event.COMPLETE, function(hug1:Event):void{        //MethodID:335, LocalCount= 3 , MaxScope= 1, MaxStack= 3, CodeLength= 81
+                               internal var event:Event;                                       //slotID:1
+
+                               event = hug1;
+                               _isLocked = true;
+                               _cacheData.cacheKey = _cacheKey;
+                               _cacheData.lastAccessTime = TimeUtils.time;
+                               _cacheData.source = _loader.data;
+
+                               _updateCacheData();
+                               _reflect(true, _cacheData.source);
+                               ObjectUtils.callLater(function():void{  //MethodID:334, LocalCount= 1 , MaxScope= 0, MaxStack= 2, CodeLength= 8
+                                       _isLocked = false;
+                               });
+                       });
+                       this._loader.addEventListener(IOErrorEvent.IO_ERROR, function(hug1:IOErrorEvent):void{  //MethodID:336, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 10
+                               _reflect(false, null);
+                       });
+               }
+
+               public function load(hug1:Function, hug2:Boolean):void
+               {       //MethodID:340, LocalCount= 4 , MaxScope= 2, MaxStack= 4, CodeLength= 253
+                       internal var callback:Function;                                 //slotID:1
+                       internal var useCache:Boolean;                                  //slotID:2
+                       internal var delay:Number;                                      //slotID:3
+                       internal var source:*;                                          //slotID:4
+
+                       source = undefined;
+                       callback = hug1;
+                       useCache = hug2;
+
+                       if(useCache && (this._cache != null) && (this._cache.data.source != null)){
+                               source = this._cache.data.source;
+
+                               ObjectUtils.callLater(callback, (source != null), source);
+
+                               return;
+                       }
+
+                       this._onLoaded.push(callback);
+
+                       if(!this._hasExpired){
+                               ObjectUtils.callLater(function():void{  //MethodID:338, LocalCount= 1 , MaxScope= 0, MaxStack= 3, CodeLength= 15
+                                       _reflect(true, _cacheData.source);
+                               });
+
+                               return;
+                       }
+
+                       if(this._isLocked || this._loadTimer.running) return;
+
+                       delay = (this._cacheData.lastAccessTime + this._interval - TimeUtils.time);
+                       delay = ((delay < 1) ? 1 : delay);
+                       this._loadTimer.delay = delay;
+                       this._loadTimer.repeatCount = 1;
+
+                       this._loadTimer.addEventListener(TimerEvent.TIMER_COMPLETE, function(hug1:TimerEvent):void{     //MethodID:339, LocalCount= 2 , MaxScope= 0, MaxStack= 2, CodeLength= 18
+                               _loadTimer.reset();
+                               _loader.load(_request);
+                       });
+                       this._loadTimer.start();
+               }
+
+               public function get isCacheUsable():Boolean
+               {       //MethodID:341, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 26
+                       return ((this._cacheData != null) && (this._cacheData.source != null));
+               }
+
+               private function get _hasExpired():Boolean
+               {       //MethodID:342, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 41
+                       return ((this._cacheKey != this._cacheData.cacheKey) || ((this._cacheData.lastAccessTime + this._cacheExpire) < TimeUtils.time));
+               }
+
+               private function _reflect(hug1:Boolean, hug2:*):void
+               {       //MethodID:343, LocalCount= 7 , MaxScope= 1, MaxStack= 4, CodeLength= 68
+                       var hug4:Function = null;
+                       var hug3:Array = this._onLoaded.concat();
+                       this._onLoaded = [];
+
+                       for each(hug4 in hug3){
+                               hug4.apply(null, [hug1, hug2]);
+                       }
+               }
+
+               private function _updateCacheData():void
+               {       //MethodID:344, LocalCount= 3 , MaxScope= 5, MaxStack= 3, CodeLength= 102
+                       if(!this._cache) return;
+
+                       try{
+                               this._cache.data.cacheKey = this._cacheData.cacheKey;
+                               this._cache.data.lastAccessTime = this._cacheData.lastAccessTime;
+                               this._cache.data.source = this._cacheData.source;
+
+                               this._cache.flush();
+                       }
+                       catch(e:Error){
+                               _cache = null;
+                       }
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.test) function get cache():LocalStorage
+               {       //MethodID:345, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._cache;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.test) function get hasExpired():Boolean
+               {       //MethodID:346, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._hasExpired;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.test) function get loadTimer():Timer
+               {       //MethodID:347, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._loadTimer;
+               }
+       }
+}
+
+
+//■class(instance)_index:17
+//private
+class _CacheData extends Object
+{
+       //static constructor
+       public static function _CacheData$cinit()
+       {       //MethodID:330, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+       }
+
+       //constructor
+       public function _CacheData(hug1:Object=null)
+       {       //MethodID:331, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 36
+               super();
+
+               if(!hug1) return;
+
+               this.source = hug1.source;
+               this.lastAccessTime = hug1.lastAccessTime;
+               this.cacheKey = hug1.cacheKey;
+       }
+
+       //variables/etc.
+       public var source:*;                                            //slotID:0
+       public var lastAccessTime:Number;                               //slotID:0
+       public var cacheKey:String;                                     //slotID:0
+}
+
+//■script016■
+
+package jp.nicovideo.nicoplayer.models.video.userSponsor{
+
+       import flash.display.Sprite
+       import jp.nicovideo.nicoplayer.models.api.ICapturableVideoContainer
+       import jp.nicovideo.nicoplayer.models.api.IGetSponsorInfo
+       import jp.nicovideo.nicoplayer.models.video.IVposWatcher
+
+       //■class(instance)_index:19
+       public interface IUserSponsorVideoClient
+       {
+               //static constructor
+               public static function IUserSponsorVideoClient$cinit()
+               {       //MethodID:349, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function get info():IGetSponsorInfo;                                        //MethodID:350, dispID:0
+
+               function get layer():Sprite;                                                //MethodID:351, dispID:0
+
+               function get linkURL():String;                                              //MethodID:352, dispID:0
+
+               function get youAlsoLink():String;                                          //MethodID:353, dispID:0
+
+               function get capturableVideoContainer():ICapturableVideoContainer;          //MethodID:354, dispID:0
+
+               function get vposWatcher():IVposWatcher;                                    //MethodID:355, dispID:0
+
+               //constructor
+               public function IUserSponsorVideoClient();                                  //MethodID:356, dispID:0
+       }
+}
+
+//■script017■
+
+package jp.nicovideo.nicoplayer.models.video.userSponsor{
+
+       import flash.display.Sprite
+       import jp.nicovideo.nicoplayer.models.api.ICapturableVideoContainer
+       import jp.nicovideo.nicoplayer.models.api.IGetSponsorInfo
+       import jp.nicovideo.nicoplayer.models.video.IVposWatcher
+
+       //■class(instance)_index:20
+       public class UserSponsorVideoClient extends Object implements IUserSponsorVideoClient
+       {
+               //static constructor
+               public static function UserSponsorVideoClient$cinit()
+               {       //MethodID:358, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               //constructor
+               public function UserSponsorVideoClient(hug1:IGetSponsorInfo, hug2:Sprite, hug3:String, hug4:String, hug5:ICapturableVideoContainer, hug6:IVposWatcher)
+               {       //MethodID:359, LocalCount= 7 , MaxScope= 1, MaxStack= 2, CodeLength= 39
+                       super();
+
+                       this._info = hug1;
+                       this._layer = hug2;
+                       this._linkURL = hug3;
+                       this._youAlsoLink = hug4;
+                       this._capturableVideoContainer = hug5;
+                       this._vposWatcher = hug6;
+               }
+
+               //variables/etc.
+               private var _info:IGetSponsorInfo;                              //slotID:0
+               private var _layer:Sprite;                                      //slotID:0
+               private var _linkURL:String;                                    //slotID:0
+               private var _youAlsoLink:String;                                //slotID:0
+               private var _capturableVideoContainer:ICapturableVideoContainer;//slotID:0
+               private var _vposWatcher:IVposWatcher;                          //slotID:0
+
+               public function get info():IGetSponsorInfo
+               {       //MethodID:360, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._info;
+               }
+
+               public function get layer():Sprite
+               {       //MethodID:361, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._layer;
+               }
+
+               public function get linkURL():String
+               {       //MethodID:362, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._linkURL;
+               }
+
+               public function get youAlsoLink():String
+               {       //MethodID:363, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._youAlsoLink;
+               }
+
+               public function get capturableVideoContainer():ICapturableVideoContainer
+               {       //MethodID:364, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._capturableVideoContainer;
+               }
+
+               public function get vposWatcher():IVposWatcher
+               {       //MethodID:365, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._vposWatcher;
+               }
+       }
+}
+
+//■script018■
+
+package jp.nicovideo.nicoplayer.models{
+
+       import jp.nicovideo.util.CrossSharedObject
+       import jp.nicovideo.util.TimeUtils
+       import jp.nicovideo.util.storage.LocalStorage
+
+       use namespace (http://www.nicovideo.jp/as3_ns/nicoplayer/util.test);
+
+       //■class(instance)_index:21
+       public class PlayDelay extends Object
+       {
+               //static constructor
+               public static function PlayDelay$cinit()
+               {       //MethodID:367, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 71
+                       OPENPLAYER_INTERVAL = 3000;
+                       OPENPLAYER_INTERVAL_PREMIUM = 0;
+                       OPENPLAYER_INTERVAL_THUMBWATCH = 1000;
+                       SO_RUSH_HOUR_PLAY_COUNT = "rush_hour_play_count";
+                       soRushHourPlayCount = CrossSharedObject.getStorage(SO_RUSH_HOUR_PLAY_COUNT);
+                       RUSH_HOUR = "1800-0300";
+                       RUSH_HOUR_PLAY_COUNTER_TTL = 10;
+               }
+
+               //static variables/etc.
+               private static const OPENPLAYER_INTERVAL:Number = 3000.0;       //slotID:1
+               private static const OPENPLAYER_INTERVAL_PREMIUM:Number = 0.0;  //slotID:2
+               private static const OPENPLAYER_INTERVAL_THUMBWATCH:Number = 1000.0;//slotID:3
+               private static const SO_RUSH_HOUR_PLAY_COUNT:String = "rush_hour_play_count";//slotID:4
+               private static var soRushHourPlayCount:LocalStorage;            //slotID:5
+               private static const RUSH_HOUR:String = "1800-0300";            //slotID:6
+               private static const RUSH_HOUR_PLAY_COUNTER_TTL:Number = 10.0;  //slotID:7
+
+               private static function _getCount():uint
+               {       //dispID:3, MethodID:368, LocalCount= 4 , MaxScope= 1, MaxStack= 3, CodeLength= 155
+                       var hug1:Date = TimeUtils.now();
+
+                       if(soRushHourPlayCount.data.count == undefined) soRushHourPlayCount.data.count = 0;
+
+                       if(soRushHourPlayCount.data.lastCountUp == undefined) soRushHourPlayCount.data.lastCountUp = hug1;
+
+                       var hug2:uint = soRushHourPlayCount.data.count;
+                       var hug3:Date = soRushHourPlayCount.data.lastCountUp;
+
+                       if(!_isRushHour(RUSH_HOUR) || _isRsetCount(RUSH_HOUR_PLAY_COUNTER_TTL, hug3)){
+                               soRushHourPlayCount.data.count = 0;
+                               hug2 = 0;
+                       }
+
+                       soRushHourPlayCount.data.lastCountUp = hug1;
+
+                       soRushHourPlayCount.flush();
+
+                       return hug2;
+               }
+
+               private static function _isRsetCount(hug1:Number, hug2:Date):Boolean
+               {       //dispID:4, MethodID:369, LocalCount= 4 , MaxScope= 1, MaxStack= 3, CodeLength= 42
+                       var hug3:Date = TimeUtils.now();
+
+                       if((hug2.getTime() + ((hug1 * 60 * 60) * 1000)) <= hug3.getTime()) return true;
+
+                       return false;
+               }
+
+               private static function _isRushHour(hug1:String):Boolean
+               {       //dispID:5, MethodID:370, LocalCount= 8 , MaxScope= 1, MaxStack= 3, CodeLength= 132
+                       var hug2:Array = hug1.split("-");
+                       var hug3:Date = TimeUtils.now();
+                       var hug4:Number = ((hug3.getHours() * 100) + hug3.getMinutes());
+                       var hug5:Number = Number(hug2[0]);
+                       var hug6:Number = Number(hug2[1]);
+                       var hug7:Boolean = false;
+
+                       if(hug5 < hug6){
+                               if((hug5 <= hug4) && (hug4 <= hug6)) hug7 = true;
+                       }else if((hug5 <= hug4) || (hug4 <= hug6)){
+                               hug7 = true;
+                       }
+
+                       return hug7;
+               }
+
+               public static function getPlayDelayTime(hug1:Boolean, hug2:Boolean):Number
+               {       //dispID:6, MethodID:371, LocalCount= 3 , MaxScope= 1, MaxStack= 4, CodeLength= 80
+                       if(hug2) return Math.max(Math.min((_getCount() * 500), 15000), OPENPLAYER_INTERVAL_THUMBWATCH);
+
+                       if(hug1) return OPENPLAYER_INTERVAL_PREMIUM;
+
+                       return Math.max(Math.min((_getCount() * 500), 15000), OPENPLAYER_INTERVAL);
+               }
+
+               public static function countUp():void
+               {       //dispID:7, MethodID:372, LocalCount= 3 , MaxScope= 1, MaxStack= 2, CodeLength= 49
+                       if(soRushHourPlayCount.data.count == undefined) return;
+
+                       soRushHourPlayCount.data.count++;
+                       soRushHourPlayCount.flush();
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.test) static function isRushHour(hug1:String):Boolean
+               {       //dispID:8, MethodID:373, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 11
+                       return _isRushHour(hug1);
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.test) static function isRsetCount(hug1:Number, hug2:Date):Boolean
+               {       //dispID:9, MethodID:374, LocalCount= 3 , MaxScope= 1, MaxStack= 3, CodeLength= 12
+                       return _isRsetCount(hug1, hug2);
+               }
+
+               //constructor
+               public function PlayDelay()
+               {       //MethodID:375, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+                       super();
+               }
+       }
+}
+
+//■script019■
+
+package jp.nicovideo.nicoplayer.models.video{
+
+       import flash.events.TimerEvent
+       import flash.utils.Timer
+       import jp.nicovideo.util.Functions
+       import jp.nicovideo.util.events.EventResult
+       import jp.nicovideo.util.events.event_sender
+
+       use namespace (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_sender);
+       use namespace (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver);
+
+       //■class(instance)_index:22
+       public class VideoLoadWatcher extends Object
+       {
+               //static constructor
+               public static function VideoLoadWatcher$cinit()
+               {       //MethodID:377, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 12
+                       WATCH_DELAY = 1000;
+               }
+
+               //static variables/etc.
+               public static const WATCH_DELAY:Number = 1000.0;                //slotID:1
+
+               //constructor
+               public function VideoLoadWatcher()
+               {       //MethodID:378, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 53
+                       this.onPlaybackStopped = new Functions();
+                       this.onVideoLoadCompleted = new Functions();
+                       this._watchTimer = new Timer(WATCH_DELAY);
+
+                       super();
+                       this._watchTimer.addEventListener(TimerEvent.TIMER, this._onWatchTimer);
+               }
+
+               //variables/etc.
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_sender) const onPlaybackStopped:Functions;//slotID:0
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_sender) const onVideoLoadCompleted:Functions;//slotID:0
+               private var _prevVpos:Number = -1.0;                            //slotID:0
+               private var _watchTimer:Timer;                                  //slotID:0
+               private var _stoppedCount:uint;                                 //slotID:0
+               private var _enabled:Boolean = true;                            //slotID:0
+               private var _onPlaybackStoppedEventSended:Boolean = false;      //slotID:0
+               private var _hasJustSeeked:Boolean = false;                     //slotID:0
+               private var _video:IVideo;                                      //slotID:0
+
+               private function _startWatching():void
+               {       //MethodID:380, LocalCount= 2 , MaxScope= 2, MaxStack= 2, CodeLength= 103
+                       if(this._video == null) throw new Error("VideoLoadWatcher._startWatching: _video is null.");
+
+                       if(!this._video.isBuffering){
+                               onVideoLoadCompleted.apply();
+
+                               return;
+                       }
+
+                       this._video.onVideoLoadComplete.add(function(hug1:uint, ...args):void{  //MethodID:379, LocalCount= 3 , MaxScope= 0, MaxStack= 2, CodeLength= 44
+                               stopWatching();
+                               onVideoLoadCompleted.apply();
+                               _video.onVideoLoadComplete.remove(args.calee);
+                       });
+                       this._watchTimer.reset();
+                       this._watchTimer.start();
+
+                       this._stoppedCount = 0;
+                       this._prevVpos = -1;
+               }
+
+               public function stopWatching():void
+               {       //MethodID:381, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 11
+                       this._watchTimer.stop();
+               }
+
+               private function _onWatchTimer(hug1:TimerEvent):void
+               {       //MethodID:382, LocalCount= 4 , MaxScope= 1, MaxStack= 2, CodeLength= 195
+                       if(this._video.isPausing || (this._video.vpos != this._prevVpos) || this._video.isSeeking || !this._video.isBuffering){
+                               if(!this._video.isSeeking && !this._video.isPausing && (this._video.vpos != this._prevVpos)) this._hasJustSeeked = false;
+
+                               this._prevVpos = this._video.vpos;
+                               this._onPlaybackStoppedEventSended = false;
+                               return;
+                       }
+
+                       if(this._hasJustSeeked) return;
+
+                       if(this._onPlaybackStoppedEventSended) return;
+
+                       this._onPlaybackStoppedEventSended = true;
+                       this._stoppedCount++;
+                       onPlaybackStopped.apply(this._stoppedCount);
+               }
+
+               public function set enabled(hug1:Boolean):void
+               {       //MethodID:383, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 21
+                       this._enabled = hug1;
+
+                       if(!this._enabled) this.stopWatching();
+               }
+
+               public function get enabled():Boolean
+               {       //MethodID:384, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._enabled;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onVideoInitialized(hug1:Boolean, hug2:IVideo):EventResult
+               {       //MethodID:385, LocalCount= 3 , MaxScope= 1, MaxStack= 2, CodeLength= 32
+                       if(!this._enabled) return EventResult.THROUGH;
+
+                       this._video = hug2;
+
+                       this._startWatching();
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onVideoSeeked(hug1:Number):EventResult
+               {       //MethodID:386, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 13
+                       this._hasJustSeeked = true;
+                       return EventResult.THROUGH;
+               }
+       }
+}
+
+//■script020■
+
+package jp.nicovideo.nicoplayer.storages{
+
+       //■class(instance)_index:23
+       public class CommentStorageError extends Object
+       {
+               //static constructor
+               public static function CommentStorageError$cinit()
+               {       //MethodID:388, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               //constructor
+               public function CommentStorageError(hug1:int, hug2:String, hug3:Boolean=false)
+               {       //MethodID:389, LocalCount= 4 , MaxScope= 1, MaxStack= 2, CodeLength= 21
+                       super();
+
+                       this.__status = hug1;
+                       this.__message = hug2;
+                       this.__isInLowerLayer = hug3;
+               }
+
+               //variables/etc.
+               private var __status:int;                                       //slotID:0
+               private var __message:String;                                   //slotID:0
+               private var __isInLowerLayer:Boolean;                           //slotID:0
+
+               public function get status():int
+               {       //MethodID:390, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this.__status;
+               }
+
+               public function get message():String
+               {       //MethodID:391, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this.__message;
+               }
+
+               public function get isInLowerLayer():Boolean
+               {       //MethodID:392, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this.__isInLowerLayer;
+               }
+       }
+}
+
+//■script021■
+
+package jp.nicovideo.nicoplayer.models.mylist{
+
+       import jp.nicovideo.util.Functions
+
+       //■class(instance)_index:24
+       public interface IDefaultMylistAppendable
+       {
+               //static constructor
+               public static function IDefaultMylistAppendable$cinit()
+               {       //MethodID:394, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function get onAppendedDefaultMylist():Functions;                           //MethodID:395, dispID:0
+
+               function appendDefaultMylist(hug1:String=null):void;                        //MethodID:396, dispID:0
+
+               function get hasAppendedDefaultMylist():Boolean;                            //MethodID:397, dispID:0
+
+               //constructor
+               public function IDefaultMylistAppendable();                                 //MethodID:398, dispID:0
+       }
+}
+
+//■script022■
+
+package jp.nicovideo.nicoplayer.models.mylist{
+
+       import flash.errors.IllegalOperationError
+       import flash.net.URLRequestMethod
+       import jp.nicovideo.util.CrossSharedObject
+       import jp.nicovideo.util.Functions
+       import jp.nicovideo.util.TimeUtils
+       import jp.nicovideo.util.storage.LocalStorage
+
+       //■class(instance)_index:30
+       public class DefaultMylistAppender extends Object implements IDefaultMylistAppendable
+       {
+               //static constructor
+               public static function DefaultMylistAppender$cinit()
+               {       //MethodID:410, LocalCount= 1 , MaxScope= 1, MaxStack= 3, CodeLength= 35
+                       _LOG_TERM = ((3 * 24 * 60 * 60) * 1000);
+                       _ON_APPENDED_DEFAULT_MYLIST = new Functions();
+               }
+
+               //static variables/etc.
+               private static const _LOG_TERM:Number = 0xF731400;              //slotID:1
+               private static const _ON_APPENDED_DEFAULT_MYLIST:Functions;     //slotID:2
+
+               //constructor
+               public function DefaultMylistAppender(hug1:Function, hug2:String, hug3:String, hug4:Boolean, hug5:String)
+               {       //MethodID:411, LocalCount= 6 , MaxScope= 1, MaxStack= 4, CodeLength= 49
+                       this._appendedLogStorage = CrossSharedObject.getStorage((_SOSetting).NAME, (_SOSetting).PATH);
+
+                       super();
+
+                       this._loadFunc = hug1;
+                       this._apiURL = hug2;
+
+                       this.initialize(hug3, hug4, hug5);
+               }
+
+               //variables/etc.
+               private var _loadFunc:Function;                                 //slotID:0
+               private var _apiURL:String;                                     //slotID:0
+               private var _threadID:String;                                   //slotID:0
+               private var _hasAppended:Boolean;                               //slotID:0
+               private var _csrfToken:String;                                  //slotID:0
+               private var _appendedLogStorage:LocalStorage;                   //slotID:0
+
+               public function initialize(hug1:String, hug2:Boolean, hug3:String=null):void
+               {       //MethodID:412, LocalCount= 8 , MaxScope= 1, MaxStack= 3, CodeLength= 169
+                       var hug4:String = null;
+                       var hug5:Number = NaN;
+                       this._threadID = hug1;
+                       this._hasAppended = hug2;
+
+                       if(hug3 != null) this._csrfToken = hug3;
+                       _ON_APPENDED_DEFAULT_MYLIST.clear();
+
+                       if(!this._hasAppended){
+                               for(hug4 in this._appendedLogStorage.data){
+                                       hug5 = Number(this._appendedLogStorage.data[hug4]);
+
+                                       if(isNaN(hug5) || ((hug5 + _LOG_TERM) < TimeUtils.time)){
+                                               delete this._appendedLogStorage.data[hug4];
+                                       }else if(hug4 == this._threadID){
+                                               this._hasAppended = true;
+                                       }
+                               }
+                       }
+               }
+
+               public function get onAppendedDefaultMylist():Functions
+               {       //MethodID:413, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+                       return _ON_APPENDED_DEFAULT_MYLIST;
+               }
+
+               public function appendDefaultMylist(hug1:String=null):void
+               {       //MethodID:415, LocalCount= 3 , MaxScope= 2, MaxStack= 5, CodeLength= 140
+                       internal var description:String = null;                         //slotID:1
+                       internal var parameters:Object;                                 //slotID:2
+
+                       description = hug1;
+
+                       if(this._hasAppended) throw new IllegalOperationError("DefaultMylistAppender.appendDefaultMylist: has appended already.");
+
+                       parameters = {};
+                       parameters[(_RequestParameterKey).ITEM_TYPE] = (_ItemType).VIDEO;
+                       parameters[(_RequestParameterKey).ITEM_ID] = this._threadID;
+
+                       if(description != null) parameters[(_RequestParameterKey).DESCRIPTION] = description;
+
+                       parameters[(_RequestParameterKey).TOKEN] = this._csrfToken;
+
+                       this._loadFunc(function(hug1:Object):void{      //MethodID:414, LocalCount= 4 , MaxScope= 0, MaxStack= 3, CodeLength= 72
+                               var hug2:Boolean = _hasAppended = (hug1[(_ResponseKey).STATUS] == (_ResponseValue).OK);
+
+                               if((hug1 != null) && hug2) _appendedLogStorage.data[_threadID] = TimeUtils.time;
+                               onAppendedDefaultMylist.apply(hug2);
+                       }, this._apiURL, parameters, URLRequestMethod.POST);
+               }
+
+               public function get hasAppendedDefaultMylist():Boolean
+               {       //MethodID:416, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._hasAppended;
+               }
+       }
+}
+
+
+//■class(instance)_index:25
+//private
+class _SOSetting extends Object
+{
+       //static constructor
+       public static function _SOSetting$cinit()
+       {       //MethodID:400, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 21
+               NAME = "jp.nicovideo.nicoplayer.models.mylist.DefaultMylistAppender";
+               PATH = "/";
+       }
+
+       //static variables/etc.
+       public static const NAME:String = "jp.nicovideo.nicoplayer.models.mylist.DefaultMylistAppender";//slotID:1
+       public static const PATH:String = "/";                          //slotID:2
+
+       //constructor
+       public function _SOSetting()
+       {       //MethodID:401, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+               super();
+       }
+}
+
+//■class(instance)_index:26
+//private
+class _RequestParameterKey extends Object
+{
+       //static constructor
+       public static function _RequestParameterKey$cinit()
+       {       //MethodID:402, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 39
+               ITEM_TYPE = "item_type";
+               ITEM_ID = "item_id";
+               DESCRIPTION = "description";
+               TOKEN = "token";
+       }
+
+       //static variables/etc.
+       public static const ITEM_TYPE:String = "item_type";             //slotID:1
+       public static const ITEM_ID:String = "item_id";                 //slotID:2
+       public static const DESCRIPTION:String = "description";         //slotID:3
+       public static const TOKEN:String = "token";                     //slotID:4
+
+       //constructor
+       public function _RequestParameterKey()
+       {       //MethodID:403, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+               super();
+       }
+}
+
+//■class(instance)_index:27
+//private
+class _ItemType extends Object
+{
+       //static constructor
+       public static function _ItemType$cinit()
+       {       //MethodID:404, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 11
+               VIDEO = 0;
+       }
+
+       //static variables/etc.
+       public static const VIDEO:uint = 0;                             //slotID:1
+
+       //constructor
+       public function _ItemType()
+       {       //MethodID:405, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+               super();
+       }
+}
+
+//■class(instance)_index:28
+//private
+class _ResponseKey extends Object
+{
+       //static constructor
+       public static function _ResponseKey$cinit()
+       {       //MethodID:406, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 12
+               STATUS = "status";
+       }
+
+       //static variables/etc.
+       public static const STATUS:String = "status";                   //slotID:1
+
+       //constructor
+       public function _ResponseKey()
+       {       //MethodID:407, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+               super();
+       }
+}
+
+//■class(instance)_index:29
+//private
+class _ResponseValue extends Object
+{
+       //static constructor
+       public static function _ResponseValue$cinit()
+       {       //MethodID:408, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 12
+               OK = "ok";
+       }
+
+       //static variables/etc.
+       public static const OK:String = "ok";                           //slotID:1
+
+       //constructor
+       public function _ResponseValue()
+       {       //MethodID:409, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+               super();
+       }
+}
+
+//■script023■
+
+package jp.nicovideo.nicoplayer.models.comment{
+
+       //■class(instance)_index:31
+       public final class CommentConstants extends Object
+       {
+               //static constructor
+               public static function CommentConstants$cinit()
+               {       //MethodID:418, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 48
+                       CL_MAIN = "commentlist:main";
+                       CL_OWNER = "commentlist:owner";
+                       CL_NICOS = "commentlist:nicos";
+                       CL_LOCAL = "commentlist:local";
+                       CL_PRIVATE = "commentlist:private";
+               }
+
+               //static variables/etc.
+               public static const CL_MAIN:String = "commentlist:main";        //slotID:1
+               public static const CL_OWNER:String = "commentlist:owner";      //slotID:2
+               public static const CL_NICOS:String = "commentlist:nicos";      //slotID:3
+               public static const CL_LOCAL:String = "commentlist:local";      //slotID:4
+               public static const CL_PRIVATE:String = "commentlist:private";  //slotID:5
+
+               //constructor
+               public function CommentConstants()
+               {       //MethodID:419, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+                       super();
+               }
+       }
+}
+
+//■script024■
+
+package jp.nicovideo.nicoplayer.models.api{
+
+       //■class(instance)_index:32
+       public interface IGetChecklist
+       {
+               //static constructor
+               public static function IGetChecklist$cinit()
+               {       //MethodID:421, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function get communities():Array;                                           //MethodID:422, dispID:0
+
+               function get channels():Array;                                              //MethodID:423, dispID:0
+
+               function get friends():Array;                                               //MethodID:424, dispID:0
+
+               function get watchUsers():Array;                                            //MethodID:425, dispID:0
+
+               //constructor
+               public function IGetChecklist();                                            //MethodID:426, dispID:0
+       }
+}
+
+//■script025■
+
+package jp.nicovideo.nicoplayer.models.api{
+
+       //■class(instance)_index:33
+       public interface IChannelInfo
+       {
+               //static constructor
+               public static function IChannelInfo$cinit()
+               {       //MethodID:428, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function get channel_id():Number;                                           //MethodID:429, dispID:0
+
+               function get community_id():Number;                                         //MethodID:430, dispID:0
+
+               //constructor
+               public function IChannelInfo();                                             //MethodID:431, dispID:0
+       }
+}
+
+//■script026■
+
+package jp.nicovideo.nicoplayer.models.api{
+
+       import com.adobe.serialization.json.JSON
+       import jp.nicovideo.util.api.IAPICacheProxy
+
+       //■class(instance)_index:34
+       public class GetChecklist extends Object implements IGetChecklist
+       {
+               //static constructor
+               public static function GetChecklist$cinit()
+               {       //MethodID:433, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               //constructor
+               public function GetChecklist(hug1:Function, hug2:IAPICacheProxy, hug3:Boolean, hug4:Boolean)
+               {       //MethodID:436, LocalCount= 6 , MaxScope= 2, MaxStack= 3, CodeLength= 122
+                       internal var callback:Function;                                 //slotID:1
+                       internal var apiCahceProxy:IAPICacheProxy;                      //slotID:2
+                       internal var useCache:Boolean;                                  //slotID:3
+                       internal var noLoad:Boolean;                                    //slotID:4
+
+                       callback = hug1;
+                       apiCahceProxy = hug2;
+                       useCache = hug3;
+                       noLoad = hug4;
+                       this._communities = [];
+                       this._channels = [];
+                       this._friends = [];
+                       this._watchUsers = [];
+
+                       super();
+
+                       if((callback == null) || (apiCahceProxy == null)) throw new ArgumentError("GetCheckList.GetCheckList: invalid parameter.");
+
+                       if(noLoad){
+                               callback(false);
+
+                               return;
+                       }
+
+                       apiCahceProxy.load(function(hug1:Boolean, hug2:*):void{ //MethodID:435, LocalCount= 6 , MaxScope= 3, MaxStack= 6, CodeLength= 354
+                               internal var succeeded:Boolean;                                 //slotID:1
+                               internal var source:*;                                          //slotID:2
+                               internal var castItem:Function;                                 //slotID:3
+                               internal var data:Object;                                       //slotID:4
+                               internal var map:Object;                                        //slotID:5
+                               internal var channel_id:String;                                 //slotID:6
+
+                               castItem = null;
+                               data = null;
+                               map = null;
+                               channel_id = null;
+                               succeeded = hug1;
+                               source = hug2;
+                               castItem = function(hug1:*, hug2:int, hug3:Array):void{ //MethodID:434, LocalCount= 6 , MaxScope= 0, MaxStack= 2, CodeLength= 174
+                                       var hug4:Number = parseInt(hug1);
+
+                                       if(isNaN(hug4)) return;
+
+                                       var hug5:Array = hug3;
+
+                                       switch(hug5){
+                                       case data["community_id"]:
+                                               _communities.push(hug4);
+                                               break;
+                                       case data["friend"]:
+                                               _friends.push(hug4);
+                                               break;
+                                       case data["watchuser"]:
+                                               _watchUsers.push(hug4);
+                                               break;
+                                       default:
+                                               break;
+                                       }
+                               };
+
+                               if(!succeeded){
+                                       callback(false);
+
+                                       return;
+                               }
+
+                               try{
+                                       data = JSON.decode(source);
+
+                                       if(data["community_id"] is Array) (data["community_id"] as Array).forEach(castItem);
+
+                                       if(data["friend"] is Array) (data["friend"] as Array).forEach(castItem);
+
+                                       if(data["watchuser"] is Array) (data["watchuser"] as Array).forEach(castItem);
+
+                                       if(data["channel_id"] is Object){
+                                               map = (data["channel_id"] as Object);
+
+                                               for(channel_id in map){
+                                                       _channels.push(new _ChannelInfo(parseInt(channel_id), parseInt(map[channel_id])));
+                                               }
+                                       }
+                               }
+                               catch(error:Error){
+                                       callback(false);
+
+                                       return;
+                               }
+
+                               callback(true);
+                       }, useCache);
+               }
+
+               //variables/etc.
+               private var _communities:Array;                                 //slotID:0
+               private var _channels:Array;                                    //slotID:0
+               private var _friends:Array;                                     //slotID:0
+               private var _watchUsers:Array;                                  //slotID:0
+
+               public function get communities():Array
+               {       //MethodID:437, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._communities;
+               }
+
+               public function get channels():Array
+               {       //MethodID:438, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._channels;
+               }
+
+               public function get friends():Array
+               {       //MethodID:439, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._friends;
+               }
+
+               public function get watchUsers():Array
+               {       //MethodID:440, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._watchUsers;
+               }
+       }
+}
+
+
+//■class(instance)_index:35
+//private
+class _ChannelInfo extends Object implements IChannelInfo
+{
+       //static constructor
+       public static function _ChannelInfo$cinit()
+       {       //MethodID:441, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+       }
+
+       //constructor
+       public function _ChannelInfo(hug1:Number, hug2:Number)
+       {       //MethodID:442, LocalCount= 3 , MaxScope= 1, MaxStack= 2, CodeLength= 16
+               super();
+
+               this._channel_id = hug1;
+               this._community_id = hug2;
+       }
+
+       //variables/etc.
+       private var _channel_id:Number;                                 //slotID:0
+       private var _community_id:Number;                               //slotID:0
+
+       public function get channel_id():Number
+       {       //MethodID:443, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+               return this._channel_id;
+       }
+
+       public function get community_id():Number
+       {       //MethodID:444, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+               return this._community_id;
+       }
+}
+
+//■script027■
+
+package jp.nicovideo.nicoplayer.models.filter{
+
+       import jp.nicovideo.nicoplayer.models.comment.IComment
+
+       //■class(instance)_index:36
+       public class NGInfo extends Object
+       {
+               //static constructor
+               public static function NGInfo$cinit()
+               {       //MethodID:446, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               //constructor
+               public function NGInfo(hug1:String, hug2:String, hug3:Date, hug4:IComment=null):void
+               {       //MethodID:447, LocalCount= 5 , MaxScope= 1, MaxStack= 3, CodeLength= 49
+                       super();
+
+                       this.__type = hug1;
+                       this.__source = hug2;
+                       this.__comment = hug4;
+
+                       if(hug3){
+                               this.__lastHit = new Date(hug3.time);
+                       }else{
+                               this.__lastHit = null;
+                       }
+               }
+
+               //variables/etc.
+               private var __type:String;                                      //slotID:0
+               private var __source:String;                                    //slotID:0
+               private var __lastHit:Date;                                     //slotID:0
+               private var __comment:IComment;                                 //slotID:0
+
+               public function get type():String
+               {       //MethodID:448, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this.__type;
+               }
+
+               public function get source():String
+               {       //MethodID:449, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this.__source;
+               }
+
+               public function get lastHit():Date
+               {       //MethodID:450, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this.__lastHit;
+               }
+
+               public function set lastHit(hug1:Date):void
+               {       //MethodID:451, LocalCount= 2 , MaxScope= 1, MaxStack= 3, CodeLength= 16
+                       this.__lastHit = new Date(hug1.time);
+               }
+
+               public function get comment():IComment
+               {       //MethodID:452, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this.__comment;
+               }
+       }
+}
+
+//■script028■
+
+package jp.nicovideo.marquee{
+
+       import flash.display.DisplayObjectContainer
+
+       //■class(instance)_index:37
+       public interface IMarqueeClient
+       {
+               //static constructor
+               public static function IMarqueeClient$cinit()
+               {       //MethodID:454, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function jumpToURL(hug1:String):void;                                       //MethodID:455, dispID:0
+
+               function showComment():void;                                                //MethodID:456, dispID:0
+
+               function hideComment():void;                                                //MethodID:457, dispID:0
+
+               function readyParade(hug1:Array):void;                                      //MethodID:458, dispID:0
+
+               function startParade():void;                                                //MethodID:459, dispID:0
+
+               function endParade():void;                                                  //MethodID:460, dispID:0
+
+               function get userID():String;                                               //MethodID:461, dispID:0
+
+               function get category():String;                                             //MethodID:462, dispID:0
+
+               function get marqueeLayer():DisplayObjectContainer;                         //MethodID:463, dispID:0
+
+               function get videoLayer():DisplayObjectContainer;                           //MethodID:464, dispID:0
+
+               function get volume():Number;                                               //MethodID:465, dispID:0
+
+               function get isNicowariSkipEnabled():Boolean;                               //MethodID:466, dispID:0
+
+               function get videoID():String;                                              //MethodID:467, dispID:0
+
+               function get videoTitle():String;                                           //MethodID:468, dispID:0
+
+               function get videoTime():String;                                            //MethodID:469, dispID:0
+
+               function get videoCode():String;                                            //MethodID:470, dispID:0
+
+               function get nowTime():Number;                                              //MethodID:471, dispID:0
+
+               function get isChannel():Boolean;                                           //MethodID:472, dispID:0
+
+               function get segmentInfo():Object;                                          //MethodID:473, dispID:0
+
+               function get isVideoPlaying():Boolean;                                      //MethodID:474, dispID:0
+
+               //constructor
+               public function IMarqueeClient();                                           //MethodID:475, dispID:0
+       }
+}
+
+//■script029■
+
+package jp.nicovideo.marquee{
+
+       import jp.nicovideo.util.Functions
+
+       //■class(instance)_index:38
+       public interface INicoMarqueeClient implements IMarqueeClient
+       {
+               //static constructor
+               public static function INicoMarqueeClient$cinit()
+               {       //MethodID:477, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function get categoryGroup():String;                                        //MethodID:478, dispID:0
+
+               function get isOfficialAnime():Boolean;                                     //MethodID:479, dispID:0
+
+               function get isNoLoadAdsLiveBanner():Boolean;                               //MethodID:480, dispID:0
+
+               function get onCommentVisibleEnabledUpdated():Functions;                    //MethodID:481, dispID:0
+
+               function get onParadeReady():Functions;                                     //MethodID:482, dispID:0
+
+               //constructor
+               public function INicoMarqueeClient();                                       //MethodID:483, dispID:0
+       }
+}
+
+//■script030■
+
+package jp.nicovideo.util.events{
+
+       //■class(instance)_index:39
+       public interface EventSender
+       {
+               //static constructor
+               public static function EventSender$cinit()
+               {       //MethodID:485, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function get eventNames():Array;                                            //MethodID:486, dispID:0
+
+               //constructor
+               public function EventSender();                                              //MethodID:487, dispID:0
+       }
+}
+
+//■script031■
+
+package jp.nicovideo.marquee{
+
+       import flash.display.DisplayObjectContainer
+       import flash.display.MovieClip
+       import flash.display.Sprite
+       import flash.net.URLRequest
+       import flash.net.navigateToURL
+       import jp.nicovideo.marquee.events.MarqueeErrorEvent
+       import jp.nicovideo.marquee.events.MarqueeEvent
+       import jp.nicovideo.marquee.events.MarqueeFullEvent
+       import jp.nicovideo.marquee.models.MarqueeAspectRatio
+       import jp.nicovideo.marquee.models.info.IMarqueeInfo
+       import jp.nicovideo.nicoplayer.models.IPlayerConfig
+       import jp.nicovideo.nicoplayer.models.PlayerInfo
+       import jp.nicovideo.nicoplayer.models.PlayerVersion
+       import jp.nicovideo.nicoplayer.models.ScreenAspectRatio
+       import jp.nicovideo.nicoplayer.models.ScreenMode
+       import jp.nicovideo.nicoplayer.models.SystemMessage
+       import jp.nicovideo.nicoplayer.models.api.IInitializeInfo
+       import jp.nicovideo.nicoplayer.models.flashvars.NicoFlashVars
+       import jp.nicovideo.nicoplayer.models.video.IVideoController
+       import jp.nicovideo.nicoplayer.views.IVideoLayerManager
+       import jp.nicovideo.util.Functions
+       import jp.nicovideo.util.HTTPUtils
+       import jp.nicovideo.util.TimeUtils
+       import jp.nicovideo.util.events.EventResult
+       import jp.nicovideo.util.events.event_sender
+       import jp.nicovideo.util.loka.__MSG__
+
+       use namespace (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_sender);
+       use namespace (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver);
+
+       //■class(instance)_index:40
+       public class MarqueeClient extends Object
+                       implements INicoMarqueeClient, EventSender
+       {
+               //static constructor
+               public static function MarqueeClient$cinit()
+               {       //MethodID:489, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 11
+                       _OffFullScreenPriority = 10;
+               }
+
+               //static variables/etc.
+               private static const _OffFullScreenPriority:uint = 10;          //slotID:1
+
+               //constructor
+               public function MarqueeClient(hug1:String, hug2:PlayerVersion, hug3:PlayerInfo, hug4:MovieClip, hug5:IVideoLayerManager, hug6:IPlayerConfig, hug7:IInitializeInfo, hug8:Function)
+               {       //MethodID:491, LocalCount= 10 , MaxScope= 2, MaxStack= 4, CodeLength= 246
+                       internal var playerURL:String;                                  //slotID:1
+                       internal var playerVersion:PlayerVersion;                       //slotID:2
+                       internal var playerInfo:PlayerInfo;                             //slotID:3
+                       internal var marqueeLayer:MovieClip;                            //slotID:4
+                       internal var videoLayerManager:IVideoLayerManager;              //slotID:5
+                       internal var playerConfig:IPlayerConfig;                        //slotID:6
+                       internal var initializeInfo:IInitializeInfo;                    //slotID:7
+                       internal var callback:Function;                                 //slotID:8
+                       internal var params:Object;                                     //slotID:9
+
+                       playerURL = hug1;
+                       playerVersion = hug2;
+                       playerInfo = hug3;
+                       marqueeLayer = hug4;
+                       videoLayerManager = hug5;
+                       playerConfig = hug6;
+                       initializeInfo = hug7;
+                       callback = hug8;
+                       this.onMarqueeClientMarqueeStarted = new Functions();
+                       this.onMarqueeClientMarqueeEnded = new Functions();
+                       this.onMarqueeClientNicowariStarted = new Functions();
+                       this.onMarqueeClientNicowariEnded = new Functions();
+                       this._onCommentVisibleEnabledUpdated = new Functions();
+                       this._onParadeReady = new Functions();
+
+                       super();
+
+                       this._this = this;
+                       this._marqueeLayer = marqueeLayer;
+                       this._videoLayerManager = videoLayerManager;
+                       this._playerConfig = playerConfig;
+                       this._isNicowariSkip = this._playerConfig.isNicowariSkip;
+                       this._playerInfo = playerInfo;
+                       this._initializeInfo = initializeInfo;
+                       this._systemMessage = SystemMessage.instance;
+                       this._callback = callback;
+                       this._playerVersion = playerVersion;
+                       params = {t:playerVersion.marqueePlayer};
+
+                       this._systemMessage.informln(__MSG__("マーキーの初期化開始"));
+                       HTTPUtils.loadSWF(function(hug1:*):void{        //MethodID:490, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 204
+                               if(!hug1){
+                                       _systemMessage.informln(__MSG__("マーキーの取得に失敗"));
+
+                                       return;
+                               }
+
+                               _player = IMarqueePlayer(hug1);
+                               _setVolume = _player.setVolume;
+
+                               _player.addEventListener(MarqueeErrorEvent.ERROR, onErrorPlayer);
+                               _player.addEventListener(MarqueeEvent.COMPLETE_PLAYER, onCompletePlayer);
+                               _player.addEventListener(MarqueeEvent.STARTED_MARQUEE, onStartedMarquee);
+                               _player.addEventListener(MarqueeEvent.ENDED_MARQUEE, onEndedMarquee);
+                               _player.addEventListener(MarqueeEvent.CLICK_PLAY_BUTTON, onClickedPlayButton);
+                               _player.addEventListener(MarqueeFullEvent.PLAY_VIDEO, onClickedNicowariPlayButton);
+                               _player.addEventListener(MarqueeFullEvent.PAUSE_VIDEO, onClickedVideoPlayButton);
+                               _player.initialize(IMarqueeClient(_this));
+                               INicoMarqueePlayer(_player).setRecentPremiumUsers(initializeInfo.recentPremiumUsers);
+
+                               if(_isLoadLater) load();
+                       }, playerURL, params);
+               }
+
+               //variables/etc.
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_sender) const onMarqueeClientMarqueeStarted:Functions;//slotID:0
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_sender) const onMarqueeClientMarqueeEnded:Functions;//slotID:0
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_sender) const onMarqueeClientNicowariStarted:Functions;//slotID:0
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_sender) const onMarqueeClientNicowariEnded:Functions;//slotID:0
+               private var _this:IMarqueeClient;                               //slotID:0
+               private var _player:IMarqueePlayer;                             //slotID:0
+               private var _systemMessage:SystemMessage;                       //slotID:0
+               private var _setVolume:Function;                                //slotID:0
+               private var _marqueeLayer:Sprite;                               //slotID:0
+               private var _videoLayer:Sprite;                                 //slotID:0
+               private var _playerConfig:IPlayerConfig;                        //slotID:0
+               private var _videoLayerManager:IVideoLayerManager;              //slotID:0
+               private var _videoController:IVideoController;                  //slotID:0
+               private var _vars:NicoFlashVars;                                //slotID:0
+               private var _initializeInfo:IInitializeInfo;                    //slotID:0
+               private var _videoPlayed:Boolean;                               //slotID:0
+               private var _isNicowariSkip:Boolean;                            //slotID:0
+               private var _onceSetupTimeUtils:Boolean = false;                //slotID:0
+               private var _completePlayer:Boolean = false;                    //slotID:0
+               private const _onCommentVisibleEnabledUpdated:Functions;        //slotID:0
+               private const _onParadeReady:Functions;                         //slotID:0
+               private var _callback:Function;                                 //slotID:0
+               private var _playerVersion:PlayerVersion;                       //slotID:0
+               private var _playerInfo:PlayerInfo;                             //slotID:0
+               private var _isLoadLater:Boolean = false;                       //slotID:0
+               private var _isLarqueeLoaded:Boolean = false;                   //slotID:0
+
+               public function load():void
+               {       //MethodID:492, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 88
+                       if(!this._player && !this._isLoadLater){
+                               this._isLoadLater = true;
+                               return;
+                       }
+
+                       if(this._isLarqueeLoaded) return;
+
+                       this._isLarqueeLoaded = true;
+
+                       if(!this._vars.watchFlashVars.isNoGetMarquee) this._player.load(this._playerVersion.larquee);
+
+                       if(this._callback is Function) this._callback();
+               }
+
+               public function get eventNames():Array
+               {       //MethodID:493, LocalCount= 1 , MaxScope= 1, MaxStack= 4, CodeLength= 17
+                       return ["onMarqueeClientMarqueeStarted", "onMarqueeClientMarqueeEnded", "onMarqueeClientNicowariStarted", "onMarqueeClientNicowariEnded"];
+               }
+
+               public function get marqueePlayer():IMarqueePlayer
+               {       //MethodID:494, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._player;
+               }
+
+               private function onStartedMarquee(hug1:MarqueeEvent):void
+               {       //MethodID:495, LocalCount= 3 , MaxScope= 1, MaxStack= 3, CodeLength= 174
+                       var hug2:IMarqueeInfo = (hug1.origin as IMarqueeInfo);
+
+                       if(!hug2) return;
+
+                       if((hug2.enabled && !this.isNicowariSkipEnabled) && ((hug2.priority >= _OffFullScreenPriority) && (this._playerConfig.screenMode != ScreenMode.NORMAL))){
+                               this._playerConfig.screenMode = ScreenMode.NORMAL;
+
+                               SystemMessage.instance.inform(__MSG__("ニコ割を再生"), false);
+                       }
+
+                       if(hug2.enabled && hug2.pauseVideo) onMarqueeClientNicowariStarted.apply(hug2);
+                       onMarqueeClientMarqueeStarted.apply(hug2);
+               }
+
+               private function onEndedMarquee(hug1:MarqueeEvent):void
+               {       //MethodID:496, LocalCount= 3 , MaxScope= 1, MaxStack= 2, CodeLength= 106
+                       var hug2:IMarqueeInfo = (hug1.origin as IMarqueeInfo);
+
+                       if(!hug2) return;
+
+                       if(this._videoLayer){
+                               this._videoLayerManager.deleteMarqueeVideoLayer();
+
+                               this._videoLayer = null;
+                       }
+
+                       if(hug2.enabled && hug2.pauseVideo) onMarqueeClientNicowariEnded.apply(hug2);
+                       onMarqueeClientMarqueeEnded.apply(hug2);
+               }
+
+               private function onClickedPlayButton(hug1:MarqueeEvent):void
+               {       //MethodID:497, LocalCount= 3 , MaxScope= 1, MaxStack= 2, CodeLength= 42
+                       var hug2:IMarqueeInfo = (hug1.origin as IMarqueeInfo);
+
+                       if(!hug2) return;
+                       onMarqueeClientNicowariStarted.apply(hug2);
+               }
+
+               private function onClickedNicowariPlayButton(hug1:MarqueeEvent):void
+               {       //MethodID:498, LocalCount= 3 , MaxScope= 1, MaxStack= 2, CodeLength= 115
+                       var hug2:IMarqueeInfo = (hug1.origin as IMarqueeInfo);
+
+                       if(!hug2) return;
+
+                       if((hug2.enabled && !this.isNicowariSkipEnabled) && ((hug2.priority >= _OffFullScreenPriority) && (this._playerConfig.screenMode != ScreenMode.NORMAL))) this._playerConfig.screenMode = ScreenMode.NORMAL;
+                       this.hideComment();
+                       onMarqueeClientNicowariStarted.apply(hug2);
+               }
+
+               private function onClickedVideoPlayButton(hug1:MarqueeEvent):void
+               {       //MethodID:499, LocalCount= 3 , MaxScope= 1, MaxStack= 2, CodeLength= 47
+                       var hug2:IMarqueeInfo = (hug1.origin as IMarqueeInfo);
+
+                       if(!hug2) return;
+                       this.showComment();
+                       onMarqueeClientNicowariEnded.apply(hug2);
+               }
+
+               private function onCompletePlayer(hug1:MarqueeEvent):void
+               {       //MethodID:500, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 21
+                       this._completePlayer = true;
+
+                       if(this._onceSetupTimeUtils) this.startPlayer();
+               }
+
+               private function startPlayer():void
+               {       //MethodID:501, LocalCount= 2 , MaxScope= 1, MaxStack= 3, CodeLength= 102
+                       this._player.start();
+
+                       var hug1:uint = ((this._playerConfig.aspectRatio == ScreenAspectRatio.NORMAL) ? MarqueeAspectRatio.NORMAL : MarqueeAspectRatio.WIDE);
+
+                       INicoMarqueePlayer(this._player).updateAspect(hug1);
+                       INicoMarqueePlayer(this._player).updateNicowariSkip(this._isNicowariSkip);
+
+                       if(this._playerConfig.isMute) this._setVolume.call(null, 0.0);
+               }
+
+               private function onErrorPlayer(hug1:MarqueeErrorEvent):void
+               {       //MethodID:502, LocalCount= 2 , MaxScope= 1, MaxStack= 3, CodeLength= 129
+                       if((hug1.errorId == MarqueeErrorEvent.INITIALIZE_DOWNLOAD_ERROR) || (hug1.errorId == MarqueeErrorEvent.INITIALIZE_XML_FAIL)){
+                               this._player = null;
+                               this._completePlayer = false;
+
+                               this._systemMessage.informln(__MSG__("マーキーの初期化に失敗"));
+                       }else if((hug1.errorId == MarqueeErrorEvent.SENDED_FAIL) || (hug1.errorId == MarqueeErrorEvent.SENDED_ERROR) || (hug1.errorId == MarqueeErrorEvent.SENDED_NOAUTH)){
+                               this._systemMessage.informln(__MSG__("ゲームまたはアンケートの情報の送信に失敗"));
+                       }
+               }
+
+               public function get userID():String
+               {       //MethodID:503, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 10
+                       return this._initializeInfo.userID;
+               }
+
+               public function get category():String
+               {       //MethodID:504, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 10
+                       return this._vars.category;
+               }
+
+               public function get categoryGroup():String
+               {       //MethodID:505, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 10
+                       return this._vars.categoryGroup;
+               }
+
+               public function get isNoLoadAdsLiveBanner():Boolean
+               {       //MethodID:506, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 10
+                       return this._playerInfo.isNoLoadAdsLiveBanner;
+               }
+
+               public function get onCommentVisibleEnabledUpdated():Functions
+               {       //MethodID:507, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._onCommentVisibleEnabledUpdated;
+               }
+
+               public function get onParadeReady():Functions
+               {       //MethodID:508, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._onParadeReady;
+               }
+
+               public function get marqueeLayer():DisplayObjectContainer
+               {       //MethodID:509, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._marqueeLayer;
+               }
+
+               public function get videoLayer():DisplayObjectContainer
+               {       //MethodID:510, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 27
+                       if(!this._videoLayer) this._videoLayer = this._videoLayerManager.createMarqueeVideoLayer();
+
+                       return this._videoLayer;
+               }
+
+               public function get volume():Number
+               {       //MethodID:511, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 29
+                       return (this._playerConfig.isMute ? 0 : this._playerConfig.volume);
+               }
+
+               public function jumpToURL(hug1:String):void
+               {       //MethodID:512, LocalCount= 2 , MaxScope= 1, MaxStack= 3, CodeLength= 27
+                       this._videoController.stop();
+                       navigateToURL(new URLRequest(hug1), "_blank");
+               }
+
+               public function get isNicowariSkipEnabled():Boolean
+               {       //MethodID:513, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 38
+                       if(this._vars.watchFlashVars.forceNicowariOff) return true;
+
+                       return (this._isNicowariSkip && this._initializeInfo.isPremium);
+               }
+
+               public function showComment():void
+               {       //MethodID:514, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 12
+                       this.onCommentVisibleEnabledUpdated.apply(true);
+               }
+
+               public function hideComment():void
+               {       //MethodID:515, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 12
+                       this.onCommentVisibleEnabledUpdated.apply(false);
+               }
+
+               public function readyParade(hug1:Array):void
+               {       //MethodID:516, LocalCount= 2 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               public function startParade():void
+               {       //MethodID:517, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               public function endParade():void
+               {       //MethodID:518, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               public function get videoID():String
+               {       //MethodID:519, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 13
+                       return this._vars.watchFlashVars.watchVideoID;
+               }
+
+               public function get videoTitle():String
+               {       //MethodID:520, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 10
+                       return this._vars.videoTitle;
+               }
+
+               public function get videoTime():String
+               {       //MethodID:521, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 13
+                       return this._vars.watchFlashVars.gameTime;
+               }
+
+               public function get videoCode():String
+               {       //MethodID:522, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 13
+                       return this._vars.watchFlashVars.gameKey;
+               }
+
+               public function get nowTime():Number
+               {       //MethodID:523, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 9
+                       return TimeUtils.time;
+               }
+
+               public function get isChannel():Boolean
+               {       //MethodID:524, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 10
+                       return this._vars.isChannel;
+               }
+
+               public function get segmentInfo():Object
+               {       //MethodID:525, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 121
+                       var hug1:Object = {};
+
+                       if(this._vars.watchFlashVars.userSex != null) hug1.userSex = this._vars.watchFlashVars.userSex;
+
+                       if(this._vars.watchFlashVars.userAge != null) hug1.userAge = this._vars.watchFlashVars.userAge;
+
+                       if(this._vars.watchFlashVars.userPrefecture != null) hug1.userPrefecture = this._vars.watchFlashVars.userPrefecture;
+
+                       hug1.memberType = (this._initializeInfo.isPremium ? 1 : 0);
+                       return hug1;
+               }
+
+               public function get isVideoPlaying():Boolean
+               {       //MethodID:526, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 10
+                       return this._videoController.isPlaying;
+               }
+
+               public function set videoController(hug1:IVideoController):void
+               {       //MethodID:527, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._videoController = hug1;
+               }
+
+               public function set flashVars(hug1:NicoFlashVars):void
+               {       //MethodID:528, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 8
+                       this._vars = hug1;
+               }
+
+               public function get isOfficialAnime():Boolean
+               {       //MethodID:529, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 13
+                       return this._vars.watchFlashVars.isOfficialAnime;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onPlayerConfigIsMuteUpdated(hug1:Boolean):EventResult
+               {       //MethodID:530, LocalCount= 2 , MaxScope= 1, MaxStack= 3, CodeLength= 77
+                       if(!this._player) return EventResult.THROUGH;
+
+                       if(!Boolean(this._setVolume)) return EventResult.THROUGH;
+
+                       if(hug1){
+                               this._setVolume.call(null, 0.0);
+                       }else{
+                               this._setVolume.call(null, this._playerConfig.volume);
+                       }
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onPlayerConfigVolumeUpdated(hug1:Number):EventResult
+               {       //MethodID:531, LocalCount= 2 , MaxScope= 1, MaxStack= 3, CodeLength= 51
+                       if(!this._player) return EventResult.THROUGH;
+
+                       if(!Boolean(this._setVolume)) return EventResult.THROUGH;
+                       this._setVolume.call(null, hug1);
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onPlayerConfigIsNicowariSkipUpdated(hug1:Boolean):EventResult
+               {       //MethodID:532, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 41
+                       if(!this._player) return EventResult.THROUGH;
+
+                       this._isNicowariSkip = hug1;
+
+                       INicoMarqueePlayer(this._player).updateNicowariSkip(hug1);
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onServerTimeUpdated():EventResult
+               {       //MethodID:533, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 34
+                       if(!this._onceSetupTimeUtils){
+                               this._onceSetupTimeUtils = true;
+
+                               if(this._completePlayer) this.startPlayer();
+                       }
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onFeedListUpdated(hug1:XML):EventResult
+               {       //MethodID:534, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 36
+                       if(!this._player) return EventResult.THROUGH;
+                       INicoMarqueePlayer(this._player).updateFeedList(hug1);
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onPlayerConfigAspectRatioUpdate(hug1:uint):EventResult
+               {       //MethodID:535, LocalCount= 3 , MaxScope= 1, MaxStack= 2, CodeLength= 68
+                       if(!this._player) return EventResult.THROUGH;
+
+                       var hug2:uint = ((hug1 == ScreenAspectRatio.NORMAL) ? MarqueeAspectRatio.NORMAL : MarqueeAspectRatio.WIDE);
+
+                       INicoMarqueePlayer(this._player).updateAspect(hug2);
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onPlayerConfigScreenModeUpdated(hug1:uint):EventResult
+               {       //MethodID:536, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 36
+                       if(!this._player) return EventResult.THROUGH;
+                       INicoMarqueePlayer(this._player).updateScreenMode(hug1);
+
+                       return EventResult.THROUGH;
+               }
+       }
+}
+
+//■script032■
+
+package jp.nicovideo.nicoplayer.hiroba.events{
+
+       //■class(instance)_index:41
+       public class HirobaErrorStatus extends Object
+       {
+               //static constructor
+               public static function HirobaErrorStatus$cinit()
+               {       //MethodID:538, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 21
+                       HIROBA_INFO_NOT_FOUND = "hirobaInfoNotFound";
+                       HIROBA_CONNECTOR_NOT_FOUND = "hirobaConnectorNotFound";
+               }
+
+               //static variables/etc.
+               public static const HIROBA_INFO_NOT_FOUND:String = "hirobaInfoNotFound";//slotID:1
+               public static const HIROBA_CONNECTOR_NOT_FOUND:String = "hirobaConnectorNotFound";//slotID:2
+
+               //constructor
+               public function HirobaErrorStatus()
+               {       //MethodID:539, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+                       super();
+               }
+       }
+}
+
+//■script033■
+
+package jp.nicovideo.nicoplayer.models{
+
+       //■class(instance)_index:42
+       public class ScreenAspectRatio extends Object
+       {
+               //static constructor
+               public static function ScreenAspectRatio$cinit()
+               {       //MethodID:541, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 19
+                       NORMAL = 0;
+                       WIDE = 1;
+               }
+
+               //static variables/etc.
+               public static const NORMAL:uint = 0;                            //slotID:1
+               public static const WIDE:uint = 1;                              //slotID:2
+
+               //constructor
+               public function ScreenAspectRatio()
+               {       //MethodID:542, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 6
+                       super();
+               }
+       }
+}
+
+//■script034■
+
+package jp.nicovideo.nicoplayer.remocon{
+
+       import flash.events.Event
+       import jp.nicovideo.marquee.models.info.IMarqueeInfo
+       import jp.nicovideo.nicoplayer.models.comment.CommentRouter
+       import jp.nicovideo.nicoplayer.storages.CommentPostResultStatus
+       import jp.nicovideo.util.events.EventResult
+
+       use namespace (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver);
+
+       //■class(instance)_index:43
+       public class RemoconPlayerStateObserver extends Object
+       {
+               //static constructor
+               public static function RemoconPlayerStateObserver$cinit()
+               {       //MethodID:544, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               //constructor
+               public function RemoconPlayerStateObserver(hug1:Function, hug2:IRemoconEventNotifier, hug3:IRemoconFullScreenKeeper)
+               {       //MethodID:546, LocalCount= 5 , MaxScope= 2, MaxStack= 3, CodeLength= 87
+                       internal var updateRemoconState:Function;                       //slotID:1
+                       internal var notifier:IRemoconEventNotifier;                    //slotID:2
+                       internal var fullScreenKeeper:IRemoconFullScreenKeeper;         //slotID:3
+                       internal var remoconState:RemoconState;                         //slotID:4
+
+                       remoconState = null;
+                       updateRemoconState = hug1;
+                       notifier = hug2;
+                       fullScreenKeeper = hug3;
+
+                       super();
+
+                       this._updateRemoconState = updateRemoconState;
+                       this._notifier = notifier;
+                       this._fullScreenKeeper = fullScreenKeeper;
+                       remoconState = RemoconState.instance;
+
+                       remoconState.addEventListener(Event.CONNECT, function(hug1:Event, ...args):void{        //MethodID:545, LocalCount= 3 , MaxScope= 0, MaxStack= 3, CodeLength= 24
+                               remoconState.removeEventListener(Event.CONNECT, args.callee);
+                               _updateRemoconState();
+                       });
+               }
+
+               //variables/etc.
+               private var _updateRemoconState:Function;                       //slotID:0
+               private var _isHirobaMode:Boolean;                              //slotID:0
+               private var _isNicowariMode:Boolean;                            //slotID:0
+               private var _notifier:IRemoconEventNotifier;                    //slotID:0
+               private var _fullScreenKeeper:IRemoconFullScreenKeeper;         //slotID:0
+
+               private function _onChangedStatus():void
+               {       //MethodID:547, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 24
+                       if(RemoconState.instance.isConnecting) this._updateRemoconState.apply();
+               }
+
+               public function get isHirobaMode():Boolean
+               {       //MethodID:548, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isHirobaMode;
+               }
+
+               public function get isNicowariMode():Boolean
+               {       //MethodID:549, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._isNicowariMode;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onPlayerConfigIsMuteUpdated(hug1:Boolean):EventResult
+               {       //MethodID:550, LocalCount= 2 , MaxScope= 1, MaxStack= 1, CodeLength= 13
+                       this._onChangedStatus();
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onPlayerConfigIsLoopUpdated(hug1:Boolean):EventResult
+               {       //MethodID:551, LocalCount= 2 , MaxScope= 1, MaxStack= 1, CodeLength= 13
+                       this._onChangedStatus();
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onPlayerConfigVolumeUpdated(hug1:Number):EventResult
+               {       //MethodID:552, LocalCount= 2 , MaxScope= 1, MaxStack= 1, CodeLength= 13
+                       this._onChangedStatus();
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onPlayerConfigCommentVisibleUpdated(hug1:Boolean):EventResult
+               {       //MethodID:553, LocalCount= 2 , MaxScope= 1, MaxStack= 1, CodeLength= 13
+                       this._onChangedStatus();
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onPlayerConfigScreenModeUpdated(hug1:uint):EventResult
+               {       //MethodID:554, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 22
+                       this._onChangedStatus();
+                       this._fullScreenKeeper.screenModeUpdateListener(hug1);
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onVideoPlayed():EventResult
+               {       //MethodID:555, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 13
+                       this._onChangedStatus();
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onVideoStopped():EventResult
+               {       //MethodID:556, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 13
+                       this._onChangedStatus();
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onHirobaPlayerVisibleUpdated(hug1:Boolean):EventResult
+               {       //MethodID:557, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 13
+                       this._isHirobaMode = hug1;
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onMarqueeClientNicowariStarted(hug1:IMarqueeInfo):EventResult
+               {       //MethodID:558, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 13
+                       this._isNicowariMode = true;
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onMarqueeClientNicowariEnded(hug1:IMarqueeInfo):EventResult
+               {       //MethodID:559, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 13
+                       this._isNicowariMode = false;
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onCommentPostFinished(hug1:String, hug2:String, hug3:Number):EventResult
+               {       //MethodID:560, LocalCount= 5 , MaxScope= 1, MaxStack= 3, CodeLength= 47
+                       var hug4:Boolean = (hug2 == CommentPostResultStatus.SUCCESS);
+
+                       this._notifier.receiveCommentPostResult(hug4, (hug4 ? null : RemoconPostCommentErrorStatus.OTHER));
+
+                       return EventResult.THROUGH;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onVideoSeeked(hug1:Number):EventResult
+               {       //MethodID:561, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 17
+                       this._notifier.receiveVideoSeekResult(hug1);
+
+                       return EventResult.THROUGH;
+               }
+
+               public function onCommentRouterPostError(hug1:String):void
+               {       //MethodID:562, LocalCount= 2 , MaxScope= 1, MaxStack= 4, CodeLength= 42
+                       this._notifier.receiveCommentPostResult(false, ((hug1 == CommentRouter.ERROR_POST_SAME_COMMENT) ? RemoconPostCommentErrorStatus.SAME_MESSAGE : RemoconPostCommentErrorStatus.OTHER));
+               }
+       }
+}
+
+//■script035■
+
+package jp.nicovideo.nicoplayer.config{
+
+
+       public function getDebugMode():uint
+       {       //dispID:1, MethodID:564, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 9
+               return DebugMode.NON;
+       }
+
+}
+
+//■script036■
+
+package jp.nicovideo.nicoplayer.models.api{
+
+       //■class(instance)_index:44
+       public interface IRegisterBGM
+       {
+               //static constructor
+               public static function IRegisterBGM$cinit()
+               {       //MethodID:566, LocalCount= 1 , MaxScope= 0, MaxStack= 0, CodeLength= 1
+               }
+
+               //variables/etc.
+               function registerBGMVideoIDs(hug1:Function, hug2:String, hug3:Array):void;  //MethodID:567, dispID:0
+
+               function registerCMVideoIDs(hug1:Function, hug2:String, hug3:Array):void;   //MethodID:568, dispID:0
+
+               //constructor
+               public function IRegisterBGM();                                             //MethodID:569, dispID:0
+       }
+}
+
+//■script037■
+
+package jp.nicovideo.nicoplayer.models.api{
+
+       import jp.nicovideo.nicoplayer.config.NicoConfig
+       import jp.nicovideo.util.HTTPUtils
+
+       //■class(instance)_index:45
+       public class RegisterBGM extends Object implements IRegisterBGM
+       {
+               //static constructor
+               public static function RegisterBGM$cinit()
+               {       //MethodID:571, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               //constructor
+               public function RegisterBGM(hug1:NicoConfig)
+               {       //MethodID:572, LocalCount= 2 , MaxScope= 1, MaxStack= 2, CodeLength= 11
+                       super();
+
+                       this.__cfg = hug1;
+               }
+
+               //variables/etc.
+               private var __cfg:NicoConfig;                                   //slotID:0
+
+               public function registerBGMVideoIDs(hug1:Function, hug2:String, hug3:Array):void
+               {       //MethodID:573, LocalCount= 4 , MaxScope= 1, MaxStack= 5, CodeLength= 14
+                       this.__callAPI(hug1, hug2, hug3, "bgm");
+               }
+
+               public function registerCMVideoIDs(hug1:Function, hug2:String, hug3:Array):void
+               {       //MethodID:574, LocalCount= 4 , MaxScope= 1, MaxStack= 5, CodeLength= 14
+                       this.__callAPI(hug1, hug2, hug3, "cm");
+               }
+
+               private function __callAPI(hug1:Function, hug2:String, hug3:Array, hug4:String):void
+               {       //MethodID:576, LocalCount= 6 , MaxScope= 2, MaxStack= 5, CodeLength= 112
+                       internal var f:Function;                                        //slotID:1
+                       internal var threadID:String;                                   //slotID:2
+                       internal var videoIDs:Array;                                    //slotID:3
+                       internal var type:String;                                       //slotID:4
+                       internal var param:Object;                                      //slotID:5
+
+                       f = hug1;
+                       threadID = hug2;
+                       videoIDs = hug3;
+                       type = hug4;
+                       param = {id:threadID, type:type};
+
+                       if(videoIDs && (videoIDs.length != 0)) param["bgm_id[]"] = videoIDs;
+                       HTTPUtils.loadXML(function(hug1:XML):void{      //MethodID:575, LocalCount= 2 , MaxScope= 0, MaxStack= 3, CodeLength= 56
+                               if(hug1 === null){
+                                       f(false, null);
+
+                                       return;
+                               }
+
+                               if(hug1.@status == "fail"){
+                                       f(false, hug1.error.code);
+
+                                       return;
+                               }
+
+                               f(true, null);
+                       }, this.__cfg.REGISTERBGM_API_URL, param);
+               }
+       }
+}
+
+//■script038■
+
+package jp.nicovideo.nicoplayer.models.comment{
+
+       import jp.nicovideo.util.Functions
+       import jp.nicovideo.util.events.EventResult
+       import jp.nicovideo.util.events.event_sender
+
+       use namespace (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_sender);
+       use namespace (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver);
+
+       //■class(instance)_index:46
+       public class CommentPoolContainer extends Object
+       {
+               //static constructor
+               public static function CommentPoolContainer$cinit()
+               {       //MethodID:578, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 3
+               }
+
+               //constructor
+               public function CommentPoolContainer()
+               {       //MethodID:579, LocalCount= 1 , MaxScope= 1, MaxStack= 2, CodeLength= 21
+                       this._list = {};
+                       this.onCommentPoolContainerUpdated = new Functions();
+
+                       super();
+               }
+
+               //variables/etc.
+               private var _list:Object;                                       //slotID:0
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_sender) const onCommentPoolContainerUpdated:Functions;//slotID:0
+
+               public function get lists():Object
+               {       //MethodID:580, LocalCount= 1 , MaxScope= 1, MaxStack= 1, CodeLength= 7
+                       return this._list;
+               }
+
+               (http://www.nicovideo.jp/as3_ns/nicoplayer/util.event.EventPipe.event_receiver) function onCommentListUpdated(hug1:Array, hug2:Array, hug3:Boolean, hug4:String):EventResult
+               {       //MethodID:581, LocalCount= 5 , MaxScope= 1, MaxStack= 7, CodeLength= 88
+                       if(!this._list.hasOwnProperty(hug4)) this._list[hug4] = [];
+
+                       this._list[hug4] = CommentListUtils.update(this._list[hug4], hug1, hug2, hug3);
+
+                       onCommentPoolContainerUpdated.apply(hug1, hug2, hug3, hug4);
+
+                       return EventResult.THROUGH;
+               }
+       }
+}
+
+//■script039■
+
+package jp.nicovideo.nicoplayer.models.flashvars{
+
+       i