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 */
if ( typeof block _md5 == "undefined" ) document . write ( '<script src="https://cdn.yimian.xyz/ushio-js/jquery.md5.min.js"></script>' ) ;
/* 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" ) {
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!' ) ;
}
} ) ;
}
/* 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 ) : "" ) ) ;
}
}
} ;
/* 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 ;
}
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 . 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 . 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 . 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 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' ) ;
} ) ;
session . onload ( function ( ) {
if ( typeof block _aplayer == "undefined" ) {
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 = page . lang . concat ( JSON . parse ( atob ( session . get ( 'lang' ) ) ) ) ;
cookie . set ( '_lang' , session . get ( '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 ) ? '477215840' : session . get ( 'aplayer/playing' ) ) + "&limit=15&random=true" , function ( e ) {
$ . post ( "https://api.yimian.xyz/msc/?type=playlist&id=" + ( ( typeof aplayer _playlist == "undefined" ) ? '808097971' : 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 ) {
params . title = "info" ;
}
tipsObj . info ( params ) ;
} ,
warning : function ( params ) {
tips . checkParams ( params ) ;
if ( params . title === undefined ) {
params . title = "warning" ;
}
tipsObj . warning ( params ) ;
} ,
success : function ( params ) {
tips . checkParams ( params ) ;
if ( params . title === undefined ) {
params . title = "success" ;
}
tipsObj . success ( params ) ;
} ,
error : function ( params ) {
tips . checkParams ( params ) ;
if ( params . title === undefined ) {
params . title = "error" ;
}
tipsObj . error ( params ) ;
} ,
question : function ( params ) {
tips . checkParams ( params ) ;
if ( params . title === undefined ) {
params . title = "question" ;
}
tipsObj . question ( params ) ;
} ,
checkParams : function ( params ) {
if ( params . position === undefined ) {
params . position = "topCenter" ;
}
if ( params . message === undefined ) {
params . message = "No Content!!" ;
}
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' ;
}
}
}
/* Ushio Selection */
page . showUshio = function ( proj ) {
if ( page . tran . getLang ( ) == 'zh' ) {
var title = '小汐菜单' ;
var guide = '导航' ;
var cool = '主页' ;
var github = '源码' ;
var setting = '设置' ;
var close = '关闭' ;
} else {
var title = 'Ushio Menu' ;
var guide = 'Guide' ;
var cool = 'Cool' ;
var github = 'Github' ;
var setting = 'Setting' ;
var close = 'Close' ;
}
tips . question ( {
timeout : 20000 ,
close : false ,
overlay : true ,
id : 'ushio-selection' ,
zindex : 999 ,
title : title ,
color : '#80cbff' ,
message : '' ,
position : 'center' ,
buttons : [
[ '<button>' + guide + '</button>' , function ( instance , toast ) {
window . location . href = 'https://guide.yimian.xyz/' ;
instance . hide ( { transitionOut : 'fadeOut' } , toast , 'button' ) ;
} , true ] ,
[ '<button>' + cool + '</button>' , function ( instance , toast ) {
window . location . href = 'https://ushio.cool/' ;
instance . hide ( { transitionOut : 'fadeOut' } , toast , 'button' ) ;
} , true ] ,
[ '<button>' + github + '</button>' , function ( instance , toast ) {
window . location . href = 'https://github.com/iotcat/' + 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 ]
]
} ) ;
}
/* brand */
function drawBrand ( ) {
if ( ! session . status ) {
session _ajax _ini ( ) ;
}
console . log ( '\n' + ' %c Ushio v3.3.2 %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;' ) ;
}
/* session health */
SessionLastCntTime = new Date ( ) . valueOf ( ) ;
var session _errCnt = 1 ;
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 ( new Date ( ) . valueOf ( ) - SessionLastCntTime > 30000 ) {
alert ( 'Session Error!!! Page will reload!' ) ;
window . location . reload ( ) ;
throw new Error ( 'ushio::Page Reload!' ) ;
}
} , 7000 ) ;