if ( ! page . ushio ) {
throw new Error ( 'ushio::Ushio quitted!' ) ;
}
( function ( e , r , t ) { "use strict" ; if ( typeof window !== "undefined" && typeof define === "function" && define . amd ) { define ( t ) } else if ( typeof module !== "undefined" && module . exports ) { module . exports = t ( ) } else if ( r . exports ) { r . exports = t ( ) } else { r [ e ] = t ( ) } } ) ( "Fingerprint2" , this , function ( ) { "use strict" ; if ( typeof Array . isArray === "undefined" ) { Array . isArray = function ( e ) { return Object . prototype . toString . call ( e ) === "[object Array]" } } var d = function ( e , r ) { e = [ e [ 0 ] >>> 16 , e [ 0 ] & 65535 , e [ 1 ] >>> 16 , e [ 1 ] & 65535 ] ; r = [ r [ 0 ] >>> 16 , r [ 0 ] & 65535 , r [ 1 ] >>> 16 , r [ 1 ] & 65535 ] ; var t = [ 0 , 0 , 0 , 0 ] ; t [ 3 ] += e [ 3 ] + r [ 3 ] ; t [ 2 ] += t [ 3 ] >>> 16 ; t [ 3 ] &= 65535 ; t [ 2 ] += e [ 2 ] + r [ 2 ] ; t [ 1 ] += t [ 2 ] >>> 16 ; t [ 2 ] &= 65535 ; t [ 1 ] += e [ 1 ] + r [ 1 ] ; t [ 0 ] += t [ 1 ] >>> 16 ; t [ 1 ] &= 65535 ; t [ 0 ] += e [ 0 ] + r [ 0 ] ; t [ 0 ] &= 65535 ; return [ t [ 0 ] << 16 | t [ 1 ] , t [ 2 ] << 16 | t [ 3 ] ] } ; var f = function ( e , r ) { e = [ e [ 0 ] >>> 16 , e [ 0 ] & 65535 , e [ 1 ] >>> 16 , e [ 1 ] & 65535 ] ; r = [ r [ 0 ] >>> 16 , r [ 0 ] & 65535 , r [ 1 ] >>> 16 , r [ 1 ] & 65535 ] ; var t = [ 0 , 0 , 0 , 0 ] ; t [ 3 ] += e [ 3 ] * r [ 3 ] ; t [ 2 ] += t [ 3 ] >>> 16 ; t [ 3 ] &= 65535 ; t [ 2 ] += e [ 2 ] * r [ 3 ] ; t [ 1 ] += t [ 2 ] >>> 16 ; t [ 2 ] &= 65535 ; t [ 2 ] += e [ 3 ] * r [ 2 ] ; t [ 1 ] += t [ 2 ] >>> 16 ; t [ 2 ] &= 65535 ; t [ 1 ] += e [ 1 ] * r [ 3 ] ; t [ 0 ] += t [ 1 ] >>> 16 ; t [ 1 ] &= 65535 ; t [ 1 ] += e [ 2 ] * r [ 2 ] ; t [ 0 ] += t [ 1 ] >>> 16 ; t [ 1 ] &= 65535 ; t [ 1 ] += e [ 3 ] * r [ 1 ] ; t [ 0 ] += t [ 1 ] >>> 16 ; t [ 1 ] &= 65535 ; t [ 0 ] += e [ 0 ] * r [ 3 ] + e [ 1 ] * r [ 2 ] + e [ 2 ] * r [ 1 ] + e [ 3 ] * r [ 0 ] ; t [ 0 ] &= 65535 ; return [ t [ 0 ] << 16 | t [ 1 ] , t [ 2 ] << 16 | t [ 3 ] ] } ; var g = function ( e , r ) { r %= 64 ; if ( r === 32 ) { return [ e [ 1 ] , e [ 0 ] ] } else if ( r < 32 ) { return [ e [ 0 ] << r | e [ 1 ] >>> 32 - r , e [ 1 ] << r | e [ 0 ] >>> 32 - r ] } else { r -= 32 ; return [ e [ 1 ] << r | e [ 0 ] >>> 32 - r , e [ 0 ] << r | e [ 1 ] >>> 32 - r ] } } ; var v = function ( e , r ) { r %= 64 ; if ( r === 0 ) { return e } else if ( r < 32 ) { return [ e [ 0 ] << r | e [ 1 ] >>> 32 - r , e [ 1 ] << r ] } else { return [ e [ 1 ] << r - 32 , 0 ] } } ; var h = function ( e , r ) { return [ e [ 0 ] ^ r [ 0 ] , e [ 1 ] ^ r [ 1 ] ] } ; var m = function ( e ) { e = h ( e , [ 0 , e [ 0 ] >>> 1 ] ) ; e = f ( e , [ 4283543511 , 3981806797 ] ) ; e = h ( e , [ 0 , e [ 0 ] >>> 1 ] ) ; e = f ( e , [ 3301882366 , 444984403 ] ) ; e = h ( e , [ 0 , e [ 0 ] >>> 1 ] ) ; return e } ; var u = function ( e , r ) { e = e || "" ; r = r || 0 ; var t = e . length % 16 ; var a = e . length - t ; var n = [ 0 , r ] ; var i = [ 0 , r ] ; var o = [ 0 , 0 ] ; var u = [ 0 , 0 ] ; var s = [ 2277735313 , 289559509 ] ; var l = [ 1291169091 , 658871167 ] ; for ( var c = 0 ; c < a ; c = c + 16 ) { o = [ e . charCodeAt ( c + 4 ) & 255 | ( e . charCodeAt ( c + 5 ) & 255 ) << 8 | ( e . charCodeAt ( c + 6 ) & 255 ) << 16 | ( e . charCodeAt ( c + 7 ) & 255 ) << 24 , e . charCodeAt ( c ) & 255 | ( e . charCodeAt ( c + 1 ) & 255 ) << 8 | ( e . charCodeAt ( c + 2 ) & 255 ) << 16 | ( e . charCodeAt ( c + 3 ) & 255 ) << 24 ] ; u = [ e . charCodeAt ( c + 12 ) & 255 | ( e . charCodeAt ( c + 13 ) & 255 ) << 8 | ( e . charCodeAt ( c + 14 ) & 255 ) << 16 | ( e . charCodeAt ( c + 15 ) & 255 ) << 24 , e . charCodeAt ( c + 8 ) & 255 | ( e . charCodeAt ( c + 9 ) & 255 ) << 8 | ( e . charCodeAt ( c + 10 ) & 255 ) << 16 | ( e . charCodeAt ( c + 11 ) & 255 ) << 24 ] ; o = f ( o , s ) ; o = g ( o , 31 ) ; o = f ( o , l ) ; n = h ( n , o ) ; n = g ( n , 27 ) ; n = d ( n , i ) ; n = d ( f ( n , [ 0 , 5 ] ) , [ 0 , 1390208809 ] ) ; u = f ( u , l ) ; u = g ( u , 33 ) ; u = f ( u , s ) ; i = h ( i , u ) ; i = g ( i , 31 ) ; i = d ( i , n ) ; i = d ( f ( i , [ 0 , 5 ] ) , [ 0 , 944331445 ] ) } o = [ 0 , 0 ] ; u = [ 0 , 0 ] ; switch ( t ) { case 15 : u = h ( u , v ( [ 0 , e . charCodeAt ( c + 14 ) ] , 48 ) ) ; case 14 : u = h ( u , v ( [ 0 , e . charCodeAt ( c + 13 ) ] , 40 ) ) ; case 13 : u = h ( u , v ( [ 0 , e . charCodeAt ( c + 12 ) ] , 32 ) ) ; case 12 : u = h ( u , v ( [ 0 , e . charCodeAt ( c + 11 ) ] , 24 ) ) ; case 11 : u = h ( u , v ( [ 0 , e . charCodeAt ( c + 10 ) ] , 16 ) ) ; case 10 : u = h ( u , v ( [ 0 , e . charCodeAt ( c + 9 ) ] , 8 ) ) ; case 9 : u = h ( u , [ 0 , e . charCodeAt ( c + 8 ) ] ) ; u = f ( u , l ) ; u = g ( u , 33 ) ; u = f ( u , s ) ; i = h ( i , u ) ; case 8 : o = h ( o , v ( [ 0 , e . charCodeAt ( c + 7 ) ] , 56 ) ) ; case 7 : o = h ( o , v ( [ 0 , e . charCodeAt ( c + 6 ) ] , 48 ) ) ; case 6 : o = h ( o , v ( [ 0 , e . charCodeAt ( c + 5 ) ] , 40 ) ) ; case 5 : o = h ( o , v ( [ 0 , e . charCodeAt ( c + 4 ) ] , 32 ) ) ; case 4 : o = h ( o , v ( [ 0 , e . charCodeAt ( c + 3 ) ] , 24 ) ) ; case 3 : o = h ( o , v ( [ 0 , e . charCodeAt ( c + 2 ) ] , 16 ) ) ; case 2 : o = h ( o , v ( [ 0 , e . charCodeAt ( c + 1 ) ] , 8 ) ) ; case 1 : o = h ( o , [ 0 , e . charCodeAt ( c ) ] ) ; o = f ( o , s ) ; o = g ( o , 31 ) ; o = f ( o , l ) ; n = h ( n , o ) } n = h ( n , [ 0 , e . length ] ) ; i = h ( i , [ 0 , e . length ] ) ; n = d ( n , i ) ; i = d ( i , n ) ; n = m ( n ) ; i = m ( i ) ; n = d ( n , i ) ; i = d ( i , n ) ; return ( "00000000" + ( n [ 0 ] >>> 0 ) . toString ( 16 ) ) . slice ( - 8 ) + ( "00000000" + ( n [ 1 ] >>> 0 ) . toString ( 16 ) ) . slice ( - 8 ) + ( "00000000" + ( i [ 0 ] >>> 0 ) . toString ( 16 ) ) . slice ( - 8 ) + ( "00000000" + ( i [ 1 ] >>> 0 ) . toString ( 16 ) ) . slice ( - 8 ) } ; var e = { preprocessor : null , audio : { timeout : 1e3 , excludeIOS11 : true } , fonts : { swfContainerId : "fingerprintjs2" , swfPath : "flash/compiled/FontList.swf" , userDefinedFonts : [ ] , extendedJsFonts : false } , screen : { detectScreenOrientation : true } , plugins : { sortPluginsFor : [ /palemoon/i ] , excludeIE : false } , extraComponents : [ ] , excludes : { enumerateDevices : true , pixelRatio : true , doNotTrack : true , fontsFlash : true } , NOT _AVAILABLE : "not available" , ERROR : "error" , EXCLUDED : "excluded" } ; var p = function ( e , r ) { if ( Array . prototype . forEach && e . forEach === Array . prototype . forEach ) { e . forEach ( r ) } else if ( e . length === + e . leng
//# sourceMappingURL=dist/fp.min.js.map
try {
/* reconnecting-websocket@joewalnes v1.0.0 */
! function ( a , b ) { "function" == typeof define && define . amd ? define ( [ ] , b ) : "undefined" != typeof module && module . exports ? module . exports = b ( ) : a . ReconnectingWebSocket = b ( ) } ( this , function ( ) { function a ( b , c , d ) { function l ( a , b ) { var c = document . createEvent ( "CustomEvent" ) ; return c . initCustomEvent ( a , ! 1 , ! 1 , b ) , c } var e = { debug : ! 1 , automaticOpen : ! 0 , reconnectInterval : 1e3 , maxReconnectInterval : 3e4 , reconnectDecay : 1.5 , timeoutInterval : 2e3 } ; d || ( d = { } ) ; for ( var f in e ) this [ f ] = "undefined" != typeof d [ f ] ? d [ f ] : e [ f ] ; this . url = b , this . reconnectAttempts = 0 , this . readyState = WebSocket . CONNECTING , this . protocol = null ; var h , g = this , i = ! 1 , j = ! 1 , k = document . createElement ( "div" ) ; k . addEventListener ( "open" , function ( a ) { g . onopen ( a ) } ) , k . addEventListener ( "close" , function ( a ) { g . onclose ( a ) } ) , k . addEventListener ( "connecting" , function ( a ) { g . onconnecting ( a ) } ) , k . addEventListener ( "message" , function ( a ) { g . onmessage ( a ) } ) , k . addEventListener ( "error" , function ( a ) { g . onerror ( a ) } ) , this . addEventListener = k . addEventListener . bind ( k ) , this . removeEventListener = k . removeEventListener . bind ( k ) , this . dispatchEvent = k . dispatchEvent . bind ( k ) , this . open = function ( b ) { h = new WebSocket ( g . url , c || [ ] ) , b || k . dispatchEvent ( l ( "connecting" ) ) , ( g . debug || a . debugAll ) && console . debug ( "ReconnectingWebSocket" , "attempt-connect" , g . url ) ; var d = h , e = setTimeout ( function ( ) { ( g . debug || a . debugAll ) && console . debug ( "ReconnectingWebSocket" , "connection-timeout" , g . url ) , j = ! 0 , d . close ( ) , j = ! 1 } , g . timeoutInterval ) ; h . onopen = function ( ) { clearTimeout ( e ) , ( g . debug || a . debugAll ) && console . debug ( "ReconnectingWebSocket" , "onopen" , g . url ) , g . protocol = h . protocol , g . readyState = WebSocket . OPEN , g . reconnectAttempts = 0 ; var d = l ( "open" ) ; d . isReconnect = b , b = ! 1 , k . dispatchEvent ( d ) } , h . onclose = function ( c ) { if ( clearTimeout ( e ) , h = null , i ) g . readyState = WebSocket . CLOSED , k . dispatchEvent ( l ( "close" ) ) ; else { g . readyState = WebSocket . CONNECTING ; var d = l ( "connecting" ) ; d . code = c . code , d . reason = c . reason , d . wasClean = c . wasClean , k . dispatchEvent ( d ) , b || j || ( ( g . debug || a . debugAll ) && console . debug ( "ReconnectingWebSocket" , "onclose" , g . url ) , k . dispatchEvent ( l ( "close" ) ) ) ; var e = g . reconnectInterval * Math . pow ( g . reconnectDecay , g . reconnectAttempts ) ; setTimeout ( function ( ) { g . reconnectAttempts ++ , g . open ( ! 0 ) } , e > g . maxReconnectInterval ? g . maxReconnectInterval : e ) } } , h . onmessage = function ( b ) { ( g . debug || a . debugAll ) && console . debug ( "ReconnectingWebSocket" , "onmessage" , g . url , b . data ) ; var c = l ( "message" ) ; c . data = b . data , k . dispatchEvent ( c ) } , h . onerror = function ( b ) { ( g . debug || a . debugAll ) && console . debug ( "ReconnectingWebSocket" , "onerror" , g . url , b ) , k . dispatchEvent ( l ( "error" ) ) } } , 1 == this . automaticOpen && this . open ( ! 1 ) , this . send = function ( b ) { if ( h ) return ( g . debug || a . debugAll ) && console . debug ( "ReconnectingWebSocket" , "send" , g . url , b ) , h . send ( b ) ; throw "INVALID_STATE_ERR : Pausing to reconnect websocket" } , this . close = function ( a , b ) { "undefined" == typeof a && ( a = 1e3 ) , i = ! 0 , h && h . close ( a , b ) } , this . refresh = function ( ) { h && h . close ( ) } } return a . prototype . onopen = function ( ) { } , a . prototype . onclose = function ( ) { } , a . prototype . onconnecting = function ( ) { } , a . prototype . onmessage = function ( ) { } , a . prototype . onerror = function ( ) { } , a . debugAll = ! 1 , a . CONNECTING = WebSocket . CONNECTING , a . OPEN = WebSocket . OPEN , a . CLOSING = WebSocket . CLOSING , a . CLOSED = WebSocket . CLOSED , a } ) ;
} catch ( e ) { }
/* aplayer */
! function ( e , t ) { "object" == typeof exports && "object" == typeof module ? module . exports = t ( ) : "function" == typeof define && define . amd ? define ( "APlayer" , [ ] , t ) : "object" == typeof exports ? exports . APlayer = t ( ) : e . APlayer = t ( ) } ( window , function ( ) { return function ( e ) { var t = { } ; function n ( i ) { if ( t [ i ] ) return t [ i ] . exports ; var a = t [ i ] = { i : i , l : ! 1 , exports : { } } ; return e [ i ] . call ( a . exports , a , a . exports , n ) , a . l = ! 0 , a . exports } return n . m = e , n . c = t , n . d = function ( e , t , i ) { n . o ( e , t ) || Object . defineProperty ( e , t , { configurable : ! 1 , enumerable : ! 0 , get : i } ) } , n . r = function ( e ) { Object . defineProperty ( e , "__esModule" , { value : ! 0 } ) } , n . n = function ( e ) { var t = e && e . _ _esModule ? function ( ) { return e . default } : function ( ) { return e } ; return n . d ( t , "a" , t ) , t } , n . o = function ( e , t ) { return Object . prototype . hasOwnProperty . call ( e , t ) } , n . p = "/" , n ( n . s = 41 ) } ( [ function ( e , t , n ) { "use strict" ; Object . defineProperty ( t , "__esModule" , { value : ! 0 } ) ; var i = /mobile/i . test ( window . navigator . userAgent ) , a = { secondToTime : function ( e ) { var t = Math . floor ( e / 3600 ) , n = Math . floor ( ( e - 3600 * t ) / 60 ) , i = Math . floor ( e - 3600 * t - 60 * n ) ; return ( t > 0 ? [ t , n , i ] : [ n , i ] ) . map ( function ( e ) { return e < 10 ? "0" + e : "" + e } ) . join ( ":" ) } , getElementViewLeft : function ( e ) { var t = e . offsetLeft , n = e . offsetParent , i = document . body . scrollLeft + document . documentElement . scrollLeft ; if ( document . fullscreenElement || document . mozFullScreenElement || document . webkitFullscreenElement ) for ( ; null !== n && n !== e ; ) t += n . offsetLeft , n = n . offsetParent ; else for ( ; null !== n ; ) t += n . offsetLeft , n = n . offsetParent ; return t - i } , getElementViewTop : function ( e , t ) { for ( var n , i = e . offsetTop , a = e . offsetParent ; null !== a ; ) i += a . offsetTop , a = a . offsetParent ; return n = document . body . scrollTop + document . documentElement . scrollTop , t ? i : i - n } , isMobile : i , storage : { set : function ( e , t ) { localStorage . setItem ( e , t ) } , get : function ( e ) { return localStorage . getItem ( e ) } } , nameMap : { dragStart : i ? "touchstart" : "mousedown" , dragMove : i ? "touchmove" : "mousemove" , dragEnd : i ? "touchend" : "mouseup" } , randomOrder : function ( e ) { return function ( e ) { for ( var t = e . length - 1 ; t >= 0 ; t -- ) { var n = Math . floor ( Math . random ( ) * ( t + 1 ) ) , i = e [ n ] ; e [ n ] = e [ t ] , e [ t ] = i } return e } ( [ ] . concat ( function ( e ) { if ( Array . isArray ( e ) ) { for ( var t = 0 , n = Array ( e . length ) ; t < e . length ; t ++ ) n [ t ] = e [ t ] ; return n } return Array . from ( e ) } ( Array ( e ) ) ) . map ( function ( e , t ) { return t } ) ) } } ; t . default = a } , function ( e , t , n ) { var i = n ( 2 ) ; e . exports = function ( e ) { "use strict" ; e = e || { } ; var t = "" , n = i . $each , a = e . audio , r = ( e . $value , e . $index , i . $escape ) , o = e . theme , s = e . index ; return n ( a , function ( e , n ) { t += '\n<li>\n <span class="aplayer-list-cur" style="background-color: ' , t += r ( e . theme || o ) , t += ';"></span>\n <span class="aplayer-list-index">' , t += r ( n + s ) , t += '</span>\n <span class="aplayer-list-title">' , t += r ( e . name ) , t += '</span>\n <span class="aplayer-list-author">' , t += r ( e . artist ) , t += "</span>\n</li>\n" } ) , t } } , function ( e , t , n ) { "use strict" ; e . exports = n ( 15 ) } , function ( e , t , n ) { "use strict" ; Object . defineProperty ( t , "__esModule" , { value : ! 0 } ) ; var i = g ( n ( 33 ) ) , a = g ( n ( 32 ) ) , r = g ( n ( 31 ) ) , o = g ( n ( 30 ) ) , s = g ( n ( 29 ) ) , l = g ( n ( 28 ) ) , u = g ( n ( 27 ) ) , c = g ( n ( 26 ) ) , p = g ( n ( 25 ) ) , d = g ( n ( 24 ) ) , h = g ( n ( 23 ) ) , y = g ( n ( 22 ) ) , f = g ( n ( 21 ) ) , v = g ( n ( 20 ) ) , m = g ( n ( 19 ) ) ; function g ( e ) { return e && e . _ _esModule ? e : { default : e } } var w = { play : i . default , pause : a . default , volumeUp : r . default , volumeDown : o . default , volumeOff : s . default , orderRandom : l . default , orderList : u . default , menu : c . default , loopAll : p . default , loopOne : d . default , loopNone : h . default , loading : y . default , right : f . default , skip : v . default , lrc : m . default } ; t . default = w } , function ( e , t , n ) { "use strict" ; var i , a = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( e ) { return typeof e } : function ( e ) { return e && "function" == typeof Symbol && e . constructor === Symbol && e !== Symbol . prototype ? "symbol" : typeof e } ; i = function ( ) { return this } ( ) ; try { i = i || Function ( "return this" ) ( ) || ( 0 , eval ) ( "this" ) } catch ( e ) { "object" === ( "undefined" == typeof window ? "undefined" : a ( window ) ) && ( i = window ) } e . exports = i } , function ( e , t , n ) { "use strict" ; var i , a , r = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( e ) { return typeof e } : function ( e ) { return e && "function" == typeof Symbol && e . constructor === Symbol && e !== Symbol . prototype ? "symbol" : typeof e } ; void 0 === ( a = "function" == typeof ( i = function ( ) { if ( "object" === ( "undefined" == typeof window ? "undefined" : r ( window ) ) && void 0 !== document . querySelecto
//# sourceMappingURL=https://cdn.yimian.xyz/aplayer/APlayer.min.js.map
/* Tips @iziToast | v1.4.0 */
; if ( typeof block _tips == "undefined" ) { ! function ( t , e ) { "function" == typeof define && define . amd ? define ( [ ] , e ( t ) ) : "object" == typeof exports ? module . exports = e ( t ) : t . tipsObj = e ( t ) } ( "undefined" != typeof global ? global : window || this . window || this . global , function ( t ) { "use strict" ; var e = { } , n = "iziToast" , o = ( document . querySelector ( "body" ) , ! ! /Mobi/ . test ( navigator . userAgent ) ) , i = /Chrome/ . test ( navigator . userAgent ) && /Google Inc/ . test ( navigator . vendor ) , s = "undefined" != typeof InstallTrigger , a = "ontouchstart" in document . documentElement , r = [ "bottomRight" , "bottomLeft" , "bottomCenter" , "topRight" , "topLeft" , "topCenter" , "center" ] , l = { info : { color : "blue" , icon : "ico-info" } , success : { color : "green" , icon : "ico-success" } , warning : { color : "orange" , icon : "ico-warning" } , error : { color : "red" , icon : "ico-error" } , question : { color : "yellow" , icon : "ico-question" } } , d = 568 , c = { } ; e . children = { } ; var u = { id : null , "class" : "" , title : "" , titleColor : "" , titleSize : "" , titleLineHeight : "" , message : "" , messageColor : "" , messageSize : "" , messageLineHeight : "" , backgroundColor : "" , theme : "light" , color : "" , icon : "" , iconText : "" , iconColor : "" , iconUrl : null , image : "" , imageWidth : 50 , maxWidth : null , zindex : null , layout : 1 , balloon : ! 1 , close : ! 0 , closeOnEscape : ! 1 , closeOnClick : ! 1 , displayMode : 0 , position : "bottomRight" , target : "" , targetFirst : ! 0 , timeout : 5e3 , rtl : ! 1 , animateInside : ! 0 , drag : ! 0 , pauseOnHover : ! 0 , resetOnHover : ! 1 , progressBar : ! 0 , progressBarColor : "" , progressBarEasing : "linear" , overlay : ! 1 , overlayClose : ! 1 , overlayColor : "rgba(0, 0, 0, 0.6)" , transitionIn : "fadeInUp" , transitionOut : "fadeOut" , transitionInMobile : "fadeInUp" , transitionOutMobile : "fadeOutDown" , buttons : { } , inputs : { } , onOpening : function ( ) { } , onOpened : function ( ) { } , onClosing : function ( ) { } , onClosed : function ( ) { } } ; if ( "remove" in Element . prototype || ( Element . prototype . remove = function ( ) { this . parentNode && this . parentNode . removeChild ( this ) } ) , "function" != typeof window . CustomEvent ) { var p = function ( t , e ) { e = e || { bubbles : ! 1 , cancelable : ! 1 , detail : void 0 } ; var n = document . createEvent ( "CustomEvent" ) ; return n . initCustomEvent ( t , e . bubbles , e . cancelable , e . detail ) , n } ; p . prototype = window . Event . prototype , window . CustomEvent = p } var m = function ( t , e , n ) { if ( "[object Object]" === Object . prototype . toString . call ( t ) ) for ( var o in t ) Object . prototype . hasOwnProperty . call ( t , o ) && e . call ( n , t [ o ] , o , t ) ; else if ( t ) for ( var i = 0 , s = t . length ; s > i ; i ++ ) e . call ( n , t [ i ] , i , t ) } , g = function ( t , e ) { var n = { } ; return m ( t , function ( e , o ) { n [ o ] = t [ o ] } ) , m ( e , function ( t , o ) { n [ o ] = e [ o ] } ) , n } , f = function ( t ) { var e = document . createDocumentFragment ( ) , n = document . createElement ( "div" ) ; for ( n . innerHTML = t ; n . firstChild ; ) e . appendChild ( n . firstChild ) ; return e } , v = function ( t ) { var e = btoa ( encodeURIComponent ( t ) ) ; return e . replace ( /=/g , "" ) } , y = function ( t ) { return "#" == t . substring ( 0 , 1 ) || "rgb" == t . substring ( 0 , 3 ) || "hsl" == t . substring ( 0 , 3 ) } , h = function ( t ) { try { return btoa ( atob ( t ) ) == t } catch ( e ) { return ! 1 } } , b = function ( ) { return { move : function ( t , e , o , a ) { var r , l = . 3 , d = 180 ; 0 !== a && ( t . classList . add ( n + "-dragged" ) , t . style . transform = "translateX(" + a + "px)" , a > 0 ? ( r = ( d - a ) / d , l > r && e . hide ( g ( o , { transitionOut : "fadeOutRight" , transitionOutMobile : "fadeOutRight" } ) , t , "drag" ) ) : ( r = ( d + a ) / d , l > r && e . hide ( g ( o , { transitionOut : "fadeOutLeft" , transitionOutMobile : "fadeOutLeft" } ) , t , "drag" ) ) , t . style . opacity = r , l > r && ( ( i || s ) && ( t . style . left = a + "px" ) , t . parentNode . style . opacity = l , this . stopMoving ( t , null ) ) ) } , startMoving : function ( t , e , n , o ) { o = o || window . event ; var i = a ? o . touches [ 0 ] . clientX : o . clientX , s = t . style . transform . replace ( "px)" , "" ) ; s = s . replace ( "translateX(" , "" ) ; var r = i - s ; n . transitionIn && t . classList . remove ( n . transitionIn ) , n . transitionInMobile && t . classList . remove ( n . transitionInMobile ) , t . style . transition = "" , a ? document . ontouchmove = function ( o ) { o . preventDefault ( ) , o = o || window . event ; var i = o . touches [ 0 ] . clientX , s = i - r ; b . move ( t , e , n , s ) } : document . onmousemove = function ( o ) { o . preventDefault ( ) , o = o || window . event ; var i = o . clientX , s = i - r ; b . move ( t , e , n , s ) } } , stopMoving : function ( t , e ) { a ? document . ontouchmove = function ( ) { } : document . onmousemove = function ( ) { } , t . style . opacity = "" , t . style . transform = "" , t . classList . contains ( n + "-dragged" ) && ( t . classList . remove ( n + "-dragged" ) , t . style . transition = "transform 0.4s ease, opacity 0.4s ease" , setTimeout ( function ( ) { t . style . transition = "" } , 400 ) ) } } } ( ) ; return e . setSetting = function ( t , n , o ) {
/* jQuery md5 */
( function ( r ) { var v = function ( r , n ) { return r << n | r >>> 32 - n } ; var k = function ( r , n ) { var t , a , e , o , u ; e = r & 2147483648 ; o = n & 2147483648 ; t = r & 1073741824 ; a = n & 1073741824 ; u = ( r & 1073741823 ) + ( n & 1073741823 ) ; if ( t & a ) return u ^ 2147483648 ^ e ^ o ; if ( t | a ) { if ( u & 1073741824 ) return u ^ 3221225472 ^ e ^ o ; else return u ^ 1073741824 ^ e ^ o } else { return u ^ e ^ o } } ; var f = function ( r , n , t ) { return r & n | ~ r & t } ; var i = function ( r , n , t ) { return r & t | n & ~ t } ; var c = function ( r , n , t ) { return r ^ n ^ t } ; var C = function ( r , n , t ) { return n ^ ( r | ~ t ) } ; var q = function ( r , n , t , a , e , o , u ) { r = k ( r , k ( k ( f ( n , t , a ) , e ) , u ) ) ; return k ( v ( r , o ) , n ) } ; var z = function ( r , n , t , a , e , o , u ) { r = k ( r , k ( k ( i ( n , t , a ) , e ) , u ) ) ; return k ( v ( r , o ) , n ) } ; var B = function ( r , n , t , a , e , o , u ) { r = k ( r , k ( k ( c ( n , t , a ) , e ) , u ) ) ; return k ( v ( r , o ) , n ) } ; var D = function ( r , n , t , a , e , o , u ) { r = k ( r , k ( k ( C ( n , t , a ) , e ) , u ) ) ; return k ( v ( r , o ) , n ) } ; var E = function ( r ) { var n ; var t = r . length ; var a = t + 8 ; var e = ( a - a % 64 ) / 64 ; var o = ( e + 1 ) * 16 ; var u = Array ( o - 1 ) ; var v = 0 ; var f = 0 ; while ( f < t ) { n = ( f - f % 4 ) / 4 ; v = f % 4 * 8 ; u [ n ] = u [ n ] | r . charCodeAt ( f ) << v ; f ++ } n = ( f - f % 4 ) / 4 ; v = f % 4 * 8 ; u [ n ] = u [ n ] | 128 << v ; u [ o - 2 ] = t << 3 ; u [ o - 1 ] = t >>> 29 ; return u } ; var F = function ( r ) { var n = "" , t = "" , a , e ; for ( e = 0 ; e <= 3 ; e ++ ) { a = r >>> e * 8 & 255 ; t = "0" + a . toString ( 16 ) ; n = n + t . substr ( t . length - 2 , 2 ) } return n } ; var G = function ( r ) { r = r . replace ( /\x0d\x0a/g , "\n" ) ; var n = "" ; for ( var t = 0 ; t < r . length ; t ++ ) { var a = r . charCodeAt ( t ) ; if ( a < 128 ) { n += String . fromCharCode ( a ) } else if ( a > 127 && a < 2048 ) { n += String . fromCharCode ( a >> 6 | 192 ) ; n += String . fromCharCode ( a & 63 | 128 ) } else { n += String . fromCharCode ( a >> 12 | 224 ) ; n += String . fromCharCode ( a >> 6 & 63 | 128 ) ; n += String . fromCharCode ( a & 63 | 128 ) } } return n } ; r . extend ( { md5 : function ( r ) { var n = Array ( ) ; var t , a , e , o , u , v , f , i , c ; var C = 7 , h = 12 , g = 17 , d = 22 ; var l = 5 , m = 9 , s = 14 , S = 20 ; var A = 4 , x = 11 , y = 16 , w = 23 ; var b = 6 , j = 10 , p = 15 , L = 21 ; r = G ( r ) ; n = E ( r ) ; v = 1732584193 ; f = 4023233417 ; i = 2562383102 ; c = 271733878 ; for ( t = 0 ; t < n . length ; t += 16 ) { a = v ; e = f ; o = i ; u = c ; v = q ( v , f , i , c , n [ t + 0 ] , C , 3614090360 ) ; c = q ( c , v , f , i , n [ t + 1 ] , h , 3905402710 ) ; i = q ( i , c , v , f , n [ t + 2 ] , g , 606105819 ) ; f = q ( f , i , c , v , n [ t + 3 ] , d , 3250441966 ) ; v = q ( v , f , i , c , n [ t + 4 ] , C , 4118548399 ) ; c = q ( c , v , f , i , n [ t + 5 ] , h , 1200080426 ) ; i = q ( i , c , v , f , n [ t + 6 ] , g , 2821735955 ) ; f = q ( f , i , c , v , n [ t + 7 ] , d , 4249261313 ) ; v = q ( v , f , i , c , n [ t + 8 ] , C , 1770035416 ) ; c = q ( c , v , f , i , n [ t + 9 ] , h , 2336552879 ) ; i = q ( i , c , v , f , n [ t + 10 ] , g , 4294925233 ) ; f = q ( f , i , c , v , n [ t + 11 ] , d , 2304563134 ) ; v = q ( v , f , i , c , n [ t + 12 ] , C , 1804603682 ) ; c = q ( c , v , f , i , n [ t + 13 ] , h , 4254626195 ) ; i = q ( i , c , v , f , n [ t + 14 ] , g , 2792965006 ) ; f = q ( f , i , c , v , n [ t + 15 ] , d , 1236535329 ) ; v = z ( v , f , i , c , n [ t + 1 ] , l , 4129170786 ) ; c = z ( c , v , f , i , n [ t + 6 ] , m , 3225465664 ) ; i = z ( i , c , v , f , n [ t + 11 ] , s , 643717713 ) ; f = z ( f , i , c , v , n [ t + 0 ] , S , 3921069994 ) ; v = z ( v , f , i , c , n [ t + 5 ] , l , 3593408605 ) ; c = z ( c , v , f , i , n [ t + 10 ] , m , 38016083 ) ; i = z ( i , c , v , f , n [ t + 15 ] , s , 3634488961 ) ; f = z ( f , i , c , v , n [ t + 4 ] , S , 3889429448 ) ; v = z ( v , f , i , c , n [ t + 9 ] , l , 568446438 ) ; c = z ( c , v , f , i , n [ t + 14 ] , m , 3275163606 ) ; i = z ( i , c , v , f , n [ t + 3 ] , s , 4107603335 ) ; f = z ( f , i , c , v , n [ t + 8 ] , S , 1163531501 ) ; v = z ( v , f , i , c , n [ t + 13 ] , l , 2850285829 ) ; c = z ( c , v , f , i , n [ t + 2 ] , m , 4243563512 ) ; i = z ( i , c , v , f , n [ t + 7 ] , s , 1735328473 ) ; f = z ( f , i , c , v , n [ t + 12 ] , S , 2368359562 ) ; v = B ( v , f , i , c , n [ t + 5 ] , A , 4294588738 ) ; c = B ( c , v , f , i , n [ t + 8 ] , x , 2272392833 ) ; i = B ( i , c , v , f , n [ t + 11 ] , y , 1839030562 ) ; f = B ( f , i , c , v , n [ t + 14 ] , w , 4259657740 ) ; v = B ( v , f , i , c , n [ t + 1 ] , A , 2763975236 ) ; c = B ( c , v , f , i , n [ t + 4 ] , x , 1272893353 ) ; i = B ( i , c , v , f , n [ t + 7 ] , y , 4139469664 ) ; f = B ( f , i , c , v , n [ t + 10 ] , w , 3200236656 ) ; v = B ( v , f , i , c , n [ t + 13 ] , A , 681279174 ) ; c = B ( c , v , f , i , n [ t + 0 ] , x , 3936430074 ) ; i = B ( i , c , v , f , n [ t + 3 ] , y , 3572445317 ) ; f = B ( f , i , c , v , n [ t + 6 ] , w , 76029189 ) ; v = B ( v , f , i , c , n [ t + 9 ] , A , 3654602809 ) ; c = B ( c , v , f , i , n [ t + 12 ] , x , 3873151461 ) ; i = B ( i , c , v , f , n [ t + 15 ] , y , 530742520 ) ; f = B ( f , i , c , v , n [ t + 2 ] , w , 3299628645 ) ; v = D ( v , f , i , c , n [ t + 0 ] , b , 4096336452 ) ; c = D ( c , v , f , i , n [ t + 7 ] , j , 1126891415 ) ; i = D ( i , c , v , f , n [ t + 14 ] , p , 2878612391 ) ; f = D ( f , i , c , v , n [ t + 5 ] , L , 4237533241 ) ; v = D ( v , f , i , c , n [ t + 12 ] , b , 1700485571 ) ; c = D ( c , v , f , i , n [ t + 3 ] , j , 2399980690 ) ; i = D ( i , c , v , f , n [ t + 10 ] , p , 4293915773 ) ; f = D ( f , i , c , v , n [ t + 1 ] , L , 2240044497 ) ; v = D ( v , f , i , c , n [ t + 8 ] , b , 1873313359 ) ; c = D ( c , v , f , i , n [ t + 15 ] , j , 4264355552 ) ; i = D ( i , c , v , f , n [ t + 6 ] , p , 2734768916 ) ; f = D ( f , i , c , v , n [ t + 13 ] , L , 1309151649 ) ; v = D ( v , f , i , c , n [ t + 4 ] , b , 4149444226 ) ; c = D ( c , v , f , i , n [ t + 11 ] , j , 3174756917 ) ; i = D ( i , c , v , f , n [ t + 2 ] , p , 718787259 ) ; f = D ( f , i , c , v , n [ t + 9 ] , L , 3951481745 ) ; v = k ( v , a ) ; f = k ( f , e ) ; i = k ( i , o ) ; c = k ( c , u ) } var Q = F ( v ) + F ( f ) + F ( i ) + F ( c ) ; return Q . toLowerCase ( ) } } ) } ) ( jQuery ) ;
//# sourceMappingURL=C
/* jquery UI */
( function ( t , e ) { function i ( e , i ) { var n , o , a , r = e . nodeName . toLowerCase ( ) ; return "area" === r ? ( n = e . parentNode , o = n . name , e . href && o && "map" === n . nodeName . toLowerCase ( ) ? ( a = t ( "img[usemap=#" + o + "]" ) [ 0 ] , ! ! a && s ( a ) ) : ! 1 ) : ( /input|select|textarea|button|object/ . test ( r ) ? ! e . disabled : "a" === r ? e . href || i : i ) && s ( e ) } function s ( e ) { return t . expr . filters . visible ( e ) && ! t ( e ) . parents ( ) . addBack ( ) . filter ( function ( ) { return "hidden" === t . css ( this , "visibility" ) } ) . length } var n = 0 , o = /^ui-id-\d+$/ ; t . ui = t . ui || { } , t . extend ( t . ui , { version : "1.10.4" , keyCode : { BACKSPACE : 8 , COMMA : 188 , DELETE : 46 , DOWN : 40 , END : 35 , ENTER : 13 , ESCAPE : 27 , HOME : 36 , LEFT : 37 , NUMPAD _ADD : 107 , NUMPAD _DECIMAL : 110 , NUMPAD _DIVIDE : 111 , NUMPAD _ENTER : 108 , NUMPAD _MULTIPLY : 106 , NUMPAD _SUBTRACT : 109 , PAGE _DOWN : 34 , PAGE _UP : 33 , PERIOD : 190 , RIGHT : 39 , SPACE : 32 , TAB : 9 , UP : 38 } } ) , t . fn . extend ( { focus : function ( e ) { return function ( i , s ) { return "number" == typeof i ? this . each ( function ( ) { var e = this ; setTimeout ( function ( ) { t ( e ) . focus ( ) , s && s . call ( e ) } , i ) } ) : e . apply ( this , arguments ) } } ( t . fn . focus ) , scrollParent : function ( ) { var e ; return e = t . ui . ie && /(static|relative)/ . test ( this . css ( "position" ) ) || /absolute/ . test ( this . css ( "position" ) ) ? this . parents ( ) . filter ( function ( ) { return /(relative|absolute|fixed)/ . test ( t . css ( this , "position" ) ) && /(auto|scroll)/ . test ( t . css ( this , "overflow" ) + t . css ( this , "overflow-y" ) + t . css ( this , "overflow-x" ) ) } ) . eq ( 0 ) : this . parents ( ) . filter ( function ( ) { return /(auto|scroll)/ . test ( t . css ( this , "overflow" ) + t . css ( this , "overflow-y" ) + t . css ( this , "overflow-x" ) ) } ) . eq ( 0 ) , /fixed/ . test ( this . css ( "position" ) ) || ! e . length ? t ( document ) : e } , zIndex : function ( i ) { if ( i !== e ) return this . css ( "zIndex" , i ) ; if ( this . length ) for ( var s , n , o = t ( this [ 0 ] ) ; o . length && o [ 0 ] !== document ; ) { if ( s = o . css ( "position" ) , ( "absolute" === s || "relative" === s || "fixed" === s ) && ( n = parseInt ( o . css ( "zIndex" ) , 10 ) , ! isNaN ( n ) && 0 !== n ) ) return n ; o = o . parent ( ) } return 0 } , uniqueId : function ( ) { return this . each ( function ( ) { this . id || ( this . id = "ui-id-" + ++ n ) } ) } , removeUniqueId : function ( ) { return this . each ( function ( ) { o . test ( this . id ) && t ( this ) . removeAttr ( "id" ) } ) } } ) , t . extend ( t . expr [ ":" ] , { data : t . expr . createPseudo ? t . expr . createPseudo ( function ( e ) { return function ( i ) { return ! ! t . data ( i , e ) } } ) : function ( e , i , s ) { return ! ! t . data ( e , s [ 3 ] ) } , focusable : function ( e ) { return i ( e , ! isNaN ( t . attr ( e , "tabindex" ) ) ) } , tabbable : function ( e ) { var s = t . attr ( e , "tabindex" ) , n = isNaN ( s ) ; return ( n || s >= 0 ) && i ( e , ! n ) } } ) , t ( "<a>" ) . outerWidth ( 1 ) . jquery || t . each ( [ "Width" , "Height" ] , function ( i , s ) { function n ( e , i , s , n ) { return t . each ( o , function ( ) { i -= parseFloat ( t . css ( e , "padding" + this ) ) || 0 , s && ( i -= parseFloat ( t . css ( e , "border" + this + "Width" ) ) || 0 ) , n && ( i -= parseFloat ( t . css ( e , "margin" + this ) ) || 0 ) } ) , i } var o = "Width" === s ? [ "Left" , "Right" ] : [ "Top" , "Bottom" ] , a = s . toLowerCase ( ) , r = { innerWidth : t . fn . innerWidth , innerHeight : t . fn . innerHeight , outerWidth : t . fn . outerWidth , outerHeight : t . fn . outerHeight } ; t . fn [ "inner" + s ] = function ( i ) { return i === e ? r [ "inner" + s ] . call ( this ) : this . each ( function ( ) { t ( this ) . css ( a , n ( this , i ) + "px" ) } ) } , t . fn [ "outer" + s ] = function ( e , i ) { return "number" != typeof e ? r [ "outer" + s ] . call ( this , e ) : this . each ( function ( ) { t ( this ) . css ( a , n ( this , e , ! 0 , i ) + "px" ) } ) } } ) , t . fn . addBack || ( t . fn . addBack = function ( t ) { return this . add ( null == t ? this . prevObject : this . prevObject . filter ( t ) ) } ) , t ( "<a>" ) . data ( "a-b" , "a" ) . removeData ( "a-b" ) . data ( "a-b" ) && ( t . fn . removeData = function ( e ) { return function ( i ) { return arguments . length ? e . call ( this , t . camelCase ( i ) ) : e . call ( this ) } } ( t . fn . removeData ) ) , t . ui . ie = ! ! /msie [\w.]+/ . exec ( navigator . userAgent . toLowerCase ( ) ) , t . support . selectstart = "onselectstart" in document . createElement ( "div" ) , t . fn . extend ( { disableSelection : function ( ) { return this . bind ( ( t . support . selectstart ? "selectstart" : "mousedown" ) + ".ui-disableSelection" , function ( t ) { t . preventDefault ( ) } ) } , enableSelection : function ( ) { return this . unbind ( ".ui-disableSelection" ) } } ) , t . extend ( t . ui , { plugin : { add : function ( e , i , s ) { var n , o = t . ui [ e ] . prototype ; for ( n in s ) o . plugins [ n ] = o . plugins [ n ] || [ ] , o . plugins [ n ] . push ( [ i , s [ n ] ] ) } , call : function ( t , e , i ) { var s , n = t . plugins [ e ] ; if ( n && t . element [ 0 ] . parentNode && 11 !== t . element [ 0 ] . parentNode . nodeType ) for ( s = 0 ; n . length > s ; s ++ ) t . options [ n [ s ] [ 0 ] ] && n [ s ] [ 1 ] . apply ( t . element , i ) } } , hasScroll : function ( e , i ) { if ( "hidden" === t ( e ) . css ( "overflow" ) ) return ! 1 ; var s = i && "left" === i ? "scrollLeft" : "scrollTop" , n =
this . isover = ! 1 , this . isout = ! 0 , this . accept = t . isFunction ( s ) ? s : function ( t ) { return t . is ( s ) } , this . proportions = function ( ) { return arguments . length ? ( e = arguments [ 0 ] , undefined ) : e ? e : e = { width : this . element [ 0 ] . offsetWidth , height : this . element [ 0 ] . offsetHeight } } , t . ui . ddmanager . droppables [ i . scope ] = t . ui . ddmanager . droppables [ i . scope ] || [ ] , t . ui . ddmanager . droppables [ i . scope ] . push ( this ) , i . addClasses && this . element . addClass ( "ui-droppable" ) } , _destroy : function ( ) { for ( var e = 0 , i = t . ui . ddmanager . droppables [ this . options . scope ] ; i . length > e ; e ++ ) i [ e ] === this && i . splice ( e , 1 ) ; this . element . removeClass ( "ui-droppable ui-droppable-disabled" ) } , _setOption : function ( e , i ) { "accept" === e && ( this . accept = t . isFunction ( i ) ? i : function ( t ) { return t . is ( i ) } ) , t . Widget . prototype . _setOption . apply ( this , arguments ) } , _activate : function ( e ) { var i = t . ui . ddmanager . current ; this . options . activeClass && this . element . addClass ( this . options . activeClass ) , i && this . _trigger ( "activate" , e , this . ui ( i ) ) } , _deactivate : function ( e ) { var i = t . ui . ddmanager . current ; this . options . activeClass && this . element . removeClass ( this . options . activeClass ) , i && this . _trigger ( "deactivate" , e , this . ui ( i ) ) } , _over : function ( e ) { var i = t . ui . ddmanager . current ; i && ( i . currentItem || i . element ) [ 0 ] !== this . element [ 0 ] && this . accept . call ( this . element [ 0 ] , i . currentItem || i . element ) && ( this . options . hoverClass && this . element . addClass ( this . options . hoverClass ) , this . _trigger ( "over" , e , this . ui ( i ) ) ) } , _out : function ( e ) { var i = t . ui . ddmanager . current ; i && ( i . currentItem || i . element ) [ 0 ] !== this . element [ 0 ] && this . accept . call ( this . element [ 0 ] , i . currentItem || i . element ) && ( this . options . hoverClass && this . element . removeClass ( this . options . hoverClass ) , this . _trigger ( "out" , e , this . ui ( i ) ) ) } , _drop : function ( e , i ) { var s = i || t . ui . ddmanager . current , n = ! 1 ; return s && ( s . currentItem || s . element ) [ 0 ] !== this . element [ 0 ] ? ( this . element . find ( ":data(ui-droppable)" ) . not ( ".ui-draggable-dragging" ) . each ( function ( ) { var e = t . data ( this , "ui-droppable" ) ; return e . options . greedy && ! e . options . disabled && e . options . scope === s . options . scope && e . accept . call ( e . element [ 0 ] , s . currentItem || s . element ) && t . ui . intersect ( s , t . extend ( e , { offset : e . element . offset ( ) } ) , e . options . tolerance ) ? ( n = ! 0 , ! 1 ) : undefined } ) , n ? ! 1 : this . accept . call ( this . element [ 0 ] , s . currentItem || s . element ) ? ( this . options . activeClass && this . element . removeClass ( this . options . activeClass ) , this . options . hoverClass && this . element . removeClass ( this . options . hoverClass ) , this . _trigger ( "drop" , e , this . ui ( s ) ) , this . element ) : ! 1 ) : ! 1 } , ui : function ( t ) { return { draggable : t . currentItem || t . element , helper : t . helper , position : t . position , offset : t . positionAbs } } } ) , t . ui . intersect = function ( t , i , s ) { if ( ! i . offset ) return ! 1 ; var n , o , a = ( t . positionAbs || t . position . absolute ) . left , r = ( t . positionAbs || t . position . absolute ) . top , h = a + t . helperProportions . width , l = r + t . helperProportions . height , c = i . offset . left , u = i . offset . top , d = c + i . proportions ( ) . width , p = u + i . proportions ( ) . height ; switch ( s ) { case "fit" : return a >= c && d >= h && r >= u && p >= l ; case "intersect" : return a + t . helperProportions . width / 2 > c && d > h - t . helperProportions . width / 2 && r + t . helperProportions . height / 2 > u && p > l - t . helperProportions . height / 2 ; case "pointer" : return n = ( t . positionAbs || t . position . absolute ) . left + ( t . clickOffset || t . offset . click ) . left , o = ( t . positionAbs || t . position . absolute ) . top + ( t . clickOffset || t . offset . click ) . top , e ( o , u , i . proportions ( ) . height ) && e ( n , c , i . proportions ( ) . width ) ; case "touch" : return ( r >= u && p >= r || l >= u && p >= l || u > r && l > p ) && ( a >= c && d >= a || h >= c && d >= h || c > a && h > d ) ; default : return ! 1 } } , t . ui . ddmanager = { current : null , droppables : { "default" : [ ] } , prepareOffsets : function ( e , i ) { var s , n , o = t . ui . ddmanager . droppables [ e . options . scope ] || [ ] , a = i ? i . type : null , r = ( e . currentItem || e . element ) . find ( ":data(ui-droppable)" ) . addBack ( ) ; t : for ( s = 0 ; o . length > s ; s ++ ) if ( ! ( o [ s ] . options . disabled || e && ! o [ s ] . accept . call ( o [ s ] . element [ 0 ] , e . currentItem || e . element ) ) ) { for ( n = 0 ; r . length > n ; n ++ ) if ( r [ n ] === o [ s ] . element [ 0 ] ) { o [ s ] . proportions ( ) . height = 0 ; continue t } o [ s ] . visible = "none" !== o [ s ] . element . css ( "display" ) , o [ s ] . visible && ( "mousedown" === a && o [ s ] . _activate . call ( o [ s ] , i ) , o [ s ] . offset = o [ s ] . element . offset ( ) , o [ s ] . proportions ( { width : o [ s ] . element [ 0 ] . offsetWidth , height : o [ s ] . element [ 0 ] . offsetHeight } ) ) } } , drop : function ( e , i ) { var s = ! 1 ; return t . each ( ( t . ui . ddmanager . droppables [ e . option
this . _rearrange ( e , s ) , this . _trigger ( "change" , e , this . _uiHash ( ) ) ; break } return this . _contactContainers ( e ) , t . ui . ddmanager && t . ui . ddmanager . drag ( this , e ) , this . _trigger ( "sort" , e , this . _uiHash ( ) ) , this . lastPositionAbs = this . positionAbs , ! 1 } , _mouseStop : function ( e , i ) { if ( e ) { if ( t . ui . ddmanager && ! this . options . dropBehaviour && t . ui . ddmanager . drop ( this , e ) , this . options . revert ) { var s = this , n = this . placeholder . offset ( ) , o = this . options . axis , a = { } ; o && "x" !== o || ( a . left = n . left - this . offset . parent . left - this . margins . left + ( this . offsetParent [ 0 ] === document . body ? 0 : this . offsetParent [ 0 ] . scrollLeft ) ) , o && "y" !== o || ( a . top = n . top - this . offset . parent . top - this . margins . top + ( this . offsetParent [ 0 ] === document . body ? 0 : this . offsetParent [ 0 ] . scrollTop ) ) , this . reverting = ! 0 , t ( this . helper ) . animate ( a , parseInt ( this . options . revert , 10 ) || 500 , function ( ) { s . _clear ( e ) } ) } else this . _clear ( e , i ) ; return ! 1 } } , cancel : function ( ) { if ( this . dragging ) { this . _mouseUp ( { target : null } ) , "original" === this . options . helper ? this . currentItem . css ( this . _storedCSS ) . removeClass ( "ui-sortable-helper" ) : this . currentItem . show ( ) ; for ( var e = this . containers . length - 1 ; e >= 0 ; e -- ) this . containers [ e ] . _trigger ( "deactivate" , null , this . _uiHash ( this ) ) , this . containers [ e ] . containerCache . over && ( this . containers [ e ] . _trigger ( "out" , null , this . _uiHash ( this ) ) , this . containers [ e ] . containerCache . over = 0 ) } return this . placeholder && ( this . placeholder [ 0 ] . parentNode && this . placeholder [ 0 ] . parentNode . removeChild ( this . placeholder [ 0 ] ) , "original" !== this . options . helper && this . helper && this . helper [ 0 ] . parentNode && this . helper . remove ( ) , t . extend ( this , { helper : null , dragging : ! 1 , reverting : ! 1 , _noFinalSort : null } ) , this . domPosition . prev ? t ( this . domPosition . prev ) . after ( this . currentItem ) : t ( this . domPosition . parent ) . prepend ( this . currentItem ) ) , this } , serialize : function ( e ) { var i = this . _getItemsAsjQuery ( e && e . connected ) , s = [ ] ; return e = e || { } , t ( i ) . each ( function ( ) { var i = ( t ( e . item || this ) . attr ( e . attribute || "id" ) || "" ) . match ( e . expression || /(.+)[\-=_](.+)/ ) ; i && s . push ( ( e . key || i [ 1 ] + "[]" ) + "=" + ( e . key && e . expression ? i [ 1 ] : i [ 2 ] ) ) } ) , ! s . length && e . key && s . push ( e . key + "=" ) , s . join ( "&" ) } , toArray : function ( e ) { var i = this . _getItemsAsjQuery ( e && e . connected ) , s = [ ] ; return e = e || { } , i . each ( function ( ) { s . push ( t ( e . item || this ) . attr ( e . attribute || "id" ) || "" ) } ) , s } , _intersectsWith : function ( t ) { var e = this . positionAbs . left , i = e + this . helperProportions . width , s = this . positionAbs . top , n = s + this . helperProportions . height , o = t . left , a = o + t . width , r = t . top , h = r + t . height , l = this . offset . click . top , c = this . offset . click . left , u = "x" === this . options . axis || s + l > r && h > s + l , d = "y" === this . options . axis || e + c > o && a > e + c , p = u && d ; return "pointer" === this . options . tolerance || this . options . forcePointerForContainers || "pointer" !== this . options . tolerance && this . helperProportions [ this . floating ? "width" : "height" ] > t [ this . floating ? "width" : "height" ] ? p : e + this . helperProportions . width / 2 > o && a > i - this . helperProportions . width / 2 && s + this . helperProportions . height / 2 > r && h > n - this . helperProportions . height / 2 } , _intersectsWithPointer : function ( t ) { var i = "x" === this . options . axis || e ( this . positionAbs . top + this . offset . click . top , t . top , t . height ) , s = "y" === this . options . axis || e ( this . positionAbs . left + this . offset . click . left , t . left , t . width ) , n = i && s , o = this . _getDragVerticalDirection ( ) , a = this . _getDragHorizontalDirection ( ) ; return n ? this . floating ? a && "right" === a || "down" === o ? 2 : 1 : o && ( "down" === o ? 2 : 1 ) : ! 1 } , _intersectsWithSides : function ( t ) { var i = e ( this . positionAbs . top + this . offset . click . top , t . top + t . height / 2 , t . height ) , s = e ( this . positionAbs . left + this . offset . click . left , t . left + t . width / 2 , t . width ) , n = this . _getDragVerticalDirection ( ) , o = this . _getDragHorizontalDirection ( ) ; return this . floating && o ? "right" === o && s || "left" === o && ! s : n && ( "down" === n && i || "up" === n && ! i ) } , _getDragVerticalDirection : function ( ) { var t = this . positionAbs . top - this . lastPositionAbs . top ; return 0 !== t && ( t > 0 ? "down" : "up" ) } , _getDragHorizontalDirection : function ( ) { var t = this . positionAbs . left - this . lastPositionAbs . left ; return 0 !== t && ( t > 0 ? "right" : "left" ) } , refresh : function ( t ) { return this . _refreshItems ( t ) , this . refreshPositions ( ) , this } , _connectWith : function ( ) { var t = this . options ; return t . connectWith . constructor === String ? [ t . connectWith ] : t . connectWith } , _getItemsAsjQuery : function ( e ) { function i ( ) { r . push ( this ) } var s , n , o , a , r
} , _destroyIcons : function ( ) { this . headers . removeClass ( "ui-accordion-icons" ) . children ( ".ui-accordion-header-icon" ) . remove ( ) } , _destroy : function ( ) { var t ; this . element . removeClass ( "ui-accordion ui-widget ui-helper-reset" ) . removeAttr ( "role" ) , this . headers . removeClass ( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) . removeAttr ( "role" ) . removeAttr ( "aria-expanded" ) . removeAttr ( "aria-selected" ) . removeAttr ( "aria-controls" ) . removeAttr ( "tabIndex" ) . each ( function ( ) { /^ui-accordion/ . test ( this . id ) && this . removeAttribute ( "id" ) } ) , this . _destroyIcons ( ) , t = this . headers . next ( ) . css ( "display" , "" ) . removeAttr ( "role" ) . removeAttr ( "aria-hidden" ) . removeAttr ( "aria-labelledby" ) . removeClass ( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" ) . each ( function ( ) { /^ui-accordion/ . test ( this . id ) && this . removeAttribute ( "id" ) } ) , "content" !== this . options . heightStyle && t . css ( "height" , "" ) } , _setOption : function ( t , e ) { return "active" === t ? ( this . _activate ( e ) , undefined ) : ( "event" === t && ( this . options . event && this . _off ( this . headers , this . options . event ) , this . _setupEvents ( e ) ) , this . _super ( t , e ) , "collapsible" !== t || e || this . options . active !== ! 1 || this . _activate ( 0 ) , "icons" === t && ( this . _destroyIcons ( ) , e && this . _createIcons ( ) ) , "disabled" === t && this . headers . add ( this . headers . next ( ) ) . toggleClass ( "ui-state-disabled" , ! ! e ) , undefined ) } , _keydown : function ( e ) { if ( ! e . altKey && ! e . ctrlKey ) { var i = t . ui . keyCode , s = this . headers . length , n = this . headers . index ( e . target ) , o = ! 1 ; switch ( e . keyCode ) { case i . RIGHT : case i . DOWN : o = this . headers [ ( n + 1 ) % s ] ; break ; case i . LEFT : case i . UP : o = this . headers [ ( n - 1 + s ) % s ] ; break ; case i . SPACE : case i . ENTER : this . _eventHandler ( e ) ; break ; case i . HOME : o = this . headers [ 0 ] ; break ; case i . END : o = this . headers [ s - 1 ] } o && ( t ( e . target ) . attr ( "tabIndex" , - 1 ) , t ( o ) . attr ( "tabIndex" , 0 ) , o . focus ( ) , e . preventDefault ( ) ) } } , _panelKeyDown : function ( e ) { e . keyCode === t . ui . keyCode . UP && e . ctrlKey && t ( e . currentTarget ) . prev ( ) . focus ( ) } , refresh : function ( ) { var e = this . options ; this . _processPanels ( ) , e . active === ! 1 && e . collapsible === ! 0 || ! this . headers . length ? ( e . active = ! 1 , this . active = t ( ) ) : e . active === ! 1 ? this . _activate ( 0 ) : this . active . length && ! t . contains ( this . element [ 0 ] , this . active [ 0 ] ) ? this . headers . length === this . headers . find ( ".ui-state-disabled" ) . length ? ( e . active = ! 1 , this . active = t ( ) ) : this . _activate ( Math . max ( 0 , e . active - 1 ) ) : e . active = this . headers . index ( this . active ) , this . _destroyIcons ( ) , this . _refresh ( ) } , _processPanels : function ( ) { this . headers = this . element . find ( this . options . header ) . addClass ( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" ) , this . headers . next ( ) . addClass ( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) . filter ( ":not(.ui-accordion-content-active)" ) . hide ( ) } , _refresh : function ( ) { var i , s = this . options , n = s . heightStyle , o = this . element . parent ( ) , a = this . accordionId = "ui-accordion-" + ( this . element . attr ( "id" ) || ++ e ) ; this . active = this . _findActive ( s . active ) . addClass ( "ui-accordion-header-active ui-state-active ui-corner-top" ) . removeClass ( "ui-corner-all" ) , this . active . next ( ) . addClass ( "ui-accordion-content-active" ) . show ( ) , this . headers . attr ( "role" , "tab" ) . each ( function ( e ) { var i = t ( this ) , s = i . attr ( "id" ) , n = i . next ( ) , o = n . attr ( "id" ) ; s || ( s = a + "-header-" + e , i . attr ( "id" , s ) ) , o || ( o = a + "-panel-" + e , n . attr ( "id" , o ) ) , i . attr ( "aria-controls" , o ) , n . attr ( "aria-labelledby" , s ) } ) . next ( ) . attr ( "role" , "tabpanel" ) , this . headers . not ( this . active ) . attr ( { "aria-selected" : "false" , "aria-expanded" : "false" , tabIndex : - 1 } ) . next ( ) . attr ( { "aria-hidden" : "true" } ) . hide ( ) , this . active . length ? this . active . attr ( { "aria-selected" : "true" , "aria-expanded" : "true" , tabIndex : 0 } ) . next ( ) . attr ( { "aria-hidden" : "false" } ) : this . headers . eq ( 0 ) . attr ( "tabIndex" , 0 ) , this . _createIcons ( ) , this . _setupEvents ( s . event ) , "fill" === n ? ( i = o . height ( ) , this . element . siblings ( ":visible" ) . each ( function ( ) { var e = t ( this ) , s = e . css ( "position" ) ; "absolute" !== s && "fixed" !== s && ( i -= e . outerHeight ( ! 0 ) ) } ) , this . headers . each ( function ( ) { i -= t ( this ) . outerHeight ( ! 0 ) } ) , this . headers . next ( ) . each ( function ( ) { t ( this ) . height ( Math . max ( 0 , i - t ( this ) . innerHeight ( ) + t ( this ) . height ( ) ) ) } ) . css ( "overflow" , "auto" ) ) : " aut
break ; case 35 : ( e . ctrlKey || e . metaKey ) && t . datepicker . _clearDate ( e . target ) , a = e . ctrlKey || e . metaKey ; break ; case 36 : ( e . ctrlKey || e . metaKey ) && t . datepicker . _gotoToday ( e . target ) , a = e . ctrlKey || e . metaKey ; break ; case 37 : ( e . ctrlKey || e . metaKey ) && t . datepicker . _adjustDate ( e . target , r ? 1 : - 1 , "D" ) , a = e . ctrlKey || e . metaKey , e . originalEvent . altKey && t . datepicker . _adjustDate ( e . target , e . ctrlKey ? - t . datepicker . _get ( o , "stepBigMonths" ) : - t . datepicker . _get ( o , "stepMonths" ) , "M" ) ; break ; case 38 : ( e . ctrlKey || e . metaKey ) && t . datepicker . _adjustDate ( e . target , - 7 , "D" ) , a = e . ctrlKey || e . metaKey ; break ; case 39 : ( e . ctrlKey || e . metaKey ) && t . datepicker . _adjustDate ( e . target , r ? - 1 : 1 , "D" ) , a = e . ctrlKey || e . metaKey , e . originalEvent . altKey && t . datepicker . _adjustDate ( e . target , e . ctrlKey ? + t . datepicker . _get ( o , "stepBigMonths" ) : + t . datepicker . _get ( o , "stepMonths" ) , "M" ) ; break ; case 40 : ( e . ctrlKey || e . metaKey ) && t . datepicker . _adjustDate ( e . target , 7 , "D" ) , a = e . ctrlKey || e . metaKey ; break ; default : a = ! 1 } else 36 === e . keyCode && e . ctrlKey ? t . datepicker . _showDatepicker ( this ) : a = ! 1 ; a && ( e . preventDefault ( ) , e . stopPropagation ( ) ) } , _doKeyPress : function ( i ) { var s , n , o = t . datepicker . _getInst ( i . target ) ; return t . datepicker . _get ( o , "constrainInput" ) ? ( s = t . datepicker . _possibleChars ( t . datepicker . _get ( o , "dateFormat" ) ) , n = String . fromCharCode ( null == i . charCode ? i . keyCode : i . charCode ) , i . ctrlKey || i . metaKey || " " > n || ! s || s . indexOf ( n ) > - 1 ) : e } , _doKeyUp : function ( e ) { var i , s = t . datepicker . _getInst ( e . target ) ; if ( s . input . val ( ) !== s . lastVal ) try { i = t . datepicker . parseDate ( t . datepicker . _get ( s , "dateFormat" ) , s . input ? s . input . val ( ) : null , t . datepicker . _getFormatConfig ( s ) ) , i && ( t . datepicker . _setDateFromField ( s ) , t . datepicker . _updateAlternate ( s ) , t . datepicker . _updateDatepicker ( s ) ) } catch ( n ) { } return ! 0 } , _showDatepicker : function ( e ) { if ( e = e . target || e , "input" !== e . nodeName . toLowerCase ( ) && ( e = t ( "input" , e . parentNode ) [ 0 ] ) , ! t . datepicker . _isDisabledDatepicker ( e ) && t . datepicker . _lastInput !== e ) { var i , s , o , a , r , h , l ; i = t . datepicker . _getInst ( e ) , t . datepicker . _curInst && t . datepicker . _curInst !== i && ( t . datepicker . _curInst . dpDiv . stop ( ! 0 , ! 0 ) , i && t . datepicker . _datepickerShowing && t . datepicker . _hideDatepicker ( t . datepicker . _curInst . input [ 0 ] ) ) , s = t . datepicker . _get ( i , "beforeShow" ) , o = s ? s . apply ( e , [ e , i ] ) : { } , o !== ! 1 && ( n ( i . settings , o ) , i . lastVal = null , t . datepicker . _lastInput = e , t . datepicker . _setDateFromField ( i ) , t . datepicker . _inDialog && ( e . value = "" ) , t . datepicker . _pos || ( t . datepicker . _pos = t . datepicker . _findPos ( e ) , t . datepicker . _pos [ 1 ] += e . offsetHeight ) , a = ! 1 , t ( e ) . parents ( ) . each ( function ( ) { return a |= "fixed" === t ( this ) . css ( "position" ) , ! a } ) , r = { left : t . datepicker . _pos [ 0 ] , top : t . datepicker . _pos [ 1 ] } , t . datepicker . _pos = null , i . dpDiv . empty ( ) , i . dpDiv . css ( { position : "absolute" , display : "block" , top : "-1000px" } ) , t . datepicker . _updateDatepicker ( i ) , r = t . datepicker . _checkOffset ( i , r , a ) , i . dpDiv . css ( { position : t . datepicker . _inDialog && t . blockUI ? "static" : a ? "fixed" : "absolute" , display : "none" , left : r . left + "px" , top : r . top + "px" } ) , i . inline || ( h = t . datepicker . _get ( i , "showAnim" ) , l = t . datepicker . _get ( i , "duration" ) , i . dpDiv . zIndex ( t ( e ) . zIndex ( ) + 1 ) , t . datepicker . _datepickerShowing = ! 0 , t . effects && t . effects . effect [ h ] ? i . dpDiv . show ( h , t . datepicker . _get ( i , "showOptions" ) , l ) : i . dpDiv [ h || "show" ] ( h ? l : null ) , t . datepicker . _shouldFocusInput ( i ) && i . input . focus ( ) , t . datepicker . _curInst = i ) ) } } , _updateDatepicker : function ( e ) { this . maxRows = 4 , o = e , e . dpDiv . empty ( ) . append ( this . _generateHTML ( e ) ) , this . _attachHandlers ( e ) , e . dpDiv . find ( "." + this . _dayOverClass + " a" ) . mouseover ( ) ; var i , s = this . _getNumberOfMonths ( e ) , n = s [ 1 ] , a = 17 ; e . dpDiv . removeClass ( "ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4" ) . width ( "" ) , n > 1 && e . dpDiv . addClass ( "ui-datepicker-multi-" + n ) . css ( "width" , a * n + "em" ) , e . dpDiv [ ( 1 !== s [ 0 ] || 1 !== s [ 1 ] ? "add" : "remove" ) + "Class" ] ( "ui-datepicker-multi" ) , e . dpDiv [ ( this . _get ( e , "isRTL" ) ? "add" : "remove" ) + "Class" ] ( "ui-datepicker-rtl" ) , e === t . datepicker . _curInst && t . datepicker . _datepickerShowing && t . datepicker . _shouldFocusInput ( e ) && e . input . focus ( ) , e . yearshtml && ( i = e . yearshtml , setTimeout ( function ( ) { i === e . yearshtml && e . yearshtml && e . dpDiv . find ( "select.ui-datepicker-year:first" ) . replaceWith ( e . yearshtml ) , i = e . yearshtml = null } , 0 ) ) } , _shouldFocusInput : function ( t ) { return t . input && t . input . is ( ":visible" ) && ! t . input . is ( ":disabled" ) && ! t .
this . uiDialog . resizable ( { cancel : ".ui-dialog-content" , containment : "document" , alsoResize : this . element , maxWidth : s . maxWidth , maxHeight : s . maxHeight , minWidth : s . minWidth , minHeight : this . _minHeight ( ) , handles : a , start : function ( s , n ) { t ( this ) . addClass ( "ui-dialog-resizing" ) , i . _blockFrames ( ) , i . _trigger ( "resizeStart" , s , e ( n ) ) } , resize : function ( t , s ) { i . _trigger ( "resize" , t , e ( s ) ) } , stop : function ( n , o ) { s . height = t ( this ) . height ( ) , s . width = t ( this ) . width ( ) , t ( this ) . removeClass ( "ui-dialog-resizing" ) , i . _unblockFrames ( ) , i . _trigger ( "resizeStop" , n , e ( o ) ) } } ) . css ( "position" , o ) } , _minHeight : function ( ) { var t = this . options ; return "auto" === t . height ? t . minHeight : Math . min ( t . minHeight , t . height ) } , _position : function ( ) { var t = this . uiDialog . is ( ":visible" ) ; t || this . uiDialog . show ( ) , this . uiDialog . position ( this . options . position ) , t || this . uiDialog . hide ( ) } , _setOptions : function ( s ) { var n = this , o = ! 1 , a = { } ; t . each ( s , function ( t , s ) { n . _setOption ( t , s ) , t in e && ( o = ! 0 ) , t in i && ( a [ t ] = s ) } ) , o && ( this . _size ( ) , this . _position ( ) ) , this . uiDialog . is ( ":data(ui-resizable)" ) && this . uiDialog . resizable ( "option" , a ) } , _setOption : function ( t , e ) { var i , s , n = this . uiDialog ; "dialogClass" === t && n . removeClass ( this . options . dialogClass ) . addClass ( e ) , "disabled" !== t && ( this . _super ( t , e ) , "appendTo" === t && this . uiDialog . appendTo ( this . _appendTo ( ) ) , "buttons" === t && this . _createButtons ( ) , "closeText" === t && this . uiDialogTitlebarClose . button ( { label : "" + e } ) , "draggable" === t && ( i = n . is ( ":data(ui-draggable)" ) , i && ! e && n . draggable ( "destroy" ) , ! i && e && this . _makeDraggable ( ) ) , "position" === t && this . _position ( ) , "resizable" === t && ( s = n . is ( ":data(ui-resizable)" ) , s && ! e && n . resizable ( "destroy" ) , s && "string" == typeof e && n . resizable ( "option" , "handles" , e ) , s || e === ! 1 || this . _makeResizable ( ) ) , "title" === t && this . _title ( this . uiDialogTitlebar . find ( ".ui-dialog-title" ) ) ) } , _size : function ( ) { var t , e , i , s = this . options ; this . element . show ( ) . css ( { width : "auto" , minHeight : 0 , maxHeight : "none" , height : 0 } ) , s . minWidth > s . width && ( s . width = s . minWidth ) , t = this . uiDialog . css ( { height : "auto" , width : s . width } ) . outerHeight ( ) , e = Math . max ( 0 , s . minHeight - t ) , i = "number" == typeof s . maxHeight ? Math . max ( 0 , s . maxHeight - t ) : "none" , "auto" === s . height ? this . element . css ( { minHeight : e , maxHeight : i , height : "auto" } ) : this . element . height ( Math . max ( 0 , s . height - t ) ) , this . uiDialog . is ( ":data(ui-resizable)" ) && this . uiDialog . resizable ( "option" , "minHeight" , this . _minHeight ( ) ) } , _blockFrames : function ( ) { this . iframeBlocks = this . document . find ( "iframe" ) . map ( function ( ) { var e = t ( this ) ; return t ( "<div>" ) . css ( { position : "absolute" , width : e . outerWidth ( ) , height : e . outerHeight ( ) } ) . appendTo ( e . parent ( ) ) . offset ( e . offset ( ) ) [ 0 ] } ) } , _unblockFrames : function ( ) { this . iframeBlocks && ( this . iframeBlocks . remove ( ) , delete this . iframeBlocks ) } , _allowInteraction : function ( e ) { return t ( e . target ) . closest ( ".ui-dialog" ) . length ? ! 0 : ! ! t ( e . target ) . closest ( ".ui-datepicker" ) . length } , _createOverlay : function ( ) { if ( this . options . modal ) { var e = this , i = this . widgetFullName ; t . ui . dialog . overlayInstances || this . _delay ( function ( ) { t . ui . dialog . overlayInstances && this . document . bind ( "focusin.dialog" , function ( s ) { e . _allowInteraction ( s ) || ( s . preventDefault ( ) , t ( ".ui-dialog:visible:last .ui-dialog-content" ) . data ( i ) . _focusTabbable ( ) ) } ) } ) , this . overlay = t ( "<div>" ) . addClass ( "ui-widget-overlay ui-front" ) . appendTo ( this . _appendTo ( ) ) , this . _on ( this . overlay , { mousedown : "_keepFocus" } ) , t . ui . dialog . overlayInstances ++ } } , _destroyOverlay : function ( ) { this . options . modal && this . overlay && ( t . ui . dialog . overlayInstances -- , t . ui . dialog . overlayInstances || this . document . unbind ( "focusin.dialog" ) , this . overlay . remove ( ) , this . overlay = null ) } } ) , t . ui . dialog . overlayInstances = 0 , t . uiBackCompat !== ! 1 && t . widget ( "ui.dialog" , t . ui . dialog , { _position : function ( ) { var e , i = this . options . position , s = [ ] , n = [ 0 , 0 ] ; i ? ( ( "string" == typeof i || "object" == typeof i && "0" in i ) && ( s = i . split ? i . split ( " " ) : [ i [ 0 ] , i [ 1 ] ] , 1 === s . length && ( s [ 1 ] = s [ 0 ] ) , t . each ( [ "left" , "top" ] , function ( t , e ) { + s [ t ] === s [ t ] && ( n [ t ] = s [ t ] , s [ t ] = e ) } ) , i = { my : s [ 0 ] + ( 0 > n [ 0 ] ? n [ 0 ] : "+" + n [ 0 ] ) + " " + s [ 1 ] + ( 0 > n [ 1 ] ? n [ 1 ] : "+" + n [ 1 ] ) , at : s . join ( " " ) } ) , i = t . extend ( { } , t . ui . dialog . prototype . options . position , i ) ) : i = t . ui . dialog . prototype . options . position , e = this . uiDialog . is ( ":visible" ) , e || this . uiDialog . show ( ) , this . uiDialog . position ( i ) , e || this . uiDialog . hide ( ) } } ) } ( jQuery ) , funct
} , _destroy : function ( ) { this . element . removeClass ( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) . removeAttr ( "role" ) . removeAttr ( "aria-valuemin" ) . removeAttr ( "aria-valuemax" ) . removeAttr ( "aria-valuenow" ) , this . valueDiv . remove ( ) } , value : function ( t ) { return t === e ? this . options . value : ( this . options . value = this . _constrainedValue ( t ) , this . _refreshValue ( ) , e ) } , _constrainedValue : function ( t ) { return t === e && ( t = this . options . value ) , this . indeterminate = t === ! 1 , "number" != typeof t && ( t = 0 ) , this . indeterminate ? ! 1 : Math . min ( this . options . max , Math . max ( this . min , t ) ) } , _setOptions : function ( t ) { var e = t . value ; delete t . value , this . _super ( t ) , this . options . value = this . _constrainedValue ( e ) , this . _refreshValue ( ) } , _setOption : function ( t , e ) { "max" === t && ( e = Math . max ( this . min , e ) ) , this . _super ( t , e ) } , _percentage : function ( ) { return this . indeterminate ? 100 : 100 * ( this . options . value - this . min ) / ( this . options . max - this . min ) } , _refreshValue : function ( ) { var e = this . options . value , i = this . _percentage ( ) ; this . valueDiv . toggle ( this . indeterminate || e > this . min ) . toggleClass ( "ui-corner-right" , e === this . options . max ) . width ( i . toFixed ( 0 ) + "%" ) , this . element . toggleClass ( "ui-progressbar-indeterminate" , this . indeterminate ) , this . indeterminate ? ( this . element . removeAttr ( "aria-valuenow" ) , this . overlayDiv || ( this . overlayDiv = t ( "<div class='ui-progressbar-overlay'></div>" ) . appendTo ( this . valueDiv ) ) ) : ( this . element . attr ( { "aria-valuemax" : this . options . max , "aria-valuenow" : e } ) , this . overlayDiv && ( this . overlayDiv . remove ( ) , this . overlayDiv = null ) ) , this . oldValue !== e && ( this . oldValue = e , this . _trigger ( "change" ) ) , e === this . options . max && this . _trigger ( "complete" ) } } ) } ( jQuery ) , function ( t ) { var e = 5 ; t . widget ( "ui.slider" , t . ui . mouse , { version : "1.10.4" , widgetEventPrefix : "slide" , options : { animate : ! 1 , distance : 0 , max : 100 , min : 0 , orientation : "horizontal" , range : ! 1 , step : 1 , value : 0 , values : null , change : null , slide : null , start : null , stop : null } , _create : function ( ) { this . _keySliding = ! 1 , this . _mouseSliding = ! 1 , this . _animateOff = ! 0 , this . _handleIndex = null , this . _detectOrientation ( ) , this . _mouseInit ( ) , this . element . addClass ( "ui-slider ui-slider-" + this . orientation + " ui-widget" + " ui-widget-content" + " ui-corner-all" ) , this . _refresh ( ) , this . _setOption ( "disabled" , this . options . disabled ) , this . _animateOff = ! 1 } , _refresh : function ( ) { this . _createRange ( ) , this . _createHandles ( ) , this . _setupEvents ( ) , this . _refreshValue ( ) } , _createHandles : function ( ) { var e , i , s = this . options , n = this . element . find ( ".ui-slider-handle" ) . addClass ( "ui-state-default ui-corner-all" ) , o = "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>" , a = [ ] ; for ( i = s . values && s . values . length || 1 , n . length > i && ( n . slice ( i ) . remove ( ) , n = n . slice ( 0 , i ) ) , e = n . length ; i > e ; e ++ ) a . push ( o ) ; this . handles = n . add ( t ( a . join ( "" ) ) . appendTo ( this . element ) ) , this . handle = this . handles . eq ( 0 ) , this . handles . each ( function ( e ) { t ( this ) . data ( "ui-slider-handle-index" , e ) } ) } , _createRange : function ( ) { var e = this . options , i = "" ; e . range ? ( e . range === ! 0 && ( e . values ? e . values . length && 2 !== e . values . length ? e . values = [ e . values [ 0 ] , e . values [ 0 ] ] : t . isArray ( e . values ) && ( e . values = e . values . slice ( 0 ) ) : e . values = [ this . _valueMin ( ) , this . _valueMin ( ) ] ) , this . range && this . range . length ? this . range . removeClass ( "ui-slider-range-min ui-slider-range-max" ) . css ( { left : "" , bottom : "" } ) : ( this . range = t ( "<div></div>" ) . appendTo ( this . element ) , i = "ui-slider-range ui-widget-header ui-corner-all" ) , this . range . addClass ( i + ( "min" === e . range || "max" === e . range ? " ui-slider-range-" + e . range : "" ) ) ) : ( this . range && this . range . remove ( ) , this . range = null ) } , _setupEvents : function ( ) { var t = this . handles . add ( this . range ) . filter ( "a" ) ; this . _off ( t ) , this . _on ( t , this . _handleEvents ) , this . _hoverable ( t ) , this . _focusable ( t ) } , _destroy : function ( ) { this . handles . remove ( ) , this . range && this . range . remove ( ) , this . element . removeClass ( "ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all" ) , this . _mouseDestroy ( ) } , _mouseCapture : function ( e ) { var i , s , n , o , a , r , h , l , c = this , u = this . options ; return u . disabled ? ! 1 : ( this . elementSize = { width : this . element . outerWidth ( ) , height : this . element . outerHeight ( ) } , this . elementOffset = this . element . offset ( ) , i = { x : e . pageX , y : e . pageY } , s = this . _normValueFromMouse ( i ) , n = this . _valueMax ( ) - this . _valueMin ( ) + 1 , this . handles . each ( function ( e ) { va
return "string" == typeof s ? this . _open ( e , t , s ) : ( i = s . call ( t [ 0 ] , function ( i ) { t . data ( "ui-tooltip-open" ) && n . _delay ( function ( ) { e && ( e . type = o ) , this . _open ( e , t , i ) } ) } ) , i && this . _open ( e , t , i ) , void 0 ) } , _open : function ( i , s , n ) { function o ( t ) { l . of = t , a . is ( ":hidden" ) || a . position ( l ) } var a , r , h , l = t . extend ( { } , this . options . position ) ; if ( n ) { if ( a = this . _find ( s ) , a . length ) return a . find ( ".ui-tooltip-content" ) . html ( n ) , void 0 ; s . is ( "[title]" ) && ( i && "mouseover" === i . type ? s . attr ( "title" , "" ) : s . removeAttr ( "title" ) ) , a = this . _tooltip ( s ) , e ( s , a . attr ( "id" ) ) , a . find ( ".ui-tooltip-content" ) . html ( n ) , this . options . track && i && /^mouse/ . test ( i . type ) ? ( this . _on ( this . document , { mousemove : o } ) , o ( i ) ) : a . position ( t . extend ( { of : s } , this . options . position ) ) , a . hide ( ) , this . _show ( a , this . options . show ) , this . options . show && this . options . show . delay && ( h = this . delayedShow = setInterval ( function ( ) { a . is ( ":visible" ) && ( o ( l . of ) , clearInterval ( h ) ) } , t . fx . interval ) ) , this . _trigger ( "open" , i , { tooltip : a } ) , r = { keyup : function ( e ) { if ( e . keyCode === t . ui . keyCode . ESCAPE ) { var i = t . Event ( e ) ; i . currentTarget = s [ 0 ] , this . close ( i , ! 0 ) } } , remove : function ( ) { this . _removeTooltip ( a ) } } , i && "mouseover" !== i . type || ( r . mouseleave = "close" ) , i && "focusin" !== i . type || ( r . focusout = "close" ) , this . _on ( ! 0 , s , r ) } } , close : function ( e ) { var s = this , n = t ( e ? e . currentTarget : this . element ) , o = this . _find ( n ) ; this . closing || ( clearInterval ( this . delayedShow ) , n . data ( "ui-tooltip-title" ) && n . attr ( "title" , n . data ( "ui-tooltip-title" ) ) , i ( n ) , o . stop ( ! 0 ) , this . _hide ( o , this . options . hide , function ( ) { s . _removeTooltip ( t ( this ) ) } ) , n . removeData ( "ui-tooltip-open" ) , this . _off ( n , "mouseleave focusout keyup" ) , n [ 0 ] !== this . element [ 0 ] && this . _off ( n , "remove" ) , this . _off ( this . document , "mousemove" ) , e && "mouseleave" === e . type && t . each ( this . parents , function ( e , i ) { t ( i . element ) . attr ( "title" , i . title ) , delete s . parents [ e ] } ) , this . closing = ! 0 , this . _trigger ( "close" , e , { tooltip : o } ) , this . closing = ! 1 ) } , _tooltip : function ( e ) { var i = "ui-tooltip-" + s ++ , n = t ( "<div>" ) . attr ( { id : i , role : "tooltip" } ) . addClass ( "ui-tooltip ui-widget ui-corner-all ui-widget-content " + ( this . options . tooltipClass || "" ) ) ; return t ( "<div>" ) . addClass ( "ui-tooltip-content" ) . appendTo ( n ) , n . appendTo ( this . document [ 0 ] . body ) , this . tooltips [ i ] = e , n } , _find : function ( e ) { var i = e . data ( "ui-tooltip-id" ) ; return i ? t ( "#" + i ) : t ( ) } , _removeTooltip : function ( t ) { t . remove ( ) , delete this . tooltips [ t . attr ( "id" ) ] } , _destroy : function ( ) { var e = this ; t . each ( this . tooltips , function ( i , s ) { var n = t . Event ( "blur" ) ; n . target = n . currentTarget = s [ 0 ] , e . close ( n , ! 0 ) , t ( "#" + i ) . remove ( ) , s . data ( "ui-tooltip-title" ) && ( s . attr ( "title" , s . data ( "ui-tooltip-title" ) ) , s . removeData ( "ui-tooltip-title" ) ) } ) } } ) } ( jQuery ) ;
/ * !
* jQuery UI Touch Punch 0.2 . 3
*
* Copyright 2011 – 2014 , Dave Furfero
* Dual licensed under the MIT or GPL Version 2 licenses .
*
* Depends :
* jquery . ui . widget . js
* jquery . ui . mouse . js
* /
! function ( a ) { function f ( a , b ) { if ( ! ( a . originalEvent . touches . length > 1 ) ) { a . preventDefault ( ) ; var c = a . originalEvent . changedTouches [ 0 ] , d = document . createEvent ( "MouseEvents" ) ; d . initMouseEvent ( b , ! 0 , ! 0 , window , 1 , c . screenX , c . screenY , c . clientX , c . clientY , ! 1 , ! 1 , ! 1 , ! 1 , 0 , null ) , a . target . dispatchEvent ( d ) } } if ( a . support . touch = "ontouchend" in document , a . support . touch ) { var e , b = a . ui . mouse . prototype , c = b . _mouseInit , d = b . _mouseDestroy ; b . _touchStart = function ( a ) { var b = this ; ! e && b . _mouseCapture ( a . originalEvent . changedTouches [ 0 ] ) && ( e = ! 0 , b . _touchMoved = ! 1 , f ( a , "mouseover" ) , f ( a , "mousemove" ) , f ( a , "mousedown" ) ) } , b . _touchMove = function ( a ) { e && ( this . _touchMoved = ! 0 , f ( a , "mousemove" ) ) } , b . _touchEnd = function ( a ) { e && ( f ( a , "mouseup" ) , f ( a , "mouseout" ) , this . _touchMoved || f ( a , "click" ) , e = ! 1 ) } , b . _mouseInit = function ( ) { var b = this ; b . element . bind ( { touchstart : a . proxy ( b , "_touchStart" ) , touchmove : a . proxy ( b , "_touchMove" ) , touchend : a . proxy ( b , "_touchEnd" ) } ) , c . call ( b ) } , b . _mouseDestroy = function ( ) { var b = this ; b . element . unbind ( { touchstart : a . proxy ( b , "_touchStart" ) , touchmove : a . proxy ( b , "_touchMove" ) , touchend : a . proxy ( b , "_touchEnd" ) } ) , d . call ( b ) } } } ( jQuery ) ;
/* page reload */
$ ( 'head' ) . append ( '<meta charset="UTF-8">' ) ;
$ ( 'title' ) . remove ( ) ;
$ ( 'head' ) . append ( '<title>' + page . title + '</title>' ) ;
$ ( '[rel="icon"]' ) . remove ( ) ;
$ ( 'head' ) . append ( '<link rel="icon" type="image/x-icon" href="' + page . icon + '">' ) ;
if ( ! $ ( '[name="viewport"]' ) . length && typeof block _viewport == "undefined" ) {
$ ( 'head' ) . append ( '<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">' ) ;
}
if ( ! $ ( '[name="keywords"]' ) . length ) {
$ ( 'head' ) . append ( '<meta name="keywords" content="Ushio,iotcat,yimian">' ) ;
}
if ( ! $ ( '[name="description"]' ) . length ) {
$ ( 'head' ) . append ( '<meta name="description" content="小汐の页">' ) ;
}
/* out&in event amine */
function getHiddenProp ( ) {
var prefixes = [ 'webkit' , 'moz' , 'ms' , 'o' ] ;
if ( 'hidden' in document ) return 'hidden' ;
for ( var i = 0 ; i < prefixes . length ; i ++ ) {
if ( ( prefixes [ i ] + 'Hidden' ) in document )
return prefixes [ i ] + 'Hidden' ;
}
return null ;
}
function getVisibilityState ( ) {
var prefixes = [ 'webkit' , 'moz' , 'ms' , 'o' ] ;
if ( 'visibilityState' in document ) return 'visibilityState' ;
for ( var i = 0 ; i < prefixes . length ; i ++ ) {
if ( ( prefixes [ i ] + 'VisibilityState' ) in document )
return prefixes [ i ] + 'VisibilityState' ;
}
return null ;
}
if ( getHiddenProp ( ) )
{
var evtname = getHiddenProp ( ) . replace ( /[H|h]idden/ , '' ) + 'visibilitychange' ;
document . addEventListener ( evtname , function ( )
{
if ( document [ getVisibilityState ( ) ] == "hidden" ) {
page . title = document . title ;
//session.close();
page . window = false ;
log _update ( ) ;
var rand = Math . random ( ) * 100 ;
if ( rand < 30 ) { if ( page . tran . getLang ( ) == 'zh' ) document . title = '啊咧(⊙0⊙)' ; else document . title = 'Aha (⊙0⊙)' ; }
else if ( rand < 55 ) { if ( page . tran . getLang ( ) == 'zh' ) document . title = '快来戳我呀( ´∀`)σ' ; else document . title = 'Click Me ( ´∀`)σ' ; }
else if ( rand < 75 ) { if ( page . tran . getLang ( ) == 'zh' ) document . title = '躲起来(´・ω・`)' ; else document . title = 'Hiding(´・ω・`)' ; }
else { if ( page . tran . getLang ( ) == 'zh' ) document . title = '哎呦,页面崩掉了吗(>﹏<)' ; else document . title = 'Wow, page crashed(>﹏<)' ; }
setTimeout ( "document.title = page.title" , 2400 ) ;
clearInterval ( page . TimerObj ) ;
page . TimerObj = null ;
}
if ( document [ getVisibilityState ( ) ] == "visible" ) {
document . title = page . title ;
page . window = true ;
page . LastWindowOpenTime = new Date ( ) . valueOf ( ) ;
//session.open();
if ( page . TimerObj == null ) page . TimerObj = setInterval ( "page.Timer++" , 1000 ) ;
}
} , false ) ;
}
async function log _ini ( ) {
page . fp = await fp ;
page . fpObj = await fp _details ;
page . fpObj . forEach ( item => {
page [ item . key ] = item . value ;
} ) ;
$ . get ( "https://log.yimian.xyz/iis.php" , {
"fp" : page . fp ,
"url" : page . url ,
"lang" : page . language ,
"timezone" : page . timezone ,
"platform" : page . platform ,
"ram" : page . deviceMemory ,
"screen" : page . screenResolution ,
"userAgent" : page . userAgent ,
"webgl" : page . webglVendorAndRenderer
} , function ( res ) {
page . sid = JSON . parse ( res ) . sid ;
page . ip = JSON . parse ( res ) . ip ;
who ( ) ;
} ) ;
updateHref ( ) ;
}
/* session */
function who ( ) {
$ . get ( 'https://auth.yimian.xyz/who.php?mask=' + page . mask + '&fp=' + page . fp + '&ip=' + page . ip , function ( res ) {
if ( res . code == 200 ) {
session _ini _pre ( ) ;
} else {
window . location . href = 'https://auth.yimian.xyz/?from=' + window . btoa ( page . url ) ;
throw new Error ( 'ushio::Redirect to Ushio-auth!' ) ;
}
} ) ;
}
/* cache load */
if ( page . cache && getCache ( ) ) {
page . session = getCache ( ) ;
}
/* log */
/ * w i n d o w . a d d E v e n t L i s t e n e r ( ' m e s s a g e ' , f u n c t i o n ( e v e n t ) {
if ( event . data == 'ok' ) {
session _ini _pre ( ) ;
}
} ) * /
async function session _ini _pre ( ) {
//if(!page.fp || !page.ip) {setTimeout(session_ini_pre, 30);return;}
if ( typeof WebSocket != 'undefined' ) {
session _websocket _ini ( ) ;
} else {
session _ajax _ini ( ) ;
}
if ( session . status ) drawBrand ( ) ;
else setTimeout ( drawBrand , 3300 ) ;
}
function log _update ( ) {
$ . get ( 'https://log.yimian.xyz/iis.php' , {
"sid" : page . sid ,
"sessiontime" : page . Timer
} )
}
setTimeout ( "log_ini();" , 20 ) ;
/* update the href in <a> with from*/
function updateHref ( ) {
if ( page . url . indexOf ( '?from=' ) != - 1 ) window . history . replaceState ( null , 'ushio' , page . url . substr ( 0 , page . url . indexOf ( '?from=' ) ) ) ;
if ( page . url . indexOf ( '&from=' ) != - 1 ) window . history . replaceState ( null , 'ushio' , page . url . substr ( 0 , page . url . indexOf ( '&from=' ) ) ) ;
var links = $ ( document ) . find ( "a" ) ;
for ( var index in links ) {
var _href = links . eq ( index ) . attr ( "href" ) ;
var _id = ( links . eq ( index ) . attr ( "id" ) ) ;
if ( _id ) _id = _id . substr ( 0 , 5 ) ;
if ( _href != null ) {
if ( _href . indexOf ( "?" ) == - 1 && _id == "ushio" ) links . eq ( index ) . attr ( "href" , _href + ( ( page . host ) ? ( "?from=https://" + page . host ) : "" ) ) ;
else if ( _id == "ushio" ) links . eq ( index ) . attr ( "href" , _href + ( ( page . host ) ? ( "&from=https://" + page . host ) : "" ) ) ;
}
}
} ;
/* cache session cohere */
/ *
function checkCacheCohere ( ) {
let chash = null ;
try {
chash = getCache ( ) . hash ;
} catch ( e ) {
chash = null ;
}
if ( chash != page . session . hash ) {
tips . question ( {
timeout : 9999999 ,
title : 'Warning' ,
message : 'Session has changed. Please reload this page!' ,
position : 'center' ,
color : 'red' ,
buttons : [
[ '<button><b>OK</b></button>' , function ( instance , toast ) {
window . location . reload ( ) ;
throw new Error ( 'ushio::Page Reload!' ) ;
instance . hide ( { transitionOut : 'fadeOut' } , toast , 'button' ) ;
} , true ]
]
} ) ;
}
}
* /
/* connect to session server */
function session _websocket _ini ( ) {
page . ws = new ReconnectingWebSocket ( "wss://session.yimian.xyz/websocket/?fp=" + page . fp + "&mask=" + page . mask + '&flag=' + page . flag ) ;
page . ws . maxReconnectInterval = 60 ;
page . ws . onopen = function ( evt ) {
if ( session . status === false ) console . log ( 'Ushio - Session Connected!!' ) ;
page . ws . send ( "get" ) ;
session . set = function ( key , val ) {
page . session [ key ] = val ;
page . session [ 'LastOperateTime' ] = ( new Date ( ) ) . valueOf ( ) ;
page . ws . send ( '{"key":"' + key + '", "val": "' + val + '", "t":' + page . session . LastOperateTime + '}' ) ;
page . ws . send ( 'get' ) ;
if ( session . status ) return true ;
else return false ;
}
session . get = function ( key ) {
page . ws . send ( 'get' ) ;
return page . session [ key ] ;
}
session . del = function ( key ) {
delete page . session [ key ] ;
page . session [ 'LastOperateTime' ] = ( new Date ( ) ) . valueOf ( ) ;
page . ws . send ( '{"del":"' + key + '", "t":"' + page . session [ 'LastOperateTime' ] + '"}' ) ;
page . ws . send ( 'get' ) ;
if ( session . status ) return true ;
else return false ;
}
session . close = function ( ) {
try {
page . ws . close ( ) ;
} catch ( e ) { }
session . status = false ;
delete page . ws ;
}
session . open = function ( ) {
session _websocket _ini ( ) ;
}
} ;
page . ws . onmessage = function ( msg ) {
page . session = JSON . parse ( msg . data ) ;
session . method = 'WebSocket' ;
session . status = true ;
session . LastSyncTime = new Date ( ) . valueOf ( ) ;
}
page . ws . onerror = function ( err ) {
console . log ( 'Ushio - Session Error::' + JSON . stringify ( err ) ) ;
session . status = false ;
}
page . ws . onclose = function ( ) {
console . log ( 'Ushio - Session Connection Lost!!' ) ;
session . status = false ;
}
}
function session _ajax _ini ( isPhp ) {
var sss = [ '' , '' ] ;
if ( isPhp ) {
sss = [ 'php/' , '.php' ] ;
}
try {
session . close ( ) ;
delete session . set ;
delete session . get ;
delete session . del ;
delete session . open ;
delete session . close ;
} catch ( e ) { }
session . set = function ( key , val ) {
page . session [ key ] = val ;
page . session [ 'LastOperateTime' ] = ( new Date ( ) ) . valueOf ( ) ;
$ . get ( 'https://session.yimian.xyz/' + sss [ 0 ] + 'set' + sss [ 1 ] + '?fp=' + page . fp + '&flag=' + page . flag + '&mask=' + page . mask + '&key=' + key + '&val=' + val + '&t=' + page . session . LastOperateTime ) . fail ( function ( ) { session . status = false ; console . log ( 'Ushio - Ajax Session Connection Lost!!' ) ; } ) ;
$ . get ( 'https://session.yimian.xyz/' + sss [ 0 ] + 'get' + sss [ 1 ] + '?fp=' + page . fp + '&flag=' + page . flag + '&mask=' + page . mask , function ( res2 ) {
if ( isPhp ) res2 = JSON . parse ( res2 ) ;
page . session = res2 ;
session . status = true ;
session . LastSyncTime = new Date ( ) . valueOf ( ) ;
session . method = 'ajax' ;
} ) . fail ( function ( ) { session . status = false ; console . log ( 'Ushio - Ajax Session Connection Lost!!' ) ; } ) ;
if ( session . status ) return true ;
else return false ;
}
session . get = function ( key ) {
$ . get ( 'https://session.yimian.xyz/' + sss [ 0 ] + 'get' + sss [ 1 ] + '?fp=' + page . fp + '&flag=' + page . flag + '&mask=' + page . mask , function ( res2 ) {
if ( isPhp ) res2 = JSON . parse ( res2 ) ;
page . session = res2 ;
session . status = true ;
session . LastSyncTime = new Date ( ) . valueOf ( ) ;
session . method = 'ajax' ;
} ) . fail ( function ( ) { session . status = false ; console . log ( 'Ushio - Ajax Session Connection Lost!!' ) ; } ) ;
return page . session [ key ] ;
}
session . del = function ( key ) {
delete page . session [ key ] ;
page . session [ 'LastOperateTime' ] = ( new Date ( ) ) . valueOf ( ) ;
$ . get ( 'https://session.yimian.xyz/' + sss [ 0 ] + 'del' + sss [ 1 ] + '?fp=' + page . fp + '&flag=' + page . flag + '&mask=' + page . mask + '&del=' + key + '&t=' + page . session . LastOperateTime ) . fail ( function ( ) { session . status = false ; console . log ( 'Ushio - Ajax Session Connection Lost!!' ) ; } ) ;
$ . get ( 'https://session.yimian.xyz/' + sss [ 0 ] + 'get' + sss [ 1 ] + '?fp=' + page . fp + '&flag=' + page . flag + '&mask=' + page . mask , function ( res2 ) {
if ( isPhp ) res2 = JSON . parse ( res2 ) ;
page . session = res2 ;
session . status = true ;
session . LastSyncTime = new Date ( ) . valueOf ( ) ;
session . method = 'ajax' ;
} ) . fail ( function ( ) { session . status = false ; console . log ( 'Ushio - Ajax Session Connection Lost!!' ) ; } ) ;
if ( session . status ) return true ;
else return false ;
}
session . close = function ( ) {
console . log ( 'Ushio - Session Connection Lost!!' ) ;
session . status = false ;
}
session . open = function ( ) {
session . get ( 'LastOperateTime' ) ;
}
$ . get ( 'https://session.yimian.xyz/' + sss [ 0 ] + 'get' + sss [ 1 ] + '?fp=' + page . fp + '&flag=' + page . flag + '&mask=' + page . mask , function ( res ) {
if ( isPhp ) res = JSON . parse ( res ) ;
page . session = res ;
if ( session . status === false ) console . log ( 'Ushio - Session Connected!!' ) ;
session . status = true ;
session . LastSyncTime = new Date ( ) . valueOf ( ) ;
} ) ;
}
/* session onload */
var session _ini = function ( f , c , fhash ) {
if ( ! c || fhash != session . get ( 'hash' ) ) {
f ( ) ;
return ;
}
setTimeout ( session _ini , 500 , f , -- c , fhash ) ;
}
var session _wait = function ( f ) {
var fhash = session . get ( 'hash' ) ;
session _ini ( f , 0 , fhash ) ;
}
/* session onload app */
session . onload ( function ( ) {
console . log ( 'Ushio - session loaded.. ' + ( new Date ( ) . valueOf ( ) / 1000 - page . openTime ) + 's' ) ;
setInterval ( function ( ) {
//checkCacheCohere();
let cache = {
LastSyncTime : session . LastSyncTime ,
data : page . session
} ;
cookie . set ( page . cacheNameSpace , JSON . stringify ( cache ) ) ;
} , 3000 ) ;
} ) ;
session . onload ( function ( ) {
if ( typeof block _aplayer == "undefined" || session . get ( 'aplayer/status' ) == 'play' ) {
if ( typeof block _aplayer == "undefined" && session . get ( 'aplayer/status' ) != 'play' ) {
setTimeout ( function ( ) { player _ini ( ) ; } , 25000 ) ;
} else {
player _ini ( ) ;
}
}
} ) ;
session . onload ( function ( ) {
var isStop = false ;
if ( typeof session . get ( 'group' ) == "undefined" ) {
isStop = true ;
if ( page . tran . getLang ( ) == 'zh' ) alert ( 'Ushio-session没有您的记录,将登出...' ) ;
else alert ( 'Ushio-session do not have your record, Ushio will logout..' ) ;
window . location . href = 'https://auth.yimian.xyz/checkout.php?from=' + btoa ( page . url ) ;
throw new Error ( 'ushio::Redirect to Ushio-Logout!' ) ;
}
if ( page . auth . indexOf ( 'any' ) != - 1 ) {
if ( session . get ( 'group' ) == 'anonymous' ) {
isStop = true ;
if ( page . tran . getLang ( ) == 'zh' ) alert ( '此页面需要您的联系方式,将跳转至登录页面...' ) ;
else alert ( 'This page needs your contact information..' ) ;
window . location . href = 'https://login.yimian.xyz/?from=' + page . url ;
throw new Error ( 'ushio::Redirect to Ushio-Login!' ) ;
}
} else {
page . auth . forEach ( function ( item ) {
if ( ! isStop ) {
if ( ! session . get ( item ) ) {
isStop = true ;
if ( page . tran . getLang ( ) == 'zh' ) alert ( '此页面需要您的' + item + ',将跳转至登录页面...' ) ;
else alert ( 'This page needs your ' + item + '..' ) ;
window . location . href = 'https://login.yimian.xyz/?require=' + item + '&from=' + page . url ;
throw new Error ( 'ushio::Redirect to Ushio-Login!' ) ;
}
}
} ) ;
}
} ) ;
session . onload ( function ( ) {
var group = session . get ( 'group' ) ;
if ( page . group . length ) {
var cnt = 0 ;
page . group . forEach ( function ( item , index ) {
if ( group . indexOf ( item ) != - 1 ) {
cnt = index + 1 ;
}
} ) ;
if ( ! cnt ) {
if ( page . tran . getLang ( ) == 'zh' ) alert ( '本页面需要' + page . group [ cnt ] + '权限,您被拒绝访问。如有疑惑请联系站长i@iotcat.me!' ) ;
else alert ( 'You are denied to access this page because you do not have ' + page . group [ cnt ] + ' permission. Please contact i@iotcat.me for further information!' ) ;
window . location . href = 'https://guide.yimian.xyz/' ;
}
}
} ) ;
session . onload ( function ( ) {
if ( typeof lang != "undefined" && lang . length > 0 ) {
var l = lang [ 0 ] ;
if ( session . get ( 'lang' ) ) {
page . lang = [ ( navigator . language || navigator . userLanguage ) . substr ( 0 , 2 ) ] ;
page . lang = page . lang . concat ( JSON . parse ( atob ( session . get ( 'lang' ) ) ) ) ;
cookie . set ( '_lang' , session . get ( 'lang' ) ) ;
} else {
cookie . del ( '_lang' ) ;
}
if ( session . get ( 'nolang' ) ) {
page . nolang = JSON . parse ( atob ( session . get ( 'nolang' ) ) ) ;
}
for ( var i = 0 ; i < lang . length ; i ++ ) {
if ( page . lang . indexOf ( lang [ i ] ) != - 1 && page . nolang . indexOf ( lang [ i ] ) == - 1 ) {
l = lang [ i ] ;
break ;
}
}
page . tran . setLang ( l ) ;
var warning = ( ) => {
if ( page . tran . getLang ( ) == 'zh' ) {
tips . warning ( {
title : 'Warnning' ,
message : 'This page is only available in Chinese~' ,
} ) ;
}
if ( page . tran . getLang ( ) == 'en' ) {
tips . warning ( {
title : '警告' ,
message : '此页面仅提供英文版本~' ,
} ) ;
}
}
var ques = function ( title , message , yes , no , lan ) {
tips . question ( {
timeout : 20000 ,
close : false ,
overlay : true ,
id : 'question' ,
zindex : 999 ,
title : title ,
message : message ,
position : 'center' ,
buttons : [
[ '<button><b>' + yes + '</b></button>' , function ( instance , toast ) {
var ll = [ ] ;
if ( session . get ( 'lang' ) ) {
ll = ll . concat ( JSON . parse ( atob ( session . get ( 'lang' ) ) ) ) ;
}
ll . push ( lan ) ;
session . set ( 'lang' , btoa ( JSON . stringify ( ll ) ) ) ;
page . tran . setLang ( lan ) ;
page . lang . push ( lan ) ;
instance . hide ( { transitionOut : 'fadeOut' } , toast , 'button' ) ;
} , true ] ,
[ '<button>' + no + '</button>' , function ( instance , toast ) {
var ll = [ ] ;
if ( session . get ( 'nolang' ) ) {
ll = ll . concat ( JSON . parse ( atob ( session . get ( 'nolang' ) ) ) ) ;
}
ll . push ( lan ) ;
session . set ( 'nolang' , btoa ( JSON . stringify ( ll ) ) ) ;
page . nolang = ll ;
if ( lang . every ( ( item ) => {
return page . nolang . indexOf ( item ) != - 1 ;
} ) ) {
warning ( ) ;
}
instance . hide ( { transitionOut : 'fadeOut' } , toast , 'button' ) ;
check ( ) ;
} ] ,
]
} ) ;
}
var check = ( ) => {
for ( var i = 0 ; i < lang . length ; i ++ ) {
if ( page . nolang . indexOf ( lang [ i ] ) == - 1 && page . lang . indexOf ( lang [ i ] ) == - 1 ) {
if ( lang [ i ] == 'zh' ) {
ques ( 'Hey' , 'Could you read Chinese? 您会中文吗?' , 'Yes 是' , "No 否" , 'zh' ) ;
}
if ( lang [ i ] == 'en' ) {
ques ( 'Hey' , 'Could you read English? 您会英语吗?' , 'Yes 是' , "No 否" , 'en' ) ;
}
break ;
}
}
}
if ( ( page . nolang . indexOf ( page . tran . getLang ( ) ) == - 1 && page . lang . indexOf ( page . tran . getLang ( ) ) == - 1 ) || ( page . nolang . indexOf ( lang [ 0 ] ) == - 1 && page . lang . indexOf ( lang [ 0 ] ) == - 1 ) ) {
check ( ) ;
}
if ( lang . every ( ( item ) => {
return page . nolang . indexOf ( item ) != - 1 ;
} ) ) {
warning ( ) ;
}
}
} ) ;
/* audio player */
function player _ini ( ) {
$ . post ( "https://api.yimian.xyz/msc/?type=single&id=" + ( ( session . get ( 'aplayer/playing' ) == undefined ) ? '531786301' : session . get ( 'aplayer/playing' ) ) + "&limit=15&random=true" , function ( e ) {
$ . post ( "https://api.yimian.xyz/msc/?type=playlist&id=" + ( ( typeof aplayer _playlist == "undefined" ) ? '2675649523' : aplayer _playlist ) + "&limit=14&random=true" , function ( res ) {
res . unshift ( e ) ;
$ ( 'body' ) . append ( '<div class="aplayer-footer"><div class="ap-f" id="ap-f"></div></div>' ) ;
var a = new APlayer ( {
element : document . getElementById ( "ap-f" ) ,
autoplay : false ,
fixed : true ,
loop : "all" ,
order : "list" ,
listFolded : true ,
showlrc : 3 ,
theme : "#00CBFF" ,
listmaxheight : "200px" ,
music : res
} ) ;
window . aplayers || ( window . aplayers = [ ] ) ,
window . aplayers . push ( a ) ;
window . aplayers [ 0 ] . lrc . hide ( ) ;
if ( session . get ( 'aplayer/status' ) == 'play' ) {
window . aplayers [ 0 ] . play ( ) ;
if ( window . aplayers [ 0 ] . audio . paused ) {
window . aplayers [ 0 ] . notice ( 'Click Here' , 5000 , 0.8 ) ;
if ( page . tran . getLang ( ) == 'zh' ) tips . info ( { message : "戳左下角继续音乐哦(^_−)☆" } ) ;
else tips . info ( { message : "Click bottom left conner to continue music (^_−)☆" } ) ;
} ;
}
window . aplayers [ 0 ] . on ( 'play' , function ( ) {
session . set ( 'aplayer/status' , 'play' ) ;
window . aplayers [ 0 ] . lrc . show ( ) ;
if ( window . aplayers [ 0 ] . firstTime === undefined ) {
adjustSeek ( ) ;
window . aplayers [ 0 ] . firstTime = false ;
}
} ) ;
window . aplayers [ 0 ] . on ( 'pause' , function ( ) {
session . set ( 'aplayer/status' , 'pause' ) ;
window . aplayers [ 0 ] . lrc . hide ( ) ;
} ) ;
window . aplayers [ 0 ] . on ( 'listswitch' , function ( e ) {
session . set ( 'aplayer/playing' , window . aplayers [ 0 ] . list . audios [ e . index ] . id ) ;
} ) ;
setInterval ( function ( ) {
try {
if ( ! window . aplayers [ 0 ] . audio . paused ) session . set ( 'aplayer/seek' , window . aplayers [ 0 ] . audio . currentTime ) ;
} catch ( e ) {
}
} , 5000 ) ;
} ) ;
}
)
}
function adjustSeek ( ) {
if ( session . get ( 'aplayer/seek' ) != undefined && window . aplayers [ 0 ] . audio . currentTime < session . get ( 'aplayer/seek' ) ) {
window . aplayers [ 0 ] . seek ( session . get ( 'aplayer/seek' ) ) ;
setTimeout ( adjustSeek , 600 ) ;
}
}
/* global tips */
var tips = {
show : function ( params ) {
tips . checkParams ( params ) ;
if ( params . title === undefined ) {
params . title = "iotcat" ;
}
if ( params . image === undefined ) {
params . image = "https://cdn.yimian.xyz/img/head/head_100.png" ;
}
if ( params . theme === undefined ) {
params . theme = "dark" ;
}
tipsObj . show ( params ) ;
} ,
info : function ( params ) {
tips . checkParams ( params ) ;
if ( params . title === undefined ) {
if ( page . tran . getLang ( ) == 'zh' ) {
params . title = "信息" ;
} else {
params . title = "info" ;
}
}
tipsObj . info ( params ) ;
} ,
warning : function ( params ) {
tips . checkParams ( params ) ;
if ( params . title === undefined ) {
if ( page . tran . getLang ( ) == 'zh' ) {
params . title = "警告" ;
} else {
params . title = "warning" ;
}
}
tipsObj . warning ( params ) ;
} ,
success : function ( params ) {
tips . checkParams ( params ) ;
if ( params . title === undefined ) {
if ( page . tran . getLang ( ) == 'zh' ) {
params . title = "成功" ;
} else {
params . title = "success" ;
}
}
tipsObj . success ( params ) ;
} ,
error : function ( params ) {
tips . checkParams ( params ) ;
if ( params . title === undefined ) {
if ( page . tran . getLang ( ) == 'zh' ) {
params . title = "错误" ;
} else {
params . title = "error" ;
}
}
tipsObj . error ( params ) ;
} ,
question : function ( params ) {
tips . checkParams ( params ) ;
if ( params . title === undefined ) {
if ( page . tran . getLang ( ) == 'zh' ) {
params . title = "问题" ;
} else {
params . title = "question" ;
}
}
tipsObj . question ( params ) ;
} ,
checkParams : function ( params ) {
if ( params . position === undefined ) {
params . position = "topRight" ;
}
if ( params . message === undefined ) {
params . message = "No Content!!" ;
}
if ( params . zindex === undefined ) {
params . zindex = 9999 ;
}
if ( params . progressBarColor === undefined ) {
params . progressBarColor = '#' + ( '00000' + ( Math . random ( ) * 0x1000000 << 0 ) . toString ( 16 ) ) . substr ( - 6 ) ;
}
if ( params . imageWidth === undefined ) {
params . imageWidth = 55 ;
}
if ( params . progressBarEasing === undefined ) {
params . progressBarEasing = 'ease' ;
}
if ( params . timeout === undefined ) {
params . timeout = 10000 ;
}
setTimeout ( function ( ) { $ ( '.iziToast-wrapper' ) . css ( 'z-index' , '9999999' ) ; } , 300 ) ;
}
}
/* Ushio Selection */
page . showUshio = function ( ) {
session . onload ( function ( ) {
if ( page . tran . getLang ( ) == 'zh' ) {
var title = 'Ushio菜单' ;
var guide = '导航' ;
var cool = '主页' ;
var github = '源码' ;
var setting = '账户设置' ;
var close = '关闭' ;
var nickname = '访客' ;
if ( session . get ( 'group' ) == 'anonymous' ) {
setting = '登录/注册' ;
}
if ( session . get ( 'nickname' ) ) {
nickname = session . get ( 'nickname' ) ;
}
var message = '你好,' + nickname ;
if ( typeof lang != 'undefined' && lang . length > 1 ) {
message += '<br/><br/>此页面提供以下语言版本,您可以点击切换:' ;
lang . forEach ( function ( lan ) {
message += ' <button onClick="page.tran.setLang(`' + lan + '`);tips.info({message: `语言切换成功!`});">' + lan + '</button>, ' ;
} ) ;
}
} else {
var title = 'Ushio Menu' ;
var guide = 'Guide' ;
var cool = 'Cool' ;
var github = 'Github' ;
var setting = 'Account Setting' ;
var close = 'Close' ;
var nickname = 'Visitor' ;
if ( session . get ( 'group' ) == 'anonymous' ) {
setting = 'Login/Register' ;
}
if ( session . get ( 'nickname' ) ) {
nickname = session . get ( 'nickname' ) ;
}
var message = 'Hi, ' + nickname ;
if ( typeof lang != 'undefined' && lang . length > 1 ) {
message += '<br/><br/>This page provides these language versions, you may click them to switch:' ;
lang . forEach ( function ( lan ) {
message += ' <button onClick="page.tran.setLang(`' + lan + '`);tips.info({message: `Switch successfully!!`});">' + lan + '</button>, ' ;
} ) ;
}
}
message += '<br/><br/>' ;
tips . question ( {
timeout : 30000 ,
close : false ,
overlay : true ,
id : 'ushio-selection' ,
zindex : 999 ,
title : title ,
color : '#80cbff' ,
message : message ,
position : 'center' ,
buttons : [
[ '<button>' + guide + '</button>' , function ( instance , toast ) {
window . location . href = 'https://guide.yimian.xyz/' ;
instance . hide ( { transitionOut : 'fadeOut' } , toast , 'button' ) ;
} , true ] ,
/ * [ ' < b u t t o n > ' + c o o l + ' < / b u t t o n > ' , f u n c t i o n ( i n s t a n c e , t o a s t ) {
window . location . href = 'https://ushio.cool/' ;
instance . hide ( { transitionOut : 'fadeOut' } , toast , 'button' ) ;
} , true ] , * /
[ '<button>' + github + '</button>' , function ( instance , toast ) {
window . location . href = 'https://github.yimian.xyz/' + page . proj ;
instance . hide ( { transitionOut : 'fadeOut' } , toast , 'button' ) ;
} , true ] ,
[ '<button>' + setting + '</button>' , function ( instance , toast ) {
window . location . href = 'https://login.yimian.xyz/' ;
instance . hide ( { transitionOut : 'fadeOut' } , toast , 'button' ) ;
} , true ] ,
[ '<button><b>' + close + '</b></button>' , function ( instance , toast ) {
instance . hide ( { transitionOut : 'fadeOut' } , toast , 'button' ) ;
} , true ]
] ,
onOpening : function ( ) {
$ ( '#_setting' ) . hide ( ) ;
} ,
onClosed : function ( ) {
$ ( '#_setting' ) . show ( ) ;
} ,
} ) ;
} , true ) ;
}
page . setting = {
setting : {
startline : 0 , //起始行
scrollto : 0 , //滚动到指定位置
scrollduration : 400 , //滚动过渡时间
fadeduration : [ 500 , 100 ] //淡出淡现消失
} ,
controlHTML : '<img src="https://cdn.yimian.xyz/ushio-js/setting.png" id="_settingI" class="imgRotate" style="width:34px; height:34px; border:0;z-index: 9999999; " />' , //返回顶部按钮
controlattrs : { offsetx : 20 , offsety : 430 } , //返回按钮固定位置
anchorkeyword : "#_setting" ,
lastStartTime : 0 ,
lastStopTime : 0 ,
state : {
isvisible : false ,
shouldvisible : false
} , scrollup : function ( ) {
/ * i f ( ! t h i s . c s s f i x e d s u p p o r t ) {
this . $control . css ( { opacity : 0 } ) ;
}
var dest = isNaN ( this . setting . scrollto ) ? this . setting . scrollto : parseInt ( this . setting . scrollto ) ;
if ( typeof dest == "string" && jQuery ( "#" + dest ) . length == 1 ) {
dest = jQuery ( "#" + dest ) . offset ( ) . top ;
} else {
dest = 0 ;
}
this . $body . animate ( { scrollTop : dest } , this . setting . scrollduration ) ; * /
page . showUshio ( ) ;
} , keepfixed : function ( ) {
var $window = jQuery ( window ) ;
var controlx = $window . scrollLeft ( ) + $window . width ( ) - this . $control . width ( ) - this . controlattrs . offsetx ;
var controly = $window . scrollTop ( ) + $window . height ( ) - this . $control . height ( ) - this . controlattrs . offsety ;
this . $control . css ( { left : controlx + "px" , top : controly + "px" } ) ;
} , togglecontrol : function ( ) {
var scrolltop = jQuery ( window ) . scrollTop ( ) ;
if ( ! this . cssfixedsupport ) {
this . keepfixed ( ) ;
}
this . state . shouldvisible = ( scrolltop >= this . setting . startline ) ? true : false ;
if ( this . state . shouldvisible && ! this . state . isvisible ) {
this . $control . stop ( ) . animate ( { opacity : 1 } , this . setting . fadeduration [ 0 ] ) ;
this . state . isvisible = true ;
} else {
if ( this . state . shouldvisible == false && this . state . isvisible ) {
this . $control . stop ( ) . animate ( { opacity : 0 } , this . setting . fadeduration [ 1 ] ) ;
this . state . isvisible = false ;
}
}
} , init : function ( ) {
jQuery ( document ) . ready ( function ( $ ) {
var mainobj = page . setting ;
var iebrws = document . all ;
mainobj . cssfixedsupport = ! iebrws || iebrws && document . compatMode == "CSS1Compat" && window . XMLHttpRequest ;
mainobj . $body = ( window . opera ) ? ( document . compatMode == "CSS1Compat" ? $ ( "html" ) : $ ( "body" ) ) : $ ( "html,body" ) ;
mainobj . $control = $ ( '<div id="_setting" >' + mainobj . controlHTML + "</div>" ) . css ( { position : mainobj . cssfixedsupport ? "fixed" : "absolute" , 'z-index' : 9999999 , bottom : mainobj . controlattrs . offsety , right : mainobj . controlattrs . offsetx , opacity : 0 , cursor : "pointer" } ) . attr ( { title : "Ushio Setting" } ) . click ( function ( ) { /*mainobj.scrollup();return false;*/ } ) . appendTo ( "body" ) ; if ( document . all && ! window . XMLHttpRequest && mainobj . $control . text ( ) != "" ) { mainobj . $control . css ( { width : mainobj . $control . width ( ) } ) ; } mainobj . togglecontrol ( ) ;
//$('a[href="'+mainobj.anchorkeyword+'"]').click(function(){mainobj.scrollup();return false;});
$ ( window ) . bind ( "scroll resize" , function ( e ) { /*mainobj.togglecontrol();*/ } ) ;
$ ( '#_setting' ) . draggable ( ) ;
$ ( '#_setting' ) . on ( ( 'ontouchend' in document ) ? 'touchstart' : 'mousedown' , function ( ) {
mainobj . lastStartTime = new Date ( ) . valueOf ( ) ;
} ) ;
$ ( '#_setting' ) . on ( ( 'ontouchend' in document ) ? 'touchend' : 'mouseup' , function ( ) {
mainobj . lastStopTime = new Date ( ) . valueOf ( ) ;
if ( mainobj . lastStopTime - mainobj . lastStartTime > 0 && mainobj . lastStopTime - mainobj . lastStartTime < 370 ) {
mainobj . scrollup ( ) ;
}
} ) ;
} ) ;
}
} ;
if ( typeof block _setting == "undefined" ) {
page . setting . init ( ) ;
}
/* session health */
SessionLastCntTime = new Date ( ) . valueOf ( ) ;
var session _errCnt = 1 ;
var session _ignore = false ;
setInterval ( ( ) => {
if ( session . status ) {
SessionLastCntTime = new Date ( ) . valueOf ( ) ;
}
if ( ! page . window ) return ;
if ( page . LastWindowOpenTime > new Date ( ) . valueOf ( ) - 10000 ) SessionLastCntTime = page . LastWindowOpenTime ;
if ( new Date ( ) . valueOf ( ) - SessionLastCntTime > 10000 ) {
console . log ( 'Session unhealthy!!' ) ;
session _ajax _ini ( session _errCnt ++ % 2 ) ;
}
if ( ! session _ignore && new Date ( ) . valueOf ( ) - SessionLastCntTime > 30000 ) {
tips . question ( {
timeout : 9999999 ,
title : 'Warning' ,
message : 'Session Lost!! Do you want to reload this page?' ,
position : 'center' ,
color : 'red' ,
buttons : [
[ '<button><b>YES</b></button>' , function ( instance , toast ) {
window . location . reload ( ) ;
throw new Error ( 'ushio::Page Reload!' ) ;
instance . hide ( { transitionOut : 'fadeOut' } , toast , 'button' ) ;
} , true ] ,
[ '<button>NO</button>' , function ( instance , toast ) {
instance . hide ( { transitionOut : 'fadeOut' } , toast , 'button' ) ;
session _ignore = true ;
} ] ,
]
} ) ;
}
} , 7000 ) ;
/* brand */
function drawBrand ( ) {
if ( ! session . status ) {
session _ajax _ini ( ) ;
}
console . log ( '\n' + ' %c Ushio ' + page . version + ' %c ' + page . ip + ' %c ' + ( ( session . method == 'WebSocket' ) ? 'WebSocket' : 'Ajax' ) + ' %c https://ushio.cool/ \n' , 'color: #FFFFCC; background: #030307; padding:5px 0;' , 'color: #FF99FF; background: #030307; padding:5px 0;' , 'color: ' + ( ( session . method == 'WebSocket' ) ? '#91FF3A' : '#F8FF00' ) + '; background: #030307; padding:5px 0;' , 'background: #4682B4; padding:5px 0;' ) ;
}