From d7e2cf8804bb14951000851a220464766a867682 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sat, 23 Nov 2024 14:29:33 +0000 Subject: [PATCH 01/34] cleanup --- src/Yavsc/Avatars-Dev/Paul Schneider.png | Bin 38619 -> 0 bytes src/Yavsc/Avatars-Dev/Paul Schneider.s.png | Bin 10946 -> 0 bytes src/Yavsc/Avatars-Dev/Paul Schneider.xs.png | Bin 3128 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/Yavsc/Avatars-Dev/Paul Schneider.png delete mode 100644 src/Yavsc/Avatars-Dev/Paul Schneider.s.png delete mode 100644 src/Yavsc/Avatars-Dev/Paul Schneider.xs.png diff --git a/src/Yavsc/Avatars-Dev/Paul Schneider.png b/src/Yavsc/Avatars-Dev/Paul Schneider.png deleted file mode 100644 index aec46ec75525c67d13add4b76752df400d38a7d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38619 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�R(9Z~KJygwS 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鰥@qU9;B~opb*U<4&+%mQ$h=+QoI6$j( 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 DM2p%t diff --git a/src/Yavsc/Avatars-Dev/Paul Schneider.s.png b/src/Yavsc/Avatars-Dev/Paul Schneider.s.png deleted file mode 100644 index e50b9632a5bd303db425170703d63923f15828dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10946 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 diff --git a/src/Yavsc/Avatars-Dev/Paul Schneider.xs.png b/src/Yavsc/Avatars-Dev/Paul Schneider.xs.png deleted file mode 100644 index 083cdc3f74375527fbea1bfc505ef067234f01f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3128 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 Date: Sun, 24 Nov 2024 17:08:50 +0000 Subject: [PATCH 02/34] Avatar restored --- src/Yavsc/Avatars-Dev/Paul.png | Bin 38619 -> 40080 bytes src/Yavsc/Avatars-Dev/Paul.s.png | Bin 10946 -> 10872 bytes src/Yavsc/Avatars-Dev/Paul.xs.png | Bin 3128 -> 3033 bytes src/Yavsc/Helpers/FileSystemHelpers.cs | 81 +- src/Yavsc/Views/Manage/Index.cshtml | 4 - src/Yavsc/Views/Manage/SetAvatar.cshtml | 10 +- src/Yavsc/Yavsc.csproj | 2 + src/Yavsc/wwwroot/images/it/sofwarelibre.svg | 1126 ++++++++++++++++++ 8 files changed, 1145 insertions(+), 78 deletions(-) create mode 100644 src/Yavsc/wwwroot/images/it/sofwarelibre.svg diff --git a/src/Yavsc/Avatars-Dev/Paul.png b/src/Yavsc/Avatars-Dev/Paul.png index aec46ec75525c67d13add4b76752df400d38a7d1..9b71ef8e1b809be603c4fd4e22d4fc6bc3cbe036 100644 GIT binary patch literal 40080 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 IM6N<$f-DpmU;qFB literal 38619 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�R(9Z~KJygwS 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鰥@qU9;B~opb*U<4&+%mQ$h=+QoI6$j( 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 DM2p%t diff --git a/src/Yavsc/Avatars-Dev/Paul.s.png b/src/Yavsc/Avatars-Dev/Paul.s.png index e50b9632a5bd303db425170703d63923f15828dc..d03ad946d3219c98802384cf32a771044ace814f 100644 GIT binary patch literal 10872 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 diff --git a/src/Yavsc/Avatars-Dev/Paul.xs.png b/src/Yavsc/Avatars-Dev/Paul.xs.png index 083cdc3f74375527fbea1bfc505ef067234f01f3..2ca20445f45b4505a42238b4a80a6d0679b3c508 100644 GIT binary patch delta 3011 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 FV1hz=imd004R>004l5008;`004mK004C` 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 - /// Create avatars - /// - /// - /// - private static void CreateAvatars(this ApplicationUser user, Bitmap source) - { - var dir = Config.SiteSetup.Avatars; - var name = user.UserName + ".png"; - var smallname = user.UserName + ".s.png"; - var xsmallname = user.UserName + ".xs.png"; - using (Bitmap newBMP = new Bitmap(source, 128, 128)) - { - newBMP.Save(Path.Combine( - dir, name), ImageFormat.Png); - } - using (Bitmap newBMP = new Bitmap(source, 64, 64)) - { - newBMP.Save(Path.Combine( - dir, smallname), ImageFormat.Png); - } - using (Bitmap newBMP = new Bitmap(source, 32, 32)) - { - newBMP.Save(Path.Combine( - dir, xsmallname), ImageFormat.Png); - } - } - public static string GetAvatarUri(this ApplicationUser user) { return $"/{Config.SiteSetup.Avatars}/{user.UserName}.png"; @@ -257,42 +227,15 @@ namespace Yavsc.Helpers { FileName = user.UserName + ".png" }; - - var destFileName = Path.Combine(Config.SiteSetup.Avatars, item.FileName); - - var fi = new FileInfo(destFileName); - if (fi.Exists) item.Overriden = true; - Rectangle cropRect = new Rectangle(); - using (var org = formFile.OpenReadStream()) { - Image i = Image.FromStream(org); - using (Bitmap source = new Bitmap(i)) - { - if (i.Width != i.Height) - { - if (i.Width > i.Height) - { - cropRect.X = (i.Width - i.Height) / 2; - cropRect.Y = 0; - cropRect.Width = i.Height; - cropRect.Height = i.Height; - } - else - { - cropRect.X = 0; - cropRect.Y = (i.Height - i.Width) / 2; - cropRect.Width = i.Width; - cropRect.Height = i.Width; - } - using (var cropped = source.Clone(cropRect, source.PixelFormat)) - { - CreateAvatars(user,cropped); - } - } - - } - + using Image image = Image.Load(org); + image.Mutate(x=>x.Resize(128,128)); + image.Save(Path.Combine(Config.SiteSetup.Avatars,item.FileName)); + image.Mutate(x=>x.Resize(64,64)); + image.Save(Path.Combine(Config.SiteSetup.Avatars,user.UserName + ".s.png")); + image.Mutate(x=>x.Resize(32,32)); + image.Save(Path.Combine(Config.SiteSetup.Avatars,user.UserName + ".xs.png")); } item.DestDir = Config.AvatarsOptions.RequestPath.ToUriComponent(); user.Avatar = $"{item.DestDir}/{item.FileName}"; diff --git a/src/Yavsc/Views/Manage/Index.cshtml b/src/Yavsc/Views/Manage/Index.cshtml index 64a173b1..7f23863a 100755 --- a/src/Yavsc/Views/Manage/Index.cshtml +++ b/src/Yavsc/Views/Manage/Index.cshtml @@ -69,10 +69,6 @@ @Model.Logins.Count [Manage] -
Full name:
-
@Model.FullName [@Model.FullName==null?"Set":"Modify"]
-
Address:
@Model.PostalAddress [ + + } @section scripts{ - + } @@ -34,7 +35,7 @@ ", that.document[ 0 ] ).appendTo( element ) + ); + } else if ( nodeName === "tr" ) { + that._createTrPlaceholder( that.currentItem, element ); + } else if ( nodeName === "img" ) { + element.attr( "src", that.currentItem.attr( "src" ) ); + } + + if ( !className ) { + element.css( "visibility", "hidden" ); + } + + return element; + }, + update: function( container, p ) { + + // 1. If a className is set as 'placeholder option, we don't force sizes - + // the class is responsible for that + // 2. The option 'forcePlaceholderSize can be enabled to force it even if a + // class name is specified + if ( className && !o.forcePlaceholderSize ) { + return; + } + + // If the element doesn't have a actual height or width by itself (without + // styles coming from a stylesheet), it receives the inline height and width + // from the dragged item. Or, if it's a tbody or tr, it's going to have a height + // anyway since we're populating them with ", that.document[ 0 ] ) + .attr( "colspan", $( this ).attr( "colspan" ) || 1 ) + .appendTo( targetTr ); + } ); + }, + + _contactContainers: function( event ) { + var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom, + floating, axis, + innermostContainer = null, + innermostIndex = null; + + // Get innermost container that intersects with item + for ( i = this.containers.length - 1; i >= 0; i-- ) { + + // Never consider a container that's located within the item itself + if ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) { + continue; + } + + if ( this._intersectsWith( this.containers[ i ].containerCache ) ) { + + // If we've already found a container and it's more "inner" than this, then continue + if ( innermostContainer && + $.contains( + this.containers[ i ].element[ 0 ], + innermostContainer.element[ 0 ] ) ) { + continue; + } + + innermostContainer = this.containers[ i ]; + innermostIndex = i; + + } else { + + // container doesn't intersect. trigger "out" event if necessary + if ( this.containers[ i ].containerCache.over ) { + this.containers[ i ]._trigger( "out", event, this._uiHash( this ) ); + this.containers[ i ].containerCache.over = 0; + } + } + + } + + // If no intersecting containers found, return + if ( !innermostContainer ) { + return; + } + + // Move the item into the container if it's not there already + if ( this.containers.length === 1 ) { + if ( !this.containers[ innermostIndex ].containerCache.over ) { + this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) ); + this.containers[ innermostIndex ].containerCache.over = 1; + } + } else { + + // When entering a new container, we will find the item with the least distance and + // append our item near it + dist = 10000; + itemWithLeastDistance = null; + floating = innermostContainer.floating || this._isFloating( this.currentItem ); + posProperty = floating ? "left" : "top"; + sizeProperty = floating ? "width" : "height"; + axis = floating ? "pageX" : "pageY"; + + for ( j = this.items.length - 1; j >= 0; j-- ) { + if ( !$.contains( + this.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] ) + ) { + continue; + } + if ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) { + continue; + } + + cur = this.items[ j ].item.offset()[ posProperty ]; + nearBottom = false; + if ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) { + nearBottom = true; + } + + if ( Math.abs( event[ axis ] - cur ) < dist ) { + dist = Math.abs( event[ axis ] - cur ); + itemWithLeastDistance = this.items[ j ]; + this.direction = nearBottom ? "up" : "down"; + } + } + + //Check if dropOnEmpty is enabled + if ( !itemWithLeastDistance && !this.options.dropOnEmpty ) { + return; + } + + if ( this.currentContainer === this.containers[ innermostIndex ] ) { + if ( !this.currentContainer.containerCache.over ) { + this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash() ); + this.currentContainer.containerCache.over = 1; + } + return; + } + + if ( itemWithLeastDistance ) { + this._rearrange( event, itemWithLeastDistance, null, true ); + } else { + this._rearrange( event, null, this.containers[ innermostIndex ].element, true ); + } + this._trigger( "change", event, this._uiHash() ); + this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) ); + this.currentContainer = this.containers[ innermostIndex ]; + + //Update the placeholder + this.options.placeholder.update( this.currentContainer, this.placeholder ); + + //Update scrollParent + this.scrollParent = this.placeholder.scrollParent(); + + //Update overflowOffset + if ( this.scrollParent[ 0 ] !== this.document[ 0 ] && + this.scrollParent[ 0 ].tagName !== "HTML" ) { + this.overflowOffset = this.scrollParent.offset(); + } + + this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) ); + this.containers[ innermostIndex ].containerCache.over = 1; + } + + }, + + _createHelper: function( event ) { + + var o = this.options, + helper = typeof o.helper === "function" ? + $( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) : + ( o.helper === "clone" ? this.currentItem.clone() : this.currentItem ); + + //Add the helper to the DOM if that didn't happen already + if ( !helper.parents( "body" ).length ) { + this.appendTo[ 0 ].appendChild( helper[ 0 ] ); + } + + if ( helper[ 0 ] === this.currentItem[ 0 ] ) { + this._storedCSS = { + width: this.currentItem[ 0 ].style.width, + height: this.currentItem[ 0 ].style.height, + position: this.currentItem.css( "position" ), + top: this.currentItem.css( "top" ), + left: this.currentItem.css( "left" ) + }; + } + + if ( !helper[ 0 ].style.width || o.forceHelperSize ) { + helper.width( this.currentItem.width() ); + } + if ( !helper[ 0 ].style.height || o.forceHelperSize ) { + helper.height( this.currentItem.height() ); + } + + return helper; + + }, + + _adjustOffsetFromHelper: function( obj ) { + if ( typeof obj === "string" ) { + obj = obj.split( " " ); + } + if ( Array.isArray( obj ) ) { + obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 }; + } + if ( "left" in obj ) { + this.offset.click.left = obj.left + this.margins.left; + } + if ( "right" in obj ) { + this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; + } + if ( "top" in obj ) { + this.offset.click.top = obj.top + this.margins.top; + } + if ( "bottom" in obj ) { + this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; + } + }, + + _getParentOffset: function() { + + //Get the offsetParent and cache its position + this.offsetParent = this.helper.offsetParent(); + var po = this.offsetParent.offset(); + + // This is a special case where we need to modify a offset calculated on start, since the + // following happened: + // 1. The position of the helper is absolute, so it's position is calculated based on the + // next positioned parent + // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't + // the document, which means that the scroll is included in the initial calculation of the + // offset of the parent, and never recalculated upon drag + if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== this.document[ 0 ] && + $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) { + po.left += this.scrollParent.scrollLeft(); + po.top += this.scrollParent.scrollTop(); + } + + // This needs to be actually done for all browsers, since pageX/pageY includes + // this information. + if ( this.offsetParent[ 0 ] === this.document[ 0 ].body ) { + po = { top: 0, left: 0 }; + } + + return { + top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ), + left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 ) + }; + + }, + + _getRelativeOffset: function() { + + if ( this.cssPosition === "relative" ) { + var p = this.currentItem.position(); + return { + top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) + + this.scrollParent.scrollTop(), + left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) + + this.scrollParent.scrollLeft() + }; + } else { + return { top: 0, left: 0 }; + } + + }, + + _cacheMargins: function() { + this.margins = { + left: ( parseInt( this.currentItem.css( "marginLeft" ), 10 ) || 0 ), + top: ( parseInt( this.currentItem.css( "marginTop" ), 10 ) || 0 ) + }; + }, + + _cacheHelperProportions: function() { + this.helperProportions = { + width: this.helper.outerWidth(), + height: this.helper.outerHeight() + }; + }, + + _setContainment: function() { + + var ce, co, over, + o = this.options; + if ( o.containment === "parent" ) { + o.containment = this.helper[ 0 ].parentNode; + } + if ( o.containment === "document" || o.containment === "window" ) { + this.containment = [ + 0 - this.offset.relative.left - this.offset.parent.left, + 0 - this.offset.relative.top - this.offset.parent.top, + o.containment === "document" ? + this.document.width() : + this.window.width() - this.helperProportions.width - this.margins.left, + ( o.containment === "document" ? + ( this.document.height() || document.body.parentNode.scrollHeight ) : + this.window.height() || this.document[ 0 ].body.parentNode.scrollHeight + ) - this.helperProportions.height - this.margins.top + ]; + } + + if ( !( /^(document|window|parent)$/ ).test( o.containment ) ) { + ce = $( o.containment )[ 0 ]; + co = $( o.containment ).offset(); + over = ( $( ce ).css( "overflow" ) !== "hidden" ); + + this.containment = [ + co.left + ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) + + ( parseInt( $( ce ).css( "paddingLeft" ), 10 ) || 0 ) - this.margins.left, + co.top + ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) + + ( parseInt( $( ce ).css( "paddingTop" ), 10 ) || 0 ) - this.margins.top, + co.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) - + ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) - + ( parseInt( $( ce ).css( "paddingRight" ), 10 ) || 0 ) - + this.helperProportions.width - this.margins.left, + co.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) - + ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) - + ( parseInt( $( ce ).css( "paddingBottom" ), 10 ) || 0 ) - + this.helperProportions.height - this.margins.top + ]; + } + + }, + + _convertPositionTo: function( d, pos ) { + + if ( !pos ) { + pos = this.position; + } + var mod = d === "absolute" ? 1 : -1, + scroll = this.cssPosition === "absolute" && + !( this.scrollParent[ 0 ] !== this.document[ 0 ] && + $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? + this.offsetParent : + this.scrollParent, + scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName ); + + return { + top: ( + + // The absolute mouse position + pos.top + + + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.relative.top * mod + + + // The offsetParent's offset without borders (offset + border) + this.offset.parent.top * mod - + ( ( this.cssPosition === "fixed" ? + -this.scrollParent.scrollTop() : + ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod ) + ), + left: ( + + // The absolute mouse position + pos.left + + + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.relative.left * mod + + + // The offsetParent's offset without borders (offset + border) + this.offset.parent.left * mod - + ( ( this.cssPosition === "fixed" ? + -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : + scroll.scrollLeft() ) * mod ) + ) + }; + + }, + + _generatePosition: function( event ) { + + var top, left, + o = this.options, + pageX = event.pageX, + pageY = event.pageY, + scroll = this.cssPosition === "absolute" && + !( this.scrollParent[ 0 ] !== this.document[ 0 ] && + $.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ? + this.offsetParent : + this.scrollParent, + scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName ); + + // This is another very weird special case that only happens for relative elements: + // 1. If the css position is relative + // 2. and the scroll parent is the document or similar to the offset parent + // we have to refresh the relative offset during the scroll so there are no jumps + if ( this.cssPosition === "relative" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] && + this.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) { + this.offset.relative = this._getRelativeOffset(); + } + + /* + * - Position constraining - + * Constrain the position to a mix of grid, containment. + */ + + if ( this.originalPosition ) { //If we are not dragging yet, we won't check for options + + if ( this.containment ) { + if ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) { + pageX = this.containment[ 0 ] + this.offset.click.left; + } + if ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) { + pageY = this.containment[ 1 ] + this.offset.click.top; + } + if ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) { + pageX = this.containment[ 2 ] + this.offset.click.left; + } + if ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) { + pageY = this.containment[ 3 ] + this.offset.click.top; + } + } + + if ( o.grid ) { + top = this.originalPageY + Math.round( ( pageY - this.originalPageY ) / + o.grid[ 1 ] ) * o.grid[ 1 ]; + pageY = this.containment ? + ( ( top - this.offset.click.top >= this.containment[ 1 ] && + top - this.offset.click.top <= this.containment[ 3 ] ) ? + top : + ( ( top - this.offset.click.top >= this.containment[ 1 ] ) ? + top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : + top; + + left = this.originalPageX + Math.round( ( pageX - this.originalPageX ) / + o.grid[ 0 ] ) * o.grid[ 0 ]; + pageX = this.containment ? + ( ( left - this.offset.click.left >= this.containment[ 0 ] && + left - this.offset.click.left <= this.containment[ 2 ] ) ? + left : + ( ( left - this.offset.click.left >= this.containment[ 0 ] ) ? + left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : + left; + } + + } + + return { + top: ( + + // The absolute mouse position + pageY - + + // Click offset (relative to the element) + this.offset.click.top - + + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.relative.top - + + // The offsetParent's offset without borders (offset + border) + this.offset.parent.top + + ( ( this.cssPosition === "fixed" ? + -this.scrollParent.scrollTop() : + ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) ) + ), + left: ( + + // The absolute mouse position + pageX - + + // Click offset (relative to the element) + this.offset.click.left - + + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.relative.left - + + // The offsetParent's offset without borders (offset + border) + this.offset.parent.left + + ( ( this.cssPosition === "fixed" ? + -this.scrollParent.scrollLeft() : + scrollIsRootNode ? 0 : scroll.scrollLeft() ) ) + ) + }; + + }, + + _rearrange: function( event, i, a, hardRefresh ) { + + if ( a ) { + a[ 0 ].appendChild( this.placeholder[ 0 ] ); + } else { + i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ], + ( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) ); + } + + //Various things done here to improve the performance: + // 1. we create a setTimeout, that calls refreshPositions + // 2. on the instance, we have a counter variable, that get's higher after every append + // 3. on the local scope, we copy the counter variable, and check in the timeout, + // if it's still the same + // 4. this lets only the last addition to the timeout stack through + this.counter = this.counter ? ++this.counter : 1; + var counter = this.counter; + + this._delay( function() { + if ( counter === this.counter ) { + + //Precompute after each DOM insertion, NOT on mousemove + this.refreshPositions( !hardRefresh ); + } + } ); + + }, + + _clear: function( event, noPropagation ) { + + this.reverting = false; + + // We delay all events that have to be triggered to after the point where the placeholder + // has been removed and everything else normalized again + var i, + delayedTriggers = []; + + // We first have to update the dom position of the actual currentItem + // Note: don't do it if the current item is already removed (by a user), or it gets + // reappended (see #4088) + if ( !this._noFinalSort && this.currentItem.parent().length ) { + this.placeholder.before( this.currentItem ); + } + this._noFinalSort = null; + + if ( this.helper[ 0 ] === this.currentItem[ 0 ] ) { + for ( i in this._storedCSS ) { + if ( this._storedCSS[ i ] === "auto" || this._storedCSS[ i ] === "static" ) { + this._storedCSS[ i ] = ""; + } + } + this.currentItem.css( this._storedCSS ); + this._removeClass( this.currentItem, "ui-sortable-helper" ); + } else { + this.currentItem.show(); + } + + if ( this.fromOutside && !noPropagation ) { + delayedTriggers.push( function( event ) { + this._trigger( "receive", event, this._uiHash( this.fromOutside ) ); + } ); + } + if ( ( this.fromOutside || + this.domPosition.prev !== + this.currentItem.prev().not( ".ui-sortable-helper" )[ 0 ] || + this.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) { + + // Trigger update callback if the DOM position has changed + delayedTriggers.push( function( event ) { + this._trigger( "update", event, this._uiHash() ); + } ); + } + + // Check if the items Container has Changed and trigger appropriate + // events. + if ( this !== this.currentContainer ) { + if ( !noPropagation ) { + delayedTriggers.push( function( event ) { + this._trigger( "remove", event, this._uiHash() ); + } ); + delayedTriggers.push( ( function( c ) { + return function( event ) { + c._trigger( "receive", event, this._uiHash( this ) ); + }; + } ).call( this, this.currentContainer ) ); + delayedTriggers.push( ( function( c ) { + return function( event ) { + c._trigger( "update", event, this._uiHash( this ) ); + }; + } ).call( this, this.currentContainer ) ); + } + } + + //Post events to containers + function delayEvent( type, instance, container ) { + return function( event ) { + container._trigger( type, event, instance._uiHash( instance ) ); + }; + } + for ( i = this.containers.length - 1; i >= 0; i-- ) { + if ( !noPropagation ) { + delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) ); + } + if ( this.containers[ i ].containerCache.over ) { + delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) ); + this.containers[ i ].containerCache.over = 0; + } + } + + //Do what was originally in plugins + if ( this._storedStylesheet ) { + this._storedStylesheet.remove(); + this._storedStylesheet = null; + } + if ( this._storedOpacity ) { + this.helper.css( "opacity", this._storedOpacity ); + } + if ( this._storedZIndex ) { + this.helper.css( "zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex ); + } + + this.dragging = false; + + if ( !noPropagation ) { + this._trigger( "beforeStop", event, this._uiHash() ); + } + + //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, + // it unbinds ALL events from the original node! + this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] ); + + if ( !this.cancelHelperRemoval ) { + if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) { + this.helper.remove(); + } + this.helper = null; + } + + if ( !noPropagation ) { + for ( i = 0; i < delayedTriggers.length; i++ ) { + + // Trigger all delayed events + delayedTriggers[ i ].call( this, event ); + } + this._trigger( "stop", event, this._uiHash() ); + } + + this.fromOutside = false; + return !this.cancelHelperRemoval; + + }, + + _trigger: function() { + if ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) { + this.cancel(); + } + }, + + _uiHash: function( _inst ) { + var inst = _inst || this; + return { + helper: inst.helper, + placeholder: inst.placeholder || $( [] ), + position: inst.position, + originalPosition: inst.originalPosition, + offset: inst.positionAbs, + item: inst.currentItem, + sender: _inst ? _inst.element : null + }; + } + +} ); + + +/*! + * jQuery UI Accordion 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Accordion +//>>group: Widgets +/* eslint-disable max-len */ +//>>description: Displays collapsible content panels for presenting information in a limited amount of space. +/* eslint-enable max-len */ +//>>docs: https://api.jqueryui.com/accordion/ +//>>demos: https://jqueryui.com/accordion/ +//>>css.structure: ../../themes/base/core.css +//>>css.structure: ../../themes/base/accordion.css +//>>css.theme: ../../themes/base/theme.css + + +var widgetsAccordion = $.widget( "ui.accordion", { + version: "1.14.1", + options: { + active: 0, + animate: {}, + classes: { + "ui-accordion-header": "ui-corner-top", + "ui-accordion-header-collapsed": "ui-corner-all", + "ui-accordion-content": "ui-corner-bottom" + }, + collapsible: false, + event: "click", + header: function( elem ) { + return elem + .find( "> li > :first-child" ) + .add( + elem.find( "> :not(li)" ) + + // Support: jQuery <3.5 only + // We could use `.even()` but that's unavailable in older jQuery. + .filter( function( i ) { + return i % 2 === 0; + } ) + ); + }, + heightStyle: "auto", + icons: { + activeHeader: "ui-icon-triangle-1-s", + header: "ui-icon-triangle-1-e" + }, + + // Callbacks + activate: null, + beforeActivate: null + }, + + hideProps: { + borderTopWidth: "hide", + borderBottomWidth: "hide", + paddingTop: "hide", + paddingBottom: "hide", + height: "hide" + }, + + showProps: { + borderTopWidth: "show", + borderBottomWidth: "show", + paddingTop: "show", + paddingBottom: "show", + height: "show" + }, + + _create: function() { + var options = this.options; + + this.prevShow = this.prevHide = $(); + this._addClass( "ui-accordion", "ui-widget ui-helper-reset" ); + this.element.attr( "role", "tablist" ); + + // Don't allow collapsible: false and active: false / null + if ( !options.collapsible && ( options.active === false || options.active == null ) ) { + options.active = 0; + } + + this._processPanels(); + + // handle negative values + if ( options.active < 0 ) { + options.active += this.headers.length; + } + this._refresh(); + }, + + _getCreateEventData: function() { + return { + header: this.active, + panel: !this.active.length ? $() : this.active.next() + }; + }, + + _createIcons: function() { + var icon, children, + icons = this.options.icons; + + if ( icons ) { + icon = $( "" ); + this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header ); + icon.prependTo( this.headers ); + children = this.active.children( ".ui-accordion-header-icon" ); + this._removeClass( children, icons.header ) + ._addClass( children, null, icons.activeHeader ) + ._addClass( this.headers, "ui-accordion-icons" ); + } + }, + + _destroyIcons: function() { + this._removeClass( this.headers, "ui-accordion-icons" ); + this.headers.children( ".ui-accordion-header-icon" ).remove(); + }, + + _destroy: function() { + var contents; + + // Clean up main element + this.element.removeAttr( "role" ); + + // Clean up headers + this.headers + .removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" ) + .removeUniqueId(); + + this._destroyIcons(); + + // Clean up content panels + contents = this.headers.next() + .css( "display", "" ) + .removeAttr( "role aria-hidden aria-labelledby" ) + .removeUniqueId(); + + if ( this.options.heightStyle !== "content" ) { + contents.css( "height", "" ); + } + }, + + _setOption: function( key, value ) { + if ( key === "active" ) { + + // _activate() will handle invalid values and update this.options + this._activate( value ); + return; + } + + if ( key === "event" ) { + if ( this.options.event ) { + this._off( this.headers, this.options.event ); + } + this._setupEvents( value ); + } + + this._super( key, value ); + + // Setting collapsible: false while collapsed; open first panel + if ( key === "collapsible" && !value && this.options.active === false ) { + this._activate( 0 ); + } + + if ( key === "icons" ) { + this._destroyIcons(); + if ( value ) { + this._createIcons(); + } + } + }, + + _setOptionDisabled: function( value ) { + this._super( value ); + + this.element.attr( "aria-disabled", value ); + this._toggleClass( null, "ui-state-disabled", !!value ); + }, + + _keydown: function( event ) { + if ( event.altKey || event.ctrlKey ) { + return; + } + + var keyCode = $.ui.keyCode, + length = this.headers.length, + currentIndex = this.headers.index( event.target ), + toFocus = false; + + switch ( event.keyCode ) { + case keyCode.RIGHT: + case keyCode.DOWN: + toFocus = this.headers[ ( currentIndex + 1 ) % length ]; + break; + case keyCode.LEFT: + case keyCode.UP: + toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; + break; + case keyCode.SPACE: + case keyCode.ENTER: + this._eventHandler( event ); + break; + case keyCode.HOME: + toFocus = this.headers[ 0 ]; + break; + case keyCode.END: + toFocus = this.headers[ length - 1 ]; + break; + } + + if ( toFocus ) { + $( event.target ).attr( "tabIndex", -1 ); + $( toFocus ).attr( "tabIndex", 0 ); + $( toFocus ).trigger( "focus" ); + event.preventDefault(); + } + }, + + _panelKeyDown: function( event ) { + if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { + $( event.currentTarget ).prev().trigger( "focus" ); + } + }, + + refresh: function() { + var options = this.options; + this._processPanels(); + + // Was collapsed or no panel + if ( ( options.active === false && options.collapsible === true ) || + !this.headers.length ) { + options.active = false; + this.active = $(); + + // active false only when collapsible is true + } else if ( options.active === false ) { + this._activate( 0 ); + + // was active, but active panel is gone + } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { + + // all remaining panel are disabled + if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) { + options.active = false; + this.active = $(); + + // activate previous panel + } else { + this._activate( Math.max( 0, options.active - 1 ) ); + } + + // was active, active panel still exists + } else { + + // make sure active index is correct + options.active = this.headers.index( this.active ); + } + + this._destroyIcons(); + + this._refresh(); + }, + + _processPanels: function() { + var prevHeaders = this.headers, + prevPanels = this.panels; + + if ( typeof this.options.header === "function" ) { + this.headers = this.options.header( this.element ); + } else { + this.headers = this.element.find( this.options.header ); + } + this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed", + "ui-state-default" ); + + this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide(); + this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" ); + + // Avoid memory leaks (#10056) + if ( prevPanels ) { + this._off( prevHeaders.not( this.headers ) ); + this._off( prevPanels.not( this.panels ) ); + } + }, + + _refresh: function() { + var maxHeight, + options = this.options, + heightStyle = options.heightStyle, + parent = this.element.parent(); + + this.active = this._findActive( options.active ); + this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" ) + ._removeClass( this.active, "ui-accordion-header-collapsed" ); + this._addClass( this.active.next(), "ui-accordion-content-active" ); + this.active.next().show(); + + this.headers + .attr( "role", "tab" ) + .each( function() { + var header = $( this ), + headerId = header.uniqueId().attr( "id" ), + panel = header.next(), + panelId = panel.uniqueId().attr( "id" ); + header.attr( "aria-controls", panelId ); + panel.attr( "aria-labelledby", headerId ); + } ) + .next() + .attr( "role", "tabpanel" ); + + this.headers + .not( this.active ) + .attr( { + "aria-selected": "false", + "aria-expanded": "false", + tabIndex: -1 + } ) + .next() + .attr( { + "aria-hidden": "true" + } ) + .hide(); + + // Make sure at least one header is in the tab order + if ( !this.active.length ) { + this.headers.eq( 0 ).attr( "tabIndex", 0 ); + } else { + this.active.attr( { + "aria-selected": "true", + "aria-expanded": "true", + tabIndex: 0 + } ) + .next() + .attr( { + "aria-hidden": "false" + } ); + } + + this._createIcons(); + + this._setupEvents( options.event ); + + if ( heightStyle === "fill" ) { + maxHeight = parent.height(); + this.element.siblings( ":visible" ).each( function() { + var elem = $( this ), + position = elem.css( "position" ); + + if ( position === "absolute" || position === "fixed" ) { + return; + } + maxHeight -= elem.outerHeight( true ); + } ); + + this.headers.each( function() { + maxHeight -= $( this ).outerHeight( true ); + } ); + + this.headers.next() + .each( function() { + $( this ).height( Math.max( 0, maxHeight - + $( this ).innerHeight() + $( this ).height() ) ); + } ) + .css( "overflow", "auto" ); + } else if ( heightStyle === "auto" ) { + maxHeight = 0; + this.headers.next() + .each( function() { + var isVisible = $( this ).is( ":visible" ); + if ( !isVisible ) { + $( this ).show(); + } + maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); + if ( !isVisible ) { + $( this ).hide(); + } + } ) + .height( maxHeight ); + } + }, + + _activate: function( index ) { + var active = this._findActive( index )[ 0 ]; + + // Trying to activate the already active panel + if ( active === this.active[ 0 ] ) { + return; + } + + // Trying to collapse, simulate a click on the currently active header + active = active || this.active[ 0 ]; + + this._eventHandler( { + target: active, + currentTarget: active, + preventDefault: $.noop + } ); + }, + + _findActive: function( selector ) { + return typeof selector === "number" ? this.headers.eq( selector ) : $(); + }, + + _setupEvents: function( event ) { + var events = { + keydown: "_keydown" + }; + if ( event ) { + $.each( event.split( " " ), function( index, eventName ) { + events[ eventName ] = "_eventHandler"; + } ); + } + + this._off( this.headers.add( this.headers.next() ) ); + this._on( this.headers, events ); + this._on( this.headers.next(), { keydown: "_panelKeyDown" } ); + this._hoverable( this.headers ); + this._focusable( this.headers ); + }, + + _eventHandler: function( event ) { + var activeChildren, clickedChildren, + options = this.options, + active = this.active, + clicked = $( event.currentTarget ), + clickedIsActive = clicked[ 0 ] === active[ 0 ], + collapsing = clickedIsActive && options.collapsible, + toShow = collapsing ? $() : clicked.next(), + toHide = active.next(), + eventData = { + oldHeader: active, + oldPanel: toHide, + newHeader: collapsing ? $() : clicked, + newPanel: toShow + }; + + event.preventDefault(); + + if ( + + // click on active header, but not collapsible + ( clickedIsActive && !options.collapsible ) || + + // allow canceling activation + ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { + return; + } + + options.active = collapsing ? false : this.headers.index( clicked ); + + // When the call to ._toggle() comes after the class changes + // it causes a very odd bug in IE 8 (see #6720) + this.active = clickedIsActive ? $() : clicked; + this._toggle( eventData ); + + // Switch classes + // corner classes on the previously active header stay after the animation + this._removeClass( active, "ui-accordion-header-active", "ui-state-active" ); + if ( options.icons ) { + activeChildren = active.children( ".ui-accordion-header-icon" ); + this._removeClass( activeChildren, null, options.icons.activeHeader ) + ._addClass( activeChildren, null, options.icons.header ); + } + + if ( !clickedIsActive ) { + this._removeClass( clicked, "ui-accordion-header-collapsed" ) + ._addClass( clicked, "ui-accordion-header-active", "ui-state-active" ); + if ( options.icons ) { + clickedChildren = clicked.children( ".ui-accordion-header-icon" ); + this._removeClass( clickedChildren, null, options.icons.header ) + ._addClass( clickedChildren, null, options.icons.activeHeader ); + } + + this._addClass( clicked.next(), "ui-accordion-content-active" ); + } + }, + + _toggle: function( data ) { + var toShow = data.newPanel, + toHide = this.prevShow.length ? this.prevShow : data.oldPanel; + + // Handle activating a panel during the animation for another activation + this.prevShow.add( this.prevHide ).stop( true, true ); + this.prevShow = toShow; + this.prevHide = toHide; + + if ( this.options.animate ) { + this._animate( toShow, toHide, data ); + } else { + toHide.hide(); + toShow.show(); + this._toggleComplete( data ); + } + + toHide.attr( { + "aria-hidden": "true" + } ); + toHide.prev().attr( { + "aria-selected": "false", + "aria-expanded": "false" + } ); + + // if we're switching panels, remove the old header from the tab order + // if we're opening from collapsed state, remove the previous header from the tab order + // if we're collapsing, then keep the collapsing header in the tab order + if ( toShow.length && toHide.length ) { + toHide.prev().attr( { + "tabIndex": -1, + "aria-expanded": "false" + } ); + } else if ( toShow.length ) { + this.headers.filter( function() { + return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0; + } ) + .attr( "tabIndex", -1 ); + } + + toShow + .attr( "aria-hidden", "false" ) + .prev() + .attr( { + "aria-selected": "true", + "aria-expanded": "true", + tabIndex: 0 + } ); + }, + + _animate: function( toShow, toHide, data ) { + var total, easing, duration, + that = this, + adjust = 0, + boxSizing = toShow.css( "box-sizing" ), + down = toShow.length && + ( !toHide.length || ( toShow.index() < toHide.index() ) ), + animate = this.options.animate || {}, + options = down && animate.down || animate, + complete = function() { + that._toggleComplete( data ); + }; + + if ( typeof options === "number" ) { + duration = options; + } + if ( typeof options === "string" ) { + easing = options; + } + + // fall back from options to animation in case of partial down settings + easing = easing || options.easing || animate.easing; + duration = duration || options.duration || animate.duration; + + if ( !toHide.length ) { + return toShow.animate( this.showProps, duration, easing, complete ); + } + if ( !toShow.length ) { + return toHide.animate( this.hideProps, duration, easing, complete ); + } + + total = toShow.show().outerHeight(); + toHide.animate( this.hideProps, { + duration: duration, + easing: easing, + step: function( now, fx ) { + fx.now = Math.round( now ); + } + } ); + toShow + .hide() + .animate( this.showProps, { + duration: duration, + easing: easing, + complete: complete, + step: function( now, fx ) { + fx.now = Math.round( now ); + if ( fx.prop !== "height" ) { + if ( boxSizing === "content-box" ) { + adjust += fx.now; + } + } else if ( that.options.heightStyle !== "content" ) { + fx.now = Math.round( total - toHide.outerHeight() - adjust ); + adjust = 0; + } + } + } ); + }, + + _toggleComplete: function( data ) { + var toHide = data.oldPanel, + prev = toHide.prev(); + + this._removeClass( toHide, "ui-accordion-content-active" ); + this._removeClass( prev, "ui-accordion-header-active" ) + ._addClass( prev, "ui-accordion-header-collapsed" ); + + this._trigger( "activate", null, data ); + } +} ); + + +/*! + * jQuery UI Menu 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Menu +//>>group: Widgets +//>>description: Creates nestable menus. +//>>docs: https://api.jqueryui.com/menu/ +//>>demos: https://jqueryui.com/menu/ +//>>css.structure: ../../themes/base/core.css +//>>css.structure: ../../themes/base/menu.css +//>>css.theme: ../../themes/base/theme.css + + +var widgetsMenu = $.widget( "ui.menu", { + version: "1.14.1", + defaultElement: "
    ", + delay: 300, + options: { + icons: { + submenu: "ui-icon-caret-1-e" + }, + items: "> *", + menus: "ul", + position: { + my: "left top", + at: "right top" + }, + role: "menu", + + // Callbacks + blur: null, + focus: null, + select: null + }, + + _create: function() { + this.activeMenu = this.element; + + // Flag used to prevent firing of the click handler + // as the event bubbles up through nested menus + this.mouseHandled = false; + this.lastMousePosition = { x: null, y: null }; + this.element + .uniqueId() + .attr( { + role: this.options.role, + tabIndex: 0 + } ); + + this._addClass( "ui-menu", "ui-widget ui-widget-content" ); + this._on( { + + // Prevent focus from sticking to links inside menu after clicking + // them (focus should always stay on UL during navigation). + "mousedown .ui-menu-item": function( event ) { + event.preventDefault(); + + this._activateItem( event ); + }, + "click .ui-menu-item": function( event ) { + var target = $( event.target ); + var active = $( this.document[ 0 ].activeElement ); + if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) { + this.select( event ); + + // Only set the mouseHandled flag if the event will bubble, see #9469. + if ( !event.isPropagationStopped() ) { + this.mouseHandled = true; + } + + // Open submenu on click + if ( target.has( ".ui-menu" ).length ) { + this.expand( event ); + } else if ( !this.element.is( ":focus" ) && + active.closest( ".ui-menu" ).length ) { + + // Redirect focus to the menu + this.element.trigger( "focus", [ true ] ); + + // If the active item is on the top level, let it stay active. + // Otherwise, blur the active item since it is no longer visible. + if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) { + clearTimeout( this.timer ); + } + } + } + }, + "mouseenter .ui-menu-item": "_activateItem", + "mousemove .ui-menu-item": "_activateItem", + mouseleave: "collapseAll", + "mouseleave .ui-menu": "collapseAll", + focus: function( event, keepActiveItem ) { + + // If there's already an active item, keep it active + // If not, activate the first item + var item = this.active || this._menuItems().first(); + + if ( !keepActiveItem ) { + this.focus( event, item ); + } + }, + blur: function( event ) { + this._delay( function() { + var notContained = !$.contains( + this.element[ 0 ], + this.document[ 0 ].activeElement + ); + if ( notContained ) { + this.collapseAll( event ); + } + } ); + }, + keydown: "_keydown" + } ); + + this.refresh(); + + // Clicks outside of a menu collapse any open menus + this._on( this.document, { + click: function( event ) { + if ( this._closeOnDocumentClick( event ) ) { + this.collapseAll( event, true ); + } + + // Reset the mouseHandled flag + this.mouseHandled = false; + } + } ); + }, + + _activateItem: function( event ) { + + // Ignore mouse events while typeahead is active, see #10458. + // Prevents focusing the wrong item when typeahead causes a scroll while the mouse + // is over an item in the menu + if ( this.previousFilter ) { + return; + } + + // If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356) + if ( event.clientX === this.lastMousePosition.x && + event.clientY === this.lastMousePosition.y ) { + return; + } + + this.lastMousePosition = { + x: event.clientX, + y: event.clientY + }; + + var actualTarget = $( event.target ).closest( ".ui-menu-item" ), + target = $( event.currentTarget ); + + // Ignore bubbled events on parent items, see #11641 + if ( actualTarget[ 0 ] !== target[ 0 ] ) { + return; + } + + // If the item is already active, there's nothing to do + if ( target.is( ".ui-state-active" ) ) { + return; + } + + // Remove ui-state-active class from siblings of the newly focused menu item + // to avoid a jump caused by adjacent elements both having a class with a border + this._removeClass( target.siblings().children( ".ui-state-active" ), + null, "ui-state-active" ); + this.focus( event, target ); + }, + + _destroy: function() { + var items = this.element.find( ".ui-menu-item" ) + .removeAttr( "role aria-disabled" ), + submenus = items.children( ".ui-menu-item-wrapper" ) + .removeUniqueId() + .removeAttr( "tabIndex role aria-haspopup" ); + + // Destroy (sub)menus + this.element + .removeAttr( "aria-activedescendant" ) + .find( ".ui-menu" ).addBack() + .removeAttr( "role aria-labelledby aria-expanded aria-hidden aria-disabled " + + "tabIndex" ) + .removeUniqueId() + .show(); + + submenus.children().each( function() { + var elem = $( this ); + if ( elem.data( "ui-menu-submenu-caret" ) ) { + elem.remove(); + } + } ); + }, + + _keydown: function( event ) { + var match, prev, character, skip, + preventDefault = true; + + switch ( event.keyCode ) { + case $.ui.keyCode.PAGE_UP: + this.previousPage( event ); + break; + case $.ui.keyCode.PAGE_DOWN: + this.nextPage( event ); + break; + case $.ui.keyCode.HOME: + this._move( "first", "first", event ); + break; + case $.ui.keyCode.END: + this._move( "last", "last", event ); + break; + case $.ui.keyCode.UP: + this.previous( event ); + break; + case $.ui.keyCode.DOWN: + this.next( event ); + break; + case $.ui.keyCode.LEFT: + this.collapse( event ); + break; + case $.ui.keyCode.RIGHT: + if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { + this.expand( event ); + } + break; + case $.ui.keyCode.ENTER: + case $.ui.keyCode.SPACE: + this._activate( event ); + break; + case $.ui.keyCode.ESCAPE: + this.collapse( event ); + break; + default: + preventDefault = false; + prev = this.previousFilter || ""; + skip = false; + + // Support number pad values + character = event.keyCode >= 96 && event.keyCode <= 105 ? + ( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode ); + + clearTimeout( this.filterTimer ); + + if ( character === prev ) { + skip = true; + } else { + character = prev + character; + } + + match = this._filterMenuItems( character ); + match = skip && match.index( this.active.next() ) !== -1 ? + this.active.nextAll( ".ui-menu-item" ) : + match; + + // If no matches on the current filter, reset to the last character pressed + // to move down the menu to the first item that starts with that character + if ( !match.length ) { + character = String.fromCharCode( event.keyCode ); + match = this._filterMenuItems( character ); + } + + if ( match.length ) { + this.focus( event, match ); + this.previousFilter = character; + this.filterTimer = this._delay( function() { + delete this.previousFilter; + }, 1000 ); + } else { + delete this.previousFilter; + } + } + + if ( preventDefault ) { + event.preventDefault(); + } + }, + + _activate: function( event ) { + if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { + if ( this.active.children( "[aria-haspopup='true']" ).length ) { + this.expand( event ); + } else { + this.select( event ); + } + } + }, + + refresh: function() { + var menus, items, newSubmenus, newItems, newWrappers, + that = this, + icon = this.options.icons.submenu, + submenus = this.element.find( this.options.menus ); + + this._toggleClass( "ui-menu-icons", null, !!this.element.find( ".ui-icon" ).length ); + + // Initialize nested menus + newSubmenus = submenus.filter( ":not(.ui-menu)" ) + .hide() + .attr( { + role: this.options.role, + "aria-hidden": "true", + "aria-expanded": "false" + } ) + .each( function() { + var menu = $( this ), + item = menu.prev(), + submenuCaret = $( "" ).data( "ui-menu-submenu-caret", true ); + + that._addClass( submenuCaret, "ui-menu-icon", "ui-icon " + icon ); + item + .attr( "aria-haspopup", "true" ) + .prepend( submenuCaret ); + menu.attr( "aria-labelledby", item.attr( "id" ) ); + } ); + + this._addClass( newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front" ); + + menus = submenus.add( this.element ); + items = menus.find( this.options.items ); + + // Initialize menu-items containing spaces and/or dashes only as dividers + items.not( ".ui-menu-item" ).each( function() { + var item = $( this ); + if ( that._isDivider( item ) ) { + that._addClass( item, "ui-menu-divider", "ui-widget-content" ); + } + } ); + + // Don't refresh list items that are already adapted + newItems = items.not( ".ui-menu-item, .ui-menu-divider" ); + newWrappers = newItems.children() + .not( ".ui-menu" ) + .uniqueId() + .attr( { + tabIndex: -1, + role: this._itemRole() + } ); + this._addClass( newItems, "ui-menu-item" ) + ._addClass( newWrappers, "ui-menu-item-wrapper" ); + + // Add aria-disabled attribute to any disabled menu item + items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" ); + + // If the active item has been removed, blur the menu + if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { + this.blur(); + } + }, + + _itemRole: function() { + return { + menu: "menuitem", + listbox: "option" + }[ this.options.role ]; + }, + + _setOption: function( key, value ) { + if ( key === "icons" ) { + var icons = this.element.find( ".ui-menu-icon" ); + this._removeClass( icons, null, this.options.icons.submenu ) + ._addClass( icons, null, value.submenu ); + } + this._super( key, value ); + }, + + _setOptionDisabled: function( value ) { + this._super( value ); + + this.element.attr( "aria-disabled", String( value ) ); + this._toggleClass( null, "ui-state-disabled", !!value ); + }, + + focus: function( event, item ) { + var nested, focused, activeParent; + this.blur( event, event && event.type === "focus" ); + + this._scrollIntoView( item ); + + this.active = item.first(); + + focused = this.active.children( ".ui-menu-item-wrapper" ); + this._addClass( focused, null, "ui-state-active" ); + + // Only update aria-activedescendant if there's a role + // otherwise we assume focus is managed elsewhere + if ( this.options.role ) { + this.element.attr( "aria-activedescendant", focused.attr( "id" ) ); + } + + // Highlight active parent menu item, if any + activeParent = this.active + .parent() + .closest( ".ui-menu-item" ) + .children( ".ui-menu-item-wrapper" ); + this._addClass( activeParent, null, "ui-state-active" ); + + if ( event && event.type === "keydown" ) { + this._close(); + } else { + this.timer = this._delay( function() { + this._close(); + }, this.delay ); + } + + nested = item.children( ".ui-menu" ); + if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) { + this._startOpening( nested ); + } + this.activeMenu = item.parent(); + + this._trigger( "focus", event, { item: item } ); + }, + + _scrollIntoView: function( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height(); + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }, + + blur: function( event, fromFocus ) { + if ( !fromFocus ) { + clearTimeout( this.timer ); + } + + if ( !this.active ) { + return; + } + + this._removeClass( this.active.children( ".ui-menu-item-wrapper" ), + null, "ui-state-active" ); + + this._trigger( "blur", event, { item: this.active } ); + this.active = null; + }, + + _startOpening: function( submenu ) { + clearTimeout( this.timer ); + + // Don't open if already open fixes a Firefox bug that caused a .5 pixel + // shift in the submenu position when mousing over the caret icon + if ( submenu.attr( "aria-hidden" ) !== "true" ) { + return; + } + + this.timer = this._delay( function() { + this._close(); + this._open( submenu ); + }, this.delay ); + }, + + _open: function( submenu ) { + var position = $.extend( { + of: this.active + }, this.options.position ); + + clearTimeout( this.timer ); + this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) ) + .hide() + .attr( "aria-hidden", "true" ); + + submenu + .show() + .removeAttr( "aria-hidden" ) + .attr( "aria-expanded", "true" ) + .position( position ); + }, + + collapseAll: function( event, all ) { + clearTimeout( this.timer ); + this.timer = this._delay( function() { + + // If we were passed an event, look for the submenu that contains the event + var currentMenu = all ? this.element : + $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); + + // If we found no valid submenu ancestor, use the main menu to close all + // sub menus anyway + if ( !currentMenu.length ) { + currentMenu = this.element; + } + + this._close( currentMenu ); + + this.blur( event ); + + // Work around active item staying active after menu is blurred + this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" ); + + this.activeMenu = currentMenu; + }, all ? 0 : this.delay ); + }, + + // With no arguments, closes the currently active menu - if nothing is active + // it closes all menus. If passed an argument, it will search for menus BELOW + _close: function( startMenu ) { + if ( !startMenu ) { + startMenu = this.active ? this.active.parent() : this.element; + } + + startMenu.find( ".ui-menu" ) + .hide() + .attr( "aria-hidden", "true" ) + .attr( "aria-expanded", "false" ); + }, + + _closeOnDocumentClick: function( event ) { + return !$( event.target ).closest( ".ui-menu" ).length; + }, + + _isDivider: function( item ) { + + // Match hyphen, em dash, en dash + return !/[^\-\u2014\u2013\s]/.test( item.text() ); + }, + + collapse: function( event ) { + var newItem = this.active && + this.active.parent().closest( ".ui-menu-item", this.element ); + if ( newItem && newItem.length ) { + this._close(); + this.focus( event, newItem ); + } + }, + + expand: function( event ) { + var newItem = this.active && this._menuItems( this.active.children( ".ui-menu" ) ).first(); + + if ( newItem && newItem.length ) { + this._open( newItem.parent() ); + + // Delay so Firefox will not hide activedescendant change in expanding submenu from AT + this._delay( function() { + this.focus( event, newItem ); + } ); + } + }, + + next: function( event ) { + this._move( "next", "first", event ); + }, + + previous: function( event ) { + this._move( "prev", "last", event ); + }, + + isFirstItem: function() { + return this.active && !this.active.prevAll( ".ui-menu-item" ).length; + }, + + isLastItem: function() { + return this.active && !this.active.nextAll( ".ui-menu-item" ).length; + }, + + _menuItems: function( menu ) { + return ( menu || this.element ) + .find( this.options.items ) + .filter( ".ui-menu-item" ); + }, + + _move: function( direction, filter, event ) { + var next; + if ( this.active ) { + if ( direction === "first" || direction === "last" ) { + next = this.active + [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" ) + .last(); + } else { + next = this.active + [ direction + "All" ]( ".ui-menu-item" ) + .first(); + } + } + if ( !next || !next.length || !this.active ) { + next = this._menuItems( this.activeMenu )[ filter ](); + } + + this.focus( event, next ); + }, + + nextPage: function( event ) { + var item, base, height; + + if ( !this.active ) { + this.next( event ); + return; + } + if ( this.isLastItem() ) { + return; + } + if ( this._hasScroll() ) { + base = this.active.offset().top; + height = this.element.innerHeight(); + + // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back. + if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) { + height += this.element[ 0 ].offsetHeight - this.element.outerHeight(); + } + + this.active.nextAll( ".ui-menu-item" ).each( function() { + item = $( this ); + return item.offset().top - base - height < 0; + } ); + + this.focus( event, item ); + } else { + this.focus( event, this._menuItems( this.activeMenu ) + [ !this.active ? "first" : "last" ]() ); + } + }, + + previousPage: function( event ) { + var item, base, height; + if ( !this.active ) { + this.next( event ); + return; + } + if ( this.isFirstItem() ) { + return; + } + if ( this._hasScroll() ) { + base = this.active.offset().top; + height = this.element.innerHeight(); + + // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back. + if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) { + height += this.element[ 0 ].offsetHeight - this.element.outerHeight(); + } + + this.active.prevAll( ".ui-menu-item" ).each( function() { + item = $( this ); + return item.offset().top - base + height > 0; + } ); + + this.focus( event, item ); + } else { + this.focus( event, this._menuItems( this.activeMenu ).first() ); + } + }, + + _hasScroll: function() { + return this.element.outerHeight() < this.element.prop( "scrollHeight" ); + }, + + select: function( event ) { + + // TODO: It should never be possible to not have an active item at this + // point, but the tests don't trigger mouseenter before click. + this.active = this.active || $( event.target ).closest( ".ui-menu-item" ); + var ui = { item: this.active }; + if ( !this.active.has( ".ui-menu" ).length ) { + this.collapseAll( event, true ); + } + this._trigger( "select", event, ui ); + }, + + _filterMenuItems: function( character ) { + var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ), + regex = new RegExp( "^" + escapedCharacter, "i" ); + + return this.activeMenu + .find( this.options.items ) + + // Only match on items, not dividers or other content (#10571) + .filter( ".ui-menu-item" ) + .filter( function() { + return regex.test( + String.prototype.trim.call( + $( this ).children( ".ui-menu-item-wrapper" ).text() ) ); + } ); + } +} ); + + +/*! + * jQuery UI Autocomplete 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Autocomplete +//>>group: Widgets +//>>description: Lists suggested words as the user is typing. +//>>docs: https://api.jqueryui.com/autocomplete/ +//>>demos: https://jqueryui.com/autocomplete/ +//>>css.structure: ../../themes/base/core.css +//>>css.structure: ../../themes/base/autocomplete.css +//>>css.theme: ../../themes/base/theme.css + + +$.widget( "ui.autocomplete", { + version: "1.14.1", + defaultElement: "", + options: { + appendTo: null, + autoFocus: false, + delay: 300, + minLength: 1, + position: { + my: "left top", + at: "left bottom", + collision: "none" + }, + source: null, + + // Callbacks + change: null, + close: null, + focus: null, + open: null, + response: null, + search: null, + select: null + }, + + requestIndex: 0, + pending: 0, + liveRegionTimer: null, + + _create: function() { + + // Some browsers only repeat keydown events, not keypress events, + // so we use the suppressKeyPress flag to determine if we've already + // handled the keydown event. #7269 + // Unfortunately the code for & in keypress is the same as the up arrow, + // so we use the suppressKeyPressRepeat flag to avoid handling keypress + // events when we know the keydown event was used to modify the + // search term. #7799 + var suppressKeyPress, suppressKeyPressRepeat, suppressInput, + nodeName = this.element[ 0 ].nodeName.toLowerCase(), + isTextarea = nodeName === "textarea", + isInput = nodeName === "input"; + + // Textareas are always multi-line + // Inputs are always single-line, even if inside a contentEditable element + // All other element types are determined by whether they're contentEditable + this.isMultiLine = isTextarea || + !isInput && this.element.prop( "contentEditable" ) === "true"; + + this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ]; + this.isNewMenu = true; + + this._addClass( "ui-autocomplete-input" ); + this.element.attr( "autocomplete", "off" ); + + this._on( this.element, { + keydown: function( event ) { + if ( this.element.prop( "readOnly" ) ) { + suppressKeyPress = true; + suppressInput = true; + suppressKeyPressRepeat = true; + return; + } + + suppressKeyPress = false; + suppressInput = false; + suppressKeyPressRepeat = false; + var keyCode = $.ui.keyCode; + switch ( event.keyCode ) { + case keyCode.PAGE_UP: + suppressKeyPress = true; + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + suppressKeyPress = true; + this._move( "nextPage", event ); + break; + case keyCode.UP: + suppressKeyPress = true; + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + suppressKeyPress = true; + this._keyEvent( "next", event ); + break; + case keyCode.ENTER: + + // when menu is open and has focus + if ( this.menu.active ) { + + // #6055 - Opera still allows the keypress to occur + // which causes forms to submit + suppressKeyPress = true; + event.preventDefault(); + this.menu.select( event ); + } + break; + case keyCode.TAB: + if ( this.menu.active ) { + this.menu.select( event ); + } + break; + case keyCode.ESCAPE: + if ( this.menu.element.is( ":visible" ) ) { + if ( !this.isMultiLine ) { + this._value( this.term ); + } + this.close( event ); + + // Different browsers have different default behavior for escape + // Single press can mean undo or clear + event.preventDefault(); + } + break; + default: + suppressKeyPressRepeat = true; + + // search timeout should be triggered before the input value is changed + this._searchTimeout( event ); + break; + } + }, + keypress: function( event ) { + if ( suppressKeyPress ) { + suppressKeyPress = false; + if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { + event.preventDefault(); + } + return; + } + if ( suppressKeyPressRepeat ) { + return; + } + + // Replicate some key handlers to allow them to repeat in Firefox and Opera + var keyCode = $.ui.keyCode; + switch ( event.keyCode ) { + case keyCode.PAGE_UP: + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + this._move( "nextPage", event ); + break; + case keyCode.UP: + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + this._keyEvent( "next", event ); + break; + } + }, + input: function( event ) { + if ( suppressInput ) { + suppressInput = false; + event.preventDefault(); + return; + } + this._searchTimeout( event ); + }, + focus: function() { + this.selectedItem = null; + this.previous = this._value(); + }, + blur: function( event ) { + clearTimeout( this.searching ); + this.close( event ); + this._change( event ); + } + } ); + + this._initSource(); + this.menu = $( "
      " ) + .appendTo( this._appendTo() ) + .menu( { + + // disable ARIA support, the live region takes care of that + role: null + } ) + .hide() + .menu( "instance" ); + + this._addClass( this.menu.element, "ui-autocomplete", "ui-front" ); + this._on( this.menu.element, { + mousedown: function( event ) { + + // Prevent moving focus out of the text field + event.preventDefault(); + }, + menufocus: function( event, ui ) { + var label, item; + + // Support: Firefox + // Prevent accidental activation of menu items in Firefox (#7024 #9118) + if ( this.isNewMenu ) { + this.isNewMenu = false; + if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) { + this.menu.blur(); + + this.document.one( "mousemove", function() { + $( event.target ).trigger( event.originalEvent ); + } ); + + return; + } + } + + item = ui.item.data( "ui-autocomplete-item" ); + if ( false !== this._trigger( "focus", event, { item: item } ) ) { + + // use value to match what will end up in the input, if it was a key event + if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) { + this._value( item.value ); + } + } + + // Announce the value in the liveRegion + label = ui.item.attr( "aria-label" ) || item.value; + if ( label && String.prototype.trim.call( label ).length ) { + clearTimeout( this.liveRegionTimer ); + this.liveRegionTimer = this._delay( function() { + this.liveRegion.html( $( "
      " ).text( label ) ); + }, 100 ); + } + }, + menuselect: function( event, ui ) { + var item = ui.item.data( "ui-autocomplete-item" ), + previous = this.previous; + + // Only trigger when focus was lost (click on menu) + if ( this.element[ 0 ] !== this.document[ 0 ].activeElement ) { + this.element.trigger( "focus" ); + this.previous = previous; + } + + if ( false !== this._trigger( "select", event, { item: item } ) ) { + this._value( item.value ); + } + + // reset the term after the select event + // this allows custom select handling to work properly + this.term = this._value(); + + this.close( event ); + this.selectedItem = item; + } + } ); + + this.liveRegion = $( "
      ", { + role: "status", + "aria-live": "assertive", + "aria-relevant": "additions" + } ) + .appendTo( this.document[ 0 ].body ); + + this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" ); + + // Turning off autocomplete prevents the browser from remembering the + // value when navigating through history, so we re-enable autocomplete + // if the page is unloaded before the widget is destroyed. #7790 + this._on( this.window, { + beforeunload: function() { + this.element.removeAttr( "autocomplete" ); + } + } ); + }, + + _destroy: function() { + clearTimeout( this.searching ); + this.element.removeAttr( "autocomplete" ); + this.menu.element.remove(); + this.liveRegion.remove(); + }, + + _setOption: function( key, value ) { + this._super( key, value ); + if ( key === "source" ) { + this._initSource(); + } + if ( key === "appendTo" ) { + this.menu.element.appendTo( this._appendTo() ); + } + if ( key === "disabled" && value && this.xhr ) { + this.xhr.abort(); + } + }, + + _isEventTargetInWidget: function( event ) { + var menuElement = this.menu.element[ 0 ]; + + return event.target === this.element[ 0 ] || + event.target === menuElement || + $.contains( menuElement, event.target ); + }, + + _closeOnClickOutside: function( event ) { + if ( !this._isEventTargetInWidget( event ) ) { + this.close(); + } + }, + + _appendTo: function() { + var element = this.options.appendTo; + + if ( element ) { + element = element.jquery || element.nodeType ? + $( element ) : + this.document.find( element ).eq( 0 ); + } + + if ( !element || !element[ 0 ] ) { + element = this.element.closest( ".ui-front, dialog" ); + } + + if ( !element.length ) { + element = this.document[ 0 ].body; + } + + return element; + }, + + _initSource: function() { + var array, url, + that = this; + if ( Array.isArray( this.options.source ) ) { + array = this.options.source; + this.source = function( request, response ) { + response( $.ui.autocomplete.filter( array, request.term ) ); + }; + } else if ( typeof this.options.source === "string" ) { + url = this.options.source; + this.source = function( request, response ) { + if ( that.xhr ) { + that.xhr.abort(); + } + that.xhr = $.ajax( { + url: url, + data: request, + dataType: "json", + success: function( data ) { + response( data ); + }, + error: function() { + response( [] ); + } + } ); + }; + } else { + this.source = this.options.source; + } + }, + + _searchTimeout: function( event ) { + clearTimeout( this.searching ); + this.searching = this._delay( function() { + + // Search if the value has changed, or if the user retypes the same value (see #7434) + var equalValues = this.term === this._value(), + menuVisible = this.menu.element.is( ":visible" ), + modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey; + + if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) { + this.selectedItem = null; + this.search( null, event ); + } + }, this.options.delay ); + }, + + search: function( value, event ) { + value = value != null ? value : this._value(); + + // Always save the actual value, not the one passed as an argument + this.term = this._value(); + + if ( value.length < this.options.minLength ) { + return this.close( event ); + } + + if ( this._trigger( "search", event ) === false ) { + return; + } + + return this._search( value ); + }, + + _search: function( value ) { + this.pending++; + this._addClass( "ui-autocomplete-loading" ); + this.cancelSearch = false; + + this.source( { term: value }, this._response() ); + }, + + _response: function() { + var index = ++this.requestIndex; + + return function( content ) { + if ( index === this.requestIndex ) { + this.__response( content ); + } + + this.pending--; + if ( !this.pending ) { + this._removeClass( "ui-autocomplete-loading" ); + } + }.bind( this ); + }, + + __response: function( content ) { + if ( content ) { + content = this._normalize( content ); + } + this._trigger( "response", null, { content: content } ); + if ( !this.options.disabled && content && content.length && !this.cancelSearch ) { + this._suggest( content ); + this._trigger( "open" ); + } else { + + // use ._close() instead of .close() so we don't cancel future searches + this._close(); + } + }, + + close: function( event ) { + this.cancelSearch = true; + this._close( event ); + }, + + _close: function( event ) { + + // Remove the handler that closes the menu on outside clicks + this._off( this.document, "mousedown" ); + + if ( this.menu.element.is( ":visible" ) ) { + this.menu.element.hide(); + this.menu.blur(); + this.isNewMenu = true; + this._trigger( "close", event ); + } + }, + + _change: function( event ) { + if ( this.previous !== this._value() ) { + this._trigger( "change", event, { item: this.selectedItem } ); + } + }, + + _normalize: function( items ) { + + // assume all items have the right format when the first item is complete + if ( items.length && items[ 0 ].label && items[ 0 ].value ) { + return items; + } + return $.map( items, function( item ) { + if ( typeof item === "string" ) { + return { + label: item, + value: item + }; + } + return $.extend( {}, item, { + label: item.label || item.value, + value: item.value || item.label + } ); + } ); + }, + + _suggest: function( items ) { + var ul = this.menu.element.empty(); + this._renderMenu( ul, items ); + this.isNewMenu = true; + this.menu.refresh(); + + // Size and position menu + ul.show(); + this._resizeMenu(); + ul.position( $.extend( { + of: this.element + }, this.options.position ) ); + + if ( this.options.autoFocus ) { + this.menu.next(); + } + + // Listen for interactions outside of the widget (#6642) + this._on( this.document, { + mousedown: "_closeOnClickOutside" + } ); + }, + + _resizeMenu: function() { + var ul = this.menu.element; + ul.outerWidth( Math.max( + + // Firefox wraps long text (possibly a rounding bug) + // so we add 1px to avoid the wrapping (#7513) + ul.width( "" ).outerWidth() + 1, + this.element.outerWidth() + ) ); + }, + + _renderMenu: function( ul, items ) { + var that = this; + $.each( items, function( index, item ) { + that._renderItemData( ul, item ); + } ); + }, + + _renderItemData: function( ul, item ) { + return this._renderItem( ul, item ).data( "ui-autocomplete-item", item ); + }, + + _renderItem: function( ul, item ) { + return $( "
    • " ) + .append( $( "
      " ).text( item.label ) ) + .appendTo( ul ); + }, + + _move: function( direction, event ) { + if ( !this.menu.element.is( ":visible" ) ) { + this.search( null, event ); + return; + } + if ( this.menu.isFirstItem() && /^previous/.test( direction ) || + this.menu.isLastItem() && /^next/.test( direction ) ) { + + if ( !this.isMultiLine ) { + this._value( this.term ); + } + + this.menu.blur(); + return; + } + this.menu[ direction ]( event ); + }, + + widget: function() { + return this.menu.element; + }, + + _value: function() { + return this.valueMethod.apply( this.element, arguments ); + }, + + _keyEvent: function( keyEvent, event ) { + if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { + this._move( keyEvent, event ); + + // Prevents moving cursor to beginning/end of the text field in some browsers + event.preventDefault(); + } + } +} ); + +$.extend( $.ui.autocomplete, { + escapeRegex: function( value ) { + return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ); + }, + filter: function( array, term ) { + var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" ); + return $.grep( array, function( value ) { + return matcher.test( value.label || value.value || value ); + } ); + } +} ); + +// Live region extension, adding a `messages` option +// NOTE: This is an experimental API. We are still investigating +// a full solution for string manipulation and internationalization. +$.widget( "ui.autocomplete", $.ui.autocomplete, { + options: { + messages: { + noResults: "No search results.", + results: function( amount ) { + return amount + ( amount > 1 ? " results are" : " result is" ) + + " available, use up and down arrow keys to navigate."; + } + } + }, + + __response: function( content ) { + var message; + this._superApply( arguments ); + if ( this.options.disabled || this.cancelSearch ) { + return; + } + if ( content && content.length ) { + message = this.options.messages.results( content.length ); + } else { + message = this.options.messages.noResults; + } + clearTimeout( this.liveRegionTimer ); + this.liveRegionTimer = this._delay( function() { + this.liveRegion.html( $( "
      " ).text( message ) ); + }, 100 ); + } +} ); + +var widgetsAutocomplete = $.ui.autocomplete; + + +/*! + * jQuery UI Controlgroup 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Controlgroup +//>>group: Widgets +//>>description: Visually groups form control widgets +//>>docs: https://api.jqueryui.com/controlgroup/ +//>>demos: https://jqueryui.com/controlgroup/ +//>>css.structure: ../../themes/base/core.css +//>>css.structure: ../../themes/base/controlgroup.css +//>>css.theme: ../../themes/base/theme.css + + +var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g; + +var widgetsControlgroup = $.widget( "ui.controlgroup", { + version: "1.14.1", + defaultElement: "
      ", + options: { + direction: "horizontal", + disabled: null, + onlyVisible: true, + items: { + "button": "input[type=button], input[type=submit], input[type=reset], button, a", + "controlgroupLabel": ".ui-controlgroup-label", + "checkboxradio": "input[type='checkbox'], input[type='radio']", + "selectmenu": "select", + "spinner": ".ui-spinner-input" + } + }, + + _create: function() { + this._enhance(); + }, + + // To support the enhanced option in jQuery Mobile, we isolate DOM manipulation + _enhance: function() { + this.element.attr( "role", "toolbar" ); + this.refresh(); + }, + + _destroy: function() { + this._callChildMethod( "destroy" ); + this.childWidgets.removeData( "ui-controlgroup-data" ); + this.element.removeAttr( "role" ); + if ( this.options.items.controlgroupLabel ) { + this.element + .find( this.options.items.controlgroupLabel ) + .find( ".ui-controlgroup-label-contents" ) + .contents().unwrap(); + } + }, + + _initWidgets: function() { + var that = this, + childWidgets = []; + + // First we iterate over each of the items options + $.each( this.options.items, function( widget, selector ) { + var labels; + var options = {}; + + // Make sure the widget has a selector set + if ( !selector ) { + return; + } + + if ( widget === "controlgroupLabel" ) { + labels = that.element.find( selector ); + labels.each( function() { + var element = $( this ); + + if ( element.children( ".ui-controlgroup-label-contents" ).length ) { + return; + } + element.contents() + .wrapAll( "" ); + } ); + that._addClass( labels, null, "ui-widget ui-widget-content ui-state-default" ); + childWidgets = childWidgets.concat( labels.get() ); + return; + } + + // Make sure the widget actually exists + if ( !$.fn[ widget ] ) { + return; + } + + // We assume everything is in the middle to start because we can't determine + // first / last elements until all enhancments are done. + if ( that[ "_" + widget + "Options" ] ) { + options = that[ "_" + widget + "Options" ]( "middle" ); + } else { + options = { classes: {} }; + } + + // Find instances of this widget inside controlgroup and init them + that.element + .find( selector ) + .each( function() { + var element = $( this ); + var instance = element[ widget ]( "instance" ); + + // We need to clone the default options for this type of widget to avoid + // polluting the variable options which has a wider scope than a single widget. + var instanceOptions = $.widget.extend( {}, options ); + + // If the button is the child of a spinner ignore it + // TODO: Find a more generic solution + if ( widget === "button" && element.parent( ".ui-spinner" ).length ) { + return; + } + + // Create the widget if it doesn't exist + if ( !instance ) { + instance = element[ widget ]()[ widget ]( "instance" ); + } + if ( instance ) { + instanceOptions.classes = + that._resolveClassesValues( instanceOptions.classes, instance ); + } + element[ widget ]( instanceOptions ); + + // Store an instance of the controlgroup to be able to reference + // from the outermost element for changing options and refresh + var widgetElement = element[ widget ]( "widget" ); + $.data( widgetElement[ 0 ], "ui-controlgroup-data", + instance ? instance : element[ widget ]( "instance" ) ); + + childWidgets.push( widgetElement[ 0 ] ); + } ); + } ); + + this.childWidgets = $( $.uniqueSort( childWidgets ) ); + this._addClass( this.childWidgets, "ui-controlgroup-item" ); + }, + + _callChildMethod: function( method ) { + this.childWidgets.each( function() { + var element = $( this ), + data = element.data( "ui-controlgroup-data" ); + if ( data && data[ method ] ) { + data[ method ](); + } + } ); + }, + + _updateCornerClass: function( element, position ) { + var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"; + var add = this._buildSimpleOptions( position, "label" ).classes.label; + + this._removeClass( element, null, remove ); + this._addClass( element, null, add ); + }, + + _buildSimpleOptions: function( position, key ) { + var direction = this.options.direction === "vertical"; + var result = { + classes: {} + }; + result.classes[ key ] = { + "middle": "", + "first": "ui-corner-" + ( direction ? "top" : "left" ), + "last": "ui-corner-" + ( direction ? "bottom" : "right" ), + "only": "ui-corner-all" + }[ position ]; + + return result; + }, + + _spinnerOptions: function( position ) { + var options = this._buildSimpleOptions( position, "ui-spinner" ); + + options.classes[ "ui-spinner-up" ] = ""; + options.classes[ "ui-spinner-down" ] = ""; + + return options; + }, + + _buttonOptions: function( position ) { + return this._buildSimpleOptions( position, "ui-button" ); + }, + + _checkboxradioOptions: function( position ) { + return this._buildSimpleOptions( position, "ui-checkboxradio-label" ); + }, + + _selectmenuOptions: function( position ) { + var direction = this.options.direction === "vertical"; + return { + width: direction ? "auto" : false, + classes: { + middle: { + "ui-selectmenu-button-open": "", + "ui-selectmenu-button-closed": "" + }, + first: { + "ui-selectmenu-button-open": "ui-corner-" + ( direction ? "top" : "tl" ), + "ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "top" : "left" ) + }, + last: { + "ui-selectmenu-button-open": direction ? "" : "ui-corner-tr", + "ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "bottom" : "right" ) + }, + only: { + "ui-selectmenu-button-open": "ui-corner-top", + "ui-selectmenu-button-closed": "ui-corner-all" + } + + }[ position ] + }; + }, + + _resolveClassesValues: function( classes, instance ) { + var result = {}; + $.each( classes, function( key ) { + var current = instance.options.classes[ key ] || ""; + current = String.prototype.trim.call( current.replace( controlgroupCornerRegex, "" ) ); + result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " ); + } ); + return result; + }, + + _setOption: function( key, value ) { + if ( key === "direction" ) { + this._removeClass( "ui-controlgroup-" + this.options.direction ); + } + + this._super( key, value ); + if ( key === "disabled" ) { + this._callChildMethod( value ? "disable" : "enable" ); + return; + } + + this.refresh(); + }, + + refresh: function() { + var children, + that = this; + + this._addClass( "ui-controlgroup ui-controlgroup-" + this.options.direction ); + + if ( this.options.direction === "horizontal" ) { + this._addClass( null, "ui-helper-clearfix" ); + } + this._initWidgets(); + + children = this.childWidgets; + + // We filter here because we need to track all childWidgets not just the visible ones + if ( this.options.onlyVisible ) { + children = children.filter( ":visible" ); + } + + if ( children.length ) { + + // We do this last because we need to make sure all enhancment is done + // before determining first and last + $.each( [ "first", "last" ], function( index, value ) { + var instance = children[ value ]().data( "ui-controlgroup-data" ); + + if ( instance && that[ "_" + instance.widgetName + "Options" ] ) { + var options = that[ "_" + instance.widgetName + "Options" ]( + children.length === 1 ? "only" : value + ); + options.classes = that._resolveClassesValues( options.classes, instance ); + instance.element[ instance.widgetName ]( options ); + } else { + that._updateCornerClass( children[ value ](), value ); + } + } ); + + // Finally call the refresh method on each of the child widgets. + this._callChildMethod( "refresh" ); + } + } +} ); + +/*! + * jQuery UI Checkboxradio 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Checkboxradio +//>>group: Widgets +//>>description: Enhances a form with multiple themeable checkboxes or radio buttons. +//>>docs: https://api.jqueryui.com/checkboxradio/ +//>>demos: https://jqueryui.com/checkboxradio/ +//>>css.structure: ../../themes/base/core.css +//>>css.structure: ../../themes/base/button.css +//>>css.structure: ../../themes/base/checkboxradio.css +//>>css.theme: ../../themes/base/theme.css + + +$.widget( "ui.checkboxradio", [ $.ui.formResetMixin, { + version: "1.14.1", + options: { + disabled: null, + label: null, + icon: true, + classes: { + "ui-checkboxradio-label": "ui-corner-all", + "ui-checkboxradio-icon": "ui-corner-all" + } + }, + + _getCreateOptions: function() { + var disabled, labels, labelContents; + var options = this._super() || {}; + + // We read the type here, because it makes more sense to throw a element type error first, + // rather then the error for lack of a label. Often if its the wrong type, it + // won't have a label (e.g. calling on a div, btn, etc) + this._readType(); + + labels = this.element.labels(); + + // If there are multiple labels, use the last one + this.label = $( labels[ labels.length - 1 ] ); + if ( !this.label.length ) { + $.error( "No label found for checkboxradio widget" ); + } + + this.originalLabel = ""; + + // We need to get the label text but this may also need to make sure it does not contain the + // input itself. + // The label contents could be text, html, or a mix. We wrap all elements + // and read the wrapper's `innerHTML` to get a string representation of + // the label, without the input as part of it. + labelContents = this.label.contents().not( this.element[ 0 ] ); + + if ( labelContents.length ) { + this.originalLabel += labelContents + .clone() + .wrapAll( "
      " ) + .parent() + .html(); + } + + // Set the label option if we found label text + if ( this.originalLabel ) { + options.label = this.originalLabel; + } + + disabled = this.element[ 0 ].disabled; + if ( disabled != null ) { + options.disabled = disabled; + } + return options; + }, + + _create: function() { + var checked = this.element[ 0 ].checked; + + this._bindFormResetHandler(); + + if ( this.options.disabled == null ) { + this.options.disabled = this.element[ 0 ].disabled; + } + + this._setOption( "disabled", this.options.disabled ); + this._addClass( "ui-checkboxradio", "ui-helper-hidden-accessible" ); + this._addClass( this.label, "ui-checkboxradio-label", "ui-button ui-widget" ); + + if ( this.type === "radio" ) { + this._addClass( this.label, "ui-checkboxradio-radio-label" ); + } + + if ( this.options.label && this.options.label !== this.originalLabel ) { + this._updateLabel(); + } else if ( this.originalLabel ) { + this.options.label = this.originalLabel; + } + + this._enhance(); + + if ( checked ) { + this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" ); + } + + this._on( { + change: "_toggleClasses", + focus: function() { + this._addClass( this.label, null, "ui-state-focus ui-visual-focus" ); + }, + blur: function() { + this._removeClass( this.label, null, "ui-state-focus ui-visual-focus" ); + } + } ); + }, + + _readType: function() { + var nodeName = this.element[ 0 ].nodeName.toLowerCase(); + this.type = this.element[ 0 ].type; + if ( nodeName !== "input" || !/radio|checkbox/.test( this.type ) ) { + $.error( "Can't create checkboxradio on element.nodeName=" + nodeName + + " and element.type=" + this.type ); + } + }, + + // Support jQuery Mobile enhanced option + _enhance: function() { + this._updateIcon( this.element[ 0 ].checked ); + }, + + widget: function() { + return this.label; + }, + + _getRadioGroup: function() { + var group; + var name = this.element[ 0 ].name; + var nameSelector = "input[name='" + CSS.escape( name ) + "']"; + + if ( !name ) { + return $( [] ); + } + + if ( this.form.length ) { + group = $( this.form[ 0 ].elements ).filter( nameSelector ); + } else { + + // Not inside a form, check all inputs that also are not inside a form + group = $( nameSelector ).filter( function() { + return $( $( this ).prop( "form" ) ).length === 0; + } ); + } + + return group.not( this.element ); + }, + + _toggleClasses: function() { + var checked = this.element[ 0 ].checked; + this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked ); + + if ( this.options.icon && this.type === "checkbox" ) { + this._toggleClass( this.icon, null, "ui-icon-check ui-state-checked", checked ) + ._toggleClass( this.icon, null, "ui-icon-blank", !checked ); + } + + if ( this.type === "radio" ) { + this._getRadioGroup() + .each( function() { + var instance = $( this ).checkboxradio( "instance" ); + + if ( instance ) { + instance._removeClass( instance.label, + "ui-checkboxradio-checked", "ui-state-active" ); + } + } ); + } + }, + + _destroy: function() { + this._unbindFormResetHandler(); + + if ( this.icon ) { + this.icon.remove(); + this.iconSpace.remove(); + } + }, + + _setOption: function( key, value ) { + + // We don't allow the value to be set to nothing + if ( key === "label" && !value ) { + return; + } + + this._super( key, value ); + + if ( key === "disabled" ) { + this._toggleClass( this.label, null, "ui-state-disabled", value ); + this.element[ 0 ].disabled = value; + + // Don't refresh when setting disabled + return; + } + this.refresh(); + }, + + _updateIcon: function( checked ) { + var toAdd = "ui-icon ui-icon-background "; + + if ( this.options.icon ) { + if ( !this.icon ) { + this.icon = $( "" ); + this.iconSpace = $( " " ); + this._addClass( this.iconSpace, "ui-checkboxradio-icon-space" ); + } + + if ( this.type === "checkbox" ) { + toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank"; + this._removeClass( this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check" ); + } else { + toAdd += "ui-icon-blank"; + } + this._addClass( this.icon, "ui-checkboxradio-icon", toAdd ); + if ( !checked ) { + this._removeClass( this.icon, null, "ui-icon-check ui-state-checked" ); + } + this.icon.prependTo( this.label ).after( this.iconSpace ); + } else if ( this.icon !== undefined ) { + this.icon.remove(); + this.iconSpace.remove(); + delete this.icon; + } + }, + + _updateLabel: function() { + + // Remove the contents of the label ( minus the icon, icon space, and input ) + var contents = this.label.contents().not( this.element[ 0 ] ); + if ( this.icon ) { + contents = contents.not( this.icon[ 0 ] ); + } + if ( this.iconSpace ) { + contents = contents.not( this.iconSpace[ 0 ] ); + } + contents.remove(); + + this.label.append( this.options.label ); + }, + + refresh: function() { + var checked = this.element[ 0 ].checked, + isDisabled = this.element[ 0 ].disabled; + + this._updateIcon( checked ); + this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked ); + if ( this.options.label !== null ) { + this._updateLabel(); + } + + if ( isDisabled !== this.options.disabled ) { + this._setOptions( { "disabled": isDisabled } ); + } + } + +} ] ); + +var widgetsCheckboxradio = $.ui.checkboxradio; + + +/*! + * jQuery UI Button 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Button +//>>group: Widgets +//>>description: Enhances a form with themeable buttons. +//>>docs: https://api.jqueryui.com/button/ +//>>demos: https://jqueryui.com/button/ +//>>css.structure: ../../themes/base/core.css +//>>css.structure: ../../themes/base/button.css +//>>css.theme: ../../themes/base/theme.css + + +$.widget( "ui.button", { + version: "1.14.1", + defaultElement: "
@item.Content @if (trunked) { ... } - (@Html.DisplayFor(m => item.Author), + @Html.DisplayFor(m => item.Author) posté le @item.DateCreated.ToString("dddd d MMM yyyy à H:mm") @if ((item.DateModified - item.DateCreated).Minutes > 0){  diff --git a/src/Yavsc/Views/Shared/DisplayTemplates/ApplicationUser.cshtml b/src/Yavsc/Views/Shared/DisplayTemplates/ApplicationUser.cshtml index 8fc95062..a9e0e52e 100644 --- a/src/Yavsc/Views/Shared/DisplayTemplates/ApplicationUser.cshtml +++ b/src/Yavsc/Views/Shared/DisplayTemplates/ApplicationUser.cshtml @@ -1,14 +1,14 @@ @model ApplicationUser @{ var avuri = "/Avatars/"+Model.UserName+".s.png"; - var userPosted = Model.Posts!=null && Model.Posts.Count()>1; + var userPosted = Model.Posts!=null && Model.Posts.Count()>=1; }
-@if (userPosted) { - +@Model.UserName -}else { - Html.LabelFor(m=>m.UserName); +} else { + Html.DisplayFor(m=>m.UserName); }
From f7b6b5e30597265236b77da7c686e52bc7a2de09 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sat, 14 Dec 2024 20:21:41 +0000 Subject: [PATCH 04/34] Fogo --- src/Yavsc.Abstract/Blogspot/IBlog.cs | 2 +- .../Interfaces/IBaseTrackedEntity.cs | 2 +- .../Interfaces/Models/IComment.cs | 9 + .../Interfaces/Models/ICommentable.cs | 10 - src/Yavsc.Abstract/Messaging/Comment.cs | 9 + .../Workflow/INominativeQuery.cs | 2 +- src/Yavsc.Abstract/Workflow/IQuery.cs | 2 +- src/Yavsc.Server/Models/Access/Ban.cs | 2 +- src/Yavsc.Server/Models/Blog/Comment.cs | 25 +- src/Yavsc.Server/Models/Chat/ChatRoom.cs | 4 +- src/Yavsc.Server/Models/Cratie/Option.cs | 4 +- src/Yavsc.Server/Models/Cratie/Scrutin.cs | 4 +- .../Models/EMailing/MailingTemplate.cs | 2 +- .../Models/Payment/PaypalPayment.cs | 2 +- src/Yavsc.Server/Models/Workflow/Activity.cs | 2 +- .../Blogspot/CommentsApiController.cs | 40 +- .../Communicating/CommentsController.cs | 8 +- ...20241214154207_commentReceiver.Designer.cs | 3519 +++ .../20241214154207_commentReceiver.cs | 125 + .../20241214201053_commentParent.Designer.cs | 3516 +++ .../20241214201053_commentParent.cs | 61 + .../ApplicationDbContextModelSnapshot.cs | 58 +- src/Yavsc/Models/ApplicationDbContext.cs | 8 +- .../ViewComponents/CommentViewComponent.cs | 2 +- src/Yavsc/Views/Blogspot/Details.cshtml | 39 +- src/Yavsc/Views/Comments/Create.cshtml | 4 +- src/Yavsc/Views/Comments/Edit.cshtml | 6 +- src/Yavsc/Views/Shared/_Layout.cshtml | 15 +- src/Yavsc/wwwroot/jquery-ui-1.14.1.custom.zip | Bin 0 -> 421955 bytes src/Yavsc/wwwroot/js/comment.js | 10 +- src/Yavsc/wwwroot/js/comment.min.js | 1 - src/Yavsc/wwwroot/js/dash.all.min.js | 19 - src/Yavsc/wwwroot/js/jquery-2.2.4.min.js | 588 - src/Yavsc/wwwroot/js/jquery-3.2.1.js | 10253 -------- src/Yavsc/wwwroot/js/jquery-ui.js | 21009 ++++++++-------- src/Yavsc/wwwroot/js/jquery-ui.min.js | 7 +- src/Yavsc/wwwroot/js/jquery.js | 9180 ++++--- src/Yavsc/wwwroot/lib/jquery-ui/AUTHORS.txt | 384 + src/Yavsc/wwwroot/lib/jquery-ui/LICENSE.txt | 43 + .../{ => jquery-ui/external}/jquery/jquery.js | 0 .../images/ui-bg_glass_20_555555_1x400.png | Bin 0 -> 354 bytes .../images/ui-bg_glass_40_0078a3_1x400.png | Bin 0 -> 436 bytes .../images/ui-bg_glass_40_ffc73d_1x400.png | Bin 0 -> 410 bytes .../ui-bg_gloss-wave_25_333333_500x100.png | Bin 0 -> 4012 bytes .../ui-bg_highlight-soft_80_eeeeee_1x100.png | Bin 0 -> 371 bytes .../ui-bg_inset-soft_25_000000_1x100.png | Bin 0 -> 348 bytes .../ui-bg_inset-soft_30_f58400_1x100.png | Bin 0 -> 434 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 7061 bytes .../images/ui-icons_4b8e0b_256x240.png | Bin 0 -> 4654 bytes .../images/ui-icons_a83300_256x240.png | Bin 0 -> 4654 bytes .../images/ui-icons_cccccc_256x240.png | Bin 0 -> 7070 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6523 bytes src/Yavsc/wwwroot/lib/jquery-ui/index.html | 503 + src/Yavsc/wwwroot/lib/jquery-ui/jquery-ui.css | 1285 + src/Yavsc/wwwroot/lib/jquery-ui/jquery-ui.js | 18809 ++++++++++++++ .../wwwroot/lib/jquery-ui/jquery-ui.min.css | 7 + .../wwwroot/lib/jquery-ui/jquery-ui.min.js | 6 + .../lib/jquery-ui/jquery-ui.structure.css | 863 + .../lib/jquery-ui/jquery-ui.structure.min.css | 5 + .../wwwroot/lib/jquery-ui/jquery-ui.theme.css | 439 + .../lib/jquery-ui/jquery-ui.theme.min.css | 5 + src/Yavsc/wwwroot/lib/jquery-ui/package.json | 82 + src/Yavsc/wwwroot/lib/jquery/jquery.min.js | 2 - src/Yavsc/wwwroot/lib/jquery/jquery.min.map | 1 - src/Yavsc/wwwroot/lib/jquery/jquery.slim.js | 8617 ------- .../wwwroot/lib/jquery/jquery.slim.min.js | 2 - .../wwwroot/lib/jquery/jquery.slim.min.map | 1 - 67 files changed, 45680 insertions(+), 33923 deletions(-) create mode 100644 src/Yavsc.Abstract/Interfaces/Models/IComment.cs delete mode 100644 src/Yavsc.Abstract/Interfaces/Models/ICommentable.cs create mode 100644 src/Yavsc.Abstract/Messaging/Comment.cs create mode 100644 src/Yavsc/Migrations/20241214154207_commentReceiver.Designer.cs create mode 100644 src/Yavsc/Migrations/20241214154207_commentReceiver.cs create mode 100644 src/Yavsc/Migrations/20241214201053_commentParent.Designer.cs create mode 100644 src/Yavsc/Migrations/20241214201053_commentParent.cs create mode 100644 src/Yavsc/wwwroot/jquery-ui-1.14.1.custom.zip delete mode 100644 src/Yavsc/wwwroot/js/comment.min.js delete mode 100644 src/Yavsc/wwwroot/js/dash.all.min.js delete mode 100644 src/Yavsc/wwwroot/js/jquery-2.2.4.min.js delete mode 100644 src/Yavsc/wwwroot/js/jquery-3.2.1.js create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/AUTHORS.txt create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/LICENSE.txt rename src/Yavsc/wwwroot/lib/{ => jquery-ui/external}/jquery/jquery.js (100%) create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/images/ui-bg_glass_20_555555_1x400.png create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/images/ui-bg_glass_40_0078a3_1x400.png create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/images/ui-bg_glass_40_ffc73d_1x400.png create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/images/ui-bg_gloss-wave_25_333333_500x100.png create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/images/ui-bg_highlight-soft_80_eeeeee_1x100.png create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/images/ui-bg_inset-soft_25_000000_1x100.png create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/images/ui-bg_inset-soft_30_f58400_1x100.png create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/images/ui-icons_222222_256x240.png create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/images/ui-icons_4b8e0b_256x240.png create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/images/ui-icons_a83300_256x240.png create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/images/ui-icons_cccccc_256x240.png create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/images/ui-icons_ffffff_256x240.png create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/index.html create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/jquery-ui.css create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/jquery-ui.js create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/jquery-ui.min.css create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/jquery-ui.min.js create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/jquery-ui.structure.css create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/jquery-ui.structure.min.css create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/jquery-ui.theme.css create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/jquery-ui.theme.min.css create mode 100644 src/Yavsc/wwwroot/lib/jquery-ui/package.json delete mode 100644 src/Yavsc/wwwroot/lib/jquery/jquery.min.js delete mode 100644 src/Yavsc/wwwroot/lib/jquery/jquery.min.map delete mode 100644 src/Yavsc/wwwroot/lib/jquery/jquery.slim.js delete mode 100644 src/Yavsc/wwwroot/lib/jquery/jquery.slim.min.js delete mode 100644 src/Yavsc/wwwroot/lib/jquery/jquery.slim.min.map diff --git a/src/Yavsc.Abstract/Blogspot/IBlog.cs b/src/Yavsc.Abstract/Blogspot/IBlog.cs index 42af2f1a..26e174d9 100644 --- a/src/Yavsc.Abstract/Blogspot/IBlog.cs +++ b/src/Yavsc.Abstract/Blogspot/IBlog.cs @@ -3,7 +3,7 @@ namespace Yavsc { - public interface IBlogPost : IBaseTrackedEntity, IIdentified, IRating, ITitle + public interface IBlogPost : ITrackedEntity, IIdentified, IRating, ITitle { string AuthorId { get; set; } string Content { get; set; } diff --git a/src/Yavsc.Abstract/Interfaces/IBaseTrackedEntity.cs b/src/Yavsc.Abstract/Interfaces/IBaseTrackedEntity.cs index 64da6cdd..f544f654 100644 --- a/src/Yavsc.Abstract/Interfaces/IBaseTrackedEntity.cs +++ b/src/Yavsc.Abstract/Interfaces/IBaseTrackedEntity.cs @@ -2,7 +2,7 @@ using System; namespace Yavsc { - public interface IBaseTrackedEntity + public interface ITrackedEntity { DateTime DateCreated { get; set; } string UserCreated { get; set; } diff --git a/src/Yavsc.Abstract/Interfaces/Models/IComment.cs b/src/Yavsc.Abstract/Interfaces/Models/IComment.cs new file mode 100644 index 00000000..f700ba29 --- /dev/null +++ b/src/Yavsc.Abstract/Interfaces/Models/IComment.cs @@ -0,0 +1,9 @@ +namespace Yavsc.Interfaces +{ + + public interface IComment + { + string Content { get; set; } + TReceiverId ReceiverId { get; set; } + } +} diff --git a/src/Yavsc.Abstract/Interfaces/Models/ICommentable.cs b/src/Yavsc.Abstract/Interfaces/Models/ICommentable.cs deleted file mode 100644 index 405ef3bd..00000000 --- a/src/Yavsc.Abstract/Interfaces/Models/ICommentable.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Yavsc.Interfaces -{ - public interface IComment : IIdentified - { - T GetReceiverId(); - void SetReceiverId(T rid); - string Content { get; set; } - - } -} \ No newline at end of file diff --git a/src/Yavsc.Abstract/Messaging/Comment.cs b/src/Yavsc.Abstract/Messaging/Comment.cs new file mode 100644 index 00000000..3215abe4 --- /dev/null +++ b/src/Yavsc.Abstract/Messaging/Comment.cs @@ -0,0 +1,9 @@ + +using Yavsc.Interfaces; + +public class CommentPost : IComment + { + public long ReceiverId { get; set; } + public long? ParentId { get; set; } + public string Content { get; set; } + } diff --git a/src/Yavsc.Abstract/Workflow/INominativeQuery.cs b/src/Yavsc.Abstract/Workflow/INominativeQuery.cs index 2d6a1d8d..f0adebdc 100644 --- a/src/Yavsc.Abstract/Workflow/INominativeQuery.cs +++ b/src/Yavsc.Abstract/Workflow/INominativeQuery.cs @@ -2,7 +2,7 @@ using System; namespace Yavsc.Abstract.Workflow { - public interface IDecidableQuery: IBaseTrackedEntity, IQuery + public interface IDecidableQuery: ITrackedEntity, IQuery { bool Decided { get; set; } bool Accepted { get; set; } diff --git a/src/Yavsc.Abstract/Workflow/IQuery.cs b/src/Yavsc.Abstract/Workflow/IQuery.cs index 0997100c..ff9c76ac 100644 --- a/src/Yavsc.Abstract/Workflow/IQuery.cs +++ b/src/Yavsc.Abstract/Workflow/IQuery.cs @@ -3,7 +3,7 @@ namespace Yavsc.Abstract.Workflow using Yavsc; using Yavsc.Billing; - public interface IQuery: IBaseTrackedEntity, IBillable + public interface IQuery: ITrackedEntity, IBillable { QueryStatus Status { get; set; } string PaymentId { get; set; } diff --git a/src/Yavsc.Server/Models/Access/Ban.cs b/src/Yavsc.Server/Models/Access/Ban.cs index 61fda305..5b2d02a3 100644 --- a/src/Yavsc.Server/Models/Access/Ban.cs +++ b/src/Yavsc.Server/Models/Access/Ban.cs @@ -5,7 +5,7 @@ using System.ComponentModel.DataAnnotations.Schema; namespace Yavsc.Models.Access { using Yavsc; - public class Ban : IBaseTrackedEntity + public class Ban : ITrackedEntity { public DateTime DateCreated { diff --git a/src/Yavsc.Server/Models/Blog/Comment.cs b/src/Yavsc.Server/Models/Blog/Comment.cs index 07190459..5e8ab3cf 100644 --- a/src/Yavsc.Server/Models/Blog/Comment.cs +++ b/src/Yavsc.Server/Models/Blog/Comment.cs @@ -8,19 +8,19 @@ using Yavsc.Interfaces; namespace Yavsc.Models.Blog { - public class Comment : IComment, IBaseTrackedEntity + public class Comment : IComment, ITrackedEntity { [Key(), DatabaseGenerated(DatabaseGeneratedOption.Identity)] public long Id { get; set; } - [YaStringLength(1024)] + [YaStringLength(1024)] public string Content { get; set; } - [ForeignKeyAttribute("PostId")][JsonIgnore] + [ForeignKeyAttribute(nameof(ReceiverId))][JsonIgnore] public virtual BlogPost Post { get; set; } [Required] - public long PostId { get; set; } + public long ReceiverId { get; set; } public bool Visible { get; set; } [ForeignKeyAttribute("AuthorId")][JsonIgnore] @@ -34,10 +34,8 @@ namespace Yavsc.Models.Blog get; set; } - public string UserCreated - { - get; set; - } + public string UserCreated { get => AuthorId; set => AuthorId=value; } + public DateTime DateModified { get; set; @@ -53,19 +51,10 @@ namespace Yavsc.Models.Blog get; set; } - public long GetReceiverId() - { - return PostId; - } - public void SetReceiverId(long rid) - { - PostId = rid; - } - public long? ParentId { get; set; } [ForeignKeyAttribute("ParentId")] - public virtual Comment Parent { get; set; } + public virtual Comment? Parent { get; set; } [InversePropertyAttribute("Parent")] diff --git a/src/Yavsc.Server/Models/Chat/ChatRoom.cs b/src/Yavsc.Server/Models/Chat/ChatRoom.cs index 80d172ac..e03421c0 100644 --- a/src/Yavsc.Server/Models/Chat/ChatRoom.cs +++ b/src/Yavsc.Server/Models/Chat/ChatRoom.cs @@ -9,7 +9,7 @@ using Yavsc.Attributes.Validation; namespace Yavsc.Models.Chat { - public class ChatRoom: IChatRoom, IBaseTrackedEntity + public class ChatRoom: IChatRoom, ITrackedEntity { public string Topic { get; set; } @@ -32,4 +32,4 @@ namespace Yavsc.Models.Chat public DateTime DateModified { get; set;} public string UserModified { get; set; } } -} \ No newline at end of file +} diff --git a/src/Yavsc.Server/Models/Cratie/Option.cs b/src/Yavsc.Server/Models/Cratie/Option.cs index 347fdf87..ed157717 100644 --- a/src/Yavsc.Server/Models/Cratie/Option.cs +++ b/src/Yavsc.Server/Models/Cratie/Option.cs @@ -2,7 +2,7 @@ using System; namespace Yavsc.Models.Cratie { - public class Option: IBaseTrackedEntity + public class Option: ITrackedEntity { public string CodeScrutin { get; set; } public string Code { get; set ; } @@ -12,4 +12,4 @@ namespace Yavsc.Models.Cratie public DateTime DateModified { get ; set ; } public string UserModified { get ; set ; } } -} \ No newline at end of file +} diff --git a/src/Yavsc.Server/Models/Cratie/Scrutin.cs b/src/Yavsc.Server/Models/Cratie/Scrutin.cs index 45634901..753cec34 100644 --- a/src/Yavsc.Server/Models/Cratie/Scrutin.cs +++ b/src/Yavsc.Server/Models/Cratie/Scrutin.cs @@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations; namespace Yavsc.Models.Cratie { - public class Scrutin : IBaseTrackedEntity + public class Scrutin : ITrackedEntity { [Key] public string Code { get; set ; } @@ -13,4 +13,4 @@ namespace Yavsc.Models.Cratie public DateTime DateModified { get; set; } public string UserModified { get; set; } } -} \ No newline at end of file +} diff --git a/src/Yavsc.Server/Models/EMailing/MailingTemplate.cs b/src/Yavsc.Server/Models/EMailing/MailingTemplate.cs index 66b3f6dd..956242dd 100644 --- a/src/Yavsc.Server/Models/EMailing/MailingTemplate.cs +++ b/src/Yavsc.Server/Models/EMailing/MailingTemplate.cs @@ -8,7 +8,7 @@ using Yavsc.Server.Models.Calendar; namespace Yavsc.Server.Models.EMailing { - public class MailingTemplate : IBaseTrackedEntity + public class MailingTemplate : ITrackedEntity { /// /// Date Created diff --git a/src/Yavsc.Server/Models/Payment/PaypalPayment.cs b/src/Yavsc.Server/Models/Payment/PaypalPayment.cs index 3a88db01..60c6b2e0 100644 --- a/src/Yavsc.Server/Models/Payment/PaypalPayment.cs +++ b/src/Yavsc.Server/Models/Payment/PaypalPayment.cs @@ -8,7 +8,7 @@ namespace Yavsc.Models.Payment { using Relationship; using Yavsc.Attributes.Validation; - public class PayPalPayment : IBaseTrackedEntity + public class PayPalPayment : ITrackedEntity { [YaRequired,Key] public string CreationToken { get; set; } diff --git a/src/Yavsc.Server/Models/Workflow/Activity.cs b/src/Yavsc.Server/Models/Workflow/Activity.cs index 6106012b..2ca87aa5 100644 --- a/src/Yavsc.Server/Models/Workflow/Activity.cs +++ b/src/Yavsc.Server/Models/Workflow/Activity.cs @@ -11,7 +11,7 @@ namespace Yavsc.Models.Workflow using Yavsc; using Yavsc.Attributes.Validation; - public class Activity : IBaseTrackedEntity, IActivity + public class Activity : ITrackedEntity, IActivity { [YaStringLength(512), YaRequired, Key] diff --git a/src/Yavsc/ApiControllers/Blogspot/CommentsApiController.cs b/src/Yavsc/ApiControllers/Blogspot/CommentsApiController.cs index 879f0b43..72a4a8f4 100644 --- a/src/Yavsc/ApiControllers/Blogspot/CommentsApiController.cs +++ b/src/Yavsc/ApiControllers/Blogspot/CommentsApiController.cs @@ -1,12 +1,15 @@ +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Internal; using Yavsc.Helpers; using Yavsc.Models; using Yavsc.Models.Blog; namespace Yavsc.Controllers { + [Authorize] [Produces("application/json")] [Route("api/blogcomments")] public class CommentsApiController : Controller @@ -81,27 +84,45 @@ namespace Yavsc.Controllers // POST: api/CommentsApi [HttpPost] - public async Task PostComment([FromBody] Comment comment) + public async Task PostComment([FromBody] CommentPost post) { if (!ModelState.IsValid) { return new BadRequestObjectResult(ModelState); } - if (!User.IsInRole(Constants.AdminGroupName)) + var article = await _context.Blogspot.FirstOrDefaultAsync + (p=> p.Id == post.ReceiverId); + + if (article==null) { + ModelState.AddModelError("ReceiverId", "not found"); + return BadRequest(ModelState); + } + if (post.ParentId!=null) { - if (User.GetUserId()!=comment.AuthorId) { - ModelState.AddModelError("Content","Vous ne pouvez pas poster au nom d'un autre."); - return new BadRequestObjectResult(ModelState); + var parentExists = _context.Comment.Any(c => c.Id == post.ParentId); + if (!parentExists) + { + ModelState.AddModelError("ParentId", "not found"); + return BadRequest(ModelState); } } - _context.Comment.Add(comment); + string uid = User.GetUserId(); + Comment c = new Comment{ + ReceiverId = post.ReceiverId, + Content = post.Content, + ParentId = post.ParentId, + AuthorId = uid, + UserModified = uid + }; + + _context.Comment.Add(c); try { await _context.SaveChangesAsync(User.GetUserId()); } catch (DbUpdateException) { - if (CommentExists(comment.Id)) + if (CommentExists(c.Id)) { return new StatusCodeResult(StatusCodes.Status409Conflict); } @@ -110,7 +131,7 @@ namespace Yavsc.Controllers throw; } } - return CreatedAtRoute("GetComment", new { id = comment.Id }, comment); + return CreatedAtRoute("GetComment", new { id = c.Id }, post); } // DELETE: api/CommentsApi/5 @@ -135,7 +156,8 @@ namespace Yavsc.Controllers } private void RemoveRecursive (Comment comment) { - var children = _context.Comment.Where(c=>c.ParentId==comment.Id).ToList(); + var children = _context.Comment.Where + (c=>c.ParentId==comment.Id).ToList(); foreach (var child in children) { RemoveRecursive(child); } diff --git a/src/Yavsc/Controllers/Communicating/CommentsController.cs b/src/Yavsc/Controllers/Communicating/CommentsController.cs index 9475c429..2f1371b7 100644 --- a/src/Yavsc/Controllers/Communicating/CommentsController.cs +++ b/src/Yavsc/Controllers/Communicating/CommentsController.cs @@ -47,7 +47,7 @@ namespace Yavsc.Controllers // GET: Comments/Create public IActionResult Create() { - ViewData["PostId"] = new SelectList(_context.Blogspot, "Id", "Post"); + ViewData["ReceiverId"] = new SelectList(_context.Blogspot, "Id", "Post"); return View(); } @@ -64,7 +64,7 @@ namespace Yavsc.Controllers await _context.SaveChangesAsync(); return RedirectToAction("Index"); } - ViewData["PostId"] = new SelectList(_context.Blogspot, "Id", "Post", comment.PostId); + ViewData["ReceiverId"] = new SelectList(_context.Blogspot, "Id", "Post", comment.ReceiverId); return View(comment); } @@ -81,7 +81,7 @@ namespace Yavsc.Controllers { return NotFound(); } - ViewData["PostId"] = new SelectList(_context.Blogspot, "Id", "Post", comment.PostId); + ViewData["ReceiverId"] = new SelectList(_context.Blogspot, "Id", "Post", comment.ReceiverId); return View(comment); } @@ -96,7 +96,7 @@ namespace Yavsc.Controllers await _context.SaveChangesAsync(); return RedirectToAction("Index"); } - ViewData["PostId"] = new SelectList(_context.Blogspot, "Id", "Post", comment.PostId); + ViewData["ReceiverId"] = new SelectList(_context.Blogspot, "Id", "Post", comment.ReceiverId); return View(comment); } diff --git a/src/Yavsc/Migrations/20241214154207_commentReceiver.Designer.cs b/src/Yavsc/Migrations/20241214154207_commentReceiver.Designer.cs new file mode 100644 index 00000000..bdca338d --- /dev/null +++ b/src/Yavsc/Migrations/20241214154207_commentReceiver.Designer.cs @@ -0,0 +1,3519 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Yavsc.Models; + +#nullable disable + +namespace Yavsc.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20241214154207_commentReceiver")] + partial class commentReceiver + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.2") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("ProviderKey") + .HasColumnType("text"); + + b.Property("ProviderDisplayName") + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("RoleId") + .HasColumnType("text"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Value") + .HasColumnType("text"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Yavsc.Abstract.Identity.ClientProviderInfo", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("Avatar") + .IsRequired() + .HasColumnType("text"); + + b.Property("BillingAddressId") + .HasColumnType("bigint"); + + b.Property("EMail") + .IsRequired() + .HasColumnType("text"); + + b.Property("Phone") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("UserId"); + + b.ToTable("ClientProviderInfo"); + }); + + modelBuilder.Entity("Yavsc.Models.Access.Ban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text"); + + b.Property("TargetId") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("TargetId"); + + b.ToTable("Ban"); + }); + + modelBuilder.Entity("Yavsc.Models.Access.BlackListed", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId"); + + b.HasIndex("UserId"); + + b.ToTable("BlackListed"); + }); + + modelBuilder.Entity("Yavsc.Models.Access.CircleAuthorizationToBlogPost", b => + { + b.Property("CircleId") + .HasColumnType("bigint"); + + b.Property("BlogPostId") + .HasColumnType("bigint"); + + b.HasKey("CircleId", "BlogPostId"); + + b.HasIndex("BlogPostId"); + + b.ToTable("CircleAuthorizationToBlogPost"); + }); + + modelBuilder.Entity("Yavsc.Models.AccountBalance", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("ContactCredits") + .HasColumnType("bigint"); + + b.Property("Credits") + .HasColumnType("numeric"); + + b.HasKey("UserId"); + + b.ToTable("BankStatus"); + }); + + modelBuilder.Entity("Yavsc.Models.ApplicationUser", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("AccessFailedCount") + .HasColumnType("integer"); + + b.Property("AllowMonthlyEmail") + .HasColumnType("boolean"); + + b.Property("Avatar") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .HasDefaultValue("/images/Users/icon_user.png"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("DedicatedGoogleCalendar") + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("DiskQuota") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasDefaultValue(524288000L); + + b.Property("DiskUsage") + .HasColumnType("bigint"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("boolean"); + + b.Property("FullName") + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("LockoutEnabled") + .HasColumnType("boolean"); + + b.Property("LockoutEnd") + .HasColumnType("timestamp with time zone"); + + b.Property("MaxFileSize") + .HasColumnType("bigint"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("PasswordHash") + .HasColumnType("text"); + + b.Property("PhoneNumber") + .HasColumnType("text"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("boolean"); + + b.Property("PostalAddressId") + .HasColumnType("bigint"); + + b.Property("SecurityStamp") + .HasColumnType("text"); + + b.Property("TwoFactorEnabled") + .HasColumnType("boolean"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasAlternateKey("Email"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.HasIndex("PostalAddressId"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("text"); + + b.Property("AccessTokenLifetime") + .HasColumnType("integer"); + + b.Property("Active") + .HasColumnType("boolean"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("LogoutRedirectUri") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("RedirectUri") + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("RefreshTokenLifeTime") + .HasColumnType("integer"); + + b.Property("Secret") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("Applications"); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.OAuth2Tokens", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("AccessToken") + .IsRequired() + .HasColumnType("text"); + + b.Property("Expiration") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiresIn") + .IsRequired() + .HasColumnType("text"); + + b.Property("RefreshToken") + .IsRequired() + .HasColumnType("text"); + + b.Property("TokenType") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("UserId"); + + b.ToTable("OAuth2Tokens"); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.RefreshToken", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("ExpiresUtc") + .HasColumnType("timestamp with time zone"); + + b.Property("IssuedUtc") + .HasColumnType("timestamp with time zone"); + + b.Property("ProtectedTicket") + .IsRequired() + .HasColumnType("text"); + + b.Property("Subject") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.HasKey("Id"); + + b.ToTable("RefreshTokens"); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.Scope", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.HasKey("Id"); + + b.ToTable("Scopes"); + }); + + modelBuilder.Entity("Yavsc.Models.BalanceImpact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BalanceId") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExecDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Impact") + .HasColumnType("numeric"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("BalanceId"); + + b.ToTable("BankBook"); + }); + + modelBuilder.Entity("Yavsc.Models.Bank.BankIdentity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AccountNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("BIC") + .IsRequired() + .HasColumnType("text"); + + b.Property("BankCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("BankedKey") + .HasColumnType("integer"); + + b.Property("IBAN") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.Property("WicketCode") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("BankIdentity"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.CommandLine", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Count") + .HasColumnType("integer"); + + b.Property("Currency") + .IsRequired() + .HasColumnType("text"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("EstimateId") + .HasColumnType("bigint"); + + b.Property("EstimateTemplateId") + .HasColumnType("bigint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("UnitaryCost") + .HasColumnType("numeric"); + + b.HasKey("Id"); + + b.HasIndex("EstimateId"); + + b.HasIndex("EstimateTemplateId"); + + b.ToTable("CommandLine"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.Estimate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AttachedFilesString") + .IsRequired() + .HasColumnType("text"); + + b.Property("AttachedGraphicsString") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientId") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientValidationDate") + .HasColumnType("timestamp with time zone"); + + b.Property("CommandId") + .HasColumnType("bigint"); + + b.Property("CommandType") + .IsRequired() + .HasColumnType("text"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("ProviderValidationDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("CommandId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Estimates"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.EstimateTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EstimateTemplates"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.ExceptionSIREN", b => + { + b.Property("SIREN") + .HasColumnType("text"); + + b.HasKey("SIREN"); + + b.ToTable("ExceptionsSIREN"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.BlogPost", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AuthorId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Content") + .IsRequired() + .HasMaxLength(56224) + .HasColumnType("character varying(56224)"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Photo") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.Property("Rate") + .HasColumnType("integer"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.Property("Visible") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.HasIndex("AuthorId"); + + b.ToTable("Blogspot"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.BlogTag", b => + { + b.Property("PostId") + .HasColumnType("bigint"); + + b.Property("TagId") + .HasColumnType("bigint"); + + b.HasKey("PostId", "TagId"); + + b.HasIndex("TagId"); + + b.ToTable("BlogTag"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.Comment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AuthorId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("ParentId") + .HasColumnType("bigint"); + + b.Property("PostId") + .HasColumnType("bigint"); + + b.Property("ReceiverId") + .HasColumnType("bigint"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.Property("Visible") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.HasIndex("AuthorId"); + + b.HasIndex("ParentId"); + + b.HasIndex("PostId"); + + b.ToTable("Comment"); + }); + + modelBuilder.Entity("Yavsc.Models.Calendar.Schedule", b => + { + b.Property("OwnerId") + .HasColumnType("text"); + + b.HasKey("OwnerId"); + + b.ToTable("Schedule"); + }); + + modelBuilder.Entity("Yavsc.Models.Calendar.ScheduledEvent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("PeriodEnd") + .HasColumnType("timestamp with time zone"); + + b.Property("PeriodStart") + .HasColumnType("timestamp with time zone"); + + b.Property("Reccurence") + .HasColumnType("integer"); + + b.Property("ScheduleOwnerId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScheduleOwnerId"); + + b.HasIndex("PeriodStart", "PeriodEnd"); + + b.ToTable("ScheduledEvent"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatConnection", b => + { + b.Property("ConnectionId") + .HasColumnType("text"); + + b.Property("ApplicationUserId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Connected") + .HasColumnType("boolean"); + + b.Property("UserAgent") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("ConnectionId"); + + b.HasIndex("ApplicationUserId"); + + b.ToTable("ChatConnection"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatRoom", b => + { + b.Property("Name") + .HasColumnType("text"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("LatestJoinPart") + .HasColumnType("timestamp with time zone"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Topic") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Name"); + + b.HasIndex("OwnerId"); + + b.ToTable("ChatRoom"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatRoomAccess", b => + { + b.Property("ChannelName") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("text"); + + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Level") + .HasColumnType("integer"); + + b.HasKey("ChannelName", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ChatRoomAccess"); + }); + + modelBuilder.Entity("Yavsc.Models.Cratie.Option", b => + { + b.Property("Code") + .HasColumnType("text"); + + b.Property("CodeScrutin") + .HasColumnType("text"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Code", "CodeScrutin"); + + b.ToTable("Option"); + }); + + modelBuilder.Entity("Yavsc.Models.Drawing.Color", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Blue") + .HasColumnType("smallint"); + + b.Property("Green") + .HasColumnType("smallint"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Red") + .HasColumnType("smallint"); + + b.HasKey("Id"); + + b.ToTable("Color"); + }); + + modelBuilder.Entity("Yavsc.Models.Forms.Form", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("Summary") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Form"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.BrusherProfile", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("ActionDistance") + .HasColumnType("integer"); + + b.Property("CarePrice") + .HasColumnType("numeric"); + + b.Property("FlatFeeDiscount") + .HasColumnType("numeric"); + + b.Property("HalfBalayagePrice") + .HasColumnType("numeric"); + + b.Property("HalfBrushingPrice") + .HasColumnType("numeric"); + + b.Property("HalfColorPrice") + .HasColumnType("numeric"); + + b.Property("HalfDefrisPrice") + .HasColumnType("numeric"); + + b.Property("HalfFoldingPrice") + .HasColumnType("numeric"); + + b.Property("HalfMechPrice") + .HasColumnType("numeric"); + + b.Property("HalfMultiColorPrice") + .HasColumnType("numeric"); + + b.Property("HalfPermanentPrice") + .HasColumnType("numeric"); + + b.Property("KidCutPrice") + .HasColumnType("numeric"); + + b.Property("LongBalayagePrice") + .HasColumnType("numeric"); + + b.Property("LongBrushingPrice") + .HasColumnType("numeric"); + + b.Property("LongColorPrice") + .HasColumnType("numeric"); + + b.Property("LongDefrisPrice") + .HasColumnType("numeric"); + + b.Property("LongFoldingPrice") + .HasColumnType("numeric"); + + b.Property("LongMechPrice") + .HasColumnType("numeric"); + + b.Property("LongMultiColorPrice") + .HasColumnType("numeric"); + + b.Property("LongPermanentPrice") + .HasColumnType("numeric"); + + b.Property("ManBrushPrice") + .HasColumnType("numeric"); + + b.Property("ManCutPrice") + .HasColumnType("numeric"); + + b.Property("ScheduleOwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("ShampooPrice") + .HasColumnType("numeric"); + + b.Property("ShortBalayagePrice") + .HasColumnType("numeric"); + + b.Property("ShortBrushingPrice") + .HasColumnType("numeric"); + + b.Property("ShortColorPrice") + .HasColumnType("numeric"); + + b.Property("ShortDefrisPrice") + .HasColumnType("numeric"); + + b.Property("ShortFoldingPrice") + .HasColumnType("numeric"); + + b.Property("ShortMechPrice") + .HasColumnType("numeric"); + + b.Property("ShortMultiColorPrice") + .HasColumnType("numeric"); + + b.Property("ShortPermanentPrice") + .HasColumnType("numeric"); + + b.Property("WomenHalfCutPrice") + .HasColumnType("numeric"); + + b.Property("WomenLongCutPrice") + .HasColumnType("numeric"); + + b.Property("WomenShortCutPrice") + .HasColumnType("numeric"); + + b.HasKey("UserId"); + + b.HasIndex("ScheduleOwnerId"); + + b.ToTable("BrusherProfile"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairCutQuery", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Accepted") + .HasColumnType("boolean"); + + b.Property("ActivityCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("AdditionalInfo") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Consent") + .HasColumnType("boolean"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Decided") + .HasColumnType("boolean"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("EventDate") + .HasColumnType("timestamp with time zone"); + + b.Property("LocationId") + .HasColumnType("bigint"); + + b.Property("PaymentId") + .IsRequired() + .HasColumnType("text"); + + b.Property("PerformerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("PrestationId") + .HasColumnType("bigint"); + + b.Property("Previsional") + .HasColumnType("numeric"); + + b.Property("SelectedProfileUserId") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.Property("ValidationDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("ActivityCode"); + + b.HasIndex("ClientId"); + + b.HasIndex("LocationId"); + + b.HasIndex("PaymentId"); + + b.HasIndex("PerformerId"); + + b.HasIndex("PrestationId"); + + b.HasIndex("SelectedProfileUserId"); + + b.ToTable("HairCutQueries"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairMultiCutQuery", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Accepted") + .HasColumnType("boolean"); + + b.Property("ActivityCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Consent") + .HasColumnType("boolean"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Decided") + .HasColumnType("boolean"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("EventDate") + .HasColumnType("timestamp with time zone"); + + b.Property("LocationId") + .HasColumnType("bigint"); + + b.Property("PaymentId") + .IsRequired() + .HasColumnType("text"); + + b.Property("PerformerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Previsional") + .HasColumnType("numeric"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.Property("ValidationDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("ActivityCode"); + + b.HasIndex("ClientId"); + + b.HasIndex("LocationId"); + + b.HasIndex("PaymentId"); + + b.HasIndex("PerformerId"); + + b.ToTable("HairMultiCutQueries"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairPrestation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Cares") + .HasColumnType("boolean"); + + b.Property("Cut") + .HasColumnType("boolean"); + + b.Property("Dressing") + .HasColumnType("integer"); + + b.Property("Gender") + .HasColumnType("integer"); + + b.Property("Length") + .HasColumnType("integer"); + + b.Property("Shampoo") + .HasColumnType("boolean"); + + b.Property("Tech") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("HairPrestation"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairPrestationCollectionItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("PrestationId") + .HasColumnType("bigint"); + + b.Property("QueryId") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("PrestationId"); + + b.HasIndex("QueryId"); + + b.ToTable("HairPrestationCollectionItem"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairTaint", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Brand") + .IsRequired() + .HasColumnType("text"); + + b.Property("ColorId") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("ColorId"); + + b.ToTable("HairTaint"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairTaintInstance", b => + { + b.Property("TaintId") + .HasColumnType("bigint"); + + b.Property("PrestationId") + .HasColumnType("bigint"); + + b.HasKey("TaintId", "PrestationId"); + + b.HasIndex("PrestationId"); + + b.ToTable("HairTaintInstance"); + }); + + modelBuilder.Entity("Yavsc.Models.IT.Evolution.Feature", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("ShortName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("Feature"); + }); + + modelBuilder.Entity("Yavsc.Models.IT.Fixing.Bug", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("FeatureId") + .HasColumnType("bigint"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("FeatureId"); + + b.ToTable("Bug"); + }); + + modelBuilder.Entity("Yavsc.Models.Identity.DeviceDeclaration", b => + { + b.Property("DeviceId") + .HasColumnType("text"); + + b.Property("DeclarationDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("LOCALTIMESTAMP"); + + b.Property("DeviceOwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("LatestActivityUpdate") + .HasColumnType("timestamp with time zone"); + + b.Property("Model") + .IsRequired() + .HasColumnType("text"); + + b.Property("Platform") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("DeviceId"); + + b.HasIndex("DeviceOwnerId"); + + b.ToTable("DeviceDeclaration"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.Product", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Depth") + .HasColumnType("numeric"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("Height") + .HasColumnType("numeric"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Price") + .HasColumnType("numeric"); + + b.Property("Public") + .HasColumnType("boolean"); + + b.Property("Weight") + .HasColumnType("numeric"); + + b.Property("Width") + .HasColumnType("numeric"); + + b.HasKey("Id"); + + b.ToTable("Products"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.Service", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ContextId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Public") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.HasIndex("ContextId"); + + b.ToTable("Services"); + }); + + modelBuilder.Entity("Yavsc.Models.Messaging.Announce", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("For") + .HasColumnType("smallint"); + + b.Property("Message") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Sender") + .IsRequired() + .HasColumnType("text"); + + b.Property("Topic") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId"); + + b.ToTable("Announce"); + }); + + modelBuilder.Entity("Yavsc.Models.Messaging.DismissClicked", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("NotificationId") + .HasColumnType("bigint"); + + b.HasKey("UserId", "NotificationId"); + + b.HasIndex("NotificationId"); + + b.ToTable("DismissClicked"); + }); + + modelBuilder.Entity("Yavsc.Models.Messaging.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Target") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("body") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("click_action") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("color") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("icon") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .HasDefaultValue("exclam"); + + b.Property("sound") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("tag") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("title") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.HasKey("Id"); + + b.ToTable("Notification"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Instrument", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.HasKey("Id"); + + b.ToTable("Instrument"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.InstrumentRating", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("InstrumentId") + .HasColumnType("bigint"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Rate") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasAlternateKey("InstrumentId", "OwnerId"); + + b.HasIndex("OwnerId"); + + b.ToTable("InstrumentRating"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.MusicalPreference", b => + { + b.Property("OwnerProfileId") + .HasColumnType("text"); + + b.Property("DjSettingsUserId") + .HasColumnType("text"); + + b.Property("GeneralSettingsUserId") + .HasColumnType("text"); + + b.Property("Rate") + .HasColumnType("integer"); + + b.Property("TendencyId") + .HasColumnType("bigint"); + + b.HasKey("OwnerProfileId"); + + b.HasIndex("DjSettingsUserId"); + + b.HasIndex("GeneralSettingsUserId"); + + b.ToTable("MusicalPreference"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.MusicalTendency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.HasKey("Id"); + + b.ToTable("MusicalTendency"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Profiles.DjSettings", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("SoundCloudId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("UserId"); + + b.ToTable("DjSettings"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Profiles.GeneralSettings", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.HasKey("UserId"); + + b.ToTable("GeneralSettings"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Profiles.Instrumentation", b => + { + b.Property("InstrumentId") + .HasColumnType("bigint"); + + b.Property("UserId") + .HasColumnType("text"); + + b.HasKey("InstrumentId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("Instrumentation"); + }); + + modelBuilder.Entity("Yavsc.Models.Payment.PayPalPayment", b => + { + b.Property("CreationToken") + .HasColumnType("text"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("ExecutorId") + .IsRequired() + .HasColumnType("text"); + + b.Property("OrderReference") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaypalPayerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("State") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("CreationToken"); + + b.HasIndex("ExecutorId"); + + b.ToTable("PayPalPayment"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Circle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ApplicationUserId") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Public") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationUserId"); + + b.ToTable("Circle"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.CircleMember", b => + { + b.Property("MemberId") + .HasColumnType("text"); + + b.Property("CircleId") + .HasColumnType("bigint"); + + b.HasKey("MemberId", "CircleId"); + + b.HasIndex("CircleId"); + + b.ToTable("CircleMembers"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Contact", b => + { + b.Property("OwnerId") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("text"); + + b.Property("AddressId") + .HasColumnType("bigint"); + + b.Property("ApplicationUserId") + .HasColumnType("text"); + + b.Property("EMail") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("OwnerId", "UserId"); + + b.HasIndex("AddressId"); + + b.HasIndex("ApplicationUserId"); + + b.ToTable("Contact"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.HyperLink", b => + { + b.Property("HRef") + .HasColumnType("text"); + + b.Property("Method") + .HasColumnType("text"); + + b.Property("BrusherProfileUserId") + .HasColumnType("text"); + + b.Property("ContentType") + .IsRequired() + .HasColumnType("text"); + + b.Property("PayPalPaymentCreationToken") + .HasColumnType("text"); + + b.Property("Rel") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("HRef", "Method"); + + b.HasIndex("BrusherProfileUserId"); + + b.HasIndex("PayPalPaymentCreationToken"); + + b.ToTable("HyperLink"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Location", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("Latitude") + .HasColumnType("double precision"); + + b.Property("Longitude") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.ToTable("Locations"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.PostalAddress", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("City") + .IsRequired() + .HasColumnType("text"); + + b.Property("Country") + .IsRequired() + .HasColumnType("text"); + + b.Property("PostalCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("Province") + .IsRequired() + .HasColumnType("text"); + + b.Property("State") + .IsRequired() + .HasColumnType("text"); + + b.Property("Street1") + .IsRequired() + .HasColumnType("text"); + + b.Property("Street2") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("PostalAddress"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Tag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Tags"); + }); + + modelBuilder.Entity("Yavsc.Models.Skill", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Rate") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("SiteSkills"); + }); + + modelBuilder.Entity("Yavsc.Models.Streaming.LiveFlow", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DifferedFileName") + .IsRequired() + .HasColumnType("text"); + + b.Property("MediaType") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Pitch") + .IsRequired() + .HasColumnType("text"); + + b.Property("SequenceNumber") + .HasColumnType("integer"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId"); + + b.ToTable("LiveFlow"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.Activity", b => + { + b.Property("Code") + .HasColumnType("text"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("Hidden") + .HasColumnType("boolean"); + + b.Property("ModeratorGroupName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("ParentCode") + .HasColumnType("text"); + + b.Property("Photo") + .IsRequired() + .HasColumnType("text"); + + b.Property("Rate") + .HasColumnType("integer"); + + b.Property("SettingsClassName") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Code"); + + b.HasIndex("ParentCode"); + + b.ToTable("Activities"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.CoWorking", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("FormationSettingsUserId") + .HasColumnType("text"); + + b.Property("PerformerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorkingForId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("FormationSettingsUserId"); + + b.HasIndex("PerformerId"); + + b.HasIndex("WorkingForId"); + + b.ToTable("CoWorking"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.CommandForm", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ActionName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ActivityCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ActivityCode"); + + b.ToTable("CommandForm"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b => + { + b.Property("PerformerId") + .HasColumnType("text"); + + b.Property("AcceptNotifications") + .HasColumnType("boolean"); + + b.Property("AcceptPublicContact") + .HasColumnType("boolean"); + + b.Property("Active") + .HasColumnType("boolean"); + + b.Property("MaxDailyCost") + .HasColumnType("integer"); + + b.Property("MinDailyCost") + .HasColumnType("integer"); + + b.Property("OrganizationAddressId") + .HasColumnType("bigint"); + + b.Property("Rate") + .HasColumnType("integer"); + + b.Property("SIREN") + .IsRequired() + .HasColumnType("text"); + + b.Property("UseGeoLocalizationToReduceDistanceWithClients") + .HasColumnType("boolean"); + + b.Property("WebSite") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("PerformerId"); + + b.HasIndex("OrganizationAddressId"); + + b.ToTable("Performers"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.Profiles.FormationSettings", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("UserId"); + + b.ToTable("FormationSettings"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.RdvQuery", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Accepted") + .HasColumnType("boolean"); + + b.Property("ActivityCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Consent") + .HasColumnType("boolean"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Decided") + .HasColumnType("boolean"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("EventDate") + .HasColumnType("timestamp with time zone"); + + b.Property("LocationId") + .HasColumnType("bigint"); + + b.Property("LocationType") + .HasColumnType("integer"); + + b.Property("PaymentId") + .IsRequired() + .HasColumnType("text"); + + b.Property("PerformerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Previsional") + .HasColumnType("numeric"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.Property("ValidationDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("ActivityCode"); + + b.HasIndex("ClientId"); + + b.HasIndex("LocationId"); + + b.HasIndex("PaymentId"); + + b.HasIndex("PerformerId"); + + b.ToTable("RdvQueries"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.UserActivity", b => + { + b.Property("DoesCode") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("text"); + + b.Property("Weight") + .HasColumnType("integer"); + + b.HasKey("DoesCode", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("UserActivities"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.Calendar.Period", b => + { + b.Property("Start") + .HasColumnType("timestamp with time zone"); + + b.Property("End") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Start", "End"); + + b.ToTable("Period"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.EMailing.MailingTemplate", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasMaxLength(65536) + .HasColumnType("character varying(65536)"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("ReplyToAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("ToSend") + .HasColumnType("integer"); + + b.Property("Topic") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("MailingTemplate"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.Project", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Accepted") + .HasColumnType("boolean"); + + b.Property("ActivityCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Consent") + .HasColumnType("boolean"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Decided") + .HasColumnType("boolean"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("GitId") + .HasColumnType("bigint"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentId") + .IsRequired() + .HasColumnType("text"); + + b.Property("PerformerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Previsional") + .HasColumnType("numeric"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.Property("ValidationDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Version") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ActivityCode"); + + b.HasIndex("ClientId"); + + b.HasIndex("GitId"); + + b.HasIndex("PaymentId"); + + b.HasIndex("PerformerId"); + + b.ToTable("Project"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.ProjectBuildConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("ProjectId") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("ProjectId"); + + b.ToTable("ProjectBuildConfiguration"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.SourceCode.GitRepositoryReference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Branch") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Path") + .IsRequired() + .HasColumnType("text"); + + b.Property("Url") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId"); + + b.ToTable("GitRepositoryReference"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Yavsc.Models.Access.Ban", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "TargetUser") + .WithMany() + .HasForeignKey("TargetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("TargetUser"); + }); + + modelBuilder.Entity("Yavsc.Models.Access.BlackListed", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany("BlackList") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Yavsc.Models.Access.CircleAuthorizationToBlogPost", b => + { + b.HasOne("Yavsc.Models.Blog.BlogPost", "Target") + .WithMany("ACL") + .HasForeignKey("BlogPostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Relationship.Circle", "Allowed") + .WithMany() + .HasForeignKey("CircleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Allowed"); + + b.Navigation("Target"); + }); + + modelBuilder.Entity("Yavsc.Models.AccountBalance", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithOne("AccountBalance") + .HasForeignKey("Yavsc.Models.AccountBalance", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.ApplicationUser", b => + { + b.HasOne("Yavsc.Models.Relationship.Location", "PostalAddress") + .WithMany() + .HasForeignKey("PostalAddressId"); + + b.Navigation("PostalAddress"); + }); + + modelBuilder.Entity("Yavsc.Models.BalanceImpact", b => + { + b.HasOne("Yavsc.Models.AccountBalance", "Balance") + .WithMany() + .HasForeignKey("BalanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Balance"); + }); + + modelBuilder.Entity("Yavsc.Models.Bank.BankIdentity", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "User") + .WithMany("BankInfo") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.CommandLine", b => + { + b.HasOne("Yavsc.Models.Billing.Estimate", null) + .WithMany("Bill") + .HasForeignKey("EstimateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Billing.EstimateTemplate", null) + .WithMany("Bill") + .HasForeignKey("EstimateTemplateId"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.Estimate", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Client") + .WithMany() + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.RdvQuery", "Query") + .WithMany() + .HasForeignKey("CommandId"); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Owner"); + + b.Navigation("Query"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.BlogPost", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Author") + .WithMany("Posts") + .HasForeignKey("AuthorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.BlogTag", b => + { + b.HasOne("Yavsc.Models.Blog.BlogPost", "Post") + .WithMany("Tags") + .HasForeignKey("PostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Relationship.Tag", "Tag") + .WithMany() + .HasForeignKey("TagId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Post"); + + b.Navigation("Tag"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.Comment", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Author") + .WithMany() + .HasForeignKey("AuthorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Blog.Comment", "Parent") + .WithMany("Children") + .HasForeignKey("ParentId"); + + b.HasOne("Yavsc.Models.Blog.BlogPost", "Post") + .WithMany("Comments") + .HasForeignKey("PostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Parent"); + + b.Navigation("Post"); + }); + + modelBuilder.Entity("Yavsc.Models.Calendar.Schedule", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.Calendar.ScheduledEvent", b => + { + b.HasOne("Yavsc.Models.Calendar.Schedule", null) + .WithMany("Events") + .HasForeignKey("ScheduleOwnerId"); + + b.HasOne("Yavsc.Server.Models.Calendar.Period", "Period") + .WithMany() + .HasForeignKey("PeriodStart", "PeriodEnd") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Period"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatConnection", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany("Connections") + .HasForeignKey("ApplicationUserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatRoom", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany("Rooms") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatRoomAccess", b => + { + b.HasOne("Yavsc.Models.Chat.ChatRoom", "Room") + .WithMany("Moderation") + .HasForeignKey("ChannelName") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "User") + .WithMany("RoomAccess") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.BrusherProfile", b => + { + b.HasOne("Yavsc.Models.Calendar.Schedule", "Schedule") + .WithMany() + .HasForeignKey("ScheduleOwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "BaseProfile") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BaseProfile"); + + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairCutQuery", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Context") + .WithMany() + .HasForeignKey("ActivityCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "Client") + .WithMany() + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Relationship.Location", "Location") + .WithMany() + .HasForeignKey("LocationId"); + + b.HasOne("Yavsc.Models.Payment.PayPalPayment", "Regularisation") + .WithMany() + .HasForeignKey("PaymentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "PerformerProfile") + .WithMany() + .HasForeignKey("PerformerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Haircut.HairPrestation", "Prestation") + .WithMany() + .HasForeignKey("PrestationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Haircut.BrusherProfile", "SelectedProfile") + .WithMany() + .HasForeignKey("SelectedProfileUserId"); + + b.Navigation("Client"); + + b.Navigation("Context"); + + b.Navigation("Location"); + + b.Navigation("PerformerProfile"); + + b.Navigation("Prestation"); + + b.Navigation("Regularisation"); + + b.Navigation("SelectedProfile"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairMultiCutQuery", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Context") + .WithMany() + .HasForeignKey("ActivityCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "Client") + .WithMany() + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Relationship.Location", "Location") + .WithMany() + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Payment.PayPalPayment", "Regularisation") + .WithMany() + .HasForeignKey("PaymentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "PerformerProfile") + .WithMany() + .HasForeignKey("PerformerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Context"); + + b.Navigation("Location"); + + b.Navigation("PerformerProfile"); + + b.Navigation("Regularisation"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairPrestationCollectionItem", b => + { + b.HasOne("Yavsc.Models.Haircut.HairPrestation", "Prestation") + .WithMany() + .HasForeignKey("PrestationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Haircut.HairMultiCutQuery", "Query") + .WithMany("Prestations") + .HasForeignKey("QueryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Prestation"); + + b.Navigation("Query"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairTaint", b => + { + b.HasOne("Yavsc.Models.Drawing.Color", "Color") + .WithMany() + .HasForeignKey("ColorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Color"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairTaintInstance", b => + { + b.HasOne("Yavsc.Models.Haircut.HairPrestation", "Prestation") + .WithMany("Taints") + .HasForeignKey("PrestationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Haircut.HairTaint", "Taint") + .WithMany() + .HasForeignKey("TaintId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Prestation"); + + b.Navigation("Taint"); + }); + + modelBuilder.Entity("Yavsc.Models.IT.Fixing.Bug", b => + { + b.HasOne("Yavsc.Models.IT.Evolution.Feature", "False") + .WithMany() + .HasForeignKey("FeatureId"); + + b.Navigation("False"); + }); + + modelBuilder.Entity("Yavsc.Models.Identity.DeviceDeclaration", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "DeviceOwner") + .WithMany("DeviceDeclaration") + .HasForeignKey("DeviceOwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DeviceOwner"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.Service", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Context") + .WithMany("Services") + .HasForeignKey("ContextId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Context"); + }); + + modelBuilder.Entity("Yavsc.Models.Messaging.Announce", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.Messaging.DismissClicked", b => + { + b.HasOne("Yavsc.Models.Messaging.Notification", "Notified") + .WithMany() + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Notified"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.InstrumentRating", b => + { + b.HasOne("Yavsc.Models.Musical.Instrument", "Instrument") + .WithMany() + .HasForeignKey("InstrumentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "Profile") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Instrument"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.MusicalPreference", b => + { + b.HasOne("Yavsc.Models.Musical.Profiles.DjSettings", null) + .WithMany("SoundColor") + .HasForeignKey("DjSettingsUserId"); + + b.HasOne("Yavsc.Models.Musical.Profiles.GeneralSettings", null) + .WithMany("SoundColor") + .HasForeignKey("GeneralSettingsUserId"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Profiles.Instrumentation", b => + { + b.HasOne("Yavsc.Models.Musical.Instrument", "Tool") + .WithMany() + .HasForeignKey("InstrumentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tool"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Yavsc.Models.Payment.PayPalPayment", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Executor") + .WithMany() + .HasForeignKey("ExecutorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Executor"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Circle", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", null) + .WithMany("Circles") + .HasForeignKey("ApplicationUserId"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.CircleMember", b => + { + b.HasOne("Yavsc.Models.Relationship.Circle", "Circle") + .WithMany("Members") + .HasForeignKey("CircleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "Member") + .WithMany("Membership") + .HasForeignKey("MemberId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Circle"); + + b.Navigation("Member"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Contact", b => + { + b.HasOne("Yavsc.Models.Relationship.PostalAddress", "PostalAddress") + .WithMany() + .HasForeignKey("AddressId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", null) + .WithMany("Book") + .HasForeignKey("ApplicationUserId"); + + b.Navigation("PostalAddress"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.HyperLink", b => + { + b.HasOne("Yavsc.Models.Haircut.BrusherProfile", null) + .WithMany("Links") + .HasForeignKey("BrusherProfileUserId"); + + b.HasOne("Yavsc.Models.Payment.PayPalPayment", null) + .WithMany("Links") + .HasForeignKey("PayPalPaymentCreationToken"); + }); + + modelBuilder.Entity("Yavsc.Models.Streaming.LiveFlow", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.Activity", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Parent") + .WithMany("Children") + .HasForeignKey("ParentCode"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.CoWorking", b => + { + b.HasOne("Yavsc.Models.Workflow.Profiles.FormationSettings", null) + .WithMany("CoWorking") + .HasForeignKey("FormationSettingsUserId"); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "Performer") + .WithMany() + .HasForeignKey("PerformerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "WorkingFor") + .WithMany() + .HasForeignKey("WorkingForId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Performer"); + + b.Navigation("WorkingFor"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.CommandForm", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Context") + .WithMany("Forms") + .HasForeignKey("ActivityCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Context"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b => + { + b.HasOne("Yavsc.Models.Relationship.Location", "OrganizationAddress") + .WithMany() + .HasForeignKey("OrganizationAddressId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "Performer") + .WithMany() + .HasForeignKey("PerformerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OrganizationAddress"); + + b.Navigation("Performer"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.RdvQuery", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Context") + .WithMany() + .HasForeignKey("ActivityCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "Client") + .WithMany() + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Relationship.Location", "Location") + .WithMany() + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Payment.PayPalPayment", "Regularisation") + .WithMany() + .HasForeignKey("PaymentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "PerformerProfile") + .WithMany() + .HasForeignKey("PerformerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Context"); + + b.Navigation("Location"); + + b.Navigation("PerformerProfile"); + + b.Navigation("Regularisation"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.UserActivity", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Does") + .WithMany() + .HasForeignKey("DoesCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "User") + .WithMany("Activity") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Does"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.Project", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Context") + .WithMany() + .HasForeignKey("ActivityCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "Client") + .WithMany() + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Server.Models.IT.SourceCode.GitRepositoryReference", "Repository") + .WithMany() + .HasForeignKey("GitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Payment.PayPalPayment", "Regularisation") + .WithMany() + .HasForeignKey("PaymentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "PerformerProfile") + .WithMany() + .HasForeignKey("PerformerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Context"); + + b.Navigation("PerformerProfile"); + + b.Navigation("Regularisation"); + + b.Navigation("Repository"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.ProjectBuildConfiguration", b => + { + b.HasOne("Yavsc.Server.Models.IT.Project", "TargetProject") + .WithMany("Configurations") + .HasForeignKey("ProjectId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("TargetProject"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.SourceCode.GitRepositoryReference", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.ApplicationUser", b => + { + b.Navigation("AccountBalance") + .IsRequired(); + + b.Navigation("BankInfo"); + + b.Navigation("BlackList"); + + b.Navigation("Book"); + + b.Navigation("Circles"); + + b.Navigation("Connections"); + + b.Navigation("DeviceDeclaration"); + + b.Navigation("Membership"); + + b.Navigation("Posts"); + + b.Navigation("RoomAccess"); + + b.Navigation("Rooms"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.Estimate", b => + { + b.Navigation("Bill"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.EstimateTemplate", b => + { + b.Navigation("Bill"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.BlogPost", b => + { + b.Navigation("ACL"); + + b.Navigation("Comments"); + + b.Navigation("Tags"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.Comment", b => + { + b.Navigation("Children"); + }); + + modelBuilder.Entity("Yavsc.Models.Calendar.Schedule", b => + { + b.Navigation("Events"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatRoom", b => + { + b.Navigation("Moderation"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.BrusherProfile", b => + { + b.Navigation("Links"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairMultiCutQuery", b => + { + b.Navigation("Prestations"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairPrestation", b => + { + b.Navigation("Taints"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Profiles.DjSettings", b => + { + b.Navigation("SoundColor"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Profiles.GeneralSettings", b => + { + b.Navigation("SoundColor"); + }); + + modelBuilder.Entity("Yavsc.Models.Payment.PayPalPayment", b => + { + b.Navigation("Links"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Circle", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.Activity", b => + { + b.Navigation("Children"); + + b.Navigation("Forms"); + + b.Navigation("Services"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b => + { + b.Navigation("Activity"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.Profiles.FormationSettings", b => + { + b.Navigation("CoWorking"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.Project", b => + { + b.Navigation("Configurations"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Yavsc/Migrations/20241214154207_commentReceiver.cs b/src/Yavsc/Migrations/20241214154207_commentReceiver.cs new file mode 100644 index 00000000..d8c249d8 --- /dev/null +++ b/src/Yavsc/Migrations/20241214154207_commentReceiver.cs @@ -0,0 +1,125 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Yavsc.Migrations +{ + /// + public partial class commentReceiver : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "BlogTrad"); + + migrationBuilder.DropColumn( + name: "Lang", + table: "Blogspot"); + + migrationBuilder.RenameColumn( + name: "PostId", + table: "Comment", + newName: "ReceiverId" + ); + + migrationBuilder.AlterColumn( + name: "Title", + table: "Blogspot", + type: "character varying(1024)", + maxLength: 1024, + nullable: false, + oldClrType: typeof(string), + oldType: "text"); + + migrationBuilder.AlterColumn( + name: "Photo", + table: "Blogspot", + type: "character varying(1024)", + maxLength: 1024, + nullable: true, + oldClrType: typeof(string), + oldType: "text"); + + migrationBuilder.AlterColumn( + name: "Content", + table: "Blogspot", + type: "character varying(56224)", + maxLength: 56224, + nullable: false, + oldClrType: typeof(string), + oldType: "text"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "ReceiverId", + table: "Comment", + newName: "PostId"); + + migrationBuilder.AlterColumn( + name: "Title", + table: "Blogspot", + type: "text", + nullable: false, + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024); + + migrationBuilder.AlterColumn( + name: "Photo", + table: "Blogspot", + type: "text", + nullable: false, + defaultValue: "", + oldClrType: typeof(string), + oldType: "character varying(1024)", + oldMaxLength: 1024, + oldNullable: true); + + migrationBuilder.AlterColumn( + name: "Content", + table: "Blogspot", + type: "text", + nullable: false, + oldClrType: typeof(string), + oldType: "character varying(56224)", + oldMaxLength: 56224); + + migrationBuilder.AddColumn( + name: "Lang", + table: "Blogspot", + type: "text", + nullable: false, + defaultValue: ""); + + migrationBuilder.CreateTable( + name: "BlogTrad", + columns: table => new + { + PostId = table.Column(type: "bigint", nullable: false), + Lang = table.Column(type: "text", nullable: false), + TraducerId = table.Column(type: "text", nullable: false), + Body = table.Column(type: "text", nullable: false), + Title = table.Column(type: "text", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_BlogTrad", x => new { x.PostId, x.Lang }); + table.ForeignKey( + name: "FK_BlogTrad_AspNetUsers_TraducerId", + column: x => x.TraducerId, + principalTable: "AspNetUsers", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_BlogTrad_TraducerId", + table: "BlogTrad", + column: "TraducerId"); + } + } +} diff --git a/src/Yavsc/Migrations/20241214201053_commentParent.Designer.cs b/src/Yavsc/Migrations/20241214201053_commentParent.Designer.cs new file mode 100644 index 00000000..bbe6e68b --- /dev/null +++ b/src/Yavsc/Migrations/20241214201053_commentParent.Designer.cs @@ -0,0 +1,3516 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Yavsc.Models; + +#nullable disable + +namespace Yavsc.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20241214201053_commentParent")] + partial class commentParent + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.2") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("AspNetRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetRoleClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserClaims", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("ProviderKey") + .HasColumnType("text"); + + b.Property("ProviderDisplayName") + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("AspNetUserLogins", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("RoleId") + .HasColumnType("text"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("AspNetUserRoles", (string)null); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Value") + .HasColumnType("text"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AspNetUserTokens", (string)null); + }); + + modelBuilder.Entity("Yavsc.Abstract.Identity.ClientProviderInfo", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("Avatar") + .IsRequired() + .HasColumnType("text"); + + b.Property("BillingAddressId") + .HasColumnType("bigint"); + + b.Property("EMail") + .IsRequired() + .HasColumnType("text"); + + b.Property("Phone") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("UserId"); + + b.ToTable("ClientProviderInfo"); + }); + + modelBuilder.Entity("Yavsc.Models.Access.Ban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text"); + + b.Property("TargetId") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("TargetId"); + + b.ToTable("Ban"); + }); + + modelBuilder.Entity("Yavsc.Models.Access.BlackListed", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId"); + + b.HasIndex("UserId"); + + b.ToTable("BlackListed"); + }); + + modelBuilder.Entity("Yavsc.Models.Access.CircleAuthorizationToBlogPost", b => + { + b.Property("CircleId") + .HasColumnType("bigint"); + + b.Property("BlogPostId") + .HasColumnType("bigint"); + + b.HasKey("CircleId", "BlogPostId"); + + b.HasIndex("BlogPostId"); + + b.ToTable("CircleAuthorizationToBlogPost"); + }); + + modelBuilder.Entity("Yavsc.Models.AccountBalance", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("ContactCredits") + .HasColumnType("bigint"); + + b.Property("Credits") + .HasColumnType("numeric"); + + b.HasKey("UserId"); + + b.ToTable("BankStatus"); + }); + + modelBuilder.Entity("Yavsc.Models.ApplicationUser", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("AccessFailedCount") + .HasColumnType("integer"); + + b.Property("AllowMonthlyEmail") + .HasColumnType("boolean"); + + b.Property("Avatar") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .HasDefaultValue("/images/Users/icon_user.png"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("DedicatedGoogleCalendar") + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("DiskQuota") + .ValueGeneratedOnAdd() + .HasColumnType("bigint") + .HasDefaultValue(524288000L); + + b.Property("DiskUsage") + .HasColumnType("bigint"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("boolean"); + + b.Property("FullName") + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("LockoutEnabled") + .HasColumnType("boolean"); + + b.Property("LockoutEnd") + .HasColumnType("timestamp with time zone"); + + b.Property("MaxFileSize") + .HasColumnType("bigint"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("PasswordHash") + .HasColumnType("text"); + + b.Property("PhoneNumber") + .HasColumnType("text"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("boolean"); + + b.Property("PostalAddressId") + .HasColumnType("bigint"); + + b.Property("SecurityStamp") + .HasColumnType("text"); + + b.Property("TwoFactorEnabled") + .HasColumnType("boolean"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasAlternateKey("Email"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.HasIndex("PostalAddressId"); + + b.ToTable("AspNetUsers", (string)null); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("text"); + + b.Property("AccessTokenLifetime") + .HasColumnType("integer"); + + b.Property("Active") + .HasColumnType("boolean"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("LogoutRedirectUri") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("RedirectUri") + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("RefreshTokenLifeTime") + .HasColumnType("integer"); + + b.Property("Secret") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("Applications"); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.OAuth2Tokens", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("AccessToken") + .IsRequired() + .HasColumnType("text"); + + b.Property("Expiration") + .HasColumnType("timestamp with time zone"); + + b.Property("ExpiresIn") + .IsRequired() + .HasColumnType("text"); + + b.Property("RefreshToken") + .IsRequired() + .HasColumnType("text"); + + b.Property("TokenType") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("UserId"); + + b.ToTable("OAuth2Tokens"); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.RefreshToken", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("ExpiresUtc") + .HasColumnType("timestamp with time zone"); + + b.Property("IssuedUtc") + .HasColumnType("timestamp with time zone"); + + b.Property("ProtectedTicket") + .IsRequired() + .HasColumnType("text"); + + b.Property("Subject") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.HasKey("Id"); + + b.ToTable("RefreshTokens"); + }); + + modelBuilder.Entity("Yavsc.Models.Auth.Scope", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.HasKey("Id"); + + b.ToTable("Scopes"); + }); + + modelBuilder.Entity("Yavsc.Models.BalanceImpact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BalanceId") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExecDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Impact") + .HasColumnType("numeric"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("BalanceId"); + + b.ToTable("BankBook"); + }); + + modelBuilder.Entity("Yavsc.Models.Bank.BankIdentity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AccountNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("BIC") + .IsRequired() + .HasColumnType("text"); + + b.Property("BankCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("BankedKey") + .HasColumnType("integer"); + + b.Property("IBAN") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserId") + .IsRequired() + .HasColumnType("text"); + + b.Property("WicketCode") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("BankIdentity"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.CommandLine", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Count") + .HasColumnType("integer"); + + b.Property("Currency") + .IsRequired() + .HasColumnType("text"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("EstimateId") + .HasColumnType("bigint"); + + b.Property("EstimateTemplateId") + .HasColumnType("bigint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("UnitaryCost") + .HasColumnType("numeric"); + + b.HasKey("Id"); + + b.HasIndex("EstimateId"); + + b.HasIndex("EstimateTemplateId"); + + b.ToTable("CommandLine"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.Estimate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AttachedFilesString") + .IsRequired() + .HasColumnType("text"); + + b.Property("AttachedGraphicsString") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientId") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientValidationDate") + .HasColumnType("timestamp with time zone"); + + b.Property("CommandId") + .HasColumnType("bigint"); + + b.Property("CommandType") + .IsRequired() + .HasColumnType("text"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("ProviderValidationDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("CommandId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Estimates"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.EstimateTemplate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EstimateTemplates"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.ExceptionSIREN", b => + { + b.Property("SIREN") + .HasColumnType("text"); + + b.HasKey("SIREN"); + + b.ToTable("ExceptionsSIREN"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.BlogPost", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AuthorId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Content") + .IsRequired() + .HasMaxLength(56224) + .HasColumnType("character varying(56224)"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Photo") + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.Property("Rate") + .HasColumnType("integer"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.Property("Visible") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.HasIndex("AuthorId"); + + b.ToTable("Blogspot"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.BlogTag", b => + { + b.Property("PostId") + .HasColumnType("bigint"); + + b.Property("TagId") + .HasColumnType("bigint"); + + b.HasKey("PostId", "TagId"); + + b.HasIndex("TagId"); + + b.ToTable("BlogTag"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.Comment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AuthorId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("ParentId") + .HasColumnType("bigint"); + + b.Property("ReceiverId") + .HasColumnType("bigint"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.Property("Visible") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.HasIndex("AuthorId"); + + b.HasIndex("ParentId"); + + b.HasIndex("ReceiverId"); + + b.ToTable("Comment"); + }); + + modelBuilder.Entity("Yavsc.Models.Calendar.Schedule", b => + { + b.Property("OwnerId") + .HasColumnType("text"); + + b.HasKey("OwnerId"); + + b.ToTable("Schedule"); + }); + + modelBuilder.Entity("Yavsc.Models.Calendar.ScheduledEvent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("PeriodEnd") + .HasColumnType("timestamp with time zone"); + + b.Property("PeriodStart") + .HasColumnType("timestamp with time zone"); + + b.Property("Reccurence") + .HasColumnType("integer"); + + b.Property("ScheduleOwnerId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScheduleOwnerId"); + + b.HasIndex("PeriodStart", "PeriodEnd"); + + b.ToTable("ScheduledEvent"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatConnection", b => + { + b.Property("ConnectionId") + .HasColumnType("text"); + + b.Property("ApplicationUserId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Connected") + .HasColumnType("boolean"); + + b.Property("UserAgent") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("ConnectionId"); + + b.HasIndex("ApplicationUserId"); + + b.ToTable("ChatConnection"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatRoom", b => + { + b.Property("Name") + .HasColumnType("text"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("LatestJoinPart") + .HasColumnType("timestamp with time zone"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Topic") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Name"); + + b.HasIndex("OwnerId"); + + b.ToTable("ChatRoom"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatRoomAccess", b => + { + b.Property("ChannelName") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("text"); + + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Level") + .HasColumnType("integer"); + + b.HasKey("ChannelName", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("ChatRoomAccess"); + }); + + modelBuilder.Entity("Yavsc.Models.Cratie.Option", b => + { + b.Property("Code") + .HasColumnType("text"); + + b.Property("CodeScrutin") + .HasColumnType("text"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Code", "CodeScrutin"); + + b.ToTable("Option"); + }); + + modelBuilder.Entity("Yavsc.Models.Drawing.Color", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Blue") + .HasColumnType("smallint"); + + b.Property("Green") + .HasColumnType("smallint"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Red") + .HasColumnType("smallint"); + + b.HasKey("Id"); + + b.ToTable("Color"); + }); + + modelBuilder.Entity("Yavsc.Models.Forms.Form", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("Summary") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Form"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.BrusherProfile", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("ActionDistance") + .HasColumnType("integer"); + + b.Property("CarePrice") + .HasColumnType("numeric"); + + b.Property("FlatFeeDiscount") + .HasColumnType("numeric"); + + b.Property("HalfBalayagePrice") + .HasColumnType("numeric"); + + b.Property("HalfBrushingPrice") + .HasColumnType("numeric"); + + b.Property("HalfColorPrice") + .HasColumnType("numeric"); + + b.Property("HalfDefrisPrice") + .HasColumnType("numeric"); + + b.Property("HalfFoldingPrice") + .HasColumnType("numeric"); + + b.Property("HalfMechPrice") + .HasColumnType("numeric"); + + b.Property("HalfMultiColorPrice") + .HasColumnType("numeric"); + + b.Property("HalfPermanentPrice") + .HasColumnType("numeric"); + + b.Property("KidCutPrice") + .HasColumnType("numeric"); + + b.Property("LongBalayagePrice") + .HasColumnType("numeric"); + + b.Property("LongBrushingPrice") + .HasColumnType("numeric"); + + b.Property("LongColorPrice") + .HasColumnType("numeric"); + + b.Property("LongDefrisPrice") + .HasColumnType("numeric"); + + b.Property("LongFoldingPrice") + .HasColumnType("numeric"); + + b.Property("LongMechPrice") + .HasColumnType("numeric"); + + b.Property("LongMultiColorPrice") + .HasColumnType("numeric"); + + b.Property("LongPermanentPrice") + .HasColumnType("numeric"); + + b.Property("ManBrushPrice") + .HasColumnType("numeric"); + + b.Property("ManCutPrice") + .HasColumnType("numeric"); + + b.Property("ScheduleOwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("ShampooPrice") + .HasColumnType("numeric"); + + b.Property("ShortBalayagePrice") + .HasColumnType("numeric"); + + b.Property("ShortBrushingPrice") + .HasColumnType("numeric"); + + b.Property("ShortColorPrice") + .HasColumnType("numeric"); + + b.Property("ShortDefrisPrice") + .HasColumnType("numeric"); + + b.Property("ShortFoldingPrice") + .HasColumnType("numeric"); + + b.Property("ShortMechPrice") + .HasColumnType("numeric"); + + b.Property("ShortMultiColorPrice") + .HasColumnType("numeric"); + + b.Property("ShortPermanentPrice") + .HasColumnType("numeric"); + + b.Property("WomenHalfCutPrice") + .HasColumnType("numeric"); + + b.Property("WomenLongCutPrice") + .HasColumnType("numeric"); + + b.Property("WomenShortCutPrice") + .HasColumnType("numeric"); + + b.HasKey("UserId"); + + b.HasIndex("ScheduleOwnerId"); + + b.ToTable("BrusherProfile"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairCutQuery", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Accepted") + .HasColumnType("boolean"); + + b.Property("ActivityCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("AdditionalInfo") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Consent") + .HasColumnType("boolean"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Decided") + .HasColumnType("boolean"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("EventDate") + .HasColumnType("timestamp with time zone"); + + b.Property("LocationId") + .HasColumnType("bigint"); + + b.Property("PaymentId") + .IsRequired() + .HasColumnType("text"); + + b.Property("PerformerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("PrestationId") + .HasColumnType("bigint"); + + b.Property("Previsional") + .HasColumnType("numeric"); + + b.Property("SelectedProfileUserId") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.Property("ValidationDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("ActivityCode"); + + b.HasIndex("ClientId"); + + b.HasIndex("LocationId"); + + b.HasIndex("PaymentId"); + + b.HasIndex("PerformerId"); + + b.HasIndex("PrestationId"); + + b.HasIndex("SelectedProfileUserId"); + + b.ToTable("HairCutQueries"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairMultiCutQuery", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Accepted") + .HasColumnType("boolean"); + + b.Property("ActivityCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Consent") + .HasColumnType("boolean"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Decided") + .HasColumnType("boolean"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("EventDate") + .HasColumnType("timestamp with time zone"); + + b.Property("LocationId") + .HasColumnType("bigint"); + + b.Property("PaymentId") + .IsRequired() + .HasColumnType("text"); + + b.Property("PerformerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Previsional") + .HasColumnType("numeric"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.Property("ValidationDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("ActivityCode"); + + b.HasIndex("ClientId"); + + b.HasIndex("LocationId"); + + b.HasIndex("PaymentId"); + + b.HasIndex("PerformerId"); + + b.ToTable("HairMultiCutQueries"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairPrestation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Cares") + .HasColumnType("boolean"); + + b.Property("Cut") + .HasColumnType("boolean"); + + b.Property("Dressing") + .HasColumnType("integer"); + + b.Property("Gender") + .HasColumnType("integer"); + + b.Property("Length") + .HasColumnType("integer"); + + b.Property("Shampoo") + .HasColumnType("boolean"); + + b.Property("Tech") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("HairPrestation"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairPrestationCollectionItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("PrestationId") + .HasColumnType("bigint"); + + b.Property("QueryId") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("PrestationId"); + + b.HasIndex("QueryId"); + + b.ToTable("HairPrestationCollectionItem"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairTaint", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Brand") + .IsRequired() + .HasColumnType("text"); + + b.Property("ColorId") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("ColorId"); + + b.ToTable("HairTaint"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairTaintInstance", b => + { + b.Property("TaintId") + .HasColumnType("bigint"); + + b.Property("PrestationId") + .HasColumnType("bigint"); + + b.HasKey("TaintId", "PrestationId"); + + b.HasIndex("PrestationId"); + + b.ToTable("HairTaintInstance"); + }); + + modelBuilder.Entity("Yavsc.Models.IT.Evolution.Feature", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("ShortName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("Feature"); + }); + + modelBuilder.Entity("Yavsc.Models.IT.Fixing.Bug", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("FeatureId") + .HasColumnType("bigint"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("FeatureId"); + + b.ToTable("Bug"); + }); + + modelBuilder.Entity("Yavsc.Models.Identity.DeviceDeclaration", b => + { + b.Property("DeviceId") + .HasColumnType("text"); + + b.Property("DeclarationDate") + .ValueGeneratedOnAdd() + .HasColumnType("timestamp with time zone") + .HasDefaultValueSql("LOCALTIMESTAMP"); + + b.Property("DeviceOwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("LatestActivityUpdate") + .HasColumnType("timestamp with time zone"); + + b.Property("Model") + .IsRequired() + .HasColumnType("text"); + + b.Property("Platform") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("DeviceId"); + + b.HasIndex("DeviceOwnerId"); + + b.ToTable("DeviceDeclaration"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.Product", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Depth") + .HasColumnType("numeric"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("Height") + .HasColumnType("numeric"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Price") + .HasColumnType("numeric"); + + b.Property("Public") + .HasColumnType("boolean"); + + b.Property("Weight") + .HasColumnType("numeric"); + + b.Property("Width") + .HasColumnType("numeric"); + + b.HasKey("Id"); + + b.ToTable("Products"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.Service", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ContextId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Public") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.HasIndex("ContextId"); + + b.ToTable("Services"); + }); + + modelBuilder.Entity("Yavsc.Models.Messaging.Announce", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("For") + .HasColumnType("smallint"); + + b.Property("Message") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Sender") + .IsRequired() + .HasColumnType("text"); + + b.Property("Topic") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId"); + + b.ToTable("Announce"); + }); + + modelBuilder.Entity("Yavsc.Models.Messaging.DismissClicked", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("NotificationId") + .HasColumnType("bigint"); + + b.HasKey("UserId", "NotificationId"); + + b.HasIndex("NotificationId"); + + b.ToTable("DismissClicked"); + }); + + modelBuilder.Entity("Yavsc.Models.Messaging.Notification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Target") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("body") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("click_action") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("color") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("icon") + .IsRequired() + .ValueGeneratedOnAdd() + .HasMaxLength(512) + .HasColumnType("character varying(512)") + .HasDefaultValue("exclam"); + + b.Property("sound") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("tag") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("title") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); + + b.HasKey("Id"); + + b.ToTable("Notification"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Instrument", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.HasKey("Id"); + + b.ToTable("Instrument"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.InstrumentRating", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("InstrumentId") + .HasColumnType("bigint"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Rate") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasAlternateKey("InstrumentId", "OwnerId"); + + b.HasIndex("OwnerId"); + + b.ToTable("InstrumentRating"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.MusicalPreference", b => + { + b.Property("OwnerProfileId") + .HasColumnType("text"); + + b.Property("DjSettingsUserId") + .HasColumnType("text"); + + b.Property("GeneralSettingsUserId") + .HasColumnType("text"); + + b.Property("Rate") + .HasColumnType("integer"); + + b.Property("TendencyId") + .HasColumnType("bigint"); + + b.HasKey("OwnerProfileId"); + + b.HasIndex("DjSettingsUserId"); + + b.HasIndex("GeneralSettingsUserId"); + + b.ToTable("MusicalPreference"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.MusicalTendency", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.HasKey("Id"); + + b.ToTable("MusicalTendency"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Profiles.DjSettings", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("SoundCloudId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("UserId"); + + b.ToTable("DjSettings"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Profiles.GeneralSettings", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.HasKey("UserId"); + + b.ToTable("GeneralSettings"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Profiles.Instrumentation", b => + { + b.Property("InstrumentId") + .HasColumnType("bigint"); + + b.Property("UserId") + .HasColumnType("text"); + + b.HasKey("InstrumentId", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("Instrumentation"); + }); + + modelBuilder.Entity("Yavsc.Models.Payment.PayPalPayment", b => + { + b.Property("CreationToken") + .HasColumnType("text"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("ExecutorId") + .IsRequired() + .HasColumnType("text"); + + b.Property("OrderReference") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaypalPayerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("State") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("CreationToken"); + + b.HasIndex("ExecutorId"); + + b.ToTable("PayPalPayment"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Circle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ApplicationUserId") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Public") + .HasColumnType("boolean"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationUserId"); + + b.ToTable("Circle"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.CircleMember", b => + { + b.Property("MemberId") + .HasColumnType("text"); + + b.Property("CircleId") + .HasColumnType("bigint"); + + b.HasKey("MemberId", "CircleId"); + + b.HasIndex("CircleId"); + + b.ToTable("CircleMembers"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Contact", b => + { + b.Property("OwnerId") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("text"); + + b.Property("AddressId") + .HasColumnType("bigint"); + + b.Property("ApplicationUserId") + .HasColumnType("text"); + + b.Property("EMail") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("OwnerId", "UserId"); + + b.HasIndex("AddressId"); + + b.HasIndex("ApplicationUserId"); + + b.ToTable("Contact"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.HyperLink", b => + { + b.Property("HRef") + .HasColumnType("text"); + + b.Property("Method") + .HasColumnType("text"); + + b.Property("BrusherProfileUserId") + .HasColumnType("text"); + + b.Property("ContentType") + .IsRequired() + .HasColumnType("text"); + + b.Property("PayPalPaymentCreationToken") + .HasColumnType("text"); + + b.Property("Rel") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("HRef", "Method"); + + b.HasIndex("BrusherProfileUserId"); + + b.HasIndex("PayPalPaymentCreationToken"); + + b.ToTable("HyperLink"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Location", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasMaxLength(512) + .HasColumnType("character varying(512)"); + + b.Property("Latitude") + .HasColumnType("double precision"); + + b.Property("Longitude") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.ToTable("Locations"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.PostalAddress", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("City") + .IsRequired() + .HasColumnType("text"); + + b.Property("Country") + .IsRequired() + .HasColumnType("text"); + + b.Property("PostalCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("Province") + .IsRequired() + .HasColumnType("text"); + + b.Property("State") + .IsRequired() + .HasColumnType("text"); + + b.Property("Street1") + .IsRequired() + .HasColumnType("text"); + + b.Property("Street2") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("PostalAddress"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Tag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Tags"); + }); + + modelBuilder.Entity("Yavsc.Models.Skill", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Rate") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("SiteSkills"); + }); + + modelBuilder.Entity("Yavsc.Models.Streaming.LiveFlow", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("DifferedFileName") + .IsRequired() + .HasColumnType("text"); + + b.Property("MediaType") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Pitch") + .IsRequired() + .HasColumnType("text"); + + b.Property("SequenceNumber") + .HasColumnType("integer"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId"); + + b.ToTable("LiveFlow"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.Activity", b => + { + b.Property("Code") + .HasColumnType("text"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("Hidden") + .HasColumnType("boolean"); + + b.Property("ModeratorGroupName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("ParentCode") + .HasColumnType("text"); + + b.Property("Photo") + .IsRequired() + .HasColumnType("text"); + + b.Property("Rate") + .HasColumnType("integer"); + + b.Property("SettingsClassName") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Code"); + + b.HasIndex("ParentCode"); + + b.ToTable("Activities"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.CoWorking", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("FormationSettingsUserId") + .HasColumnType("text"); + + b.Property("PerformerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorkingForId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("FormationSettingsUserId"); + + b.HasIndex("PerformerId"); + + b.HasIndex("WorkingForId"); + + b.ToTable("CoWorking"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.CommandForm", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ActionName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ActivityCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ActivityCode"); + + b.ToTable("CommandForm"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b => + { + b.Property("PerformerId") + .HasColumnType("text"); + + b.Property("AcceptNotifications") + .HasColumnType("boolean"); + + b.Property("AcceptPublicContact") + .HasColumnType("boolean"); + + b.Property("Active") + .HasColumnType("boolean"); + + b.Property("MaxDailyCost") + .HasColumnType("integer"); + + b.Property("MinDailyCost") + .HasColumnType("integer"); + + b.Property("OrganizationAddressId") + .HasColumnType("bigint"); + + b.Property("Rate") + .HasColumnType("integer"); + + b.Property("SIREN") + .IsRequired() + .HasColumnType("text"); + + b.Property("UseGeoLocalizationToReduceDistanceWithClients") + .HasColumnType("boolean"); + + b.Property("WebSite") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("PerformerId"); + + b.HasIndex("OrganizationAddressId"); + + b.ToTable("Performers"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.Profiles.FormationSettings", b => + { + b.Property("UserId") + .HasColumnType("text"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("UserId"); + + b.ToTable("FormationSettings"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.RdvQuery", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Accepted") + .HasColumnType("boolean"); + + b.Property("ActivityCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Consent") + .HasColumnType("boolean"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Decided") + .HasColumnType("boolean"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("EventDate") + .HasColumnType("timestamp with time zone"); + + b.Property("LocationId") + .HasColumnType("bigint"); + + b.Property("LocationType") + .HasColumnType("integer"); + + b.Property("PaymentId") + .IsRequired() + .HasColumnType("text"); + + b.Property("PerformerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Previsional") + .HasColumnType("numeric"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.Property("ValidationDate") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Id"); + + b.HasIndex("ActivityCode"); + + b.HasIndex("ClientId"); + + b.HasIndex("LocationId"); + + b.HasIndex("PaymentId"); + + b.HasIndex("PerformerId"); + + b.ToTable("RdvQueries"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.UserActivity", b => + { + b.Property("DoesCode") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("text"); + + b.Property("Weight") + .HasColumnType("integer"); + + b.HasKey("DoesCode", "UserId"); + + b.HasIndex("UserId"); + + b.ToTable("UserActivities"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.Calendar.Period", b => + { + b.Property("Start") + .HasColumnType("timestamp with time zone"); + + b.Property("End") + .HasColumnType("timestamp with time zone"); + + b.HasKey("Start", "End"); + + b.ToTable("Period"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.EMailing.MailingTemplate", b => + { + b.Property("Id") + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasMaxLength(65536) + .HasColumnType("character varying(65536)"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("ReplyToAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("ToSend") + .HasColumnType("integer"); + + b.Property("Topic") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("MailingTemplate"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.Project", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Accepted") + .HasColumnType("boolean"); + + b.Property("ActivityCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Consent") + .HasColumnType("boolean"); + + b.Property("DateCreated") + .HasColumnType("timestamp with time zone"); + + b.Property("DateModified") + .HasColumnType("timestamp with time zone"); + + b.Property("Decided") + .HasColumnType("boolean"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("GitId") + .HasColumnType("bigint"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentId") + .IsRequired() + .HasColumnType("text"); + + b.Property("PerformerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Previsional") + .HasColumnType("numeric"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("UserCreated") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserModified") + .IsRequired() + .HasColumnType("text"); + + b.Property("ValidationDate") + .HasColumnType("timestamp with time zone"); + + b.Property("Version") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ActivityCode"); + + b.HasIndex("ClientId"); + + b.HasIndex("GitId"); + + b.HasIndex("PaymentId"); + + b.HasIndex("PerformerId"); + + b.ToTable("Project"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.ProjectBuildConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("ProjectId") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("ProjectId"); + + b.ToTable("ProjectBuildConfiguration"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.SourceCode.GitRepositoryReference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Branch") + .IsRequired() + .HasColumnType("text"); + + b.Property("OwnerId") + .IsRequired() + .HasColumnType("text"); + + b.Property("Path") + .IsRequired() + .HasColumnType("text"); + + b.Property("Url") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId"); + + b.ToTable("GitRepositoryReference"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Yavsc.Models.Access.Ban", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "TargetUser") + .WithMany() + .HasForeignKey("TargetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("TargetUser"); + }); + + modelBuilder.Entity("Yavsc.Models.Access.BlackListed", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany("BlackList") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Yavsc.Models.Access.CircleAuthorizationToBlogPost", b => + { + b.HasOne("Yavsc.Models.Blog.BlogPost", "Target") + .WithMany("ACL") + .HasForeignKey("BlogPostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Relationship.Circle", "Allowed") + .WithMany() + .HasForeignKey("CircleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Allowed"); + + b.Navigation("Target"); + }); + + modelBuilder.Entity("Yavsc.Models.AccountBalance", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithOne("AccountBalance") + .HasForeignKey("Yavsc.Models.AccountBalance", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.ApplicationUser", b => + { + b.HasOne("Yavsc.Models.Relationship.Location", "PostalAddress") + .WithMany() + .HasForeignKey("PostalAddressId"); + + b.Navigation("PostalAddress"); + }); + + modelBuilder.Entity("Yavsc.Models.BalanceImpact", b => + { + b.HasOne("Yavsc.Models.AccountBalance", "Balance") + .WithMany() + .HasForeignKey("BalanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Balance"); + }); + + modelBuilder.Entity("Yavsc.Models.Bank.BankIdentity", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "User") + .WithMany("BankInfo") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.CommandLine", b => + { + b.HasOne("Yavsc.Models.Billing.Estimate", null) + .WithMany("Bill") + .HasForeignKey("EstimateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Billing.EstimateTemplate", null) + .WithMany("Bill") + .HasForeignKey("EstimateTemplateId"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.Estimate", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Client") + .WithMany() + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.RdvQuery", "Query") + .WithMany() + .HasForeignKey("CommandId"); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Owner"); + + b.Navigation("Query"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.BlogPost", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Author") + .WithMany("Posts") + .HasForeignKey("AuthorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.BlogTag", b => + { + b.HasOne("Yavsc.Models.Blog.BlogPost", "Post") + .WithMany("Tags") + .HasForeignKey("PostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Relationship.Tag", "Tag") + .WithMany() + .HasForeignKey("TagId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Post"); + + b.Navigation("Tag"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.Comment", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Author") + .WithMany() + .HasForeignKey("AuthorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Blog.Comment", "Parent") + .WithMany("Children") + .HasForeignKey("ParentId"); + + b.HasOne("Yavsc.Models.Blog.BlogPost", "Post") + .WithMany("Comments") + .HasForeignKey("ReceiverId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Parent"); + + b.Navigation("Post"); + }); + + modelBuilder.Entity("Yavsc.Models.Calendar.Schedule", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.Calendar.ScheduledEvent", b => + { + b.HasOne("Yavsc.Models.Calendar.Schedule", null) + .WithMany("Events") + .HasForeignKey("ScheduleOwnerId"); + + b.HasOne("Yavsc.Server.Models.Calendar.Period", "Period") + .WithMany() + .HasForeignKey("PeriodStart", "PeriodEnd") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Period"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatConnection", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany("Connections") + .HasForeignKey("ApplicationUserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatRoom", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany("Rooms") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatRoomAccess", b => + { + b.HasOne("Yavsc.Models.Chat.ChatRoom", "Room") + .WithMany("Moderation") + .HasForeignKey("ChannelName") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "User") + .WithMany("RoomAccess") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Room"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.BrusherProfile", b => + { + b.HasOne("Yavsc.Models.Calendar.Schedule", "Schedule") + .WithMany() + .HasForeignKey("ScheduleOwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "BaseProfile") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("BaseProfile"); + + b.Navigation("Schedule"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairCutQuery", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Context") + .WithMany() + .HasForeignKey("ActivityCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "Client") + .WithMany() + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Relationship.Location", "Location") + .WithMany() + .HasForeignKey("LocationId"); + + b.HasOne("Yavsc.Models.Payment.PayPalPayment", "Regularisation") + .WithMany() + .HasForeignKey("PaymentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "PerformerProfile") + .WithMany() + .HasForeignKey("PerformerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Haircut.HairPrestation", "Prestation") + .WithMany() + .HasForeignKey("PrestationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Haircut.BrusherProfile", "SelectedProfile") + .WithMany() + .HasForeignKey("SelectedProfileUserId"); + + b.Navigation("Client"); + + b.Navigation("Context"); + + b.Navigation("Location"); + + b.Navigation("PerformerProfile"); + + b.Navigation("Prestation"); + + b.Navigation("Regularisation"); + + b.Navigation("SelectedProfile"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairMultiCutQuery", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Context") + .WithMany() + .HasForeignKey("ActivityCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "Client") + .WithMany() + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Relationship.Location", "Location") + .WithMany() + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Payment.PayPalPayment", "Regularisation") + .WithMany() + .HasForeignKey("PaymentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "PerformerProfile") + .WithMany() + .HasForeignKey("PerformerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Context"); + + b.Navigation("Location"); + + b.Navigation("PerformerProfile"); + + b.Navigation("Regularisation"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairPrestationCollectionItem", b => + { + b.HasOne("Yavsc.Models.Haircut.HairPrestation", "Prestation") + .WithMany() + .HasForeignKey("PrestationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Haircut.HairMultiCutQuery", "Query") + .WithMany("Prestations") + .HasForeignKey("QueryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Prestation"); + + b.Navigation("Query"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairTaint", b => + { + b.HasOne("Yavsc.Models.Drawing.Color", "Color") + .WithMany() + .HasForeignKey("ColorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Color"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairTaintInstance", b => + { + b.HasOne("Yavsc.Models.Haircut.HairPrestation", "Prestation") + .WithMany("Taints") + .HasForeignKey("PrestationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Haircut.HairTaint", "Taint") + .WithMany() + .HasForeignKey("TaintId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Prestation"); + + b.Navigation("Taint"); + }); + + modelBuilder.Entity("Yavsc.Models.IT.Fixing.Bug", b => + { + b.HasOne("Yavsc.Models.IT.Evolution.Feature", "False") + .WithMany() + .HasForeignKey("FeatureId"); + + b.Navigation("False"); + }); + + modelBuilder.Entity("Yavsc.Models.Identity.DeviceDeclaration", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "DeviceOwner") + .WithMany("DeviceDeclaration") + .HasForeignKey("DeviceOwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("DeviceOwner"); + }); + + modelBuilder.Entity("Yavsc.Models.Market.Service", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Context") + .WithMany("Services") + .HasForeignKey("ContextId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Context"); + }); + + modelBuilder.Entity("Yavsc.Models.Messaging.Announce", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.Messaging.DismissClicked", b => + { + b.HasOne("Yavsc.Models.Messaging.Notification", "Notified") + .WithMany() + .HasForeignKey("NotificationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Notified"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.InstrumentRating", b => + { + b.HasOne("Yavsc.Models.Musical.Instrument", "Instrument") + .WithMany() + .HasForeignKey("InstrumentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "Profile") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Instrument"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.MusicalPreference", b => + { + b.HasOne("Yavsc.Models.Musical.Profiles.DjSettings", null) + .WithMany("SoundColor") + .HasForeignKey("DjSettingsUserId"); + + b.HasOne("Yavsc.Models.Musical.Profiles.GeneralSettings", null) + .WithMany("SoundColor") + .HasForeignKey("GeneralSettingsUserId"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Profiles.Instrumentation", b => + { + b.HasOne("Yavsc.Models.Musical.Instrument", "Tool") + .WithMany() + .HasForeignKey("InstrumentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Tool"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Yavsc.Models.Payment.PayPalPayment", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Executor") + .WithMany() + .HasForeignKey("ExecutorId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Executor"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Circle", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", null) + .WithMany("Circles") + .HasForeignKey("ApplicationUserId"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.CircleMember", b => + { + b.HasOne("Yavsc.Models.Relationship.Circle", "Circle") + .WithMany("Members") + .HasForeignKey("CircleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "Member") + .WithMany("Membership") + .HasForeignKey("MemberId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Circle"); + + b.Navigation("Member"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Contact", b => + { + b.HasOne("Yavsc.Models.Relationship.PostalAddress", "PostalAddress") + .WithMany() + .HasForeignKey("AddressId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", null) + .WithMany("Book") + .HasForeignKey("ApplicationUserId"); + + b.Navigation("PostalAddress"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.HyperLink", b => + { + b.HasOne("Yavsc.Models.Haircut.BrusherProfile", null) + .WithMany("Links") + .HasForeignKey("BrusherProfileUserId"); + + b.HasOne("Yavsc.Models.Payment.PayPalPayment", null) + .WithMany("Links") + .HasForeignKey("PayPalPaymentCreationToken"); + }); + + modelBuilder.Entity("Yavsc.Models.Streaming.LiveFlow", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.Activity", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Parent") + .WithMany("Children") + .HasForeignKey("ParentCode"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.CoWorking", b => + { + b.HasOne("Yavsc.Models.Workflow.Profiles.FormationSettings", null) + .WithMany("CoWorking") + .HasForeignKey("FormationSettingsUserId"); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "Performer") + .WithMany() + .HasForeignKey("PerformerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "WorkingFor") + .WithMany() + .HasForeignKey("WorkingForId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Performer"); + + b.Navigation("WorkingFor"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.CommandForm", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Context") + .WithMany("Forms") + .HasForeignKey("ActivityCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Context"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b => + { + b.HasOne("Yavsc.Models.Relationship.Location", "OrganizationAddress") + .WithMany() + .HasForeignKey("OrganizationAddressId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "Performer") + .WithMany() + .HasForeignKey("PerformerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("OrganizationAddress"); + + b.Navigation("Performer"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.RdvQuery", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Context") + .WithMany() + .HasForeignKey("ActivityCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "Client") + .WithMany() + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Relationship.Location", "Location") + .WithMany() + .HasForeignKey("LocationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Payment.PayPalPayment", "Regularisation") + .WithMany() + .HasForeignKey("PaymentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "PerformerProfile") + .WithMany() + .HasForeignKey("PerformerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Context"); + + b.Navigation("Location"); + + b.Navigation("PerformerProfile"); + + b.Navigation("Regularisation"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.UserActivity", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Does") + .WithMany() + .HasForeignKey("DoesCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "User") + .WithMany("Activity") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Does"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.Project", b => + { + b.HasOne("Yavsc.Models.Workflow.Activity", "Context") + .WithMany() + .HasForeignKey("ActivityCode") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.ApplicationUser", "Client") + .WithMany() + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Server.Models.IT.SourceCode.GitRepositoryReference", "Repository") + .WithMany() + .HasForeignKey("GitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Payment.PayPalPayment", "Regularisation") + .WithMany() + .HasForeignKey("PaymentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Yavsc.Models.Workflow.PerformerProfile", "PerformerProfile") + .WithMany() + .HasForeignKey("PerformerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + + b.Navigation("Context"); + + b.Navigation("PerformerProfile"); + + b.Navigation("Regularisation"); + + b.Navigation("Repository"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.ProjectBuildConfiguration", b => + { + b.HasOne("Yavsc.Server.Models.IT.Project", "TargetProject") + .WithMany("Configurations") + .HasForeignKey("ProjectId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("TargetProject"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.SourceCode.GitRepositoryReference", b => + { + b.HasOne("Yavsc.Models.ApplicationUser", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Yavsc.Models.ApplicationUser", b => + { + b.Navigation("AccountBalance") + .IsRequired(); + + b.Navigation("BankInfo"); + + b.Navigation("BlackList"); + + b.Navigation("Book"); + + b.Navigation("Circles"); + + b.Navigation("Connections"); + + b.Navigation("DeviceDeclaration"); + + b.Navigation("Membership"); + + b.Navigation("Posts"); + + b.Navigation("RoomAccess"); + + b.Navigation("Rooms"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.Estimate", b => + { + b.Navigation("Bill"); + }); + + modelBuilder.Entity("Yavsc.Models.Billing.EstimateTemplate", b => + { + b.Navigation("Bill"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.BlogPost", b => + { + b.Navigation("ACL"); + + b.Navigation("Comments"); + + b.Navigation("Tags"); + }); + + modelBuilder.Entity("Yavsc.Models.Blog.Comment", b => + { + b.Navigation("Children"); + }); + + modelBuilder.Entity("Yavsc.Models.Calendar.Schedule", b => + { + b.Navigation("Events"); + }); + + modelBuilder.Entity("Yavsc.Models.Chat.ChatRoom", b => + { + b.Navigation("Moderation"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.BrusherProfile", b => + { + b.Navigation("Links"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairMultiCutQuery", b => + { + b.Navigation("Prestations"); + }); + + modelBuilder.Entity("Yavsc.Models.Haircut.HairPrestation", b => + { + b.Navigation("Taints"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Profiles.DjSettings", b => + { + b.Navigation("SoundColor"); + }); + + modelBuilder.Entity("Yavsc.Models.Musical.Profiles.GeneralSettings", b => + { + b.Navigation("SoundColor"); + }); + + modelBuilder.Entity("Yavsc.Models.Payment.PayPalPayment", b => + { + b.Navigation("Links"); + }); + + modelBuilder.Entity("Yavsc.Models.Relationship.Circle", b => + { + b.Navigation("Members"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.Activity", b => + { + b.Navigation("Children"); + + b.Navigation("Forms"); + + b.Navigation("Services"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.PerformerProfile", b => + { + b.Navigation("Activity"); + }); + + modelBuilder.Entity("Yavsc.Models.Workflow.Profiles.FormationSettings", b => + { + b.Navigation("CoWorking"); + }); + + modelBuilder.Entity("Yavsc.Server.Models.IT.Project", b => + { + b.Navigation("Configurations"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Yavsc/Migrations/20241214201053_commentParent.cs b/src/Yavsc/Migrations/20241214201053_commentParent.cs new file mode 100644 index 00000000..6180b3ab --- /dev/null +++ b/src/Yavsc/Migrations/20241214201053_commentParent.cs @@ -0,0 +1,61 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Yavsc.Migrations +{ + /// + public partial class commentParent : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Comment_Blogspot_PostId", + table: "Comment"); + + migrationBuilder.DropIndex( + name: "IX_Comment_PostId", + table: "Comment"); + + + migrationBuilder.CreateIndex( + name: "IX_Comment_ReceiverId", + table: "Comment", + column: "ReceiverId"); + + migrationBuilder.AddForeignKey( + name: "FK_Comment_Blogspot_ReceiverId", + table: "Comment", + column: "ReceiverId", + principalTable: "Blogspot", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Comment_Blogspot_ReceiverId", + table: "Comment"); + + migrationBuilder.DropIndex( + name: "IX_Comment_ReceiverId", + table: "Comment"); + + migrationBuilder.CreateIndex( + name: "IX_Comment_PostId", + table: "Comment", + column: "PostId"); + + migrationBuilder.AddForeignKey( + name: "FK_Comment_Blogspot_PostId", + table: "Comment", + column: "PostId", + principalTable: "Blogspot", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/src/Yavsc/Migrations/ApplicationDbContextModelSnapshot.cs b/src/Yavsc/Migrations/ApplicationDbContextModelSnapshot.cs index 276d9621..7fe8001b 100644 --- a/src/Yavsc/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/src/Yavsc/Migrations/ApplicationDbContextModelSnapshot.cs @@ -712,7 +712,8 @@ namespace Yavsc.Migrations b.Property("Content") .IsRequired() - .HasColumnType("text"); + .HasMaxLength(56224) + .HasColumnType("character varying(56224)"); b.Property("DateCreated") .HasColumnType("timestamp with time zone"); @@ -720,20 +721,17 @@ namespace Yavsc.Migrations b.Property("DateModified") .HasColumnType("timestamp with time zone"); - b.Property("Lang") - .IsRequired() - .HasColumnType("text"); - b.Property("Photo") - .IsRequired() - .HasColumnType("text"); + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); b.Property("Rate") .HasColumnType("integer"); b.Property("Title") .IsRequired() - .HasColumnType("text"); + .HasMaxLength(1024) + .HasColumnType("character varying(1024)"); b.Property("UserCreated") .IsRequired() @@ -793,7 +791,7 @@ namespace Yavsc.Migrations b.Property("ParentId") .HasColumnType("bigint"); - b.Property("PostId") + b.Property("ReceiverId") .HasColumnType("bigint"); b.Property("UserCreated") @@ -813,7 +811,7 @@ namespace Yavsc.Migrations b.HasIndex("ParentId"); - b.HasIndex("PostId"); + b.HasIndex("ReceiverId"); b.ToTable("Comment"); }); @@ -2354,33 +2352,6 @@ namespace Yavsc.Migrations b.ToTable("UserActivities"); }); - modelBuilder.Entity("Yavsc.Server.Models.Blog.BlogTrad", b => - { - b.Property("PostId") - .HasColumnType("bigint"); - - b.Property("Lang") - .HasColumnType("text"); - - b.Property("Body") - .IsRequired() - .HasColumnType("text"); - - b.Property("Title") - .IsRequired() - .HasColumnType("text"); - - b.Property("TraducerId") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("PostId", "Lang"); - - b.HasIndex("TraducerId"); - - b.ToTable("BlogTrad"); - }); - modelBuilder.Entity("Yavsc.Server.Models.Calendar.Period", b => { b.Property("Start") @@ -2801,7 +2772,7 @@ namespace Yavsc.Migrations b.HasOne("Yavsc.Models.Blog.BlogPost", "Post") .WithMany("Comments") - .HasForeignKey("PostId") + .HasForeignKey("ReceiverId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -3353,17 +3324,6 @@ namespace Yavsc.Migrations b.Navigation("User"); }); - modelBuilder.Entity("Yavsc.Server.Models.Blog.BlogTrad", b => - { - b.HasOne("Yavsc.Models.ApplicationUser", "Traducer") - .WithMany() - .HasForeignKey("TraducerId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.Navigation("Traducer"); - }); - modelBuilder.Entity("Yavsc.Server.Models.IT.Project", b => { b.HasOne("Yavsc.Models.Workflow.Activity", "Context") diff --git a/src/Yavsc/Models/ApplicationDbContext.cs b/src/Yavsc/Models/ApplicationDbContext.cs index 84cff78d..750f636c 100644 --- a/src/Yavsc/Models/ApplicationDbContext.cs +++ b/src/Yavsc/Models/ApplicationDbContext.cs @@ -214,12 +214,12 @@ namespace Yavsc.Models { if (entity.State == EntityState.Added) { - ((IBaseTrackedEntity)entity.Entity).DateCreated = DateTime.Now; - ((IBaseTrackedEntity)entity.Entity).UserCreated = currentUsername; + ((ITrackedEntity)entity.Entity).DateCreated = DateTime.Now; + ((ITrackedEntity)entity.Entity).UserCreated = currentUsername; } - ((IBaseTrackedEntity)entity.Entity).DateModified = DateTime.Now; - ((IBaseTrackedEntity)entity.Entity).UserModified = currentUsername; + ((ITrackedEntity)entity.Entity).DateModified = DateTime.Now; + ((ITrackedEntity)entity.Entity).UserModified = currentUsername; } } public int SaveChanges(string userId) diff --git a/src/Yavsc/ViewComponents/CommentViewComponent.cs b/src/Yavsc/ViewComponents/CommentViewComponent.cs index 619811cb..1c2b63b6 100644 --- a/src/Yavsc/ViewComponents/CommentViewComponent.cs +++ b/src/Yavsc/ViewComponents/CommentViewComponent.cs @@ -15,7 +15,7 @@ namespace Yavsc.ViewComponents { // for a BlogPost, it results in the localization 'apiRouteCommentBlogPost': blogcomments ViewData["apictlr"] = "/api/"+localizer["apiRouteComment"+longCommentable.GetType().Name]; - return View(longCommentable.GetType().Name, new Comment{ PostId = longCommentable.Id }); + return View(longCommentable.GetType().Name, new Comment{ ReceiverId = longCommentable.Id }); } } } diff --git a/src/Yavsc/Views/Blogspot/Details.cshtml b/src/Yavsc/Views/Blogspot/Details.cshtml index 713f55b3..3552f566 100644 --- a/src/Yavsc/Views/Blogspot/Details.cshtml +++ b/src/Yavsc/Views/Blogspot/Details.cshtml @@ -2,49 +2,46 @@ @{ ViewData["Title"]=Model.Title; } -@section header { +@section scripts { + + + + + + @await RenderSectionAsync("header", false) @@ -41,9 +44,9 @@ © 2024 - Yavsc - Privacy - - - @await RenderSectionAsync("scripts", false) + + +@await RenderSectionAsync("scripts", false) diff --git a/src/Yavsc/wwwroot/jquery-ui-1.14.1.custom.zip b/src/Yavsc/wwwroot/jquery-ui-1.14.1.custom.zip new file mode 100644 index 0000000000000000000000000000000000000000..6a357a03445b4b8969bd03807fdf272cc3409350 GIT binary patch literal 421955 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
Ob180BeByDTr2j#Ax$2>5y93H%xZp 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 %Nms)<9yKp$H211qyzut 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

"),this.element.on("mouseenter",this.onMouseEnter),this.element.on("mouseleave",this.onMouseLeave),this.ctlBtn=l('').on("click",function(t){e.toggleCollapse(e,t)}).appendTo(e.element)},toggleCollapse:function(t,e){t.collapsed=!t.collapsed,t.collapsed?(l(t.ctlBtn).removeClass("glyphicon-collapse-down"),l(t.ctlBtn).addClass("glyphicon-collapse-up")):(l(t.ctlBtn).removeClass("glyphicon-collapse-up"),l(t.ctlBtn).addClass("glyphicon-collapse-down")),t.editable&&t.toggleEdit(t,e),t.options.allowCoc&&t.toggleComment(t,e)},toggleEdit:function(e,t){e.delBtn?(e.delBtn.remove(),e.delBtn=null):(e.delBtn=l(''),e.delBtn.on("click",function(t){e.doDeleteComment(e,t)}).appendTo(e.element))},toggleComment:function(e,t){e.cmtBtn?(e.cmtInput.remove(),e.cmtBtn.remove(),e.cmtBtn=null):(e.subCmts||(e.subCmts=l(e.element).children("div.subcomments"),0==e.subCmts.length&&(e.subCmts=l("
").addClass("subcomments"),e.subCmts.appendTo(e.element))),e.cmtInput=l(''),e.cmtInput.appendTo(e.element),e.cmtBtn=l(''),e.cmtBtn.on("click",function(t){e.doCoC(e,t)}).appendTo(e.element))},onMouseEnter:function(){l(this).animate({backgroundColor:l.psc.blogcomment.prototype.options.omob,color:l.psc.blogcomment.prototype.options.omof},400)},onMouseLeave:function(){l(this).animate({backgroundColor:l.psc.blogcomment.prototype.options.bgc,color:l.psc.blogcomment.prototype.options.fgc},400)},doDeleteComment:function(e,t){var o=l(e.element).data("id"),n=e.options.apictrlr;l.ajax({async:!0,cache:!1,type:"POST",method:"DELETE",error:function(t,e){l('span.field-validation-valid[data-valmsg-for="Content"]').html("Une erreur est survenue : "+t.status+"
").focus()},success:function(t){e.element.remove()},url:n+"/"+o})},doCoC:function(n,t){var e=l("#cmtBtn").data("receiverid"),o={Content:n.cmtInput.val(),PostId:e,ParentId:l(n.element).data("id"),AuthorId:n.options.authorId};l.ajax({async:!0,cache:!1,type:"POST",method:"POST",contentType:"application/json",data:JSON.stringify(o),error:function(t,e){console.log("err"),console.log(t),console.log(e),l('span.field-validation-valid[data-valmsg-for="Content"]').html("Une erreur est survenue : "+t.status+"
"+t.responseText+"
")},success:function(t){var e=t.Content;n.cmtInput.val(""),l('span.field-validation-valid[data-valmsg-for="Content"]').empty();var o=htmlize(e);l('
'+o+"
").blogcomment().appendTo(n.subCmts)},url:n.options.apictrlr})}}),l(document).ready(function(){l("[data-type='blogcomment']").blogcomment()})}(jQuery); \ No newline at end of file diff --git a/src/Yavsc/wwwroot/js/dash.all.min.js b/src/Yavsc/wwwroot/js/dash.all.min.js deleted file mode 100644 index 3883d0a5..00000000 --- a/src/Yavsc/wwwroot/js/dash.all.min.js +++ /dev/null @@ -1,19 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.dashjs=t():e.dashjs=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},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="/dist/",n(n.s=104)}([function(e,t,n){"use strict";function r(e,t){for(var n=0;n0&&(r+=" ");for(var s=arguments.length,u=new Array(s>2?s-2:0),l=2;l=e&&g[e](r),p&&p.get().debug.dispatchEvent&&h.trigger(i.a.LOG,{message:r,level:e})}return t={getLogger:function(e){return{fatal:y.bind(e),error:E.bind(e),warn:_.bind(e),info:v.bind(e),debug:T.bind(e)}},setLogTimestampVisible:function(e){n=e},setCalleeNameVisible:function(e){a=e}},n=!0,a=!0,f=(new Date).getTime(),"undefined"!=typeof window&&window.console&&(g[o]=m(window.console.error),g[s]=m(window.console.error),g[u]=m(window.console.warn),g[l]=m(window.console.info),g[c]=m(window.console.debug)),t}f.__dashjs_factory_name="Debug";var d=a.a.getSingletonFactory(f);d.LOG_LEVEL_NONE=0,d.LOG_LEVEL_FATAL=o,d.LOG_LEVEL_ERROR=s,d.LOG_LEVEL_WARNING=u,d.LOG_LEVEL_INFO=l,d.LOG_LEVEL_DEBUG=c,a.a.updateSingletonFactory(f.__dashjs_factory_name,d),t.a=d},function(e,t,n){"use strict";var r=n(3),i=n(4);function a(){var e={};function t(t,n,r){var i=-1;return e[t]?(e[t].some((function(e,t){if(e&&e.callback===n&&(!r||r===e.scope))return i=t,!0})),i):i}return{on:function(n,r,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!n)throw new Error("event type cannot be null or undefined");if(!r||"function"!=typeof r)throw new Error("listener must be a function: "+r);var o=a.priority||0;if(!(t(n,r,i)>=0)){e[n]=e[n]||[];var s={callback:r,scope:i,priority:o};i&&i.getStreamId&&(s.streamId=i.getStreamId()),i&&i.getType&&(s.mediaType=i.getType()),a&&a.mode&&(s.mode=a.mode);var u=e[n].some((function(t,r){if(t&&o>t.priority)return e[n].splice(r,0,s),!0}));u||e[n].push(s)}},off:function(n,r,i){if(n&&r&&e[n]){var a=t(n,r,i);a<0||(e[n][a]=null)}},trigger:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t&&e[t]){if((n=n||{}).hasOwnProperty("type"))throw new Error("'type' is a reserved word for event dispatching");n.type=t,r.streamId&&(n.streamId=r.streamId),r.mediaType&&(n.mediaType=r.mediaType),e[t].filter((function(e){return!!e&&((!r.streamId||!e.streamId||e.streamId===r.streamId)&&((!r.mediaType||!e.mediaType||e.mediaType===r.mediaType)&&!(r.mode&&e.mode&&e.mode!==r.mode||!e.mode&&r.mode&&r.mode===i.a.EVENT_MODE_ON_RECEIVE)))})).forEach((function(e){return e&&e.callback.call(e.scope,n)}))}},reset:function(){e={}}}}a.__dashjs_factory_name="EventBus";var o=r.a.getSingletonFactory(a);o.EVENT_PRIORITY_LOW=0,o.EVENT_PRIORITY_HIGH=5e3,r.a.updateSingletonFactory(a.__dashjs_factory_name,o),t.a=o},function(e,t,n){"use strict";t.a=function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.code=t||null,this.message=n||null,this.data=r||null}},function(e,t,n){"use strict";function r(e){return(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})(e)}function i(e,t){return(i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function a(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=s(e);if(t){var i=s(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return o(this,n)}}function o(e,t){return!t||"object"!==r(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function s(e){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var u=new(function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&i(e,t)}(n,e);var t=a(n);function n(){var e;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),(e=t.call(this)).MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE=10,e.MANIFEST_LOADER_LOADING_FAILURE_ERROR_CODE=11,e.XLINK_LOADER_LOADING_FAILURE_ERROR_CODE=12,e.SEGMENT_BASE_LOADER_ERROR_CODE=15,e.TIME_SYNC_FAILED_ERROR_CODE=16,e.FRAGMENT_LOADER_LOADING_FAILURE_ERROR_CODE=17,e.FRAGMENT_LOADER_NULL_REQUEST_ERROR_CODE=18,e.URL_RESOLUTION_FAILED_GENERIC_ERROR_CODE=19,e.APPEND_ERROR_CODE=20,e.REMOVE_ERROR_CODE=21,e.DATA_UPDATE_FAILED_ERROR_CODE=22,e.CAPABILITY_MEDIASOURCE_ERROR_CODE=23,e.CAPABILITY_MEDIAKEYS_ERROR_CODE=24,e.DOWNLOAD_ERROR_ID_MANIFEST_CODE=25,e.DOWNLOAD_ERROR_ID_SIDX_CODE=26,e.DOWNLOAD_ERROR_ID_CONTENT_CODE=27,e.DOWNLOAD_ERROR_ID_INITIALIZATION_CODE=28,e.DOWNLOAD_ERROR_ID_XLINK_CODE=29,e.MANIFEST_ERROR_ID_PARSE_CODE=31,e.MANIFEST_ERROR_ID_NOSTREAMS_CODE=32,e.TIMED_TEXT_ERROR_ID_PARSE_CODE=33,e.MANIFEST_ERROR_ID_MULTIPLEXED_CODE=34,e.MEDIASOURCE_TYPE_UNSUPPORTED_CODE=35,e.MANIFEST_LOADER_PARSING_FAILURE_ERROR_MESSAGE="parsing failed for ",e.MANIFEST_LOADER_LOADING_FAILURE_ERROR_MESSAGE="Failed loading manifest: ",e.XLINK_LOADER_LOADING_FAILURE_ERROR_MESSAGE="Failed loading Xlink element: ",e.SEGMENTS_UPDATE_FAILED_ERROR_MESSAGE="Segments update failed",e.SEGMENTS_UNAVAILABLE_ERROR_MESSAGE="no segments are available yet",e.SEGMENT_BASE_LOADER_ERROR_MESSAGE="error loading segment ranges from sidx",e.TIME_SYNC_FAILED_ERROR_MESSAGE="Failed to synchronize client and server time",e.FRAGMENT_LOADER_NULL_REQUEST_ERROR_MESSAGE="request is null",e.URL_RESOLUTION_FAILED_GENERIC_ERROR_MESSAGE="Failed to resolve a valid URL",e.APPEND_ERROR_MESSAGE="chunk is not defined",e.REMOVE_ERROR_MESSAGE="Removing data from the SourceBuffer",e.DATA_UPDATE_FAILED_ERROR_MESSAGE="Data update failed",e.CAPABILITY_MEDIASOURCE_ERROR_MESSAGE="mediasource is not supported",e.CAPABILITY_MEDIAKEYS_ERROR_MESSAGE="mediakeys is not supported",e.TIMED_TEXT_ERROR_MESSAGE_PARSE="parsing error :",e.MEDIASOURCE_TYPE_UNSUPPORTED_MESSAGE="Error creating source buffer of type : ",e}return n}(n(24).a));t.a=u},function(e,t,n){"use strict";n.d(t,"e",(function(){return a})),n.d(t,"c",(function(){return o})),n.d(t,"d",(function(){return s})),n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return f}));var r=n(27);function i(e,t){for(;e.lengthr&&o=a)}return!0}function c(e,t,n,r){var i,a,o;i=n.segmentDuration,isNaN(i)&&(i=n.adaptation.period.duration),a=parseFloat((n.adaptation.period.start+r*i).toFixed(5)),o=parseFloat((a+i).toFixed(5));var s=u(n,i,a,e.calcMediaTimeFromPresentationTime(a,n),e,o,t,r);return l(e,n,s,t)?s:null}function f(e,t,n,r,i,a,o,c,f,d){var h,p,g=r/a,m=i/a;return h=e.calcPresentationTimeFromMediaTime(g,n),l(e,n,p=u(n,m,h,g,e,h+m,t,f),t)?(p.replacementTime=d||r,o=s(o,"Number",p.replacementNumber),o=s(o,"Time",p.replacementTime),p.media=o,p.mediaRange=c,p):null}},function(e,t,n){"use strict";var r=n(3);function i(){var e,t=/^[a-z][a-z0-9+\-_.]*:/i,n=/^https?:\/\//i,r=/^https:\/\//i,i=/^([a-z][a-z0-9+\-_.]*:\/\/[^\/]+)\/?/i,a=function(e,t){try{return new window.URL(e,t).toString()}catch(t){return e}},o=function(e,t){var n=s;if(!t)return e;if(!c(e))return e;f(e)&&(n=u),d(e)&&(n=l);var r=n(t),i="/"!==r.charAt(r.length-1)&&"/"!==e.charAt(0)?"/":"";return[r,e].join(i)};function s(e){var t=e.indexOf("/"),n=e.lastIndexOf("/");return-1!==t?n===t+1?e:(-1!==e.indexOf("?")&&(e=e.substring(0,e.indexOf("?"))),e.substring(0,n+1)):""}function u(e){var t=e.match(i);return t?t[1]:""}function l(e){var n=e.match(t);return n?n[0]:""}function c(e){return!t.test(e)}function f(e){return c(e)&&"/"===e.charAt(0)}function d(e){return 0===e.indexOf("//")}return function(){try{new window.URL("x","http://y");e=a}catch(e){}finally{e=e||o}}(),{parseBaseUrl:s,parseOrigin:u,parseScheme:l,isRelative:c,isPathAbsolute:f,isSchemeRelative:d,isHTTPURL:function(e){return n.test(e)},isHTTPS:function(e){return r.test(e)},removeHostname:function(e){return/^(?:\w+\:\/\/)?([^\/]+)(.*)$/.exec(e)[2].substring(1)},resolve:function(t,n){return e(t,n)}}}i.__dashjs_factory_name="DefaultURLUtils";var a=r.a.getSingletonFactory(i);function o(){var e,t=[],n=this.context;function r(n,r,i){var a=function(n){var r;for(r=0;r0&&(t[a.substring(0,o)]=a.substring(o+2))}return t}},{key:"generateUuid",value:function(){var e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"==t?n:3&n|8).toString(16)}))}},{key:"generateHashCode",value:function(e){var t=0;if(0===e.length)return t;for(var n=0;n=e-n}))}function m(e,t){t<=e+.5||(r=r.filter((function(n){var r=p(n);return isNaN(n.startTime)||n.startTime>=t-r||isNaN(n.duration)||n.startTime+n.duration<=e+r})))}function y(e,t,n){for(var r=e.length-1;r>=0;r--){var i=e[r],a=i.startTime,o=a+i.duration;if(n=isNaN(n)?p(i):n,!isNaN(a)&&!isNaN(o)&&t+n>=a&&t-n0&&m(n,t)}else g()},abortRequests:function(){n.debug("abort requests"),l.abort(),a=[]},executeRequest:function(e){switch(e.action){case i.a.ACTION_DOWNLOAD:E(e,"loading"),a.push(e),function(e){o.trigger(s.FRAGMENT_LOADING_STARTED,{request:e},{streamId:f.id,mediaType:d}),l.load(e)}(e);break;default:n.warn("Unknown request action.")}},reset:function(){o.off(s.LOADING_COMPLETED,_,this),o.off(s.LOADING_DATA_PROGRESS,v,this),o.off(s.LOADING_ABANDONED,T,this),l&&l.reset(),S()},resetInitialSettings:S,addExecutedRequest:function(e){r.push(e)}},n=c.getLogger(t),S(),o.on(s.LOADING_COMPLETED,_,t),o.on(s.LOADING_DATA_PROGRESS,v,t),o.on(s.LOADING_ABANDONED,T,t),t}a.__dashjs_factory_name="FragmentModel";var o=r.a.getClassFactory(a);o.FRAGMENT_MODEL_LOADING="loading",o.FRAGMENT_MODEL_EXECUTED="executed",o.FRAGMENT_MODEL_CANCELED="canceled",o.FRAGMENT_MODEL_FAILED="failed",r.a.updateClassFactory(a.__dashjs_factory_name,o),t.a=o},function(e,t,n){"use strict";var r=n(3),i=n(41);function a(e){e=e||{};var t,n,r=this.context;return t=Object(i.a)(r).getInstance(),{load:function(i){var a=t.getLoader(i&&i.request?i.request.url:null);(n=a(r).create({errHandler:e.errHandler,mediaPlayerModel:e.mediaPlayerModel,requestModifier:e.requestModifier,dashMetrics:e.dashMetrics,boxParser:e.boxParser?e.boxParser:null,constants:e.constants?e.constants:null,dashConstants:e.dashConstants?e.dashConstants:null,urlUtils:e.urlUtils?e.urlUtils:null,requestTimeout:isNaN(e.requestTimeout)?0:e.requestTimeout,errors:e.errors})).load(i)},abort:function(){n&&n.abort()}}}a.__dashjs_factory_name="URLLoader";var o=r.a.getClassFactory(a);t.a=o},function(e,t,n){"use strict";var r=n(6);function i(e,t){for(var n=0;n0?n[n.length-1]:null}}}s.__dashjs_factory_name="IsoFile";var u=o.a.getClassFactory(s),l=n(22),c=n.n(l);var f=function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.lastCompletedOffset=t,this.found=n,this.size=r};function d(){var e,t,n=this.context;function i(e){if(!e)return null;void 0===e.fileStart&&(e.fileStart=0);var t=c.a.parseBuffer(e),r=u(n).create();return r.setData(t),r}function a(e,t){return e[t+3]>>>0|e[t+2]<<8>>>0|e[t+1]<<16>>>0|e[t]<<24>>>0}function o(e,t){return String.fromCharCode(e[t++])+String.fromCharCode(e[t++])+String.fromCharCode(e[t++])+String.fromCharCode(e[t])}return t={parse:i,findLastTopIsoBoxCompleted:function(e,t,n){if(void 0===n&&(n=0),!t||n+8>=t.byteLength)return new f(0,!1);for(var r,i=t instanceof ArrayBuffer?new Uint8Array(t):t,s=0;n=0?r=new f(n,!0,u):s=n+u),n+=u}return r||new f(s,!1)},getMediaTimescaleFromMoov:function(e){var t=i(e),n=t?t.getBox("mdhd"):void 0;return n?n.timescale:NaN},getSamplesInfo:function(e){if(!e||0===e.byteLength)return{sampleList:[],lastSequenceNumber:NaN,totalDuration:NaN,numSequences:NaN};var t,n,r,a,o,s,u,l,c,f,d,h,p,g,m,y,E=i(e),_=E.getBoxes("moof"),v=E.getBoxes("mfhd");m=E.getBoxes("moof").length,g=v[v.length-1].sequence_number,n=0,o=[];var T=-1,S=-1;for(f=0;f<_.length;f++){var A=_[f],b=A.getChildBoxes("traf");for(l=0;lS&&(T++,S+=M.entries[T].sample_delta),u==S){O.subSizes=[];var P=M.entries[T];for(h=0;h=t.byteLength)return new f(0,!1);for(var r,i=t instanceof ArrayBuffer?new Uint8Array(t):t,s=0;n=0?r=new f(n,!0,u,l):s=n+u),n+=u}return r||new f(s,!1)}},e=Object(r.a)(n).getInstance().getLogger(t),t}d.__dashjs_factory_name="BoxParser";t.a=o.a.getSingletonFactory(d)},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){ -/*! codem-isoboxer v0.3.6 https://github.com/madebyhiro/codem-isoboxer/blob/master/LICENSE.txt */ -var r={parseBuffer:function(e){return new i(e).parse()},addBoxProcessor:function(e,t){"string"==typeof e&&"function"==typeof t&&(a.prototype._boxProcessors[e]=t)},createFile:function(){return new i},createBox:function(e,t,n){var r=a.create(e);return t&&t.append(r,n),r},createFullBox:function(e,t,n){var i=r.createBox(e,t,n);return i.version=0,i.flags=0,i},Utils:{}};r.Utils.dataViewToString=function(e,t){var n=t||"utf-8";if("undefined"!=typeof TextDecoder)return new TextDecoder(n).decode(e);var r=[],i=0;if("utf-8"===n)for(;i>6),t.push(128|63&r)):r<65536?(t.push(224|r>>12),t.push(128|63&r>>6),t.push(128|63&r)):(t.push(240|r>>18),t.push(128|63&r>>12),t.push(128|63&r>>6),t.push(128|63&r))}return t},r.Utils.appendBox=function(e,t,n){if(t._offset=e._cursor.offset,t._root=e._root?e._root:e,t._raw=e._raw,t._parent=e,-1!==n)if(null!=n){var r,i=-1;if("number"==typeof n)i=n;else{if("string"==typeof n)r=n;else{if("object"!=typeof n||!n.type)return void e.boxes.push(t);r=n.type}for(var a=0;a>3,t},a.prototype._readUint=function(e){var t,n,r=null,i=this._cursor.offset-this._raw.byteOffset;switch(e){case 8:r=this._raw.getUint8(i);break;case 16:r=this._raw.getUint16(i);break;case 24:r=((t=this._raw.getUint16(i))<<8)+(n=this._raw.getUint8(i+2));break;case 32:r=this._raw.getUint32(i);break;case 64:t=this._raw.getUint32(i),n=this._raw.getUint32(i+4),r=t*Math.pow(2,32)+n}return this._cursor.offset+=e>>3,r},a.prototype._readString=function(e){for(var t="",n=0;n0?e:this._raw.byteLength-(this._cursor.offset-this._offset);if(t>0){var n=new Uint8Array(this._raw.buffer,this._cursor.offset,t);return this._cursor.offset+=t,n}return null},a.prototype._readUTF8String=function(){var e=this._raw.byteLength-(this._cursor.offset-this._offset),t=null;return e>0&&(t=new DataView(this._raw.buffer,this._cursor.offset,e),this._cursor.offset+=e),t?r.Utils.dataViewToString(t):t},a.prototype._parseBox=function(){if(this._parsing=!0,this._cursor.offset=this._offset,this._offset+8>this._raw.buffer.byteLength)this._root._incomplete=!0;else{switch(this._procField("size","uint",32),this._procField("type","string",4),1===this.size&&this._procField("largesize","uint",64),"uuid"===this.type&&this._procFieldArray("usertype",16,"uint",8),this.size){case 0:this._raw=new DataView(this._raw.buffer,this._offset,this._raw.byteLength-this._cursor.offset+8);break;case 1:this._offset+this.size>this._raw.buffer.byteLength?(this._incomplete=!0,this._root._incomplete=!0):this._raw=new DataView(this._raw.buffer,this._offset,this.largesize);break;default:this._offset+this.size>this._raw.buffer.byteLength?(this._incomplete=!0,this._root._incomplete=!0):this._raw=new DataView(this._raw.buffer,this._offset,this.size)}this._incomplete||(this._boxProcessors[this.type]&&this._boxProcessors[this.type].call(this),-1!==this._boxContainers.indexOf(this.type)?this._parseContainerBox():this._data=this._readData())}},a.prototype._parseFullBox=function(){this.version=this._readUint(8),this.flags=this._readUint(24)},a.prototype._parseContainerBox=function(){for(this.boxes=[];this._cursor.offset-this._raw.byteOffset>3}else this.size+=e>>3},a.prototype._writeUint=function(e,t){if(this._rawo){var n,r,i=this._cursor.offset-this._rawo.byteOffset;switch(e){case 8:this._rawo.setUint8(i,t);break;case 16:this._rawo.setUint16(i,t);break;case 24:n=(16776960&t)>>8,r=255&t,this._rawo.setUint16(i,n),this._rawo.setUint8(i+2,r);break;case 32:this._rawo.setUint32(i,t);break;case 64:r=t-(n=Math.floor(t/Math.pow(2,32)))*Math.pow(2,32),this._rawo.setUint32(i,n),this._rawo.setUint32(i+4,r)}this._cursor.offset+=e>>3}else this.size+=e>>3},a.prototype._writeString=function(e,t){for(var n=0;n>10&31),96+(this.language>>5&31),96+(31&this.language))),this._procField("pre_defined","uint",16)},a.prototype._boxProcessors.mehd=function(){this._procFullBox(),this._procField("fragment_duration","uint",1==this.version?64:32)},a.prototype._boxProcessors.mfhd=function(){this._procFullBox(),this._procField("sequence_number","uint",32)},a.prototype._boxProcessors.mfro=function(){this._procFullBox(),this._procField("mfra_size","uint",32)},a.prototype._boxProcessors.mp4a=a.prototype._boxProcessors.enca=function(){this._procFieldArray("reserved1",6,"uint",8),this._procField("data_reference_index","uint",16),this._procFieldArray("reserved2",2,"uint",32),this._procField("channelcount","uint",16),this._procField("samplesize","uint",16),this._procField("pre_defined","uint",16),this._procField("reserved3","uint",16),this._procField("samplerate","template",32),this._procField("esds","data",-1)},a.prototype._boxProcessors.mvhd=function(){this._procFullBox(),this._procField("creation_time","uint",1==this.version?64:32),this._procField("modification_time","uint",1==this.version?64:32),this._procField("timescale","uint",32),this._procField("duration","uint",1==this.version?64:32),this._procField("rate","template",32),this._procField("volume","template",16),this._procField("reserved1","uint",16),this._procFieldArray("reserved2",2,"uint",32),this._procFieldArray("matrix",9,"template",32),this._procFieldArray("pre_defined",6,"uint",32),this._procField("next_track_ID","uint",32)},a.prototype._boxProcessors.payl=function(){this._procField("cue_text","utf8")},a.prototype._boxProcessors.pssh=function(){this._procFullBox(),this._procFieldArray("SystemID",16,"uint",8),this._procField("DataSize","uint",32),this._procFieldArray("Data",this.DataSize,"uint",8)},a.prototype._boxProcessors.schm=function(){this._procFullBox(),this._procField("scheme_type","uint",32),this._procField("scheme_version","uint",32),1&this.flags&&this._procField("scheme_uri","string",-1)},a.prototype._boxProcessors.sdtp=function(){this._procFullBox();var e=-1;this._parsing&&(e=this._raw.byteLength-(this._cursor.offset-this._raw.byteOffset)),this._procFieldArray("sample_dependency_table",e,"uint",8)},a.prototype._boxProcessors.sidx=function(){this._procFullBox(),this._procField("reference_ID","uint",32),this._procField("timescale","uint",32),this._procField("earliest_presentation_time","uint",1==this.version?64:32),this._procField("first_offset","uint",1==this.version?64:32),this._procField("reserved","uint",16),this._procField("reference_count","uint",16),this._procEntries("references",this.reference_count,(function(e){this._parsing||(e.reference=(1&e.reference_type)<<31,e.reference|=2147483647&e.referenced_size,e.sap=(1&e.starts_with_SAP)<<31,e.sap|=(3&e.SAP_type)<<28,e.sap|=268435455&e.SAP_delta_time),this._procEntryField(e,"reference","uint",32),this._procEntryField(e,"subsegment_duration","uint",32),this._procEntryField(e,"sap","uint",32),this._parsing&&(e.reference_type=e.reference>>31&1,e.referenced_size=2147483647&e.reference,e.starts_with_SAP=e.sap>>31&1,e.SAP_type=e.sap>>28&7,e.SAP_delta_time=268435455&e.sap)}))},a.prototype._boxProcessors.smhd=function(){this._procFullBox(),this._procField("balance","uint",16),this._procField("reserved","uint",16)},a.prototype._boxProcessors.ssix=function(){this._procFullBox(),this._procField("subsegment_count","uint",32),this._procEntries("subsegments",this.subsegment_count,(function(e){this._procEntryField(e,"ranges_count","uint",32),this._procSubEntries(e,"ranges",e.ranges_count,(function(e){this._procEntryField(e,"level","uint",8),this._procEntryField(e,"range_size","uint",24)}))}))},a.prototype._boxProcessors.stsd=function(){this._procFullBox(),this._procField("entry_count","uint",32),this._procSubBoxes("entries",this.entry_count)},a.prototype._boxProcessors.subs=function(){this._procFullBox(),this._procField("entry_count","uint",32),this._procEntries("entries",this.entry_count,(function(e){this._procEntryField(e,"sample_delta","uint",32),this._procEntryField(e,"subsample_count","uint",16),this._procSubEntries(e,"subsamples",e.subsample_count,(function(e){this._procEntryField(e,"subsample_size","uint",1===this.version?32:16),this._procEntryField(e,"subsample_priority","uint",8),this._procEntryField(e,"discardable","uint",8),this._procEntryField(e,"codec_specific_parameters","uint",32)}))}))},a.prototype._boxProcessors.tenc=function(){this._procFullBox(),this._procField("default_IsEncrypted","uint",24),this._procField("default_IV_size","uint",8),this._procFieldArray("default_KID",16,"uint",8)},a.prototype._boxProcessors.tfdt=function(){this._procFullBox(),this._procField("baseMediaDecodeTime","uint",1==this.version?64:32)},a.prototype._boxProcessors.tfhd=function(){this._procFullBox(),this._procField("track_ID","uint",32),1&this.flags&&this._procField("base_data_offset","uint",64),2&this.flags&&this._procField("sample_description_offset","uint",32),8&this.flags&&this._procField("default_sample_duration","uint",32),16&this.flags&&this._procField("default_sample_size","uint",32),32&this.flags&&this._procField("default_sample_flags","uint",32)},a.prototype._boxProcessors.tfra=function(){this._procFullBox(),this._procField("track_ID","uint",32),this._parsing||(this.reserved=0,this.reserved|=(48&this.length_size_of_traf_num)<<4,this.reserved|=(12&this.length_size_of_trun_num)<<2,this.reserved|=3&this.length_size_of_sample_num),this._procField("reserved","uint",32),this._parsing&&(this.length_size_of_traf_num=(48&this.reserved)>>4,this.length_size_of_trun_num=(12&this.reserved)>>2,this.length_size_of_sample_num=3&this.reserved),this._procField("number_of_entry","uint",32),this._procEntries("entries",this.number_of_entry,(function(e){this._procEntryField(e,"time","uint",1===this.version?64:32),this._procEntryField(e,"moof_offset","uint",1===this.version?64:32),this._procEntryField(e,"traf_number","uint",8*(this.length_size_of_traf_num+1)),this._procEntryField(e,"trun_number","uint",8*(this.length_size_of_trun_num+1)),this._procEntryField(e,"sample_number","uint",8*(this.length_size_of_sample_num+1))}))},a.prototype._boxProcessors.tkhd=function(){this._procFullBox(),this._procField("creation_time","uint",1==this.version?64:32),this._procField("modification_time","uint",1==this.version?64:32),this._procField("track_ID","uint",32),this._procField("reserved1","uint",32),this._procField("duration","uint",1==this.version?64:32),this._procFieldArray("reserved2",2,"uint",32),this._procField("layer","uint",16),this._procField("alternate_group","uint",16),this._procField("volume","template",16),this._procField("reserved3","uint",16),this._procFieldArray("matrix",9,"template",32),this._procField("width","template",32),this._procField("height","template",32)},a.prototype._boxProcessors.trex=function(){this._procFullBox(),this._procField("track_ID","uint",32),this._procField("default_sample_description_index","uint",32),this._procField("default_sample_duration","uint",32),this._procField("default_sample_size","uint",32),this._procField("default_sample_flags","uint",32)},a.prototype._boxProcessors.trun=function(){this._procFullBox(),this._procField("sample_count","uint",32),1&this.flags&&this._procField("data_offset","int",32),4&this.flags&&this._procField("first_sample_flags","uint",32),this._procEntries("samples",this.sample_count,(function(e){256&this.flags&&this._procEntryField(e,"sample_duration","uint",32),512&this.flags&&this._procEntryField(e,"sample_size","uint",32),1024&this.flags&&this._procEntryField(e,"sample_flags","uint",32),2048&this.flags&&this._procEntryField(e,"sample_composition_time_offset",1===this.version?"int":"uint",32)}))},a.prototype._boxProcessors["url "]=a.prototype._boxProcessors["urn "]=function(){this._procFullBox(),"urn "===this.type&&this._procField("name","string",-1),this._procField("location","string",-1)},a.prototype._boxProcessors.vlab=function(){this._procField("source_label","utf8")},a.prototype._boxProcessors.vmhd=function(){this._procFullBox(),this._procField("graphicsmode","uint",16),this._procFieldArray("opcolor",3,"uint",16)},a.prototype._boxProcessors.vttC=function(){this._procField("config","utf8")},a.prototype._boxProcessors.vtte=function(){}},function(e,t,n){"use strict";var r=n(3);function i(){return{modifyRequestURL:function(e){return e},modifyRequestHeader:function(e){return e}}}i.__dashjs_factory_name="RequestModifier",t.a=r.a.getSingletonFactory(i)},function(e,t,n){"use strict";function r(e,t){for(var n=0;n1)for(var n=1;n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw a}}}}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&T.a.indexOf(n[0].schemeIdUri)>=0)return t===r.a.IMAGE}if(e.ContentComponent_asArray&&e.ContentComponent_asArray.length>0){if(e.ContentComponent_asArray.length>1)return t===r.a.MUXED;if(e.ContentComponent_asArray[0].contentType===t)return!0}var a=t===r.a.TEXT?new RegExp("(ttml|vtt|wvtt|stpp)"):new RegExp(t);if(e.Representation_asArray&&e.Representation_asArray.length){var o=e.Representation_asArray[0].codecs;if(a.test(o))return!0}if(e.hasOwnProperty(i.a.MIME_TYPE))return a.test(e.mimeType);if(e.Representation_asArray)for(var s,u=0;u0){var t=e.Representation_asArray[0];if(t.hasOwnProperty(i.a.SEGMENT_TEMPLATE)||t.hasOwnProperty(i.a.SEGMENT_TIMELINE)||t.hasOwnProperty(i.a.SEGMENT_LIST)||t.hasOwnProperty(i.a.SEGMENT_BASE))return!0}return!1}function R(e){return b(e,r.a.AUDIO)}function N(e){return b(e,r.a.VIDEO)}function w(e){return b(e,r.a.TEXT)}function C(e){return b(e,r.a.IMAGE)}function D(){return function(e,t){return e.bandwidth-t.bandwidth}}function O(e){return e&&Array.isArray(e.Representation_asArray)&&e.Representation_asArray.sort((function(e,t){return e.bandwidth-t.bandwidth})),e}function M(e,t){return e&&e.Period_asArray&&A(t)&&e.Period_asArray[t]?e.Period_asArray[t].AdaptationSet_asArray:[]}function P(e){return e&&e.Period_asArray?e.Period_asArray:[]}function L(e){var t=!1;return e&&e.hasOwnProperty("type")&&(t=e.type===i.a.DYNAMIC),t}function F(e){return e&&e.EssentialProperty_asArray&&e.EssentialProperty_asArray.length?e.EssentialProperty_asArray.map((function(e){return{schemeIdUri:e.schemeIdUri,value:e.value}})):null}function x(e){if(!e||!e.S_asArray)return NaN;var t=e.S_asArray[0],n=e.S_asArray[1];return t.hasOwnProperty("d")?t.d:n.t-t.t}function U(e,t){if(!e)throw new Error("Period cannot be null or undefined");var n=l.DEFAULT_ID+"_"+t;return e.hasOwnProperty(i.a.ID)&&e.id.length>0&&"__proto__"!==e.id&&(n=e.id),n}function B(e,t){var n,a=[];if(!e)return a;for(n=0;n0&&A(e)?r[e]:null},getIndexForAdaptation:function(e,t,n){if(!e)return-1;for(var r=M(t,n),i=0;i0&&A(e)?n[e]:null},getCodec:function(e,t,n){var r=null;if(e&&e.Representation_asArray&&e.Representation_asArray.length>0){var i=A(t)&&t>=0&&t0?e.Representation_asArray[0].mimeType:null},getKID:function(e){return e&&e.hasOwnProperty(i.a.CENC_DEFAULT_KID)?e[i.a.CENC_DEFAULT_KID]:null},getLabelsForAdaptation:function(e){if(!e||!Array.isArray(e.Label_asArray))return[];for(var t=[],n=0;n0&&(n=-1!==e.profiles.indexOf(t)),n},getDuration:function(e){return e&&e.hasOwnProperty(i.a.MEDIA_PRESENTATION_DURATION)?e.mediaPresentationDuration:e&&"dynamic"==e.type?Number.POSITIVE_INFINITY:Number.MAX_SAFE_INTEGER||Number.MAX_VALUE},getBandwidth:function(e){return e&&e.bandwidth?e.bandwidth:NaN},getManifestUpdatePeriod:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=NaN;return e&&e.hasOwnProperty(i.a.MINIMUM_UPDATE_PERIOD)&&(n=e.minimumUpdatePeriod),isNaN(n)?n:Math.max(n-t,1)},getPublishTime:function(e){return e&&e.hasOwnProperty(i.a.PUBLISH_TIME)?new Date(e[i.a.PUBLISH_TIME]):null},getRepresentationCount:function(e){return e&&Array.isArray(e.Representation_asArray)?e.Representation_asArray.length:0},getBitrateListForAdaptation:function(e){var t=O(e);return(t&&Array.isArray(t.Representation_asArray)?t.Representation_asArray:[]).map((function(e){return{bandwidth:e.bandwidth,width:e.width||0,height:e.height||0,scanType:e.scanType||null,id:e.id||null}}))},getRepresentationFor:function(e,t){return t&&t.Representation_asArray&&t.Representation_asArray.length>0&&A(e)?t.Representation_asArray[e]:null},getRepresentationsForAdaptation:function(e){var t,n,r,a,s=[],u=function(e){if(e&&e.period&&A(e.period.index)){var t=e.period.mpd.manifest.Period_asArray[e.period.index];if(t&&t.AdaptationSet_asArray&&A(e.index))return O(t.AdaptationSet_asArray[e.index])}}(e);if(u&&u.Representation_asArray){if(e&&e.period&&A(e.period.index)){var l=k(e.period.mpd.manifest);l&&(n=l[0])}for(var c=0,f=u.Representation_asArray.length;c=0&&e.value){var t=e.value.split("x");2!==t.length||isNaN(t[0])||isNaN(t[1])||(r.tilesHor=parseInt(t[0],10),r.tilesVert=parseInt(t[1],10))}})),t?m.updateSegmentData(e).then((function(t){!function(e,t,n){var r=[],i=function(e,t){var n,r,i,a,o=[],s=0;for(n=0,r=e.segments.length;ne)return i=t.url,!0})),i?n(i):t.segments.some((function(i){if(i.mediaStartTime<=e&&i.mediaStartTime+i.duration>e){var a=T.resolve(t.path);return y.load({method:"get",url:a.url,request:{range:i.mediaRange,responseType:"arraybuffer"},onload:function(e){var t=E.getSamplesInfo(e.target.response),a=new Blob([e.target.response.slice(t.sampleList[0].offset,t.sampleList[0].offset+t.sampleList[0].size)],{type:"image/jpeg"}),o=window.URL.createObjectURL(a);r.push({start:i.mediaStartTime,end:i.mediaStartTime+i.duration,url:o}),n&&n(o)}}),!0}}))}}(r,e,t)})):(r.startNumber=e.startNumber,r.segmentDuration=e.segmentDuration,r.timescale=e.timescale,r.templateUrl=function(e){var t=w.isRelative(e.media)?w.resolve(e.media,T.resolve(e.path).url):e.media;if(!t)return"";return Object(u.c)(t,e.id)}(e)),r.tilesHor>0&&r.tilesVert>0&&(r.widthPerTile=r.width/r.tilesHor,r.heightPerTile=r.height/r.tilesVert,n.push(r))}function D(){n=[],p=-1,g=null}return t={getTracks:function(){return n},addTracks:function(){if(S&&v&&(g=v.getMediaInfoForType(S,r.a.IMAGE))){var e=v.getVoRepresentations(g);e&&e.length>0&&e.forEach((function(e){(e.segmentInfoType===i.a.SEGMENT_TEMPLATE&&e.segmentDuration>0&&e.media||e.segmentInfoType===i.a.SEGMENT_TIMELINE)&&C(e),e.segmentInfoType===i.a.SEGMENT_BASE&&C(e,!0)})),n.length>0&&n.sort((function(e,t){return e.bitrate-t.bitrate}))}},reset:D,setTrackByIndex:function(e){n&&0!==n.length&&(e>=n.length&&(e=n.length-1),p=e)},getCurrentTrack:function(){return p<0?null:n[p]},getCurrentTrackIndex:function(){return p},getThumbnailRequestForTime:function(e){for(var t,r=v.getVoRepresentations(g),i=0;it)return!1;if(e.mediaFinishedInformation&&!isNaN(e.mediaFinishedInformation.numberOfSegments)&&!isNaN(a.index)&&a.index>=e.mediaFinishedInformation.numberOfSegments-1){if(!l||e.segmentInfoType===u.a.SEGMENT_TEMPLATE)return!0;if(l&&e.segmentInfoType===u.a.SEGMENT_LIST&&e.adaptation.period.nextPeriodId)return!0}return!!(l&&e.adaptation.period.nextPeriodId&&e.segmentInfoType===u.a.SEGMENT_TIMELINE&&e.mediaFinishedInformation&&!isNaN(e.mediaFinishedInformation.mediaTimeOfLastSignaledSegment)&&a&&!isNaN(a.mediaStartTime)&&!isNaN(a.duration)&&a.mediaStartTime+a.duration>=e.mediaFinishedInformation.mediaTimeOfLastSignaledSegment-.05)},reset:function(){v(),f.off(o.a.DYNAMIC_TO_STATIC,b,t)},getNextSegmentRequestIdempotent:function(e,t){var n=a?a.index+1:0,r=m.getSegmentByIndex(t,n,a?a.mediaStartTime:-1);return r?S(e,r):null},getValidSeekTimeCloseToTargetTime:function(e,t,n,r){try{if(isNaN(e)||!t||!n)return NaN;if(e<0&&(e=0),isNaN(r)&&(r=.5),A(t,n,e))return e;for(var i=n.adaptation.period.start,a=n.adaptation.period.start+n.adaptation.period.duration,o=Math.min(e+r,a),s=Math.max(e-r,i),u=NaN,l=null;o<=a||s>=i;){var c=null,f=null;if(o<=a&&(c=A(t,n,o)),s>=i&&(f=A(t,n,s)),f){u=s,l=f;break}if(c){u=o,l=c;break}o+=r,s-=r}if(l){var d=l.startTime+l.duration;return e>=l.startTime&&d-e>r?e:e=i-.5*f.d/d&&(l=!0),!1})),u},getSegmentByTime:function(e,r){if(o(),!e)return null;void 0===r&&(r=null);var i=null,u=n.calcMediaTimeFromPresentationTime(r,e);return s(e,(function(r,o,s,l,c,f,d,h){if(u0)for(o=0;o=i&&t-n=n&&console.log(this.time+" ["+e+"] "+t)}},l=function(e){for(var t=[],n=0;n32&&(u.log("ERROR","Too large cursor position "+this.pos),this.pos=32)},moveCursor:function(e){var t=this.pos+e;if(e>1)for(var n=this.pos+1;n=144&&this.backSpace();var t=n(e);this.pos>=32?u.log("ERROR","Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!"):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))},clearFromPos:function(e){var t;for(t=e;t<32;t++)this.chars[t].reset()},clear:function(){this.clearFromPos(0),this.pos=0,this.currPenState.reset()},clearToEndOfRow:function(){this.clearFromPos(this.pos)},getTextString:function(){for(var e=[],t=!0,n=0;n<32;n++){var r=this.chars[n].uchar;" "!==r&&(t=!1),e.push(r)}return t?"":e.join("")},setPenStyles:function(e){this.currPenState.setStyles(e),this.chars[this.pos].setPenState(this.currPenState)}};var h=function(){this.rows=[];for(var e=0;e<15;e++)this.rows.push(new d);this.currRow=14,this.nrRollUpRows=null,this.reset()};h.prototype={reset:function(){for(var e=0;e<15;e++)this.rows[e].clear();this.currRow=14},equals:function(e){for(var t=!0,n=0;n<15;n++)if(!this.rows[n].equals(e.rows[n])){t=!1;break}return t},copy:function(e){for(var t=0;t<15;t++)this.rows[t].copy(e.rows[t])},isEmpty:function(){for(var e=!0,t=0;t<15;t++)if(!this.rows[t].isEmpty()){e=!1;break}return e},backSpace:function(){this.rows[this.currRow].backSpace()},clearToEndOfRow:function(){this.rows[this.currRow].clearToEndOfRow()},insertChar:function(e){this.rows[this.currRow].insertChar(e)},setPen:function(e){this.rows[this.currRow].setPenStyles(e)},moveCursor:function(e){this.rows[this.currRow].moveCursor(e)},setCursor:function(e){u.log("INFO","setCursor: "+e),this.rows[this.currRow].setCursor(e)},setPAC:function(e){u.log("INFO","pacData = "+JSON.stringify(e));var t=e.row-1;this.nrRollUpRows&&t0&&(n=e?"["+t.join(" | ")+"]":t.join("\n")),n},getTextAndFormat:function(){return this.rows}};var p=function(e,t){this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new h,this.nonDisplayedMemory=new h,this.lastOutputScreen=new h,this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null};p.prototype={modes:["MODE_ROLL-UP","MODE_POP-ON","MODE_PAINT-ON","MODE_TEXT"],reset:function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.lastCueEndTime=null},getHandler:function(){return this.outputFilter},setHandler:function(e){this.outputFilter=e},setPAC:function(e){this.writeScreen.setPAC(e)},setBkgData:function(e){this.writeScreen.setBkgData(e)},setMode:function(e){e!==this.mode&&(this.mode=e,u.log("INFO","MODE="+e),"MODE_POP-ON"==this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)},insertChars:function(e){for(var t=0;t=46,t.italics)t.foreground="white";else{var n=Math.floor(e/2)-16;t.foreground=["white","green","blue","cyan","red","yellow","magenta"][n]}u.log("INFO","MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)},outputDataUpdate:function(){var e=u.time;null!==e&&this.outputFilter&&(this.outputFilter.updateData&&this.outputFilter.updateData(e,this.displayedMemory),null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.lastOutputScreen),this.cueStartTime=this.displayedMemory.isEmpty()?null:e):this.cueStartTime=e,this.lastOutputScreen.copy(this.displayedMemory))},cueSplitAtTime:function(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}};var g=function(e,t,n){this.field=e||1,this.outputs=[t,n],this.channels=[new p(1,t),new p(2,n)],this.currChNr=-1,this.lastCmdA=null,this.lastCmdB=null,this.bufferedData=[],this.startTime=null,this.lastTime=null,this.dataCounters={padding:0,char:0,cmd:0,other:0}};g.prototype={getHandler:function(e){return this.channels[e].getHandler()},setHandler:function(e,t){this.channels[e].setHandler(t)},addData:function(e,t){var n,r,i,a=!1;this.lastTime=e,u.setTime(e);for(var o=0;o=16&&r<=31&&r===this.lastCmdA&&i===this.lastCmdB)this.lastCmdA=null,this.lastCmdB=null,u.log("DEBUG","Repeated command ("+l([r,i])+") is dropped");else if(0!==r||0!==i){if(u.log("DATA","["+l([t[o],t[o+1]])+"] -> ("+l([r,i])+")"),(n=this.parseCmd(r,i))||(n=this.parseMidrow(r,i)),n||(n=this.parsePAC(r,i)),n||(n=this.parseBackgroundAttributes(r,i)),!n)if(a=this.parseChars(r,i))if(this.currChNr&&this.currChNr>=0)this.channels[this.currChNr-1].insertChars(a);else u.log("WARNING","No channel found yet. TEXT-MODE?");n?this.dataCounters.cmd+=2:a?this.dataCounters.char+=2:(this.dataCounters.other+=2,u.log("WARNING","Couldn't parse cleaned data "+l([r,i])+" orig: "+l([t[o],t[o+1]])))}else this.dataCounters.padding+=2},parseCmd:function(e,t){var n=null;if(!((20===e||21===e||28===e||29===e)&&32<=t&&t<=47)&&!((23===e||31===e)&&33<=t&&t<=35))return!1;n=20===e||21===e||23===e?1:2;var r=this.channels[n-1];return 20===e||21===e||28===e||29===e?32===t?r.cc_RCL():33===t?r.cc_BS():34===t?r.cc_AOF():35===t?r.cc_AON():36===t?r.cc_DER():37===t?r.cc_RU(2):38===t?r.cc_RU(3):39===t?r.cc_RU(4):40===t?r.cc_FON():41===t?r.cc_RDC():42===t?r.cc_TR():43===t?r.cc_RTD():44===t?r.cc_EDM():45===t?r.cc_CR():46===t?r.cc_ENM():47===t&&r.cc_EOC():r.cc_TO(t-32),this.lastCmdA=e,this.lastCmdB=t,this.currChNr=n,!0},parseMidrow:function(e,t){var n=null;if((17===e||25===e)&&32<=t&&t<=47){if((n=17===e?1:2)!==this.currChNr)return u.log("ERROR","Mismatch channel in midrow parsing"),!1;var r=this.channels[n-1];return r.insertChars([32]),r.cc_MIDROW(t),u.log("DEBUG","MIDROW ("+l([e,t])+")"),this.lastCmdA=e,this.lastCmdB=t,!0}return!1},parsePAC:function(e,t){var n,s=null;if(!((17<=e&&e<=23||25<=e&&e<=31)&&64<=t&&t<=127)&&!((16===e||24===e)&&64<=t&&t<=95))return!1;n=e<=23?1:2,s=64<=t&&t<=95?1===n?r[e]:a[e]:1===n?i[e]:o[e];var u=this.interpretPAC(s,t);return this.channels[n-1].setPAC(u),this.lastCmdA=e,this.lastCmdB=t,this.currChNr=n,!0},interpretPAC:function(e,t){var n=t,r={color:null,italics:!1,indent:null,underline:!1,row:e};return n=t>95?t-96:t-64,r.underline=1==(1&n),n<=13?r.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(n/2)]:n<=15?(r.italics=!0,r.color="white"):r.indent=4*Math.floor((n-16)/2),r},parseChars:function(e,t){var r=null,i=null,a=null;if(e>=25?(r=2,a=e-8):(r=1,a=e),17<=a&&a<=19){var o=t;o=17===a?t+80:18===a?t+112:t+144,u.log("INFO","Special char '"+n(o)+"' in channel "+r),i=[o],this.lastCmdA=e,this.lastCmdB=t}else 32<=e&&e<=127&&(i=0===t?[e]:[e,t],this.lastCmdA=null,this.lastCmdB=null);if(i){var s=l(i);u.log("DEBUG","Char codes = "+s.join(","))}return i},parseBackgroundAttributes:function(e,t){var n,r,i;return((16===e||24===e)&&32<=t&&t<=47||(23===e||31===e)&&45<=t&&t<=47)&&(n={},16===e||24===e?(r=Math.floor((t-32)/2),n.background=s[r],t%2==1&&(n.background=n.background+"_semi")):45===t?n.background="transparent":(n.foreground="black",47===t&&(n.underline=!0)),i=e<24?1:2,this.channels[i-1].setBkgData(n),this.lastCmdA=e,this.lastCmdB=t,!0)},reset:function(){for(var e=0;e=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw a}}}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n/g,">").replace(/"/g,""").replace(/'/g,"'"):e}function u(e,t,n,r){for(var i=0;i0&&u(e.arrayAccessFormPaths,t,n,r)&&(t[n]=[t[n]])}function c(e){var t=e.split(/[-T:+Z]/g),n=new Date(t[0],t[1]-1,t[2]),r=t[5].split(".");if(n.setHours(t[3],t[4],r[0]),r.length>1&&n.setMilliseconds(r[1]),t[6]&&t[7]){var i=60*t[6]+Number(t[7]);i=0+("-"==(/\d\d-\d\d:\d\d$/.test(e)?"-":"+")?-1*i:i),n.setMinutes(n.getMinutes()-i-n.getTimezoneOffset())}else-1!==e.indexOf("Z",e.length-1)&&(n=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),n.getMilliseconds())));return n}function f(n,r,i,a){return!(r==t&&e.xmlElementsFilter.length>0)||u(e.xmlElementsFilter,n,i,a)}function d(s,h){if(s.nodeType==a){for(var p=new Object,g=s.childNodes,m=0;m0){var i=r.split(".#")[0];return u(e.datetimeAccessFormPaths,t,n,i)?c(t):t}return t}(p.__text,_,h+"."+_)),null!=p["#cdata-section"]&&(p.__cdata=p["#cdata-section"],delete p["#cdata-section"],"property"==e.arrayAccessForm&&delete p["#cdata-section_asArray"]),0==p.__cnt&&"text"==e.emptyNodeForm?p="":1==p.__cnt&&null!=p.__text?p=p.__text:1!=p.__cnt||null==p.__cdata||e.keepCData?p.__cnt>1&&null!=p.__text&&e.skipEmptyTextNodesForObj&&(e.stripWhitespaces&&""==p.__text||""==p.__text.trim())&&delete p.__text:p=p.__cdata,delete p.__cnt,!e.enableToStringFunc||null==p.__text&&null==p.__cdata||(p.toString=function(){return(null!=this.__text?this.__text:"")+(null!=this.__cdata?this.__cdata:"")}),p}if(s.nodeType==n||s.nodeType==r)return s.nodeValue}function h(t,n,r,i){var a="<"+(null!=t&&null!=t.__prefix?t.__prefix+":":"")+n;if(null!=r)for(var o=0;o":">"}function p(e,t){return""}function g(t,n){return"property"==e.arrayAccessForm&&(r=n.toString(),i="_asArray",-1!==r.indexOf(i,r.length-i.length))||0==n.toString().indexOf(e.attributePrefix)||0==n.toString().indexOf("__")||t[n]instanceof Function;var r,i}function m(e){var t=0;if(e instanceof Object)for(var n in e)g(e,n)||t++;return t}function y(t,n,r){return 0==e.jsonPropertiesFilter.length||""==r||u(e.jsonPropertiesFilter,t,n,r)}function E(t){var n=[];if(t instanceof Object)for(var r in t)-1==r.toString().indexOf("__")&&0==r.toString().indexOf(e.attributePrefix)&&n.push(r);return n}function _(t){var n="";return t instanceof Object?n+=function(t){var n="";return null!=t.__cdata&&(n+=""),null!=t.__text&&(e.escapeMode?n+=s(t.__text):n+=t.__text),n}(t):null!=t&&(e.escapeMode?n+=s(t):n+=t),n}function v(e,t){return""===e?t:e+"."+t}function T(e,t,n,r){var i="";if(0==e.length)i+=h(e,t,n,!0);else for(var a=0;a0)for(var r in e)if(!g(e,r)&&(""==t||y(e,r,v(t,r)))){var i=e[r],a=E(i);if(null==i||null==i)n+=h(i,r,a,!0);else if(i instanceof Object)if(i instanceof Array)n+=T(i,r,a,t);else if(i instanceof Date)n+=h(i,r,a,!1),n+=i.toISOString(),n+=p(i,r);else{m(i)>0||null!=i.__text||null!=i.__cdata?(n+=h(i,r,a,!1),n+=S(i,v(t,r)),n+=p(i,r)):n+=h(i,r,a,!0)}else n+=h(i,r,a,!1),n+=_(i),n+=p(i,r)}return n+=_(e)}this.parseXmlString=function(e){var t;window.ActiveXObject||window;if(void 0===e)return null;if(window.DOMParser){var n=new window.DOMParser;try{(t=n.parseFromString(e,"text/xml")).getElementsByTagNameNS("*","parsererror").length>0&&(t=null)}catch(e){t=null}}else 0==e.indexOf("")+2)),(t=new ActiveXObject("Microsoft.XMLDOM")).async="false",t.loadXML(e);return t},this.asArray=function(e){return void 0===e||null==e?[]:e instanceof Array?e:[e]},this.toXmlDateTime=function(e){return e instanceof Date?e.toISOString():"number"==typeof e?new Date(e).toISOString():null},this.asDateTime=function(e){return"string"==typeof e?c(e):e},this.xml2json=function(e){return d(e)},this.xml_str2json=function(e){var t=this.parseXmlString(e);return null!=t?this.xml2json(t):null},this.json2xml_str=function(e){return S(e,"")},this.json2xml=function(e){var t=this.json2xml_str(e);return this.parseXmlString(t)},this.getVersion=function(){return"1.2.0"}}},function(e,t,n){"use strict";var r=n(3),i=n(25),a=n(15),o=n(1);function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,i=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(e){i=!0,a=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw a}}return n}(e,t)||u(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){if(e){if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nt/4/e.length}))).length>1){var n=0,r=(e[e.length-1].ts-e[0].ts)/e.length;return e.forEach((function(t,i){var a=e[i+1];if(a){var o=a.ts-t.ts;n+=o=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw a}}}}(r.headers.keys());try{for(p.s();!(a=p.n()).done;){var g=a.value;c+=g+": "+r.headers.get(g)+"\r\n"}}catch(e){p.e(e)}finally{p.f()}if(e.response.responseHeaders=c,!r.body)return r.arrayBuffer().then((function(t){e.response.response=t;var n={loaded:t.byteLength,total:t.byteLength,stream:!1};e.progress(n),e.onload(),e.onend()}));var m,y,T=parseInt(r.headers.get("Content-Length"),10),S=0,A=!1,b=new Uint8Array,I=0;if(E===o.a.ABR_FETCH_THROUGHPUT_CALCULATION_AAST&&i){var R=n,N=0,w=s(r.body.tee(),2),C=w[0],D=w[1];m=C.getReader(),y=[],m.read().then((function r(a){var o=a.value,s=a.done;if(N=Date.now(),o&&o.length){var u=N-R,l=o.length;y.push({chunkDownloadTimeRelativeMS:N-n,chunkDownloadDurationMS:u,chunkBytes:l,kbps:Math.round(8*l/(u/1e3)),bufferLevel:t.getCurrentBufferLevel(h.mediaType)})}if(s){var f=N-n,d=y.reduce((function(e,t){return e+t.chunkBytes}),0);return i.addMeasurement(h,f,y,_,v,c),void e.progress({loaded:d,total:d,lengthComputable:!0,time:i.getEstimatedDownloadDurationMS(h),stream:!0})}return R=Date.now(),m.read().then(r)})),e.reader=D.getReader()}else e.reader=r.body.getReader();var O=[],M=[],P=[],L=!0;f(e,(function t(n){var r=n.value;if(n.done){if(b){if(E!==o.a.ABR_FETCH_THROUGHPUT_CALCULATION_AAST){var i=null;E===o.a.ABR_FETCH_THROUGHPUT_CALCULATION_MOOF_PARSING&&(i=function(e,t){try{var n,r;n=e.filter((function(t,n){return n1){for(var a=0,o=0,s=0;s1)i.push(8*r[s].bytes/u);else{0===o&&(o=n[s].ts);var l=r[s].ts-o;l>1?(i.push(8*a/l),a=0,o=0):a+=r[s].bytes}}if(i.length>0)return i.reduce((function(e,t){return e+t}),0)/i.length}return null}catch(e){return null}}(M,P)),e.progress({loaded:S,total:isNaN(T)?S:T,lengthComputable:!0,time:d(O,S),throughput:i,stream:!0})}e.response.response=b.buffer}return e.onload(),void e.onend()}if(r&&r.length>0){if(b=function(e,t){if(0===e.length)return t;var n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}(b,r),S+=r.length,O.push({ts:Date.now(),bytes:r.length}),E===o.a.ABR_FETCH_THROUGHPUT_CALCULATION_MOOF_PARSING&&L)l.findLastTopIsoBoxCompleted(["moof"],b,I).found&&(L=!1,M.push({ts:performance.now(),bytes:r.length}));var a=l.findLastTopIsoBoxCompleted(["moov","mdat"],b,I);if(a.found){var s,u=a.lastCompletedOffset+a.size;E!==o.a.ABR_FETCH_THROUGHPUT_CALCULATION_MOOF_PARSING||L||(L=!0,P.push({ts:performance.now(),bytes:b.length})),u===b.length?(s=b,b=new Uint8Array):(s=new Uint8Array(b.subarray(0,u)),b=b.subarray(u)),e.progress({data:s.buffer,lengthComputable:!1,noTrace:!0}),I=0}else I=a.lastCompletedOffset,A||(e.progress({lengthComputable:!1,noTrace:!0}),A=!0)}f(e,t)}))})).catch((function(t){e.onerror&&e.onerror(t)}))}))},abort:function(e){if(e.abortController)e.abortController.abort();else if(e.reader)try{e.reader.cancel(),e.onabort()}catch(e){}},calculateDownloadedTime:d,setup:function(e){t=e.dashMetrics}}}c.__dashjs_factory_name="FetchLoader";var f=r.a.getClassFactory(c),d=n(5),h=n(8),p=n(36),g=n(14),m=n(6),y=n(7),E=n(2);function _(){var e,t,n=this.context,r={};function i(){t=Object(m.a)(n).getInstance().getLogger(e)}function a(e){for(var t={},n=0,r=0,i=0,a=0,o=e.length,s=0;se.bitrate&&(n=!1):t=e.bitrate})),n}return e={setup:i,addMeasurement:function(e,t,n,i,o){e&&e.mediaType&&!r[e.mediaType]&&(r[e.mediaType]=[]);var s=e.mediaInfo.bitrateList.find((function(t){return t.id===e.representationId}));r[e.mediaType].push({index:e.index,repId:e.representationId,mediaType:e.mediaType,requestTimeMS:i,adjustedAvailabilityStartTimeMS:e.availabilityStartTime.getTime(),segDurationMS:1e3*e.duration,chunksDurationMS:n.reduce((function(e,t){return e+t.chunkDownloadDurationMS}),0),segmentBytes:n.reduce((function(e,t){return e+t.chunkBytes}),0),bitrate:s&&s.bandwidth,bitrateList:e.mediaInfo.bitrateList,chunkMeasurements:n,fetchDownloadDurationMS:t,throughputCapacityDelayMS:o,getEstimatedBufferLevel:a(n.slice(1))}),r[e.mediaType].length>10&&r[e.mediaType].shift()},getThroughputCapacityDelayMS:function(e,t){var n=r[e.mediaType]&&r[e.mediaType].slice(-3);return!n||n.length<3?0:o(n)?t/4>250?250:t/4:0},getEstimatedDownloadDurationMS:function(e){var n=r[e.mediaType].slice(-1).pop(),i=r[e.mediaType].slice(-3),a=n.chunkMeasurements.slice(-1).pop().chunkDownloadTimeRelativeMS;n.bufferLevelAtSegmentStart=n.getEstimatedBufferLevel(a/2),n.bufferLevelAtSegmentEnd=n.getEstimatedBufferLevel(a);var s=o(i),u=s?.6:.8;if(n.isBufferStable&&1.05*n.segDurationMS.2*n.chunkMeasurements.length){var g=c/f,m=n.segmentBytes/g;return n.fetchDownloadDurationMSn.bitrate)return y=e.bandwidth,!0})),y===n.bitrate?n.fetchDownloadDurationMS*u:u*n.segmentBytes*8*1e3/y}},i(),e}_.__dashjs_factory_name="LowLatencyThroughputModel";var v=r.a.getSingletonFactory(_);function T(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function S(e){e=e||{};var t,n,r,s,u,l,c,_,S,A=this.context,b=e.errHandler,I=e.dashMetrics,R=e.mediaPlayerModel,N=e.requestModifier,w=e.boxParser,C=e.errors,D=e.requestTimeout||0,O=Object(y.a)(A).getInstance(),M=Object(a.a)(A).getInstance();function P(e,t){var a,p=e.request,m=[],y=!0,v=!0,T=new Date,S=T,C=0;if(!N||!I||!b)throw new Error("config object is not correct or missing");var L,F=function(e){if(v=!1,p.requestStartDate=T,p.requestEndDate=new Date,p.firstByteDate=p.firstByteDate||T,!p.checkExistenceOnly){var t=a.response?a.response.responseURL:null,n=a.response?a.response.status:null,r=a.response&&a.response.getAllResponseHeaders?a.response.getAllResponseHeaders():a.response?a.response.responseHeaders:[];I.addHttpRequest(p,t,n,r,e?m:null),p.type===d.a.MPD_TYPE&&I.addManifestUpdate(p)}},x=function(){if(-1!==n.indexOf(a)&&(n.splice(n.indexOf(a),1),v))if(F(!1),t>0){try{if(M.get().streaming.utcSynchronization.enableBackgroundSyncAfterSegmentDownloadError&&p.type===d.a.MEDIA_SEGMENT_TYPE)R.getRetryAttemptsForType(d.a.MEDIA_SEGMENT_TYPE)===t&&O.trigger(E.a.ATTEMPT_BACKGROUND_SYNC)}catch(e){}t--;var r={config:e};s.push(r),r.timeout=setTimeout((function(){-1!==s.indexOf(r)&&(s.splice(s.indexOf(r),1),P(e,t))}),R.getRetryIntervalsForType(p.type))}else{if(p.type===d.a.MSS_FRAGMENT_INFO_SEGMENT_TYPE)return;b.error(new h.a(u[p.type],p.url+" is not available",{request:p,response:a.response})),e.error&&e.error(p,"error",a.response.statusText),e.complete&&e.complete(p,a.response.statusText)}};M.get().streaming.lowLatencyEnabled&&window.fetch&&"arraybuffer"===p.responseType&&p.type===d.a.MEDIA_SEGMENT_TYPE?(L=f(A).create({requestModifier:N,lowLatencyThroughputModel:c,boxParser:w})).setup({dashMetrics:I}):L=Object(i.a)(A).create({requestModifier:N});var U=null,B=N.modifyRequestURL(p.url);if(M.get().streaming.cmcd&&M.get().streaming.cmcd.enabled){var k=M.get().streaming.cmcd.mode;if(k===o.a.CMCD_MODE_QUERY){var G=function(e){try{var t=[],n=l.getQueryParameter(e);return n&&t.push(n),t}catch(e){return[]}}(p);B=g.a.addAditionalQueryParameterToUrl(B,G)}else k===o.a.CMCD_MODE_HEADER&&(U=l.getHeaderParameters(p))}p.url=B;var j=p.checkExistenceOnly?d.a.HEAD:d.a.GET,Y=R.getXHRWithCredentialsForType(p.type);a={url:B,method:j,withCredentials:Y,request:p,onload:function(){a.response.status>=200&&a.response.status<=299&&(F(!0),e.success&&e.success(a.response.response,a.response.statusText,a.response.responseURL),e.complete&&e.complete(p,a.response.statusText))},onend:x,onerror:x,progress:function(t){var n=new Date;y&&(y=!1,(!t.lengthComputable||t.lengthComputable&&t.total!==t.loaded)&&(p.firstByteDate=n)),t.lengthComputable&&(p.bytesLoaded=t.loaded,p.bytesTotal=t.total),t.noTrace||(m.push({s:S,d:t.time?t.time:n.getTime()-S.getTime(),b:[t.loaded?t.loaded-C:0],t:t.throughput}),S=n,C=t.loaded),e.progress&&t&&e.progress(t)},onabort:function(){e.abort&&e.abort(p)},ontimeout:function(e){var t;if(e.lengthComputable){var n=e.loaded/e.total*100;t="Request timeout: loaded: "+e.loaded+", out of: "+e.total+" : "+n.toFixed(3)+"% Completed"}else t="Request timeout: non-computable download size";_.warn(t)},loader:L,timeout:D,headers:U};var H=(new Date).getTime();if(isNaN(p.delayLoadingTime)||H>=p.delayLoadingTime)n.push(a),L.load(a);else{var K={httpRequest:a};r.push(K),K.delayTimeout=setTimeout((function(){if(-1!==r.indexOf(K)){r.splice(r.indexOf(K),1);try{T=new Date,S=T,n.push(K.httpRequest),L.load(K.httpRequest)}catch(e){K.httpRequest.onerror()}}}),p.delayLoadingTime-H)}}return t={load:function(e){e.request?P(e,R.getRetryAttemptsForType(e.request.type)):e.error&&e.error(e.request,"error")},abort:function(){s.forEach((function(e){clearTimeout(e.timeout),e.config.request&&e.config.abort&&e.config.abort(e.config.request)})),s=[],r.forEach((function(e){return clearTimeout(e.delayTimeout)})),r=[],n.forEach((function(e){e.request.type!==d.a.MSS_FRAGMENT_INFO_SEGMENT_TYPE&&(e.onloadend=e.onerror=e.onprogress=void 0,e.loader.abort(e))})),n=[]}},_=Object(m.a)(A).getInstance().getLogger(t),n=[],r=[],s=[],l=Object(p.a)(A).getInstance(),c=v(A).getInstance(),T(S={},d.a.MPD_TYPE,C.DOWNLOAD_ERROR_ID_MANIFEST_CODE),T(S,d.a.XLINK_EXPANSION_TYPE,C.DOWNLOAD_ERROR_ID_XLINK_CODE),T(S,d.a.INIT_SEGMENT_TYPE,C.DOWNLOAD_ERROR_ID_INITIALIZATION_CODE),T(S,d.a.MEDIA_SEGMENT_TYPE,C.DOWNLOAD_ERROR_ID_CONTENT_CODE),T(S,d.a.INDEX_SEGMENT_TYPE,C.DOWNLOAD_ERROR_ID_CONTENT_CODE),T(S,d.a.BITSTREAM_SWITCHING_SEGMENT_TYPE,C.DOWNLOAD_ERROR_ID_CONTENT_CODE),T(S,d.a.OTHER_TYPE,C.DOWNLOAD_ERROR_ID_CONTENT_CODE),u=S,t}S.__dashjs_factory_name="HTTPLoader";var A=r.a.getClassFactory(S);function b(){var e;function t(){e={}}function n(){t()}return n(),{getLoader:function(t){for(var n in e)if(e.hasOwnProperty(n)&&t.startsWith(n))return e[n];return A},registerLoader:function(t,n){e[t]=n},unregisterLoader:function(t){e[t]&&delete e[t]},unregisterAllLoader:t,reset:n}}b.__dashjs_factory_name="SchemeLoaderFactory";var I=r.a.getSingletonFactory(b);t.a=I},function(e,t,n){(function(e){function n(e){return Object.prototype.toString.call(e)}t.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===n(e)},t.isBoolean=function(e){return"boolean"==typeof e},t.isNull=function(e){return null===e},t.isNullOrUndefined=function(e){return null==e},t.isNumber=function(e){return"number"==typeof e},t.isString=function(e){return"string"==typeof e},t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=function(e){return void 0===e},t.isRegExp=function(e){return"[object RegExp]"===n(e)},t.isObject=function(e){return"object"==typeof e&&null!==e},t.isDate=function(e){return"[object Date]"===n(e)},t.isError=function(e){return"[object Error]"===n(e)||e instanceof Error},t.isFunction=function(e){return"function"==typeof e},t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=e.isBuffer}).call(this,n(60).Buffer)},function(e,t,n){(function(e){function n(e,t){for(var n=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r=-1&&!i;a--){var o=a>=0?arguments[a]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,i="/"===o.charAt(0))}return(i?"/":"")+(t=n(r(t.split("/"),(function(e){return!!e})),!i).join("/"))||"."},t.normalize=function(e){var a=t.isAbsolute(e),o="/"===i(e,-1);return(e=n(r(e.split("/"),(function(e){return!!e})),!a).join("/"))||a||(e="."),e&&o&&(e+="/"),(a?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(r(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,n){function r(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=t.resolve(e).substr(1),n=t.resolve(n).substr(1);for(var i=r(e.split("/")),a=r(n.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u=1;--a)if(47===(t=e.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?n?"/":".":n&&1===r?"/":e.slice(0,r)},t.basename=function(e,t){var n=function(e){"string"!=typeof e&&(e+="");var t,n=0,r=-1,i=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!i){n=t+1;break}}else-1===r&&(i=!1,r=t+1);return-1===r?"":e.slice(n,r)}(e);return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},t.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,n=0,r=-1,i=!0,a=0,o=e.length-1;o>=0;--o){var s=e.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===t?t=o:1!==a&&(a=1):-1!==t&&(a=-1);else if(!i){n=o+1;break}}return-1===t||-1===r||0===a||1===a&&t===r-1&&t===n+1?"":e.slice(t,r)};var i="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)}}).call(this,n(26))},function(e,t,n){t.generateISD=n(74).generateISD,t.fromXML=n(75).fromXML,t.renderHTML=n(91).render},function(e,t,n){"use strict";var r=n(3),i=n(13);function a(){return{customTimeRangeArray:[],length:0,add:function(e,t){var n=0;for(n=0;nthis.customTimeRangeArray[n].start;n++);for(this.customTimeRangeArray.splice(n,0,{start:e,end:t}),n=0;n=this.customTimeRangeArray[n].end)this.customTimeRangeArray.splice(n,1),n--;else{if(e>this.customTimeRangeArray[n].start&&tthis.customTimeRangeArray[n].start&&ethis.customTimeRangeArray[n].start&&t=this.customTimeRangeArray.length||e<0?NaN:this.customTimeRangeArray[e].start},end:function(e){return Object(i.a)(e),e>=this.customTimeRangeArray.length||e<0?NaN:this.customTimeRangeArray[e].end}}}a.__dashjs_factory_name="CustomTimeRanges",t.a=r.a.getClassFactory(a)},function(e,t,n){"use strict";n.d(t,"b",(function(){return s}));var r=n(3),i=n(29),a=n(1),o=[{codec:"avc1",compatibleCodecs:["avc3"]},{codec:"avc3",compatibleCodecs:["avc1"]}];function s(){var e="WebKitMediaSource"in window,t="MediaSource"in window;return e||t}function u(){var e,t,n;return e={setConfig:function(e){e&&e.settings&&(t=e.settings)},supportsMediaSource:s,supportsEncryptedMedia:function(){return n},supportsCodec:function(e,n){return n!==a.a.AUDIO&&n!==a.a.VIDEO?Promise.resolve(!0):function(e,n){return t.get().streaming.capabilities.useMediaCapabilitiesApi&&navigator.mediaCapabilities&&navigator.mediaCapabilities.decodingInfo&&(e.codec&&n===a.a.AUDIO||n===a.a.VIDEO&&e.codec&&e.width&&e.height&&e.bitrate&&e.framerate)}(e,n)?function(e,t){return new Promise((function(n){if(e&&e.codec){var r={type:"media-source"};r[t]={},r[t].contentType=e.codec,r[t].width=e.width,r[t].height=e.height,r[t].bitrate=parseInt(e.bitrate),r[t].framerate=parseFloat(e.framerate),navigator.mediaCapabilities.decodingInfo(r).then((function(e){n(e.supported)})).catch((function(){n(!1)}))}else n(!1)}))}(e,n):function(e){return new Promise((function(t){if(e&&e.codec){var n=e.codec;e.width&&e.height&&(n+=';width="'+e.width+'";height="'+e.height+'"'),"MediaSource"in window&&MediaSource.isTypeSupported(n)||"WebKitMediaSource"in window&&WebKitMediaSource.isTypeSupported(n)?t(!0):t(!1)}else t(!1)}))}(e)},setEncryptedMediaSupported:function(e){n=e},supportsEssentialProperty:function(e){try{return-1!==i.a.indexOf(e.schemeIdUri)}catch(e){return!0}},codecRootCompatibleWithCodec:function(e,t){for(var n,r=e.split(".")[0],i=0===t.indexOf(r),a=0;a0&&void 0!==arguments[0]?arguments[0]:null;return parseFloat((D(e)-U()).toFixed(5))}function D(e){var t=e||g;return t.start+t.duration}function O(){g&&o&&o.getElement()?o.play():E=!0}function M(){return g&&o?o.isPaused():null}function P(){g&&o&&o.pause()}function L(){return g&&o?o.isSeeking():null}function F(){return g&&o?o.isStalled():null}function x(e,n,r){g&&o&&(e!==(isNaN(T)?o.getTime():T)&&((S=!0===r)||(T=e,w.trigger(c.a.PLAYBACK_SEEK_ASKED)),t.info("Requesting seek to time: "+e+(S?" (internal)":"")),o.setCurrentTime(e,n)))}function U(){return g&&o?o.getTime():null}function B(){var e=U();if(m&&!isNaN(v)){var t=v/1e3;e>t&&(e-=t)}return e}function k(){return g&&o?o.getPlaybackRate():null}function G(){return g&&o?o.getEnded():null}function j(){return m}function Y(){if(!m||isNaN(v))return NaN;var e=B();if(isNaN(e)||0===e)return 0;var t=(new Date).getTime()+1e3*s.getClientTimeOffset();return Math.max(((t-v-1e3*e)/1e3).toFixed(3),0)}function H(){P(),E=!1,p=0,v=0,T=NaN,o&&(w.off(c.a.DATA_UPDATE_COMPLETED,z,this),w.off(c.a.LOADING_PROGRESS,me,this),w.off(h.a.BUFFER_LEVEL_STATE_CHANGED,ye,this),w.off(h.a.PLAYBACK_PROGRESS,fe,this),w.off(h.a.PLAYBACK_TIME_UPDATED,fe,this),w.off(h.a.PLAYBACK_ENDED,le,this),w.off(h.a.STREAM_INITIALIZING,_e,this),w.off(h.a.REPRESENTATION_SWITCH,ve,this),o.setPlaybackRate(1,!0),V(),o.removeEventListener("canplay",X),o.removeEventListener("canplaythrough",Q),o.removeEventListener("play",$),o.removeEventListener("waiting",Z),o.removeEventListener("playing",J),o.removeEventListener("pause",ee),o.removeEventListener("error",ce),o.removeEventListener("seeking",te),o.removeEventListener("seeked",ne),o.removeEventListener("timeupdate",re),o.removeEventListener("progress",ie),o.removeEventListener("ratechange",ae),o.removeEventListener("loadedmetadata",oe),o.removeEventListener("loadeddata",se),o.removeEventListener("stalled",Ee),o.removeEventListener("ended",ue)),f=null,o=null,g=null,m=null}function K(e,t){var n=r.getCurrentDVRInfo(t),i=n?n.range:null;return i?e>i.end?Math.max(i.end-p,i.start):e>0&&e+.25_+500)&&(_=e,re())):W())}),R.get().streaming.wallclockTimeUpdateInterval)}}function V(){clearInterval(f),f=null}function W(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!M()&&m&&0!==o.getReadyState()&&!L()){e||(e=n.hasVideoTrack()?a.a.VIDEO:a.a.AUDIO);var r=B(),i=K(r,e),s=!isNaN(i)&&i!==r;s&&!L()&&(F()||b)&&(t.debug("UpdateCurrentTime: Seek to actual time: ".concat(i," from currentTime: ").concat(r)),x(i))}}function z(e){var t=i.convertRepresentationToRepresentationInfo(e.currentRepresentation),n=t?t.mediaInfo.streamInfo:null;null!==n&&g.id===n.id&&(g=n)}function X(){w.trigger(c.a.CAN_PLAY)}function Q(){w.trigger(c.a.CAN_PLAY_THROUGH)}function $(){t.info("Native video element event: play"),W(),q(),w.trigger(c.a.PLAYBACK_STARTED,{startTime:U()})}function Z(){t.info("Native video element event: waiting"),w.trigger(c.a.PLAYBACK_WAITING,{playingTime:U()})}function J(){t.info("Native video element event: playing"),w.trigger(c.a.PLAYBACK_PLAYING,{playingTime:U()})}function ee(){t.info("Native video element event: pause"),w.trigger(c.a.PLAYBACK_PAUSED,{ended:G()})}function te(){if(S)S=!1;else{var e=U();isNaN(T)||T===e||(e=T),T=NaN,t.info("Seeking to: "+e),q(),w.trigger(c.a.PLAYBACK_SEEKING,{seekTime:e,streamId:g.id})}}function ne(){t.info("Native video element event: seeked"),w.trigger(c.a.PLAYBACK_SEEKED)}function re(){g&&w.trigger(c.a.PLAYBACK_TIME_UPDATED,{timeToEnd:C(),time:U(),streamId:g.id})}function ie(){w.trigger(c.a.PLAYBACK_PROGRESS,{streamId:g.id})}function ae(){var e=k();t.info("Native video element event: ratechange: ",e),w.trigger(c.a.PLAYBACK_RATE_CHANGED,{playbackRate:e})}function oe(){t.info("Native video element event: loadedmetadata"),w.trigger(c.a.PLAYBACK_METADATA_LOADED),q()}function se(){t.info("Native video element event: loadeddata"),w.trigger(c.a.PLAYBACK_LOADED_DATA)}function ue(){t.info("Native video element event: ended"),P(),V();var e=n?n.getActiveStreamInfo():null;e&&w.trigger(c.a.PLAYBACK_ENDED,{isLast:e.isLast})}function le(e){if(f&&e.isLast){t.info("onPlaybackEnded -- PLAYBACK_ENDED but native video element didn't fire ended");var n=e.seekTime?e.seekTime:D();o.setCurrentTime(n),P(),V()}}function ce(e){var t=e.target||e.srcElement;w.trigger(c.a.PLAYBACK_ERROR,{error:t.error})}function fe(){m&&de()&&R.get().streaming.liveCatchup.playbackRate>0&&!M()&&!L()&&(function(){try{if(de()&&R.get().streaming.liveCatchup.playbackRate>0&&U()>0){var e=pe(),t=Y(),n=y.getLiveDelay(),r=y.getLiveCatchupLatencyThreshold(),i=R.get().streaming.liveCatchup.minDrift;if(e===a.a.LIVE_CATCHUP_MODE_LOLP){var o=he(),s=R.get().streaming.liveCatchup.playbackBufferMin;return function(e,t,n,r,i,a){try{var o=Math.abs(e-t);return(isNaN(a)||e<=a)&&(o>n||rr&&(isNaN(n)||e<=n)}catch(e){return!1}}(t,n,r,i)}}catch(e){return!1}}()?function(){if(o){var e,i=o.getPlaybackRate(),s=R.get().streaming.liveCatchup.playbackRate,u=Y(),l=y.getLiveDelay(),c=he();if(pe()===a.a.LIVE_CATCHUP_MODE_LOLP){R.get().streaming.liveCatchup.minDrift;var f=R.get().streaming.liveCatchup.playbackBufferMin;e=function(e,n,r,i,a,o,s){var u,l=e;if(or/2&&(b=!1);Math.abs(s-u)<=I&&(u=null);return{newRate:u}}(s,u,l,0,f,c,i)}else e=function(e,t,n,r,i){var a=e,o=t-n,s=5*o,u=2*a/(1+Math.pow(Math.E,-s)),l=1-a+u;b&&(r>n/2?b=!1:o>0&&(l=1));Math.abs(i-l)<=I&&(l=null);return{newRate:l}}(s,u,l,c,i);var d=e.newRate;d&&o.setPlaybackRate(d);var h=u-l;R.get().streaming.liveCatchup.maxDrift>0&&!A&&h>R.get().streaming.liveCatchup.maxDrift?(t.info("Low Latency catchup mechanism. Latency too high, doing a seek to live point"),A=!0,p=n&&n.hasVideoTrack()?a.a.VIDEO:a.a.AUDIO,x(((g=r.getCurrentDVRInfo(p))?g.range:null).end-y.getLiveDelay(),!0,!1)):A=!1}var p,g}():ge())}function de(){return R.get().streaming.liveCatchup.enabled||R.get().streaming.lowLatencyEnabled}function he(){var e=null;return n.getActiveStreamProcessors().forEach((function(t){var n=t.getBufferLevel();e=null===e?n:Math.min(e,n)})),e}function pe(){var e=R.get().streaming.liveCatchup.playbackBufferMin;return R.get().streaming.liveCatchup.mode!==a.a.LIVE_CATCHUP_MODE_LOLP||null===e||isNaN(e)?a.a.LIVE_CATCHUP_MODE_DEFAULT:a.a.LIVE_CATCHUP_MODE_LOLP}function ge(){o&&o.setPlaybackRate(1)}function me(e){if(!1===e.stream&&R.get().streaming.lowLatencyEnabled&&!isNaN(e.request.duration)){var n=1.2*e.request.duration;n>y.getLiveDelay()&&(t.warn("Browser does not support fetch API with StreamReader. Increasing live delay to be 20% higher than segment duration:",n.toFixed(2)),R.update({streaming:{delay:{liveDelay:n}}}))}}function ye(e){e.streamId===g.id&&(de()?e.state!==u.BUFFER_EMPTY||L()||b||(b=!0,ge()):R.get().streaming.buffer.setStallState&&o.setStallState(e.mediaType,e.state===u.BUFFER_EMPTY))}function Ee(e){w.trigger(c.a.PLAYBACK_STALLED,{e:e})}function _e(e){var n;(n=e.mediaInfo)&&n.supplementalProperties&&"true"===n.supplementalProperties[a.a.SUPPLEMENTAL_PROPERTY_LL_SCHEME]&&(t.debug("Low Latency critical SupplementalProperty set: Enabling low Latency"),R.update({streaming:{lowLatencyEnabled:!0}}))}function ve(e){var t=n.getActiveStreamInfo();if(R.get().streaming.lowLatencyEnabledByManifest&&e&&t&&e.currentRepresentation&&e.streamId&&e.streamId===t.id&&e.mediaType&&(e.mediaType===a.a.VIDEO||e.mediaType===a.a.AUDIO)){var r=!e.currentRepresentation.availabilityTimeComplete;r&&R.update({streaming:{lowLatencyEnabled:r}})}}return e={initialize:function(e,t){g=e,!0!==t&&function(){o.addEventListener("canplay",X),o.addEventListener("canplaythrough",Q),o.addEventListener("play",$),o.addEventListener("waiting",Z),o.addEventListener("playing",J),o.addEventListener("pause",ee),o.addEventListener("error",ce),o.addEventListener("seeking",te),o.addEventListener("seeked",ne),o.addEventListener("timeupdate",re),o.addEventListener("progress",ie),o.addEventListener("ratechange",ae),o.addEventListener("loadedmetadata",oe),o.addEventListener("loadeddata",se),o.addEventListener("stalled",Ee),o.addEventListener("ended",ue),m=g.manifestInfo.isDynamic,A=!1,b=!1,S=!1;var e="undefined"!=typeof navigator?navigator.userAgent.toLowerCase():"",t=/safari/.test(e)&&!/chrome/.test(e);I=t?.25:.02,w.on(c.a.DATA_UPDATE_COMPLETED,z,this),w.on(c.a.LOADING_PROGRESS,me,this),w.on(h.a.BUFFER_LEVEL_STATE_CHANGED,ye,this),w.on(h.a.PLAYBACK_PROGRESS,fe,this),w.on(h.a.PLAYBACK_TIME_UPDATED,fe,this),w.on(h.a.PLAYBACK_ENDED,le,this,{priority:l.a.EVENT_PRIORITY_HIGH}),w.on(h.a.STREAM_INITIALIZING,_e,this),w.on(h.a.REPRESENTATION_SWITCH,ve,this),E&&(E=!1,O())}()},setConfig:function(e){e&&(e.streamController&&(n=e.streamController),e.dashMetrics&&(r=e.dashMetrics),e.mediaPlayerModel&&(y=e.mediaPlayerModel),e.adapter&&(i=e.adapter),e.videoModel&&(o=e.videoModel),e.timelineConverter&&(s=e.timelineConverter),e.settings&&(R=e.settings))},getTimeToStreamEnd:C,getBufferLevel:he,getTime:U,getNormalizedTime:B,getPlaybackRate:k,getPlayedRanges:function(){return g&&o?o.getPlayedRanges():null},getEnded:G,getIsDynamic:j,getStreamController:function(){return n},computeAndSetLiveDelay:function(e,n){var r,o,s,u=!isNaN(e)&&isFinite(e)?e:NaN,l=i.getSuggestedPresentationDelay();if(R.get().streaming.delay.applyServiceDescription&&isNaN(R.get().streaming.delay.liveDelay)&&isNaN(R.get().streaming.delay.liveDelayFragmentCount)&&function(e){if(!e||!e.serviceDescriptions)return;for(var n=null,r=0;r0&&(t.debug("Apply LL properties coming from service description. Target Latency (ms):",n.latency.target),R.update({streaming:{delay:{liveDelay:n.latency.target/1e3},liveCatchup:{minDrift:(n.latency.target+500)/1e3,maxDrift:n.latency.max>n.latency.target?(n.latency.max-n.latency.target+500)/1e3:void 0}}})),n.playbackRate&&n.playbackRate.max>1&&(t.debug("Apply LL properties coming from service description. Max PlaybackRate:",n.playbackRate.max),R.update({streaming:{liveCatchup:{playbackRate:n.playbackRate.max-1}}})))}(n),r=y.getLiveDelay()?y.getLiveDelay():null===R.get().streaming.delay.liveDelayFragmentCount||isNaN(R.get().streaming.delay.liveDelayFragmentCount)||isNaN(u)?!0===R.get().streaming.delay.useSuggestedPresentationDelay&&null!==l&&!isNaN(l)&&l>0?l:isNaN(u)?n&&!isNaN(n.minBufferTime)?4*n.minBufferTime:4*g.manifestInfo.minBufferTime:4*u:u*R.get().streaming.delay.liveDelayFragmentCount,null!==(s=i.getAvailabilityStartTime())&&(v=s),n&&n.dvrWindowSize>0){var c=Math.max(n.dvrWindowSize-10,n.dvrWindowSize/2);o=Math.min(r,c)}else o=r;return p=o,o},getLiveDelay:function(){return p},getCurrentLiveLatency:Y,play:O,isPaused:M,pause:P,isSeeking:L,getStreamEndTime:D,seek:x,reset:H,updateCurrentTime:W,getAvailabilityStartTime:function(){return v}},t=Object(d.a)(N).getInstance().getLogger(e),H(),e}p.__dashjs_factory_name="PlaybackController";var g=f.a.getSingletonFactory(p),m=n(18),y=n(8),E=n(9),_=n(15),v=n(5);function T(e){var t,n,r,i,o,s,u=this.context,l=Object(_.a)(u).getInstance(),f=e.textController,h=e.eventBus,p=[],g=[],m=!1,T=e.mediaSource,S=null;function A(e){return new Promise((function(t){P((function(){i.changeType&&i.changeType(e),t()}))}))}function b(e){return i=f.getTextSourceBuffer(e),Promise.resolve()}function I(){if("function"==typeof i.addEventListener)try{i.addEventListener("updateend",O,!1),i.addEventListener("error",M,!1),i.addEventListener("abort",M,!1)}catch(e){s=setInterval(O,50)}else s=setInterval(O,50)}function R(e){return new Promise((function(t){i&&l.get().streaming.buffer.useAppendWindow?P((function(){try{if(!i)return void t();var n=T.duration,a=0;e&&!isNaN(e.start)&&!isNaN(e.duration)&&isFinite(e.duration)&&(n=e.start+e.duration),e&&!isNaN(e.start)&&(a=e.start),i.appendWindowEnd===n&&i.appendWindowStart===a||(i.appendWindowStart=0,i.appendWindowEnd=n+.01,i.appendWindowStart=Math.max(a-.1,0),r.debug("Updated append window for ".concat(o.type,". Set start to ").concat(i.appendWindowStart," and end to ").concat(i.appendWindowEnd))),t()}catch(e){r.warn("Failed to set append window"),t()}})):t()}))}function N(e){return new Promise((function(t){i?P((function(){try{i.timestampOffset===e||isNaN(e)||(i.timestampOffset=e,r.debug("Set MSE timestamp offset to ".concat(e))),t()}catch(e){t()}})):t()}))}function w(){return new Promise((function(e){P((function(){var t=i.appendWindowStart,n=i.appendWindowEnd;i&&(i.abort(),i.appendWindowStart=t,i.appendWindowEnd=n),e()}))}))}function C(){if(!m&&g.length>0){m=!0;var e=g[0];g.splice(0,1);var t=function(){m=!1,g.length>0&&C.call(this),e&&e.data&&e.data.segmentType&&e.data.segmentType!==v.a.INIT_SEGMENT_TYPE&&delete e.data.bytes,e.promise.resolve({chunk:e.data})};try{S=e.request,0===e.data.bytes.byteLength?t.call(this):(i.appendBuffer?i.appendBuffer(e.data.bytes):i.append(e.data.bytes,e.data),P(t.bind(this)))}catch(t){r.fatal('SourceBuffer append failed "'+t+'"'),g.length>0?C():m=!1,delete e.data.bytes,e.promise.reject({chunk:e.data,error:new y.a(t.code,t.message)})}}}function D(){p.length>0&&(i.updating||(p.shift()(),D()))}function O(){i.updating||D()}function M(e){var t,r,i=e.target||{};t=c.a.SOURCE_BUFFER_ERROR,r={error:i,lastRequestAppended:S}||{},h.trigger(t,r,{streamId:o.streamInfo.id,mediaType:n})}function P(e){p.push(e),i.updating||D()}return t={getType:function(){return n},getAllBufferRanges:function(){try{return i.buffered}catch(e){return r.error("getAllBufferRanges exception: "+e.message),null}},getBuffer:function(){return i},append:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return new Promise((function(r,i){e?(g.push({data:e,promise:{resolve:r,reject:i},request:n}),P(C.bind(t))):i({chunk:e,error:new y.a(E.a.APPEND_ERROR_CODE,E.a.APPEND_ERROR_MESSAGE)})}))},remove:function(e){return new Promise((function(t,n){var r=e.start,a=e.end;r>=0&&a>r?P((function(){try{i.remove(r,a),P((function(){t({from:r,to:a,unintended:!1}),e.resolve&&e.resolve()}))}catch(t){n({from:r,to:a,unintended:!1,error:new y.a(E.a.REMOVE_ERROR_CODE,E.a.REMOVE_ERROR_MESSAGE)}),e.reject&&e.reject(t)}})):t()}))},abort:function(){return new Promise((function(e){try{g=[],"open"===T.readyState?P((function(){i&&i.abort(),e()})):i&&i.setTextTrack&&"ended"===T.readyState?(i.abort(),e()):e()}catch(t){e()}}))},reset:function(){if(i){try{p=[],function(){try{"function"==typeof i.removeEventListener&&(i.removeEventListener("updateend",O,!1),i.removeEventListener("error",M,!1),i.removeEventListener("abort",M,!1)),clearInterval(s)}catch(e){r.error(e)}}(),m=!1,g=[],i.getClassName&&"TextSourceBuffer"===i.getClassName()||(r.debug("Removing sourcebuffer from media source"),T.removeSourceBuffer(i))}catch(e){}i=null}S=null},updateTimestampOffset:N,initializeForStreamSwitch:function(e,t,r){n=(o=e).type;var a=o.codec;!function(e){i=e.getBuffer()}(r),I();var s=[];return s.push(w),s.push(R(o.streamInfo)),s.push(A(a)),t&&void 0!==t.MSETimeOffset&&s.push(N(t.MSETimeOffset)),Promise.all(s)},initializeForFirstUse:function(e,t,r){n=(o=t).type;var s=o.codec;try{if(s.match(/application\/mp4;\s*codecs="(stpp|wvtt).*"/i))return b(e);i=T.addSourceBuffer(s),I();var u=[];return u.push(R(o.streamInfo)),r&&void 0!==r.MSETimeOffset&&u.push(N(r.MSETimeOffset)),Promise.all(u)}catch(t){return o.type==a.a.TEXT&&!o.isFragmented||-1!==s.indexOf('codecs="stpp')||-1!==s.indexOf('codecs="vtt')?b(e):Promise.reject(t)}},updateAppendWindow:R,changeType:A},r=Object(d.a)(u).getInstance().getLogger(t),t}T.__dashjs_factory_name="SourceBufferSink";var S=f.a.getClassFactory(T);function A(){var e={};return{save:function(t){var n=t.streamId,r=t.representationId;e[n]=e[n]||{},e[n][r]=t},extract:function(t,n){return e&&e[t]&&e[t][n]?e[t][n]:null},reset:function(){e={}}}}A.__dashjs_factory_name="InitCache";var b=f.a.getSingletonFactory(A);function I(e){e=e||{};var t,n,r,i,o,s,f,p,g,_,T,A,I,R,N,w,C,D,O=this.context,M=Object(l.a)(O).getInstance(),P=e.errHandler,L=e.fragmentModel,F=e.representationController,x=e.adapter,U=e.textController,B=e.abrController,k=e.playbackController,G=e.streamInfo,j=e.type,Y=e.settings;function H(e){s=e}function K(e){return x.convertRepresentationToRepresentationInfo(F.getRepresentationForQuality(e))}function q(e,t,n){var r=K(n);return t&&t[j]&&(j===a.a.VIDEO||j===a.a.AUDIO)?g.initializeForStreamSwitch(e,r,t[j]):g.initializeForFirstUse(G,e,r)}function V(e){Y.get().streaming.cacheInitSegments&&(n.info("Init fragment finished loading saving to",j+"'s init cache"),N.save(e.chunk)),n.debug("Append Init fragment",j," with representationId:",e.chunk.representationId," and quality:",e.chunk.quality,", data size:",e.chunk.bytes.byteLength),z(e.chunk)}function W(e){z(e.chunk,e.request)}function z(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;g.append(e,t).then((function(e){Q(e)})).catch((function(e){Q(e)})),e.mediaInfo.type===a.a.VIDEO&&Ee(c.a.VIDEO_CHUNK_RECEIVED,{chunk:e})}function X(e){if(e&&e.length>0)for(var t=0,r=e.length;t0){var e=Math.max(.2*o,1),t=o-e,r=Math.min(Y.get().streaming.buffer.bufferTimeAtTopQuality,.9*t),i=Math.min(Y.get().streaming.buffer.bufferTimeAtTopQualityLongForm,.9*t),a={streaming:{buffer:{bufferToKeep:parseFloat(e.toFixed(5)),bufferTimeAtTopQuality:parseFloat(r.toFixed(5)),bufferTimeAtTopQualityLongForm:parseFloat(i.toFixed(5))}}};Y.update(a)}}(),void(22!==e.error.code&&ye()||(n.warn("Clearing playback buffer to overcome quota exceed situation"),Ee(c.a.QUOTA_EXCEEDED,{criticalBufferLevel:o,quotaExceededTime:e.chunk.start}),ue(se())));if(g&&(re(),R=!1,(T=e.chunk)&&T.endFragment)){T&&!isNaN(T.index)&&(f=Math.max(T.index,f),ie());var t=g.getAllBufferRanges();T.segmentType===v.a.MEDIA_SEGMENT_TYPE&&(X(t),J(),function(){if(isNaN(D))return;if(j!==a.a.AUDIO&&j!==a.a.VIDEO)return void(D=NaN);var e=k.getTime(),t=ne(D,0);if(e===D&&t)return void(D=NaN);var n=F.getCurrentRepresentation().segmentDuration;if(!(t=ne(D,n)))return;Y.get().streaming.buffer.enableSeekDecorrelationFix&&Math.abs(e-D)>n?D<=t.end&&(k.seek(Math.max(D,t.start),!1,!0),D=NaN):en){var i=Math.max(0,e-n),a=L.getRequests({state:m.a.FRAGMENT_MODEL_EXECUTED,time:e,threshold:.01})[0];if(a&&(i=Math.min(a.startTime,i)),i>0)return{start:r,end:i}}return null}(e,n),i=function(e,t){var n=t.end(t.length-1)+.5,r=G.manifestInfo.duration>=Y.get().streaming.buffer.longFormContentDurationThreshold?Y.get().streaming.buffer.bufferTimeAtTopQualityLongForm:Y.get().streaming.buffer.bufferTimeAtTopQuality;if(n-e>r){var i=e+r,a=L.getRequests({state:m.a.FRAGMENT_MODEL_EXECUTED,time:e,threshold:.01})[0];if(a&&(i=Math.max(a.startTime+a.duration,i)),i=a&&e=p-1,t=k.getTimeToStreamEnd(G)-i<=0;!e&&!t||r||(ge(!0),n.debug("checkIfBufferingCompleted trigger BUFFERING_COMPLETED for stream id ".concat(G.id," and type ").concat(j)))}function ae(){j!==a.a.AUDIO&&j!==a.a.VIDEO||((!Y.get().streaming.lowLatencyEnabled&&i=Y.get().streaming.buffer.stallThreshold||Y.get().streaming.lowLatencyEnabled&&i>0)&&oe(u.BUFFER_LOADED))}function oe(e){_===e||e===u.BUFFER_EMPTY&&0===k.getTime()||j===a.a.TEXT&&!U.isTextEnabled()||(_=e,Ee(c.a.BUFFER_LEVEL_STATE_CHANGED,{state:e}),Ee(e===u.BUFFER_LOADED?c.a.BUFFER_LOADED:c.a.BUFFER_EMPTY),n.debug(e===u.BUFFER_LOADED?"Got enough buffer to start":"Waiting for more buffer before starting playback"))}function se(){var e=[],t=g.getAllBufferRanges();if(!t||0===t.length)return e;var n=k.getTime(),r=Math.max(0,n-Y.get().streaming.buffer.bufferToKeep),i=L.getRequests({state:m.a.FRAGMENT_MODEL_EXECUTED,time:n,threshold:.01})[0];if(i)r=Math.min(i.startTime,r);else if(0===n&&k.getIsDynamic())return[];if(t.start(0)<=r){for(var a={start:0,end:r},o=0;o=Y.get().streaming.buffer.bufferPruningInterval&&(A=0,g&&j!==a.a.TEXT&&(r||ue(se())))}function pe(){ae()}function ge(e){r!==e&&((r=e)?Ee(c.a.BUFFERING_COMPLETED):p=Number.POSITIVE_INFINITY)}function me(){try{var e,t,n=g.getAllBufferRanges(),r=0;if(!n)return r;for(t=0,e=n.length;t1&&void 0!==arguments[1]?arguments[1]:[];return new Promise((function(r,i){if(N&&e&&s){var a=B.getQualityFor(j,G.id);g=S(O).create({mediaSource:s,textController:U,eventBus:M}),q(e,t,a).then((function(){return fe(K(a))})).then((function(){r(g)})).catch((function(e){n.fatal("Caught error on create SourceBuffer: "+e),P.error(new y.a(E.a.MEDIASOURCE_TYPE_UNSUPPORTED_CODE,E.a.MEDIASOURCE_TYPE_UNSUPPORTED_MESSAGE+j)),i(e)}))}else r(null)}))},getBuffer:function(){return g},getBufferLevel:function(){return i},getRangeAt:ne,setMediaSource:H,getMediaSource:function(){return s},appendInitSegmentFromCache:function(e){var t=N.extract(G.id,e);return!!t&&(n.info("Append Init fragment",j," with representationId:",t.representationId," and quality:",t.quality,", data size:",t.bytes.byteLength),z(t),!0)},getIsBufferingCompleted:function(){return r},setIsBufferingCompleted:ge,getIsPruningInProgress:function(){return I},reset:function(e,t){M.off(c.a.INIT_FRAGMENT_LOADED,V,this),M.off(c.a.MEDIA_FRAGMENT_LOADED,W,this),M.off(c.a.WALLCLOCK_TIME_UPDATED,he,this),M.off(h.a.PLAYBACK_PLAYING,te,this),M.off(h.a.PLAYBACK_PROGRESS,J,this),M.off(h.a.PLAYBACK_TIME_UPDATED,J,this),M.off(h.a.PLAYBACK_RATE_CHANGED,pe,this),M.off(h.a.PLAYBACK_STALLED,ee,this),_e(e,t)},prepareForPlaybackSeek:function(){return r&&ge(!1),g.abort()},prepareForReplacementTrackSwitch:function(e){return new Promise((function(t,n){g.abort().then((function(){return de()})).then((function(){return g.changeType(e)})).then((function(){return $()})).then((function(){ge(!1),t()})).catch((function(e){n(e)}))}))},prepareForNonReplacementTrackSwitch:function(e){return new Promise((function(t,n){de().then((function(){return g.changeType(e)})).then((function(){t()})).catch((function(e){n(e)}))}))},prepareForReplacementQualitySwitch:function(){return new Promise((function(e,t){g.abort().then((function(){return de()})).then((function(){return $()})).then((function(){ge(!1),e()})).catch((function(e){t(e)}))}))},updateAppendWindow:de,getAllRangesWithSafetyFactor:Z,getContinuousBufferTimeForTargetTime:function(e){try{var t=e,n=g.getAllBufferRanges();if(!n||0===n.length)return e;for(var r=0;t===e&&r=i&&t<=a&&(t=a),r+=1}return t}catch(e){}},clearBuffers:ue,pruneAllSafely:$,updateBufferTimestampOffset:fe,setSeekTarget:function(e){D=e},segmentRequestingCompleted:function(e){isNaN(e)||(p=e,ie())}},n=Object(d.a)(O).getInstance().getLogger(t),N=b(O).getInstance(),_e(),t}I.__dashjs_factory_name="BufferController";var R=f.a.getClassFactory(I);function N(e){e=e||{};var t,n,r,i,a,o,s=this.context,u=Object(l.a)(s).getInstance(),f=e.textController,d=e.errHandler,h=e.streamInfo,p=e.type;function g(e){i=e}function m(e){var t,r,i;n!==e&&((n=e)&&(t=c.a.BUFFERING_COMPLETED,i=r||{},u.trigger(t,i,{streamId:h.id,mediaType:p})))}function _(e){e.chunk.bytes&&!n&&(o.save(e.chunk),a.append(e.chunk),m(!0))}return t={initialize:function(e){g(e)},getStreamId:function(){return h.id},getType:function(){return p},getBufferControllerType:function(){return"NotFragmentedTextBufferController"},createBufferSink:function(e){return new Promise((function(t,n){try{(a=S(s).create({mediaSource:i,textController:f,eventBus:u})).initializeForFirstUse(h,e),r||(a.getBuffer()&&"function"==typeof a.getBuffer().initialize&&a.getBuffer().initialize(),r=!0),t(a)}catch(e){d.error(new y.a(E.a.MEDIASOURCE_TYPE_UNSUPPORTED_CODE,E.a.MEDIASOURCE_TYPE_UNSUPPORTED_MESSAGE+p)),n(e)}}))},getBuffer:function(){return a},getBufferLevel:function(){return 0},getRangeAt:function(){return null},getAllRangesWithSafetyFactor:function(){return[]},getContinuousBufferTimeForTargetTime:function(){return Number.POSITIVE_INFINITY},setMediaSource:g,getMediaSource:function(){return i},appendInitSegmentFromCache:function(e){return null!==o.extract(h.id,e)},getIsBufferingCompleted:function(){return n},setIsBufferingCompleted:m,getIsPruningInProgress:function(){return!1},reset:function(e){u.off(c.a.INIT_FRAGMENT_LOADED,_,t),!e&&a&&(a.abort(),a.reset(),a=null)},clearBuffers:function(){return Promise.resolve()},prepareForPlaybackSeek:function(){return Promise.resolve()},prepareForReplacementTrackSwitch:function(){return n=!1,Promise.resolve()},setSeekTarget:function(){},updateAppendWindow:function(){return Promise.resolve()},pruneAllSafely:function(){return Promise.resolve()},updateBufferTimestampOffset:function(){return Promise.resolve()},segmentRequestingCompleted:function(){}},r=!1,i=null,n=!1,o=b(s).getInstance(),u.on(c.a.INIT_FRAGMENT_LOADED,_,t),t}N.__dashjs_factory_name="NotFragmentedTextBufferController";var w=f.a.getClassFactory(N);function C(e){e=e||{};var t,n,r,i,o,s,f,p,g,y,E,_,v,T=this.context,S=Object(l.a)(T).getInstance(),A=e.dashMetrics,b=e.mediaPlayerModel,I=e.fragmentModel,R=e.abrController,N=e.playbackController,w=e.textController,C=e.type,D=e.bufferController,O=e.settings;function M(e){if(!D.getIsBufferingCompleted()){P();var t=isNaN(e)?0:e;s=setTimeout(L,t)}}function P(){s&&(clearTimeout(s),s=null)}function L(){try{if(function(){try{return C===a.a.TEXT&&!w.isTextEnabled()}catch(e){return!1}}())return void P();if(function(){try{return i&&(isNaN(y)||E||(e=n.id,t=R.getMaxAllowedIndexFor(C,e),!(!isNaN(g)&&g==t||(r.info("Top quality "+C+" index has changed from "+g+" to "+t),g=t,0)))||function(){if(!C||!i)return!0;return A.getCurrentBufferLevel(C)=O.get().streaming.buffer.longFormContentDurationThreshold?O.get().streaming.buffer.bufferTimeAtTopQualityLongForm:O.get().streaming.buffer.bufferTimeAtTopQuality:b.getStableBufferTime()}catch(e){return b.getStableBufferTime()}}():e}function x(){U(!0)}function U(e){if(N&&I){var t=I.getRequests({state:m.a.FRAGMENT_MODEL_EXECUTED,time:N.getTime(),threshold:0})[0];t&&N.getTime()>=t.startTime&&((!p.mediaInfo||t.mediaInfo.type===p.mediaInfo.type&&t.mediaInfo.id!==p.mediaInfo.id)&&e&&S.trigger(c.a.TRACK_CHANGE_RENDERED,{mediaType:C,oldMediaInfo:p.mediaInfo,newMediaInfo:t.mediaInfo,streamId:n.id}),t.quality===p.quality&&t.adaptationIndex===p.adaptationIndex||!e||(r.debug("Quality change rendered for streamId ".concat(n.id," and type ").concat(C)),S.trigger(c.a.QUALITY_CHANGE_RENDERED,{mediaType:C,oldQuality:p.quality,newQuality:t.quality,streamId:n.id})),p={mediaInfo:t.mediaInfo,quality:t.quality,adaptationIndex:t.adaptationIndex})}}function B(e){r.debug("Appended bytes for ".concat(e.mediaType," and stream id ").concat(n.id)),(isNaN(e.index)||isNaN(y))&&(y=e.quality,r.info("["+C+"] lastInitializedRepresentationInfo changed to "+e.quality)),M(0)}function k(){I.abortRequests(),P()}function G(){O.get().streaming.scheduling.scheduleWhilePaused||M()}function j(e){A.updatePlayListTraceMetrics({playbackspeed:e.playbackRate.toString()})}function Y(){v=!0,o=0,y=NaN,p={mediaInfo:void 0,quality:NaN,adaptationIndex:NaN},g=NaN,E=!1,_=!1}return t={initialize:function(e){f=e,S.on(c.a.BYTES_APPENDED_END_FRAGMENT,B,t),S.on(c.a.URL_RESOLUTION_FAILED,k,t),S.on(h.a.PLAYBACK_STARTED,G,t),S.on(h.a.PLAYBACK_RATE_CHANGED,j,t),S.on(h.a.PLAYBACK_TIME_UPDATED,x,t)},getType:function(){return C},getStreamId:function(){return n.id},setCurrentRepresentation:function(e){i=e},setTimeToLoadDelay:function(e){o=e},getTimeToLoadDelay:function(){return o},setSwitchTrack:function(e){E=e},getSwitchStrack:function(){return E},startScheduleTimer:M,clearScheduleTimer:P,reset:function(){S.off(c.a.BYTES_APPENDED_END_FRAGMENT,B,t),S.off(c.a.URL_RESOLUTION_FAILED,k,t),S.off(h.a.PLAYBACK_STARTED,G,t),S.off(h.a.PLAYBACK_RATE_CHANGED,j,t),S.off(h.a.PLAYBACK_TIME_UPDATED,x,t),P(),U(!1),Y(),n=null},getBufferTarget:F,getPlaybackController:function(){return N},setCheckPlaybackQuality:function(e){v=e},setInitSegmentRequired:function(e){_=e}},r=Object(d.a)(T).getInstance().getLogger(t),Y(),n=e.streamInfo,t}C.__dashjs_factory_name="ScheduleController";var D=f.a.getClassFactory(C),O=n(54),M=n(13),P=n(31),L=n(23),F=n(11),x=n(20);function U(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var B=function e(){U(this,e),this.start=null,this.mstart=null,this.starttype=null,this.trace=[]};B.INITIAL_PLAYOUT_START_REASON="initial_playout",B.SEEK_START_REASON="seek",B.RESUME_FROM_PAUSE_START_REASON="resume",B.METRICS_COLLECTION_START_REASON="metrics_collection_start";var k=function e(){U(this,e),this.representationid=null,this.subreplevel=null,this.start=null,this.mstart=null,this.duration=null,this.playbackspeed=null,this.stopreason=null};k.REPRESENTATION_SWITCH_STOP_REASON="representation_switch",k.REBUFFERING_REASON="rebuffering",k.USER_REQUEST_STOP_REASON="user_request",k.END_OF_PERIOD_STOP_REASON="end_of_period",k.END_OF_CONTENT_STOP_REASON="end_of_content",k.METRICS_COLLECTION_STOP_REASON="metrics_collection_end",k.FAILURE_STOP_REASON="failure";var G=n(32);function j(e){e=e||{};var t,n,r,i,s,f,h,p,g,_,T,S,A,b,I=this.context,N=Object(l.a)(I).getInstance(),C=e.streamInfo,U=e.type,B=e.errHandler,j=e.mimeType,Y=e.timelineConverter,H=e.adapter,K=e.manifestModel,q=e.mediaPlayerModel,V=e.fragmentModel,W=e.abrController,z=e.playbackController,X=e.mediaController,Q=e.textController,$=e.dashMetrics,Z=e.settings,J=e.boxParser,ee=e.segmentBlacklistController;function te(){return C.id}function ne(){return U}function re(){return H.getIsTextTrack(p.getData())}function ie(){s=[],i=null,b=0,g=!1,T=!1,_=!1}function ae(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(e.sender)if(T)ce();else if((!re()||Q.isTextEnabled())&&f&&e.representationId&&!f.appendInitSegmentFromCache(e.representationId)){var n=p.getCurrentRepresentation();if(0===n.range)return void oe();var r=S?S.getInitRequest(i,n):null;r?V.executeRequest(r):t&&(h.setInitSegmentRequired(!0),ce())}}function oe(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(T||f.getIsPruningInProgress())ce();else{var n=le();n?(g=!1,se(n)):ue(t)}}function se(e){isNaN(e.startTime+e.duration)||(b=e.startTime+e.duration),e.delayLoadingTime=(new Date).getTime()+h.getTimeToLoadDelay(),h.setTimeToLoadDelay(0),!function(e){var t=e.url;e.range&&(t=t.concat("_",e.range));return ee.contains(t)}(e)?(n.debug("Next fragment request url for stream id ".concat(C.id," and media type ").concat(U," is ").concat(e.url)),V.executeRequest(e)):(n.warn("Fragment request url ".concat(e.url," for stream id ").concat(C.id," and media type ").concat(U," is on the ignore list and will be skipped")),ce())}function ue(e){var t=p.getCurrentRepresentation();if(Z.get().streaming.gaps.enableSeekFix&&!r&&g&&z.isSeeking()){var a=S.getValidSeekTimeCloseToTargetTime(b,i,t,Z.get().streaming.gaps.threshold);if(!isNaN(a))return void z.seek(a,!1,!1)}if(S.isLastSegmentRequested(t,b)){var o=S.getCurrentIndex();return n.debug("Segment requesting for stream ".concat(C.id," has finished")),N.trigger(c.a.STREAM_REQUESTING_COMPLETED,{segmentIndex:o},{streamId:C.id,mediaType:U}),f.segmentRequestingCompleted(o),void h.clearScheduleTimer()}e&&ce()}function le(){var e,t=Re();if(isNaN(b)||ne()===a.a.TEXT&&!Q.isTextEnabled())return null;var n=g;if(S){var r=p&&t?p.getRepresentationForQuality(t.quality):null;e=n?S.getSegmentRequestForTime(i,r,b):S.getNextSegmentRequest(i,r)}return e}function ce(){h.startScheduleTimer(Z.get().streaming.lowLatencyEnabled?Z.get().streaming.scheduling.lowLatencyTimeout:Z.get().streaming.scheduling.defaultTimeout)}function fe(){T=!0}function de(){T=!1}function he(e){e.error||(h.setCurrentRepresentation(H.convertRepresentationToRepresentationInfo(e.currentRepresentation)),f.getIsBufferingCompleted()||f.updateBufferTimestampOffset(e.currentRepresentation))}function pe(e){$.addBufferState(U,e.state,h.getBufferTarget()),e.state!==u.BUFFER_EMPTY||z.isSeeking()||(n.info("Buffer is empty! Stalling!"),$.pushPlayListTraceMetrics(new Date,k.REBUFFERING_REASON))}function ge(e){V.syncExecutedRequestsWithBufferedRange(f.getBuffer().getAllBufferRanges(),C.duration),e.quotaExceeded&&e.from>z.getTime()&&Me(e.from),e.hasEnoughSpaceToAppend&&e.quotaExceeded&&h.startScheduleTimer()}function me(e){if(e&&e.lastRequestAppended&&e.lastRequestAppended.url){var t=e.lastRequestAppended.url;e.lastRequestAppended.range&&(t=t.concat("_",e.lastRequestAppended.range)),n.warn("Blacklisting segment with url ".concat(t)),ee.add(t)}}function ye(){De(),_=!1}function Ee(e){n.info("onFragmentLoadingAbandoned request: "+e.request.url+" has been aborted"),z.isSeeking()||h.getSwitchStrack()||_||(n.info("onFragmentLoadingAbandoned request: "+e.request.url+" has to be downloaded again, origin is not seeking process or switch track call"),e.request&&e.request.isInitializationRequest()?h.setInitSegmentRequired(!0):Me(e.request.startTime+e.request.duration/2),h.startScheduleTimer(0))}function _e(e){n.info("OnFragmentLoadingCompleted for stream id "+C.id+" and media type "+U+" - Url:",e.request?e.request.url:"undefined",e.request.range?", Range:"+e.request.range:""),re()&&h.startScheduleTimer(0),e.error&&e.request.serviceLocation&&function(e){if(n.info("Fragment loading completed with an error"),!e||!e.request||!e.request.type)return;e.request.type===v.a.INIT_SEGMENT_TYPE?ae({representationId:e.request.representationId,sender:{}},!1):e.request.type===v.a.MEDIA_SEGMENT_TYPE&&(Me(e.request.startTime+e.request.duration/2),oe({},!1))}(e)}function ve(){Me(z.getTime()),Ie().startScheduleTimer()}function Te(e){var t=e.currentTrackInfo;if(t){var n=s.find((function(e){return e.index===t.index&&e.lang===t.lang}));n&&be(n).then((function(){f.setIsBufferingCompleted(!1),Me(z.getTime()),h.setInitSegmentRequired(!0),h.startScheduleTimer()}))}}function Se(e){Me(e.quotaExceededTime),h.clearScheduleTimer()}function Ae(){return f?f.getBuffer():null}function be(e){e===i||e&&i&&e.type!==i.type||(i=e);var t=H.getRealAdaptation(C,i),n=H.getVoRepresentations(i);if(p){var r,o=p.getData(),s=W.getMaxAllowedIndexFor(U,C.id),u=W.getMinAllowedIndexFor(U,C.id),l=null;return null!==o&&o.id===t.id||U===a.a.TEXT?r=W.getQualityFor(U,C.id):(l=W.getThroughputHistory().getAverageThroughput(U)||W.getInitialBitrateFor(U,C.id),r=W.getQualityForBitrate(i,l,C.id)),void 0!==u&&rs&&(r=s),p.updateData(t,n,U,i.isFragmented,r)}return Promise.resolve()}function Ie(){return h}function Re(e){var t;return void 0!==e?(Object(M.a)(e),t=p?p.getRepresentationForQuality(e):null):t=p?p.getCurrentRepresentation():null,H.convertRepresentationToRepresentationInfo(t)}function Ne(){return!!f&&f.getIsBufferingCompleted()}function we(e){var t=e.chunk,n=t.bytes,r=t.quality,i=Re(r),a=p&&i?p.getRepresentationForQuality(i.quality):null;if(i&&a){var o=H.getEventsFor(i.mediaInfo),s=H.getEventsFor(i,a);if(o&&o.length>0||s&&s.length>0){var u=function(e,t,n,r){try{for(var i={},a=[],o=n.concat(r),s=0,u=o.length;sZ.get().streaming.buffer.stallThreshold;if(f.getIsBufferingCompleted()&&!t)return f.prepareForNonReplacementTrackSwitch(i.codec).then((function(){N.trigger(c.a.BUFFERING_COMPLETED,{},{streamId:C.id,mediaType:U})})).catch((function(){N.trigger(c.a.BUFFERING_COMPLETED,{},{streamId:C.id,mediaType:U})})),void e();h.clearScheduleTimer(),h.setSwitchTrack(!0),t?(N.trigger(c.a.BUFFER_REPLACEMENT_STARTED,{mediaType:U,streamId:C.id},{mediaType:U,streamId:C.id}),V.abortRequests(),f.prepareForReplacementTrackSwitch(i.codec).then((function(){var e=Re();return f.updateBufferTimestampOffset(e)})).then((function(){Ce(),e()})).catch((function(){Ce(),e()}))):f.prepareForNonReplacementTrackSwitch(i.codec).then((function(){De(),e()})).catch((function(){De(),e()}))}))},prepareQualityChange:function(e){n.debug("Preparing quality switch for type ".concat(U));var t=e.newQuality;_=!0,h.clearScheduleTimer();var r=Re(t);h.setCurrentRepresentation(r),p.prepareQualityChange(t),V.abortRequests(),f.updateBufferTimestampOffset(r).then((function(){e.reason&&e.reason.forceReplace?(N.trigger(c.a.BUFFER_REPLACEMENT_STARTED,{mediaType:U,streamId:C.id},{mediaType:U,streamId:C.id}),f.prepareForReplacementQualitySwitch().then((function(){Ce(),_=!1})).catch((function(){Ce(),_=!1}))):Z.get().streaming.buffer.fastSwitchEnabled?function(e){var t=z.getTime(),n=V.getRequests({state:m.a.FRAGMENT_MODEL_EXECUTED,time:t+1.5,threshold:0})[0];if(n&&!re()){var r=f.getBufferLevel(),i=W.getAbandonmentStateFor(C.id,U);if(n.quality=1.5&&i!==u.ABANDON_LOAD)Me(t+1.5),h.setCheckPlaybackQuality(!1),h.startScheduleTimer();else ye()}else h.startScheduleTimer();_=!1}(r):ye(),$.pushPlayListTraceMetrics(new Date,k.REPRESENTATION_SWITCH_STOP_REASON),$.createPlaylistTraceMetrics(r.id,1e3*z.getTime(),z.getPlaybackRate())}))},getMediaInfo:function(){return i},getMediaSource:function(){return f.getMediaSource()},setMediaSource:function(e){f.setMediaSource(e)},getBuffer:Ae,setExplicitBufferingTime:Me,finalisePlayList:function(e,t){$.pushPlayListTraceMetrics(e,t)},probeNextRequest:function(){var e=Re(),t=p&&e?p.getRepresentationForQuality(e.quality):null;return S.getNextSegmentRequestIdempotent(i,t)},prepareInnerPeriodPlaybackSeeking:function(e){return new Promise((function(t){h.clearScheduleTimer(),V.abortRequests(),f.prepareForPlaybackSeek().then((function(){var t=f.getAllRangesWithSafetyFactor(e.seekTime);return f.clearBuffers(t)})).then((function(){var n=f.getContinuousBufferTimeForTargetTime(e.seekTime);if(!isNaN(C.duration)&&isFinite(C.duration)&&n>=C.start+C.duration)f.setIsBufferingCompleted(!0),t();else{Me(n),f.setSeekTarget(n);var r=[];r.push(f.updateAppendWindow());var i=Re();r.push(f.updateBufferTimestampOffset(i)),Promise.all(r).then((function(){h.setInitSegmentRequired(!0),h.setCheckPlaybackQuality(!1),h.startScheduleTimer(),t()}))}})).catch((function(e){n.error(e)}))}))},prepareOuterPeriodPlaybackSeeking:function(){return new Promise((function(e,t){try{h.clearScheduleTimer(),V.abortRequests(),f.prepareForPlaybackSeek().then((function(){return f.pruneAllSafely()})).then((function(){e()}))}catch(e){t(e)}}))},reset:function(e,n){S&&S.reset(),f&&(f.reset(e,n),f=null),h&&(h.reset(),h=null),p&&(p.reset(),p=null),A&&(A=null),W&&W.unRegisterStreamType(te(),U),N.off(c.a.DATA_UPDATE_COMPLETED,he,t),N.off(c.a.INIT_FRAGMENT_NEEDED,ae,t),N.off(c.a.MEDIA_FRAGMENT_NEEDED,oe,t),N.off(c.a.MEDIA_FRAGMENT_LOADED,we,t),N.off(c.a.BUFFER_LEVEL_STATE_CHANGED,pe,t),N.off(c.a.BUFFER_CLEARED,ge,t),N.off(c.a.SEEK_TARGET,Oe,t),N.off(c.a.FRAGMENT_LOADING_ABANDONED,Ee,t),N.off(c.a.FRAGMENT_LOADING_COMPLETED,_e,t),N.off(c.a.SET_FRAGMENTED_TEXT_AFTER_DISABLED,ve,t),N.off(c.a.SET_NON_FRAGMENTED_TEXT,Te,t),N.off(c.a.QUOTA_EXCEEDED,Se,t),N.off(c.a.MANIFEST_UPDATED,fe,t),N.off(c.a.STREAMS_COMPOSED,de,t),N.off(c.a.SOURCE_BUFFER_ERROR,me,t),ie(),U=null,C=null}},n=Object(d.a)(I).getInstance().getLogger(t),ie(),N.on(c.a.DATA_UPDATE_COMPLETED,he,t,{priority:l.a.EVENT_PRIORITY_HIGH}),N.on(c.a.INIT_FRAGMENT_NEEDED,ae,t),N.on(c.a.MEDIA_FRAGMENT_NEEDED,oe,t),N.on(c.a.MEDIA_FRAGMENT_LOADED,we,t),N.on(c.a.BUFFER_LEVEL_STATE_CHANGED,pe,t),N.on(c.a.BUFFER_CLEARED,ge,t),N.on(c.a.SEEK_TARGET,Oe,t),N.on(c.a.FRAGMENT_LOADING_ABANDONED,Ee,t),N.on(c.a.FRAGMENT_LOADING_COMPLETED,_e,t),N.on(c.a.QUOTA_EXCEEDED,Se,t),N.on(c.a.SET_FRAGMENTED_TEXT_AFTER_DISABLED,ve,t),N.on(c.a.SET_NON_FRAGMENTED_TEXT,Te,t),N.on(c.a.MANIFEST_UPDATED,fe,t),N.on(c.a.STREAMS_COMPOSED,de,t),N.on(c.a.SOURCE_BUFFER_ERROR,me,t),t}j.__dashjs_factory_name="StreamProcessor";var Y=f.a.getClassFactory(j),H=n(55),K=n(58);function q(e){e=e||{};var t,n,r,i=this.context,o=Object(l.a)(i).getInstance(),s=e.errHandler,u=e.mediaPlayerModel,f=e.dashMetrics,p=Object(d.a)(i).getInstance(),g=e.streamInfo;function y(){return g.id}function _(){for(var e in r)r[e].reset();r={}}function v(e){if(e.sender){var t=e.request,r=e.response,i=t.isInitializationRequest(),s=t.mediaInfo.streamInfo;if(e.error&&(t.mediaType===a.a.AUDIO||t.mediaType===a.a.VIDEO||t.mediaType===a.a.TEXT&&t.mediaInfo.isFragmented)&&o.trigger(c.a.SERVICE_LOCATION_BLACKLIST_ADD,{entry:e.request.serviceLocation}),r&&s){var u=function(e,t,n,r){var i=new H.a;return i.streamId=n,i.mediaInfo=t.mediaInfo,i.segmentType=t.type,i.start=t.startTime,i.duration=t.duration,i.end=i.start+i.duration,i.bytes=e,i.index=t.index,i.quality=t.quality,i.representationId=t.representationId,i.endFragment=r,i}(r,t,g.id,e.type!==c.a.FRAGMENT_LOADING_PROGRESS);o.trigger(i?c.a.INIT_FRAGMENT_LOADED:c.a.MEDIA_FRAGMENT_LOADED,{chunk:u,request:t},{streamId:s.id,mediaType:t.mediaType})}else n.warn("No "+t.mediaType+" bytes to push or stream is inactive.")}}return t={getStreamId:y,getModel:function(t){var n=r[t];return n||(n=Object(m.a)(i).create({streamInfo:g,type:t,dashMetrics:f,fragmentLoader:Object(K.a)(i).create({dashMetrics:f,mediaPlayerModel:u,errHandler:s,requestModifier:Object(L.a)(i).getInstance(),settings:e.settings,boxParser:e.boxParser,eventBus:o,events:c.a,errors:E.a,dashConstants:e.dashConstants,urlUtils:e.urlUtils,streamId:y()}),debug:p,eventBus:o,events:c.a}),r[t]=n),n},reset:function(){o.off(h.a.FRAGMENT_LOADING_COMPLETED,v,this),o.off(h.a.FRAGMENT_LOADING_PROGRESS,v,this),_()}},n=p.getLogger(t),_(),o.on(h.a.FRAGMENT_LOADING_COMPLETED,v,t),o.on(h.a.FRAGMENT_LOADING_PROGRESS,v,t),t}q.__dashjs_factory_name="FragmentController";var V=f.a.getClassFactory(q);var W=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.url=null,this.width=null,this.height=null,this.x=null,this.y=null},z=n(29);var X=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.mediaType=null,this.bitrate=null,this.width=null,this.height=null,this.scanType=null,this.qualityIndex=NaN},Q=n(10);function $(e){var t,n,r=this.context,i=e.streamInfo;function o(e){n.setTrackByIndex(e)}function s(){n&&n.reset()}return t={getStreamId:function(){return i.id},initialize:function(){n.addTracks();var e=n.getTracks();e&&e.length>0&&o(0)},provide:function(e,t){if("function"==typeof t){var r,i,a=n.getCurrentTrack();if(!a||a.segmentDuration<=0||null==e)t(null);else{(i=n.getThumbnailRequestForTime(e))&&(a.segmentDuration=i.duration),r=e%a.segmentDuration;var o=Math.floor(r*a.tilesHor*a.tilesVert/a.segmentDuration),s=new W;if(s.width=Math.floor(a.widthPerTile),s.height=Math.floor(a.heightPerTile),s.x=Math.floor(o%a.tilesHor)*a.widthPerTile,s.y=Math.floor(o/a.tilesHor)*a.heightPerTile,"readThumbnail"in a)return a.readThumbnail(e,(function(e){s.url=e,t(s)}));if(i)s.url=i.url,a.segmentDuration=NaN;else{var u=Math.floor(e/a.segmentDuration);s.url=function(e,t){var n=t+e.startNumber,r=Object(Q.d)(e.templateUrl,"Number",n);return r=Object(Q.d)(r,"Time",(n-1)*e.segmentDuration*e.timescale),r=Object(Q.d)(r,"Bandwidth",e.bandwidth),Object(Q.e)(r)}(a,u)}t(s)}}},setTrackByIndex:o,getCurrentTrackIndex:function(){return n.getCurrentTrackIndex()},getBitrateList:function(){var e=n.getTracks(),t=0;return e.map((function(e){var n=new X;return n.mediaType=a.a.IMAGE,n.qualityIndex=t++,n.bitrate=e.bitrate,n.width=e.width,n.height=e.height,n}))},reset:s},s(),n=Object(z.b)(r).create({streamInfo:i,adapter:e.adapter,baseURLController:e.baseURLController,timelineConverter:e.timelineConverter,debug:e.debug,eventBus:e.eventBus,events:e.events,dashConstants:e.dashConstants,dashMetrics:e.dashMetrics,segmentBaseController:e.segmentBaseController}),t}$.__dashjs_factory_name="ThumbnailController";var Z=f.a.getClassFactory($);function J(e){var t;e=e||{};var n=[],r=Object(l.a)(this.context).getInstance(),i=e.updateEventName,a=e.addBlacklistEventName;function o(e){-1===n.indexOf(e)&&(n.push(e),r.trigger(i,{entry:e}))}function s(e){o(e.entry)}return t={add:o,contains:function(e){return!!(n.length&&e&&e.length)&&-1!==n.indexOf(e)},reset:function(){n=[]}},a&&r.on(a,s,t),t}J.__dashjs_factory_name="BlackListController";var ee=f.a.getClassFactory(J),te=[a.a.VIDEO,a.a.AUDIO,a.a.TEXT,a.a.MUXED,a.a.IMAGE];function ne(e){e=e||{};var t,n,r,i,s,u,f,h,p,g,m,_,v,T,S,A,b,I,R=this.context,N=Object(l.a)(R).getInstance(),w=Object(F.a)(R).getInstance(),C=e.manifestModel,D=e.mediaPlayerModel,O=e.dashMetrics,M=e.manifestUpdater,P=e.adapter,L=e.timelineConverter,U=e.capabilities,B=e.errHandler,k=e.abrController,G=e.playbackController,j=e.eventController,H=e.mediaController,K=e.protectionController,q=e.textController,W=e.videoModel,z=e.streamInfo,X=e.settings;function Q(t,i){return new Promise((function(s,u){se(),g=!0,le();var l,d=W.getElement();te.forEach((function(i){(i!==a.a.VIDEO||!d||d&&/^VIDEO$/i.test(d.nodeName))&&function(t,i){var s,u=P.getAllMediaInfoForType(z,t),l=[],d=null;if(!u||0===u.length)return void n.info("No "+t+" data.");t===a.a.VIDEO&&(f=!0);t===a.a.AUDIO&&(h=!0);for(var p=0,g=u.length;p0&&(H.setInitialMediaSettingsForType(t,z),q.setInitialSettings(H.getInitialSettings(t)),q.addMediaInfosToBuffer(z,t,l));if(0===(u=u.filter((function(e){return!e.isEmbedded}))).length)return;if(t===a.a.IMAGE)return void(_=Z(R).create({streamInfo:z,adapter:P,baseURLController:e.baseURLController,timelineConverter:e.timelineConverter,debug:A,eventBus:N,events:c.a,dashConstants:o.a,dashMetrics:e.dashMetrics,segmentBaseController:e.segmentBaseController})).initialize();N.trigger(c.a.STREAM_INITIALIZING,{streamInfo:z,mediaInfo:d}),H.setInitialMediaSettingsForType(t,z);var y=function(t,n){var i=t&&t.length>0?t[0]:null,o=m.getModel(i?i.type:null),s=i?i.type:null,u=i?i.mimeType:null,l=i?i.isFragmented:null,c=Y(R).create({streamInfo:z,type:s,mimeType:u,timelineConverter:L,adapter:P,manifestModel:C,mediaPlayerModel:D,fragmentModel:o,dashMetrics:e.dashMetrics,baseURLController:e.baseURLController,segmentBaseController:e.segmentBaseController,abrController:k,playbackController:G,mediaController:H,textController:q,errHandler:B,settings:X,boxParser:S,segmentBlacklistController:v});c.initialize(n,f,l),r.push(c);for(var d=0;d0&&e.Representation[0].ContentProtection)}function _e(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!e||!e.hasOwnProperty("getStreamInfo"))return!1;var r=e.getStreamInfo(),i=n?n.getStreamInfo():oe();if(!r||!i)return!1;var a=P.getAdaptationForType(r.index,t,r),o=P.getAdaptationForType(i.index,t,i);if(!a||!o)return!a&&!o;var s=a&&o&&a.mimeType===o.mimeType,u=o.Representation_asArray.map((function(e){return e.codecs})),l=a.Representation_asArray.map((function(e){return e.codecs})),c=l.some((function(e){return u.indexOf(e)>-1})),f=l.some((function(e){return u.some((function(t){return U.codecRootCompatibleWithCodec(t,e)}))}));return c||f&&s}function ve(e){T=e}function Te(){return T}return t={initialize:function(){N.on(c.a.BUFFERING_COMPLETED,fe,t),N.on(c.a.DATA_UPDATE_COMPLETED,de,t),N.on(c.a.INBAND_EVENTS,he,t),K&&(N.on(c.a.KEY_ERROR,ue,t),N.on(c.a.SERVER_CERTIFICATE_UPDATED,ue,t),N.on(c.a.LICENSE_REQUEST_COMPLETE,ue,t),N.on(c.a.KEY_SYSTEM_SELECTED,ue,t),N.on(c.a.KEY_SESSION_CREATED,ue,t),N.on(c.a.KEY_STATUSES_CHANGED,ue,t)),q.initializeForStream(z),N.trigger(c.a.STREAM_UPDATED,{streamInfo:z})},getStreamId:function(){return z?z.id:null},activate:function(e,t){return new Promise((function(n,r){if(!s)return Te()?(s=!0,N.trigger(c.a.STREAM_ACTIVATED,{streamInfo:z}),void n(t)):void function(e,t){return Q(e,t)}(e,t).then((function(e){s=!0,N.trigger(c.a.STREAM_ACTIVATED,{streamInfo:z}),n(e)})).catch((function(e){r(e)}));n(t)}))},deactivate:J,getIsActive:function(){return s},getDuration:function(){return z?z.duration:NaN},getStartTime:ie,getId:ae,getStreamInfo:oe,getHasAudioTrack:function(){return h},getHasVideoTrack:function(){return f},startPreloading:function(e,t){return new Promise((function(i,a){Te()?a():(n.info("[startPreloading] Preloading next stream with id ".concat(ae())),ve(!0),Q(e,t).then((function(){for(var e=0;e0;){var e=I.pop(),t=e.newMediaInfo,r=pe(e.oldMediaInfo);if(!r)return;n.push(r.prepareTrackSwitch()),r.selectMediaInfo(t)}return Promise.all(n)})).then((function(){g=!1,ce(),N.trigger(c.a.STREAM_UPDATED,{streamInfo:z}),t()}))}))},reset:function(e){m&&(m.reset(),m=null),k&&z&&k.clearDataForStream(z.id),v&&(v.reset(),v=null),ne(e),z=null,N.off(c.a.DATA_UPDATE_COMPLETED,de,t),N.off(c.a.BUFFERING_COMPLETED,fe,t),N.off(c.a.INBAND_EVENTS,he,t),K&&(N.off(c.a.KEY_ERROR,ue,t),N.off(c.a.SERVER_CERTIFICATE_UPDATED,ue,t),N.off(c.a.LICENSE_REQUEST_COMPLETE,ue,t),N.off(c.a.KEY_SYSTEM_SELECTED,ue,t),N.off(c.a.KEY_SESSION_CREATED,ue,t),N.off(c.a.KEY_STATUSES_CHANGED,ue,t))},getProcessors:me,setMediaSource:function(e){for(var t=0;t1&&void 0!==arguments[1]?arguments[1]:null;return _e(e,a.a.VIDEO,t)&&_e(e,a.a.AUDIO,t)},isProtectionCompatible:function(e){return!e||ye(a.a.VIDEO,e)&&ye(a.a.AUDIO,e)},getPreloaded:Te,getIsEndedEventSignaled:function(){return b},setIsEndedEventSignaled:re,getAdapter:function(){return P},getHasFinishedBuffering:function(){return u},setPreloaded:ve,startScheduleControllers:function(){for(var e=r.length,t=0;t0&&void 0!==arguments[0]&&arguments[0];s=!0;var t=f.getValue(),n=t.url,r=p.getPatchLocation(t),i=p.getLocation(t);r&&!e?n=r:i&&(n=i),v.isRelative(n)&&(n=v.resolve(n,t.url)),u.load(n)}function I(e){if(e){if(p.getIsPatch(e)){var r=e;e=f.getValue();var u=p.isPatchValid(e,r),l=u;if(u){var d=p.getPublishTime(e);l=p.applyPatchToManifest(e,r);var h=p.getPublishTime(e);l=d.getTime()!=h.getTime()}if(!l)return t.debug("Patch provided is invalid, performing full manifest refresh"),void b(!0);e.loadedTime=new Date}}else(e=f.getValue()).loadedTime=new Date;if(f.getValue()&&f.getValue().type===o.a.DYNAMIC&&e.type===o.a.STATIC)return _.trigger(c.a.DYNAMIC_TO_STATIC),s=!1,void(a=!0);f.setValue(e);var g=new Date,m=(g.getTime()-e.loadedTime.getTime())/1e3;1e3*(n=p.getManifestUpdatePeriod(e,m))>2147483647&&(n=2147483.647),_.trigger(c.a.MANIFEST_UPDATED,{manifest:e}),t.info("Manifest has been refreshed at "+g+"["+g.getTime()/1e3+"] "),i||A()}function R(){i||(s?A(m.get().streaming.manifestUpdateRetryInterval):b())}function N(e){e.error?e.error.code===E.a.MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE&&g.error(e.error):I(e.manifest)}function w(){i=!1,A()}function C(){(i=!m.get().streaming.scheduling.scheduleWhilePaused)&&S()}function D(){s=!1}return e={initialize:function(){T(),_.on(c.a.STREAMS_COMPOSED,D,this),_.on(h.a.PLAYBACK_STARTED,w,this),_.on(h.a.PLAYBACK_PAUSED,C,this),_.on(c.a.INTERNAL_MANIFEST_LOADED,N,this)},setManifest:function(e){I(e)},refreshManifest:b,setConfig:function(e){e&&(e.manifestModel&&(f=e.manifestModel),e.adapter&&(p=e.adapter),e.manifestLoader&&(u=e.manifestLoader),e.errHandler&&(g=e.errHandler),e.settings&&(m=e.settings))},reset:function(){_.off(h.a.PLAYBACK_STARTED,w,this),_.off(h.a.PLAYBACK_PAUSED,C,this),_.off(c.a.STREAMS_COMPOSED,D,this),_.off(c.a.INTERNAL_MANIFEST_LOADED,N,this),T()}},t=Object(d.a)(y).getInstance().getLogger(e),e}ie.__dashjs_factory_name="ManifestUpdater";var ae=f.a.getClassFactory(ie);function oe(){var e,t,n,r,i,a,o,s,u,f,h,p,g,m,_,T,S=this.context,A=Object(l.a)(S).getInstance(),b=Object(F.a)(S).getInstance();function I(){s=[],u=[],f=null,h=null,g=null,p=NaN,n=!1,r=!1,m=i.get().streaming.utcSynchronization.timeBetweenSyncAttempts}function R(){n||r||!g||!g.value||!g.schemeIdUri||isNaN(p)||isNaN(i.get().streaming.utcSynchronization.backgroundAttempts)||(h&&(Date.now()-h)/1e3<30||(s=[],r=!0,function e(t){try{if(t<=0)return void k();var n=Date.now();a[g.schemeIdUri](g.value,(function(r){var i=Date.now(),a=N(n,i,r);s.push(a),e(t-1)}),(function(){k()}))}catch(e){k()}}(isNaN(i.get().streaming.utcSynchronization.backgroundAttempts)?2:i.get().streaming.utcSynchronization.backgroundAttempts)))}function N(e,t,n){return n-(t-(t-e)/2)}function w(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:NaN,t=isNaN(e);t&&i.get().streaming.utcSynchronization.useManifestDateHeaderTimeSource?U():B(t,e)}function C(e){var t=Date.parse(e);return isNaN(t)&&(t=function(e){var t,n,r=/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2})(?::([0-9]*)(\.[0-9]*)?)?(?:([+\-])([0-9]{2})([0-9]{2}))?/.exec(e);return t=Date.UTC(parseInt(r[1],10),parseInt(r[2],10)-1,parseInt(r[3],10),parseInt(r[4],10),parseInt(r[5],10),r[6]&&(parseInt(r[6],10)||0),r[7]&&1e3*parseFloat(r[7])||0),r[9]&&r[10]&&(n=60*parseInt(r[9],10)+parseInt(r[10],10),t+=("+"===r[8]?-1:1)*n*60*1e3),new Date(t).getTime()}(e)),t}function D(e){return Date.parse(e)}function O(e){return Date.parse(e)}function M(e,t,n){n()}function P(e,t,n){var r=C(e);isNaN(r)?n():t(r)}function L(e,t,n,r,i){var a,o,s=!1,u=new XMLHttpRequest,l=i?v.a.HEAD:v.a.GET,c=t.match(/\S+/g);if(t=c.shift(),a=function(){s||(s=!0,c.length?L(e,c.join(" "),n,r,i):r())},o=function(){var t,r;200===u.status&&(t=i?u.getResponseHeader("Date"):u.response,r=e(t),isNaN(r)||(n(r),s=!0))},b.isRelative(t)){var f=T.resolve();f&&(t=b.resolve(t,f.url))}u.open(l,t),u.timeout=5e3,u.onload=o,u.onloadend=a,u.send()}function x(e,t,n){L(O,e,t,n,!0)}function U(){var e=o.getLatestMPDRequestHeaderValueByID("Date"),t=null!==e?new Date(e).getTime():Number.NaN;isNaN(t)?B(!0):B(!1,t-Date.now())}function B(e,r){if(isNaN(p)||isNaN(r)||e||function(e){try{var n,r=G(e),a=isNaN(m)?30:m,o=isNaN(i.get().streaming.utcSynchronization.timeBetweenSyncAttemptsAdjustmentFactor)?2:i.get().streaming.utcSynchronization.timeBetweenSyncAttemptsAdjustmentFactor,s=isNaN(i.get().streaming.utcSynchronization.maximumTimeBetweenSyncAttempts)?600:i.get().streaming.utcSynchronization.maximumTimeBetweenSyncAttempts,u=isNaN(i.get().streaming.utcSynchronization.minimumTimeBetweenSyncAttempts)?2:i.get().streaming.utcSynchronization.minimumTimeBetweenSyncAttempts;r?(n=Math.min(a*o,s),t.debug("Increasing timeBetweenSyncAttempts to ".concat(n))):(n=Math.max(a/o,u),t.debug("Decreasing timeBetweenSyncAttempts to ".concat(n))),m=n}catch(e){}}(r),!e&&!isNaN(r)){f=Date.now(),n=!1;var a=isNaN(p);p=r,a&&R(),t.debug("Completed UTC sync. Setting client - server offset to ".concat(r))}e&&(g=null,n=!1,_.error(new y.a(E.a.TIME_SYNC_FAILED_ERROR_CODE,E.a.TIME_SYNC_FAILED_ERROR_MESSAGE))),A.trigger(c.a.UPDATE_TIME_SYNC_OFFSET,{offset:r}),A.trigger(c.a.TIME_SYNCHRONIZATION_COMPLETED)}function k(){if(s&&0!==s.length){var e=s.reduce((function(e,t){return e+t}),0)/s.length;G(e)?t.debug("Completed background UTC sync. Offset is within allowed threshold and is not adjusted."):(t.debug("Completed background UTC sync. Setting client - server offset to ".concat(e)),p=e,A.trigger(c.a.UPDATE_TIME_SYNC_OFFSET,{offset:p})),r=!1,h=Date.now()}}function G(e){try{if(isNaN(p))return!0;var t=i.get().streaming.utcSynchronization.maximumAllowedDrift&&!isNaN(i.get().streaming.utcSynchronization.maximumAllowedDrift)?i.get().streaming.utcSynchronization.maximumAllowedDrift:100;return e>=p-t&&e<=p+t}catch(e){return!0}}return e={initialize:function(){I(),a={"urn:mpeg:dash:utc:http-head:2014":x,"urn:mpeg:dash:utc:http-xsdate:2014":L.bind(null,C),"urn:mpeg:dash:utc:http-iso:2014":L.bind(null,D),"urn:mpeg:dash:utc:direct:2014":P,"urn:mpeg:dash:utc:http-head:2012":x,"urn:mpeg:dash:utc:http-xsdate:2012":L.bind(null,C),"urn:mpeg:dash:utc:http-iso:2012":L.bind(null,D),"urn:mpeg:dash:utc:direct:2012":P,"urn:mpeg:dash:utc:http-ntp:2014":M,"urn:mpeg:dash:utc:ntp:2014":M,"urn:mpeg:dash:utc:sntp:2014":M}},attemptSync:function(e,t){u=e,n||(!function(e){try{if(!e)return!1;var t=isNaN(m)?30:m;return!(f&&t&&!isNaN(t))||(Date.now()-f)/1e3>=t}catch(e){return!0}}(t)?A.trigger(c.a.TIME_SYNCHRONIZATION_COMPLETED):(n=!0,function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=t||0;if(!u||0===u.length||n>=u.length)return void w();var r=u[n];if(r)if(a.hasOwnProperty(r.schemeIdUri)){var i=(new Date).getTime();a[r.schemeIdUri](r.value,(function(e){var t=(new Date).getTime(),n=N(i,t,e);g=r,w(n)}),(function(){e(n+1)}))}else e(n+1);else w()}()))},setConfig:function(e){e&&(e.dashMetrics&&(o=e.dashMetrics),e.baseURLController&&(T=e.baseURLController),e.errHandler&&(_=e.errHandler),e.settings&&(i=e.settings))},reset:function(){I(),A.off(c.a.ATTEMPT_BACKGROUND_SYNC,R,e)}},t=Object(d.a)(S).getInstance().getLogger(e),A.on(c.a.ATTEMPT_BACKGROUND_SYNC,R,e),e}oe.__dashjs_factory_name="TimeSyncController";var se=f.a.getSingletonFactory(oe);se.HTTP_TIMEOUT_MS=5e3,f.a.updateSingletonFactory(oe.__dashjs_factory_name,se);var ue=se;function le(){var e,t,n,r=this.context;return e={createMediaSource:function(){var e="WebKitMediaSource"in window;return"MediaSource"in window?t=new MediaSource:e&&(t=new WebKitMediaSource),t},attachMediaSource:function(e){var n=window.URL.createObjectURL(t);return e.setSource(n),n},detachMediaSource:function(e){e.setSource(null)},setDuration:function e(r){t&&"open"===t.readyState&&(null===r&&isNaN(r)||t.duration!==r&&(!function(e){for(var t=e.sourceBuffers,n=0;n=0&&e2&&void 0!==arguments[2]&&arguments[2],r=e.eventStream.schemeIdUri,i=e.eventStream.value,a=e.id,o=p;t[r]||(t[r]=[]);var s=t[r].findIndex((function(e){return(!i||e.eventStream.value&&e.eventStream.value===i)&&e.id===a}));return-1===s?(t[r].push(e),o=m):n&&(t[r][s]=e,o=g),o}function A(e){try{if(1==e.eventStream.value){var t,n=e.calculatedPresentationTime;t=4294967295==e.calculatedPresentationTime?NaN:e.calculatedPresentationTime+e.duration,E.trigger(h.a.MANIFEST_VALIDITY_CHANGED,{id:e.id,validUntil:n,newDuration:t,newManifestValidAfter:NaN},{mode:h.a.EVENT_MODE_ON_START})}}catch(e){}}function b(){try{if(!c){c=!0;var e=s.getTime(),t=e-a;t=a>0?Math.max(0,t):0,I(r,t,e),I(n,t,e),a=e,c=!1}}catch(e){c=!1}}function I(e,n,r){try{N(e,(function(i){if(void 0!==i){var a=isNaN(i.duration)?0:i.duration;i.calculatedPresentationTime<=r&&i.calculatedPresentationTime+n+a>=r?w(i,e,h.a.EVENT_MODE_ON_START):(function(e,t,n){try{return e-t>n}catch(e){return!1}}(r,a+n,i.calculatedPresentationTime)||function(e){try{var t=e.eventStream.period.start+e.eventStream.period.duration;return e.calculatedPresentationTime>t}catch(e){return!1}}(i))&&(t.debug("Deleting event ".concat(i.id," as it is expired or invalid")),C(e,i))}}))}catch(e){}}function R(e){try{var t=s.getTime();N(e,(function(n){var r=n.eventStream&&n.eventStream.period&&!isNaN(n.eventStream.period.duration)?n.eventStream.period.duration:NaN,i=n.eventStream&&n.eventStream.period&&!isNaN(n.eventStream.period.start)?n.eventStream.period.start:NaN;if(!isNaN(r)&&!isNaN(i)){var a=n.calculatedPresentationTime;Math.abs(a-t)<300&&w(n,e,h.a.EVENT_MODE_ON_START)}}))}catch(e){}}function N(e,t){try{if(e)for(var n=Object.keys(e),r=0;re.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&function(e){D=D.filter((function(n){var r=e.filter((function(e){return e.id===n.getId()})).length>0||n.getId()===O.getId();return r||(t.debug("Removing stream ".concat(n.getId())),n.reset(!0)),r}))}(e);for(var n=[],r=0,i=e.length;r0&&n.forEach((function(t){t&&e.push(t)})),e}),[]).reduce((function(e,t){var n=f.convertRepresentationToRepresentationInfo(t);return n&&n.fragmentDuration&&!isNaN(n.fragmentDuration)&&e.push(n.fragmentDuration),e}),[]);n=Math.max.apply(Math,ge(i))}return isFinite(n)?n:NaN}catch(e){return NaN}}(n,o);K.computeAndSetLiveDelay(s,o)}var u=function(){var e;if(f.getIsDynamic()){var n=p.getCurrentDVRInfo(),r=n&&n.range?n.range.end:0;e=r-K.getLiveDelay();var i=n?n.range:null;if(i){var a=Ue(!0);isNaN(a)||(t.info("Start time from URI parameters: "+a),e=Math.max(Math.min(e,a),i.start))}}else{var o=$e()[0].getStreamInfo();e=o.start;var s=Ue(!1);isNaN(s)||(t.info("Start time from URI parameters: "+s),e=Math.max(e,s))}return e}(),l=Ae(u),d=null!==l?l:D[0];ie.trigger(c.a.INITIAL_STREAM_SWITCH,{startTime:u}),fe(d,null,u),z||(z=setInterval((function(){!U&&K.getTimeToStreamEnd()<=0&&!K.isSeeking()&&ie.trigger(c.a.PLAYBACK_ENDED,{isLast:Ke().isLast})}),200))}(e),ie.trigger(c.a.STREAMS_COMPOSED),Me()})).catch((function(e){throw e}))}catch(e){w.error(new y.a(E.a.MANIFEST_ERROR_ID_NOSTREAMS_CODE,e.message+"nostreamscomposed",s.getValue())),j=!0,Xe()}}()}function se(){J=!0}function le(e){var t=qe(e.id);return t?t.updateData(e):(t=re(ne).create({manifestModel:s,mediaPlayerModel:q,dashMetrics:p,manifestUpdater:i,adapter:f,timelineConverter:C,capabilities:n,capabilitiesFilter:r,errHandler:w,baseURLController:_,segmentBaseController:v,textController:P,abrController:S,playbackController:K,eventController:I,mediaController:A,protectionController:M,videoModel:H,streamInfo:e,settings:Z}),D.push(t),t.initialize(),Promise.resolve())}function fe(e,n,r){try{if(U||!e||n===e&&e.getIsActive())return;U=!0,ie.trigger(c.a.STREAM_SWITCH_STARTED,{fromStreamInfo:n?n.getStreamInfo():null,toStreamInfo:e.getStreamInfo()});var i=!1;O=e,n&&(i=Te(e,n),n.deactivate(i)),r=isNaN(r)?!i&&n?e.getStreamInfo().start:NaN:r,t.info("Switch to stream ".concat(e.getId(),". Seektime is ").concat(r,", current playback time is ").concat(K.getTime(),". Seamless period switch is set to ").concat(i)),Q=Q.filter((function(e){return e.getId()!==O.getId()})),K.initialize(Ke(),!!n),H.getElement()&&de(r,i)}catch(e){U=!1}}function de(e,n){var r;function i(){if(Y&&"open"===Y.readyState){t.debug("MediaSource is open!"),window.URL.revokeObjectURL(r),Y.removeEventListener("sourceopen",i),Y.removeEventListener("webkitsourceopen",i),xe();var a=p.getCurrentDVRInfo();g.setSeekable(a.range.start,a.range.end),me(e,n)}}function a(){Y.addEventListener("sourceopen",i,!1),Y.addEventListener("webkitsourceopen",i,!1),r=g.attachMediaSource(H),t.debug("MediaSource attached to element. Waiting on open...")}Y?n?me(e,n):(g.detachMediaSource(H),a()):(Y=g.createMediaSource(),a())}function me(e,t){O.activate(Y,t?X:void 0,e).then((function(t){if(t){var n=Object.keys(t);n.length>0&&t[n[0]].getBuffer().changeType&&($=!0),X=t}isNaN(e)||(ie.trigger(c.a.SEEK_TARGET,{time:e},{streamId:O.getId()}),K.seek(e,!1,!0),O.startScheduleControllers()),U=!1,ie.trigger(c.a.PERIOD_SWITCH_COMPLETED,{toStreamInfo:Ke()})}))}function ye(e){var t=K.getTime(),n=e.seekTime,r=Ae(n);r&&r!==O?r&&r!==O&&(Ee(t,n,r),function(e,t){var n=e&&!isNaN(e.seekTime)?e.seekTime:NaN,r=O.getProcessors().map((function(t){return t.prepareOuterPeriodPlaybackSeeking(e)}));Promise.all(r).then((function(){fe(t,O,n)})).catch((function(e){w.error(e)}))}(e,r)):(Ee(t,n),function(e){O.getProcessors().forEach((function(t){return t.prepareInnerPeriodPlaybackSeeking(e)})),je(k.USER_REQUEST_STOP_REASON)}(e)),Ye(B.SEEK_START_REASON)}function Ee(e,t){_e()}function _e(){Q&&Q.length>0&&(Q.forEach((function(e){e.deactivate(!0)})),Q=[])}function ve(e){e.newMediaInfo.streamInfo.id===O.getId()&&(_e(),O.prepareTrackChange(e))}function Te(e,t){try{return Z.get().streaming.buffer.reuseExistingSourceBuffers&&(t.isProtectionCompatible(e)||J)&&($||t.isMediaCodecCompatible(e,t))}catch(e){return!1}}function Se(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(Y&&!e.getPreloaded()){var n=Te(e,t);n&&e.startPreloading(Y,X).then((function(){Q.push(e)}))}}function Ae(e){if(isNaN(e))return null;for(var t=D.length,n=0;nK.getLiveDelay())&&(W=!1,Ye(B.INITIAL_PLAYOUT_START_REASON),K.play())}e&&e.mediaType&&p.addBufferLevel(e.mediaType,new Date,1e3*e.bufferLevel)}function Re(e){e.streamInfo.id===O.getId()&&e.reason&&e.reason.forceReplace&&_e(),qe(e.streamInfo.id).prepareQualityChange(e)}function Ne(){f.getIsDynamic()&&be()}function we(){if(ke()){var e=H.getPlaybackQuality();e&&p.addDroppedFrames(e)}}function Ce(){t.debug("[onPlaybackStarted]"),!W&&V&&(V=!1,Ye(B.RESUME_FROM_PAUSE_START_REASON))}function De(e){t.debug("[onPlaybackPaused]"),e.ended||(V=!0,je(k.USER_REQUEST_STOP_REASON))}function Oe(e){t.debug("Stream with id ".concat(e.streamInfo.id," finished buffering"));var n=e.streamInfo.isLast;Y&&n?(t.info("[onStreamBufferingCompleted] calls signalEndOfStream of mediaSourceController."),g.signalEndOfStream(Y)):Me()}function Me(){if(O&&O.getHasFinishedBuffering())for(var e=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;try{var t=e||(O||null);if(t){var n=t.getStreamInfo();return D.filter((function(e){var t=e.getStreamInfo();return t.start>n.start&&n.id!==t.id}))}}catch(e){return[]}}(O),t=0;t0&&void 0!==arguments[0]?arguments[0]:null,t=e||(O||null);if(!t)return null;var n=t.getStreamInfo(),r=n.start,i=0,a=-1,o=NaN;for(;i0&&(isNaN(o)||l=0)return D[a];return null}();n?(t.debug("StreamController onEnded, found next stream with id ".concat(n.getStreamInfo().id,". Switching from ").concat(O.getStreamInfo().id," to ").concat(n.getStreamInfo().id)),fe(n,O,NaN)):(t.debug("StreamController no next stream found"),O.setIsEndedEventSignaled(!1)),je(n?k.END_OF_PERIOD_STOP_REASON:k.END_OF_CONTENT_STOP_REASON)}e&&e.isLast&&Pe()}function xe(e){var t=e||Ke().manifestInfo.duration;g.setDuration(t)}function Ue(e){var t=T.getURIFragmentData();if(!t||!t.t)return NaN;var n=$e()[0].getStreamInfo().start;t.t=t.t.split(",")[0];var r=-1!==t.t.indexOf("posix:")?"now"===t.t.substring(6)?Date.now()/1e3:parseInt(t.t.substring(6)):NaN;return e&&!isNaN(r)?r-K.getAvailabilityStartTime()/1e3:parseInt(t.t)+n}function Be(e){if(e.error)j=!0,Xe();else{t.info("Manifest updated... updating data system wide.");var n=e.manifest;f.updatePeriods(n);var i=f.getUTCTimingSources();!f.getIsDynamic()||i&&0!==i.length||ie.trigger(h.a.CONFORMANCE_VIOLATION,{level:pe.LEVELS.WARNING,event:pe.EVENTS.NO_UTC_TIMING_ELEMENT});var a=f.getIsDynamic()?i.concat(q.getUTCTimingSources()):i,o=N.isHTTPS(e.manifest.url);a.forEach((function(e){e.value.replace(/.*?:\/\//g,"")===q.getDefaultUtcTimingSource().value.replace(/.*?:\/\//g,"")&&(e.value=e.value.replace(o?new RegExp(/^(http:)?\/\//i):new RegExp(/^(https:)?\/\//i),o?"https://":"http://"),t.debug("Matching default timing source protocol to manifest protocol: ",e.value))})),r.filterUnsupportedFeatures(n).then((function(){_.initialize(n),m.attemptSync(a,f.getIsDynamic())}))}}function ke(){return!!O&&O.getHasVideoTrack()}function Ge(){return!!O&&O.getHasAudioTrack()}function je(e,t){t=t||new Date,Le().forEach((function(n){n.finalisePlayList(t,e)})),p.addPlayList()}function Ye(e){p.createPlaylistMetrics(1e3*K.getTime(),e)}function He(e){if(e.error){var n="";switch(e.error.code){case 1:n="MEDIA_ERR_ABORTED";break;case 2:n="MEDIA_ERR_NETWORK";break;case 3:n="MEDIA_ERR_DECODE",te.counts.mediaErrorDecode+=1;break;case 4:n="MEDIA_ERR_SRC_NOT_SUPPORTED";break;case 5:n="MEDIA_ERR_ENCRYPTED";break;default:n="UNKNOWN"}"MEDIA_ERR_DECODE"===n&&Z.get().errors.recoverAttempts.mediaErrorDecode>=te.counts.mediaErrorDecode?function(){t.warn("A MEDIA_ERR_DECODE occured: Resetting the MediaSource");var e=K.getTime();O.deactivate(!1),t.warn("MediaSource has been resetted. Resuming playback from time ".concat(e)),de(e,!1)}():(G=!0,e.error.message&&(n+=" ("+e.error.message+")"),e.error.msExtendedCode&&(n+=" (0x"+(e.error.msExtendedCode>>>0).toString(16).toUpperCase()+")"),t.fatal("Video Element Error: "+n),e.error&&t.fatal(e.error),w.error(new y.a(e.error.code,n)),Xe())}}function Ke(){return O?O.getStreamInfo():null}function qe(e){for(var t=0,n=D.length;t=10){var e=o.getTime();t===e?R(e,!0):(t=e,a=NaN),r=0}}function A(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=Object.keys(h).some((function(e){return h[e]})),r=!!e&&b();return!t&&n.get().streaming.gaps.jumpGaps&&s.getActiveStreamProcessors().length>0&&(!o.isSeeking()||r)&&!o.isPaused()&&!s.getIsStreamSwitchInProgress()&&!s.getHasMediaOrInitialisationError()}function b(){var e=s.getActiveStream(),t=parseFloat((e.getStartTime().toFixed(5)+e.getDuration()).toFixed(5));return o.getTime()+n.get().streaming.gaps.threshold>=t}function I(e,t){try{if(!e||e.length<=1&&t>0)return NaN;for(var r=NaN,i=0;isNaN(r)&&i0?e.end(i-1):0;t1&&void 0!==arguments[1]&&arguments[1],i=n.get().streaming.gaps.smallGapLimit,l=n.get().streaming.gaps.jumpLargeGaps,c=u.getBufferRange(),d=NaN,h=!1;if(t=I(c,e),!isNaN(t)){var g=c.start(t),m=g-e;m>0&&(m<=i||l)&&(d=g)}var y=o.getTimeToStreamEnd();if(isNaN(d)&&r&&isFinite(y)&&!isNaN(y)&&y0&&a!==d&&d>e&&!f){var E=d-e;if(h){var _=s.getStreamForTime(d),v=_&&!!_.getPreloaded();p.warn("Jumping to end of stream because of gap from ".concat(e," to ").concat(d,". Gap duration: ").concat(E)),o.seek(d,!0,v)}else{var T=o.getIsDynamic(),S=t>0?c.end(t-1):e,A=T?1e3*Math.max(0,E-.1):0;f=window.setTimeout((function(){o.seek(d,!0,!0),p.warn("Jumping gap occuring in period ".concat(s.getActiveStream().getStreamId()," starting at ").concat(S," and ending at ").concat(d,". Jumping by: ").concat(E-A/1e3)),f=null}),A)}a=d}}return e={reset:y,setConfig:function(e){e&&(e.settings&&(n=e.settings),e.playbackController&&(o=e.playbackController),e.streamController&&(s=e.streamController),e.videoModel&&(u=e.videoModel))},initialize:function(){!function(){m.on(c.a.WALLCLOCK_TIME_UPDATED,S,this),m.on(c.a.INITIAL_STREAM_SWITCH,T,this),m.on(c.a.PLAYBACK_SEEKING,E,this),m.on(c.a.BUFFER_REPLACEMENT_STARTED,_,e),m.on(c.a.TRACK_CHANGE_RENDERED,v,e)}()}},p=Object(d.a)(g).getInstance().getLogger(e),y(),e}_e.__dashjs_factory_name="GapController";var ve=f.a.getSingletonFactory(_e);function Te(){var e,t,n,r,i,o,s,u,f=this.context,h=Object(l.a)(f).getInstance();function p(e,t){return e&&n[t]&&n[t][e]?n[t][e].list:[]}function g(e,t){return e&&n[t]&&n[t][e]?n[t][e].current:null}function m(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e&&e.streamInfo){var i=e.type,u=e.streamInfo,l=u.id,f=g(i,l);if(n[l]&&n[l][i]&&!_(e,f)&&(n[l][i].current=e,n[l][i].current&&(i!==a.a.TEXT||i===a.a.TEXT&&e.isFragmented)&&h.trigger(c.a.CURRENT_TRACK_CHANGED,{oldMediaInfo:f,newMediaInfo:e,switchMode:r.get().streaming.trackSwitchMode[i]},{streamId:l}),!t)){var d=T(e);if(!d||!n[l][i].storeLastSettings)return;d.roles&&(d.role=d.roles[0],delete d.roles),d.accessibility&&(d.accessibility=d.accessibility[0]),d.audioChannelConfiguration&&(d.audioChannelConfiguration=d.audioChannelConfiguration[0]),o[i]=d,s.setSavedMediaSettings(i,d)}}}function y(e,t){e&&t&&(i[e]=t)}function E(e){return e?i[e]:null}function _(e,t){if(!e&&!t)return!0;if(!e||!t)return!1;var n=e.id===t.id,r=e.viewpoint===t.viewpoint,i=e.lang===t.lang,a=e.codec===t.codec,o=e.roles.toString()===t.roles.toString(),s=e.accessibility.toString()===t.accessibility.toString(),u=e.audioChannelConfiguration.toString()===t.audioChannelConfiguration.toString();return n&&a&&r&&i&&o&&s&&u}function v(){n={},o={},u=null,i={audio:null,video:null,text:null}}function T(e){var t={lang:e.lang,viewpoint:e.viewpoint,roles:e.roles,accessibility:e.accessibility,audioChannelConfiguration:e.audioChannelConfiguration};return t.lang||t.viewpoint||t.role&&t.role.length>0||t.accessibility&&t.accessibility.length>0||t.audioChannelConfiguration&&t.audioChannelConfiguration.length>0?t:null}function S(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=!e.lang||t.lang.match(e.lang),i=void 0===e.index||null===e.index||t.index===e.index,o=!e.viewpoint||e.viewpoint===t.viewpoint,s=!e.role||!!t.roles.filter((function(t){return t===e.role}))[0],u=!e.accessibility||!!t.accessibility.filter((function(t){return t===e.accessibility}))[0],l=!e.audioChannelConfiguration||!!t.audioChannelConfiguration.filter((function(t){return t===e.audioChannelConfiguration}))[0];return r&&i&&o&&(s||t.type===a.a.AUDIO&&n)&&u&&l}function A(e){var t,n=0,r=[];return e.forEach((function(e){(t=Math.max.apply(Math,e.bitrateList.map((function(e){return e.bandwidth}))))>n?(n=t,r=[e]):t===n&&r.push(e)})),r}function b(e){var t,n=1/0,r=[];return e.forEach((function(e){var i=e.bitrateList.reduce((function(e,t){var n=Math.max(1,t.width*t.height);return e+t.bandwidth/n}),0);(t=i/e.bitrateList.length)n?(n=t,r=[e]):t===n&&r.push(e)})),r}function R(e,n){if(e===a.a.TEXT)return n[0];var i,o=r.get().streaming.selectionModeForInitialTrack;if(u&&"function"==typeof u)i=u(n);else switch(o){case a.a.TRACK_SELECTION_MODE_HIGHEST_SELECTION_PRIORITY:i=function(e){var t=(n=e,r=0,i=[],n.forEach((function(e){isNaN(e.selectionPriority)||(e.selectionPriority>r?(r=e.selectionPriority,i=[e]):e.selectionPriority===r&&i.push(e))})),i);var n,r,i;t.length>1&&(t=A(t));t.length>1&&(t=I(t));return t}(n);break;case a.a.TRACK_SELECTION_MODE_HIGHEST_BITRATE:i=function(e){var t=A(e);t.length>1&&(t=I(t));return t}(n);break;case a.a.TRACK_SELECTION_MODE_FIRST_TRACK:i=N(n);break;case a.a.TRACK_SELECTION_MODE_HIGHEST_EFFICIENCY:i=function(e){var t=b(e);t.length>1&&(t=A(t));return t}(n);break;case a.a.TRACK_SELECTION_MODE_WIDEST_RANGE:i=function(e){var t=I(e);t.length>1&&(t=A(e));return t}(n);break;default:t.warn("Track selection mode ".concat(o," is not supported. Falling back to TRACK_SELECTION_MODE_FIRST_TRACK")),i=N(n)}return i.length>0?i[0]:n[0]}function N(e){return e[0]}return e={setInitialMediaSettingsForType:function(e,t){var n=o[e]||E(e),r=p(e,t.id),i=[];n||(n=s.getSavedMediaSettings(e),y(e,n)),r&&0!==r.length&&(n&&r.forEach((function(t){S(n,t,!!o[e])&&i.push(t)})),0===i.length?m(R(e,r),!0):i.length>1?m(R(e,i,o[e])):m(i[0]))},addTrack:function(e){if(e){var t=e.type;if((r=t)===a.a.AUDIO||r===a.a.VIDEO||r===a.a.TEXT||r===a.a.IMAGE){var r,i=e.streamInfo.id;n[i]||(n[i]={audio:{list:[],storeLastSettings:!0,current:null},video:{list:[],storeLastSettings:!0,current:null},text:{list:[],storeLastSettings:!0,current:null},image:{list:[],storeLastSettings:!0,current:null}});for(var o=n[i][t].list,s=0,u=o.length;s1&&(n.forEach((function(e){r+=e.dvb_weight,i.push(r)})),t=Math.floor(Math.random()*(r-1)),i.every((function(e,n){return a=n,!(t")+2),r=t.resolvedContent.substr(0,i)+""+t.resolvedContent.substr(i)+"",t.resolvedContent=a.xml_str2json(r)}(function(e){var t;for(t=0;t=0;o--){if(t=e.elements[o],n=t.type+"_asArray",t.resolvedContent){if(t.resolvedContent)for(s=0;s0&&r.run(i)}(e),"onActuate"===e.resolveType&&f.trigger(c.a.XLINK_READY,{manifest:i}),"onLoad"===e.resolveType)switch(e.type){case o.a.PERIOD:for(t=0;t=0;a--)(i=e[a]).hasOwnProperty("xlink:href")&&"urn:mpeg:dash:resolve-to-zero:2013"===i["xlink:href"]&&e.splice(a,1);for(a=0;a-1?(p&&(t=p.createMssParser(),p.registerEvents()),t):e.indexOf("MPD")>-1||e.indexOf("Patch")>-1?Object(Qe.a)(u).create({debug:f}):t}(t)),null!==s){i.setMatchers(s.getMatchers()),i.setIron(s.getIron());try{m=s.parse(t)}catch(t){return void d.trigger(c.a.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new y.a(E.a.MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE,E.a.MANIFEST_LOADER_PARSING_FAILURE_ERROR_MESSAGE+"".concat(e))})}m?(m.url=l||e,m.originalUrl||(m.originalUrl=m.url),m.hasOwnProperty(a.a.LOCATION)&&(g=h.parseBaseUrl(m.Location_asArray[0]),n.debug("BaseURI set by Location to: "+g)),m.baseUri=g,m.loadedTime=new Date,i.resolveManifestOnLoad(m),d.trigger(c.a.ORIGINAL_MANIFEST_LOADED,{originalManifest:t})):d.trigger(c.a.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new y.a(E.a.MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE,E.a.MANIFEST_LOADER_PARSING_FAILURE_ERROR_MESSAGE+"".concat(e))})}else d.trigger(c.a.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new y.a(E.a.MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE,E.a.MANIFEST_LOADER_PARSING_FAILURE_ERROR_MESSAGE+"".concat(e))});else d.trigger(c.a.INTERNAL_MANIFEST_LOADED,{manifest:null})},error:function(t,n,r){d.trigger(c.a.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new y.a(E.a.MANIFEST_LOADER_LOADING_FAILURE_ERROR_CODE,E.a.MANIFEST_LOADER_LOADING_FAILURE_ERROR_MESSAGE+"".concat(e,", ").concat(r))})}})},reset:function(){d.off(c.a.XLINK_READY,m,t),p&&p.reset(),i&&(i.reset(),i=null),r&&(r.abort(),r=null)}},n=f.getLogger(t),d.on(c.a.XLINK_READY,m,t),r=Object(Ue.a)(u).create({errHandler:e.errHandler,dashMetrics:e.dashMetrics,mediaPlayerModel:e.mediaPlayerModel,requestModifier:e.requestModifier,urlUtils:h,constants:a.a,dashConstants:o.a,errors:E.a}),i=Xe(u).create({errHandler:g,dashMetrics:e.dashMetrics,mediaPlayerModel:e.mediaPlayerModel,requestModifier:e.requestModifier,settings:e.settings}),s=null,t}$e.__dashjs_factory_name="ManifestLoader";var Ze=f.a.getClassFactory($e);function Je(){var e=this.context,t=Object(l.a)(e).getInstance();return{error:function(e){t.trigger(c.a.ERROR,{error:e})}}}Je.__dashjs_factory_name="ErrorHandler";var et=f.a.getSingletonFactory(Je),tt=n(46);function nt(){var e,t,n,r,i,o,s=this.context;function u(e,r){if(!r||!r.Period_asArray||0===r.Period_asArray.length)return Promise.resolve();var o=[];return r.Period_asArray.forEach((function(r){o.push(function(e,r){return new Promise((function(o){if(e&&e.AdaptationSet_asArray&&0!==e.AdaptationSet_asArray.length){var s=[];e.AdaptationSet_asArray.forEach((function(e){t.getIsTypeOf(e,r)&&s.push(function(e,r){return new Promise((function(o){if(e.Representation_asArray&&0!==e.Representation_asArray.length){var s=[],u=[];e.Representation_asArray.forEach((function(i,o){var l=t.getCodec(e,o,!1),c=function(e,t,n){switch(e){case a.a.VIDEO:return function(e,t){var n=e.width||null,r=e.height||null,i=e.frameRate||null,a=e.bandwidth||null;return{codec:t,width:n,height:r,framerate:i,bitrate:a}}(t,n);case a.a.AUDIO:return function(e,t){var n=e.audioSamplingRate||null,r=e.bandwidth||null;return{codec:t,bitrate:r,samplerate:n}}(t,n);default:return null}}(r,i,l);u.push(c),s.push(n.supportsCodec(c,r))})),Promise.all(s).then((function(t){e.Representation_asArray=e.Representation_asArray.filter((function(e,n){return t[n]||i.debug("[Stream] Codec ".concat(u[n].codec," not supported ")),t[n]})),o()})).catch((function(){o()}))}else o()}))}(e,r))})),Promise.all(s).then((function(){e.AdaptationSet_asArray=e.AdaptationSet_asArray.filter((function(e){var t=e.Representation_asArray&&e.Representation_asArray.length>0;return t||i.warn("AdaptationSet has been removed because of no supported Representation"),t})),o()})).catch((function(){o()}))}else o()}))}(r,e))})),Promise.all(o)}return e={setConfig:function(e){e&&(e.adapter&&(t=e.adapter),e.capabilities&&(n=e.capabilities),e.settings&&(r=e.settings))},filterUnsupportedFeatures:function(e){return new Promise((function(s){var l=[];l.push(u(a.a.VIDEO,e)),l.push(u(a.a.AUDIO,e)),Promise.all(l).then((function(){r.get().streaming.capabilities.filterUnsupportedEssentialProperties&&function(e){if(!e||!e.Period_asArray||0===e.Period_asArray.length)return;e.Period_asArray.forEach((function(e){e.AdaptationSet_asArray=e.AdaptationSet_asArray.filter((function(e){return!e.Representation_asArray||0===e.Representation_asArray.length||(e.Representation_asArray=e.Representation_asArray.filter((function(e){var r=t.getEssentialPropertiesForRepresentation(e);if(r&&r.length>0)for(var a=0;a0)}))}))}(e),function(e){if(!o||0===o.length||!e||!e.Period_asArray||0===e.Period_asArray.length)return;e.Period_asArray.forEach((function(e){e.AdaptationSet_asArray=e.AdaptationSet_asArray.filter((function(e){return!e.Representation_asArray||0===e.Representation_asArray.length||(e.Representation_asArray=e.Representation_asArray.filter((function(e){return!o.some((function(t){return!t(e)}))})),e.Representation_asArray&&e.Representation_asArray.length>0)}))}))}(e),s()})).catch((function(){s()}))}))},setCustomCapabilitiesFilters:function(e){o=e}},i=Object(d.a)(s).getInstance().getLogger(e),e}nt.__dashjs_factory_name="CapabilitiesFilter";var rt=f.a.getSingletonFactory(nt);var it=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.t=null,this.xywh=null,this.track=null,this.id=null,this.s=null,this.r=null};function at(){var e;return{initialize:function(t){if(e=new it,!t)return null;var n=t.indexOf("#");if(-1!==n)for(var r=t.substr(n+1).split("&"),i=0,a=r.length;i0&&r[e.mediaType].ignoreCount--}return t={getMaxIndex:function(e){var t=ht(i).create();if(!e||!e.hasOwnProperty("getMediaType"))return t;!function(){if(!s||!s.hasOwnProperty("getCurrentBufferLevel")||!s.hasOwnProperty("getCurrentBufferState"))throw new Error(a.a.MISSING_CONFIG_ERROR)}();var o=e.getMediaType(),l=s.getCurrentBufferState(o),c=e.getRepresentationInfo().fragmentDuration,d=e.getStreamInfo(),h=d?d.id:null;if(function(e){return!f.get().streaming.lowLatencyEnabled&&r[e].ignoreCount>0}(o)||!c)return t;if(l&&l.state===u.BUFFER_EMPTY)n.debug("["+o+"] Switch to index 0; buffer is empty."),t.quality=0,t.reason="InsufficientBufferRule: Buffer is empty";else{var p=e.getMediaInfo(),g=e.getAbrController(),m=g.getThroughputHistory(),y=s.getCurrentBufferLevel(o),E=m.getAverageThroughput(o),_=m.getAverageLatency(o),v=E*(y/c)*.5;t.quality=g.getQualityForBitrate(p,v,h,_),t.reason="InsufficientBufferRule: being conservative to avoid immediate rebuffering"}return t},reset:function(){p(),o.off(h.a.PLAYBACK_SEEKING,g,t),o.off(c.a.BYTES_APPENDED_END_FRAGMENT,m,t)}},n=Object(d.a)(i).getInstance().getLogger(t),p(),o.on(h.a.PLAYBACK_SEEKING,g,t),o.on(c.a.BYTES_APPENDED_END_FRAGMENT,m,t),t}mt.__dashjs_factory_name="InsufficientBufferRule";var yt=f.a.getClassFactory(mt);function Et(e){e=e||{};var t,n,r,i,a,o=this.context,s=e.mediaPlayerModel,u=e.dashMetrics,l=e.settings;function c(){r={},i={},a=[]}return t={shouldAbandon:function(e){var t=ht(o).create(ht.NO_CHANGE,{name:Et.__dashjs_factory_name});if(!(e&&e.hasOwnProperty("getMediaInfo")&&e.hasOwnProperty("getMediaType")&&e.hasOwnProperty("getCurrentRequest")&&e.hasOwnProperty("getRepresentationInfo")&&e.hasOwnProperty("getAbrController")))return t;var c,f,d=e.getMediaInfo(),h=e.getMediaType(),p=e.getStreamInfo(),g=p?p.id:null,m=e.getCurrentRequest();if(!isNaN(m.index)){c=h,f=m.index,r[c]=r[c]||{},r[c][f]=r[c][f]||{};var y=s.getStableBufferTime();if(u.getCurrentBufferLevel(h)>y)return t;var E=r[h][m.index];if(null===E||null===m.firstByteDate||i.hasOwnProperty(E.id))return t;if(void 0===E.firstByteTime&&(a[h]=[],E.firstByteTime=m.firstByteDate.getTime(),E.segmentDuration=m.duration,E.bytesTotal=m.bytesTotal,E.id=m.index),E.bytesLoaded=m.bytesLoaded,E.elapsedTime=(new Date).getTime()-E.firstByteTime,E.bytesLoaded>0&&E.elapsedTime>0&&function(e,t){a[e]=a[e]||[],a[e].push(t)}(h,Math.round(8*E.bytesLoaded/E.elapsedTime)),a[h].length>=5&&E.elapsedTime>500&&E.bytesLoadedE.bytesTotal*S[I].bitrate/S[v.getQualityFor(h,g)].bitrate&&(t.quality=I,t.reason.throughput=E.measuredBandwidthInKbps,t.reason.fragmentID=E.id,i[E.id]=E,n.debug("["+h+"] frag id",E.id," is asking to abandon and switch to quality to ",I," measured bandwidth was",E.measuredBandwidthInKbps),delete r[h][E.id])}}else E.bytesLoaded===E.bytesTotal&&delete r[h][E.id]}return t},reset:c},n=Object(d.a)(o).getInstance().getLogger(t),c(),t}Et.__dashjs_factory_name="AbandonRequestsRule";var _t=f.a.getClassFactory(Et);function vt(){var e,t,n=this.context;return e={getMaxIndex:function(e){var r=ht(n).create();if(!e||!e.hasOwnProperty("getDroppedFramesHistory"))return r;var i=e.getDroppedFramesHistory(),a=e.getStreamInfo().id;if(i){var o=i.getFrameHistory(a);if(!o||0===o.length)return r;for(var s=0,u=0,l=ht.NO_CHANGE,c=1;c375&&s/u>.15)){l=c-1,t.debug("index: "+l+" Dropped Frames: "+s+" Total Frames: "+u);break}return ht(n).create(l,{droppedFrames:s})}return r}},t=Object(d.a)(n).getInstance().getLogger(e),e}vt.__dashjs_factory_name="DroppedFramesRule";var Tt=f.a.getClassFactory(vt);function St(){var e,t,n=this.context;return e={getMaxIndex:function(e){for(var r=e?e.getSwitchHistory():null,i=r?r.getSwitchRequests():[],a=0,o=0,s=0,u=ht(n).create(),l=0;l=6&&a/o>.075)){u.quality=l>0&&i[l].drops>0?l-1:l,u.reason={index:u.quality,drops:a,noDrops:o,dropSize:s},t.debug("Switch history rule index: "+u.quality+" samples: "+(a+o)+" drops: "+a);break}return u}},t=Object(d.a)(n).getInstance().getLogger(e),e}St.__dashjs_factory_name="SwitchHistoryRule";var At=f.a.getClassFactory(St);function bt(e){e=e||{};var t,n,r,i=this.context,a=e.dashMetrics,o=e.mediaPlayerModel,s=Object(l.a)(i).getInstance();function f(e,t,n){var r=n.reduce((function(e,t,r){return t>n[e]?r:e}),0);if(0===r)return null;var i=Math.max(e,10+2*t.length),a=(n[r]-1)/(i/10-1);return{gp:a,Vp:10/a}}function p(e){var t={},n=e.getMediaInfo().bitrateList.map((function(e){return e.bandwidth})),r=function(e){return e.map((function(e){return Math.log(e)}))}(n);r=r.map((function(e){return e-r[0]+1}));var i=o.getStableBufferTime(),a=f(i,n,r);return a?(t.state=1,t.bitrates=n,t.utilities=r,t.stableBufferTime=i,t.Vp=a.Vp,t.gp=a.gp,t.lastQuality=0,g(t)):t.state=0,t}function g(e){e.placeholderBuffer=0,e.mostAdvancedSegmentStart=NaN,e.lastSegmentWasReplacement=!1,e.lastSegmentStart=NaN,e.lastSegmentDurationS=NaN,e.lastSegmentRequestTimeMs=NaN,e.lastSegmentFinishTimeMs=NaN}function m(e,t){var n=o.getStableBufferTime();if(e.stableBufferTime!==n){var r=f(n,e.bitrates,e.utilities);if(r.Vp!==e.Vp||r.gp!==e.gp){var i=a.getCurrentBufferLevel(t),s=i+e.placeholderBuffer;s-=10,s*=r.Vp/e.Vp,s+=10,e.stableBufferTime=n,e.Vp=r.Vp,e.gp=r.gp,e.placeholderBuffer=Math.max(0,s-i)}}}function y(e,t){return e.Vp*(e.utilities[t]+e.gp)}function E(e,t){for(var n=e.bitrates[t],r=e.utilities[t],i=0,a=t-1;a>=0;--a)if(e.utilities[a]t.mostAdvancedSegmentStart?(t.mostAdvancedSegmentStart=n,t.lastSegmentWasReplacement=!1):t.lastSegmentWasReplacement=!0,t.lastSegmentStart=n,t.lastSegmentDurationS=e.chunk.duration,t.lastQuality=e.chunk.quality,b(t,e.chunk.mediaInfo.type)}}}function A(e){if(e&&e.metric===u.HTTP_REQUEST&&e.value&&e.value.type===v.a.MEDIA_SEGMENT_TYPE&&e.value.trace&&e.value.trace.length){var t=r[e.mediaType];t&&0!==t.state&&(t.lastSegmentRequestTimeMs=e.value.trequest.getTime(),t.lastSegmentFinishTimeMs=e.value._tfinish.getTime(),b(t,e.mediaType))}}function b(e,t){if(!isNaN(e.lastSegmentStart)&&!isNaN(e.lastSegmentRequestTimeMs)&&!isNaN(e.placeholderBuffer)){if(e.placeholderBuffer*=.99,!isNaN(e.lastSegmentFinishTimeMs)){var n=a.getCurrentBufferLevel(t)+.001*(e.lastSegmentFinishTimeMs-e.lastSegmentRequestTimeMs),r=y(e,e.lastQuality),i=Math.max(0,r-n);e.placeholderBuffer=Math.min(i,e.placeholderBuffer)}e.lastSegmentWasReplacement&&!isNaN(e.lastSegmentDurationS)&&(e.placeholderBuffer+=e.lastSegmentDurationS),e.lastSegmentStart=NaN,e.lastSegmentRequestTimeMs=NaN}}function I(e){if(e){var t=r[e.mediaType];t&&0!==t.state&&(t.abrQuality=e.newQuality)}}function R(e){if(e){var t=r[e.mediaType];if(t&&0!==t.state){var n,i=a.getCurrentBufferLevel(e.mediaType);n=t.abrQuality>0?E(t,t.abrQuality):10;var o=Math.max(0,n-i);t.placeholderBuffer=Math.min(t.placeholderBuffer,o)}}}function N(){r={}}return t={getMaxIndex:function(e){var t=ht(i).create();if(!(e&&e.hasOwnProperty("getMediaInfo")&&e.hasOwnProperty("getMediaType")&&e.hasOwnProperty("getScheduleController")&&e.hasOwnProperty("getStreamInfo")&&e.hasOwnProperty("getAbrController")&&e.hasOwnProperty("useBufferOccupancyABR")))return t;var o=e.getMediaInfo(),s=e.getMediaType(),u=e.getScheduleController(),l=e.getStreamInfo(),c=e.getAbrController(),f=c.getThroughputHistory(),d=l?l.id:null,h=l&&l.manifestInfo&&l.manifestInfo.isDynamic,_=e.useBufferOccupancyABR();if(t.reason=t.reason||{},!_)return t;u.setTimeToLoadDelay(0);var v=function(e){var t=e.getMediaType(),n=r[t];return n?0!==n.state&&m(n,t):(n=p(e),r[t]=n),n}(e);if(0===v.state)return t;var T,S=a.getCurrentBufferLevel(s),A=f.getAverageThroughput(s,h),b=f.getSafeAverageThroughput(s,h),I=f.getAverageLatency(s);if(t.reason.state=v.state,t.reason.throughput=A,t.reason.latency=I,isNaN(A))return t;switch(v.state){case 1:T=c.getQualityForBitrate(o,b,d,I),t.quality=T,t.reason.throughput=b,v.placeholderBuffer=Math.max(0,E(v,T)-S),v.lastQuality=T,!isNaN(v.lastSegmentDurationS)&&S>=v.lastSegmentDurationS&&(v.state=2);break;case 2:!function(e,t){var n=Date.now();if(isNaN(e.lastSegmentFinishTimeMs)){if(!isNaN(e.lastCallTimeMs)){var r=.001*(n-e.lastCallTimeMs);e.placeholderBuffer+=Math.max(0,r)}}else{var i=.001*(n-e.lastSegmentFinishTimeMs);e.placeholderBuffer+=Math.max(0,i)}e.lastCallTimeMs=n,e.lastSegmentStart=NaN,e.lastSegmentRequestTimeMs=NaN,e.lastSegmentFinishTimeMs=NaN,m(e,t)}(v,s),T=function(e,t){for(var n=e.bitrates.length,r=NaN,i=NaN,a=0;a=i)&&(i=o,r=a)}return r}(v,S+v.placeholderBuffer);var R=c.getQualityForBitrate(o,b,d,I);T>v.lastQuality&&T>R&&(T=Math.max(R,v.lastQuality));var N=Math.max(0,S+v.placeholderBuffer-y(v,T));N<=v.placeholderBuffer?(v.placeholderBuffer-=N,N=0):(N-=v.placeholderBuffer,v.placeholderBuffer=0,Tt.mostAdvancedSegmentStart?(t.mostAdvancedSegmentStart=a,t.lastSegmentWasReplacement=!1):t.lastSegmentWasReplacement=!0,t.lastSegmentStart=a,t.lastSegmentDurationS=e.chunk.duration,t.lastQuality=e.chunk.quality,E(t,i)}}}function y(e){if(e&&e.metric===u.HTTP_REQUEST&&e.value&&e.value.type===v.a.MEDIA_SEGMENT_TYPE&&e.value.trace&&e.value.trace.length){var t=n[e.mediaType],i=r[e.mediaType];t&&0!==t.state&&(t.lastSegmentRequestTimeMs=e.value.trequest.getTime(),t.lastSegmentFinishTimeMs=e.value._tfinish.getTime(),E(t,i))}}function E(e,t){isNaN(e.lastSegmentStart)||isNaN(e.lastSegmentRequestTimeMs)||(t.segment_request_start_s=.001*e.lastSegmentRequestTimeMs,t.segment_download_finish_s=.001*e.lastSegmentFinishTimeMs,e.lastSegmentStart=NaN,e.lastSegmentRequestTimeMs=NaN)}function _(e){if(e&&e.mediaType){var t=n[e.mediaType];t&&0!==t.state&&(t.abrQuality=e.newQuality)}}function T(e,t){if(e.length!==t.length)return-1;for(var n=0,r=0;r=D.B_target){C.state=2,D.Q=l;for(var O=0;OF&&(U=-1),D.w[B]=D.prev_w[B]+U*(x/(2*c))*((D.Q+l)*(w*g[B]/F));D.w=function(e){for(var t=e.length,n=!1,r=[],i=0;i=a[l+1]){n=!0;break}n||(s=(o+a[t-1]-1)/t);for(var c=0;cC.lastQuality&&g[C.lastQuality+1]<=F&&(t=C.lastQuality+1),g[t]>=F&&(D.Q=2*Math.max(l,D.Q)),u.quality=t,u.reason.throughput=R,u.reason.latency=N,u.reason.bufferLevel=b,C.lastQuality=u.quality;break;default:i.debug("L2A ABR rule invoked in bad state."),u.quality=_.getQualityForBitrate(f,I,E.id,N),u.reason.state=C.state,u.reason.throughput=I,u.reason.latency=N,C.state=1,p(C)}return u},reset:function(){S(),f.off(c.a.PLAYBACK_SEEKING,g,t),f.off(c.a.MEDIA_FRAGMENT_LOADED,m,t),f.off(c.a.METRIC_ADDED,y,t),f.off(c.a.QUALITY_CHANGE_REQUESTED,_,t)}},i=Object(d.a)(o).getInstance().getLogger(t),S(),f.on(c.a.PLAYBACK_SEEKING,g,t),f.on(c.a.MEDIA_FRAGMENT_LOADED,m,t),f.on(c.a.METRIC_ADDED,y,t),f.on(c.a.QUALITY_CHANGE_REQUESTED,_,t),t}Rt.__dashjs_factory_name="L2ARule";var Nt=f.a.getClassFactory(Rt),wt="manual_weight_selection",Ct="random_weight_selection",Dt="dynamic_weight_selection";function Ot(){var e,t,n,r,i,a,o,s,u,l=this.context;function c(){n=null,r=1,i=100,a=0,o=null,s=null,u=Dt}function f(){var e=0;if(n)for(var t=0;te&&(e=r.state.throughput)}return e}function h(e,t,n){var r=e.map((function(e,r){return n[r]*Math.pow(e-t[r],2)})).reduce((function(e,t){return e+t}));return(r<0?-1:1)*Math.sqrt(Math.abs(r))}function p(e,t){return h([e.state.throughput,e.state.latency,e.state.rebuffer,e.state.switch],[t.state.throughput,t.state.latency,t.state.rebuffer,t.state.switch],[1,1,1,1])}function g(e,t,n){for(var r=0;ro)&&(a=u,o=l)}t.push(a)}for(var p=null,g=null,m=0;mp)&&(p=y,g=m)}var _=[];_.push(t[g]),t.splice(g,1);for(;t.length>0;){for(var v=null,T=null,S=0;S1&&(A=f()),c/=i,t.debug("getNextQuality called throughput:".concat(A," latency:").concat(c," bufferSize:").concat(d," currentQualityIndex:").concat(m," playbackRate:").concat(p));var b=S[m],I=b.bitrate*E.getSegmentDuration()/T,R=Math.max(0,I-v);if(v-In?e-n:e+n-t}return t={getMinBuffer:function(){return s},getSegmentDuration:c,getNextBufferWithBitrate:function(e,t,n){return f(t,e*u/n)},getNextBuffer:f,findWeightVector:function(e,t,i,a,c,d){var h=null,p=null,g=null,m=Math.abs(t-r);return e.forEach((function(e){n.forEach((function(n){n[0];var r=n[1],a=n[2],y=(n[3],e.bitrate*u/c),E=f(i,y),_=(0===a?10:1/a)*Math.max(1e-5,y-E),v=(0===r?10:1/r)*e.state.latency,T=l.calculateSingleUseQoe(e.bitrate,_,v,d);(null===h||T>h)&&function(e,t,n){if(e>o+n)return!1;return t>=s}(t,E,m)&&(h=T,p=n,g=e.bitrate)}))})),null===p&&null===g&&(p=-1),r=t,p}},i=[.2,.4,.6,.8,1],a=4,n=function e(t,n,r){if(r===n)return t;for(var a=t.length,o=0;oI?I=N:NA?D-A:0;i.setupPerSegmentQoe(A,I,b),i.logSegmentMetrics(w,O,_,v);var M=Ut(s).create({targetLatency:1.5,bufferMin:.3,segmentDuration:A,qoeEvaluator:i});return n.quality=r.getNextQuality(h,1e3*T,_,m,v,d,M),n.reason={throughput:T,latency:_},n.priority=ht.PRIORITY.STRONG,g.setTimeToLoadDelay(0),n.quality!==d&&console.log("[TgcLearningRule]["+l+"] requesting switch to index: ",n.quality,"Average throughput",Math.round(T),"kbps"),n}catch(e){throw e}},reset:function(){r.reset(),i.reset()}},t=Object(d.a)(s).getInstance().getLogger(n),r=Mt(s).create(),i=Ft(s).create(),n}Bt.__dashjs_factory_name="LoLPRule";var kt=f.a.getClassFactory(Bt);function Gt(e){e=e||{};var t,n,r=this.context,i=e.mediaPlayerModel,o=e.dashMetrics,s=e.settings;function u(e){return e.filter((function(e){return e.quality>ht.NO_CHANGE}))}function l(e){var t,n,i,a,o,s={},u=null;if(0!==e.length){for(s[ht.PRIORITY.STRONG]={quality:ht.NO_CHANGE,reason:null},s[ht.PRIORITY.WEAK]={quality:ht.NO_CHANGE,reason:null},s[ht.PRIORITY.DEFAULT]={quality:ht.NO_CHANGE,reason:null},t=0,n=e.length;ti.quality)&&(s[i.priority].quality=i.quality,s[i.priority].reason=i.reason||null);return s[ht.PRIORITY.WEAK].quality!==ht.NO_CHANGE&&(u=s[ht.PRIORITY.WEAK]),s[ht.PRIORITY.DEFAULT].quality!==ht.NO_CHANGE&&(u=s[ht.PRIORITY.DEFAULT]),s[ht.PRIORITY.STRONG].quality!==ht.NO_CHANGE&&(u=s[ht.PRIORITY.STRONG]),u&&(a=u.quality,o=u.reason),ht(r).create(a,o)}}return{initialize:function(){t=[],n=[],s.get().streaming.abr.useDefaultABRRules&&(s.get().streaming.abr.ABRStrategy===a.a.ABR_STRATEGY_L2A?t.push(Nt(r).create({dashMetrics:o,mediaPlayerModel:i,settings:s})):s.get().streaming.abr.ABRStrategy===a.a.ABR_STRATEGY_LoLP?t.push(kt(r).create({dashMetrics:o})):(t.push(It(r).create({dashMetrics:o,mediaPlayerModel:i,settings:s})),t.push(gt(r).create({dashMetrics:o})),s.get().streaming.abr.additionalAbrRules.insufficientBufferRule&&t.push(yt(r).create({dashMetrics:o,settings:s})),s.get().streaming.abr.additionalAbrRules.switchHistoryRule&&t.push(At(r).create()),s.get().streaming.abr.additionalAbrRules.droppedFramesRule&&t.push(Tt(r).create()),s.get().streaming.abr.additionalAbrRules.abandonRequestsRule&&n.push(_t(r).create({dashMetrics:o,mediaPlayerModel:i,settings:s})))),i.getABRCustomRules().forEach((function(e){"qualitySwitchRules"===e.type&&t.push(e.rule(r).create()),"abandonFragmentRules"===e.type&&n.push(e.rule(r).create())}))},reset:function(){[t,n].forEach((function(e){e&&e.length&&e.forEach((function(e){return e.reset&&e.reset()}))})),t=[],n=[]},getMaxQuality:function(e){return l(u(t.map((function(t){return t.getMaxIndex(e)}))))||ht(r).create()},getMinSwitchRequest:l,shouldAbandonFragment:function(e,t){return l(u(n.map((function(n){return n.shouldAbandon(e,t)}))))||ht(r).create()},getQualitySwitchRules:function(){return t}}}Gt.__dashjs_factory_name="ABRRulesCollection";var jt=f.a.getClassFactory(Gt);jt.QUALITY_SWITCH_RULES="qualitySwitchRules",jt.ABANDON_FRAGMENT_RULES="abandonFragmentRules",f.a.updateSingletonFactory(Gt.__dashjs_factory_name,jt);var Yt=jt;function Ht(){var e,t,n,r,i=this.context,o=Object(_.a)(i).getInstance();function s(e){var t;for(t=0;t-1?e:o.get().streaming.buffer.fastSwitchEnabled?20:12}function l(){return o.get().streaming.lowLatencyEnabled?o.get().streaming.delay.liveDelay||3:o.get().streaming.delay.liveDelay}function c(e,n){f(e,n);var r=new lt.a;r.schemeIdUri=e,r.value=n,t.push(r)}function f(e,n){Object(M.b)(e,"string"),Object(M.b)(n,"string"),t.forEach((function(r,i){r.schemeIdUri===e&&r.value===n&&t.splice(i,1)}))}return e={getABRCustomRules:function(){return r},addABRCustomRule:function(e,t,n){if("string"!=typeof e||e!==Yt.ABANDON_FRAGMENT_RULES&&e!==Yt.QUALITY_SWITCH_RULES||"string"!=typeof t)throw a.a.BAD_ARGUMENT_ERROR;var i=s(t);-1===i?r.push({type:e,rulename:t,rule:n}):(r[i].type=e,r[i].rule=n)},removeABRCustomRule:function(e){if(e){var t=s(e);-1!==t&&r.splice(t,1)}else r=[]},getStableBufferTime:u,getInitialBufferLevel:function(){var e=o.get().streaming.buffer.initialBufferLevel;return isNaN(e)||e<0?0:Math.min(u(),e)},getRetryAttemptsForType:function(e){var t=isNaN(o.get().streaming.retryAttempts.lowLatencyMultiplyFactor)?5:o.get().streaming.retryAttempts.lowLatencyMultiplyFactor;return o.get().streaming.lowLatencyEnabled?o.get().streaming.retryAttempts[e]*t:o.get().streaming.retryAttempts[e]},getRetryIntervalsForType:function(e){var t=isNaN(o.get().streaming.retryIntervals.lowLatencyReductionFactor)?10:o.get().streaming.retryIntervals.lowLatencyReductionFactor;return o.get().streaming.lowLatencyEnabled?o.get().streaming.retryIntervals[e]/t:o.get().streaming.retryIntervals[e]},getLiveDelay:l,getLiveCatchupLatencyThreshold:function(){try{var e=o.get().streaming.liveCatchup.latencyThreshold,t=l();if(null!==e&&!isNaN(e))return Math.max(e,t);var n=o.get().streaming.liveCatchup.minDrift,r=!isNaN(t)&&t?isNaN(n)?l():o.get().streaming.liveCatchup.minDrift+l():NaN;return r&&!isNaN(r)?Math.max(4*r,5):NaN}catch(e){return NaN}},addUTCTimingSource:c,removeUTCTimingSource:f,getUTCTimingSources:function(){return t},clearDefaultUTCTimingSources:function(){t=[]},restoreDefaultUTCTimingSources:function(){var e=o.get().streaming.utcSynchronization.defaultTimingSource;c(e.scheme,e.value)},setXHRWithCredentialsForType:function e(t,r){t?n[t]=!!r:Object.keys(n).forEach((function(t){e(t,r)}))},getXHRWithCredentialsForType:function(e){var t=n[e];return void 0===t?n.default:t},getDefaultUtcTimingSource:function(){return o.get().streaming.utcSynchronization.defaultTimingSource},reset:function(){}},t=[],n={default:!1},r=[],e}Ht.__dashjs_factory_name="MediaPlayerModel";var Kt=f.a.getSingletonFactory(Ht);function qt(e){var t=(e=e||{}).abrController,n=e.switchHistory,r=e.droppedFramesHistory,i=e.currentRequest,a=e.useBufferOccupancyABR,o=e.useL2AABR,s=e.useLoLPABR,u=e.streamProcessor?e.streamProcessor.getScheduleController():null,l=e.streamProcessor?e.streamProcessor.getRepresentationInfo():null,c=e.videoModel?e.videoModel:null;function f(){return l?l.mediaInfo:null}return{getMediaType:function(){var e=f();return e?e.type:null},getMediaInfo:f,getDroppedFramesHistory:function(){return r},getCurrentRequest:function(){return i},getSwitchHistory:function(){return n},getStreamInfo:function(){var e=f();return e?e.streamInfo:null},getScheduleController:function(){return u},getAbrController:function(){return t},getRepresentationInfo:function(){return l},useBufferOccupancyABR:function(){return a},useL2AABR:function(){return o},useLoLPABR:function(){return s},getVideoModel:function(){return c}}}qt.__dashjs_factory_name="RulesContext";var Vt=f.a.getClassFactory(qt);function Wt(){var e=[],t=[];return{push:function(n){n.newValue===ht.NO_CHANGE&&(n.newValue=n.oldValue),e[n.oldValue]||(e[n.oldValue]={noDrops:0,drops:0,dropSize:0});var r=n.newValue-n.oldValue,i=r<0?1:0,a=i?-r:0,o=i?0:1;if(e[n.oldValue].drops+=i,e[n.oldValue].dropSize+=a,e[n.oldValue].noDrops+=o,t.push({idx:n.oldValue,noDrop:o,drop:i,dropSize:a}),t.length>8){var s=t.shift();e[s.idx].drops-=s.drop,e[s.idx].dropSize-=s.dropSize,e[s.idx].noDrops-=s.noDrop}},getSwitchRequests:function(){return e},reset:function(){e=[],t=[]}}}Wt.__dashjs_factory_name="SwitchRequestHistory";var zt=f.a.getClassFactory(Wt);function Xt(){var e={},t={},n={};return{push:function(r,i,a){if(i){e[r]||(e[r]=[],t[r]=0,n[r]=0);var o=a&&a.droppedVideoFrames?a.droppedVideoFrames:0,s=a&&a.totalVideoFrames?a.totalVideoFrames:0,u=o-t;t[r]=o;var l=s-n;n[r]=s;var c=e[r];isNaN(i)||(c[i]?(c[i].droppedVideoFrames+=u,c[i].totalVideoFrames+=l):c[i]={droppedVideoFrames:u,totalVideoFrames:l})}},getFrameHistory:function(t){return e[t]},clearForStream:function(r){try{delete e[r],delete t[r],delete n[r]}catch(e){}},reset:function(){e={},t={},n={}}}}Xt.__dashjs_factory_name="DroppedFramesHistory";var Qt=f.a.getClassFactory(Xt);function $t(e){var t,n,r,i,o,s=(e=e||{}).settings;function u(e,t,n,r){var i=Math.pow(.5,n/r.fast);e.fastEstimate=(1-i)*t+i*e.fastEstimate;var a=Math.pow(.5,n/r.slow);e.slowEstimate=(1-a)*t+a*e.slowEstimate,e.totalWeight+=n}function l(e,u,l){return s.get().streaming.abr.movingAverageMethod!==a.a.MOVING_AVERAGE_SLIDING_WINDOW?function(e,t){var n=e?o.throughputHalfLife:o.latencyHalfLife,a=e?r[t]:i[t];if(!a||a.totalWeight<=0)return NaN;var s=a.fastEstimate/(1-Math.pow(.5,a.totalWeight/n.fast)),u=a.slowEstimate/(1-Math.pow(.5,a.totalWeight/n.slow));return e?Math.min(s,u):Math.max(s,u)}(e,u):function(e,r,i){var a=function(e,r,i){var a,o;if(e?(a=t[r],o=i?3:4):(a=n[r],o=4),a){if(o>=a.length)o=a.length;else if(e)for(var s=1;s=1.3||u<=1/1.3)&&(o+=1)===a.length)break}}else o=0;return o}(e,r,i),o=(e?t:n)[r];if(0===a||!o||0===o.length)return NaN;return(o=o.slice(-a)).reduce((function(e,t){return e+t}))/o.length}(e,u,l)}function c(e,t){return l(!0,e,t)}function f(e){t[e]=t[e]||[],n[e]=n[e]||[],r[e]=r[e]||{fastEstimate:0,slowEstimate:0,totalWeight:0},i[e]=i[e]||{fastEstimate:0,slowEstimate:0,totalWeight:0}}function d(){t={},n={},r={},i={}}var h={push:function(e,l,c){if(l.trace&&l.trace.length){var d=l.tresponse.getTime()-l.trequest.getTime()||1,h=l._tfinish.getTime()-l.tresponse.getTime()||1,p=l.trace.reduce((function(e,t){return e+t.b[0]}),0),g=0,m=0;if(s.get().streaming.lowLatencyEnabled){if(s.get().streaming.abr.fetchThroughputCalculationMode===a.a.ABR_FETCH_THROUGHPUT_CALCULATION_MOOF_PARSING){var y=l.trace.reduce((function(e,t){return e+t.t}),0);m=Math.round(y/l.trace.length)}0===m&&(g=l.trace.reduce((function(e,t){return e+t.d}),0))}else g=c?h:d+h;if(0!==g&&(m=Math.round(8*p/g)),f(e),function(e,t,n){return e===a.a.VIDEO?n0&&!t[e].hasCachedEntries)return;t[e].hasCachedEntries=!0}else t[e]&&t[e].hasCachedEntries&&function(e){delete t[e],delete n[e],delete r[e],delete i[e],f(e)}(e);t[e].push(m),t[e].length>20&&t[e].shift(),n[e].push(d),n[e].length>20&&n[e].shift(),u(r[e],m,.001*h,o.throughputHalfLife),u(i[e],d,1,o.latencyHalfLife)}},getAverageThroughput:c,getSafeAverageThroughput:function(e,t){var n=c(e,t);return isNaN(n)||(n*=s.get().streaming.abr.bandwidthSafetyFactor),n},getAverageLatency:function(e){return l(!1,e)},reset:d};return o={throughputHalfLife:{fast:3,slow:8},latencyHalfLife:{fast:1,slow:2}},d(),h}$t.__dashjs_factory_name="ThroughputHistory";var Zt=f.a.getClassFactory($t);function Jt(){var e,t,n,r,i,o,s,f,p,g,y,E,_,T,S,A,b,I,R,N,w,C,D,O,P,L=this.context,F=Object(d.a)(L).getInstance(),x=Object(l.a)(L).getInstance();function U(){i={},o={},f={},s={},I={},w={},C={},D={},void 0===g&&(g=!1),R&&R.reset(),b=void 0,R=void 0,N=void 0,clearTimeout(p),p=null}function B(t){var i=t.request.mediaType,a=t.streamId;if(i&&a&&s[a]&&P.get().streaming.abr.autoSwitchBitrate[i]){var o=s[a][i];if(o){var l=Vt(L).create({abrController:e,streamProcessor:o,currentRequest:t.request,useBufferOccupancyABR:w[i],useL2AABR:C[i],useLoLPABR:D[i],videoModel:T}),c=n.shouldAbandonFragment(l,a);if(c.quality>ht.NO_CHANGE){var d=o.getFragmentModel();d.getRequests({state:m.a.FRAGMENT_MODEL_LOADING,index:t.request.index})[0]&&(d.abortRequests(),f[a][i].state=u.ABANDON_LOAD,I[a][i].reset(),I[a][i].push({oldValue:H(i,a),newValue:c.quality,confidence:1,reason:c.reason}),K(i,r.getActiveStreamInfo(),c.quality,c.reason),clearTimeout(p),p=setTimeout((function(){f[a][i].state=u.ALLOW_LOAD,p=null}),P.get().streaming.abandonLoadTimeout))}}}}function k(e){e.mediaType===a.a.VIDEO&&(void 0!==b&&R.push(e.streamId,b,T.getPlaybackQuality()),b=e.newQuality)}function G(e){var n,r;e.metric!==u.HTTP_REQUEST||!e.value||e.value.type!==v.a.MEDIA_SEGMENT_TYPE||e.mediaType!==a.a.AUDIO&&e.mediaType!==a.a.VIDEO||N.push(e.mediaType,e.value,P.get().streaming.abr.useDeadTimeLatency),e.metric!==u.BUFFER_LEVEL||e.mediaType!==a.a.AUDIO&&e.mediaType!==a.a.VIDEO||(n=e.mediaType,r=.001*e.value.level,P.get().streaming.abr.ABRStrategy===a.a.ABR_STRATEGY_DYNAMIC&&function(e,n){var r=S.getStableBufferTime(),i=r,a=.5*r,o=w[e],s=n>(o?a:i);w[e]=s,s!==o&&(s?t.info("["+e+"] switching from throughput to buffer occupancy ABR rule (buffer: "+n.toFixed(3)+")."):t.info("["+e+"] switching from buffer occupancy to throughput ABR rule (buffer: "+n.toFixed(3)+")."))}(n,r))}function j(e,t){try{return i[t]=i[t]||{},i[t].hasOwnProperty(e)||(i[t][e]=0),function(e,t,n){if(t!==a.a.VIDEO||!P.get().streaming.abr.limitBitrateByPortal||!s[n]||!s[n][t])return e;g||z();var r=s[n][t].getStreamInfo(),i=_.getAdaptationForType(r.index,t,r).Representation,o=e;if(y>0&&E>0){for(;o>0&&i[o]&&y=1||a<0)return e;return Math.min(e,Math.round(r*a))}(function(e,t){var n=i[t][e],r=n;if(!s[t]||!s[t][e])return r;var a=Y(e,t);void 0!==a&&(r=Math.max(n,a));var o=function(e,t){try{var n=P.get().streaming.abr.maxBitrate[e];return n>-1?V(s[t][e].getMediaInfo(),n,t):void 0}catch(e){return}}(e,t);void 0!==o&&(r=Math.min(r,o));return r}(e,t),e,t),e,t)}catch(e){return}}function Y(e,t){try{return function(e,t){try{var n=P.get().streaming.abr.minBitrate[e];if(n>-1){var r=s[t][e].getMediaInfo(),i=W(r),a=V(r,n,t);return i[a]&&a1&&void 0!==arguments[1]?arguments[1]:null;try{if(t||(t=r.getActiveStreamInfo().id),e&&s[t]&&s[t][e])if(t)return o[t]=o[t]||{},o[t].hasOwnProperty(e)||(o[t][e]=0),o[t][e];return 0}catch(e){return 0}}function K(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;if(t&&t.id&&e){var i=t.id,a=H(e,i);Object(M.a)(n);var o=j(e,i);n!==a&&n>=0&&n<=o&&q(e,a,n,o,r,i)}}function q(e,n,r,i,a,u){if(e&&s[u]&&s[u][e]){var l=s[u][e].getStreamInfo(),f=O.getCurrentBufferLevel(e);t.info("Stream ID: "+u+" ["+e+"] switch from "+n+" to "+r+"/"+i+" (buffer: "+f+") "+(a?JSON.stringify(a):".")),o[u]=o[u]||{},o[u][e]=r;var d=function(e,t,n){if(t&&s&&s[e]&&s[e][t]){var r=W(s[e][t].getMediaInfo());return r[n]?r[n]:null}return null}(u,e,r);x.trigger(c.a.QUALITY_CHANGE_REQUESTED,{oldQuality:n,newQuality:r,reason:a,streamInfo:l,bitrateInfo:d,maxIdx:i,mediaType:e},{streamId:l.id,mediaType:e});var h=N.getAverageThroughput(e);isNaN(h)||A.setSavedBitrateSettings(e,h)}}function V(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=e&&e.type?s[n][e.type].getRepresentationInfo():null;if(P.get().streaming.abr.useDeadTimeLatency&&r&&i&&i.fragmentDuration){r/=1e3;var a=i.fragmentDuration;if(r>a)return 0;var o=r/a;t*=1-o}for(var u=W(e),l=u.length-1;l>=0;l--){var c=u[l];if(1e3*t>=c.bitrate)return l}return 0}function W(e){var t=[];if(!e||!e.bitrateList)return t;for(var n,r=e.bitrateList,i=e.type,a=0,o=r.length;a1&&void 0!==arguments[1]?arguments[1]:null;if(t||(t=r.getActiveStreamInfo().id),e&&s&&s[t]&&s[t][e]){var n=j(e,t),i=W(s[t][e].getMediaInfo());return i[n]?i[n]:null}return null},getMinAllowedIndexFor:Y,getMaxAllowedIndexFor:j,getInitialBitrateFor:function(e,t){if(function(){if(!A||!A.hasOwnProperty("getSavedBitrateSettings"))throw new Error(a.a.MISSING_CONFIG_ERROR)}(),e===a.a.TEXT)return NaN;var n=A.getSavedBitrateSettings(e),r=P.get().streaming.abr.initialBitrate[e],i=P.get().streaming.abr.initialRepresentationRatio[e];if(-1===r)if(i>-1){var o=s[t][e].getStreamInfo(),u=_.getAdaptationForType(o.index,e,o).Representation;if(Array.isArray(u))r=u[Math.max(Math.round(u.length*i)-1,0)].bandwidth/1e3;else r=0}else r=isNaN(n)?e===a.a.VIDEO?1e3:100:n;return r},getQualityFor:H,getAbandonmentStateFor:function(e,t){return f[e]&&f[e][t]?f[e][t].state:null},setPlaybackQuality:K,checkPlaybackQuality:function(t,r){try{if(!(t&&s&&s[r]&&s[r][t]))return!1;if(R){var i=T.getPlaybackQuality();i&&R.push(r,b,i)}if(!P.get().streaming.abr.autoSwitchBitrate[t])return!1;var a=H(t,r),o=Vt(L).create({abrController:e,switchHistory:I[r][t],droppedFramesHistory:R,streamProcessor:s[r][t],currentValue:a,useBufferOccupancyABR:w[t],useL2AABR:C[t],useLoLPABR:D[t],videoModel:T}),l=Y(t,r),c=j(t,r),d=n.getMaxQuality(o),h=d.quality;return void 0!==l&&(h>ht.NO_CHANGE?h:a)c&&(h=c),I[r][t].push({oldValue:a,newValue:h}),h>ht.NO_CHANGE&&h!==a&&(f[r][t].state===u.ALLOW_LOAD||h>a)&&(q(t,a,h,c,d.reason,r),!0)}catch(e){return!1}},setElementSize:z,setWindowResizeEventCalled:function(e){g=e},registerStreamType:function(e,t){var n=t.getStreamInfo().id;s[n]||(s[n]={}),I[n]||(I[n]={}),f[n]||(f[n]={}),I[n][e]=zt(L).create(),s[n][e]=t,f[n][e]={},f[n][e].state=u.ALLOW_LOAD,function(e){var t=P.get().streaming.abr.ABRStrategy;t===a.a.ABR_STRATEGY_L2A?(w[e]=!1,D[e]=!1,C[e]=!0):t===a.a.ABR_STRATEGY_LoLP?(w[e]=!1,D[e]=!0,C[e]=!1):t===a.a.ABR_STRATEGY_BOLA?(w[e]=!0,D[e]=!1,C[e]=!1):t===a.a.ABR_STRATEGY_THROUGHPUT?(w[e]=!1,D[e]=!1,C[e]=!1):t===a.a.ABR_STRATEGY_DYNAMIC&&(w[e]=!(!w||!w[e])&&w[e],D[e]=!1,C[e]=!1)}(e),e===a.a.VIDEO&&z()},unRegisterStreamType:function(e,t){try{s[e]&&s[e][t]&&delete s[e][t],I[e]&&I[e][t]&&delete I[e][t],f[e]&&f[e][t]&&delete f[e][t]}catch(e){}},setConfig:function(e){e&&(e.streamController&&(r=e.streamController),e.domStorage&&(A=e.domStorage),e.mediaPlayerModel&&(S=e.mediaPlayerModel),e.dashMetrics&&(O=e.dashMetrics),e.adapter&&(_=e.adapter),e.videoModel&&(T=e.videoModel),e.settings&&(P=e.settings))},reset:function(){U(),x.off(c.a.LOADING_PROGRESS,B,e),x.off(h.a.QUALITY_CHANGE_RENDERED,k,e),x.off(h.a.METRIC_ADDED,G,e),n&&n.reset()}},t=F.getLogger(e),U(),e}Jt.__dashjs_factory_name="AbrController";var en=f.a.getSingletonFactory(Jt);en.QUALITY_DEFAULT=0,f.a.updateSingletonFactory(Jt.__dashjs_factory_name,en);var tn=en,nn=n(41),rn=new Map([[a.a.VIDEO_ELEMENT_READY_STATES.HAVE_METADATA,"loadedmetadata"],[a.a.VIDEO_ELEMENT_READY_STATES.HAVE_CURRENT_DATA,"loadeddata"],[a.a.VIDEO_ELEMENT_READY_STATES.HAVE_FUTURE_DATA,"canplay"],[a.a.VIDEO_ELEMENT_READY_STATES.HAVE_ENOUGH_DATA,"canplaythrough"]]);function an(){var e,t,n,r,i=this.context,o=Object(l.a)(i).getInstance(),s=[];function u(){n&&(n.playbackRate=1,n.removeEventListener("canplay",u))}function f(){return s.length>0}function h(){if(n&&f()&&0===n.playbackRate){var e=document.createEvent("Event");e.initEvent("waiting",!0,!1),n.dispatchEvent(e)}}function p(e,t){n&&n.addEventListener(e,t)}function g(e,t){n&&n.removeEventListener(e,t)}function m(){return n?n.readyState:NaN}function y(){return n?n.buffered:null}function E(e,t,r,i,a){if(n)for(var o=0;o=e)t();else{!function(e,t){p(e,(function n(){g(e,n),t(e)}))}(rn.get(e),t)}}(a.a.VIDEO_ELEMENT_READY_STATES.HAVE_METADATA,(function(){if(n){if(n.currentTime===e)return;try{e=t?function(e){var t=y(),n=e,r=9999999999;if(t)for(var i=0;i=a&&e<=o)return e;s1&&void 0!==arguments[1]&&arguments[1];n&&(!t&&n.readyState<=2&&e>0?n.addEventListener("canplay",u):n.playbackRate=e)},getPlayedRanges:function(){return n?n.played:null},getEnded:function(){return n?n.ended:null},setStallState:function(e,t){!function(e,t){t?function(e){if(null===e||!n||n.seeking||-1!==s.indexOf(e))return;s.push(e)}(e):function(e){var t=s.indexOf(e);if(null===e)return;-1!==t&&s.splice(t,1)}(e)}(e,t)},getElement:function(){return n},setElement:function(e){if(!(null==e||e&&/^(VIDEO|AUDIO)$/i.test(e.nodeName)))throw"element is not video or audio DOM type!";(n=e)&&(n.preload="auto")},setSource:function(e){n&&(e?n.src=e:(n.removeAttribute("src"),n.load()))},getSource:function(){return n?n.src:null},getTTMLRenderingDiv:function(){return r},setTTMLRenderingDiv:function(e){(r=e).style.position="absolute",r.style.display="flex",r.style.overflow="hidden",r.style.pointerEvents="none",r.style.top=0,r.style.left=0},getPlaybackQuality:function(){if(!n)return null;var e="webkitDroppedFrameCount"in n&&"webkitDecodedFrameCount"in n,t=null;return"getVideoPlaybackQuality"in n?t=n.getVideoPlaybackQuality():e&&(t={droppedVideoFrames:n.webkitDroppedFrameCount,totalVideoFrames:n.webkitDroppedFrameCount+n.webkitDecodedFrameCount,creationTime:new Date}),t},addEventListener:p,removeEventListener:g,getReadyState:m,getBufferRange:y,getClientWidth:function(){return n?n.clientWidth:NaN},getClientHeight:function(){return n?n.clientHeight:NaN},getTextTracks:function(){return n?n.textTracks:[]},getTextTrack:E,addTextTrack:function(e,t,r,i,a){if(!n)return null;var o=E(e,t,r,i,a);return o||((o=n.addTextTrack(e,t,r)).isEmbedded=a,o.isTTML=i),o},appendChild:function(e){n&&(n.appendChild(e),void 0!==e.isTTML&&(n.textTracks[n.textTracks.length-1].isTTML=e.isTTML,n.textTracks[n.textTracks.length-1].isEmbedded=e.isEmbedded))},removeChild:function(e){n&&n.removeChild(e)},getVideoWidth:function(){return n?n.videoWidth:NaN},getVideoHeight:function(){return n?n.videoHeight:NaN},getVideoRelativeOffsetTop:function(){var e=n.parentNode.host||n.parentNode;return e?n.getBoundingClientRect().top-e.getBoundingClientRect().top:NaN},getVideoRelativeOffsetLeft:function(){var e=n.parentNode.host||n.parentNode;return e?n.getBoundingClientRect().left-e.getBoundingClientRect().left:NaN},reset:function(){o.off(c.a.PLAYBACK_PLAYING,h,this)}},t=Object(d.a)(i).getInstance().getLogger(e),e}an.__dashjs_factory_name="VideoModel";var on=f.a.getSingletonFactory(an),sn=n(36),un=[{oldKey:"dashjs_vbitrate",newKey:"dashjs_video_bitrate"},{oldKey:"dashjs_abitrate",newKey:"dashjs_audio_bitrate"},{oldKey:"dashjs_vsettings",newKey:"dashjs_video_settings"},{oldKey:"dashjs_asettings",newKey:"dashjs_audio_settings"}];function ln(e){e=e||{};var t,n,r,i=this.context,o=e.settings;function s(e){if(void 0!==r)return r;r=!1;var t;try{"undefined"!=typeof window&&(t=window[e])}catch(e){return n.warn("DOMStorage access denied: "+e.message),r}if(!t||"localStorage"!==e&&"sessionStorage"!==e)return r;try{t.setItem("1","1"),t.removeItem("1"),r=!0}catch(e){n.warn("DOMStorage is supported, but cannot be used: "+e.message)}return r}function u(){return 6e5*Math.round((new Date).getTime()/6e5)}function l(e,t){return s(e)&&o.get().streaming[t+"CachingInfo"].enabled}function c(){if(!o)throw new Error(a.a.MISSING_CONFIG_ERROR)}return t={getSavedBitrateSettings:function(e){var t=NaN;if(c(),l("localStorage","lastBitrate")){var r="dashjs_?_bitrate".replace(/\?/,e);try{var i=JSON.parse(localStorage.getItem(r))||{},a=(new Date).getTime()-parseInt(i.timestamp,10)>=o.get().streaming.lastBitrateCachingInfo.ttl||!1,s=parseFloat(i.bitrate);isNaN(s)||a?a&&localStorage.removeItem(r):(t=s,n.debug("Last saved bitrate for "+e+" was "+s))}catch(e){return null}}return t},setSavedBitrateSettings:function(e,t){if(l("localStorage","lastBitrate")&&t){var r="dashjs_?_bitrate".replace(/\?/,e);try{localStorage.setItem(r,JSON.stringify({bitrate:t.toFixed(3),timestamp:u()}))}catch(e){n.error(e.message)}}},getSavedMediaSettings:function(e){var t=null;if(c(),l("localStorage","lastMediaSettings")){var n="dashjs_?_settings".replace(/\?/,e);try{var r=JSON.parse(localStorage.getItem(n))||{},i=(new Date).getTime()-parseInt(r.timestamp,10)>=o.get().streaming.lastMediaSettingsCachingInfo.ttl||!1;t=r.settings,i&&(localStorage.removeItem(n),t=null)}catch(e){return null}}return t},setSavedMediaSettings:function(e,t){if(l("localStorage","lastMediaSettings")){var r="dashjs_?_settings".replace(/\?/,e);try{localStorage.setItem(r,JSON.stringify({settings:t,timestamp:u()}))}catch(e){n.error(e.message)}}}},n=Object(d.a)(i).getInstance().getLogger(t),s("localStorage")&&un.forEach((function(e){var t=localStorage.getItem(e.oldKey);if(t){localStorage.removeItem(e.oldKey);try{localStorage.setItem(e.newKey,t)}catch(e){n.error(e.message)}}})),t}ln.__dashjs_factory_name="DOMStorage";var cn=f.a.getSingletonFactory(ln),fn=n(51),dn=n(27);function hn(){var e,t,n,r,i,a,o,s,u,l,c,f,d,h=this.context;function p(e,t,n){n({segments:e,representation:t,error:e?void 0:new y.a(u.SEGMENT_BASE_LOADER_ERROR_CODE,u.SEGMENT_BASE_LOADER_ERROR_MESSAGE)})}function g(e){if(e.url){var t=new Be.a;return t.setInfo(e),t}}return e={setConfig:function(s){s.baseURLController&&(d=s.baseURLController),s.dashMetrics&&(a=s.dashMetrics),s.mediaPlayerModel&&(o=s.mediaPlayerModel),s.errHandler&&(n=s.errHandler),s.boxParser&&(r=s.boxParser),s.debug&&(t=s.debug.getLogger(e)),s.requestModifier&&(i=s.requestModifier),s.errors&&(u=s.errors),s.urlUtils&&(f=s.urlUtils),s.constants&&(l=s.constants),s.dashConstants&&(c=s.dashConstants)},initialize:function(){s=Object(Ue.a)(h).create({errHandler:n,dashMetrics:a,mediaPlayerModel:o,requestModifier:i,boxParser:r,errors:u,urlUtils:f,constants:l,dashConstants:c})},loadInitialization:function(e,n){return new Promise((function(i){!function e(n,i,a,o){var u=null,l=n?d.resolve(n.path):null,c=o||{init:!0,url:l?l.url:void 0,range:{start:0,end:1500},searching:!1,bytesLoaded:0,bytesToLoad:1500,mediaType:i};t.debug("Start searching for initialization.");var f=g(c),h=function(t){if(c.bytesLoaded=c.range.end,!(u=r.findInitRange(t)))return c.range.end=c.bytesLoaded+c.bytesToLoad,e(n,i,a,c);n.range=u,a(n)};s.load({request:f,success:h,error:function(){a(n)}}),t.debug("Perform init search: "+c.url)}(e,n,i)}))},loadSegments:function(e,n,i){return new Promise((function(a){!function e(n,i,a,o,u,l){if(a&&(void 0===a.start||void 0===a.end)){var c=a?a.toString().split("-"):null;a=c?{start:parseFloat(c[0]),end:parseFloat(c[1])}:null}u=u||p;var f=null,h=null,m=!!a,y=n?d.resolve(n.path):null,E={init:!1,url:y?y.url:void 0,range:m?a:{start:0,end:1500},searching:!m,bytesLoaded:l?l.bytesLoaded:0,bytesToLoad:1500,mediaType:i},_=g(E),v=function(a){var s=E.bytesToLoad,l=a.byteLength;if(E.bytesLoaded=E.range.end-E.range.start,f=r.parse(a),(h=f.getBox("sidx"))&&h.isComplete){var c,d,p=h.references;if(null!=p&&p.length>0&&(c=1===p[0].reference_type),c){var g,m,y,_;t.debug("Initiate multiple SIDX load."),E.range.end=E.range.start+h.size;var v=[],T=0,S=(h.offset||E.range.start)+h.size,A=function(e){e?(v=v.concat(e),++T>=m&&(v.sort((function(e,t){return e.startTime-t.startTime<0?-1:0})),u(v,n,o))):u(null,n,o)};for(g=0,m=p.length;g16777215?(n.getUint32(r)!==e.tag&&(i=!1),a=4):e.tag>65535?(256*n.getUint16(r)+n.getUint8(r+2)!==e.tag&&(i=!1),a=3):e.tag>255?(n.getUint16(r)!==e.tag&&(i=!1),a=2):(n.getUint8(r)!==e.tag&&(i=!1),a=1),!i&&e.required&&!t)throw new Error("required tag not found");return i&&(r+=a),i}function a(e){var t=1,i=128,a=-1,o=0,s=n.getUint8(r),u=0;for(u=0;u<8;u+=1){if((s&i)===i){o=void 0===e?s&~i:s,a=u;break}i>>=1}for(u=0;u1&&a){var l=d(a,n);if(i[a.id]&&i[a.id][n])for(var f=0,h=u.length;f0))return u;s=r[0].mpd.manifest}var l=E(e,o),c=t.getAdaptationsForType(s,e?e.index:null,n);return u=f(s,l,e,c,n),n===a.TEXT&&(c=t.getAdaptationsForType(s,e?e.index:null,a.VIDEO),u=u.concat(f(s,l,e,c,n,!0))),u}function h(e){var n=p(e);return t.getRegularPeriods(n)}function p(e){var n=m(e);return t.getMpd(n)}function g(){r=[],i={}}function m(e){return e||(r.length>0?r[0].mpd.manifest:null)}function y(e){try{var n=E(e.streamInfo,r),i=t.getAdaptationsForPeriod(n);return e&&e.streamInfo&&void 0!==e.streamInfo.id&&i?i[e.index]:null}catch(e){return null}}function E(e,t){for(var n=t.length,r=0;r=0&&void 0!==s&&(n=t?"cea-608:"+t:"cea-608",r.embeddedCaptions=!0),n})),r.audioChannelConfiguration=t.getAudioChannelConfigurationForAdaptation(i).map((function(e){return e.value})),0===r.audioChannelConfiguration.length&&Array.isArray(i.Representation_asArray)&&i.Representation_asArray.length>0&&(r.audioChannelConfiguration=t.getAudioChannelConfigurationForRepresentation(i.Representation_asArray[0]).map((function(e){return e.value}))),r.roles=t.getRolesForAdaptation(i).map((function(e){return e.value})),r.codec=t.getCodec(i),r.mimeType=t.getMimeType(i),r.contentProtection=t.getContentProtectionData(i),r.bitrateList=t.getBitrateListForAdaptation(i),r.selectionPriority=t.getSelectionPriority(i),r.contentProtection&&r.contentProtection.forEach((function(e){e.KID=t.getKID(e)})),r.isText=t.getIsText(i),r.supplementalProperties=t.getSupplementalProperties(i),r.isFragmented=t.getIsFragmented(i),r.isEmbedded=!1,r}function v(e,t,n){e.id=t,e.index=100+parseInt(t.substring(2,3)),e.type=a.TEXT,e.codec="cea-608-in-SEI",e.isEmbedded=!0,e.isFragmented=!1,e.lang=n,e.roles=["caption"]}function T(e){var n,r,i=new An;return i.id=e.id,i.index=e.index,i.start=e.start,i.duration=e.duration,i.manifestInfo=(n=e.mpd,(r=new bn).dvrWindowSize=n.timeShiftBufferDepth,r.loadedTime=n.manifest.loadedTime,r.availableFrom=n.availabilityStartTime,r.minBufferTime=n.manifest.minBufferTime,r.maxFragmentDuration=n.maxSegmentDuration,r.duration=t.getDuration(n.manifest),r.isDynamic=t.getIsDynamic(n.manifest),r.serviceDescriptions=t.getServiceDescriptions(n.manifest),r.protocol=n.manifest.protocol,r),i.isLast=1===e.mpd.manifest.Period_asArray.length||Math.abs(i.start+i.duration-i.manifestInfo.duration)<1,i}function S(){if(!a)throw new Error("setConfig function has to be called previously")}function A(e){return r.length>0?r[0].mpd.manifest.Period_asArray[e]:null}function b(e,t,n){var r,i,a,o,s;if(e)for(r=e.AdaptationSet_asArray,o=0;o0?e.segments[0].duration:NaN),n.MSETimeOffset=e.MSETimeOffset,n.mediaInfo=_(e.adaptation),n}return null},getStreamsInfo:function(e,t){var n=[],i=r;if(e&&(S(),i=h(e)),i.length>0){(!t||t>i.length)&&(t=i.length);for(var a=0;a0&&o&&(a=i?t.getAdaptationForId(i,r[0].mpd.manifest,o.index):t.getAdaptationForIndex(n?n.index:null,r[0].mpd.manifest,o.index)),a},getRealPeriodByIndex:function(e){return t.getRealPeriodForIndex(e,r[0].mpd.manifest)},getEssentialPropertiesForRepresentation:function(e){try{return t.getEssentialPropertiesForRepresentation(e)}catch(e){return[]}},getVoRepresentations:function(e){var n=y(e);return t.getRepresentationsForAdaptation(n)},getEventsFor:function(e,n){var i=[];if(r.length>0){var a=r[0].mpd.manifest;e instanceof An?i=t.getEventsForPeriod(E(e,r)):e instanceof Sn?i=t.getEventStreamForAdaptationSet(a,y(e)):e instanceof Tn&&(i=t.getEventStreamForRepresentation(a,n))}return i},getEvent:function(e,t,n,r){try{if(!e||!t||isNaN(n)||!r)return null;var i=e.scheme_id_uri,a=e.value;if(!t[i+"/"+a])return null;var o,s=new In.a,u=e.timescale||1,l=r.adaptation.period.start,c=t[i+"/"+a],f=isNaN(r.presentationTimeOffset)?isNaN(c.presentationTimeOffset)?0:c.presentationTimeOffset:r.presentationTimeOffset,d=e.presentation_time_delta/u;o=0===e.version?l+n-f+d:l-f+d;var h=e.event_duration,p=e.id,g=e.message_data;return s.eventStream=c,s.eventStream.value=a,s.eventStream.timescale=u,s.duration=h,s.id=p,s.calculatedPresentationTime=o,s.messageData=g,s.presentationTimeDelta=d,s}catch(e){return null}},getMpd:p,setConfig:function(e){e&&(e.constants&&(a=e.constants),e.cea608parser&&(s=e.cea608parser),e.errHandler&&t.setConfig({errHandler:e.errHandler}),e.BASE64&&t.setConfig({BASE64:e.BASE64}))},updatePeriods:function(e){if(!e)return null;S(),r=h(e)},getIsTextTrack:function(e){return t.getIsText(e)},getUTCTimingSources:function(){var e=m();return t.getUTCTimingSources(e)},getSuggestedPresentationDelay:function(){var e=r.length>0?r[0].mpd:null;return t.getSuggestedPresentationDelay(e)},getAvailabilityStartTime:function(e){var n=p(e);return t.getAvailabilityStartTime(n)},getIsTypeOf:function(e,n){return t.getIsTypeOf(e,n)},getIsDynamic:function(e){var n=m(e);return t.getIsDynamic(n)},getDuration:function(e){var n=m(e);return t.getDuration(n)},getRegularPeriods:h,getLocation:function(e){return t.getLocation(e)},getPatchLocation:function(e){var n=t.getPatchLocation(e),r=t.getPublishTime(e);if(!n||!r)return null;if(n.hasOwnProperty("ttl")&&r){var i=1e3*parseFloat(n.ttl);if(r.getTime()+i<=(new Date).getTime())return null}return n.__text},getManifestUpdatePeriod:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t.getManifestUpdatePeriod(e,n)},getPublishTime:function(e){return t.getPublishTime(e)},getIsDVB:function(e){return t.hasProfile(e,"urn:dvb:dash:profile:dvb-dash:2014")},getIsPatch:function(e){return n.getIsPatch(e)},getBaseURLsFromElement:function(e){return t.getBaseURLsFromElement(e)},getRepresentationSortFunction:function(){return t.getRepresentationSortFunction()},getCodec:function(e,n,r){return t.getCodec(e,n,r)},getPeriodById:function(e){if(!e||0===r.length)return null;var t=r.filter((function(t){return t.id===e}));return t&&t.length>0?t[0]:null},setCurrentMediaInfo:function(e,t,n){i[e]=i[e]||{},i[e][t]=i[e][t]||{},i[e][t]=n},isPatchValid:function(e,r){var i=t.getId(e),a=n.getMpdId(r),o=t.getPublishTime(e),s=n.getPublishTime(r),u=n.getOriginalPublishTime(r);return!!(i&&a&&i==a&&o&&u&&o.getTime()==u.getTime()&&s&&o.getTime()1?i[r]=u:1==u.length?i[r]=u[0]:delete i[r+"_asArray"]}"add"!==t.action&&"replace"!==t.action||Object.keys(t.value).forEach((function(e){var n=t.value[e],a=i[e+"_asArray"]||[];if(0===a.length&&i[e]&&a.push(i[e]),0===a.length)a=n;else{var u=a.length;u=e==r&&-1!=o?o+(s?0:1)+("replace"==t.action?-1:0):s?0:a.length,a.splice.apply(a,[u,0].concat(n))}i[e+"_asArray"]=a,i[e]=1==a.length?a[0]:a}))}}}))},areMediaInfosEqual:c,reset:g},t=Object(Rn.a)(u).getInstance(),n=Mn(u).getInstance(),g(),e}Pn.__dashjs_factory_name="DashAdapter";var Ln=f.a.getSingletonFactory(Pn);function Fn(e,t){for(var n=0;nr.get().streaming.metrics.maxListDepth&&i[t].shift())}function m(e,t,n){g(e,t,n),h(e,t,n)}return t={clearCurrentMetricsForType:function(e){delete n[e],f(e)},clearAllCurrentMetrics:function(){n={},s()},getMetricsFor:p,addHttpRequest:function e(t,n,r,i,a,o,s,l,c,f,d,h,p,g,y){var E=new v.a;o&&o!==i&&(e(t,null,r,i,a,null,null,l,c,null,null,null,p,null,null),E.actualurl=o),E.tcpid=n,E.type=r,E.url=i,E.range=l,E.trequest=c,E.tresponse=f,E.responsecode=h,E._tfinish=d,E._stream=t,E._mediaduration=p,E._quality=a,E._responseHeaders=g,E._serviceLocation=s,y?y.forEach((function(e){!function(e,t,n,r,i){var a=new v.b;a.s=t,a.d=n,a.b=r,a.t=i,e.trace.push(a),e.interval||(e.interval=0),e.interval+=n}(E,e.s,e.d,e.b,e.t)})):(delete E.interval,delete E.trace),m(t,u.HTTP_REQUEST,E)},addRepresentationSwitch:function(e,t,n,r,i){var a=new Bn;a.t=t,a.mt=n,a.to=r,i?a.lto=i:delete a.lto,m(e,u.TRACK_SWITCH,a)},addBufferLevel:function(e,t,n){var r=new kn;r.t=t,r.level=n,m(e,u.BUFFER_LEVEL,r)},addBufferState:function(e,t,n){var r=new Gn;r.target=n,r.state=t,m(e,u.BUFFER_STATE,r)},addDVRInfo:function(e,t,n,r){var i=new jn;i.time=t,i.range=r,i.manifestInfo=n,m(e,u.DVR_INFO,i)},addDroppedFrames:function(e,t){var n=new Yn,r=p(e).DroppedFrames;t&&(n.time=t.creationTime,n.droppedFrames=t.droppedVideoFrames,r.length>0&&r[r.length-1]==n||m(e,u.DROPPED_FRAMES,n))},addSchedulingInfo:function(e,t,n,r,i,a,o,s,l){var c=new Wn;c.mediaType=e,c.t=t,c.type=n,c.startTime=r,c.availabilityStartTime=i,c.duration=a,c.quality=o,c.range=s,c.state=l,m(e,u.SCHEDULING_INFO,c)},addRequestsQueue:function(e,t,n){var r=new zn;r.loadingRequests=t,r.executedRequests=n,p(e).RequestsQueue=r,h(e,u.REQUESTS_QUEUE,r)},addManifestUpdate:function(e,t,n,r,i,o,s,l,c,f){var d=new Kn;d.mediaType=e,d.type=t,d.requestTime=n,d.fetchTime=r,d.availabilityStartTime=i,d.presentationStartTime=o,d.clientTimeOffset=s,d.currentTime=l,d.buffered=c,d.latency=f,g(a.a.STREAM,u.MANIFEST_UPDATE,d),h(e,u.MANIFEST_UPDATE,d)},updateManifestUpdateInfo:function(e,t){if(e){for(var n in t)e[n]=t[n];d(e.mediaType,u.MANIFEST_UPDATE,e)}},addManifestUpdateStreamInfo:function(e,t,n,r,i){if(e){var a=new qn;a.id=t,a.index=n,a.start=r,a.duration=i,e.streamInfo.push(a),d(e.mediaType,u.MANIFEST_UPDATE_STREAM_INFO,e)}},addManifestUpdateRepresentationInfo:function(e,t,n,r,i,a,o,s){if(e&&e.representationInfo){var l=new Vn;l.id=t,l.index=n,l.streamIndex=r,l.mediaType=i,l.startNumber=o,l.fragmentInfoType=s,l.presentationTimeOffset=a,e.representationInfo.push(l),d(e.mediaType,u.MANIFEST_UPDATE_TRACK_INFO,e)}},addPlayList:function(e){e.trace&&Array.isArray(e.trace)?e.trace.forEach((function(e){e.hasOwnProperty("subreplevel")&&!e.subreplevel&&delete e.subreplevel})):delete e.trace,m(a.a.STREAM,u.PLAY_LIST,e)},addDVBErrors:function(e){m(a.a.STREAM,u.DVB_ERRORS,e)}},n={},t}Xn.__dashjs_factory_name="MetricsModel";var Qn=f.a.getSingletonFactory(Xn),$n=n(14);function Zn(e){e=e||{};var t,n,r,i,o=this.context,s=e.metricsModel;function l(e){var t=s.getMetricsFor(e,!0);if(!t)return null;var n,r=t.HttpList,i=null;if(!r||r.length<=0)return null;for(n=r.length-1;n>=0;){if(r[n].responsecode){i=r[n];break}n--}return i}function c(e){var t=s.getMetricsFor(e,!0);return t&&t.HttpList?t.HttpList:[]}function f(e,t){if(!e)return null;var n=e[t];return n&&0!==n.length?n[n.length-1]:null}return t={getCurrentRepresentationSwitch:function(e){return f(s.getMetricsFor(e,!0),u.TRACK_SWITCH)},getCurrentBufferState:function(e){return f(s.getMetricsFor(e,!0),u.BUFFER_STATE)},getCurrentBufferLevel:function(e){var t=f(s.getMetricsFor(e,!0),u.BUFFER_LEVEL);return t?xn.round10(t.level/1e3,-3):0},getCurrentHttpRequest:l,getHttpRequests:c,getCurrentDroppedFrames:function(){return f(s.getMetricsFor(a.a.VIDEO,!0),u.DROPPED_FRAMES)},getCurrentSchedulingInfo:function(e){return f(s.getMetricsFor(e,!0),u.SCHEDULING_INFO)},getCurrentDVRInfo:function(e){return f(e?s.getMetricsFor(e,!0):s.getMetricsFor(a.a.VIDEO,!0)||s.getMetricsFor(a.a.AUDIO,!0),u.DVR_INFO)},getCurrentManifestUpdate:function(){return f(s.getMetricsFor(a.a.STREAM),u.MANIFEST_UPDATE)},getLatestFragmentRequestHeaderValueByID:function(e,t){if(!t)return null;var n={},r=l(e);r&&(n=$n.a.parseHttpHeaders(r._responseHeaders));var i=n[t.toLowerCase()];return void 0===i?null:i},getLatestMPDRequestHeaderValueByID:function(e){if(!e)return null;var t,n,r,i={};for(r=(t=c(a.a.STREAM)).length-1;r>=0;r--)if((n=t[r]).type===v.a.MPD_TYPE){i=$n.a.parseHttpHeaders(n._responseHeaders);break}var o=i[e.toLowerCase()];return void 0===o?null:o},addRepresentationSwitch:function(e,t,n,r,i){s.addRepresentationSwitch(e,t,n,r,i)},addDVRInfo:function(e,t,n,r){s.addDVRInfo(e,t,n,r)},updateManifestUpdateInfo:function(e){var t=this.getCurrentManifestUpdate();s.updateManifestUpdateInfo(t,e)},addManifestUpdateStreamInfo:function(e){if(e){var t=this.getCurrentManifestUpdate();s.addManifestUpdateStreamInfo(t,e.id,e.index,e.start,e.duration)}},addManifestUpdateRepresentationInfo:function(e,t){if(e){var n=this.getCurrentManifestUpdate();s.addManifestUpdateRepresentationInfo(n,e.id,e.index,e.streamIndex,t,e.presentationTimeOffset,e.startNumber,e.fragmentInfoType)}},addManifestUpdate:function(e){s.addManifestUpdate(a.a.STREAM,e.type,e.requestStartDate,e.requestEndDate)},addHttpRequest:function(e,t,n,r,i){s.addHttpRequest(e.mediaType,null,e.type,e.url,e.quality,t,e.serviceLocation||null,e.range||null,e.requestStartDate,e.firstByteDate,e.requestEndDate,n,e.duration,r,i)},addSchedulingInfo:function(e,t){s.addSchedulingInfo(e.mediaType,new Date,e.type,e.startTime,e.availabilityStartTime,e.duration,e.quality,e.range,t)},addRequestsQueue:function(e,t,n){s.addRequestsQueue(e,t,n)},addBufferLevel:function(e,t,n){s.addBufferLevel(e,t,n)},addBufferState:function(e,t,n){s.addBufferState(e,t,n)},addDroppedFrames:function(e){s.addDroppedFrames(a.a.VIDEO,e)},addPlayList:function(){i&&(s.addPlayList(i),i=null)},addDVBErrors:function(e){s.addDVBErrors(e)},createPlaylistMetrics:function(e,t){(i=new B).start=new Date,i.mstart=e,i.starttype=t},createPlaylistTraceMetrics:function(e,t,i){!0===n&&(n=!1,(r=new k).representationid=e,r.start=new Date,r.mstart=t,r.playbackspeed=null!==i?i.toString():null)},updatePlayListTraceMetrics:function(e){if(r)for(var t in r)r[t]=e[t]},pushPlayListTraceMetrics:function(e,t){if(!1===n&&i&&r&&r.start){var a=r.start,o=e.getTime()-a.getTime();r.duration=o,r.stopreason=t,i.trace.push(r),n=!0}},clearAllCurrentMetrics:function(){s.clearAllCurrentMetrics()}},s=s||Qn(o).getInstance({settings:e.settings}),n=!0,r=null,i=null,t}Zn.__dashjs_factory_name="DashMetrics";var Jn=f.a.getSingletonFactory(Zn);function er(){var e,t,n,r,i=this.context,s=Object(l.a)(i).getInstance(),u=Object(_.a)(i).getInstance();function f(e){r=e}function d(e,t,n,r){var i,a=t.adaptation.period.mpd,o=a.availabilityStartTime;if(r)i=n&&a.timeShiftBufferDepth!==Number.POSITIVE_INFINITY?new Date(o.getTime()+1e3*(e+a.timeShiftBufferDepth)):a.availabilityEndTime;else if(n){var s=t.availabilityTimeOffset;i=new Date(o.getTime()+1e3*(e-s))}else i=o;return i}function p(e,t){return(e.getTime()-t.mpd.availabilityStartTime.getTime()+1e3*r)/1e3}function g(e,t){return e+(t.adaptation.period.start-t.presentationTimeOffset)}function m(e){var n={start:NaN,end:NaN},r=e[0].getAdapter().getRegularPeriods()[0],i=p(new Date,r);if(!e||0===e.length)return{range:n,now:i};e.forEach((function(e){var r=e.getAdapter(),s=r.getMediaInfoForType(e.getStreamInfo(),a.a.VIDEO)||r.getMediaInfoForType(e.getStreamInfo(),a.a.AUDIO),u=r.getVoRepresentations(s)[0],l={start:NaN,end:NaN};if(u)if(u.segmentInfoType===o.a.SEGMENT_TIMELINE)l=function(e){var n,r,i,a,o=e.adaptation.period.mpd.manifest.Period_asArray[e.adaptation.period.index].AdaptationSet_asArray[e.adaptation.index],s=t.getRepresentationFor(e.index,o),u=s.SegmentTemplate.SegmentTimeline,l=s.SegmentTemplate.timescale,c=u.S_asArray,f={start:0,end:0},d=0;for(f.start=g(c[0].t/l,e),i=0,a=c.length;il.start)&&(n.start=l.start),!isNaN(l.end)&&(isNaN(n.end)||n.end2&&void 0!==arguments[2]&&arguments[2];try{for(var r=0,i=!1,a=NaN;!i&&r=t)?(a=t,i=!0):!n&&o.start>t&&(isNaN(a)||o.starta)&&(a=o.start+o.duration),r+=1}return a}catch(e){return t}}function v(e){void 0===e.offset||isNaN(e.offset)||f(e.offset/1e3)}function T(){r=0,n=0}function S(){s.off(c.a.UPDATE_TIME_SYNC_OFFSET,v,this),T()}return e={initialize:function(){T(),s.on(c.a.UPDATE_TIME_SYNC_OFFSET,v,this)},getClientTimeOffset:function(){return r},setClientTimeOffset:f,getClientReferenceTime:function(){return Date.now()-1e3*n+1e3*r},calcAvailabilityStartTimeFromPresentationTime:function(e,t,n){return d(e,t,n)},calcAvailabilityEndTimeFromPresentationTime:function(e,t,n){return d(e,t,n,!0)},calcPresentationTimeFromWallTime:p,calcPresentationTimeFromMediaTime:g,calcPeriodRelativeTimeFromMpdRelativeTime:function(e,t){return t-e.adaptation.period.start},calcMediaTimeFromPresentationTime:function(e,t){return e-t.adaptation.period.start+t.presentationTimeOffset},calcWallTimeForSegment:function(e,t){var n,r,i;return t&&(n=e.representation.adaptation.period.mpd.suggestedPresentationDelay,r=e.presentationStartTime+n,i=new Date(e.availabilityStartTime.getTime()+1e3*r)),i},calcTimeShiftBufferWindow:function(e,t){if(!t)return function(e){var t={start:NaN,end:NaN},n=0,r=NaN;return e.forEach((function(e){var t=e.getStreamInfo();n+=t.duration,(isNaN(r)||t.start0&&(g.spans.push({name:m,line:T,row:c}),T="");var N="style_cea608_"+R.foreground+"_"+R.background;R.underline&&(N+="_underline"),R.italics&&(N+="_italics"),E.hasOwnProperty(N)||(E[N]=JSON.parse(JSON.stringify(R))),S=R,m=N}T+=I.uchar}T.trim().length>0&&g.spans.push({name:m,line:T,row:c}),h=!0,p=A}else h=!1,p=-1,d&&(d.p.push(g),g={start:s,end:u,spans:[]},d.y2=c,d.name="region_"+d.x+"_"+d.y1+"_"+d.y2,!1===y.hasOwnProperty(d.name)?(_.push(d),y[d.name]=d):y[d.name].p.contat(d.p),d=null)}d&&(d.p.push(g),d.y2=c+1,d.name="region_"+d.x+"_"+d.y1+"_"+d.y2,!1===y.hasOwnProperty(d.name)?(_.push(d),y[d.name]=d):y[d.name].p.contat(d.p),d=null);var w=[];for(c=0;c<_.length;++c){var C=_[c],D="sub_cea608_"+e++,O=document.createElement("div");O.id=D;var M=n(C);O.style.cssText="position: absolute; margin: 0; display: flex; box-sizing: border-box; pointer-events: none;"+M;var P=document.createElement("div");P.className="paragraph bodyStyle",P.style.cssText=i(r);var L=document.createElement("div");L.className="cueUniWrapper",L.style.cssText="unicode-bidi: normal; direction: ltr;";for(var F=0;F0){if(0!==f&&U!=B.row){var k=document.createElement("br");k.className="lineBreak",L.appendChild(k)}var G=!1;U===B.row&&(G=!0),U=B.row;var j=E[B.name],Y=document.createElement("span");Y.className="spanPadding "+B.name+" customSpanColor",Y.style.cssText=i(r,j),0!==f&&G?f===x.spans.length-1?Y.textContent=o(B.line):Y.textContent=B.line:x.spans.length>1&&f1&&e.isEmbedded?t=e.id&&e.id===a.a.CC1:1===_.length?e.id&&"string"==typeof e.id&&"CC"===e.id.substring(0,2)&&(t=!0):0===_.length&&(t=e.index===s[0].index);return t}(e),t.isFragmented=e.isFragmented,t.isEmbedded=!!e.isEmbedded,t.isTTML=function(e){return e.codec&&e.codec.search(a.a.STPP)>=0||e.mimeType&&e.mimeType.search(a.a.TTML)>=0}(e),t.kind=function(e,t){var n=e.roles&&e.roles.length>0?t[e.roles[0]]:t.caption;return n=n===t.caption||n===t.subtitle?n:t.caption}(e,{subtitle:"subtitles",caption:"captions"}),C.addTextTrack(t)}function k(e){var t=e.chunk;t.mediaInfo.embeddedCaptions&&j(t.bytes,t)}function G(e){m=e}function j(e,s){var l=s.mediaInfo,c=l.type,d=l.mimeType,p=l.codec||d;p?-1!==l.codec.indexOf("application/mp4")?function(e,i,s){var l,c;if("InitializationSegment"===i.segmentType)f=!0,h=r.getMediaTimescaleFromMoov(e);else{if(!f)return;c=r.getSamplesInfo(e),(l=c.sampleList).length>0&&(g=l[0].cts-i.start*h),s.search(a.a.STPP)>=0?function(e,r,i){var s,l;for(o=null!==o?o:K(i),s=0;s0&&C.addCaptions(m,0,s)}(e,l)}}(e,s,p):c===a.a.VIDEO?function(e,t){var a,o;if(t.segmentType===v.a.INIT_SEGMENT_TYPE)0===T&&(T=r.getMediaTimescaleFromMoov(e));else if(t.segmentType===v.a.MEDIA_SEGMENT_TYPE){if(0===T)return void n.warn("CEA-608: No timescale for embeddedTextTrack yet");var s=(o=r.getSamplesInfo(e)).lastSequenceNumber;if(A[0]||A[1]||function(){for(var e,t=0;t<_.length;t++){if(-1===(e=C.getTrackIdxForId(_[t].id)))return void n.warn("CEA-608: data before track is ready.");var r=Y(e);A[t]=new i.a.Cea608Parser(t+1,{newCue:r},null)}}(),T){if(null!==S&&s!==S+o.numSequences)for(a=0;a0){o.cts!==u?l=0:l+=1;var h=H();n.fields[d].push([o.cts+h*T,f[d],l]),u=o.cts}return n.fields.forEach((function(e){e.sort((function(e,t){return e[0]===t[0]?e[2]-t[2]:e[0]-t[0]}))})),n}(e,o.sampleList),l=0;l=0?t=D:(e.search(a.a.TTML)>=0||e.search(a.a.STPP)>=0)&&(t=O),t}function q(e){_.forEach((function(t){var n=C.getTrackIdxForId(t.id);n>=0&&C.deleteCuesFromTrackIdx(n,e.from,e.to)}))}return t={initialize:function(){F||(_=[],m=null,T=0,A=[],S=null,F=!0,b=pr(P).getInstance(),L.on(c.a.VIDEO_CHUNK_RECEIVED,k,t),L.on(c.a.BUFFER_CLEARED,q,t))},addMediaInfos:function(e,n,r){if(s=s.concat(n),e===a.a.TEXT&&n[0].isFragmented&&!n[0].isEmbedded){u=r,t.buffered=Object(dr.a)(P).create(),p=N.getTracksFor(a.a.TEXT,M.id).filter((function(e){return e.isFragmented}));for(var i=N.getCurrentTrackFor(a.a.TEXT,M.id),o=0;on/r?o=(s=t)/r*n:s=(o=e)/n*r;var u,l,c=0,f=0;return o/s>i?(f=s,c=s*i):(c=o,f=o/i),u=(e-c)/2,l=(t-f)/2,a?{x:u+.1*c,y:l+.1*f,w:.8*c,h:.8*f}:{x:u,y:l,w:c,h:f}}function w(e,t){var n=I.getClientWidth(),r=I.getClientHeight(),i=I.getVideoWidth(),a=I.getVideoHeight(),o=I.getVideoRelativeOffsetTop(),s=I.getVideoRelativeOffsetLeft();if(0!==i&&0!==a){var l=i/a,c=!1;e.isFromCEA608&&(l=3.5/3,c=!0);var d=N.call(this,n,r,i,a,l,c),y=d.w,v=d.h,S=d.x,A=d.y;if(y!=p||v!=g||S!=u||A!=f||t){if(u=S+s,f=A+o,p=y,g=v,m){var R=m.style;R&&(R.left=u+"px",R.top=f+"px",R.width=p+"px",R.height=g+"px",R.zIndex=E&&document[E]||_?T:null,b.trigger(h.a.CAPTION_CONTAINER_RESIZE))}var w=e.activeCues;if(w)for(var C=w.length,D=0;D=0&&i[e]?I.getTextTrack(i[e].kind,i[e].id,i[e].lang,i[e].isTTML,i[e].isEmbedded):null}function P(e){var t=this;if(e!==s){var n=M(s=e);L.call(this,n),y&&(clearInterval(y),y=null),n&&"html"===n.renderingType&&(w.call(this,n,!0),window.ResizeObserver?(S=new window.ResizeObserver((function(){w.call(t,n,!0)}))).observe(I.getElement()):y=setInterval(w.bind(this,n),500))}}function L(e){G.call(this),e&&"html"===e.renderingType?B.call(this):k.call(this)}function F(e,t){if(!e.cues)return!1;for(var n=0;n=t)&&(isNaN(n)||e.endTime<=n)}function U(e,t,n){if(e.cues)for(var r=e.cues,i=r.length-1;i>=0;i--)x(r[i],t,n)&&(r[i].onexit&&r[i].onexit(),e.removeCue(r[i]))}function B(){var e=document.getElementById("native-cue-style");if(!e){(e=document.createElement("style")).id="native-cue-style",document.head.appendChild(e);var t=e.sheet,r=I.getElement();try{r&&(r.id?t.insertRule("#"+r.id+"::cue {background: transparent}",0):0!==r.classList.length?t.insertRule("."+r.className+"::cue {background: transparent}",0):t.insertRule("video::cue {background: transparent}",0))}catch(e){n.info(""+e.message)}}}function k(){var e=document.getElementById("native-cue-style");e&&document.head.removeChild(e)}function G(){if(m)for(;m.firstChild;)m.removeChild(m.firstChild)}return t={initialize:function(){"undefined"!=typeof window&&"undefined"!=typeof navigator&&(r=window.VTTCue||window.TextTrackCue,i=[],o=[],s=-1,u=0,f=0,p=0,g=0,m=null,y=null,_=!1,T=2147483647,v=null,void 0!==document.fullscreenElement?E="fullscreenElement":void 0!==document.webkitIsFullScreen?E="webkitIsFullScreen":document.msFullscreenElement?E="msFullscreenElement":document.mozFullScreen&&(E="mozFullScreen"))},getStreamId:function(){return R.id},addTextTrack:function(e){i.push(e)},addCaptions:O,createTracks:function(){i.sort((function(e,t){return e.index-t.index})),m=I.getTTMLRenderingDiv();for(var e,t,n,r,u,l,f=-1,d=0;d=0){b.on(h.a.PLAYBACK_METADATA_LOADED,(function e(){var t=M(f);t&&w.call(this,t,!0),b.off(h.a.PLAYBACK_METADATA_LOADED,e,this)}),this);for(var y=0;y1){var n=e.split(/:/)[1];n&&-1!=n.search(/%/)&&(n=parseInt(n.replace(/%/,""),10)),(e.match(/align/)||e.match(/A/))&&(t.align=n),(e.match(/line/)||e.match(/L/))&&(t.line=n),(e.match(/position/)||e.match(/P/))&&(t.position=n),(e.match(/size/)||e.match(/S/))&&(t.size=n)}})),t}function c(e,t){for(var n,i=t,a="",o="";""!==e[i]&&i1)for(var s=0;s0&&"WEBVTT"!==d&&d.match(r)){var h=u(d),p=h.cuePoints,g=h.styles,m=c(e,f+1),y=s(p[0].replace(i,"")),E=s(p[1].replace(i,""));!isNaN(y)&&!isNaN(E)&&y>=o&&E>y?""!==m?(o=y,l.push({start:y,end:E,data:m,styles:g})):t.error("Skipping cue due to empty/malformed cue text"):t.error("Skipping cue due to incorrect cue timing")}}return l}},t=Object(d.a)(o).getInstance().getLogger(e),n=/(?:\r\n|\r|\n)/gm,r=/-->/,i=/(^[\s]+|[\s]+$)/g,a=/\s\b/g,e}vr.__dashjs_factory_name="VTTParser";var Tr=f.a.getSingletonFactory(vr);function Sr(){var e,t,n=this.context,r=Object(l.a)(n).getInstance(),i=0;return e={parse:function(e,n,a,o,s){var u,l,f,d="",p=[],g={},m={},y="",E="",_={onOpenTag:function(e,n,i){if(i[" imagetype"]&&!i[" imageType"]&&(r.trigger(h.a.CONFORMANCE_VIOLATION,{level:pe.LEVELS.ERROR,event:pe.EVENTS.NON_COMPLIANT_SMPTE_IMAGE_ATTRIBUTE}),i[" imageType"]=i[" imagetype"]),"image"===n&&("http://www.smpte-ra.org/schemas/2052-1/2010/smpte-tt"===e||"http://www.smpte-ra.org/schemas/2052-1/2013/smpte-tt"===e)){if(!i[" imageType"]||"PNG"!==i[" imageType"].value)return void t.warn("smpte-tt imageType != PNG. Discarded");y=i["http://www.w3.org/XML/1998/namespace id"].value}},onCloseTag:function(){y&&(m[y]=E.trim()),E="",y=""},onText:function(e){y&&(E+=e)}};if(!e)throw d="no ttml data to parse",new Error(d);g.data=e,r.trigger(c.a.TTML_TO_PARSE,g);var v=Object(yr.fromXML)(g.data,(function(e){d=e}),_);r.trigger(c.a.TTML_PARSED,{ttmlString:g.data,ttmlDoc:v});var T,S=v.getMediaTimeEvents();for(f=0;fo?o:S[f+1]+n)&&p.push({start:u,end:l,type:"html",cueID:(T=void 0,T="cue_TTML_"+i,i++,T),isd:A,images:s,embeddedImages:m})}if(""!==d)throw t.error(d),new Error(d);return p}},t=Object(d.a)(n).getInstance().getLogger(e),e}Sr.__dashjs_factory_name="TTMLParser";var Ar=f.a.getSingletonFactory(Sr);function br(e){var t,n,r,i,o,s,u,f,d,p,g,m,y,E=this.context,_=e.adapter,v=e.errHandler,T=e.manifestModel,S=e.mediaController,A=e.videoModel,b=e.settings;function I(e){var t=e.tracks,r=e.index,i=e.streamId;!1===b.get().streaming.text.defaultEnabled&&!N()||y?w(i,-1):(f&&t.some((function(e,t){if(S.matchSettings(f,e))return w(i,t),r=t,!0})),p=!1),n[i].lastEnabledIndex=r,u.trigger(h.a.TEXT_TRACKS_ADDED,{enabled:N(),index:r,tracks:t,streamId:i}),m=!0}function R(e){if(!d&&e&&e.newMediaInfo){var t=e.newMediaInfo;t.type===a.a.TEXT&&(f={lang:t.lang,role:t.roles[0],index:t.index,codec:t.codec,accessibility:t.accessibility[0]})}}function N(){var e=!0;return p&&!g&&(e=!1),e}function w(e,t){(p=-1===t)&&S&&S.saveTextSettingsDisabled();var n=C(e);if(n!==t&&i[e]){i[e].setModeForTrackIdx(n,a.a.TEXT_HIDDEN),i[e].setCurrentTrackIdx(t),i[e].setModeForTrackIdx(t,a.a.TEXT_SHOWING);var o=i[e].getCurrentTrackInfo();o&&o.isFragmented&&!o.isEmbedded?function(e,t,n){if(!r[e])return;for(var o=r[e].getConfig().fragmentedTracks,s=0;s3&&void 0!==arguments[3]?arguments[3]:null,a=e.id;r[a]&&r[a].addMediaInfos(t,n,i)},reset:function(){D(),u.off(c.a.CURRENT_TRACK_CHANGED,R,t),u.off(c.a.TEXT_TRACKS_QUEUE_INITIALIZED,I,t),Object.keys(r).forEach((function(e){r[e].resetEmbedded(),r[e].reset()}))}},f=null,g=!1,m=!1,d=!1,y=!1,o=Tr(E).getInstance(),s=Ar(E).getInstance(),u=Object(l.a)(E).getInstance(),D(),t}br.__dashjs_factory_name="TextController";var Ir=f.a.getClassFactory(br);function Rr(){var e,t,n,r,s,p,m,T,S,A,b,I,R,N,w,C,D,O,P,U,B,k,G,j,Y,H,K,q,V,W,z,X,Q,$,Z,J,ee="You must first call initialize() and set a source before calling this method",te="You must first call initialize() and set a valid source and view before calling this method",ne="You must first call attachView() to set the video element before calling this method",re=this.context,ie=Object(l.a)(re).getInstance(),oe=Object(_.a)(re).getInstance(),se=Object(d.a)(re).getInstance({settings:oe});function ue(){Ie(null),Te(null),r=null,R&&(R.reset(),R=null),N&&(N.reset(),N=null),oe.reset(),C&&(C.reset(),C=null)}function le(){return!!n&&!!W.getElement()}function ce(){return Object(fn.a)()}function fe(){if(!m)throw te;return H.isPaused()}function de(e){var t=G&&G.hasVideoTrack()?a.a.VIDEO:a.a.AUDIO,n=K.getCurrentDVRInfo(t);if(!n)return 0;var r=H.getLiveDelay(),i=n.range.start+e;return i>n.range.end-r&&(i=n.range.end-r),i}function he(e){if(!m)throw te;var t=_e().currentTime;if(void 0!==e)t=G.getTimeRelativeToStreamId(t,e);else if(H.getIsDynamic()){var n=G&&G.hasVideoTrack()?a.a.VIDEO:a.a.AUDIO,r=K.getCurrentDVRInfo(n);t=null===r||0===t?0:Math.max(0,t-r.range.start)}return t}function pe(){if(!m)throw te;var e=_e().duration;if(H.getIsDynamic()){var t=G&&G.hasVideoTrack()?a.a.VIDEO:a.a.AUDIO,n=K.getCurrentDVRInfo(t);e=n?n.range.end-n.range.start:0}return e}function ge(e){Object(M.b)(e,"boolean"),T=e}function me(){O.restoreDefaultUTCTimingSources()}function ye(){return K}function _e(){if(!W.getElement())throw ne;return W.getElement()}function Te(e){if(!s)throw"MediaPlayer not initialized!";W.setElement(e),e&&(Ce(),function(){if(N)return;var e=dashjs.MetricsReporting;if("function"==typeof e){var t=e(re).create();N=t.createMetricsReporting({debug:se,eventBus:ie,mediaElement:_e(),adapter:D,dashMetrics:K,events:c.a,constants:a.a,metricsConstants:u})}}(),function(){if(w)return;var e=dashjs.MssHandler;"function"==typeof e&&(E.a.extend(e.errors),w=e(re).create({eventBus:ie,mediaPlayerModel:O,dashMetrics:K,manifestModel:q,playbackController:H,streamController:G,protectionController:R,baseURLController:U,errHandler:P,events:c.a,constants:a.a,debug:se,initSegmentType:v.a.INIT_SEGMENT_TYPE,BASE64:rr.a,ISOBoxer:ar.a,settings:oe}))}(),G&&G.switchToVideoElement()),m&&Ne(),Me()}function Se(e){if(!p)throw ee;var t=G.getActiveStreamInfo();return t?I.getTracksFor(e,t.id):[]}function be(e,t){var n=-1;e.some((function(e,r){if(e===t)return n=r,!0})),n<0||e.splice(n,1)}function Ie(e){if(!s)throw"MediaPlayer not initialized!";"string"==typeof e&&z.initialize(e),n=e,(p||m)&&Ne(),le()&&Me()}function Re(){if(!p)throw ee;var e=G.getActiveStreamInfo();return e?G.getStreamById(e.id):null}function Ne(){m=!1,p=!1,D.reset(),G.reset(),Y.reset(),H.reset(),S.reset(),I.reset(),Q.reset(),R&&(oe.get().streaming.protection.keepProtectionMediaKeys?R.stop():(R.reset(),R=null,Ce())),j.reset(),V.reset()}function we(){return Ze(re).create({debug:se,errHandler:P,dashMetrics:K,mediaPlayerModel:O,requestModifier:Object(L.a)(re).getInstance(),mssHandler:w,settings:oe})}function Ce(){if(R)return R;var e=dashjs.Protection;if("function"==typeof e){var t=e(re).create();return c.a.extend(e.events),h.a.extend(e.events,{publicOnly:!0}),E.a.extend(e.errors),B||(B=Object(tt.a)(re).getInstance()),(R=t.createProtectionSystem({debug:se,errHandler:P,videoModel:W,capabilities:B,eventBus:ie,events:c.a,BASE64:rr.a,constants:a.a,cmcdModel:V,settings:oe}))&&(R.setLicenseRequestFilters($),R.setLicenseResponseFilters(Z)),R}return null}function De(){if(!s)throw"MediaPlayer not initialized!";if(C)return C;var e=dashjs.OfflineController;if("function"==typeof e){c.a.extend(e.events),h.a.extend(e.events,{publicOnly:!0}),E.a.extend(e.errors);var t=we(),n=ae(re).create();return n.setConfig({manifestModel:q,adapter:D,manifestLoader:t,errHandler:P}),C=e(re).create({debug:se,manifestUpdater:n,baseURLController:U,manifestLoader:t,manifestModel:q,mediaPlayerModel:O,abrController:S,playbackController:H,adapter:D,errHandler:P,dashMetrics:K,timelineConverter:b,segmentBaseController:Q,schemeLoaderFactory:A,eventBus:ie,events:c.a,errors:E.a,constants:a.a,settings:oe,dashConstants:o.a,urlUtils:Object(F.a)(re).getInstance()})}return null}function Oe(e){var t=G&&G.hasVideoTrack()?a.a.VIDEO:a.a.AUDIO,n=K.getCurrentDVRInfo(t);return n?e+(n.manifestInfo.availableFrom.getTime()/1e3+n.range.start):0}function Me(){var e;C&&C.resetRecords(),!p&&n&&(p=!0,t.info("Streaming Initialized"),e=we(),G||(G=Ee(re).getInstance()),j||(j=Ir(re).create({errHandler:P,manifestModel:q,adapter:D,mediaController:I,videoModel:W,settings:oe})),k.setConfig({capabilities:B,adapter:D,settings:oe,manifestModel:q,errHandler:P}),k.setCustomCapabilitiesFilters(J),G.setConfig({capabilities:B,capabilitiesFilter:k,manifestLoader:e,manifestModel:q,mediaPlayerModel:O,protectionController:R,textController:j,adapter:D,dashMetrics:K,errHandler:P,timelineConverter:b,videoModel:W,playbackController:H,abrController:S,mediaController:I,settings:oe,baseURLController:U,uriFragmentModel:z,segmentBaseController:Q}),Y.setConfig({settings:oe,playbackController:H,streamController:G,videoModel:W,timelineConverter:b,adapter:D}),H.setConfig({streamController:G,dashMetrics:K,mediaPlayerModel:O,adapter:D,videoModel:W,timelineConverter:b,settings:oe}),S.setConfig({streamController:G,domStorage:X,mediaPlayerModel:O,dashMetrics:K,adapter:D,videoModel:W,settings:oe}),V.setConfig({abrController:S,dashMetrics:K,playbackController:H}),S.initialize(),G.initialize(T,r),j.initialize(),Y.initialize(),V.initialize(),Q.initialize(),"string"==typeof n?G.load(n):G.loadWithManifest(n)),!m&&le()&&(m=!0,t.info("Playback Initialized"))}return e={initialize:function(e,n,r){B||(B=Object(tt.a)(re).getInstance()).setConfig({settings:oe}),P||(P=et(re).getInstance()),B.supportsMediaSource()?(s||(s=!0,b=tr(re).getInstance(),S||(S=tn(re).getInstance()).setConfig({settings:oe}),A||(A=Object(nn.a)(re).getInstance()),H||(H=g(re).getInstance()),I||(I=Ae(re).getInstance()),G||(G=Ee(re).getInstance()),Y||(Y=ve(re).getInstance()),k||(k=rt(re).getInstance()),D=Ln(re).getInstance(),q=ut(re).getInstance(),V=Object(sn.a)(re).getInstance(),K=Jn(re).getInstance({settings:oe}),X=cn(re).getInstance({settings:oe}),D.setConfig({constants:a.a,cea608parser:i.a,errHandler:P,BASE64:rr.a}),U||(U=xe(re).create()),U.setConfig({adapter:D}),Q||(Q=vn(re).getInstance({dashMetrics:K,mediaPlayerModel:O,errHandler:P,baseURLController:U,events:c.a,eventBus:ie,debug:se,boxParser:Object(x.a)(re).getInstance(),requestModifier:Object(L.a)(re).getInstance(),errors:E.a})),I.setConfig({domStorage:X,settings:oe}),me(),ge(void 0===r||r),De()),e&&Te(e),n&&Ie(n),t.info("[dash.js "+ce()+"] MediaPlayer has been initialized")):P.error(new y.a(E.a.CAPABILITY_MEDIASOURCE_ERROR_CODE,E.a.CAPABILITY_MEDIASOURCE_ERROR_MESSAGE))},setConfig:function(e){e&&(e.capabilities&&(B=e.capabilities),e.capabilitiesFilter&&(k=e.capabilitiesFilter),e.streamController&&(G=e.streamController),e.textController&&(j=e.textController),e.gapController&&(Y=e.gapController),e.playbackController&&(H=e.playbackController),e.mediaPlayerModel&&(O=e.mediaPlayerModel),e.abrController&&(S=e.abrController),e.schemeLoaderFactory&&(A=e.schemeLoaderFactory),e.mediaController&&(I=e.mediaController),e.settings&&(oe=e.settings))},on:function(e,t,n,r){ie.on(e,t,n,r)},off:function(e,t,n){ie.off(e,t,n)},extend:function(e,t,n){f.a.extend(e,t,n,re)},attachView:Te,attachSource:Ie,isReady:le,play:function(){if(!m)throw te;(!T||fe()&&m)&&H.play()},isPaused:fe,pause:function(){if(!m)throw te;H.pause()},isSeeking:function(){if(!m)throw te;return H.isSeeking()},isDynamic:function(){if(!m)throw te;return H.getIsDynamic()},seek:function(e){if(!m)throw te;if(Object(M.b)(e,"number"),isNaN(e))throw a.a.BAD_ARGUMENT_ERROR;var t=H.getIsDynamic()?de(e):e;H.seek(t)},setPlaybackRate:function(e){_e().playbackRate=e},getPlaybackRate:function(){return _e().playbackRate},setMute:function(e){Object(M.b)(e,"boolean"),_e().muted=e},isMuted:function(){return _e().muted},setVolume:function(e){if("number"!=typeof e||isNaN(e)||e<0||e>1)throw a.a.BAD_ARGUMENT_ERROR;_e().volume=e},getVolume:function(){return _e().volume},time:he,duration:pe,timeAsUTC:function(){if(!m)throw te;return he()<0?NaN:Oe(he())},durationAsUTC:function(){if(!m)throw te;return Oe(pe())},getActiveStream:Re,getDVRWindowSize:function(){var e=G&&G.hasVideoTrack()?a.a.VIDEO:a.a.AUDIO,t=K.getCurrentDVRInfo(e);return t?t.manifestInfo.dvrWindowSize:0},getDVRSeekOffset:de,convertToTimeCode:function(e){e=Math.max(e,0);var t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.floor(e%3600%60);return(0===t?"":t<10?"0"+t.toString()+":":t.toString()+":")+(n<10?"0"+n.toString():n.toString())+":"+(r<10?"0"+r.toString():r.toString())},formatUTC:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=new Date(1e3*e),a=i.toLocaleDateString(t),o=i.toLocaleTimeString(t,{hour12:n});return r?o+" "+a:o},getVersion:ce,getDebug:function(){return se},getBufferLength:function(e){var n=[a.a.VIDEO,a.a.AUDIO,a.a.TEXT];if(e){if(-1!==n.indexOf(e)){var r=ye().getCurrentBufferLevel(e);return r||NaN}return t.warn("getBufferLength requested for invalid type"),NaN}var i=n.map((function(e){return Se(e).length>0?ye().getCurrentBufferLevel(e):Number.MAX_VALUE})).reduce((function(e,t){return Math.min(e,t)}));return i===Number.MAX_VALUE?NaN:i},getTTMLRenderingDiv:function(){return W?W.getTTMLRenderingDiv():null},getVideoElement:_e,getSource:function(){if(!n)throw"You must first call attachSource() with a valid source before calling this method";return n},getCurrentLiveLatency:function(){if(!s)throw"MediaPlayer not initialized!";return m?H.getCurrentLiveLatency():NaN},getTopBitrateInfoFor:function(e){if(!p)throw ee;return S.getTopBitrateInfoFor(e)},setAutoPlay:ge,getAutoPlay:function(){return T},getDashMetrics:ye,getQualityFor:function(e){if(!p)throw ee;if(e===a.a.IMAGE){var t=Re();if(!t)return-1;var n=t.getThumbnailController();return n?n.getCurrentTrackIndex():-1}return S.getQualityFor(e)},setQualityFor:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!p)throw ee;if(e===a.a.IMAGE){var r=Re();if(!r)return;var i=r.getThumbnailController();i&&i.setTrackByIndex(t)}S.setPlaybackQuality(e,G.getActiveStreamInfo(),t,{forceReplace:n})},updatePortalSize:function(){S.setElementSize(),S.setWindowResizeEventCalled(!0)},enableText:function(e){var t=G.getActiveStreamInfo();return!(!t||!j)&&j.enableText(t.id,e)},enableForcedTextStreaming:function(e){return!(!G.getActiveStreamInfo()||!j)&&j.enableForcedTextStreaming(e)},isTextEnabled:function(){var e=G.getActiveStreamInfo();return!(!e||!j)&&j.isTextEnabled(e)},setTextTrack:function(e){if(!m)throw te;var t=G.getActiveStreamInfo();t&&j&&j.setTextTrack(t.id,e)},getBitrateInfoListFor:function(e){if(!p)throw ee;var t=Re();return t?t.getBitrateListFor(e):[]},getStreamsFromManifest:function(e){if(!p)throw ee;return D.getStreamsInfo(e)},getTracksFor:Se,getTracksForTypeFromManifest:function(e,t,n){if(!p)throw ee;return(n=n||D.getStreamsInfo(t,1)[0])?D.getAllMediaInfoForType(n,e,t):[]},getCurrentTrackFor:function(e){if(!p)throw ee;var t=G.getActiveStreamInfo();return I.getCurrentTrackFor(e,t.id)},setInitialMediaSettingsFor:function(e,t){if(!s)throw"MediaPlayer not initialized!";I.setInitialSettings(e,t)},getInitialMediaSettingsFor:function(e){if(!s)throw"MediaPlayer not initialized!";return I.getInitialSettings(e)},setCurrentTrack:function(e){if(!p)throw ee;I.setTrack(e)},addABRCustomRule:function(e,t,n){O.addABRCustomRule(e,t,n)},removeABRCustomRule:function(e){O.removeABRCustomRule(e)},removeAllABRCustomRule:function(){O.removeABRCustomRule()},getAverageThroughput:function(e){var t=S.getThroughputHistory();return t?t.getAverageThroughput(e):0},retrieveManifest:function(e,t){var n=we(),r=this;ie.on(c.a.INTERNAL_MANIFEST_LOADED,(function e(i){i.error?t(null,i.error):t(i.manifest),ie.off(c.a.INTERNAL_MANIFEST_LOADED,e,r),n.reset()}),r),z.initialize(e),n.load(e)},addUTCTimingSource:function(e,t){O.addUTCTimingSource(e,t)},removeUTCTimingSource:function(e,t){O.removeUTCTimingSource(e,t)},clearDefaultUTCTimingSources:function(){O.clearDefaultUTCTimingSources()},restoreDefaultUTCTimingSources:me,setXHRWithCredentialsForType:function(e,t){O.setXHRWithCredentialsForType(e,t)},getXHRWithCredentialsForType:function(e){return O.getXHRWithCredentialsForType(e)},getProtectionController:function(){return Ce()},attachProtectionController:function(e){R=e},setProtectionData:function(e){r=e,G&&G.setProtectionData(r)},registerLicenseRequestFilter:function(e){$.push(e),R&&R.setLicenseRequestFilters($)},registerLicenseResponseFilter:function(e){Z.push(e),R&&R.setLicenseResponseFilters(Z)},unregisterLicenseRequestFilter:function(e){be($,e),R&&R.setLicenseRequestFilters($)},unregisterLicenseResponseFilter:function(e){be(Z,e),R&&R.setLicenseResponseFilters(Z)},registerCustomCapabilitiesFilter:function(e){J.push(e),k&&k.setCustomCapabilitiesFilters(J)},unregisterCustomCapabilitiesFilter:function(e){be(J,e),k&&k.setCustomCapabilitiesFilters(J)},setCustomInitialTrackSelectionFunction:function(e){I&&I.setCustomInitialTrackSelectionFunction(e)},resetCustomInitialTrackSelectionFunction:function(){I&&I.setCustomInitialTrackSelectionFunction(null)},attachTTMLRenderingDiv:function(e){if(!W.getElement())throw ne;W.setTTMLRenderingDiv(e)},getCurrentTextTrackIndex:function(){var e=G.getActiveStreamInfo();if(e&&j)return j.getCurrentTrackIdx(e.id)},provideThumbnail:function(e,t){if("function"==typeof t)if(e<0)t(null);else{var n=H.getIsDynamic()?de(e):e,r=G.getStreamForTime(n);if(null!==r){var i=r.getThumbnailController();if(i){var a=G.getTimeRelativeToStreamId(n,r.getId());return i.provide(a,t)}t(null)}else t(null)}},getDashAdapter:function(){return D},getOfflineController:function(){return De()},getSettings:function(){return oe.get()},updateSettings:function(e){oe.update(e)},resetSettings:function(){oe.reset()},reset:ue,destroy:function(){ue(),$=[],Z=[],J=[],f.a.deleteSingletonInstances(re)}},t=se.getLogger(e),s=!1,m=!1,p=!1,T=!0,R=null,C=null,r=null,D=null,Q=null,c.a.extend(h.a),O=Kt(re).getInstance(),W=on(re).getInstance(),z=ot(re).getInstance(),$=[],Z=[],J=[],e}Rr.__dashjs_factory_name="MediaPlayer";var Nr=f.a.getClassFactory(Rr);Nr.events=h.a,Nr.errors=E.a,f.a.updateClassFactory(Rr.__dashjs_factory_name,Nr);t.a=Nr},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));function r(){return"4.1.0"}},function(e,t,n){var r,i,o,u,l,c={encode:function(e){for(var t=[],n=0;n>6),t.push(128|63&r)):r<65536?(t.push(224|r>>12),t.push(128|63&r>>6),t.push(128|63&r)):(t.push(240|r>>18),t.push(128|63&r>>12),t.push(128|63&r>>6),t.push(128|63&r))}return t},decode:function(e){for(var t=[],n=0;n>18)),n.push(r.charAt(63&a>>12)),n.push(r.charAt(63&a>>6)),n.push(r.charAt(63&a))}return 2==e.length-t?(a=(e[t]<<16)+(e[t+1]<<8),n.push(r.charAt(63&a>>18)),n.push(r.charAt(63&a>>12)),n.push(r.charAt(63&a>>6)),n.push("=")):1==e.length-t&&(a=e[t]<<16,n.push(r.charAt(63&a>>18)),n.push(r.charAt(63&a>>12)),n.push("==")),n.join("")},o=function(){for(var e=[],t=0;t0&&(e.segments=u);return e}(e,n[1])),(r=e).mediaFinishedInformation=E.getMediaFinishedInformation(r),function(e){if(!S())return;var t,n=d.getCurrentManifestUpdate(),r=!1;if(n){for(var i=0;i=s.length?null:s[e]}function w(e){i=!1,l.trigger(c.DATA_UPDATE_COMPLETED,{data:n,currentRepresentation:u,error:e},{streamId:m.id,mediaType:g})}function C(e){u=e}function D(e){if(e.newDuration){var t=A();if(t&&t.adaptation.period)t.adaptation.period.duration=e.newDuration}}return t={getStreamId:function(){return m.id},getType:v,getData:function(){return n},isUpdating:S,updateData:function(e,t,a,o,u){if(T(),i=!0,s=t,C(N(u)),n=e,a!==r.a.VIDEO&&a!==r.a.AUDIO&&(a!==r.a.TEXT||!o))return w(),Promise.resolve();for(var l=[],c=0,f=s.length;c=0}return!1}),(function(e){return String(e)}))}return n}(l),E=n(1);function _(e){return(_="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})(e)}function v(e,t){return(v=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function T(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=A(e);if(t){var i=A(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return S(this,n)}}function S(e,t){return!t||"object"!==_(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function A(e){return(A=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var b=/^([-])?P(([\d.]*)Y)?(([\d.]*)M)?(([\d.]*)D)?T?(([\d.]*)H)?(([\d.]*)M)?(([\d.]*)S)?/,I=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&v(e,t)}(n,e);var t=T(n);function n(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),t.call(this,(function(e){for(var t=[c.a.MIN_BUFFER_TIME,c.a.MEDIA_PRESENTATION_DURATION,c.a.MINIMUM_UPDATE_PERIOD,c.a.TIMESHIFT_BUFFER_DEPTH,c.a.MAX_SEGMENT_DURATION,c.a.MAX_SUBSEGMENT_DURATION,c.a.SUGGESTED_PRESENTATION_DELAY,c.a.START,E.a.START_TIME,c.a.DURATION],n=t.length,r=0;r4)return null;var r=[];for(var i in t){var a=n.parseLength(t[i]);if(!a)return null;r.push(a)}return r}),(function(t,n,r,i,a){var o;if(1===i.length)o=[i[0],i[0],i[0],i[0]];else if(2===i.length)o=[i[0],i[1],i[0],i[1]];else if(3===i.length)o=[i[0],i[1],i[2],i[1]];else{if(4!==i.length)return null;o=[i[0],i[1],i[2],i[3]]}var s=r.styleAttrs[e.byName.writingMode.qname];if("lrtb"===s||"lr"===s)o=[o[0],o[3],o[2],o[1]];else if("rltb"===s||"rl"===s)o=[o[0],o[1],o[2],o[3]];else if("tblr"===s)o=[o[3],o[0],o[1],o[2]];else{if("tbrl"!==s&&"tb"!==s)return null;o=[o[3],o[2],o[1],o[0]]}var u=[];for(var l in o)if(0===o[l].value)u[l]=0;else if("%"===o[l].unit)u[l]="0"===l||"2"===l?r.styleAttrs[e.byName.extent.qname].h*o[l].value/100:r.styleAttrs[e.byName.extent.qname].w*o[l].value/100;else if("em"===o[l].unit)u[l]=r.styleAttrs[e.byName.fontSize.qname]*o[l].value;else if("c"===o[l].unit)u[l]=o[l].value/t.cellResolution.h;else{if("px"!==o[l].unit)return null;u[l]="0"===l||"2"===l?o[l].value/t.pxDimensions.h:o[l].value/t.pxDimensions.w}return u})),new r(t.ns_tts,"showBackground","always",["region"],!1,!0,(function(e){return e}),null),new r(t.ns_tts,"textAlign","start",["p"],!0,!0,(function(e){return e}),(function(e,t,n,r,i){return"left"===r?"start":"right"===r?"end":r})),new r(t.ns_tts,"textDecoration","none",["span"],!0,!0,(function(e){return e.split(" ")}),null),new r(t.ns_tts,"textOutline","none",["span"],!0,!0,(function(e){if("none"===e)return e;var t={},r=e.split(" ");if(0===r.length||r.length>2)return null;var i=n.parseColor(r[0]);if(t.color=i,null!==i&&r.shift(),1!==r.length)return null;var a=n.parseLength(r[0]);return a?(t.thickness=a,t):null}),(function(t,n,r,i,a){if("none"===i)return i;var o={};if(null===i.color?o.color=r.styleAttrs[e.byName.color.qname]:o.color=i.color,"%"===i.thickness.unit)o.thickness=r.styleAttrs[e.byName.fontSize.qname]*i.thickness.value/100;else if("em"===i.thickness.unit)o.thickness=r.styleAttrs[e.byName.fontSize.qname]*i.thickness.value;else if("c"===i.thickness.unit)o.thickness=i.thickness.value/t.cellResolution.h;else{if("px"!==i.thickness.unit)return null;o.thickness=i.thickness.value/t.pxDimensions.h}return o})),new r(t.ns_tts,"unicodeBidi","normal",["span","p"],!1,!0,(function(e){return e}),null),new r(t.ns_tts,"visibility","visible",["body","div","p","region","span"],!0,!0,(function(e){return e}),null),new r(t.ns_tts,"wrapOption","wrap",["span"],!0,!0,(function(e){return e}),null),new r(t.ns_tts,"writingMode","lrtb",["region"],!1,!0,(function(e){return e}),null),new r(t.ns_tts,"zIndex","auto",["region"],!1,!0,(function(e){var t;return"auto"===e?t=e:(t=parseInt(e),isNaN(t)&&(t=null)),t}),null),new r(t.ns_ebutts,"linePadding","0c",["p"],!0,!1,n.parseLength,(function(e,t,n,r,i){return"c"===r.unit?r.value/e.cellResolution.h:null})),new r(t.ns_ebutts,"multiRowAlign","auto",["p"],!0,!1,(function(e){return e}),null),new r(t.ns_smpte,"backgroundImage",null,["div"],!1,!1,(function(e){return e}),null),new r(t.ns_itts,"forcedDisplay","false",["body","div","p","region","span"],!0,!0,(function(e){return"true"===e}),null),new r(t.ns_itts,"fillLineGap","false",["p"],!0,!0,(function(e){return"true"===e}),null)],e.byQName={},e.all)e.byQName[e.all[i].qname]=e.all[i];for(var a in e.byName={},e.all)e.byName[e.all[a].name]=e.all[a]}(t,"undefined"==typeof imscNames?n(47):imscNames,"undefined"==typeof imscUtils?n(65):imscUtils)},function(e,t,n){"use strict";(function(e){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -var r=n(77),i=n(78),a=n(66);function o(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(e,t){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|e}function p(e,t){if(u.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return G(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return j(e).length;default:if(r)return G(e).length;t=(""+t).toLowerCase(),r=!0}}function g(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return C(this,t,n);case"utf8":case"utf-8":return R(this,t,n);case"ascii":return N(this,t,n);case"latin1":case"binary":return w(this,t,n);case"base64":return I(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function m(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function y(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=u.from(t,r)),u.isBuffer(t))return 0===t.length?-1:E(e,t,n,r,i);if("number"==typeof t)return t&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):E(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function E(e,t,n,r,i){var a,o=1,s=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,s/=2,u/=2,n/=2}function l(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var c=-1;for(a=n;as&&(n=s-u),a=n;a>=0;a--){for(var f=!0,d=0;di&&(r=i):r=i;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");r>a/2&&(r=a/2);for(var o=0;o>8,i=n%256,a.push(i),a.push(r);return a}(t,e.length-n),e,n,r)}function I(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function R(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i239?4:l>223?3:l>191?2:1;if(i+f<=n)switch(f){case 1:l<128&&(c=l);break;case 2:128==(192&(a=e[i+1]))&&(u=(31&l)<<6|63&a)>127&&(c=u);break;case 3:a=e[i+1],o=e[i+2],128==(192&a)&&128==(192&o)&&(u=(15&l)<<12|(63&a)<<6|63&o)>2047&&(u<55296||u>57343)&&(c=u);break;case 4:a=e[i+1],o=e[i+2],s=e[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(u=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&u<1114112&&(c=u)}null===c?(c=65533,f=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),i+=f}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},u.prototype.compare=function(e,t,n,r,i){if(!u.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var a=(i>>>=0)-(r>>>=0),o=(n>>>=0)-(t>>>=0),s=Math.min(a,o),l=this.slice(r,i),c=e.slice(t,n),f=0;fi)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var a=!1;;)switch(r){case"hex":return _(this,e,t,n);case"utf8":case"utf-8":return v(this,e,t,n);case"ascii":return T(this,e,t,n);case"latin1":case"binary":return S(this,e,t,n);case"base64":return A(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return b(this,e,t,n);default:if(a)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),a=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function N(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;ir)&&(n=r);for(var i="",a=t;an)throw new RangeError("Trying to access beyond buffer length")}function M(e,t,n,r,i,a){if(!u.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function P(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function L(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function F(e,t,n,r,i,a){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function x(e,t,n,r,a){return a||F(e,0,n,4),i.write(e,t,n,r,23,4),n+4}function U(e,t,n,r,a){return a||F(e,0,n,8),i.write(e,t,n,r,52,8),n+8}u.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(i*=256);)r+=this[e+--t]*i;return r},u.prototype.readUInt8=function(e,t){return t||O(e,1,this.length),this[e]},u.prototype.readUInt16LE=function(e,t){return t||O(e,2,this.length),this[e]|this[e+1]<<8},u.prototype.readUInt16BE=function(e,t){return t||O(e,2,this.length),this[e]<<8|this[e+1]},u.prototype.readUInt32LE=function(e,t){return t||O(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},u.prototype.readUInt32BE=function(e,t){return t||O(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},u.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||O(e,t,this.length);for(var r=this[e],i=1,a=0;++a=(i*=128)&&(r-=Math.pow(2,8*t)),r},u.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||O(e,t,this.length);for(var r=t,i=1,a=this[e+--r];r>0&&(i*=256);)a+=this[e+--r]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*t)),a},u.prototype.readInt8=function(e,t){return t||O(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},u.prototype.readInt16LE=function(e,t){t||O(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function(e,t){t||O(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function(e,t){return t||O(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},u.prototype.readInt32BE=function(e,t){return t||O(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},u.prototype.readFloatLE=function(e,t){return t||O(e,4,this.length),i.read(this,e,!0,23,4)},u.prototype.readFloatBE=function(e,t){return t||O(e,4,this.length),i.read(this,e,!1,23,4)},u.prototype.readDoubleLE=function(e,t){return t||O(e,8,this.length),i.read(this,e,!0,52,8)},u.prototype.readDoubleBE=function(e,t){return t||O(e,8,this.length),i.read(this,e,!1,52,8)},u.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||M(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,a=0;for(this[t]=255&e;++a=0&&(a*=256);)this[t+i]=e/a&255;return t+n},u.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,1,255,0),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},u.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):P(this,e,t,!0),t+2},u.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):P(this,e,t,!1),t+2},u.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):L(this,e,t,!0),t+4},u.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},u.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);M(this,e,t,n,i-1,-i)}var a=0,o=1,s=0;for(this[t]=255&e;++a>0)-s&255;return t+n},u.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);M(this,e,t,n,i-1,-i)}var a=n-1,o=1,s=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/o>>0)-s&255;return t+n},u.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,1,127,-128),u.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},u.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):P(this,e,t,!0),t+2},u.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):P(this,e,t,!1),t+2},u.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):L(this,e,t,!0),t+4},u.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),u.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},u.prototype.writeFloatLE=function(e,t,n){return x(this,e,t,!0,n)},u.prototype.writeFloatBE=function(e,t,n){return x(this,e,t,!1,n)},u.prototype.writeDoubleLE=function(e,t,n){return U(this,e,t,!0,n)},u.prototype.writeDoubleBE=function(e,t,n){return U(this,e,t,!1,n)},u.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--i)e[i+t]=this[i+n];else if(a<1e3||!u.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(a=t;a55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&a.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&a.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;a.push(n)}else if(n<2048){if((t-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function j(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(B,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function Y(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}}).call(this,n(21))},function(e,t,n){"use strict";var r,i="object"==typeof Reflect?Reflect:null,a=i&&"function"==typeof i.apply?i.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};r=i&&"function"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var o=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(e,t){return new Promise((function(n,r){function i(n){e.removeListener(t,a),r(n)}function a(){"function"==typeof e.removeListener&&e.removeListener("error",i),n([].slice.call(arguments))}y(e,t,a,{once:!0}),"error"!==t&&function(e,t,n){"function"==typeof e.on&&y(e,"error",t,n)}(e,i,{once:!0})}))},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var u=10;function l(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function c(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function f(e,t,n,r){var i,a,o,s;if(l(n),void 0===(a=e._events)?(a=e._events=Object.create(null),e._eventsCount=0):(void 0!==a.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),a=e._events),o=a[t]),void 0===o)o=a[t]=n,++e._eventsCount;else if("function"==typeof o?o=a[t]=r?[n,o]:[o,n]:r?o.unshift(n):o.push(n),(i=c(e))>0&&o.length>i&&!o.warned){o.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=o.length,s=u,console&&console.warn&&console.warn(s)}return e}function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function h(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},i=d.bind(r);return i.listener=n,r.wrapFn=i,i}function p(e,t,n){var r=e._events;if(void 0===r)return[];var i=r[t];return void 0===i?[]:"function"==typeof i?n?[i.listener||i]:[i]:n?function(e){for(var t=new Array(e.length),n=0;n0&&(o=t[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var u=i[e];if(void 0===u)return!1;if("function"==typeof u)a(u,this,t);else{var l=u.length,c=m(u,l);for(n=0;n=0;a--)if(n[a]===t||n[a].listener===t){o=n[a].listener,i=a;break}if(i<0)return this;0===i?n.shift():function(e,t){for(;t+1=0;r--)this.removeListener(e,t[r]);return this},s.prototype.listeners=function(e){return p(this,e,!0)},s.prototype.rawListeners=function(e){return p(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):g.call(e,t)},s.prototype.listenerCount=g,s.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},function(e,t,n){(t=e.exports=n(67)).Stream=t,t.Readable=t,t.Writable=n(63),t.Duplex=n(30),t.Transform=n(70),t.PassThrough=n(86)},function(e,t,n){"use strict";(function(t,r,i){var a=n(48);function o(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;e.entry=null;for(;r;){var i=r.callback;t.pendingcb--,i(n),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=E;var s,u=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:a.nextTick;E.WritableState=y;var l=n(42);l.inherits=n(34);var c={deprecate:n(85)},f=n(68),d=n(49).Buffer,h=i.Uint8Array||function(){};var p,g=n(69);function m(){}function y(e,t){s=s||n(30),e=e||{};var r=t instanceof s;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,l=e.writableHighWaterMark,c=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(l||0===l)?l:c,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var f=!1===e.decodeStrings;this.decodeStrings=!f,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,i=n.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,i){--t.pendingcb,n?(a.nextTick(i,r),a.nextTick(b,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(i(r),e._writableState.errorEmitted=!0,e.emit("error",r),b(e,t))}(e,n,r,t,i);else{var o=S(n);o||n.corked||n.bufferProcessing||!n.bufferedRequest||T(e,n),r?u(v,e,n,o,i):v(e,n,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function E(e){if(s=s||n(30),!(p.call(E,this)||this instanceof s))return new E(e);this._writableState=new y(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),f.call(this)}function _(e,t,n,r,i,a,o){t.writelen=r,t.writecb=o,t.writing=!0,t.sync=!0,n?e._writev(i,t.onwrite):e._write(i,a,t.onwrite),t.sync=!1}function v(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),b(e,t)}function T(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,i=new Array(r),a=t.corkedRequestsFree;a.entry=n;for(var s=0,u=!0;n;)i[s]=n,n.isBuf||(u=!1),n=n.next,s+=1;i.allBuffers=u,_(e,t,!0,t.length,i,"",a.finish),t.pendingcb++,t.lastBufferedRequest=null,a.next?(t.corkedRequestsFree=a.next,a.next=null):t.corkedRequestsFree=new o(t),t.bufferedRequestCount=0}else{for(;n;){var l=n.chunk,c=n.encoding,f=n.callback;if(_(e,t,!1,t.objectMode?1:l.length,l,c,f),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function S(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function A(e,t){e._final((function(n){t.pendingcb--,n&&e.emit("error",n),t.prefinished=!0,e.emit("prefinish"),b(e,t)}))}function b(e,t){var n=S(t);return n&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,a.nextTick(A,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),n}l.inherits(E,f),y.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(y.prototype,"buffer",{get:c.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(E,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===E&&(e&&e._writableState instanceof y)}})):p=function(e){return e instanceof this},E.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},E.prototype.write=function(e,t,n){var r,i=this._writableState,o=!1,s=!i.objectMode&&(r=e,d.isBuffer(r)||r instanceof h);return s&&!d.isBuffer(e)&&(e=function(e){return d.from(e)}(e)),"function"==typeof t&&(n=t,t=null),s?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof n&&(n=m),i.ended?function(e,t){var n=new Error("write after end");e.emit("error",n),a.nextTick(t,n)}(this,n):(s||function(e,t,n,r){var i=!0,o=!1;return null===n?o=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||t.objectMode||(o=new TypeError("Invalid non-string/buffer chunk")),o&&(e.emit("error",o),a.nextTick(r,o),i=!1),i}(this,i,e,n))&&(i.pendingcb++,o=function(e,t,n,r,i,a){if(!n){var o=function(e,t,n){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=d.from(t,n));return t}(t,r,i);r!==o&&(n=!0,i="buffer",r=o)}var s=t.objectMode?1:r.length;t.length+=s;var u=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(E.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),E.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},E.prototype._writev=null,E.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,n){t.ending=!0,b(e,t),n&&(t.finished?a.nextTick(n):e.once("finish",n));t.ended=!0,e.writable=!1}(this,r,n)},Object.defineProperty(E.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),E.prototype.destroy=g.destroy,E.prototype._undestroy=g.undestroy,E.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,n(26),n(83).setImmediate,n(21))},function(e,t,n){"use strict";var r=n(49).Buffer,i=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function a(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=u,this.end=l,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=c,this.end=f,t=3;break;default:return this.write=d,void(this.end=h)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function o(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function u(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function c(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function f(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}t.StringDecoder=a,a.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n=0)return i>0&&(e.lastNeed=i-1),i;if(--r=0)return i>0&&(e.lastNeed=i-2),i;if(--r=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},a.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,n){!function(e){var t=/#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})?/,n=/rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/,r=/rgba\(\s*(\d+),\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/,i={transparent:[0,0,0,0],black:[0,0,0,255],silver:[192,192,192,255],gray:[128,128,128,255],white:[255,255,255,255],maroon:[128,0,0,255],red:[255,0,0,255],purple:[128,0,128,255],fuchsia:[255,0,255,255],magenta:[255,0,255,255],green:[0,128,0,255],lime:[0,255,0,255],olive:[128,128,0,255],yellow:[255,255,0,255],navy:[0,0,128,255],blue:[0,0,255,255],teal:[0,128,128,255],aqua:[0,255,255,255],cyan:[0,255,255,255]};e.parseColor=function(e){var a,o=null,s=i[e.toLowerCase()];return void 0!==s?o=s:null!==(a=t.exec(e))?o=[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16),void 0!==a[4]?parseInt(a[4],16):255]:null!==(a=n.exec(e))?o=[parseInt(a[1]),parseInt(a[2]),parseInt(a[3]),255]:null!==(a=r.exec(e))&&(o=[parseInt(a[1]),parseInt(a[2]),parseInt(a[3]),parseInt(a[4])]),o};var a=/^((?:\+|\-)?\d*(?:\.\d+)?)(px|em|c|%)$/;e.parseLength=function(e){var t,n=null;return null!==(t=a.exec(e))&&(n={value:parseFloat(t[1]),unit:t[2]}),n}}(t)},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t,n){"use strict";(function(t,r){var i=n(48);e.exports=_;var a,o=n(66);_.ReadableState=E;n(61).EventEmitter;var s=function(e,t){return e.listeners(t).length},u=n(68),l=n(49).Buffer,c=t.Uint8Array||function(){};var f=n(42);f.inherits=n(34);var d=n(80),h=void 0;h=d&&d.debuglog?d.debuglog("stream"):function(){};var p,g=n(81),m=n(69);f.inherits(_,u);var y=["error","close","destroy","pause","resume"];function E(e,t){e=e||{};var r=t instanceof(a=a||n(30));this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var i=e.highWaterMark,o=e.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(p||(p=n(64).StringDecoder),this.decoder=new p(e.encoding),this.encoding=e.encoding)}function _(e){if(a=a||n(30),!(this instanceof _))return new _(e);this._readableState=new E(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),u.call(this)}function v(e,t,n,r,i){var a,o=e._readableState;null===t?(o.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,A(e)}(e,o)):(i||(a=function(e,t){var n;r=t,l.isBuffer(r)||r instanceof c||"string"==typeof t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));var r;return n}(o,t)),a?e.emit("error",a):o.objectMode||t&&t.length>0?("string"==typeof t||o.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function(e){return l.from(e)}(t)),r?o.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):T(e,o,t,!0):o.ended?e.emit("error",new Error("stream.push() after EOF")):(o.reading=!1,o.decoder&&!n?(t=o.decoder.write(t),o.objectMode||0!==t.length?T(e,o,t,!1):I(e,o)):T(e,o,t,!1))):r||(o.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function A(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(h("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(b,e):b(e))}function b(e){h("emit readable"),e.emit("readable"),C(e)}function I(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(R,e,t))}function R(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var r;ea.length?a.length:e;if(o===a.length?i+=a:i+=a.slice(0,e),0===(e-=o)){o===a.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=a.slice(o));break}++r}return t.length-=r,i}(e,t):function(e,t){var n=l.allocUnsafe(e),r=t.head,i=1;r.data.copy(n),e-=r.data.length;for(;r=r.next;){var a=r.data,o=e>a.length?a.length:e;if(a.copy(n,n.length-e,0,o),0===(e-=o)){o===a.length?(++i,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=a.slice(o));break}++i}return t.length-=i,n}(e,t);return r}(e,t.buffer,t.decoder),n);var n}function O(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(M,t,e))}function M(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function P(e,t){for(var n=0,r=e.length;n=t.highWaterMark||t.ended))return h("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?O(this):A(this),null;if(0===(e=S(e,t))&&t.ended)return 0===t.length&&O(this),null;var r,i=t.needReadable;return h("need readable",i),(0===t.length||t.length-e0?D(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&O(this)),null!==r&&this.emit("data",r),r},_.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},_.prototype.pipe=function(e,t){var n=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=e;break;case 1:a.pipes=[a.pipes,e];break;default:a.pipes.push(e)}a.pipesCount+=1,h("pipe count=%d opts=%j",a.pipesCount,t);var u=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?c:_;function l(t,r){h("onunpipe"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,h("cleanup"),e.removeListener("close",y),e.removeListener("finish",E),e.removeListener("drain",f),e.removeListener("error",m),e.removeListener("unpipe",l),n.removeListener("end",c),n.removeListener("end",_),n.removeListener("data",g),d=!0,!a.awaitDrain||e._writableState&&!e._writableState.needDrain||f())}function c(){h("onend"),e.end()}a.endEmitted?i.nextTick(u):n.once("end",u),e.on("unpipe",l);var f=function(e){return function(){var t=e._readableState;h("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,"data")&&(t.flowing=!0,C(e))}}(n);e.on("drain",f);var d=!1;var p=!1;function g(t){h("ondata"),p=!1,!1!==e.write(t)||p||((1===a.pipesCount&&a.pipes===e||a.pipesCount>1&&-1!==P(a.pipes,e))&&!d&&(h("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,p=!0),n.pause())}function m(t){h("onerror",t),_(),e.removeListener("error",m),0===s(e,"error")&&e.emit("error",t)}function y(){e.removeListener("finish",E),_()}function E(){h("onfinish"),e.removeListener("close",y),_()}function _(){h("unpipe"),n.unpipe(e)}return n.on("data",g),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?o(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",m),e.once("close",y),e.once("finish",E),e.emit("pipe",n),a.flowing||(h("pipe resume"),n.resume()),e},_.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a0&&(t+=4+16*n.getUint32(t)),t+=4,e.slice(t)}},{key:"getPSSHForKeySystem",value:function(t,n){var r=e.parsePSSHList(n);return t&&r.hasOwnProperty(t.uuid.toLowerCase())?r[t.uuid.toLowerCase()]:null}},{key:"parseInitDataFromContentProtection",value:function(e,t){return"pssh"in e?(e.pssh.__text=e.pssh.__text.replace(/\r?\n|\r/g,"").replace(/\s+/g,""),t.decodeArray(e.pssh.__text).buffer):null}},{key:"parsePSSHList",value:function(e){if(null==e)return[];for(var t=new DataView(e.buffer||e),n={},r=0;;){var i,a,o=void 0,s=r;if(r>=t.buffer.byteLength)break;if(i=r+t.getUint32(r),r+=4,1886614376===t.getUint32(r))if(r+=4,0===(a=t.getUint8(r))||1===a){r++,r+=3,o="";var u=void 0,l=void 0;for(u=0;u<4;u++)o+=1===(l=t.getUint8(r+u).toString(16)).length?"0"+l:l;for(r+=4,o+="-",u=0;u<2;u++)o+=1===(l=t.getUint8(r+u).toString(16)).length?"0"+l:l;for(r+=2,o+="-",u=0;u<2;u++)o+=1===(l=t.getUint8(r+u).toString(16)).length?"0"+l:l;for(r+=2,o+="-",u=0;u<2;u++)o+=1===(l=t.getUint8(r+u).toString(16)).length?"0"+l:l;for(r+=2,o+="-",u=0;u<6;u++)o+=1===(l=t.getUint8(r+u).toString(16)).length?"0"+l:l;r+=6,r+=4,n[o=o.toLowerCase()]=t.buffer.slice(s,i),r=i}else r=i;else r=i}return n}}],(n=null)&&r(t.prototype,n),i&&r(t,i),e}();var a=function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.contentType=t,this.robustness=n};var o=function e(t,n,r,i,a){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.initDataTypes=["cenc"],t&&t.length&&(this.audioCapabilities=t),n&&n.length&&(this.videoCapabilities=n),this.distinctiveIdentifier=r,this.persistentState=i,this.sessionTypes=a};function s(e){return(s="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})(e)}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function l(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=f(e);if(t){var i=f(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return c(this,n)}}function c(e,t){return!t||"object"!==s(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function f(e){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var d=new(function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&u(e,t)}(n,e);var t=l(n);function n(){var e;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),(e=t.call(this)).MEDIA_KEYERR_CODE=100,e.MEDIA_KEYERR_UNKNOWN_CODE=101,e.MEDIA_KEYERR_CLIENT_CODE=102,e.MEDIA_KEYERR_SERVICE_CODE=103,e.MEDIA_KEYERR_OUTPUT_CODE=104,e.MEDIA_KEYERR_HARDWARECHANGE_CODE=105,e.MEDIA_KEYERR_DOMAIN_CODE=106,e.MEDIA_KEY_MESSAGE_ERROR_CODE=107,e.MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_CODE=108,e.SERVER_CERTIFICATE_UPDATED_ERROR_CODE=109,e.KEY_STATUS_CHANGED_EXPIRED_ERROR_CODE=110,e.MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_CODE=111,e.KEY_SYSTEM_ACCESS_DENIED_ERROR_CODE=112,e.KEY_SESSION_CREATED_ERROR_CODE=113,e.MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE=114,e.MEDIA_KEYERR_UNKNOWN_MESSAGE="An unspecified error occurred. This value is used for errors that don't match any of the other codes.",e.MEDIA_KEYERR_CLIENT_MESSAGE="The Key System could not be installed or updated.",e.MEDIA_KEYERR_SERVICE_MESSAGE="The message passed into update indicated an error from the license service.",e.MEDIA_KEYERR_OUTPUT_MESSAGE="There is no available output device with the required characteristics for the content protection system.",e.MEDIA_KEYERR_HARDWARECHANGE_MESSAGE="A hardware configuration change caused a content protection error.",e.MEDIA_KEYERR_DOMAIN_MESSAGE="An error occurred in a multi-device domain licensing configuration. The most common error is a failure to join the domain.",e.MEDIA_KEY_MESSAGE_ERROR_MESSAGE="Multiple key sessions were creates with a user-agent that does not support sessionIDs!! Unpredictable behavior ahead!",e.MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_MESSAGE="DRM: Empty key message from CDM",e.SERVER_CERTIFICATE_UPDATED_ERROR_MESSAGE="Error updating server certificate -- ",e.KEY_STATUS_CHANGED_EXPIRED_ERROR_MESSAGE="DRM: KeyStatusChange error! -- License has expired",e.MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_MESSAGE="DRM: No license server URL specified!",e.KEY_SYSTEM_ACCESS_DENIED_ERROR_MESSAGE="DRM: KeySystem Access Denied! -- ",e.KEY_SESSION_CREATED_ERROR_MESSAGE="DRM: unable to create session! --",e.MEDIA_KEY_MESSAGE_LICENSER_ERROR_MESSAGE="DRM: licenser error! --",e}return n}(n(24).a)),h=n(8);var p=function e(t,n,r,i,a,o,s,u){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.url=t,this.method=n,this.responseType=r,this.headers=i,this.withCredentials=a,this.messageType=o,this.sessionId=s,this.data=u};var g=function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.url=t,this.headers=n,this.data=r},m=n(5),y=n(14),E=n(1);function _(e){return(_="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})(e)}function v(e){var t,n,r,s,u,l,c,f,v,T,S=(e=e||{}).protectionKeyController,A=e.protectionModel,b=e.eventBus,I=e.events,R=e.debug,N=e.BASE64,w=e.constants,C=[],D=e.cmcdModel,O=e.settings;function M(){if(!(b&&b.hasOwnProperty("on")&&S&&S.hasOwnProperty("getSupportedKeySystemsFromContentProtection")))throw new Error("Missing config parameter(s)")}function P(e,t){var n=i.getPSSHForKeySystem(f,e),r=U(f);if(n){if(L(n))return;try{A.createKeySession(n,r,k(f),t)}catch(e){b.trigger(I.KEY_SESSION_CREATED,{data:null,error:new h.a(d.KEY_SESSION_CREATED_ERROR_CODE,d.KEY_SESSION_CREATED_ERROR_MESSAGE+e.message)})}}else e?A.createKeySession(e,r,k(f),t):b.trigger(I.KEY_SESSION_CREATED,{data:null,error:new h.a(d.KEY_SESSION_CREATED_ERROR_CODE,d.KEY_SESSION_CREATED_ERROR_MESSAGE+"Selected key system is "+(f?f.systemString:null)+". needkey/encrypted event contains no initData corresponding to that key system!")})}function L(e){if(!e)return!1;try{for(var t=A.getAllInitData(),r=0;r0?t.audioRobustness:c,u=t&&t.videoRobustness&&t.videoRobustness.length>0?t.videoRobustness:c,l=k(e),f=t&&t.distinctiveIdentifier?t.distinctiveIdentifier:"optional",d=t&&t.persistentState?t.persistentState:"temporary"===l?"optional":"required";return s.forEach((function(e){e.type===w.AUDIO?n.push(new a(e.codec,i)):e.type===w.VIDEO&&r.push(new a(e.codec,u))})),new o(n,r,f,d,[l])}function k(e){var t=U(e);return t&&t.sessionType?t.sessionType:l}function G(e,t){e=e.sort((function(t,n){return(u&&u[t.ks.systemString]&&u[t.ks.systemString].priority>=0?u[t.ks.systemString].priority:e.length)-(u&&u[n.ks.systemString]&&u[n.ks.systemString].priority>=0?u[n.ks.systemString].priority:e.length)})),void 0===f?function(e,t){var i,a,o=this,s=[];f=null,r.push(e);for(var u=0;u0&&A.setServerCertificate(N.decodeArray(s.serverCertificate).buffer);for(var u=0;u=200&&e.status<=299){var t=new g(e.responseURL,y.a.parseHttpHeaders(e.getAllResponseHeaders?e.getAllResponseHeaders():null),e.response);q(T,t).then((function(){var n=c.getLicenseMessage(t.data,l,r);null!==n?(j(R),A.updateKeySession(o,n)):x(e,R,l,r)}))}else x(e,R,l,r)},k=function(e){j(R,new h.a(d.MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE,d.MEDIA_KEY_MESSAGE_LICENSER_ERROR_MESSAGE+l+' update, XHR aborted. status is "'+e.statusText+'" ('+e.status+"), readyState is "+e.readyState))},G=function(e){j(R,new h.a(d.MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE,d.MEDIA_KEY_MESSAGE_LICENSER_ERROR_MESSAGE+l+' update, XHR error. status is "'+e.statusText+'" ('+e.status+"), readyState is "+e.readyState))},Y=f.getLicenseRequestFromMessage(a),H=c.getHTTPMethod(r),K=c.getResponseType(l,r),V=u&&!isNaN(u.httpTimeout)?u.httpTimeout:8e3,W=o.getSessionID()||null,z=new p(w,H,K,P,L,r,W,Y),X=isNaN(O.get().streaming.retryAttempts[m.a.LICENSE])?3:O.get().streaming.retryAttempts[m.a.LICENSE];q(v,z).then((function(){!function e(t,r,i,a,o,s){var u=new XMLHttpRequest;if(O.get().streaming.cmcd&&O.get().streaming.cmcd.enabled){if(O.get().streaming.cmcd.mode===E.a.CMCD_MODE_QUERY){var l=D.getQueryParameter({url:t.url,type:m.a.LICENSE});l&&(t.url=y.a.addAditionalQueryParameterToUrl(t.url,[l]))}}u.open(t.method,t.url,!0),u.responseType=t.responseType,u.withCredentials=t.withCredentials,i>0&&(u.timeout=i);for(var c in t.headers)u.setRequestHeader(c,t.headers[c]);if(O.get().streaming.cmcd&&O.get().streaming.cmcd.enabled){if(O.get().streaming.cmcd.mode===E.a.CMCD_MODE_HEADER){var f=D.getHeaderParameters({url:t.url,type:m.a.LICENSE});if(f)for(var d in f){var h=f[d];h&&u.setRequestHeader(d,h)}}}var p=function(){r--;var n=isNaN(O.get().streaming.retryIntervals[m.a.LICENSE])?1e3:O.get().streaming.retryIntervals[m.a.LICENSE];setTimeout((function(){e(t,r,i,a,o,s)}),n)};u.onload=function(){this.status>=200&&this.status<=299||r<=0?a(this):(n.warn("License request failed ("+this.status+"). Retrying it... Pending retries: "+r),p())},u.ontimeout=u.onerror=function(){r<=0?s(this):(n.warn("License request network request failed . Retrying it... Pending retries: "+r),p())},u.onabort=function(){o(this)},b.trigger(I.LICENSE_REQUEST_SENDING,{url:t.url,headers:t.headers,payload:t.data,sessionId:t.sessionId}),u.send(t.data)}(z,X,V,B,k,G)}))}else j(R,new h.a(d.MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_CODE,d.MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_MESSAGE))}else j(R,new h.a(d.MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_CODE,d.MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_MESSAGE))}function K(e,t){if(n.debug("DRM: onNeedKey"),"cenc"===e.key.initDataType)if(0===s.length&&(n.warn("DRM: onNeedKey called before initializeForMedia, wait until initialized"),(t=void 0===t?1:t+1)<5))C.push(setTimeout((function(){K(e,t)}),500));else{var r=e.key.initData;if(ArrayBuffer.isView(r)&&(r=r.buffer),f){var a=i.getPSSHForKeySystem(f,r);if(a&&L(a))return}n.debug("DRM: initData:",String.fromCharCode.apply(null,new Uint8Array(r)));var o=S.getSupportedKeySystems(r,u);0!==o.length?G(o,!1):n.debug("DRM: Received needkey event with initData, but we don't support any of the key systems!")}else n.warn("DRM: Only 'cenc' initData is supported! Ignoring initData of type: "+e.key.initDataType)}function q(e,t){return e?e.reduce((function(e,n){return e.then((function(){return n(t)}))}),Promise.resolve()):Promise.resolve()}return t={initializeForMedia:function(e){if(!e)throw new Error("mediaInfo can not be null or undefined");M(),b.on(I.INTERNAL_KEY_MESSAGE,H,this),b.on(I.INTERNAL_KEY_STATUS_CHANGED,Y,this),s.push(e);var t=S.getSupportedKeySystemsFromContentProtection(e.contentProtection);t&&t.length>0&&G(t,!0)},clearMediaInfoArrayByStreamId:function(e){s=s.filter((function(t){return t.streamInfo.id!==e}))},createKeySession:P,loadKeySession:F,removeKeySession:function(e){M(),A.removeKeySession(e)},closeKeySession:function(e){M(),A.closeKeySession(e)},setServerCertificate:function(e){M(),A.setServerCertificate(e)},setMediaElement:x,setSessionType:function(e){l=e},setRobustnessLevel:function(e){c=e},setProtectionData:function(e){u=e,S.setProtectionData(e)},getSupportedKeySystemsFromContentProtection:function(e){return M(),S.getSupportedKeySystemsFromContentProtection(e)},getKeySystems:function(){return S?S.getKeySystems():[]},setKeySystems:function(e){S&&S.setKeySystems(e)},setLicenseRequestFilters:function(e){v=e},setLicenseResponseFilters:function(e){T=e},stop:function(){A&&A.stop()},reset:function(){M(),v=[],T=[],b.off(I.INTERNAL_KEY_MESSAGE,H,this),b.off(I.INTERNAL_KEY_STATUS_CHANGED,Y,this),x(null),f=void 0,A&&(A.reset(),A=null),C.forEach((function(e){return clearTimeout(e)})),C=[],s=[]}},n=R.getLogger(t),r=[],s=[],l="temporary",c="",v=[],T=[],t}v.__dashjs_factory_name="ProtectionController";var T=dashjs.FactoryMaker.getClassFactory(v);var S=function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.keyID=t,this.key=n};function A(e,t){for(var n=0;n0){var a=i.contentProtection.filter((function(e){return e.schemeIdUri&&e.schemeIdUri===C}));if(a&&a.length>0)for(var o=0;o%CUSTOMDATA%'.replace("%CUSTOMDATA%",e),i=[],a=0;a0&&(e[0]&&("string"==typeof e[0]?t=e[0]:n=e[0]),e[1]&&("string"==typeof e[1]?t=e[1]:n=e[1])),{status:t,keyId:n}}function E(e,t,r,i){var a={session:e,initData:t,sessionId:i,handleEvent:function(e){switch(e.type){case"keystatuseschange":c.trigger(f.KEY_STATUSES_CHANGED,{data:this}),e.target.keyStatuses.forEach((function(){var e=y(arguments);switch(e.status){case"expired":c.trigger(f.INTERNAL_KEY_STATUS_CHANGED,{error:new h.a(d.KEY_STATUS_CHANGED_EXPIRED_ERROR_CODE,d.KEY_STATUS_CHANGED_EXPIRED_ERROR_MESSAGE)});break;default:c.trigger(f.INTERNAL_KEY_STATUS_CHANGED,e)}}));break;case"message":var t=ArrayBuffer.isView(e.message)?e.message.buffer:e.message;c.trigger(f.INTERNAL_KEY_MESSAGE,{data:new ae(this,t,void 0,e.messageType)})}},getSessionID:function(){return e.sessionId},getExpirationTime:function(){return e.expiration},getKeyStatuses:function(){return e.keyStatuses},getUsable:function(){var t=!1;return e.keyStatuses.forEach((function(){var e=y(arguments);"usable"===e.status&&(t=!0)})),t},getSessionType:function(){return r}};return e.addEventListener("keystatuseschange",a),e.addEventListener("message",a),e.closed.then((function(){m(a),n.debug("DRM: Session closed. SessionID = "+a.getSessionID()),c.trigger(f.KEY_SESSION_CLOSED,{data:a.getSessionID()})})),o.push(a),a}return t={getAllInitData:function(){for(var e=[],t=0;t=1?t():(e=t.bind(this),r.addEventListener("loadedmetadata",e))}return t={getAllInitData:function(){for(var e=[],t=0;t0&&(l=s.ksConfiguration.videoCapabilities[0]),null===l&&s.ksConfiguration.audioCapabilities&&s.ksConfiguration.audioCapabilities.length>0&&(l=s.ksConfiguration.audioCapabilities[0]),null===l)throw new Error("Can not create sessions for unknown content types.");var c=l.contentType,f=a.createSession(c,new Uint8Array(e),o?new Uint8Array(o):null),m=function(e,t){return{session:e,initData:t,getSessionID:function(){return this.session.sessionId},getExpirationTime:function(){return NaN},getSessionType:function(){return"temporary"},handleEvent:function(e){switch(e.type){case y.error:p.trigger(g.KEY_ERROR,{error:new h.a(d.MEDIA_KEYERR_CODE,"KeyError",this)});break;case y.message:var t=ArrayBuffer.isView(e.message)?e.message.buffer:e.message;p.trigger(g.INTERNAL_KEY_MESSAGE,{data:new ae(this,t,e.destinationURL)});break;case y.ready:n.debug("DRM: Key added."),p.trigger(g.KEY_ADDED);break;case y.close:n.debug("DRM: Session closed. SessionID = "+this.getSessionID()),p.trigger(g.KEY_SESSION_CLOSED,{data:this.getSessionID()})}}}}(f,e);f.addEventListener(y.error,m),f.addEventListener(y.message,m),f.addEventListener(y.ready,m),f.addEventListener(y.close,m),u.push(m),n.debug("DRM: Session created. SessionID = "+m.getSessionID()),p.trigger(g.KEY_SESSION_CREATED,{data:m})},updateKeySession:function(e,t){var n=e.session;c.isClearKey(i)?n.update(new Uint8Array(t.toJWK())):n.update(new Uint8Array(t)),p.trigger(g.KEY_SESSION_UPDATED)},closeKeySession:_,setServerCertificate:function(){},loadKeySession:function(){},removeKeySession:function(){},stop:E,reset:E},n=m.getLogger(t),r=null,i=null,a=null,s=null,u=[],c=$(f).getInstance(),l={handleEvent:function(e){switch(e.type){case y.needkey:if(e.initData){var t=ArrayBuffer.isView(e.initData)?e.initData.buffer:e.initData;p.trigger(g.NEED_KEY,{key:new ie(t,"cenc")})}}}},t}le.__dashjs_factory_name="ProtectionModel_3Feb2014";var ce=dashjs.FactoryMaker.getClassFactory(le);function fe(e){e=e||{};var t,n,r,i,a,s,u,l,c,f=this.context,p=e.eventBus,g=e.events,m=e.debug,y=e.api,E=e.errHandler;function _(){r&&S();for(var e=0;e0&&(t=s.shift(),u.push(t),t.sessionID=e.sessionId,p.trigger(g.KEY_SESSION_CREATED,{data:t})):s.length>0&&(t=s.shift(),u.push(t),0!==s.length&&E.error(new h.a(d.MEDIA_KEY_MESSAGE_ERROR_CODE,d.MEDIA_KEY_MESSAGE_ERROR_MESSAGE))),t){var o=ArrayBuffer.isView(e.message)?e.message.buffer:e.message;t.keyMessage=o,p.trigger(g.INTERNAL_KEY_MESSAGE,{data:new ae(t,o,e.defaultURL)})}else n.warn("No session token found for key message")}}},t}fe.__dashjs_factory_name="ProtectionModel_01b";var de=dashjs.FactoryMaker.getClassFactory(fe),he=[{generateKeyRequest:"generateKeyRequest",addKey:"addKey",cancelKeyRequest:"cancelKeyRequest",needkey:"needkey",keyerror:"keyerror",keyadded:"keyadded",keymessage:"keymessage"},{generateKeyRequest:"webkitGenerateKeyRequest",addKey:"webkitAddKey",cancelKeyRequest:"webkitCancelKeyRequest",needkey:"webkitneedkey",keyerror:"webkitkeyerror",keyadded:"webkitkeyadded",keymessage:"webkitkeymessage"}],pe=[{setMediaKeys:"setMediaKeys",MediaKeys:"MediaKeys",release:"close",needkey:"needkey",error:"keyerror",message:"keymessage",ready:"keyadded",close:"keyclose"},{setMediaKeys:"msSetMediaKeys",MediaKeys:"MSMediaKeys",release:"close",needkey:"msneedkey",error:"mskeyerror",message:"mskeymessage",ready:"mskeyadded",close:"mskeyclose"}];function ge(){var e,t=this.context;function n(e,t){for(var n=0;n=400||t.responsecode<100||t.responsecode>=600)&&l({errorcode:t.responsecode||i.CONNECTION_ERROR,url:t.url,terror:t.tresponse,servicelocation:t._serviceLocation})}var t}function p(e){var t;switch(e.error?e.error.code:0){case MediaError.MEDIA_ERR_NETWORK:t=i.CONNECTION_ERROR;break;case MediaError.MEDIA_ERR_DECODE:t=i.CORRUPT_MEDIA_OTHER;break;default:return}l({errorcode:t})}return t={initialise:function(){r.on(u.MANIFEST_UPDATED,c,t),r.on(u.SERVICE_LOCATION_BLACKLIST_CHANGED,f,t),r.on(u.METRIC_ADDED,h,t),r.on(u.METRIC_UPDATED,h,t),r.on(u.PLAYBACK_ERROR,p,t),r.on(a.a.BECAME_REPORTING_PLAYER,d,t)},reset:function(){r.off(u.MANIFEST_UPDATED,c,t),r.off(u.SERVICE_LOCATION_BLACKLIST_CHANGED,f,t),r.off(u.METRIC_ADDED,h,t),r.off(u.METRIC_UPDATED,h,t),r.off(u.PLAYBACK_ERROR,p,t),r.off(a.a.BECAME_REPORTING_PLAYER,d,t)}}}o.__dashjs_factory_name="DVBErrorsTranslator";var s=dashjs.FactoryMaker.getSingletonFactory(o),u=n(45);function l(e){e=e||{};var t,n,r=!1,i=this.context,a=e.mediaElement;return t={initialize:function(e){e&&e.length&&(e.forEach((function(e){var t=e.starttime,r=t+e.duration;n.add(t,r)})),r=!!e[0]._useWallClockTime)},reset:function(){n.clear()},isEnabled:function(){var e,t=n.length;if(!t)return!0;e=r?(new Date).getTime()/1e3:a.currentTime;for(var i=0;i=200&&r.status<300?t&&t():n&&n())};l.push(r);try{r.open("GET",e),r.onloadend=i,r.onerror=i,r.send()}catch(e){r.onerror()}}(r="".concat(o,"?").concat(r),null,(function(){a=!1}))}))},initialize:function(e,t){var n;if(s=t,!(o=e.dvb_reportingUrl))throw new Error("required parameter missing (dvb:reportingUrl)");i||((n=e.dvb_probability)&&(1e3===n||n/1e3>=r.random())&&(a=!0),i=!0)},reset:function(){f()}},n=d(u).getInstance(),r=p(u).getInstance(),f(),t}g.__dashjs_factory_name="DVBReporting";var m=dashjs.FactoryMaker.getClassFactory(g);function y(e){e=e||{};var t,n={"urn:dvb:dash:reporting:2014":m},r=this.context,i=e.debug?e.debug.getLogger(t):{},a=e.metricsConstants;return t={create:function(e,t){var o;try{(o=n[e.schemeIdUri](r).create({metricsConstants:a})).initialize(e,t)}catch(t){o=null,i.error("ReportingFactory: could not create Reporting with schemeIdUri ".concat(e.schemeIdUri," (").concat(t.message,")"))}return o},register:function(e,t){n[e]=t},unregister:function(e){delete n[e]}}}y.__dashjs_factory_name="ReportingFactory";var E=dashjs.FactoryMaker.getSingletonFactory(y);function _(e){var t=[],n=E(this.context).getInstance(e);return{initialize:function(e,r){e.some((function(e){var i=n.create(e,r);if(i)return t.push(i),!0}))},reset:function(){t.forEach((function(e){return e.reset()})),t=[]},report:function(e,n){t.forEach((function(t){return t.report(e,n)}))}}}_.__dashjs_factory_name="ReportingController";var v=dashjs.FactoryMaker.getClassFactory(_);function T(){return{reconstructFullMetricName:function(e,t,n){var r=e;return t&&(r+="("+t,n&&n.length&&(r+=","+n),r+=")"),r},validateN:function(e){if(!e)throw new Error("missing n");if(isNaN(e))throw new Error("n is NaN");if(e<0)throw new Error("n must be positive");return e}}}T.__dashjs_factory_name="HandlerHelpers";var S=dashjs.FactoryMaker.getSingletonFactory(T);function A(e){var t,n,r,i,a;e=e||{};var o=this.context,s=S(o).getInstance(),u=[],l=e.metricsConstants;function c(){var e=function(){try{return Object.keys(u).map((function(e){return u[e]})).reduce((function(e,t){return e.level=c.end)return null;var h="regionID"in c&&""!==c.regionID?c.regionID:l;if(null!==u&&h!==i.id&&(!("contents"in c)||"contents"in c&&0===c.contents.length||""!==h))return null;var p=new a(c);for(var g in c.sets)t=c.sets[g].end||(p.styleAttrs[c.sets[g].qname]=c.sets[g].value);var m,y={};for(var E in p.styleAttrs)if(y[E]=!0,E===n.byName.writingMode.qname&&!(n.byName.direction.qname in p.styleAttrs)){var _=p.styleAttrs[E];"lrtb"===_||"lr"===_?p.styleAttrs[n.byName.direction.qname]="ltr":"rltb"!==_&&"rl"!==_||(p.styleAttrs[n.byName.direction.qname]="rtl")}if(null!==u)for(var v in n.all){var T=n.all[v];if(T.qname===n.byName.textDecoration.qname){var S=u.styleAttrs[T.qname],A=p.styleAttrs[T.qname],b=[];void 0===A?b=S:-1===A.indexOf("none")?((-1===A.indexOf("noUnderline")&&-1!==S.indexOf("underline")||-1!==A.indexOf("underline"))&&b.push("underline"),(-1===A.indexOf("noLineThrough")&&-1!==S.indexOf("lineThrough")||-1!==A.indexOf("lineThrough"))&&b.push("lineThrough"),(-1===A.indexOf("noOverline")&&-1!==S.indexOf("overline")||-1!==A.indexOf("overline"))&&b.push("overline")):b.push("none"),p.styleAttrs[T.qname]=b}else T.inherit&&T.qname in u.styleAttrs&&!(T.qname in p.styleAttrs)&&(p.styleAttrs[T.qname]=u.styleAttrs[T.qname])}for(var I in n.all){var R=n.all[I];R.qname in p.styleAttrs||("region"===p.kind||!1===R.inherit&&null!==R.initial)&&(p.styleAttrs[R.qname]=R.parse(R.initial),y[R.qname]=!0)}for(var N in n.all){var w=n.all[N];if(w.qname in y&&null!==w.compute){var C=w.compute(e,u,p,p.styleAttrs[w.qname],d);null!==C?p.styleAttrs[w.qname]=C:o(f,"Style '"+w.qname+"' on element '"+p.kind+"' cannot be computed")}}if("none"===p.styleAttrs[n.byName.display.qname])return null;for(var D in null===u?m=null===s?[]:[s]:"contents"in c&&(m=c.contents),m){var O=r(e,t,i,s,p,h,m[D],f,d);null!==O&&p.contents.push(O.element)}for(var M in p.styleAttrs){-1===n.byQName[M].applies.indexOf(p.kind)&&delete p.styleAttrs[M]}if("span"===p.kind&&p.text&&"default"===p.space){var P=p.text.replace(/\s+/g," ");p.text=P}if("p"===p.kind){var L=[];!function e(t,n){if("contents"in t)for(var r in t.contents)e(t.contents[r],n);else n.push(t)}(p,L);for(var F=0,x="after_br",U=0;;)if("after_br"===x)F>=L.length||"br"===L[F].kind?(x="before_br",U=F,F--):("preserve"!==L[F].space&&(L[F].text=L[F].text.replace(/^\s+/g,"")),L[F].text.length>0?(x="looking_br",F++):L.splice(F,1));else if("before_br"===x)if(F<0||"br"===L[F].kind){if(x="after_br",(F=U+1)>=L.length)break}else if("preserve"!==L[F].space&&(L[F].text=L[F].text.replace(/\s+$/g,"")),L[F].text.length>0){if(x="after_br",(F=U+1)>=L.length)break}else L.splice(F,1),F--;else F>=L.length||"br"===L[F].kind?(x="before_br",U=F,F--):F++;!function e(t){if("br"===t.kind)return!1;if("text"in t)return 0===t.text.length;if("contents"in t){for(var n=t.contents.length;n--;)e(t.contents[n])&&t.contents.splice(n,1);return 0===t.contents.length}}(p)}return"div"===p.kind&&n.byName.backgroundImage.qname in p.styleAttrs||"br"===p.kind||"contents"in p&&p.contents.length>0||"span"===p.kind&&null!==p.text||"region"===p.kind&&"always"===p.styleAttrs[n.byName.showBackground.qname]?{region_id:h,element:p}:null}function i(e){this.contents=[],this.aspectRatio=e.aspectRatio}function a(e){for(var t in this.kind=e.kind||"region",e.id&&(this.id=e.id),this.styleAttrs={},e.styleAttrs)this.styleAttrs[t]=e.styleAttrs[t];"text"in e?this.text=e.text:"br"!==e.kind&&(this.contents=[]),"space"in e&&(this.space=e.space)}function o(e,t){if(e&&e.error&&e.error(t))throw t}e.generateISD=function(e,t,n){var a=new i(e),o={};for(var s in e.head.layout.regions){var u=r(e,t,e.head.layout.regions[s],e.body,null,"",e.head.layout.regions[s],n,o);null!==u&&a.contents.push(u.element)}return a}}(t,"undefined"==typeof imscNames?n(47):imscNames,"undefined"==typeof imscStyles?n(59):imscStyles)},function(e,t,n){!function(e,t,n,r,i){function a(e,t,n,r){var i=r&&"seq"===r.timeContainer,o=0;r&&(o=i&&n?n.end:r.begin),t.begin=t.explicit_begin?t.explicit_begin+o:o;var s=t.begin,u=null;for(var l in t.sets)a(e,t.sets[l],u,t),s="seq"===t.timeContainer?t.sets[l].end:Math.max(s,t.sets[l].end),u=t.sets[l];if("contents"in t)for(var c in t.contents)a(e,t.contents[c],u,t),s="seq"===t.timeContainer?t.contents[c].end:Math.max(s,t.contents[c].end),u=t.contents[c];else s=i?t.begin:Number.POSITIVE_INFINITY;null!==t.explicit_end&&null!==t.explicit_dur?t.end=Math.min(t.begin+t.explicit_dur,o+t.explicit_end):null===t.explicit_end&&null!==t.explicit_dur?t.end=t.begin+t.explicit_dur:null!==t.explicit_end&&null===t.explicit_dur?t.end=o+t.explicit_end:t.end=s,delete t.explicit_begin,delete t.explicit_dur,delete t.explicit_end,e._registerEvent(t)}function o(e){this.node=e}function s(){this.events=[],this.head=null,this.body=null}function u(){this.styling=null,this.layout=null}function l(){this.styles={}}function c(){this.id=null,this.styleAttrs=null,this.styleRefs=null}function f(){this.regions={}}function d(e){this.kind=e}function h(e){this.id=e}function p(e){this.regionID=e}function g(e){this.styleAttrs=e}function m(e){this.sets=e}function y(e){this.contents=e}function E(e,t,n){this.explicit_begin=e,this.explicit_end=t,this.explicit_dur=n}function _(){d.call(this,"body")}function v(){d.call(this,"div")}function T(){d.call(this,"p")}function S(){d.call(this,"span")}function A(){d.call(this,"span")}function b(){d.call(this,"br")}function I(){}function R(){}function N(e){return e&&"xml:id"in e.attributes&&e.attributes["xml:id"].value||null}function w(e){return e&&"style"in e.attributes?e.attributes.style.value.split(" "):[]}function C(e,t){var n={};if(null!==e)for(var i in e.attributes){var a=e.attributes[i].uri+" "+e.attributes[i].local,o=r.byQName[a];if(void 0!==o){var s=o.parse(e.attributes[i].value);null!==s?(n[a]=s,o===r.byName.zIndex&&F(t,"zIndex attribute present but not used by IMSC1 since regions do not overlap")):x(t,"Cannot parse styling attribute "+a+" --\x3e "+e.attributes[i].value)}}return n}function D(e,t,n){for(var r in e.attributes)if(e.attributes[r].uri===t&&e.attributes[r].local===n)return e.attributes[r].value;return null}function O(e,t,n){var r,i=null;return null!==(r=/^(\d+(?:\.\d+)?)f$/.exec(n))?null!==t&&(i=parseFloat(r[1])/t):null!==(r=/^(\d+(?:\.\d+)?)t$/.exec(n))?null!==e&&(i=parseFloat(r[1])/e):null!==(r=/^(\d+(?:\.\d+)?)ms$/.exec(n))?i=parseFloat(r[1])/1e3:null!==(r=/^(\d+(?:\.\d+)?)s$/.exec(n))?i=parseFloat(r[1]):null!==(r=/^(\d+(?:\.\d+)?)h$/.exec(n))?i=3600*parseFloat(r[1]):null!==(r=/^(\d+(?:\.\d+)?)m$/.exec(n))?i=60*parseFloat(r[1]):null!==(r=/^(\d{2,}):(\d\d):(\d\d(?:\.\d+)?)$/.exec(n))?i=3600*parseInt(r[1])+60*parseInt(r[2])+parseFloat(r[3]):null!==(r=/^(\d{2,}):(\d\d):(\d\d)\:(\d{2,})$/.exec(n))&&null!==t&&(i=3600*parseInt(r[1])+60*parseInt(r[2])+parseInt(r[3])+(null===r[4]?0:parseInt(r[4])/t)),i}function M(e,t,n){for(;t.styleRefs.length>0;){var r=t.styleRefs.pop();r in e.styles?(M(e,e.styles[r],n),L(e.styles[r].styleAttrs,t.styleAttrs)):x(n,"Non-existant style id referenced")}}function P(e,t,n,r){for(var i=t.length-1;i>=0;i--){var a=t[i];a in e.styles?L(e.styles[a].styleAttrs,n):x(r,"Non-existant style id referenced")}}function L(e,t){for(var n in e)n in t||(t[n]=e[n])}function F(e,t){if(e&&e.warn&&e.warn(t))throw t}function x(e,t){if(e&&e.error&&e.error(t))throw t}function U(e,t){throw e&&e.fatal&&e.fatal(t),t}function B(e,t){for(var n,r=0,i=e.length-1;r<=i;){var a=e[n=Math.floor((r+i)/2)];if(at))return{found:!0,index:n};i=n-1}}return{found:!1,index:r}}e.fromXML=function(e,r,i){var d=t.parser(!0,{xmlns:!0}),h=[],p=[],g=[],m=0,y=null;d.onclosetag=function(e){if(h[0]instanceof l)for(var t in h[0].styles)M(h[0],h[0].styles[t],r);else if(h[0]instanceof T||h[0]instanceof S){if(h[0].contents.length>1){var a,s=[h[0].contents[0]];for(a=1;a0&&i&&"onCloseTag"in i&&i.onCloseTag());g.shift(),p.shift(),h.shift()},d.ontext=function(e){if(void 0===h[0]);else if(h[0]instanceof S||h[0]instanceof T){var t=new A;t.initFromText(y,h[0],e,g[0],r),h[0].contents.push(t)}else h[0]instanceof o&&m>0&&i&&"onText"in i&&i.onText(e)},d.onopentag=function(e){var t=e.attributes["xml:space"];t?g.unshift(t.value):0===g.length?g.unshift("default"):g.unshift(g[0]);var a=e.attributes["xml:lang"];if(a?p.unshift(a.value):0===p.length?p.unshift(""):p.unshift(p[0]),e.uri===n.ns_tt)if("tt"===e.local)null!==y&&U(r,"Two elements at ("+this.line+","+this.column+")"),(y=new s).initFromNode(e,r),h.unshift(y);else if("head"===e.local)h[0]instanceof s||U(r,"Parent of element is not at ("+this.line+","+this.column+")"),null!==y.head&&U("Second element at ("+this.line+","+this.column+")"),y.head=new u,h.unshift(y.head);else if("styling"===e.local)h[0]instanceof u||U(r,"Parent of element is not at ("+this.line+","+this.column+")"),null!==y.head.styling&&U("Second element at ("+this.line+","+this.column+")"),y.head.styling=new l,h.unshift(y.head.styling);else if("style"===e.local){var d;h[0]instanceof l?((d=new c).initFromNode(e,r),d.id?y.head.styling.styles[d.id]=d:x(r,"" ).appendTo( body ); + } + + // We need to make sure to grab the zIndex before setting the + // opacity, because setting the opacity to anything lower than 1 + // causes the zIndex to change from "auto" to 0. + if ( o.zIndex ) { // zIndex option + if ( this.helper.css( "zIndex" ) ) { + this._storedZIndex = this.helper.css( "zIndex" ); + } + this.helper.css( "zIndex", o.zIndex ); + } + + if ( o.opacity ) { // opacity option + if ( this.helper.css( "opacity" ) ) { + this._storedOpacity = this.helper.css( "opacity" ); + } + this.helper.css( "opacity", o.opacity ); + } + + //Prepare scrolling + if ( this.scrollParent[ 0 ] !== this.document[ 0 ] && + this.scrollParent[ 0 ].tagName !== "HTML" ) { + this.overflowOffset = this.scrollParent.offset(); + } + + //Call callbacks + this._trigger( "start", event, this._uiHash() ); + + //Recache the helper size + if ( !this._preserveHelperProportions ) { + this._cacheHelperProportions(); + } + + //Post "activate" events to possible containers + if ( !noActivation ) { + for ( i = this.containers.length - 1; i >= 0; i-- ) { + this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) ); + } + } + + //Prepare possible droppables + if ( $.ui.ddmanager ) { + $.ui.ddmanager.current = this; + } + + if ( $.ui.ddmanager && !o.dropBehaviour ) { + $.ui.ddmanager.prepareOffsets( this, event ); + } + + this.dragging = true; + + this._addClass( this.helper, "ui-sortable-helper" ); + + //Move the helper, if needed + if ( !this.helper.parent().is( this.appendTo ) ) { + this.helper.detach().appendTo( this.appendTo ); + + //Update position + this.offset.parent = this._getParentOffset(); + } + + //Generate the original position + this.position = this.originalPosition = this._generatePosition( event ); + this.originalPageX = event.pageX; + this.originalPageY = event.pageY; + this.lastPositionAbs = this.positionAbs = this._convertPositionTo( "absolute" ); + + this._mouseDrag( event ); + + return true; + + }, + + _scroll: function( event ) { + var o = this.options, + scrolled = false; + + if ( this.scrollParent[ 0 ] !== this.document[ 0 ] && + this.scrollParent[ 0 ].tagName !== "HTML" ) { + + if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) - + event.pageY < o.scrollSensitivity ) { + this.scrollParent[ 0 ].scrollTop = + scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed; + } else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) { + this.scrollParent[ 0 ].scrollTop = + scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed; + } + + if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) - + event.pageX < o.scrollSensitivity ) { + this.scrollParent[ 0 ].scrollLeft = scrolled = + this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed; + } else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) { + this.scrollParent[ 0 ].scrollLeft = scrolled = + this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed; + } + + } else { + + if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) { + scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed ); + } else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) < + o.scrollSensitivity ) { + scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed ); + } + + if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) { + scrolled = this.document.scrollLeft( + this.document.scrollLeft() - o.scrollSpeed + ); + } else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) < + o.scrollSensitivity ) { + scrolled = this.document.scrollLeft( + this.document.scrollLeft() + o.scrollSpeed + ); + } + + } + + return scrolled; + }, + + _mouseDrag: function( event ) { + var i, item, itemElement, intersection, + o = this.options; + + //Compute the helpers position + this.position = this._generatePosition( event ); + this.positionAbs = this._convertPositionTo( "absolute" ); + + //Set the helper position + if ( !this.options.axis || this.options.axis !== "y" ) { + this.helper[ 0 ].style.left = this.position.left + "px"; + } + if ( !this.options.axis || this.options.axis !== "x" ) { + this.helper[ 0 ].style.top = this.position.top + "px"; + } + + //Do scrolling + if ( o.scroll ) { + if ( this._scroll( event ) !== false ) { + + //Update item positions used in position checks + this._refreshItemPositions( true ); + + if ( $.ui.ddmanager && !o.dropBehaviour ) { + $.ui.ddmanager.prepareOffsets( this, event ); + } + } + } + + this.dragDirection = { + vertical: this._getDragVerticalDirection(), + horizontal: this._getDragHorizontalDirection() + }; + + //Rearrange + for ( i = this.items.length - 1; i >= 0; i-- ) { + + //Cache variables and intersection, continue if no intersection + item = this.items[ i ]; + itemElement = item.item[ 0 ]; + intersection = this._intersectsWithPointer( item ); + if ( !intersection ) { + continue; + } + + // Only put the placeholder inside the current Container, skip all + // items from other containers. This works because when moving + // an item from one container to another the + // currentContainer is switched before the placeholder is moved. + // + // Without this, moving items in "sub-sortables" can cause + // the placeholder to jitter between the outer and inner container. + if ( item.instance !== this.currentContainer ) { + continue; + } + + // Cannot intersect with itself + // no useless actions that have been done before + // no action if the item moved is the parent of the item checked + if ( itemElement !== this.currentItem[ 0 ] && + this.placeholder[ intersection === 1 ? + "next" : "prev" ]()[ 0 ] !== itemElement && + !$.contains( this.placeholder[ 0 ], itemElement ) && + ( this.options.type === "semi-dynamic" ? + !$.contains( this.element[ 0 ], itemElement ) : + true + ) + ) { + + this.direction = intersection === 1 ? "down" : "up"; + + if ( this.options.tolerance === "pointer" || + this._intersectsWithSides( item ) ) { + this._rearrange( event, item ); + } else { + break; + } + + this._trigger( "change", event, this._uiHash() ); + break; + } + } + + //Post events to containers + this._contactContainers( event ); + + //Interconnect with droppables + if ( $.ui.ddmanager ) { + $.ui.ddmanager.drag( this, event ); + } + + //Call callbacks + this._trigger( "sort", event, this._uiHash() ); + + this.lastPositionAbs = this.positionAbs; + return false; + + }, + + _mouseStop: function( event, noPropagation ) { + + if ( !event ) { + return; + } + + //If we are using droppables, inform the manager about the drop + if ( $.ui.ddmanager && !this.options.dropBehaviour ) { + $.ui.ddmanager.drop( this, event ); + } + + if ( this.options.revert ) { + var that = this, + cur = this.placeholder.offset(), + axis = this.options.axis, + animation = {}; + + if ( !axis || axis === "x" ) { + animation.left = cur.left - this.offset.parent.left - this.margins.left + + ( this.offsetParent[ 0 ] === this.document[ 0 ].body ? + 0 : + this.offsetParent[ 0 ].scrollLeft + ); + } + if ( !axis || axis === "y" ) { + animation.top = cur.top - this.offset.parent.top - this.margins.top + + ( this.offsetParent[ 0 ] === this.document[ 0 ].body ? + 0 : + this.offsetParent[ 0 ].scrollTop + ); + } + this.reverting = true; + $( this.helper ).animate( + animation, + parseInt( this.options.revert, 10 ) || 500, + function() { + that._clear( event ); + } + ); + } else { + this._clear( event, noPropagation ); + } + + return false; + + }, + + cancel: function() { + + if ( this.dragging ) { + + this._mouseUp( new $.Event( "mouseup", { target: null } ) ); + + if ( this.options.helper === "original" ) { + this.currentItem.css( this._storedCSS ); + this._removeClass( this.currentItem, "ui-sortable-helper" ); + } else { + this.currentItem.show(); + } + + //Post deactivating events to containers + for ( var i = this.containers.length - 1; i >= 0; i-- ) { + this.containers[ i ]._trigger( "deactivate", null, this._uiHash( this ) ); + if ( this.containers[ i ].containerCache.over ) { + this.containers[ i ]._trigger( "out", null, this._uiHash( this ) ); + this.containers[ i ].containerCache.over = 0; + } + } + + } + + if ( this.placeholder ) { + + //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, + // it unbinds ALL events from the original node! + if ( this.placeholder[ 0 ].parentNode ) { + this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] ); + } + if ( this.options.helper !== "original" && this.helper && + this.helper[ 0 ].parentNode ) { + this.helper.remove(); + } + + $.extend( this, { + helper: null, + dragging: false, + reverting: false, + _noFinalSort: null + } ); + + if ( this.domPosition.prev ) { + $( this.domPosition.prev ).after( this.currentItem ); + } else { + $( this.domPosition.parent ).prepend( this.currentItem ); + } + } + + return this; + + }, + + serialize: function( o ) { + + var items = this._getItemsAsjQuery( o && o.connected ), + str = []; + o = o || {}; + + $( items ).each( function() { + var res = ( $( o.item || this ).attr( o.attribute || "id" ) || "" ) + .match( o.expression || ( /(.+)[\-=_](.+)/ ) ); + if ( res ) { + str.push( + ( o.key || res[ 1 ] + "[]" ) + + "=" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) ); + } + } ); + + if ( !str.length && o.key ) { + str.push( o.key + "=" ); + } + + return str.join( "&" ); + + }, + + toArray: function( o ) { + + var items = this._getItemsAsjQuery( o && o.connected ), + ret = []; + + o = o || {}; + + items.each( function() { + ret.push( $( o.item || this ).attr( o.attribute || "id" ) || "" ); + } ); + return ret; + + }, + + /* Be careful with the following core functions */ + _intersectsWith: function( item ) { + + var x1 = this.positionAbs.left, + x2 = x1 + this.helperProportions.width, + y1 = this.positionAbs.top, + y2 = y1 + this.helperProportions.height, + l = item.left, + r = l + item.width, + t = item.top, + b = t + item.height, + dyClick = this.offset.click.top, + dxClick = this.offset.click.left, + isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t && + ( y1 + dyClick ) < b ), + isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l && + ( x1 + dxClick ) < r ), + isOverElement = isOverElementHeight && isOverElementWidth; + + if ( this.options.tolerance === "pointer" || + this.options.forcePointerForContainers || + ( this.options.tolerance !== "pointer" && + this.helperProportions[ this.floating ? "width" : "height" ] > + item[ this.floating ? "width" : "height" ] ) + ) { + return isOverElement; + } else { + + return ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half + x2 - ( this.helperProportions.width / 2 ) < r && // Left Half + t < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half + y2 - ( this.helperProportions.height / 2 ) < b ); // Top Half + + } + }, + + _intersectsWithPointer: function( item ) { + var verticalDirection, horizontalDirection, + isOverElementHeight = ( this.options.axis === "x" ) || + this._isOverAxis( + this.positionAbs.top + this.offset.click.top, item.top, item.height ), + isOverElementWidth = ( this.options.axis === "y" ) || + this._isOverAxis( + this.positionAbs.left + this.offset.click.left, item.left, item.width ), + isOverElement = isOverElementHeight && isOverElementWidth; + + if ( !isOverElement ) { + return false; + } + + verticalDirection = this.dragDirection.vertical; + horizontalDirection = this.dragDirection.horizontal; + + return this.floating ? + ( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 ) : + ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) ); + + }, + + _intersectsWithSides: function( item ) { + + var isOverBottomHalf = this._isOverAxis( this.positionAbs.top + + this.offset.click.top, item.top + ( item.height / 2 ), item.height ), + isOverRightHalf = this._isOverAxis( this.positionAbs.left + + this.offset.click.left, item.left + ( item.width / 2 ), item.width ), + verticalDirection = this.dragDirection.vertical, + horizontalDirection = this.dragDirection.horizontal; + + if ( this.floating && horizontalDirection ) { + return ( ( horizontalDirection === "right" && isOverRightHalf ) || + ( horizontalDirection === "left" && !isOverRightHalf ) ); + } else { + return verticalDirection && ( ( verticalDirection === "down" && isOverBottomHalf ) || + ( verticalDirection === "up" && !isOverBottomHalf ) ); + } + + }, + + _getDragVerticalDirection: function() { + var delta = this.positionAbs.top - this.lastPositionAbs.top; + return delta !== 0 && ( delta > 0 ? "down" : "up" ); + }, + + _getDragHorizontalDirection: function() { + var delta = this.positionAbs.left - this.lastPositionAbs.left; + return delta !== 0 && ( delta > 0 ? "right" : "left" ); + }, + + refresh: function( event ) { + this._refreshItems( event ); + this._setHandleClassName(); + this.refreshPositions(); + return this; + }, + + _connectWith: function() { + var options = this.options; + return options.connectWith.constructor === String ? + [ options.connectWith ] : + options.connectWith; + }, + + _getItemsAsjQuery: function( connected ) { + + var i, j, cur, inst, + items = [], + queries = [], + connectWith = this._connectWith(); + + if ( connectWith && connected ) { + for ( i = connectWith.length - 1; i >= 0; i-- ) { + cur = $( connectWith[ i ], this.document[ 0 ] ); + for ( j = cur.length - 1; j >= 0; j-- ) { + inst = $.data( cur[ j ], this.widgetFullName ); + if ( inst && inst !== this && !inst.options.disabled ) { + queries.push( [ typeof inst.options.items === "function" ? + inst.options.items.call( inst.element ) : + $( inst.options.items, inst.element ) + .not( ".ui-sortable-helper" ) + .not( ".ui-sortable-placeholder" ), inst ] ); + } + } + } + } + + queries.push( [ typeof this.options.items === "function" ? + this.options.items + .call( this.element, null, { options: this.options, item: this.currentItem } ) : + $( this.options.items, this.element ) + .not( ".ui-sortable-helper" ) + .not( ".ui-sortable-placeholder" ), this ] ); + + function addItems() { + items.push( this ); + } + for ( i = queries.length - 1; i >= 0; i-- ) { + queries[ i ][ 0 ].each( addItems ); + } + + return $( items ); + + }, + + _removeCurrentsFromItems: function() { + + var list = this.currentItem.find( ":data(" + this.widgetName + "-item)" ); + + this.items = $.grep( this.items, function( item ) { + for ( var j = 0; j < list.length; j++ ) { + if ( list[ j ] === item.item[ 0 ] ) { + return false; + } + } + return true; + } ); + + }, + + _refreshItems: function( event ) { + + this.items = []; + this.containers = [ this ]; + + var i, j, cur, inst, targetData, _queries, item, queriesLength, + items = this.items, + queries = [ [ typeof this.options.items === "function" ? + this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) : + $( this.options.items, this.element ), this ] ], + connectWith = this._connectWith(); + + //Shouldn't be run the first time through due to massive slow-down + if ( connectWith && this.ready ) { + for ( i = connectWith.length - 1; i >= 0; i-- ) { + cur = $( connectWith[ i ], this.document[ 0 ] ); + for ( j = cur.length - 1; j >= 0; j-- ) { + inst = $.data( cur[ j ], this.widgetFullName ); + if ( inst && inst !== this && !inst.options.disabled ) { + queries.push( [ typeof inst.options.items === "function" ? + inst.options.items + .call( inst.element[ 0 ], event, { item: this.currentItem } ) : + $( inst.options.items, inst.element ), inst ] ); + this.containers.push( inst ); + } + } + } + } + + for ( i = queries.length - 1; i >= 0; i-- ) { + targetData = queries[ i ][ 1 ]; + _queries = queries[ i ][ 0 ]; + + for ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) { + item = $( _queries[ j ] ); + + // Data for target checking (mouse manager) + item.data( this.widgetName + "-item", targetData ); + + items.push( { + item: item, + instance: targetData, + width: 0, height: 0, + left: 0, top: 0 + } ); + } + } + + }, + + _refreshItemPositions: function( fast ) { + var i, item, t, p; + + for ( i = this.items.length - 1; i >= 0; i-- ) { + item = this.items[ i ]; + + //We ignore calculating positions of all connected containers when we're not over them + if ( this.currentContainer && item.instance !== this.currentContainer && + item.item[ 0 ] !== this.currentItem[ 0 ] ) { + continue; + } + + t = this.options.toleranceElement ? + $( this.options.toleranceElement, item.item ) : + item.item; + + if ( !fast ) { + item.width = t.outerWidth(); + item.height = t.outerHeight(); + } + + p = t.offset(); + item.left = p.left; + item.top = p.top; + } + }, + + refreshPositions: function( fast ) { + + // Determine whether items are being displayed horizontally + this.floating = this.items.length ? + this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) : + false; + + // This has to be redone because due to the item being moved out/into the offsetParent, + // the offsetParent's position will change + if ( this.offsetParent && this.helper ) { + this.offset.parent = this._getParentOffset(); + } + + this._refreshItemPositions( fast ); + + var i, p; + + if ( this.options.custom && this.options.custom.refreshContainers ) { + this.options.custom.refreshContainers.call( this ); + } else { + for ( i = this.containers.length - 1; i >= 0; i-- ) { + p = this.containers[ i ].element.offset(); + this.containers[ i ].containerCache.left = p.left; + this.containers[ i ].containerCache.top = p.top; + this.containers[ i ].containerCache.width = + this.containers[ i ].element.outerWidth(); + this.containers[ i ].containerCache.height = + this.containers[ i ].element.outerHeight(); + } + } + + return this; + }, + + _createPlaceholder: function( that ) { + that = that || this; + var className, nodeName, + o = that.options; + + if ( !o.placeholder || o.placeholder.constructor === String ) { + className = o.placeholder; + nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(); + o.placeholder = { + element: function() { + + var element = $( "<" + nodeName + ">", that.document[ 0 ] ); + + that._addClass( element, "ui-sortable-placeholder", + className || that.currentItem[ 0 ].className ) + ._removeClass( element, "ui-sortable-helper" ); + + if ( nodeName === "tbody" ) { + that._createTrPlaceholder( + that.currentItem.find( "tr" ).eq( 0 ), + $( "
s above, but they're unlikely to + // be the correct height on their own if the row heights are dynamic, so we'll + // always assign the height of the dragged item given forcePlaceholderSize + // is true. + if ( !p.height() || ( o.forcePlaceholderSize && + ( nodeName === "tbody" || nodeName === "tr" ) ) ) { + p.height( + that.currentItem.innerHeight() - + parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) - + parseInt( that.currentItem.css( "paddingBottom" ) || 0, 10 ) ); + } + if ( !p.width() ) { + p.width( + that.currentItem.innerWidth() - + parseInt( that.currentItem.css( "paddingLeft" ) || 0, 10 ) - + parseInt( that.currentItem.css( "paddingRight" ) || 0, 10 ) ); + } + } + }; + } + + //Create the placeholder + that.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) ); + + //Append it after the actual current item + that.currentItem.after( that.placeholder ); + + //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) + o.placeholder.update( that, that.placeholder ); + + }, + + _createTrPlaceholder: function( sourceTr, targetTr ) { + var that = this; + + sourceTr.children().each( function() { + $( " 
" + + ""; + thead = ( showWeek ? "" : "" ); + for ( dow = 0; dow < 7; dow++ ) { // days of the week + day = ( dow + firstDay ) % 7; + thead += ""; + } + calender += thead + ""; + daysInMonth = this._getDaysInMonth( drawYear, drawMonth ); + if ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) { + inst.selectedDay = Math.min( inst.selectedDay, daysInMonth ); + } + leadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7; + curRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate + numRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043) + this.maxRows = numRows; + printDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) ); + for ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows + calender += ""; + tbody = ( !showWeek ? "" : "" ); + for ( dow = 0; dow < 7; dow++ ) { // create date picker days + daySettings = ( beforeShowDay ? + beforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, "" ] ); + otherMonth = ( printDate.getMonth() !== drawMonth ); + unselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] || + ( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate ); + tbody += ""; // display selectable date + printDate.setDate( printDate.getDate() + 1 ); + printDate = this._daylightSavingAdjust( printDate ); + } + calender += tbody + ""; + } + drawMonth++; + if ( drawMonth > 11 ) { + drawMonth = 0; + drawYear++; + } + calender += "
" + this._get( inst, "weekHeader" ) + "= 5 ? " class='ui-datepicker-week-end'" : "" ) + ">" + + "" + dayNamesMin[ day ] + "
" + + this._get( inst, "calculateWeek" )( printDate ) + "" + // actions + ( otherMonth && !showOtherMonths ? " " : // display for other months + ( unselectable ? "" + printDate.getDate() + "" : "" + printDate.getDate() + "" ) ) + "
" + ( isMultiMonth ? "" + + ( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? "
" : "" ) : "" ); + group += calender; + } + html += group; + } + html += buttonPanel; + inst._keyEvent = false; + return html; + }, + + /* Generate the month and year header. */ + _generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate, + secondary, monthNames, monthNamesShort ) { + + var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear, + changeMonth = this._get( inst, "changeMonth" ), + changeYear = this._get( inst, "changeYear" ), + showMonthAfterYear = this._get( inst, "showMonthAfterYear" ), + selectMonthLabel = this._get( inst, "selectMonthLabel" ), + selectYearLabel = this._get( inst, "selectYearLabel" ), + html = "
", + monthHtml = ""; + + // Month selection + if ( secondary || !changeMonth ) { + monthHtml += "" + monthNames[ drawMonth ] + ""; + } else { + inMinYear = ( minDate && minDate.getFullYear() === drawYear ); + inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear ); + monthHtml += ""; + } + + if ( !showMonthAfterYear ) { + html += monthHtml + ( secondary || !( changeMonth && changeYear ) ? " " : "" ); + } + + // Year selection + if ( !inst.yearshtml ) { + inst.yearshtml = ""; + if ( secondary || !changeYear ) { + html += "" + drawYear + ""; + } else { + + // determine range of years to display + years = this._get( inst, "yearRange" ).split( ":" ); + thisYear = new Date().getFullYear(); + determineYear = function( value ) { + var year = ( value.match( /c[+\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) : + ( value.match( /[+\-].*/ ) ? thisYear + parseInt( value, 10 ) : + parseInt( value, 10 ) ) ); + return ( isNaN( year ) ? thisYear : year ); + }; + year = determineYear( years[ 0 ] ); + endYear = Math.max( year, determineYear( years[ 1 ] || "" ) ); + year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year ); + endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear ); + inst.yearshtml += ""; + + html += inst.yearshtml; + inst.yearshtml = null; + } + } + + html += this._get( inst, "yearSuffix" ); + if ( showMonthAfterYear ) { + html += ( secondary || !( changeMonth && changeYear ) ? " " : "" ) + monthHtml; + } + html += "
"; // Close datepicker_header + return html; + }, + + /* Adjust one of the date sub-fields. */ + _adjustInstDate: function( inst, offset, period ) { + var year = inst.selectedYear + ( period === "Y" ? offset : 0 ), + month = inst.selectedMonth + ( period === "M" ? offset : 0 ), + day = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === "D" ? offset : 0 ), + date = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) ); + + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + if ( period === "M" || period === "Y" ) { + this._notifyChange( inst ); + } + }, + + /* Ensure a date is within any min/max bounds. */ + _restrictMinMax: function( inst, date ) { + var minDate = this._getMinMaxDate( inst, "min" ), + maxDate = this._getMinMaxDate( inst, "max" ), + newDate = ( minDate && date < minDate ? minDate : date ); + return ( maxDate && newDate > maxDate ? maxDate : newDate ); + }, + + /* Notify change of month/year. */ + _notifyChange: function( inst ) { + var onChange = this._get( inst, "onChangeMonthYear" ); + if ( onChange ) { + onChange.apply( ( inst.input ? inst.input[ 0 ] : null ), + [ inst.selectedYear, inst.selectedMonth + 1, inst ] ); + } + }, + + /* Determine the number of months to show. */ + _getNumberOfMonths: function( inst ) { + var numMonths = this._get( inst, "numberOfMonths" ); + return ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === "number" ? [ 1, numMonths ] : numMonths ) ); + }, + + /* Determine the current maximum date - ensure no time components are set. */ + _getMinMaxDate: function( inst, minMax ) { + return this._determineDate( inst, this._get( inst, minMax + "Date" ), null ); + }, + + /* Find the number of days in a given month. */ + _getDaysInMonth: function( year, month ) { + return 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate(); + }, + + /* Find the day of the week of the first of a month. */ + _getFirstDayOfMonth: function( year, month ) { + return new Date( year, month, 1 ).getDay(); + }, + + /* Determines if we should allow a "next/prev" month display change. */ + _canAdjustMonth: function( inst, offset, curYear, curMonth ) { + var numMonths = this._getNumberOfMonths( inst ), + date = this._daylightSavingAdjust( new Date( curYear, + curMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) ); + + if ( offset < 0 ) { + date.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) ); + } + return this._isInRange( inst, date ); + }, + + /* Is the given date in the accepted range? */ + _isInRange: function( inst, date ) { + var yearSplit, currentYear, + minDate = this._getMinMaxDate( inst, "min" ), + maxDate = this._getMinMaxDate( inst, "max" ), + minYear = null, + maxYear = null, + years = this._get( inst, "yearRange" ); + if ( years ) { + yearSplit = years.split( ":" ); + currentYear = new Date().getFullYear(); + minYear = parseInt( yearSplit[ 0 ], 10 ); + maxYear = parseInt( yearSplit[ 1 ], 10 ); + if ( yearSplit[ 0 ].match( /[+\-].*/ ) ) { + minYear += currentYear; + } + if ( yearSplit[ 1 ].match( /[+\-].*/ ) ) { + maxYear += currentYear; + } + } + + return ( ( !minDate || date.getTime() >= minDate.getTime() ) && + ( !maxDate || date.getTime() <= maxDate.getTime() ) && + ( !minYear || date.getFullYear() >= minYear ) && + ( !maxYear || date.getFullYear() <= maxYear ) ); + }, + + /* Provide the configuration settings for formatting/parsing. */ + _getFormatConfig: function( inst ) { + var shortYearCutoff = this._get( inst, "shortYearCutoff" ); + shortYearCutoff = ( typeof shortYearCutoff !== "string" ? shortYearCutoff : + new Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) ); + return { shortYearCutoff: shortYearCutoff, + dayNamesShort: this._get( inst, "dayNamesShort" ), dayNames: this._get( inst, "dayNames" ), + monthNamesShort: this._get( inst, "monthNamesShort" ), monthNames: this._get( inst, "monthNames" ) }; + }, + + /* Format the given date for display. */ + _formatDate: function( inst, day, month, year ) { + if ( !day ) { + inst.currentDay = inst.selectedDay; + inst.currentMonth = inst.selectedMonth; + inst.currentYear = inst.selectedYear; + } + var date = ( day ? ( typeof day === "object" ? day : + this._daylightSavingAdjust( new Date( year, month, day ) ) ) : + this._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ); + return this.formatDate( this._get( inst, "dateFormat" ), date, this._getFormatConfig( inst ) ); + } +} ); + +/* + * Bind hover events for datepicker elements. + * Done via delegate so the binding only occurs once in the lifetime of the parent div. + * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker. + */ +function datepicker_bindHover( dpDiv ) { + var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"; + return dpDiv.on( "mouseout", selector, function() { + $( this ).removeClass( "ui-state-hover" ); + if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) { + $( this ).removeClass( "ui-datepicker-prev-hover" ); + } + if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) { + $( this ).removeClass( "ui-datepicker-next-hover" ); + } + } ) + .on( "mouseover", selector, datepicker_handleMouseover ); +} + +function datepicker_handleMouseover() { + if ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) { + $( this ).parents( ".ui-datepicker-calendar" ).find( "a" ).removeClass( "ui-state-hover" ); + $( this ).addClass( "ui-state-hover" ); + if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) { + $( this ).addClass( "ui-datepicker-prev-hover" ); + } + if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) { + $( this ).addClass( "ui-datepicker-next-hover" ); + } + } +} + +/* jQuery extend now ignores nulls! */ +function datepicker_extendRemove( target, props ) { + $.extend( target, props ); + for ( var name in props ) { + if ( props[ name ] == null ) { + target[ name ] = props[ name ]; + } + } + return target; +} + +/* Invoke the datepicker functionality. + @param options string - a command, optionally followed by additional parameters or + Object - settings for attaching new datepicker functionality + @return jQuery object */ +$.fn.datepicker = function( options ) { + + /* Verify an empty collection wasn't passed - Fixes #6976 */ + if ( !this.length ) { + return this; + } + + /* Initialise the date picker. */ + if ( !$.datepicker.initialized ) { + $( document ).on( "mousedown", $.datepicker._checkExternalClick ); + $.datepicker.initialized = true; + } + + /* Append datepicker main container to body if not exist. */ + if ( $( "#" + $.datepicker._mainDivId ).length === 0 ) { + $( "body" ).append( $.datepicker.dpDiv ); + } + + var otherArgs = Array.prototype.slice.call( arguments, 1 ); + if ( typeof options === "string" && ( options === "isDisabled" || options === "getDate" || options === "widget" ) ) { + return $.datepicker[ "_" + options + "Datepicker" ]. + apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) ); + } + if ( options === "option" && arguments.length === 2 && typeof arguments[ 1 ] === "string" ) { + return $.datepicker[ "_" + options + "Datepicker" ]. + apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) ); + } + return this.each( function() { + if ( typeof options === "string" ) { + $.datepicker[ "_" + options + "Datepicker" ] + .apply( $.datepicker, [ this ].concat( otherArgs ) ); + } else { + $.datepicker._attachDatepicker( this, options ); + } + } ); +}; + +$.datepicker = new Datepicker(); // singleton instance +$.datepicker.initialized = false; +$.datepicker.uuid = new Date().getTime(); +$.datepicker.version = "1.14.1"; + +var widgetsDatepicker = $.datepicker; + + +/*! + * jQuery UI Dialog 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license */ //>>label: Dialog //>>group: Widgets //>>description: Displays customizable dialog windows. -//>>docs: http://api.jqueryui.com/dialog/ -//>>demos: http://jqueryui.com/dialog/ +//>>docs: https://api.jqueryui.com/dialog/ +//>>demos: https://jqueryui.com/dialog/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/dialog.css //>>css.theme: ../../themes/base/theme.css - $.widget( "ui.dialog", { - version: "1.12.1", + version: "1.14.1", options: { appendTo: "body", autoOpen: true, @@ -11998,6 +11938,7 @@ $.widget( "ui.dialog", { resizable: true, show: null, title: null, + uiDialogTitleHeadingLevel: 0, width: 300, // Callbacks @@ -12144,7 +12085,7 @@ $.widget( "ui.dialog", { // Hiding a focused element doesn't trigger blur in WebKit // so in case we have nothing to focus on, explicitly blur the active element // https://bugs.webkit.org/show_bug.cgi?id=47182 - $.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) ); + $( this.document[ 0 ].activeElement ).trigger( "blur" ); } this._hide( this.uiDialog, this.options.hide, function() { @@ -12188,7 +12129,7 @@ $.widget( "ui.dialog", { } this._isOpen = true; - this.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) ); + this.opener = $( this.document[ 0 ].activeElement ); this._size(); this._position(); @@ -12207,7 +12148,7 @@ $.widget( "ui.dialog", { that._trigger( "focus" ); } ); - // Track the dialog immediately upon openening in case a focus event + // Track the dialog immediately upon opening in case a focus event // somehow occurs outside of the dialog before an element inside the // dialog is focused (#10152) this._makeFocusTarget(); @@ -12243,22 +12184,18 @@ $.widget( "ui.dialog", { hasFocus.eq( 0 ).trigger( "focus" ); }, - _keepFocus: function( event ) { - function checkFocus() { - var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ), - isActive = this.uiDialog[ 0 ] === activeElement || - $.contains( this.uiDialog[ 0 ], activeElement ); - if ( !isActive ) { - this._focusTabbable(); - } + _restoreTabbableFocus: function() { + var activeElement = this.document[ 0 ].activeElement, + isActive = this.uiDialog[ 0 ] === activeElement || + $.contains( this.uiDialog[ 0 ], activeElement ); + if ( !isActive ) { + this._focusTabbable(); } - event.preventDefault(); - checkFocus.call( this ); + }, - // support: IE - // IE <= 8 doesn't prevent moving focus even with event.preventDefault() - // so we check again later - this._delay( checkFocus ); + _keepFocus: function( event ) { + event.preventDefault(); + this._restoreTabbableFocus(); }, _createWrapper: function() { @@ -12268,7 +12205,8 @@ $.widget( "ui.dialog", { // Setting tabIndex makes the div focusable tabIndex: -1, - role: "dialog" + role: "dialog", + "aria-modal": this.options.modal ? "true" : null } ) .appendTo( this._appendTo() ); @@ -12287,8 +12225,8 @@ $.widget( "ui.dialog", { return; } var tabbables = this.uiDialog.find( ":tabbable" ), - first = tabbables.filter( ":first" ), - last = tabbables.filter( ":last" ); + first = tabbables.first(), + last = tabbables.last(); if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) && !event.shiftKey ) { @@ -12341,9 +12279,6 @@ $.widget( "ui.dialog", { } } ); - // Support: IE - // Use type="button" to prevent enter keypresses in textboxes from closing the - // dialog in IE (#9312) this.uiDialogTitlebarClose = $( "" ) .button( { label: $( "
" ).text( this.options.closeText ).html(), @@ -12360,7 +12295,13 @@ $.widget( "ui.dialog", { } } ); - uiDialogTitle = $( "" ).uniqueId().prependTo( this.uiDialogTitlebar ); + var uiDialogHeadingLevel = Number.isInteger( this.options.uiDialogTitleHeadingLevel ) && + this.options.uiDialogTitleHeadingLevel > 0 && + this.options.uiDialogTitleHeadingLevel <= 6 ? + "h" + this.options.uiDialogTitleHeadingLevel : "span"; + + uiDialogTitle = $( "<" + uiDialogHeadingLevel + ">" ) + .uniqueId().prependTo( this.uiDialogTitlebar ); this._addClass( uiDialogTitle, "ui-dialog-title" ); this._title( uiDialogTitle ); @@ -12399,14 +12340,14 @@ $.widget( "ui.dialog", { this.uiDialogButtonPane.remove(); this.uiButtonSet.empty(); - if ( $.isEmptyObject( buttons ) || ( $.isArray( buttons ) && !buttons.length ) ) { + if ( $.isEmptyObject( buttons ) || ( Array.isArray( buttons ) && !buttons.length ) ) { this._removeClass( this.uiDialog, "ui-dialog-buttons" ); return; } $.each( buttons, function( name, props ) { var click, buttonOptions; - props = $.isFunction( props ) ? + props = typeof props === "function" ? { click: props, text: name } : props; @@ -12686,6 +12627,10 @@ $.widget( "ui.dialog", { if ( key === "title" ) { this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) ); } + + if ( key === "modal" ) { + uiDialog.attr( "aria-modal", value ? "true" : null ); + } }, _size: function() { @@ -12781,20 +12726,19 @@ $.widget( "ui.dialog", { if ( !this.document.data( "ui-dialog-overlays" ) ) { // Prevent use of anchors and inputs - // Using _on() for an event handler shared across many instances is - // safe because the dialogs stack and must be closed in reverse order - this._on( this.document, { - focusin: function( event ) { - if ( isOpening ) { - return; - } - - if ( !this._allowInteraction( event ) ) { - event.preventDefault(); - this._trackingInstances()[ 0 ]._focusTabbable(); - } + // This doesn't use `_on()` because it is a shared event handler + // across all open modal dialogs. + this.document.on( "focusin.ui-dialog", function( event ) { + if ( isOpening ) { + return; } - } ); + + var instance = this._trackingInstances()[ 0 ]; + if ( !instance._allowInteraction( event ) ) { + event.preventDefault(); + instance._focusTabbable(); + } + }.bind( this ) ); } this.overlay = $( "
" ) @@ -12817,7 +12761,7 @@ $.widget( "ui.dialog", { var overlays = this.document.data( "ui-dialog-overlays" ) - 1; if ( !overlays ) { - this._off( this.document, "focusin" ); + this.document.off( "focusin.ui-dialog" ); this.document.removeData( "ui-dialog-overlays" ); } else { this.document.data( "ui-dialog-overlays", overlays ); @@ -12831,7 +12775,7 @@ $.widget( "ui.dialog", { // DEPRECATED // TODO: switch return back to widget declaration at top of file when this is removed -if ( $.uiBackCompat !== false ) { +if ( $.uiBackCompat === true ) { // Backcompat for dialogClass option $.widget( "ui.dialog", $.ui.dialog, { @@ -12857,510 +12801,28 @@ var widgetsDialog = $.ui.dialog; /*! - * jQuery UI Droppable 1.12.1 - * http://jqueryui.com + * jQuery UI Progressbar 1.14.1 + * https://jqueryui.com * - * Copyright jQuery Foundation and other contributors + * Copyright OpenJS Foundation and other contributors * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Droppable -//>>group: Interactions -//>>description: Enables drop targets for draggable elements. -//>>docs: http://api.jqueryui.com/droppable/ -//>>demos: http://jqueryui.com/droppable/ - - - -$.widget( "ui.droppable", { - version: "1.12.1", - widgetEventPrefix: "drop", - options: { - accept: "*", - addClasses: true, - greedy: false, - scope: "default", - tolerance: "intersect", - - // Callbacks - activate: null, - deactivate: null, - drop: null, - out: null, - over: null - }, - _create: function() { - - var proportions, - o = this.options, - accept = o.accept; - - this.isover = false; - this.isout = true; - - this.accept = $.isFunction( accept ) ? accept : function( d ) { - return d.is( accept ); - }; - - this.proportions = function( /* valueToWrite */ ) { - if ( arguments.length ) { - - // Store the droppable's proportions - proportions = arguments[ 0 ]; - } else { - - // Retrieve or derive the droppable's proportions - return proportions ? - proportions : - proportions = { - width: this.element[ 0 ].offsetWidth, - height: this.element[ 0 ].offsetHeight - }; - } - }; - - this._addToManager( o.scope ); - - o.addClasses && this._addClass( "ui-droppable" ); - - }, - - _addToManager: function( scope ) { - - // Add the reference and positions to the manager - $.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || []; - $.ui.ddmanager.droppables[ scope ].push( this ); - }, - - _splice: function( drop ) { - var i = 0; - for ( ; i < drop.length; i++ ) { - if ( drop[ i ] === this ) { - drop.splice( i, 1 ); - } - } - }, - - _destroy: function() { - var drop = $.ui.ddmanager.droppables[ this.options.scope ]; - - this._splice( drop ); - }, - - _setOption: function( key, value ) { - - if ( key === "accept" ) { - this.accept = $.isFunction( value ) ? value : function( d ) { - return d.is( value ); - }; - } else if ( key === "scope" ) { - var drop = $.ui.ddmanager.droppables[ this.options.scope ]; - - this._splice( drop ); - this._addToManager( value ); - } - - this._super( key, value ); - }, - - _activate: function( event ) { - var draggable = $.ui.ddmanager.current; - - this._addActiveClass(); - if ( draggable ) { - this._trigger( "activate", event, this.ui( draggable ) ); - } - }, - - _deactivate: function( event ) { - var draggable = $.ui.ddmanager.current; - - this._removeActiveClass(); - if ( draggable ) { - this._trigger( "deactivate", event, this.ui( draggable ) ); - } - }, - - _over: function( event ) { - - var draggable = $.ui.ddmanager.current; - - // Bail if draggable and droppable are same element - if ( !draggable || ( draggable.currentItem || - draggable.element )[ 0 ] === this.element[ 0 ] ) { - return; - } - - if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || - draggable.element ) ) ) { - this._addHoverClass(); - this._trigger( "over", event, this.ui( draggable ) ); - } - - }, - - _out: function( event ) { - - var draggable = $.ui.ddmanager.current; - - // Bail if draggable and droppable are same element - if ( !draggable || ( draggable.currentItem || - draggable.element )[ 0 ] === this.element[ 0 ] ) { - return; - } - - if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem || - draggable.element ) ) ) { - this._removeHoverClass(); - this._trigger( "out", event, this.ui( draggable ) ); - } - - }, - - _drop: function( event, custom ) { - - var draggable = custom || $.ui.ddmanager.current, - childrenIntersection = false; - - // Bail if draggable and droppable are same element - if ( !draggable || ( draggable.currentItem || - draggable.element )[ 0 ] === this.element[ 0 ] ) { - return false; - } - - this.element - .find( ":data(ui-droppable)" ) - .not( ".ui-draggable-dragging" ) - .each( function() { - var inst = $( this ).droppable( "instance" ); - if ( - inst.options.greedy && - !inst.options.disabled && - inst.options.scope === draggable.options.scope && - inst.accept.call( - inst.element[ 0 ], ( draggable.currentItem || draggable.element ) - ) && - intersect( - draggable, - $.extend( inst, { offset: inst.element.offset() } ), - inst.options.tolerance, event - ) - ) { - childrenIntersection = true; - return false; } - } ); - if ( childrenIntersection ) { - return false; - } - - if ( this.accept.call( this.element[ 0 ], - ( draggable.currentItem || draggable.element ) ) ) { - this._removeActiveClass(); - this._removeHoverClass(); - - this._trigger( "drop", event, this.ui( draggable ) ); - return this.element; - } - - return false; - - }, - - ui: function( c ) { - return { - draggable: ( c.currentItem || c.element ), - helper: c.helper, - position: c.position, - offset: c.positionAbs - }; - }, - - // Extension points just to make backcompat sane and avoid duplicating logic - // TODO: Remove in 1.13 along with call to it below - _addHoverClass: function() { - this._addClass( "ui-droppable-hover" ); - }, - - _removeHoverClass: function() { - this._removeClass( "ui-droppable-hover" ); - }, - - _addActiveClass: function() { - this._addClass( "ui-droppable-active" ); - }, - - _removeActiveClass: function() { - this._removeClass( "ui-droppable-active" ); - } -} ); - -var intersect = $.ui.intersect = ( function() { - function isOverAxis( x, reference, size ) { - return ( x >= reference ) && ( x < ( reference + size ) ); - } - - return function( draggable, droppable, toleranceMode, event ) { - - if ( !droppable.offset ) { - return false; - } - - var x1 = ( draggable.positionAbs || - draggable.position.absolute ).left + draggable.margins.left, - y1 = ( draggable.positionAbs || - draggable.position.absolute ).top + draggable.margins.top, - x2 = x1 + draggable.helperProportions.width, - y2 = y1 + draggable.helperProportions.height, - l = droppable.offset.left, - t = droppable.offset.top, - r = l + droppable.proportions().width, - b = t + droppable.proportions().height; - - switch ( toleranceMode ) { - case "fit": - return ( l <= x1 && x2 <= r && t <= y1 && y2 <= b ); - case "intersect": - return ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half - x2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half - t < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half - y2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half - case "pointer": - return isOverAxis( event.pageY, t, droppable.proportions().height ) && - isOverAxis( event.pageX, l, droppable.proportions().width ); - case "touch": - return ( - ( y1 >= t && y1 <= b ) || // Top edge touching - ( y2 >= t && y2 <= b ) || // Bottom edge touching - ( y1 < t && y2 > b ) // Surrounded vertically - ) && ( - ( x1 >= l && x1 <= r ) || // Left edge touching - ( x2 >= l && x2 <= r ) || // Right edge touching - ( x1 < l && x2 > r ) // Surrounded horizontally - ); - default: - return false; - } - }; -} )(); - -/* - This manager tracks offsets of draggables and droppables -*/ -$.ui.ddmanager = { - current: null, - droppables: { "default": [] }, - prepareOffsets: function( t, event ) { - - var i, j, - m = $.ui.ddmanager.droppables[ t.options.scope ] || [], - type = event ? event.type : null, // workaround for #2317 - list = ( t.currentItem || t.element ).find( ":data(ui-droppable)" ).addBack(); - - droppablesLoop: for ( i = 0; i < m.length; i++ ) { - - // No disabled and non-accepted - if ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ], - ( t.currentItem || t.element ) ) ) ) { - continue; - } - - // Filter out elements in the current dragged item - for ( j = 0; j < list.length; j++ ) { - if ( list[ j ] === m[ i ].element[ 0 ] ) { - m[ i ].proportions().height = 0; - continue droppablesLoop; - } - } - - m[ i ].visible = m[ i ].element.css( "display" ) !== "none"; - if ( !m[ i ].visible ) { - continue; - } - - // Activate the droppable if used directly from draggables - if ( type === "mousedown" ) { - m[ i ]._activate.call( m[ i ], event ); - } - - m[ i ].offset = m[ i ].element.offset(); - m[ i ].proportions( { - width: m[ i ].element[ 0 ].offsetWidth, - height: m[ i ].element[ 0 ].offsetHeight - } ); - - } - - }, - drop: function( draggable, event ) { - - var dropped = false; - - // Create a copy of the droppables in case the list changes during the drop (#9116) - $.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() { - - if ( !this.options ) { - return; - } - if ( !this.options.disabled && this.visible && - intersect( draggable, this, this.options.tolerance, event ) ) { - dropped = this._drop.call( this, event ) || dropped; - } - - if ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ], - ( draggable.currentItem || draggable.element ) ) ) { - this.isout = true; - this.isover = false; - this._deactivate.call( this, event ); - } - - } ); - return dropped; - - }, - dragStart: function( draggable, event ) { - - // Listen for scrolling so that if the dragging causes scrolling the position of the - // droppables can be recalculated (see #5003) - draggable.element.parentsUntil( "body" ).on( "scroll.droppable", function() { - if ( !draggable.options.refreshPositions ) { - $.ui.ddmanager.prepareOffsets( draggable, event ); - } - } ); - }, - drag: function( draggable, event ) { - - // If you have a highly dynamic page, you might try this option. It renders positions - // every time you move the mouse. - if ( draggable.options.refreshPositions ) { - $.ui.ddmanager.prepareOffsets( draggable, event ); - } - - // Run through all droppables and check their positions based on specific tolerance options - $.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() { - - if ( this.options.disabled || this.greedyChild || !this.visible ) { - return; - } - - var parentInstance, scope, parent, - intersects = intersect( draggable, this, this.options.tolerance, event ), - c = !intersects && this.isover ? - "isout" : - ( intersects && !this.isover ? "isover" : null ); - if ( !c ) { - return; - } - - if ( this.options.greedy ) { - - // find droppable parents with same scope - scope = this.options.scope; - parent = this.element.parents( ":data(ui-droppable)" ).filter( function() { - return $( this ).droppable( "instance" ).options.scope === scope; - } ); - - if ( parent.length ) { - parentInstance = $( parent[ 0 ] ).droppable( "instance" ); - parentInstance.greedyChild = ( c === "isover" ); - } - } - - // We just moved into a greedy child - if ( parentInstance && c === "isover" ) { - parentInstance.isover = false; - parentInstance.isout = true; - parentInstance._out.call( parentInstance, event ); - } - - this[ c ] = true; - this[ c === "isout" ? "isover" : "isout" ] = false; - this[ c === "isover" ? "_over" : "_out" ].call( this, event ); - - // We just moved out of a greedy child - if ( parentInstance && c === "isout" ) { - parentInstance.isout = false; - parentInstance.isover = true; - parentInstance._over.call( parentInstance, event ); - } - } ); - - }, - dragStop: function( draggable, event ) { - draggable.element.parentsUntil( "body" ).off( "scroll.droppable" ); - - // Call prepareOffsets one final time since IE does not fire return scroll events when - // overflow was caused by drag (see #5003) - if ( !draggable.options.refreshPositions ) { - $.ui.ddmanager.prepareOffsets( draggable, event ); - } - } -}; - -// DEPRECATED -// TODO: switch return back to widget declaration at top of file when this is removed -if ( $.uiBackCompat !== false ) { - - // Backcompat for activeClass and hoverClass options - $.widget( "ui.droppable", $.ui.droppable, { - options: { - hoverClass: false, - activeClass: false - }, - _addActiveClass: function() { - this._super(); - if ( this.options.activeClass ) { - this.element.addClass( this.options.activeClass ); - } - }, - _removeActiveClass: function() { - this._super(); - if ( this.options.activeClass ) { - this.element.removeClass( this.options.activeClass ); - } - }, - _addHoverClass: function() { - this._super(); - if ( this.options.hoverClass ) { - this.element.addClass( this.options.hoverClass ); - } - }, - _removeHoverClass: function() { - this._super(); - if ( this.options.hoverClass ) { - this.element.removeClass( this.options.hoverClass ); - } - } - } ); -} - -var widgetsDroppable = $.ui.droppable; - - -/*! - * jQuery UI Progressbar 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license + * https://jquery.org/license */ //>>label: Progressbar //>>group: Widgets -// jscs:disable maximumLineLength +/* eslint-disable max-len */ //>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators. -// jscs:enable maximumLineLength -//>>docs: http://api.jqueryui.com/progressbar/ -//>>demos: http://jqueryui.com/progressbar/ +/* eslint-enable max-len */ +//>>docs: https://api.jqueryui.com/progressbar/ +//>>demos: https://jqueryui.com/progressbar/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/progressbar.css //>>css.theme: ../../themes/base/theme.css - var widgetsProgressbar = $.widget( "ui.progressbar", { - version: "1.12.1", + version: "1.14.1", options: { classes: { "ui-progressbar": "ui-corner-all", @@ -13502,324 +12964,28 @@ var widgetsProgressbar = $.widget( "ui.progressbar", { /*! - * jQuery UI Selectable 1.12.1 - * http://jqueryui.com + * jQuery UI Selectmenu 1.14.1 + * https://jqueryui.com * - * Copyright jQuery Foundation and other contributors + * Copyright OpenJS Foundation and other contributors * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Selectable -//>>group: Interactions -//>>description: Allows groups of elements to be selected with the mouse. -//>>docs: http://api.jqueryui.com/selectable/ -//>>demos: http://jqueryui.com/selectable/ -//>>css.structure: ../../themes/base/selectable.css - - - -var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, { - version: "1.12.1", - options: { - appendTo: "body", - autoRefresh: true, - distance: 0, - filter: "*", - tolerance: "touch", - - // Callbacks - selected: null, - selecting: null, - start: null, - stop: null, - unselected: null, - unselecting: null - }, - _create: function() { - var that = this; - - this._addClass( "ui-selectable" ); - - this.dragged = false; - - // Cache selectee children based on filter - this.refresh = function() { - that.elementPos = $( that.element[ 0 ] ).offset(); - that.selectees = $( that.options.filter, that.element[ 0 ] ); - that._addClass( that.selectees, "ui-selectee" ); - that.selectees.each( function() { - var $this = $( this ), - selecteeOffset = $this.offset(), - pos = { - left: selecteeOffset.left - that.elementPos.left, - top: selecteeOffset.top - that.elementPos.top - }; - $.data( this, "selectable-item", { - element: this, - $element: $this, - left: pos.left, - top: pos.top, - right: pos.left + $this.outerWidth(), - bottom: pos.top + $this.outerHeight(), - startselected: false, - selected: $this.hasClass( "ui-selected" ), - selecting: $this.hasClass( "ui-selecting" ), - unselecting: $this.hasClass( "ui-unselecting" ) - } ); - } ); - }; - this.refresh(); - - this._mouseInit(); - - this.helper = $( "
" ); - this._addClass( this.helper, "ui-selectable-helper" ); - }, - - _destroy: function() { - this.selectees.removeData( "selectable-item" ); - this._mouseDestroy(); - }, - - _mouseStart: function( event ) { - var that = this, - options = this.options; - - this.opos = [ event.pageX, event.pageY ]; - this.elementPos = $( this.element[ 0 ] ).offset(); - - if ( this.options.disabled ) { - return; - } - - this.selectees = $( options.filter, this.element[ 0 ] ); - - this._trigger( "start", event ); - - $( options.appendTo ).append( this.helper ); - - // position helper (lasso) - this.helper.css( { - "left": event.pageX, - "top": event.pageY, - "width": 0, - "height": 0 - } ); - - if ( options.autoRefresh ) { - this.refresh(); - } - - this.selectees.filter( ".ui-selected" ).each( function() { - var selectee = $.data( this, "selectable-item" ); - selectee.startselected = true; - if ( !event.metaKey && !event.ctrlKey ) { - that._removeClass( selectee.$element, "ui-selected" ); - selectee.selected = false; - that._addClass( selectee.$element, "ui-unselecting" ); - selectee.unselecting = true; - - // selectable UNSELECTING callback - that._trigger( "unselecting", event, { - unselecting: selectee.element - } ); - } - } ); - - $( event.target ).parents().addBack().each( function() { - var doSelect, - selectee = $.data( this, "selectable-item" ); - if ( selectee ) { - doSelect = ( !event.metaKey && !event.ctrlKey ) || - !selectee.$element.hasClass( "ui-selected" ); - that._removeClass( selectee.$element, doSelect ? "ui-unselecting" : "ui-selected" ) - ._addClass( selectee.$element, doSelect ? "ui-selecting" : "ui-unselecting" ); - selectee.unselecting = !doSelect; - selectee.selecting = doSelect; - selectee.selected = doSelect; - - // selectable (UN)SELECTING callback - if ( doSelect ) { - that._trigger( "selecting", event, { - selecting: selectee.element - } ); - } else { - that._trigger( "unselecting", event, { - unselecting: selectee.element - } ); - } - return false; - } - } ); - - }, - - _mouseDrag: function( event ) { - - this.dragged = true; - - if ( this.options.disabled ) { - return; - } - - var tmp, - that = this, - options = this.options, - x1 = this.opos[ 0 ], - y1 = this.opos[ 1 ], - x2 = event.pageX, - y2 = event.pageY; - - if ( x1 > x2 ) { tmp = x2; x2 = x1; x1 = tmp; } - if ( y1 > y2 ) { tmp = y2; y2 = y1; y1 = tmp; } - this.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } ); - - this.selectees.each( function() { - var selectee = $.data( this, "selectable-item" ), - hit = false, - offset = {}; - - //prevent helper from being selected if appendTo: selectable - if ( !selectee || selectee.element === that.element[ 0 ] ) { - return; - } - - offset.left = selectee.left + that.elementPos.left; - offset.right = selectee.right + that.elementPos.left; - offset.top = selectee.top + that.elementPos.top; - offset.bottom = selectee.bottom + that.elementPos.top; - - if ( options.tolerance === "touch" ) { - hit = ( !( offset.left > x2 || offset.right < x1 || offset.top > y2 || - offset.bottom < y1 ) ); - } else if ( options.tolerance === "fit" ) { - hit = ( offset.left > x1 && offset.right < x2 && offset.top > y1 && - offset.bottom < y2 ); - } - - if ( hit ) { - - // SELECT - if ( selectee.selected ) { - that._removeClass( selectee.$element, "ui-selected" ); - selectee.selected = false; - } - if ( selectee.unselecting ) { - that._removeClass( selectee.$element, "ui-unselecting" ); - selectee.unselecting = false; - } - if ( !selectee.selecting ) { - that._addClass( selectee.$element, "ui-selecting" ); - selectee.selecting = true; - - // selectable SELECTING callback - that._trigger( "selecting", event, { - selecting: selectee.element - } ); - } - } else { - - // UNSELECT - if ( selectee.selecting ) { - if ( ( event.metaKey || event.ctrlKey ) && selectee.startselected ) { - that._removeClass( selectee.$element, "ui-selecting" ); - selectee.selecting = false; - that._addClass( selectee.$element, "ui-selected" ); - selectee.selected = true; - } else { - that._removeClass( selectee.$element, "ui-selecting" ); - selectee.selecting = false; - if ( selectee.startselected ) { - that._addClass( selectee.$element, "ui-unselecting" ); - selectee.unselecting = true; - } - - // selectable UNSELECTING callback - that._trigger( "unselecting", event, { - unselecting: selectee.element - } ); - } - } - if ( selectee.selected ) { - if ( !event.metaKey && !event.ctrlKey && !selectee.startselected ) { - that._removeClass( selectee.$element, "ui-selected" ); - selectee.selected = false; - - that._addClass( selectee.$element, "ui-unselecting" ); - selectee.unselecting = true; - - // selectable UNSELECTING callback - that._trigger( "unselecting", event, { - unselecting: selectee.element - } ); - } - } - } - } ); - - return false; - }, - - _mouseStop: function( event ) { - var that = this; - - this.dragged = false; - - $( ".ui-unselecting", this.element[ 0 ] ).each( function() { - var selectee = $.data( this, "selectable-item" ); - that._removeClass( selectee.$element, "ui-unselecting" ); - selectee.unselecting = false; - selectee.startselected = false; - that._trigger( "unselected", event, { - unselected: selectee.element - } ); - } ); - $( ".ui-selecting", this.element[ 0 ] ).each( function() { - var selectee = $.data( this, "selectable-item" ); - that._removeClass( selectee.$element, "ui-selecting" ) - ._addClass( selectee.$element, "ui-selected" ); - selectee.selecting = false; - selectee.selected = true; - selectee.startselected = true; - that._trigger( "selected", event, { - selected: selectee.element - } ); - } ); - this._trigger( "stop", event ); - - this.helper.remove(); - - return false; - } - -} ); - - -/*! - * jQuery UI Selectmenu 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license + * https://jquery.org/license */ //>>label: Selectmenu //>>group: Widgets -// jscs:disable maximumLineLength +/* eslint-disable max-len */ //>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select. -// jscs:enable maximumLineLength -//>>docs: http://api.jqueryui.com/selectmenu/ -//>>demos: http://jqueryui.com/selectmenu/ +/* eslint-enable max-len */ +//>>docs: https://api.jqueryui.com/selectmenu/ +//>>demos: https://jqueryui.com/selectmenu/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css //>>css.theme: ../../themes/base/theme.css - var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, { - version: "1.12.1", + version: "1.14.1", defaultElement: "", widgetEventPrefix: "spin", options: { @@ -16847,11 +14452,6 @@ $.widget( "ui.spinner", { this.previous = this.element.val(); }, blur: function( event ) { - if ( this.cancelBlur ) { - delete this.cancelBlur; - return; - } - this._stop(); this._refresh(); if ( this.previous !== this.element.val() ) { @@ -16859,9 +14459,13 @@ $.widget( "ui.spinner", { } }, mousewheel: function( event, delta ) { - if ( !delta ) { + var activeElement = this.document[ 0 ].activeElement; + var isActive = this.element[ 0 ] === activeElement; + + if ( !isActive || !delta ) { return; } + if ( !this.spinning && !this._start( event ) ) { return false; } @@ -16883,20 +14487,13 @@ $.widget( "ui.spinner", { // If the input is focused then this.previous is properly set from // when the input first received focus. If the input is not focused // then we need to set this.previous based on the value before spinning. - previous = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ) ? + previous = this.element[ 0 ] === this.document[ 0 ].activeElement ? this.previous : this.element.val(); function checkFocus() { - var isActive = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ); + var isActive = this.element[ 0 ] === this.document[ 0 ].activeElement; if ( !isActive ) { this.element.trigger( "focus" ); this.previous = previous; - - // support: IE - // IE sets focus asynchronously, so we need to check if focus - // moved off of the input because the user clicked on the button. - this._delay( function() { - this.previous = previous; - } ); } } @@ -16904,16 +14501,6 @@ $.widget( "ui.spinner", { event.preventDefault(); checkFocus.call( this ); - // Support: IE - // IE doesn't prevent moving focus even with event.preventDefault() - // so we set a flag to know when we should ignore the blur event - // and check (again) if focus moved off of the input. - this.cancelBlur = true; - this._delay( function() { - delete this.cancelBlur; - checkFocus.call( this ); - } ); - if ( this._start( event ) === false ) { return; } @@ -17059,7 +14646,7 @@ $.widget( "ui.spinner", { var incremental = this.options.incremental; if ( incremental ) { - return $.isFunction( incremental ) ? + return typeof incremental === "function" ? incremental( i ) : Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 ); } @@ -17157,7 +14744,7 @@ $.widget( "ui.spinner", { this.buttons.button( value ? "disable" : "enable" ); }, - _setOptions: spinnerModifer( function( options ) { + _setOptions: spinnerModifier( function( options ) { this._super( options ); } ), @@ -17224,7 +14811,7 @@ $.widget( "ui.spinner", { this.uiSpinner.replaceWith( this.element ); }, - stepUp: spinnerModifer( function( steps ) { + stepUp: spinnerModifier( function( steps ) { this._stepUp( steps ); } ), _stepUp: function( steps ) { @@ -17234,7 +14821,7 @@ $.widget( "ui.spinner", { } }, - stepDown: spinnerModifer( function( steps ) { + stepDown: spinnerModifier( function( steps ) { this._stepDown( steps ); } ), _stepDown: function( steps ) { @@ -17244,11 +14831,11 @@ $.widget( "ui.spinner", { } }, - pageUp: spinnerModifer( function( pages ) { + pageUp: spinnerModifier( function( pages ) { this._stepUp( ( pages || 1 ) * this.options.page ); } ), - pageDown: spinnerModifer( function( pages ) { + pageDown: spinnerModifier( function( pages ) { this._stepDown( ( pages || 1 ) * this.options.page ); } ), @@ -17256,7 +14843,7 @@ $.widget( "ui.spinner", { if ( !arguments.length ) { return this._parse( this.element.val() ); } - spinnerModifer( this._value ).call( this, newVal ); + spinnerModifier( this._value ).call( this, newVal ); }, widget: function() { @@ -17266,7 +14853,7 @@ $.widget( "ui.spinner", { // DEPRECATED // TODO: switch return back to widget declaration at top of file when this is removed -if ( $.uiBackCompat !== false ) { +if ( $.uiBackCompat === true ) { // Backcompat for spinner html extension points $.widget( "ui.spinner", $.ui.spinner, { @@ -17293,27 +14880,26 @@ var widgetsSpinner = $.ui.spinner; /*! - * jQuery UI Tabs 1.12.1 - * http://jqueryui.com + * jQuery UI Tabs 1.14.1 + * https://jqueryui.com * - * Copyright jQuery Foundation and other contributors + * Copyright OpenJS Foundation and other contributors * Released under the MIT license. - * http://jquery.org/license + * https://jquery.org/license */ //>>label: Tabs //>>group: Widgets //>>description: Transforms a set of container elements into a tab structure. -//>>docs: http://api.jqueryui.com/tabs/ -//>>demos: http://jqueryui.com/tabs/ +//>>docs: https://api.jqueryui.com/tabs/ +//>>demos: https://jqueryui.com/tabs/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/tabs.css //>>css.theme: ../../themes/base/theme.css - $.widget( "ui.tabs", { - version: "1.12.1", + version: "1.14.1", delay: 300, options: { active: null, @@ -17371,8 +14957,8 @@ $.widget( "ui.tabs", { // Take disabling tabs via class attribute from HTML // into account and update option properly. - if ( $.isArray( options.disabled ) ) { - options.disabled = $.unique( options.disabled.concat( + if ( Array.isArray( options.disabled ) ) { + options.disabled = $.uniqueSort( options.disabled.concat( $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) { return that.tabs.index( li ); } ) @@ -17396,14 +14982,14 @@ $.widget( "ui.tabs", { _initialActive: function() { var active = this.options.active, collapsible = this.options.collapsible, - locationHash = location.hash.substring( 1 ); + locationHashDecoded = decodeURIComponent( location.hash.substring( 1 ) ); if ( active === null ) { // check the fragment identifier in the URL - if ( locationHash ) { + if ( locationHashDecoded ) { this.tabs.each( function( i, tab ) { - if ( $( tab ).attr( "aria-controls" ) === locationHash ) { + if ( $( tab ).attr( "aria-controls" ) === locationHashDecoded ) { active = i; return false; } @@ -17445,7 +15031,7 @@ $.widget( "ui.tabs", { }, _tabKeydown: function( event ) { - var focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( "li" ), + var focusedTab = $( this.document[ 0 ].activeElement ).closest( "li" ), selectedIndex = this.tabs.index( focusedTab ), goingForward = true; @@ -17587,10 +15173,6 @@ $.widget( "ui.tabs", { } }, - _sanitizeSelector: function( hash ) { - return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : ""; - }, - refresh: function() { var options = this.options, lis = this.tablist.children( ":has(a[href])" ); @@ -17682,18 +15264,6 @@ $.widget( "ui.tabs", { if ( $( this ).is( ".ui-state-disabled" ) ) { event.preventDefault(); } - } ) - - // Support: IE <9 - // Preventing the default action in mousedown doesn't prevent IE - // from focusing the element, so if the anchor gets focused, blur. - // We don't have to worry about focusing the previously focused - // element since clicking on a non-focusable element should focus - // the body anyway. - .on( "focus" + this.eventNamespace, ".ui-tabs-anchor", function() { - if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) { - this.blur(); - } } ); this.tabs = this.tablist.find( "> li:has(a[href])" ) @@ -17707,7 +15277,6 @@ $.widget( "ui.tabs", { return $( "a", this )[ 0 ]; } ) .attr( { - role: "presentation", tabIndex: -1 } ); this._addClass( this.anchors, "ui-tabs-anchor" ); @@ -17722,9 +15291,9 @@ $.widget( "ui.tabs", { // Inline tab if ( that._isLocal( anchor ) ) { - selector = anchor.hash; + selector = decodeURIComponent( anchor.hash ); panelId = selector.substring( 1 ); - panel = that.element.find( that._sanitizeSelector( selector ) ); + panel = that.element.find( "#" + CSS.escape( panelId ) ); // remote tab } else { @@ -17779,7 +15348,7 @@ $.widget( "ui.tabs", { _setOptionDisabled: function( disabled ) { var currentItem, li, i; - if ( $.isArray( disabled ) ) { + if ( Array.isArray( disabled ) ) { if ( !disabled.length ) { disabled = false; } else if ( disabled.length === this.anchors.length ) { @@ -18010,7 +15579,7 @@ $.widget( "ui.tabs", { // meta-function to give users option to provide a href string instead of a numerical index. if ( typeof index === "string" ) { index = this.anchors.index( this.anchors.filter( "[href$='" + - $.ui.escapeSelector( index ) + "']" ) ); + CSS.escape( index ) + "']" ) ); } return index; @@ -18067,7 +15636,7 @@ $.widget( "ui.tabs", { disabled = false; } else { index = this._getIndex( index ); - if ( $.isArray( disabled ) ) { + if ( Array.isArray( disabled ) ) { disabled = $.map( disabled, function( num ) { return num !== index ? num : null; } ); @@ -18093,7 +15662,7 @@ $.widget( "ui.tabs", { if ( $.inArray( index, disabled ) !== -1 ) { return; } - if ( $.isArray( disabled ) ) { + if ( Array.isArray( disabled ) ) { disabled = $.merge( [ index ], disabled ).sort(); } else { disabled = [ index ]; @@ -18132,32 +15701,19 @@ $.widget( "ui.tabs", { this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) ); - // Support: jQuery <1.8 - // jQuery <1.8 returns false if the request is canceled in beforeSend, - // but as of 1.8, $.ajax() always returns a jqXHR object. - if ( this.xhr && this.xhr.statusText !== "canceled" ) { + if ( this.xhr.statusText !== "canceled" ) { this._addClass( tab, "ui-tabs-loading" ); panel.attr( "aria-busy", "true" ); this.xhr .done( function( response, status, jqXHR ) { + panel.html( response ); + that._trigger( "load", event, eventData ); - // support: jQuery <1.8 - // http://bugs.jquery.com/ticket/11778 - setTimeout( function() { - panel.html( response ); - that._trigger( "load", event, eventData ); - - complete( jqXHR, status ); - }, 1 ); + complete( jqXHR, status ); } ) .fail( function( jqXHR, status ) { - - // support: jQuery <1.8 - // http://bugs.jquery.com/ticket/11778 - setTimeout( function() { - complete( jqXHR, status ); - }, 1 ); + complete( jqXHR, status ); } ); } }, @@ -18165,10 +15721,7 @@ $.widget( "ui.tabs", { _ajaxSettings: function( anchor, event, eventData ) { var that = this; return { - - // Support: IE <11 only - // Strip any hash that exists to prevent errors with the Ajax request - url: anchor.attr( "href" ).replace( /#.*$/, "" ), + url: anchor.attr( "href" ), beforeSend: function( jqXHR, settings ) { return that._trigger( "beforeLoad", event, $.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) ); @@ -18178,13 +15731,13 @@ $.widget( "ui.tabs", { _getPanelForTab: function( tab ) { var id = $( tab ).attr( "aria-controls" ); - return this.element.find( this._sanitizeSelector( "#" + id ) ); + return this.element.find( "#" + CSS.escape( id ) ); } } ); // DEPRECATED // TODO: Switch return back to widget declaration at top of file when this is removed -if ( $.uiBackCompat !== false ) { +if ( $.uiBackCompat === true ) { // Backcompat for ui-tab class (now ui-tabs-tab) $.widget( "ui.tabs", $.ui.tabs, { @@ -18199,36 +15752,32 @@ var widgetsTabs = $.ui.tabs; /*! - * jQuery UI Tooltip 1.12.1 - * http://jqueryui.com + * jQuery UI Tooltip 1.14.1 + * https://jqueryui.com * - * Copyright jQuery Foundation and other contributors + * Copyright OpenJS Foundation and other contributors * Released under the MIT license. - * http://jquery.org/license + * https://jquery.org/license */ //>>label: Tooltip //>>group: Widgets //>>description: Shows additional information for any element on hover or focus. -//>>docs: http://api.jqueryui.com/tooltip/ -//>>demos: http://jqueryui.com/tooltip/ +//>>docs: https://api.jqueryui.com/tooltip/ +//>>demos: https://jqueryui.com/tooltip/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/tooltip.css //>>css.theme: ../../themes/base/theme.css - $.widget( "ui.tooltip", { - version: "1.12.1", + version: "1.14.1", options: { classes: { "ui-tooltip": "ui-corner-all ui-widget-shadow" }, content: function() { - - // support: IE<9, Opera in jQuery <1.7 - // .text() can't accept undefined, so coerce to a string - var title = $( this ).attr( "title" ) || ""; + var title = $( this ).attr( "title" ); // Escape title, since we're going from an attribute to raw HTML return $( "" ).text( title ).html(); @@ -18255,7 +15804,7 @@ $.widget( "ui.tooltip", { describedby.push( id ); elem .data( "ui-tooltip-id", id ) - .attr( "aria-describedby", $.trim( describedby.join( " " ) ) ); + .attr( "aria-describedby", String.prototype.trim.call( describedby.join( " " ) ) ); }, _removeDescribedBy: function( elem ) { @@ -18268,7 +15817,7 @@ $.widget( "ui.tooltip", { } elem.removeData( "ui-tooltip-id" ); - describedby = $.trim( describedby.join( " " ) ); + describedby = String.prototype.trim.call( describedby.join( " " ) ); if ( describedby ) { elem.attr( "aria-describedby", describedby ); } else { @@ -18410,25 +15959,20 @@ $.widget( "ui.tooltip", { content = contentOption.call( target[ 0 ], function( response ) { - // IE may instantly serve a cached response for ajax requests - // delay this call to _open so the other call to _open runs first - that._delay( function() { + // Ignore async response if tooltip was closed already + if ( !target.data( "ui-tooltip-open" ) ) { + return; + } - // Ignore async response if tooltip was closed already - if ( !target.data( "ui-tooltip-open" ) ) { - return; - } - - // JQuery creates a special event for focusin when it doesn't - // exist natively. To improve performance, the native event - // object is reused and the type is changed. Therefore, we can't - // rely on the type being correct after the event finished - // bubbling, so we set it back to the previous value. (#8740) - if ( event ) { - event.type = eventType; - } - this._open( event, target, response ); - } ); + // JQuery creates a special event for focusin when it doesn't + // exist natively. To improve performance, the native event + // object is reused and the type is changed. Therefore, we can't + // rely on the type being correct after the event finished + // bubbling, so we set it back to the previous value. (#8740) + if ( event ) { + event.type = eventType; + } + that._open( event, target, response ); } ); if ( content ) { this._open( event, target, content ); @@ -18514,7 +16058,7 @@ $.widget( "ui.tooltip", { position( positionOption.of ); clearInterval( delayedShow ); } - }, $.fx.interval ); + }, 13 ); } this._trigger( "open", event, { tooltip: tooltip } ); @@ -18535,7 +16079,10 @@ $.widget( "ui.tooltip", { // tooltips will handle this in destroy. if ( target[ 0 ] !== this.element[ 0 ] ) { events.remove = function() { - this._removeTooltip( this._find( target ).tooltip ); + var targetElement = this._find( target ); + if ( targetElement ) { + this._removeTooltip( targetElement.tooltip ); + } }; } @@ -18635,6 +16182,10 @@ $.widget( "ui.tooltip", { }, _removeTooltip: function( tooltip ) { + + // Clear the interval for delayed tracking tooltips + clearInterval( this.delayedShow ); + tooltip.remove(); delete this.tooltips[ tooltip.attr( "id" ) ]; }, @@ -18681,7 +16232,7 @@ $.widget( "ui.tooltip", { // DEPRECATED // TODO: Switch return back to widget declaration at top of file when this is removed -if ( $.uiBackCompat !== false ) { +if ( $.uiBackCompat === true ) { // Backcompat for tooltipClass option $.widget( "ui.tooltip", $.ui.tooltip, { @@ -18702,5 +16253,2557 @@ var widgetsTooltip = $.ui.tooltip; +// Create a local jQuery because jQuery Color relies on it and the +// global may not exist with AMD and a custom build (#10199). +// This module is a noop if used as a regular AMD module. +// eslint-disable-next-line no-unused-vars +var jQuery = $; -})); \ No newline at end of file + +/*! + * jQuery Color Animations v3.0.0 + * https://github.com/jquery/jquery-color + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + * + * Date: Wed May 15 16:49:44 2024 +0200 + */ + + + var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " + + "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", + + class2type = {}, + toString = class2type.toString, + + // plusequals test for += 100 -= 100 + rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, + + // a set of RE's that can match strings and generate color tuples. + stringParsers = [ { + re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ], + execResult[ 3 ], + execResult[ 4 ] + ]; + } + }, { + re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ] * 2.55, + execResult[ 2 ] * 2.55, + execResult[ 3 ] * 2.55, + execResult[ 4 ] + ]; + } + }, { + + // this regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ], 16 ), + execResult[ 4 ] ? + ( parseInt( execResult[ 4 ], 16 ) / 255 ).toFixed( 2 ) : + 1 + ]; + } + }, { + + // this regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ), + execResult[ 4 ] ? + ( parseInt( execResult[ 4 ] + execResult[ 4 ], 16 ) / 255 ) + .toFixed( 2 ) : + 1 + ]; + } + }, { + re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + space: "hsla", + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ] / 100, + execResult[ 3 ] / 100, + execResult[ 4 ] + ]; + } + } ], + + // jQuery.Color( ) + color = jQuery.Color = function( color, green, blue, alpha ) { + return new jQuery.Color.fn.parse( color, green, blue, alpha ); + }, + spaces = { + rgba: { + props: { + red: { + idx: 0, + type: "byte" + }, + green: { + idx: 1, + type: "byte" + }, + blue: { + idx: 2, + type: "byte" + } + } + }, + + hsla: { + props: { + hue: { + idx: 0, + type: "degrees" + }, + saturation: { + idx: 1, + type: "percent" + }, + lightness: { + idx: 2, + type: "percent" + } + } + } + }, + propTypes = { + "byte": { + floor: true, + max: 255 + }, + "percent": { + max: 1 + }, + "degrees": { + mod: 360, + floor: true + } + }, + + // colors = jQuery.Color.names + colors, + + // local aliases of functions called often + each = jQuery.each; + +// define cache name and alpha properties +// for rgba and hsla spaces +each( spaces, function( spaceName, space ) { + space.cache = "_" + spaceName; + space.props.alpha = { + idx: 3, + type: "percent", + def: 1 + }; +} ); + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); + +function getType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + return typeof obj === "object" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} + +function clamp( value, prop, allowEmpty ) { + var type = propTypes[ prop.type ] || {}; + + if ( value == null ) { + return ( allowEmpty || !prop.def ) ? null : prop.def; + } + + // ~~ is an short way of doing floor for positive numbers + value = type.floor ? ~~value : parseFloat( value ); + + if ( type.mod ) { + + // we add mod before modding to make sure that negatives values + // get converted properly: -10 -> 350 + return ( value + type.mod ) % type.mod; + } + + // for now all property types without mod have min and max + return Math.min( type.max, Math.max( 0, value ) ); +} + +function stringParse( string ) { + var inst = color(), + rgba = inst._rgba = []; + + string = string.toLowerCase(); + + each( stringParsers, function( _i, parser ) { + var parsed, + match = parser.re.exec( string ), + values = match && parser.parse( match ), + spaceName = parser.space || "rgba"; + + if ( values ) { + parsed = inst[ spaceName ]( values ); + + // if this was an rgba parse the assignment might happen twice + // oh well.... + inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; + rgba = inst._rgba = parsed._rgba; + + // exit each( stringParsers ) here because we matched + return false; + } + } ); + + // Found a stringParser that handled it + if ( rgba.length ) { + + // if this came from a parsed string, force "transparent" when alpha is 0 + // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) + if ( rgba.join() === "0,0,0,0" ) { + jQuery.extend( rgba, colors.transparent ); + } + return inst; + } + + // named colors + return colors[ string ]; +} + +color.fn = jQuery.extend( color.prototype, { + parse: function( red, green, blue, alpha ) { + if ( red === undefined ) { + this._rgba = [ null, null, null, null ]; + return this; + } + if ( red.jquery || red.nodeType ) { + red = jQuery( red ).css( green ); + green = undefined; + } + + var inst = this, + type = getType( red ), + rgba = this._rgba = []; + + // more than 1 argument specified - assume ( red, green, blue, alpha ) + if ( green !== undefined ) { + red = [ red, green, blue, alpha ]; + type = "array"; + } + + if ( type === "string" ) { + return this.parse( stringParse( red ) || colors._default ); + } + + if ( type === "array" ) { + each( spaces.rgba.props, function( _key, prop ) { + rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); + } ); + return this; + } + + if ( type === "object" ) { + if ( red instanceof color ) { + each( spaces, function( _spaceName, space ) { + if ( red[ space.cache ] ) { + inst[ space.cache ] = red[ space.cache ].slice(); + } + } ); + } else { + each( spaces, function( _spaceName, space ) { + var cache = space.cache; + each( space.props, function( key, prop ) { + + // if the cache doesn't exist, and we know how to convert + if ( !inst[ cache ] && space.to ) { + + // if the value was null, we don't need to copy it + // if the key was alpha, we don't need to copy it either + if ( key === "alpha" || red[ key ] == null ) { + return; + } + inst[ cache ] = space.to( inst._rgba ); + } + + // this is the only case where we allow nulls for ALL properties. + // call clamp with alwaysAllowEmpty + inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); + } ); + + // everything defined but alpha? + if ( inst[ cache ] && jQuery.inArray( + null, + inst[ cache ].slice( 0, 3 ) + ) < 0 ) { + + // use the default of 1 + if ( inst[ cache ][ 3 ] == null ) { + inst[ cache ][ 3 ] = 1; + } + + if ( space.from ) { + inst._rgba = space.from( inst[ cache ] ); + } + } + } ); + } + return this; + } + }, + is: function( compare ) { + var is = color( compare ), + same = true, + inst = this; + + each( spaces, function( _, space ) { + var localCache, + isCache = is[ space.cache ]; + if ( isCache ) { + localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; + each( space.props, function( _, prop ) { + if ( isCache[ prop.idx ] != null ) { + same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); + return same; + } + } ); + } + return same; + } ); + return same; + }, + _space: function() { + var used = [], + inst = this; + each( spaces, function( spaceName, space ) { + if ( inst[ space.cache ] ) { + used.push( spaceName ); + } + } ); + return used.pop(); + }, + transition: function( other, distance ) { + var end = color( other ), + spaceName = end._space(), + space = spaces[ spaceName ], + startColor = this.alpha() === 0 ? color( "transparent" ) : this, + start = startColor[ space.cache ] || space.to( startColor._rgba ), + result = start.slice(); + + end = end[ space.cache ]; + each( space.props, function( _key, prop ) { + var index = prop.idx, + startValue = start[ index ], + endValue = end[ index ], + type = propTypes[ prop.type ] || {}; + + // if null, don't override start value + if ( endValue === null ) { + return; + } + + // if null - use end + if ( startValue === null ) { + result[ index ] = endValue; + } else { + if ( type.mod ) { + if ( endValue - startValue > type.mod / 2 ) { + startValue += type.mod; + } else if ( startValue - endValue > type.mod / 2 ) { + startValue -= type.mod; + } + } + result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); + } + } ); + return this[ spaceName ]( result ); + }, + blend: function( opaque ) { + + // if we are already opaque - return ourself + if ( this._rgba[ 3 ] === 1 ) { + return this; + } + + var rgb = this._rgba.slice(), + a = rgb.pop(), + blend = color( opaque )._rgba; + + return color( jQuery.map( rgb, function( v, i ) { + return ( 1 - a ) * blend[ i ] + a * v; + } ) ); + }, + toRgbaString: function() { + var prefix = "rgba(", + rgba = jQuery.map( this._rgba, function( v, i ) { + if ( v != null ) { + return v; + } + return i > 2 ? 1 : 0; + } ); + + if ( rgba[ 3 ] === 1 ) { + rgba.pop(); + prefix = "rgb("; + } + + return prefix + rgba.join( ", " ) + ")"; + }, + toHslaString: function() { + var prefix = "hsla(", + hsla = jQuery.map( this.hsla(), function( v, i ) { + if ( v == null ) { + v = i > 2 ? 1 : 0; + } + + // catch 1 and 2 + if ( i && i < 3 ) { + v = Math.round( v * 100 ) + "%"; + } + return v; + } ); + + if ( hsla[ 3 ] === 1 ) { + hsla.pop(); + prefix = "hsl("; + } + return prefix + hsla.join( ", " ) + ")"; + }, + toHexString: function( includeAlpha ) { + var rgba = this._rgba.slice(), + alpha = rgba.pop(); + + if ( includeAlpha ) { + rgba.push( ~~( alpha * 255 ) ); + } + + return "#" + jQuery.map( rgba, function( v ) { + + // default to 0 when nulls exist + return ( "0" + ( v || 0 ).toString( 16 ) ).substr( -2 ); + } ).join( "" ); + }, + toString: function() { + return this.toRgbaString(); + } +} ); +color.fn.parse.prototype = color.fn; + +// hsla conversions adapted from: +// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 + +function hue2rgb( p, q, h ) { + h = ( h + 1 ) % 1; + if ( h * 6 < 1 ) { + return p + ( q - p ) * h * 6; + } + if ( h * 2 < 1 ) { + return q; + } + if ( h * 3 < 2 ) { + return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6; + } + return p; +} + +spaces.hsla.to = function( rgba ) { + if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { + return [ null, null, null, rgba[ 3 ] ]; + } + var r = rgba[ 0 ] / 255, + g = rgba[ 1 ] / 255, + b = rgba[ 2 ] / 255, + a = rgba[ 3 ], + max = Math.max( r, g, b ), + min = Math.min( r, g, b ), + diff = max - min, + add = max + min, + l = add * 0.5, + h, s; + + if ( min === max ) { + h = 0; + } else if ( r === max ) { + h = ( 60 * ( g - b ) / diff ) + 360; + } else if ( g === max ) { + h = ( 60 * ( b - r ) / diff ) + 120; + } else { + h = ( 60 * ( r - g ) / diff ) + 240; + } + + // chroma (diff) == 0 means greyscale which, by definition, saturation = 0% + // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) + if ( diff === 0 ) { + s = 0; + } else if ( l <= 0.5 ) { + s = diff / add; + } else { + s = diff / ( 2 - add ); + } + return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ]; +}; + +spaces.hsla.from = function( hsla ) { + if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { + return [ null, null, null, hsla[ 3 ] ]; + } + var h = hsla[ 0 ] / 360, + s = hsla[ 1 ], + l = hsla[ 2 ], + a = hsla[ 3 ], + q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, + p = 2 * l - q; + + return [ + Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), + Math.round( hue2rgb( p, q, h ) * 255 ), + Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), + a + ]; +}; + + +each( spaces, function( spaceName, space ) { + var props = space.props, + cache = space.cache, + to = space.to, + from = space.from; + + // makes rgba() and hsla() + color.fn[ spaceName ] = function( value ) { + + // generate a cache for this space if it doesn't exist + if ( to && !this[ cache ] ) { + this[ cache ] = to( this._rgba ); + } + if ( value === undefined ) { + return this[ cache ].slice(); + } + + var ret, + type = getType( value ), + arr = ( type === "array" || type === "object" ) ? value : arguments, + local = this[ cache ].slice(); + + each( props, function( key, prop ) { + var val = arr[ type === "object" ? key : prop.idx ]; + if ( val == null ) { + val = local[ prop.idx ]; + } + local[ prop.idx ] = clamp( val, prop ); + } ); + + if ( from ) { + ret = color( from( local ) ); + ret[ cache ] = local; + return ret; + } else { + return color( local ); + } + }; + + // makes red() green() blue() alpha() hue() saturation() lightness() + each( props, function( key, prop ) { + + // alpha is included in more than one space + if ( color.fn[ key ] ) { + return; + } + color.fn[ key ] = function( value ) { + var local, cur, match, fn, + vtype = getType( value ); + + if ( key === "alpha" ) { + fn = this._hsla ? "hsla" : "rgba"; + } else { + fn = spaceName; + } + local = this[ fn ](); + cur = local[ prop.idx ]; + + if ( vtype === "undefined" ) { + return cur; + } + + if ( vtype === "function" ) { + value = value.call( this, cur ); + vtype = getType( value ); + } + if ( value == null && prop.empty ) { + return this; + } + if ( vtype === "string" ) { + match = rplusequals.exec( value ); + if ( match ) { + value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); + } + } + local[ prop.idx ] = value; + return this[ fn ]( local ); + }; + } ); +} ); + +// add cssHook and .fx.step function for each named hook. +// accept a space separated string of properties +color.hook = function( hook ) { + var hooks = hook.split( " " ); + each( hooks, function( _i, hook ) { + jQuery.cssHooks[ hook ] = { + set: function( elem, value ) { + var parsed; + + if ( value !== "transparent" && + ( getType( value ) !== "string" || + ( parsed = stringParse( value ) ) ) ) { + value = color( parsed || value ); + value = value.toRgbaString(); + } + elem.style[ hook ] = value; + } + }; + jQuery.fx.step[ hook ] = function( fx ) { + if ( !fx.colorInit ) { + fx.start = color( fx.elem, hook ); + fx.end = color( fx.end ); + fx.colorInit = true; + } + jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); + }; + } ); + +}; + +color.hook( stepHooks ); + +jQuery.cssHooks.borderColor = { + expand: function( value ) { + var expanded = {}; + + each( [ "Top", "Right", "Bottom", "Left" ], function( _i, part ) { + expanded[ "border" + part + "Color" ] = value; + } ); + return expanded; + } +}; + +// Basic color names only. +// Usage of any of the other color names requires adding yourself or including +// jquery.color.svg-names.js. +colors = jQuery.Color.names = { + + // 4.1. Basic color keywords + aqua: "#00ffff", + black: "#000000", + blue: "#0000ff", + fuchsia: "#ff00ff", + gray: "#808080", + green: "#008000", + lime: "#00ff00", + maroon: "#800000", + navy: "#000080", + olive: "#808000", + purple: "#800080", + red: "#ff0000", + silver: "#c0c0c0", + teal: "#008080", + white: "#ffffff", + yellow: "#ffff00", + + // 4.2.3. "transparent" color keyword + transparent: [ null, null, null, 0 ], + + _default: "#ffffff" +}; + + +/*! + * jQuery UI Effects 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Effects Core +//>>group: Effects +/* eslint-disable max-len */ +//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects. +/* eslint-enable max-len */ +//>>docs: https://api.jqueryui.com/category/effects-core/ +//>>demos: https://jqueryui.com/effect/ + + +var dataSpace = "ui-effects-", + dataSpaceStyle = "ui-effects-style", + dataSpaceAnimated = "ui-effects-animated"; + +$.effects = { + effect: {} +}; + +/******************************************************************************/ +/****************************** CLASS ANIMATIONS ******************************/ +/******************************************************************************/ +( function() { + +var classAnimationActions = [ "add", "remove", "toggle" ], + shorthandStyles = { + border: 1, + borderBottom: 1, + borderColor: 1, + borderLeft: 1, + borderRight: 1, + borderTop: 1, + borderWidth: 1, + margin: 1, + padding: 1 + }; + +$.each( + [ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], + function( _, prop ) { + $.fx.step[ prop ] = function( fx ) { + if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { + jQuery.style( fx.elem, prop, fx.end ); + fx.setAttr = true; + } + }; + } +); + +function camelCase( string ) { + return string.replace( /-([\da-z])/gi, function( all, letter ) { + return letter.toUpperCase(); + } ); +} + +function getElementStyles( elem ) { + var key, len, + style = elem.ownerDocument.defaultView.getComputedStyle( elem ), + styles = {}; + + len = style.length; + while ( len-- ) { + key = style[ len ]; + if ( typeof style[ key ] === "string" ) { + styles[ camelCase( key ) ] = style[ key ]; + } + } + + return styles; +} + +function styleDifference( oldStyle, newStyle ) { + var diff = {}, + name, value; + + for ( name in newStyle ) { + value = newStyle[ name ]; + if ( oldStyle[ name ] !== value ) { + if ( !shorthandStyles[ name ] ) { + if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { + diff[ name ] = value; + } + } + } + } + + return diff; +} + +$.effects.animateClass = function( value, duration, easing, callback ) { + var o = $.speed( duration, easing, callback ); + + return this.queue( function() { + var animated = $( this ), + baseClass = animated.attr( "class" ) || "", + applyClassChange, + allAnimations = o.children ? animated.find( "*" ).addBack() : animated; + + // Map the animated objects to store the original styles. + allAnimations = allAnimations.map( function() { + var el = $( this ); + return { + el: el, + start: getElementStyles( this ) + }; + } ); + + // Apply class change + applyClassChange = function() { + $.each( classAnimationActions, function( i, action ) { + if ( value[ action ] ) { + animated[ action + "Class" ]( value[ action ] ); + } + } ); + }; + applyClassChange(); + + // Map all animated objects again - calculate new styles and diff + allAnimations = allAnimations.map( function() { + this.end = getElementStyles( this.el[ 0 ] ); + this.diff = styleDifference( this.start, this.end ); + return this; + } ); + + // Apply original class + animated.attr( "class", baseClass ); + + // Map all animated objects again - this time collecting a promise + allAnimations = allAnimations.map( function() { + var styleInfo = this, + dfd = $.Deferred(), + opts = $.extend( {}, o, { + queue: false, + complete: function() { + dfd.resolve( styleInfo ); + } + } ); + + this.el.animate( this.diff, opts ); + return dfd.promise(); + } ); + + // Once all animations have completed: + $.when.apply( $, allAnimations.get() ).done( function() { + + // Set the final class + applyClassChange(); + + // For each animated element, + // clear all css properties that were animated + $.each( arguments, function() { + var el = this.el; + $.each( this.diff, function( key ) { + el.css( key, "" ); + } ); + } ); + + // This is guarnteed to be there if you use jQuery.speed() + // it also handles dequeuing the next anim... + o.complete.call( animated[ 0 ] ); + } ); + } ); +}; + +$.fn.extend( { + addClass: ( function( orig ) { + return function( classNames, speed, easing, callback ) { + return speed ? + $.effects.animateClass.call( this, + { add: classNames }, speed, easing, callback ) : + orig.apply( this, arguments ); + }; + } )( $.fn.addClass ), + + removeClass: ( function( orig ) { + return function( classNames, speed, easing, callback ) { + return arguments.length > 1 ? + $.effects.animateClass.call( this, + { remove: classNames }, speed, easing, callback ) : + orig.apply( this, arguments ); + }; + } )( $.fn.removeClass ), + + toggleClass: ( function( orig ) { + return function( classNames, force, speed, easing, callback ) { + if ( typeof force === "boolean" || force === undefined ) { + if ( !speed ) { + + // Without speed parameter + return orig.apply( this, arguments ); + } else { + return $.effects.animateClass.call( this, + ( force ? { add: classNames } : { remove: classNames } ), + speed, easing, callback ); + } + } else { + + // Without force parameter + return $.effects.animateClass.call( this, + { toggle: classNames }, force, speed, easing ); + } + }; + } )( $.fn.toggleClass ), + + switchClass: function( remove, add, speed, easing, callback ) { + return $.effects.animateClass.call( this, { + add: add, + remove: remove + }, speed, easing, callback ); + } +} ); + +} )(); + +/******************************************************************************/ +/*********************************** EFFECTS **********************************/ +/******************************************************************************/ + +( function() { + +if ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) { + $.expr.pseudos.animated = ( function( orig ) { + return function( elem ) { + return !!$( elem ).data( dataSpaceAnimated ) || orig( elem ); + }; + } )( $.expr.pseudos.animated ); +} + +if ( $.uiBackCompat === true ) { + $.extend( $.effects, { + + // Saves a set of properties in a data storage + save: function( element, set ) { + var i = 0, length = set.length; + for ( ; i < length; i++ ) { + if ( set[ i ] !== null ) { + element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); + } + } + }, + + // Restores a set of previously saved properties from a data storage + restore: function( element, set ) { + var val, i = 0, length = set.length; + for ( ; i < length; i++ ) { + if ( set[ i ] !== null ) { + val = element.data( dataSpace + set[ i ] ); + element.css( set[ i ], val ); + } + } + }, + + setMode: function( el, mode ) { + if ( mode === "toggle" ) { + mode = el.is( ":hidden" ) ? "show" : "hide"; + } + return mode; + }, + + // Wraps the element around a wrapper that copies position properties + createWrapper: function( element ) { + + // If the element is already wrapped, return it + if ( element.parent().is( ".ui-effects-wrapper" ) ) { + return element.parent(); + } + + // Wrap the element + var props = { + width: element.outerWidth( true ), + height: element.outerHeight( true ), + "float": element.css( "float" ) + }, + wrapper = $( "
" ) + .addClass( "ui-effects-wrapper" ) + .css( { + fontSize: "100%", + background: "transparent", + border: "none", + margin: 0, + padding: 0 + } ), + + // Store the size in case width/height are defined in % - Fixes #5245 + size = { + width: element.width(), + height: element.height() + }, + active = document.activeElement; + + // Support: Firefox + // Firefox incorrectly exposes anonymous content + // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 + try { + // eslint-disable-next-line no-unused-expressions + active.id; + } catch ( e ) { + active = document.body; + } + + element.wrap( wrapper ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).trigger( "focus" ); + } + + // Hotfix for jQuery 1.4 since some change in wrap() seems to actually + // lose the reference to the wrapped element + wrapper = element.parent(); + + // Transfer positioning properties to the wrapper + if ( element.css( "position" ) === "static" ) { + wrapper.css( { position: "relative" } ); + element.css( { position: "relative" } ); + } else { + $.extend( props, { + position: element.css( "position" ), + zIndex: element.css( "z-index" ) + } ); + $.each( [ "top", "left", "bottom", "right" ], function( i, pos ) { + props[ pos ] = element.css( pos ); + if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { + props[ pos ] = "auto"; + } + } ); + element.css( { + position: "relative", + top: 0, + left: 0, + right: "auto", + bottom: "auto" + } ); + } + element.css( size ); + + return wrapper.css( props ).show(); + }, + + removeWrapper: function( element ) { + var active = document.activeElement; + + if ( element.parent().is( ".ui-effects-wrapper" ) ) { + element.parent().replaceWith( element ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).trigger( "focus" ); + } + } + + return element; + } + } ); +} + +$.extend( $.effects, { + version: "1.14.1", + + define: function( name, mode, effect ) { + if ( !effect ) { + effect = mode; + mode = "effect"; + } + + $.effects.effect[ name ] = effect; + $.effects.effect[ name ].mode = mode; + + return effect; + }, + + scaledDimensions: function( element, percent, direction ) { + if ( percent === 0 ) { + return { + height: 0, + width: 0, + outerHeight: 0, + outerWidth: 0 + }; + } + + var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1, + y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1; + + return { + height: element.height() * y, + width: element.width() * x, + outerHeight: element.outerHeight() * y, + outerWidth: element.outerWidth() * x + }; + + }, + + clipToBox: function( animation ) { + return { + width: animation.clip.right - animation.clip.left, + height: animation.clip.bottom - animation.clip.top, + left: animation.clip.left, + top: animation.clip.top + }; + }, + + // Injects recently queued functions to be first in line (after "inprogress") + unshift: function( element, queueLength, count ) { + var queue = element.queue(); + + if ( queueLength > 1 ) { + queue.splice.apply( queue, + [ 1, 0 ].concat( queue.splice( queueLength, count ) ) ); + } + element.dequeue(); + }, + + saveStyle: function( element ) { + element.data( dataSpaceStyle, element[ 0 ].style.cssText ); + }, + + restoreStyle: function( element ) { + element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || ""; + element.removeData( dataSpaceStyle ); + }, + + mode: function( element, mode ) { + var hidden = element.is( ":hidden" ); + + if ( mode === "toggle" ) { + mode = hidden ? "show" : "hide"; + } + if ( hidden ? mode === "hide" : mode === "show" ) { + mode = "none"; + } + return mode; + }, + + // Translates a [top,left] array into a baseline value + getBaseline: function( origin, original ) { + var y, x; + + switch ( origin[ 0 ] ) { + case "top": + y = 0; + break; + case "middle": + y = 0.5; + break; + case "bottom": + y = 1; + break; + default: + y = origin[ 0 ] / original.height; + } + + switch ( origin[ 1 ] ) { + case "left": + x = 0; + break; + case "center": + x = 0.5; + break; + case "right": + x = 1; + break; + default: + x = origin[ 1 ] / original.width; + } + + return { + x: x, + y: y + }; + }, + + // Creates a placeholder element so that the original element can be made absolute + createPlaceholder: function( element ) { + var placeholder, + cssPosition = element.css( "position" ), + position = element.position(); + + // Lock in margins first to account for form elements, which + // will change margin if you explicitly set height + // see: https://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380 + // Support: Safari + element.css( { + marginTop: element.css( "marginTop" ), + marginBottom: element.css( "marginBottom" ), + marginLeft: element.css( "marginLeft" ), + marginRight: element.css( "marginRight" ) + } ) + .outerWidth( element.outerWidth() ) + .outerHeight( element.outerHeight() ); + + if ( /^(static|relative)/.test( cssPosition ) ) { + cssPosition = "absolute"; + + placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( { + + // Convert inline to inline block to account for inline elements + // that turn to inline block based on content (like img) + display: /^(inline|ruby)/.test( element.css( "display" ) ) ? + "inline-block" : + "block", + visibility: "hidden", + + // Margins need to be set to account for margin collapse + marginTop: element.css( "marginTop" ), + marginBottom: element.css( "marginBottom" ), + marginLeft: element.css( "marginLeft" ), + marginRight: element.css( "marginRight" ), + "float": element.css( "float" ) + } ) + .outerWidth( element.outerWidth() ) + .outerHeight( element.outerHeight() ) + .addClass( "ui-effects-placeholder" ); + + element.data( dataSpace + "placeholder", placeholder ); + } + + element.css( { + position: cssPosition, + left: position.left, + top: position.top + } ); + + return placeholder; + }, + + removePlaceholder: function( element ) { + var dataKey = dataSpace + "placeholder", + placeholder = element.data( dataKey ); + + if ( placeholder ) { + placeholder.remove(); + element.removeData( dataKey ); + } + }, + + // Removes a placeholder if it exists and restores + // properties that were modified during placeholder creation + cleanUp: function( element ) { + $.effects.restoreStyle( element ); + $.effects.removePlaceholder( element ); + }, + + setTransition: function( element, list, factor, value ) { + value = value || {}; + $.each( list, function( i, x ) { + var unit = element.cssUnit( x ); + if ( unit[ 0 ] > 0 ) { + value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; + } + } ); + return value; + } +} ); + +// Return an effect options object for the given parameters: +function _normalizeArguments( effect, options, speed, callback ) { + + // Allow passing all options as the first parameter + if ( $.isPlainObject( effect ) ) { + options = effect; + effect = effect.effect; + } + + // Convert to an object + effect = { effect: effect }; + + // Catch (effect, null, ...) + if ( options == null ) { + options = {}; + } + + // Catch (effect, callback) + if ( typeof options === "function" ) { + callback = options; + speed = null; + options = {}; + } + + // Catch (effect, speed, ?) + if ( typeof options === "number" || $.fx.speeds[ options ] ) { + callback = speed; + speed = options; + options = {}; + } + + // Catch (effect, options, callback) + if ( typeof speed === "function" ) { + callback = speed; + speed = null; + } + + // Add options to effect + if ( options ) { + $.extend( effect, options ); + } + + speed = speed || options.duration; + effect.duration = $.fx.off ? 0 : + typeof speed === "number" ? speed : + speed in $.fx.speeds ? $.fx.speeds[ speed ] : + $.fx.speeds._default; + + effect.complete = callback || options.complete; + + return effect; +} + +function standardAnimationOption( option ) { + + // Valid standard speeds (nothing, number, named speed) + if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { + return true; + } + + // Invalid strings - treat as "normal" speed + if ( typeof option === "string" && !$.effects.effect[ option ] ) { + return true; + } + + // Complete callback + if ( typeof option === "function" ) { + return true; + } + + // Options hash (but not naming an effect) + if ( typeof option === "object" && !option.effect ) { + return true; + } + + // Didn't match any standard API + return false; +} + +$.fn.extend( { + effect: function( /* effect, options, speed, callback */ ) { + var args = _normalizeArguments.apply( this, arguments ), + effectMethod = $.effects.effect[ args.effect ], + defaultMode = effectMethod.mode, + queue = args.queue, + queueName = queue || "fx", + complete = args.complete, + mode = args.mode, + modes = [], + prefilter = function( next ) { + var el = $( this ), + normalizedMode = $.effects.mode( el, mode ) || defaultMode; + + // Sentinel for duck-punching the :animated pseudo-selector + el.data( dataSpaceAnimated, true ); + + // Save effect mode for later use, + // we can't just call $.effects.mode again later, + // as the .show() below destroys the initial state + modes.push( normalizedMode ); + + // See $.uiBackCompat inside of run() for removal of defaultMode in 1.14 + if ( defaultMode && ( normalizedMode === "show" || + ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) { + el.show(); + } + + if ( !defaultMode || normalizedMode !== "none" ) { + $.effects.saveStyle( el ); + } + + if ( typeof next === "function" ) { + next(); + } + }; + + if ( $.fx.off || !effectMethod ) { + + // Delegate to the original method (e.g., .show()) if possible + if ( mode ) { + return this[ mode ]( args.duration, complete ); + } else { + return this.each( function() { + if ( complete ) { + complete.call( this ); + } + } ); + } + } + + function run( next ) { + var elem = $( this ); + + function cleanup() { + elem.removeData( dataSpaceAnimated ); + + $.effects.cleanUp( elem ); + + if ( args.mode === "hide" ) { + elem.hide(); + } + + done(); + } + + function done() { + if ( typeof complete === "function" ) { + complete.call( elem[ 0 ] ); + } + + if ( typeof next === "function" ) { + next(); + } + } + + // Override mode option on a per element basis, + // as toggle can be either show or hide depending on element state + args.mode = modes.shift(); + + if ( $.uiBackCompat === true && !defaultMode ) { + if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { + + // Call the core method to track "olddisplay" properly + elem[ mode ](); + done(); + } else { + effectMethod.call( elem[ 0 ], args, done ); + } + } else { + if ( args.mode === "none" ) { + + // Call the core method to track "olddisplay" properly + elem[ mode ](); + done(); + } else { + effectMethod.call( elem[ 0 ], args, cleanup ); + } + } + } + + // Run prefilter on all elements first to ensure that + // any showing or hiding happens before placeholder creation, + // which ensures that any layout changes are correctly captured. + return queue === false ? + this.each( prefilter ).each( run ) : + this.queue( queueName, prefilter ).queue( queueName, run ); + }, + + show: ( function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "show"; + return this.effect.call( this, args ); + } + }; + } )( $.fn.show ), + + hide: ( function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "hide"; + return this.effect.call( this, args ); + } + }; + } )( $.fn.hide ), + + toggle: ( function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) || typeof option === "boolean" ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "toggle"; + return this.effect.call( this, args ); + } + }; + } )( $.fn.toggle ), + + cssUnit: function( key ) { + var style = this.css( key ), + val = []; + + $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { + if ( style.indexOf( unit ) > 0 ) { + val = [ parseFloat( style ), unit ]; + } + } ); + return val; + }, + + cssClip: function( clipObj ) { + if ( clipObj ) { + return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " + + clipObj.bottom + "px " + clipObj.left + "px)" ); + } + return parseClip( this.css( "clip" ), this ); + }, + + transfer: function( options, done ) { + var element = $( this ), + target = $( options.to ), + targetFixed = target.css( "position" ) === "fixed", + body = $( "body" ), + fixTop = targetFixed ? body.scrollTop() : 0, + fixLeft = targetFixed ? body.scrollLeft() : 0, + endPosition = target.offset(), + animation = { + top: endPosition.top - fixTop, + left: endPosition.left - fixLeft, + height: target.innerHeight(), + width: target.innerWidth() + }, + startPosition = element.offset(), + transfer = $( "
" ); + + transfer + .appendTo( "body" ) + .addClass( options.className ) + .css( { + top: startPosition.top - fixTop, + left: startPosition.left - fixLeft, + height: element.innerHeight(), + width: element.innerWidth(), + position: targetFixed ? "fixed" : "absolute" + } ) + .animate( animation, options.duration, options.easing, function() { + transfer.remove(); + if ( typeof done === "function" ) { + done(); + } + } ); + } +} ); + +function parseClip( str, element ) { + var outerWidth = element.outerWidth(), + outerHeight = element.outerHeight(), + clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/, + values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ]; + + return { + top: parseFloat( values[ 1 ] ) || 0, + right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ), + bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ), + left: parseFloat( values[ 4 ] ) || 0 + }; +} + +$.fx.step.clip = function( fx ) { + if ( !fx.clipInit ) { + fx.start = $( fx.elem ).cssClip(); + if ( typeof fx.end === "string" ) { + fx.end = parseClip( fx.end, fx.elem ); + } + fx.clipInit = true; + } + + $( fx.elem ).cssClip( { + top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top, + right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right, + bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom, + left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left + } ); +}; + +} )(); + +/******************************************************************************/ +/*********************************** EASING ***********************************/ +/******************************************************************************/ + +( function() { + +// Based on easing equations from Robert Penner (http://robertpenner.com/easing) + +var baseEasings = {}; + +$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { + baseEasings[ name ] = function( p ) { + return Math.pow( p, i + 2 ); + }; +} ); + +$.extend( baseEasings, { + Sine: function( p ) { + return 1 - Math.cos( p * Math.PI / 2 ); + }, + Circ: function( p ) { + return 1 - Math.sqrt( 1 - p * p ); + }, + Elastic: function( p ) { + return p === 0 || p === 1 ? p : + -Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 ); + }, + Back: function( p ) { + return p * p * ( 3 * p - 2 ); + }, + Bounce: function( p ) { + var pow2, + bounce = 4; + + while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} + return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); + } +} ); + +$.each( baseEasings, function( name, easeIn ) { + $.easing[ "easeIn" + name ] = easeIn; + $.easing[ "easeOut" + name ] = function( p ) { + return 1 - easeIn( 1 - p ); + }; + $.easing[ "easeInOut" + name ] = function( p ) { + return p < 0.5 ? + easeIn( p * 2 ) / 2 : + 1 - easeIn( p * -2 + 2 ) / 2; + }; +} ); + +} )(); + +var effect = $.effects; + + +/*! + * jQuery UI Effects Blind 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Blind Effect +//>>group: Effects +//>>description: Blinds the element. +//>>docs: https://api.jqueryui.com/blind-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) { + var map = { + up: [ "bottom", "top" ], + vertical: [ "bottom", "top" ], + down: [ "top", "bottom" ], + left: [ "right", "left" ], + horizontal: [ "right", "left" ], + right: [ "left", "right" ] + }, + element = $( this ), + direction = options.direction || "up", + start = element.cssClip(), + animate = { clip: $.extend( {}, start ) }, + placeholder = $.effects.createPlaceholder( element ); + + animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ]; + + if ( options.mode === "show" ) { + element.cssClip( animate.clip ); + if ( placeholder ) { + placeholder.css( $.effects.clipToBox( animate ) ); + } + + animate.clip = start; + } + + if ( placeholder ) { + placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing ); + } + + element.animate( animate, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Bounce 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Bounce Effect +//>>group: Effects +//>>description: Bounces an element horizontally or vertically n times. +//>>docs: https://api.jqueryui.com/bounce-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) { + var upAnim, downAnim, refValue, + element = $( this ), + + // Defaults: + mode = options.mode, + hide = mode === "hide", + show = mode === "show", + direction = options.direction || "up", + distance = options.distance, + times = options.times || 5, + + // Number of internal animations + anims = times * 2 + ( show || hide ? 1 : 0 ), + speed = options.duration / anims, + easing = options.easing, + + // Utility: + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + motion = ( direction === "up" || direction === "left" ), + i = 0, + + queuelen = element.queue().length; + + $.effects.createPlaceholder( element ); + + refValue = element.css( ref ); + + // Default distance for the BIGGEST bounce is the outer Distance / 3 + if ( !distance ) { + distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; + } + + if ( show ) { + downAnim = { opacity: 1 }; + downAnim[ ref ] = refValue; + + // If we are showing, force opacity 0 and set the initial position + // then do the "first" animation + element + .css( "opacity", 0 ) + .css( ref, motion ? -distance * 2 : distance * 2 ) + .animate( downAnim, speed, easing ); + } + + // Start at the smallest distance if we are hiding + if ( hide ) { + distance = distance / Math.pow( 2, times - 1 ); + } + + downAnim = {}; + downAnim[ ref ] = refValue; + + // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here + for ( ; i < times; i++ ) { + upAnim = {}; + upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; + + element + .animate( upAnim, speed, easing ) + .animate( downAnim, speed, easing ); + + distance = hide ? distance * 2 : distance / 2; + } + + // Last Bounce when Hiding + if ( hide ) { + upAnim = { opacity: 0 }; + upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; + + element.animate( upAnim, speed, easing ); + } + + element.queue( done ); + + $.effects.unshift( element, queuelen, anims + 1 ); +} ); + + +/*! + * jQuery UI Effects Clip 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Clip Effect +//>>group: Effects +//>>description: Clips the element on and off like an old TV. +//>>docs: https://api.jqueryui.com/clip-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) { + var start, + animate = {}, + element = $( this ), + direction = options.direction || "vertical", + both = direction === "both", + horizontal = both || direction === "horizontal", + vertical = both || direction === "vertical"; + + start = element.cssClip(); + animate.clip = { + top: vertical ? ( start.bottom - start.top ) / 2 : start.top, + right: horizontal ? ( start.right - start.left ) / 2 : start.right, + bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom, + left: horizontal ? ( start.right - start.left ) / 2 : start.left + }; + + $.effects.createPlaceholder( element ); + + if ( options.mode === "show" ) { + element.cssClip( animate.clip ); + animate.clip = start; + } + + element.animate( animate, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); + +} ); + + +/*! + * jQuery UI Effects Drop 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Drop Effect +//>>group: Effects +//>>description: Moves an element in one direction and hides it at the same time. +//>>docs: https://api.jqueryui.com/drop-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) { + + var distance, + element = $( this ), + mode = options.mode, + show = mode === "show", + direction = options.direction || "left", + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=", + oppositeMotion = ( motion === "+=" ) ? "-=" : "+=", + animation = { + opacity: 0 + }; + + $.effects.createPlaceholder( element ); + + distance = options.distance || + element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2; + + animation[ ref ] = motion + distance; + + if ( show ) { + element.css( animation ); + + animation[ ref ] = oppositeMotion + distance; + animation.opacity = 1; + } + + // Animate + element.animate( animation, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Explode 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Explode Effect +//>>group: Effects +/* eslint-disable max-len */ +//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness. +/* eslint-enable max-len */ +//>>docs: https://api.jqueryui.com/explode-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) { + + var i, j, left, top, mx, my, + rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3, + cells = rows, + element = $( this ), + mode = options.mode, + show = mode === "show", + + // Show and then visibility:hidden the element before calculating offset + offset = element.show().css( "visibility", "hidden" ).offset(), + + // Width and height of a piece + width = Math.ceil( element.outerWidth() / cells ), + height = Math.ceil( element.outerHeight() / rows ), + pieces = []; + + // Children animate complete: + function childComplete() { + pieces.push( this ); + if ( pieces.length === rows * cells ) { + animComplete(); + } + } + + // Clone the element for each row and cell. + for ( i = 0; i < rows; i++ ) { // ===> + top = offset.top + i * height; + my = i - ( rows - 1 ) / 2; + + for ( j = 0; j < cells; j++ ) { // ||| + left = offset.left + j * width; + mx = j - ( cells - 1 ) / 2; + + // Create a clone of the now hidden main element that will be absolute positioned + // within a wrapper div off the -left and -top equal to size of our pieces + element + .clone() + .appendTo( "body" ) + .wrap( "
" ) + .css( { + position: "absolute", + visibility: "visible", + left: -j * width, + top: -i * height + } ) + + // Select the wrapper - make it overflow: hidden and absolute positioned based on + // where the original was located +left and +top equal to the size of pieces + .parent() + .addClass( "ui-effects-explode" ) + .css( { + position: "absolute", + overflow: "hidden", + width: width, + height: height, + left: left + ( show ? mx * width : 0 ), + top: top + ( show ? my * height : 0 ), + opacity: show ? 0 : 1 + } ) + .animate( { + left: left + ( show ? 0 : mx * width ), + top: top + ( show ? 0 : my * height ), + opacity: show ? 1 : 0 + }, options.duration || 500, options.easing, childComplete ); + } + } + + function animComplete() { + element.css( { + visibility: "visible" + } ); + $( pieces ).remove(); + done(); + } +} ); + + +/*! + * jQuery UI Effects Fade 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Fade Effect +//>>group: Effects +//>>description: Fades the element. +//>>docs: https://api.jqueryui.com/fade-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) { + var show = options.mode === "show"; + + $( this ) + .css( "opacity", show ? 0 : 1 ) + .animate( { + opacity: show ? 1 : 0 + }, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Fold 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Fold Effect +//>>group: Effects +//>>description: Folds an element first horizontally and then vertically. +//>>docs: https://api.jqueryui.com/fold-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) { + + // Create element + var element = $( this ), + mode = options.mode, + show = mode === "show", + hide = mode === "hide", + size = options.size || 15, + percent = /([0-9]+)%/.exec( size ), + horizFirst = !!options.horizFirst, + ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ], + duration = options.duration / 2, + + placeholder = $.effects.createPlaceholder( element ), + + start = element.cssClip(), + animation1 = { clip: $.extend( {}, start ) }, + animation2 = { clip: $.extend( {}, start ) }, + + distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ], + + queuelen = element.queue().length; + + if ( percent ) { + size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; + } + animation1.clip[ ref[ 0 ] ] = size; + animation2.clip[ ref[ 0 ] ] = size; + animation2.clip[ ref[ 1 ] ] = 0; + + if ( show ) { + element.cssClip( animation2.clip ); + if ( placeholder ) { + placeholder.css( $.effects.clipToBox( animation2 ) ); + } + + animation2.clip = start; + } + + // Animate + element + .queue( function( next ) { + if ( placeholder ) { + placeholder + .animate( $.effects.clipToBox( animation1 ), duration, options.easing ) + .animate( $.effects.clipToBox( animation2 ), duration, options.easing ); + } + + next(); + } ) + .animate( animation1, duration, options.easing ) + .animate( animation2, duration, options.easing ) + .queue( done ); + + $.effects.unshift( element, queuelen, 4 ); +} ); + + +/*! + * jQuery UI Effects Highlight 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Highlight Effect +//>>group: Effects +//>>description: Highlights the background of an element in a defined color for a custom duration. +//>>docs: https://api.jqueryui.com/highlight-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) { + var element = $( this ), + animation = { + backgroundColor: element.css( "backgroundColor" ) + }; + + if ( options.mode === "hide" ) { + animation.opacity = 0; + } + + $.effects.saveStyle( element ); + + element + .css( { + backgroundImage: "none", + backgroundColor: options.color || "#ffff99" + } ) + .animate( animation, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Size 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Size Effect +//>>group: Effects +//>>description: Resize an element to a specified width and height. +//>>docs: https://api.jqueryui.com/size-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectSize = $.effects.define( "size", function( options, done ) { + + // Create element + var baseline, factor, temp, + element = $( this ), + + // Copy for children + cProps = [ "fontSize" ], + vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], + hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], + + // Set options + mode = options.mode, + restore = mode !== "effect", + scale = options.scale || "both", + origin = options.origin || [ "middle", "center" ], + position = element.css( "position" ), + pos = element.position(), + original = $.effects.scaledDimensions( element ), + from = options.from || original, + to = options.to || $.effects.scaledDimensions( element, 0 ); + + $.effects.createPlaceholder( element ); + + if ( mode === "show" ) { + temp = from; + from = to; + to = temp; + } + + // Set scaling factor + factor = { + from: { + y: from.height / original.height, + x: from.width / original.width + }, + to: { + y: to.height / original.height, + x: to.width / original.width + } + }; + + // Scale the css box + if ( scale === "box" || scale === "both" ) { + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + from = $.effects.setTransition( element, vProps, factor.from.y, from ); + to = $.effects.setTransition( element, vProps, factor.to.y, to ); + } + + // Horizontal props scaling + if ( factor.from.x !== factor.to.x ) { + from = $.effects.setTransition( element, hProps, factor.from.x, from ); + to = $.effects.setTransition( element, hProps, factor.to.x, to ); + } + } + + // Scale the content + if ( scale === "content" || scale === "both" ) { + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + from = $.effects.setTransition( element, cProps, factor.from.y, from ); + to = $.effects.setTransition( element, cProps, factor.to.y, to ); + } + } + + // Adjust the position properties based on the provided origin points + if ( origin ) { + baseline = $.effects.getBaseline( origin, original ); + from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top; + from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left; + to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top; + to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left; + } + delete from.outerHeight; + delete from.outerWidth; + element.css( from ); + + // Animate the children if desired + if ( scale === "content" || scale === "both" ) { + + vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps ); + hProps = hProps.concat( [ "marginLeft", "marginRight" ] ); + + // Only animate children with width attributes specified + // TODO: is this right? should we include anything with css width specified as well + element.find( "*[width]" ).each( function() { + var child = $( this ), + childOriginal = $.effects.scaledDimensions( child ), + childFrom = { + height: childOriginal.height * factor.from.y, + width: childOriginal.width * factor.from.x, + outerHeight: childOriginal.outerHeight * factor.from.y, + outerWidth: childOriginal.outerWidth * factor.from.x + }, + childTo = { + height: childOriginal.height * factor.to.y, + width: childOriginal.width * factor.to.x, + outerHeight: childOriginal.height * factor.to.y, + outerWidth: childOriginal.width * factor.to.x + }; + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom ); + childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo ); + } + + // Horizontal props scaling + if ( factor.from.x !== factor.to.x ) { + childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom ); + childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo ); + } + + if ( restore ) { + $.effects.saveStyle( child ); + } + + // Animate children + child.css( childFrom ); + child.animate( childTo, options.duration, options.easing, function() { + + // Restore children + if ( restore ) { + $.effects.restoreStyle( child ); + } + } ); + } ); + } + + // Animate + element.animate( to, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: function() { + + var offset = element.offset(); + + if ( to.opacity === 0 ) { + element.css( "opacity", from.opacity ); + } + + if ( !restore ) { + element + .css( "position", position === "static" ? "relative" : position ) + .offset( offset ); + + // Need to save style here so that automatic style restoration + // doesn't restore to the original styles from before the animation. + $.effects.saveStyle( element ); + } + + done(); + } + } ); + +} ); + + +/*! + * jQuery UI Effects Scale 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Scale Effect +//>>group: Effects +//>>description: Grows or shrinks an element and its content. +//>>docs: https://api.jqueryui.com/scale-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectScale = $.effects.define( "scale", function( options, done ) { + + // Create element + var el = $( this ), + mode = options.mode, + percent = parseInt( options.percent, 10 ) || + ( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ), + + newOptions = $.extend( true, { + from: $.effects.scaledDimensions( el ), + to: $.effects.scaledDimensions( el, percent, options.direction || "both" ), + origin: options.origin || [ "middle", "center" ] + }, options ); + + // Fade option to support puff + if ( options.fade ) { + newOptions.from.opacity = 1; + newOptions.to.opacity = 0; + } + + $.effects.effect.size.call( this, newOptions, done ); +} ); + + +/*! + * jQuery UI Effects Puff 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Puff Effect +//>>group: Effects +//>>description: Creates a puff effect by scaling the element up and hiding it at the same time. +//>>docs: https://api.jqueryui.com/puff-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) { + var newOptions = $.extend( true, {}, options, { + fade: true, + percent: parseInt( options.percent, 10 ) || 150 + } ); + + $.effects.effect.scale.call( this, newOptions, done ); +} ); + + +/*! + * jQuery UI Effects Pulsate 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Pulsate Effect +//>>group: Effects +//>>description: Pulsates an element n times by changing the opacity to zero and back. +//>>docs: https://api.jqueryui.com/pulsate-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) { + var element = $( this ), + mode = options.mode, + show = mode === "show", + hide = mode === "hide", + showhide = show || hide, + + // Showing or hiding leaves off the "last" animation + anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), + duration = options.duration / anims, + animateTo = 0, + i = 1, + queuelen = element.queue().length; + + if ( show || !element.is( ":visible" ) ) { + element.css( "opacity", 0 ).show(); + animateTo = 1; + } + + // Anims - 1 opacity "toggles" + for ( ; i < anims; i++ ) { + element.animate( { opacity: animateTo }, duration, options.easing ); + animateTo = 1 - animateTo; + } + + element.animate( { opacity: animateTo }, duration, options.easing ); + + element.queue( done ); + + $.effects.unshift( element, queuelen, anims + 1 ); +} ); + + +/*! + * jQuery UI Effects Shake 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Shake Effect +//>>group: Effects +//>>description: Shakes an element horizontally or vertically n times. +//>>docs: https://api.jqueryui.com/shake-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectShake = $.effects.define( "shake", function( options, done ) { + + var i = 1, + element = $( this ), + direction = options.direction || "left", + distance = options.distance || 20, + times = options.times || 3, + anims = times * 2 + 1, + speed = Math.round( options.duration / anims ), + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + positiveMotion = ( direction === "up" || direction === "left" ), + animation = {}, + animation1 = {}, + animation2 = {}, + + queuelen = element.queue().length; + + $.effects.createPlaceholder( element ); + + // Animation + animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; + animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; + animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; + + // Animate + element.animate( animation, speed, options.easing ); + + // Shakes + for ( ; i < times; i++ ) { + element + .animate( animation1, speed, options.easing ) + .animate( animation2, speed, options.easing ); + } + + element + .animate( animation1, speed, options.easing ) + .animate( animation, speed / 2, options.easing ) + .queue( done ); + + $.effects.unshift( element, queuelen, anims + 1 ); +} ); + + +/*! + * jQuery UI Effects Slide 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Slide Effect +//>>group: Effects +//>>description: Slides an element in and out of the viewport. +//>>docs: https://api.jqueryui.com/slide-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) { + var startClip, startRef, + element = $( this ), + map = { + up: [ "bottom", "top" ], + down: [ "top", "bottom" ], + left: [ "right", "left" ], + right: [ "left", "right" ] + }, + mode = options.mode, + direction = options.direction || "left", + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + positiveMotion = ( direction === "up" || direction === "left" ), + distance = options.distance || + element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ), + animation = {}; + + $.effects.createPlaceholder( element ); + + startClip = element.cssClip(); + startRef = element.position()[ ref ]; + + // Define hide animation + animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef; + animation.clip = element.cssClip(); + animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ]; + + // Reverse the animation if we're showing + if ( mode === "show" ) { + element.cssClip( animation.clip ); + element.css( ref, animation[ ref ] ); + animation.clip = startClip; + animation[ ref ] = startRef; + } + + // Actually animate + element.animate( animation, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Transfer 1.14.1 + * https://jqueryui.com + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license + */ + +//>>label: Transfer Effect +//>>group: Effects +//>>description: Displays a transfer effect from one element to another. +//>>docs: https://api.jqueryui.com/transfer-effect/ +//>>demos: https://jqueryui.com/effect/ + + +var effect; +if ( $.uiBackCompat === true ) { + effect = $.effects.define( "transfer", function( options, done ) { + $( this ).transfer( options, done ); + } ); +} +var effectsEffectTransfer = effect; + + + + +} ); \ No newline at end of file diff --git a/src/Yavsc/wwwroot/js/jquery-ui.min.js b/src/Yavsc/wwwroot/js/jquery-ui.min.js index 918cf40d..0d51df62 100644 --- a/src/Yavsc/wwwroot/js/jquery-ui.min.js +++ b/src/Yavsc/wwwroot/js/jquery-ui.min.js @@ -1 +1,6 @@ -!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(I){I.ui=I.ui||{};I.ui.version="1.12.1";var n,i=0,r=Array.prototype.slice;I.cleanData=(n=I.cleanData,function(t){var e,i,s;for(s=0;null!=(i=t[s]);s++)try{(e=I._data(i,"events"))&&e.remove&&I(i).triggerHandler("remove")}catch(t){}n(t)}),I.widget=function(t,i,e){var s,n,o,a={},r=t.split(".")[0],h=r+"-"+(t=t.split(".")[1]);return e||(e=i,i=I.Widget),I.isArray(e)&&(e=I.extend.apply(null,[{}].concat(e))),I.expr[":"][h.toLowerCase()]=function(t){return!!I.data(t,h)},I[r]=I[r]||{},s=I[r][t],n=I[r][t]=function(t,e){if(!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},I.extend(n,s,{version:e.version,_proto:I.extend({},e),_childConstructors:[]}),(o=new i).options=I.widget.extend({},o.options),I.each(e,function(e,o){I.isFunction(o)?a[e]=function(){function s(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var t,e=this._super,i=this._superApply;return this._super=s,this._superApply=n,t=o.apply(this,arguments),this._super=e,this._superApply=i,t}}():a[e]=o}),n.prototype=I.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:h}),s?(I.each(s._childConstructors,function(t,e){var i=e.prototype;I.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),I.widget.bridge(t,n),n},I.widget.extend=function(t){for(var e,i,s=r.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=I(e||this.defaultElement||this)[0],this.element=I(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=I(),this.hoverable=I(),this.focusable=I(),this.classesElementLookup={},e!==this&&(I.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=I(e.style?e.ownerDocument:e.document||e),this.window=I(this.document[0].defaultView||this.document[0].parentWindow)),this.options=I.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:I.noop,_create:I.noop,_init:I.noop,destroy:function(){var i=this;this._destroy(),I.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:I.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return I.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=I.widget.extend({},this.options[t]),n=0;n
"),s=i.children()[0];return I("body").append(i),t=s.offsetWidth,i.css("overflow","scroll"),t===(e=s.offsetWidth)&&(e=i[0].clientWidth),i.remove(),n=t-e},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),s="scroll"===e||"auto"===e&&t.widthk(x(s),x(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(I.extend(l,{using:t}))})},I.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,o=s.width,a=t.left-e.collisionPosition.marginLeft,r=n-a,h=a+e.collisionWidth-o-n;e.collisionWidth>o?0o?0")[0],m=c.each;function _(t,e,i){var s=g[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:t<0?0:s.maxo.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=_((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=p(t)._rgba;return p(c.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=c.map(this._rgba,function(t,e){return null==t?2
").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),(i[0]===n||I.contains(i[0],n))&&I(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(I.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),I.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===e||I.contains(t[0],e))&&I(e).trigger("focus")),t}}),I.extend(I.effects,{version:"1.12.1",define:function(t,e,i){return i||(i=e,e="effect"),I.effects.effect[t]=i,I.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(h+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=h+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){I.effects.restoreStyle(t),I.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},I.each(t,function(t,e){var i=s.cssUnit(e);0").appendTo("body").addClass(t.className).css({top:c.top-a,left:c.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(l,t.duration,t.easing,function(){u.remove(),I.isFunction(e)&&e()})}}),I.fx.step.clip=function(t){t.clipInit||(t.start=I(t.elem).cssClip(),"string"==typeof t.end&&(t.end=a(t.end,t.elem)),t.clipInit=!0),I(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})}}(),s={},I.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){s[t]=function(t){return Math.pow(t,e+2)}}),I.extend(s,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),I.each(s,function(t,e){I.easing["easeIn"+t]=e,I.easing["easeOut"+t]=function(t){return 1-e(1-t)},I.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});I.effects,I.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=I(this),n=t.direction||"up",o=s.cssClip(),a={clip:I.extend({},o)},r=I.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(I.effects.clipToBox(a)),a.clip=o),r&&r.animate(I.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),I.effects.define("bounce",function(t,e){var i,s,n,o=I(this),a=t.mode,r="hide"===a,h="show"===a,l=t.direction||"up",c=t.distance,u=t.times||5,d=2*u+(h||r?1:0),p=t.duration/d,f=t.easing,g="up"===l||"down"===l?"top":"left",m="up"===l||"left"===l,_=0,v=o.queue().length;for(I.effects.createPlaceholder(o),n=o.css(g),c||(c=o["top"===g?"outerHeight":"outerWidth"]()/3),h&&((s={opacity:1})[g]=n,o.css("opacity",0).css(g,m?2*-c:2*c).animate(s,p,f)),r&&(c/=Math.pow(2,u-1)),(s={})[g]=n;_").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),I.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;I(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),I.effects.define("fold","hide",function(e,t){var i=I(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),h=!!e.horizFirst?["right","bottom"]:["bottom","right"],l=e.duration/2,c=I.effects.createPlaceholder(i),u=i.cssClip(),d={clip:I.extend({},u)},p={clip:I.extend({},u)},f=[u[h[0]],u[h[1]]],g=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[h[0]]=a,p.clip[h[0]]=a,p.clip[h[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(I.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(I.effects.clipToBox(d),l,e.easing).animate(I.effects.clipToBox(p),l,e.easing),t()}).animate(d,l,e.easing).animate(p,l,e.easing).queue(t),I.effects.unshift(i,g,4)}),I.effects.define("highlight","show",function(t,e){var i=I(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),I.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),I.effects.define("size",function(n,e){var t,o,i,s=I(this),a=["fontSize"],r=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],h=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],l=n.mode,c="effect"!==l,u=n.scale||"both",d=n.origin||["middle","center"],p=s.css("position"),f=s.position(),g=I.effects.scaledDimensions(s),m=n.from||g,_=n.to||I.effects.scaledDimensions(s,0);I.effects.createPlaceholder(s),"show"===l&&(i=m,m=_,_=i),o={from:{y:m.height/g.height,x:m.width/g.width},to:{y:_.height/g.height,x:_.width/g.width}},"box"!==u&&"both"!==u||(o.from.y!==o.to.y&&(m=I.effects.setTransition(s,r,o.from.y,m),_=I.effects.setTransition(s,r,o.to.y,_)),o.from.x!==o.to.x&&(m=I.effects.setTransition(s,h,o.from.x,m),_=I.effects.setTransition(s,h,o.to.x,_))),"content"!==u&&"both"!==u||o.from.y!==o.to.y&&(m=I.effects.setTransition(s,a,o.from.y,m),_=I.effects.setTransition(s,a,o.to.y,_)),d&&(t=I.effects.getBaseline(d,g),m.top=(g.outerHeight-m.outerHeight)*t.y+f.top,m.left=(g.outerWidth-m.outerWidth)*t.x+f.left,_.top=(g.outerHeight-_.outerHeight)*t.y+f.top,_.left=(g.outerWidth-_.outerWidth)*t.x+f.left),s.css(m),"content"!==u&&"both"!==u||(r=r.concat(["marginTop","marginBottom"]).concat(a),h=h.concat(["marginLeft","marginRight"]),s.find("*[width]").each(function(){var t=I(this),e=I.effects.scaledDimensions(t),i={height:e.height*o.from.y,width:e.width*o.from.x,outerHeight:e.outerHeight*o.from.y,outerWidth:e.outerWidth*o.from.x},s={height:e.height*o.to.y,width:e.width*o.to.x,outerHeight:e.height*o.to.y,outerWidth:e.width*o.to.x};o.from.y!==o.to.y&&(i=I.effects.setTransition(t,r,o.from.y,i),s=I.effects.setTransition(t,r,o.to.y,s)),o.from.x!==o.to.x&&(i=I.effects.setTransition(t,h,o.from.x,i),s=I.effects.setTransition(t,h,o.to.x,s)),c&&I.effects.saveStyle(t),t.css(i),t.animate(s,n.duration,n.easing,function(){c&&I.effects.restoreStyle(t)})})),s.animate(_,{queue:!1,duration:n.duration,easing:n.easing,complete:function(){var t=s.offset();0===_.opacity&&s.css("opacity",m.opacity),c||(s.css("position","static"===p?"relative":p).offset(t),I.effects.saveStyle(s)),e()}})}),I.effects.define("scale",function(t,e){var i=I(this),s=t.mode,n=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"effect"!==s?0:100),o=I.extend(!0,{from:I.effects.scaledDimensions(i),to:I.effects.scaledDimensions(i,n,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(o.from.opacity=1,o.to.opacity=0),I.effects.effect.size.call(this,o,e)}),I.effects.define("puff","hide",function(t,e){var i=I.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});I.effects.effect.scale.call(this,i,e)}),I.effects.define("pulsate","show",function(t,e){var i=I(this),s=t.mode,n="show"===s,o=n||"hide"===s,a=2*(t.times||5)+(o?1:0),r=t.duration/a,h=0,l=1,c=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),h=1);l?@[\]^`{|}~])/g,function(t){return t.replace(e,"\\$1")}),I.fn.labels=function(){var t,e,i,s,n;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(s=this.eq(0).parents("label"),(i=this.attr("id"))&&(n=(t=this.eq(0).parents().last()).add(t.length?t.siblings():this.siblings()),e="label[for='"+I.ui.escapeSelector(i)+"']",s=s.add(n.find(e).addBack(e))),this.pushStack(s))},I.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,n=this.parents().filter(function(){var t=I(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&n.length?n:I(this[0].ownerDocument||document)},I.extend(I.expr[":"],{tabbable:function(t){var e=I.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&I.ui.focusable(t,i)}}),I.fn.extend({uniqueId:(o=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++o)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&I(this).removeAttr("id")})}}),I.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=I(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():I()}},_createIcons:function(){var t,e,i=this.options.icons;i&&(t=I(""),this._addClass(t,"ui-accordion-header-icon","ui-icon "+i.header),t.prependTo(this.headers),e=this.active.children(".ui-accordion-header-icon"),this._removeClass(e,i.header)._addClass(e,null,i.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=I.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(I(t.target).attr("tabIndex",-1),I(n).attr("tabIndex",0),I(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===I.ui.keyCode.UP&&t.ctrlKey&&I(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=I()):!1===t.active?this._activate(0):this.active.length&&!I.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=I()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=I(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).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(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=I(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=I(this).outerHeight(!0)}),this.headers.next().each(function(){I(this).height(Math.max(0,i-I(this).innerHeight()+I(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=I(this).is(":visible");t||I(this).show(),i=Math.max(i,I(this).css("height","").height()),t||I(this).hide()}).height(i))},_activate:function(t){var e=this._findActive(t)[0];e!==this.active[0]&&(e=e||this.active[0],this._eventHandler({target:e,currentTarget:e,preventDefault:I.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):I()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&I.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e,i,s=this.options,n=this.active,o=I(t.currentTarget),a=o[0]===n[0],r=a&&s.collapsible,h=r?I():o.next(),l={oldHeader:n,oldPanel:n.next(),newHeader:r?I():o,newPanel:h};t.preventDefault(),a&&!s.collapsible||!1===this._trigger("beforeActivate",t,l)||(s.active=!r&&this.headers.index(o),this.active=a?I():o,this._toggle(l),this._removeClass(n,"ui-accordion-header-active","ui-state-active"),s.icons&&(e=n.children(".ui-accordion-header-icon"),this._removeClass(e,null,s.icons.activeHeader)._addClass(e,null,s.icons.header)),a||(this._removeClass(o,"ui-accordion-header-collapsed")._addClass(o,"ui-accordion-header-active","ui-state-active"),s.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,s.icons.header)._addClass(i,null,s.icons.activeHeader)),this._addClass(o.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(I(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!i.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(t){var e=I(t.target),i=I(I.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){if(!this.previousFilter){var e=I(t.target).closest(".ui-menu-item"),i=I(t.currentTarget);e[0]===i[0]&&(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(t){this._delay(function(){!I.contains(this.element[0],I.ui.safeActiveElement(this.document[0]))&&this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=I(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n,o=!0;switch(t.keyCode){case I.ui.keyCode.PAGE_UP:this.previousPage(t);break;case I.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case I.ui.keyCode.HOME:this._move("first","first",t);break;case I.ui.keyCode.END:this._move("last","last",t);break;case I.ui.keyCode.UP:this.previous(t);break;case I.ui.keyCode.DOWN:this.next(t);break;case I.ui.keyCode.LEFT:this.collapse(t);break;case I.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case I.ui.keyCode.ENTER:case I.ui.keyCode.SPACE:this._activate(t);break;case I.ui.keyCode.ESCAPE:this.collapse(t);break;default:o=!1,i=this.previousFilter||"",n=!1,s=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),s===i?n=!0:s=i+s,e=this._filterMenuItems(s),(e=n&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(s=String.fromCharCode(t.keyCode),e=this._filterMenuItems(s)),e.length?(this.focus(t,e),this.previousFilter=s,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,i,s,n=this,o=this.options.icons.submenu,a=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=a.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=I(this),e=t.prev(),i=I("").data("ui-menu-submenu-caret",!0);n._addClass(i,"ui-menu-icon","ui-icon "+o),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=a.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=I(this);n._isDivider(t)&&n._addClass(t,"ui-menu-divider","ui-widget-content")}),s=(i=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(s,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!I.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s,n,o,a;this._hasScroll()&&(e=parseFloat(I.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(I.css(this.activeMenu[0],"paddingTop"))||0,s=t.offset().top-this.activeMenu.offset().top-e-i,n=this.activeMenu.scrollTop(),o=this.activeMenu.height(),a=t.outerHeight(),s<0?this.activeMenu.scrollTop(n+s):o",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,o="input"===t;this.isMultiLine=e||!o&&this._isContentEditable(this.element),this.valueMethod=this.element[e||o?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=I.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=I.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(clearTimeout(this.searching),this.close(t),this._change(t))}}),this._initSource(),this.menu=I("
    ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==I.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){I(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&I.trim(i).length&&(this.liveRegion.children().hide(),I("
    ").text(i).appendTo(this.liveRegion))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==I.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=I("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||I.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?I(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front, dialog")),t.length||(t=this.document[0].body),t},_initSource:function(){var i,s,n=this;I.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(I.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=I.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(!t||e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(I("
    ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),I.extend(I.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(I.ui.autocomplete.escapeRegex(e),"i");return I.grep(t,function(t){return i.test(t.label||t.value||t)})}}),I.widget("ui.autocomplete",I.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e).appendTo(this.liveRegion))}});I.ui.autocomplete;var a=/ui-corner-([a-z]){2,6}/g;I.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"
    ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var a=this,r=[];I.each(this.options.items,function(n,t){var e,o={};if(t)return"controlgroupLabel"===n?((e=a.element.find(t)).each(function(){var t=I(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("")}),a._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(r=r.concat(e.get()))):void(I.fn[n]&&(o=a["_"+n+"Options"]?a["_"+n+"Options"]("middle"):{classes:{}},a.element.find(t).each(function(){var t=I(this),e=t[n]("instance"),i=I.widget.extend({},o);if("button"!==n||!t.parent(".ui-spinner").length){e||(e=t[n]()[n]("instance")),e&&(i.classes=a._resolveClassesValues(i.classes,e)),t[n](i);var s=t[n]("widget");I.data(s[0],"ui-controlgroup-data",e||t[n]("instance")),r.push(s[0])}})))}),this.childWidgets=I(I.unique(r)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=I(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){var i=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,i)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:!!e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return I.each(i,function(t){var e=s.options.classes[t]||"";e=I.trim(e.replace(a,"")),n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,this.options.onlyVisible&&(n=n.filter(":visible")),n.length&&(I.each(["first","last"],function(t,e){var i=n[e]().data("ui-controlgroup-data");if(i&&o["_"+i.widgetName+"Options"]){var s=o["_"+i.widgetName+"Options"](1===n.length?"only":e);s.classes=o._resolveClassesValues(s.classes,i),i.element[i.widgetName](s)}else o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}});I.widget("ui.checkboxradio",[I.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e,i=this,s=this._super()||{};return this._readType(),e=this.element.labels(),this.label=I(e[e.length-1]),this.label.length||I.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){i.originalLabel+=3===this.nodeType?I(this).text():this.outerHTML}),this.originalLabel&&(s.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(s.disabled=t),s},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||I.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+I.ui.escapeSelector(t)+"']";return t?(this.form.length?I(this.form[0].elements).filter(e):I(e).filter(function(){return 0===I(this).form().length})).not(this.element):I([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=I(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=I(""),this.iconSpace=I(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]);var d;I.ui.checkboxradio;I.widget("ui.button",{version:"1.12.1",defaultElement:"").addClass(this._triggerClass).html(n?I("").attr({src:n,alt:s,title:s}):s)),t[a?"before":"after"](e.trigger),e.trigger.on("click",function(){return I.datepicker._datepickerShowing&&I.datepicker._lastInput===t[0]?I.datepicker._hideDatepicker():(I.datepicker._datepickerShowing&&I.datepicker._lastInput!==t[0]&&I.datepicker._hideDatepicker(),I.datepicker._showDatepicker(t[0])),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(n=s=i=0;ni&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(t,e){var i=I(t);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(e.dpDiv),I.data(t,"datepicker",e),this._setDate(e,this._getDefaultDate(e),!0),this._updateDatepicker(e),this._updateAlternate(e),e.settings.disabled&&this._disableDatepicker(t),e.dpDiv.css("display","block"))},_dialogDatepicker:function(t,e,i,s,n){var o,a,r,h,l,c=this._dialogInst;return c||(this.uuid+=1,o="dp"+this.uuid,this._dialogInput=I(""),this._dialogInput.on("keydown",this._doKeyDown),I("body").append(this._dialogInput),(c=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},I.data(this._dialogInput[0],"datepicker",c)),_(c.settings,s||{}),e=e&&e.constructor===Date?this._formatDate(c,e):e,this._dialogInput.val(e),this._pos=n?n.length?n:[n.pageX,n.pageY]:null,this._pos||(a=document.documentElement.clientWidth,r=document.documentElement.clientHeight,h=document.documentElement.scrollLeft||document.body.scrollLeft,l=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[a/2-100+h,r/2-150+l]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),c.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),I.blockUI&&I.blockUI(this.dpDiv),I.data(this._dialogInput[0],"datepicker",c),this},_destroyDatepicker:function(t){var e,i=I(t),s=I.data(t,"datepicker");i.hasClass(this.markerClassName)&&(e=t.nodeName.toLowerCase(),I.removeData(t,"datepicker"),"input"===e?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==e&&"span"!==e||i.removeClass(this.markerClassName).empty(),p===s&&(p=null))},_enableDatepicker:function(e){var t,i,s=I(e),n=I.data(e,"datepicker");s.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==t&&"span"!==t||((i=s.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=I.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var t,i,s=I(e),n=I.data(e,"datepicker");s.hasClass(this.markerClassName)&&("input"===(t=e.nodeName.toLowerCase())?(e.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==t&&"span"!==t||((i=s.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=I.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;er&&sh&&ne;)--Z<0&&(Z=11,tt--);for(t.drawMonth=Z,t.drawYear=tt,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(tt,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,tt,Z)?""+i+"":q?"":""+i+"",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(tt,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,tt,Z)?""+n+"":q?"":""+n+"",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"",l=j?"
    "+(Y?h:"")+(this._isInRange(t,r)?"":"")+(Y?"":h)+"
    ":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;k"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,tt,Q,J,0",P=u?"":"",w=0;w<7;w++)P+="";for(T+=P+"",S=this._getDaysInMonth(tt,Z),tt===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(tt,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X&&this.maxRows>z?this.maxRows:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(tt,Z,1-H)),N=0;N",W=u?"":"",w=0;w<7;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],L=(F=A.getMonth()!==Z)&&!v||!E[0]||Q&&A"+(F&&!_?" ":L?""+A.getDate()+"":""+A.getDate()+"")+"",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+""}11<++Z&&(Z=0,tt++),x+=T+="
    "+this._get(t,"weekHeader")+""+p[M]+"
    "+this._get(t,"calculateWeek")(A)+"
    "+(X?"
    "+(0
    ":""):"")}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="
    ",y="";if(o||!m)y+=""+a[e]+"";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+=""}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+=""+i+"";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),f=(p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e})(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="
    "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&e=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||e.getFullYear()<=r)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),I.fn.datepicker=function(t){if(!this.length)return this;I.datepicker.initialized||(I(document).on("mousedown",I.datepicker._checkExternalClick),I.datepicker.initialized=!0),0===I("#"+I.datepicker._mainDivId).length&&I("body").append(I.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?I.datepicker["_"+t+"Datepicker"].apply(I.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?I.datepicker["_"+t+"Datepicker"].apply(I.datepicker,[this].concat(e)):I.datepicker._attachDatepicker(this,t)}):I.datepicker["_"+t+"Datepicker"].apply(I.datepicker,[this[0]].concat(e))},I.datepicker=new f,I.datepicker.initialized=!1,I.datepicker.uuid=(new Date).getTime(),I.datepicker.version="1.12.1";I.datepicker,I.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var v=!1;I(document).on("mouseup",function(){v=!1});I.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===I.data(t.target,e.widgetName+".preventClickEvent"))return I.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!v){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&I(t.target).closest(this.options.cancel).length;return!(i&&!s&&this._mouseCapture(t))||(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===I.data(t.target,this.widgetName+".preventClickEvent")&&I.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),v=!0))}},_mouseMove:function(t){if(this._mouseMoved){if(I.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&I.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,v=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),I.ui.plugin={add:function(t,e,i){var s,n=I.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=I.ui.safeActiveElement(this.document[0]);I(t.target).closest(e).length||I.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),I.ui.ddmanager&&(I.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),I.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),I.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),I.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=I.extend({},t,{item:i.element});i.sortables=[],I(i.options.connectToSortable).each(function(){var t=I(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=I.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,I.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){I.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,I.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,this!==e&&this._intersectsWith(this.containerCache)&&I.contains(e.element[0],this.element[0])&&(t=!1),t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,I.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,I.each(n.sortables,function(){this.refreshPositions()}))})}}),I.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=I("body"),n=i.options;s.css("cursor")&&(n._cursor=s.css("cursor")),s.css("cursor",n.cursor)},stop:function(t,e,i){var s=i.options;s._cursor&&I("body").css("cursor",s._cursor)}}),I.ui.plugin.add("draggable","opacity",{start:function(t,e,i){var s=I(e.helper),n=i.options;s.css("opacity")&&(n._opacity=s.css("opacity")),s.css("opacity",n.opacity)},stop:function(t,e,i){var s=i.options;s._opacity&&I(e.helper).css("opacity",s._opacity)}}),I.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&I(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,e=function(t){I(t).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(e(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),e(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles()}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(I(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=I(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.append(n);this._renderAxis=function(t){var e,i,s,n;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=I(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=I(this.handles[e],this.element),n=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),s=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(s,n),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)((i=I(this.handles[e])[0])===t.target||I.contains(i,t.target))&&(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s,n=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),n.containment&&(e+=I(n.containment).scrollLeft()||0,i+=I(n.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof n.aspectRatio?n.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=I(".ui-resizable-"+this.axis).css("cursor"),I("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e,i,s=this.originalMousePosition,n=this.axis,o=t.pageX-s.left||0,a=t.pageY-s.top||0,r=this._change[n];return this._updatePrevProperties(),r&&(e=r.apply(this,[t,o,a]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),i=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),I.isEmptyObject(i)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n,o,a,r,h=this.options,l=this;return this._helper&&(s=(i=(e=this._proportionallyResizeElements).length&&/textarea/i.test(e[0].nodeName))&&this._hasScroll(e[0],"left")?0:l.sizeDiff.height,n=i?0:l.sizeDiff.width,o={width:l.helper.width()-n,height:l.helper.height()-s},a=parseFloat(l.element.css("left"))+(l.position.left-l.originalPosition.left)||null,r=parseFloat(l.element.css("top"))+(l.position.top-l.originalPosition.top)||null,h.animate||this.element.css(I.extend(o,{top:r,left:a})),l.helper.height(l.size.height),l.helper.width(l.size.width),this._helper&&!h.animate&&this._proportionallyResize()),I("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),it.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return I.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return I.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return I.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return I.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){I.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),I.ui.plugin.add("resizable","animate",{stop:function(e){var i=I(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,r={width:i.size.width-a,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,l=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(I.extend(r,l&&h?{top:l,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&I(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),I.ui.plugin.add("resizable","containment",{start:function(){var i,s,t,e,n,o,a,r=I(this).resizable("instance"),h=r.options,l=r.element,c=h.containment,u=c instanceof I?c.get(0):/parent/.test(c)?l.parent().get(0):c;u&&(r.containerElement=I(u),/document/.test(c)||c===document?(r.containerOffset={left:0,top:0},r.containerPosition={left:0,top:0},r.parentData={element:I(document),left:0,top:0,width:I(document).width(),height:I(document).height()||document.body.parentNode.scrollHeight}):(i=I(u),s=[],I(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=r._num(i.css("padding"+e))}),r.containerOffset=i.offset(),r.containerPosition=i.position(),r.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=r.containerOffset,e=r.containerSize.height,n=r.containerSize.width,o=r._hasScroll(u,"left")?u.scrollWidth:n,a=r._hasScroll(u)?u.scrollHeight:e,r.parentData={element:u,left:t.left,top:t.top,width:o,height:a}))},resize:function(t){var e,i,s,n,o=I(this).resizable("instance"),a=o.options,r=o.containerOffset,h=o.position,l=o._aspectRatio||t.shiftKey,c={top:0,left:0},u=o.containerElement,d=!0;u[0]!==document&&/static/.test(u.css("position"))&&(c=r),h.left<(o._helper?r.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-r.left:o.position.left-c.left),l&&(o.size.height=o.size.width/o.aspectRatio,d=!1),o.position.left=a.helper?r.left:0),h.top<(o._helper?r.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-r.top:o.position.top),l&&(o.size.width=o.size.height*o.aspectRatio,d=!1),o.position.top=o._helper?r.top:0),s=o.containerElement.get(0)===o.element.parent().get(0),n=/relative|absolute/.test(o.containerElement.css("position")),s&&n?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),e=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-c.left:o.offset.left-r.left)),i=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-c.top:o.offset.top-r.top)),e+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-e,l&&(o.size.height=o.size.width/o.aspectRatio,d=!1)),i+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-i,l&&(o.size.width=o.size.height*o.aspectRatio,d=!1)),d||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=I(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=I(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,h=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&I(this).css({left:a.left-s.left-i.left,width:r,height:h}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&I(this).css({left:a.left-s.left-i.left,width:r,height:h})}}),I.ui.plugin.add("resizable","alsoResize",{start:function(){var t=I(this).resizable("instance").options;I(t.alsoResize).each(function(){var t=I(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=I(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};I(s.alsoResize).each(function(){var t=I(this),s=I(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];I.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){I(this).removeData("ui-resizable-alsoresize")}}),I.ui.plugin.add("resizable","ghost",{start:function(){var t=I(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==I.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=I(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=I(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),I.ui.plugin.add("resizable","grid",{resize:function(){var t,e=I(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,h=r[0]||1,l=r[1]||1,c=Math.round((s.width-n.width)/h)*h,u=Math.round((s.height-n.height)/l)*l,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidthd,_=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=h),_&&(p+=l),f&&(d-=h),g&&(p-=l),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-l<=0||d-h<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",n+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=I(I.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(t){function e(){var t=I.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||I.contains(this.uiDialog[0],t)||this._focusTabbable()}t.preventDefault(),e.call(this),this._delay(e)},_createWrapper:function(){this.uiDialog=I("
    ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===I.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);if(t.keyCode===I.ui.keyCode.TAB&&!t.isDefaultPrevented()){var e=this.uiDialog.find(":tabbable"),i=e.filter(":first"),s=e.filter(":last");t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=I("
    "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){I(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=I("").button({label:I("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=I("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=I("
    "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=I("
    ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var n=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),I.isEmptyObject(t)||I.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(I.each(t,function(t,e){var i,s;e=I.isFunction(e)?{click:e,text:t}:e,e=I.extend({type:"button"},e),i=e.click,s={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,I("",e).button(s).appendTo(n.uiButtonSet).on("click",function(){i.apply(n.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(I(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(I(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var o=this,a=this.options,t=a.resizable,e=this.uiDialog.css("position"),i="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function r(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:a.maxWidth,maxHeight:a.maxHeight,minWidth:a.minWidth,minHeight:this._minHeight(),handles:i,start:function(t,e){o._addClass(I(this),"ui-dialog-resizing"),o._blockFrames(),o._trigger("resizeStart",t,r(e))},resize:function(t,e){o._trigger("resize",t,r(e))},stop:function(t,e){var i=o.uiDialog.offset(),s=i.left-o.document.scrollLeft(),n=i.top-o.document.scrollTop();a.height=o.uiDialog.height(),a.width=o.uiDialog.width(),a.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=n?"+":"")+n,of:o.window},o._removeClass(I(this),"ui-dialog-resizing"),o._unblockFrames(),o._trigger("resizeStop",t,r(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=I(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=I.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_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(t){var i=this,s=!1,n={};I.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s,n=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:I("").text(""+this.options.closeText).html()}),"draggable"===t&&((i=n.is(":data(ui-draggable)"))&&!e&&n.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((s=n.is(":data(ui-resizable)"))&&!e&&n.resizable("destroy"),s&&"string"==typeof e&&n.resizable("option","handles",e),s||!1===e||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 t=I(this);return I("
    ").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!I(t.target).closest(".ui-dialog").length||!!I(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=I("
    ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),!1!==I.uiBackCompat&&I.widget("ui.dialog",I.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});I.ui.dialog;I.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept=I.isFunction(i)?i:function(t){return t.is(i)},this.proportions=function(){if(!arguments.length)return t||(t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight});t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(t){I.ui.ddmanager.droppables[t]=I.ui.ddmanager.droppables[t]||[],I.ui.ddmanager.droppables[t].push(this)},_splice:function(t){for(var e=0;e").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&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)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=I("
    ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),I.widget("ui.selectable",I.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var s=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){s.elementPos=I(s.element[0]).offset(),s.selectees=I(s.options.filter,s.element[0]),s._addClass(s.selectees,"ui-selectee"),s.selectees.each(function(){var t=I(this),e=t.offset(),i={left:e.left-s.elementPos.left,top:e.top-s.elementPos.top};I.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=I("
    "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=I(this.element[0]).offset(),this.options.disabled||(this.selectees=I(t.filter,this.element[0]),this._trigger("start",i),I(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=I.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),I(i.target).parents().addBack().each(function(){var t,e=I.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],h=s.pageX,l=s.pageY;return hh||i.rightl||i.bottoma&&i.rightr&&i.bottom",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=I()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=I("",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=I("").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var s=this;this.menu=I("
      ",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=I("
      ").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),s._setSelection(),s._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){var i=e.item.data("ui-selectmenu-item");null!=s.focusIndex&&i.index!==s.focusIndex&&(s._trigger("focus",t,{item:i}),s.isOpen||s._select(i,t)),s.focusIndex=i.index,s.button.attr("aria-activedescendant",s.menuItems.eq(i.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(I.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=I("");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";I.each(t,function(t,e){var i;e.optgroup!==o&&(i=I("
    • ",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=I("
    • "),s=I("
      ",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(t){this.isOpen&&(I(t.target).closest(".ui-selectmenu-menu, #"+I.ui.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case I.ui.keyCode.TAB:case I.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case I.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case I.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case I.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case I.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case I.ui.keyCode.LEFT:this._move("prev",t);break;case I.ui.keyCode.RIGHT:this._move("next",t);break;case I.ui.keyCode.HOME:case I.ui.keyCode.PAGE_UP:this._move("first",t);break;case I.ui.keyCode.END:case I.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var i=this.button.find("span.ui-icon");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?I(t):this.document.find(t).eq(0)),t&&t[0]||(t=this.element.closest(".ui-front, dialog")),t.length||(t=this.document[0].body),t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){s.push(i._parseOption(I(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),I.widget("ui.slider",I.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e,i=this.options,s=this.element.find(".ui-slider-handle"),n=[];for(e=i.values&&i.values.length||1,s.length>e&&(s.slice(e).remove(),s=s.slice(0,e)),t=s.length;t");this.handles=s.add(I(n.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){I(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:I.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=I("
      ").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var e,i,s,n,o,a,r,h=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-h.values(t));(e=this._valueMax())return this._valueMax();var e=0=e&&(s+=0this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,h=!this._animateOff&&a.animate,l={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,l["horizontal"===r.orientation?"left":"bottom"]=i+"%",I(this).stop(1,1)[h?"animate":"css"](l,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[h?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[h?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[h?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[h?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,l["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[h?"animate":"css"](l,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=I(t.target).data("ui-slider-handle-index");switch(t.keyCode){case I.ui.keyCode.HOME:case I.ui.keyCode.END:case I.ui.keyCode.PAGE_UP:case I.ui.keyCode.PAGE_DOWN:case I.ui.keyCode.UP:case I.ui.keyCode.RIGHT:case I.ui.keyCode.DOWN:case I.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(I(t.target),null,"ui-state-active"),!1===this._start(t,n)))return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case I.ui.keyCode.HOME:i=this._valueMin();break;case I.ui.keyCode.END:i=this._valueMax();break;case I.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case I.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case I.ui.keyCode.UP:case I.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case I.ui.keyCode.DOWN:case I.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=I(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(I(t.target),null,"ui-state-active"))}}}),I.widget("ui.sortable",I.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t*{ cursor: "+o.cursor+" !important; }").appendTo(n)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return I.ui.ddmanager&&(I.ui.ddmanager.current=this),I.ui.ddmanager&&!o.dropBehaviour&&I.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var e,i,s,n,o=this.options,a=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageYt[this.floating?"width":"height"]?p:o",i.document[0]);return i._addClass(e,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(e,"ui-sortable-helper"),"tbody"===t?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),I("",i.document[0]).appendTo(e)):"tr"===t?i._createTrPlaceholder(i.currentItem,e):"img"===t&&e.attr("src",i.currentItem.attr("src")),s||e.css("visibility","hidden"),e},update:function(t,e){s&&!n.forcePlaceholderSize||(e.height()||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=I(n.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),n.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){I(" ",i.document[0]).attr("colspan",I(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){var e,i,s,n,o,a,r,h,l,c,u=null,d=null;for(e=this.containers.length-1;0<=e;e--)if(!I.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(u&&I.contains(this.containers[e].element[0],u.element[0]))continue;u=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",t,this._uiHash(this)),this.containers[e].containerCache.over=0);if(u)if(1===this.containers.length)this.containers[d].containerCache.over||(this.containers[d]._trigger("over",t,this._uiHash(this)),this.containers[d].containerCache.over=1);else{for(s=1e4,n=null,o=(l=u.floating||this._isFloating(this.currentItem))?"left":"top",a=l?"width":"height",c=l?"pageX":"pageY",i=this.items.length-1;0<=i;i--)I.contains(this.containers[d].element[0],this.items[i].item[0])&&this.items[i].item[0]!==this.currentItem[0]&&(r=this.items[i].item.offset()[o],h=!1,t[c]-r>this.items[i][a]/2&&(h=!0),Math.abs(t[c]-r)this.containment[2]&&(n=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),s.grid&&(e=this.originalPageY+Math.round((o-this.originalPageY)/s.grid[1])*s.grid[1],o=this.containment?e-this.offset.click.top>=this.containment[1]&&e-this.offset.click.top<=this.containment[3]?e:e-this.offset.click.top>=this.containment[1]?e-s.grid[1]:e+s.grid[1]:e,i=this.originalPageX+Math.round((n-this.originalPageX)/s.grid[0])*s.grid[0],n=this.containment?i-this.offset.click.left>=this.containment[0]&&i-this.offset.click.left<=this.containment[2]?i:i-this.offset.click.left>=this.containment[0]?i-s.grid[0]:i+s.grid[0]:i)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():r?0:a.scrollTop()),left:n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():r?0:a.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return I.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((0").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0s.max?s.max:null!==s.min&&t"},_buttonHtml:function(){return""}});var w;I.ui.spinner;I.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(w=/#.*$/,function(t){var e,i;e=t.href.replace(w,""),i=location.href.replace(w,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=I.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!I.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=I()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=I()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var h=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){I(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){I(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return I("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=I(),this.anchors.each(function(t,e){var i,s,n,o=I(e).uniqueId().attr("id"),a=I(e).closest("li"),r=a.attr("aria-controls");h._isLocal(e)?(n=(i=e.hash).substring(1),s=h.element.find(h._sanitizeSelector(i))):(i="#"+(n=a.attr("aria-controls")||I({}).uniqueId()[0].id),(s=h.element.find(i)).length||(s=h._createPanel(n)).insertAfter(h.panels[t-1]||h.tablist),s.attr("aria-live","polite")),s.length&&(h.panels=h.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return I("
      ").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i,s;for(I.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),s=0;i=this.tabs[s];s++)e=I(i),!0===t||-1!==I.inArray(s,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&I.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=I(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=I(this).outerHeight(!0)}),this.panels.each(function(){I(this).height(Math.max(0,i-I(this).innerHeight()+I(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,I(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=I(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?I():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):I(),h={oldTab:i,oldPanel:r,newTab:o?I():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,h)||(e.active=!o&&this.tabs.index(s),this.active=n?I():s,this.xhr&&this.xhr.abort(),r.length||a.length||I.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,h))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===I(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var e,i=this._findActive(t);i[0]!==this.active[0]&&(i.length||(i=this.active),e=i.find(".ui-tabs-anchor")[0],this._eventHandler({target:e,currentTarget:e,preventDefault:I.noop}))},_findActive:function(t){return!1===t?I():this.tabs.eq(t)},_getIndex:function(t){return"string"==typeof t&&(t=this.anchors.index(this.anchors.filter("[href$='"+I.ui.escapeSelector(t)+"']"))),t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){I.data(this,"ui-tabs-destroy")?I(this).remove():I(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=I(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(void 0===i?t=!1:(i=this._getIndex(i),t=I.isArray(t)?I.map(t,function(t){return t!==i?t:null}):I.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==I.inArray(t,e))return;e=I.isArray(e)?I.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);var n=this,i=this.tabs.eq(t),e=i.find(".ui-tabs-anchor"),o=this._getPanelForTab(i),a={tab:i,panel:o},r=function(t,e){"abort"===e&&n.panels.stop(!1,!0),n._removeClass(i,"ui-tabs-loading"),o.removeAttr("aria-busy"),t===n.xhr&&delete n.xhr};this._isLocal(e[0])||(this.xhr=I.ajax(this._ajaxSettings(e,s,a)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){o.html(t),n._trigger("load",s,a),r(i,e)},1)}).fail(function(t,e){setTimeout(function(){r(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,I.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){var e=I(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+e))}}),!1!==I.uiBackCompat&&I.widget("ui.tabs",I.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});I.ui.tabs;I.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=I(this).attr("title")||"";return I("").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",I.trim(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),s=I.inArray(e,i);-1!==s&&i.splice(s,1),t.removeData("ui-tooltip-id"),(i=I.trim(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=I("
      ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=I([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&I.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;I.each(this.tooltips,function(t,e){var i=I.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=I(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=I(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=I([])},open:function(t){var i=this,e=I(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=I(this);e.data("ui-tooltip-open")&&((t=I.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t,s=this.options.content,n=this,o=i?i.type:null;if("string"==typeof s||s.nodeType||s.jquery)return this._open(i,e,s);(t=s.call(e[0],function(t){n._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=o),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a,r=I.extend({},this.options.position);function h(t){r.of=t,n.is(":hidden")||n.position(r)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(a=I("
      ").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),a.removeAttr("id").find("[id]").removeAttr("id"),a.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:h}),h(t)):n.position(I.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(h(r.of),clearInterval(o))},I.fx.interval)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,i){var e={keyup:function(t){if(t.keyCode===I.ui.keyCode.ESCAPE){var e=I.Event(t);e.currentTarget=i[0],this.close(e,!0)}}};i[0]!==this.element[0]&&(e.remove=function(){this._removeTooltip(this._find(i).tooltip)}),t&&"mouseover"!==t.type||(e.mouseleave="close"),t&&"focusin"!==t.type||(e.focusout="close"),this._on(!0,i,e)},close:function(t){var e,i=this,s=I(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(I(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&I.each(this.parents,function(t,e){I(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=I("
      ").attr("role","tooltip"),i=I("
      ").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var n=this;I.each(this.tooltips,function(t,e){var i=I.Event("blur"),s=e.element;i.target=i.currentTarget=s[0],n.close(i,!0),I("#"+t).remove(),s.data("ui-tooltip-title")&&(s.attr("title")||s.attr("title",s.data("ui-tooltip-title")),s.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==I.uiBackCompat&&I.widget("ui.tooltip",I.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});I.ui.tooltip}); \ No newline at end of file +/*! jQuery UI - v1.14.1 - 2024-12-10 +* https://jqueryui.com +* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/droppable.js, widgets/resizable.js, widgets/selectable.js, widgets/sortable.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/selectmenu.js, widgets/slider.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js +* Copyright OpenJS Foundation and other contributors; Licensed MIT */ + +(t=>{"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(V){V.ui=V.ui||{};V.ui.version="1.14.1";var n,s,x,k,o,a,r,l,h,i,E=0,N=Array.prototype.hasOwnProperty,c=Array.prototype.slice;V.cleanData=(n=V.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=V._data(i,"events"))&&e.remove&&V(i).triggerHandler("remove");n(t)}),V.widget=function(t,i,e){var s,n,o,a,r={},l=t.split(".")[0];return"__proto__"===(t=t.split(".")[1])||"constructor"===t?V.error("Invalid widget name: "+t):(a=l+"-"+t,e||(e=i,i=V.Widget),Array.isArray(e)&&(e=V.extend.apply(null,[{}].concat(e))),V.expr.pseudos[a.toLowerCase()]=function(t){return!!V.data(t,a)},V[l]=V[l]||{},s=V[l][t],n=V[l][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},V.extend(n,s,{version:e.version,_proto:V.extend({},e),_childConstructors:[]}),(o=new i).options=V.widget.extend({},o.options),V.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}r[e]="function"!=typeof s?s:function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}}),n.prototype=V.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},r,{constructor:n,namespace:l,widgetName:t,widgetFullName:a}),s?(V.each(s._childConstructors,function(t,e){var i=e.prototype;V.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),V.widget.bridge(t,n),n)},V.widget.extend=function(t){for(var e,i,s=c.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=E++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n{var i=[];n.element.each(function(t,e){V.map(a.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),a._on(V(i),{remove:"_untrackClassesElement"})})(),V(V.uniqueSort(i.get().concat(n.element.get())))):V(i.not(n.element).get()),a.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=V.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;V.each(s.classesElementLookup,function(t,e){-1!==V.inArray(i.target,e)&&(s.classesElementLookup[t]=V(e.not(i.target).get()))}),this._off(V(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,e={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return e.element.toggleClass(this._classes(e),s),this},_on:function(n,o,t){var a,r=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=a=V(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,a=this.widget()),V.each(t,function(t,e){function i(){if(n||!0!==r.options.disabled&&!V(this).hasClass("ui-state-disabled"))return("string"==typeof e?r[e]:e).apply(r,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||V.guid++);var t=t.match(/^([\w:-]*)\s*(.*)$/),s=t[1]+r.eventNamespace,t=t[2];t?a.on(s,t,i):o.on(s,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=V(this.bindings.not(t).get()),this.focusable=V(this.focusable.not(t).get()),this.hoverable=V(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(V(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(V(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=V.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},V.each({show:"fadeIn",hide:"fadeOut"},function(o,a){V.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||a:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!V.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&V.effects&&V.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){V(this)[o](),i&&i.call(e[0]),t()})}}),V.widget;function C(t,e,i){return[parseFloat(t[0])*(h.test(t[0])?e/100:1),parseFloat(t[1])*(h.test(t[1])?i/100:1)]}function D(t,e){return parseInt(V.css(t,e),10)||0}function I(t){return null!=t&&t===t.window}x=Math.max,k=Math.abs,o=/left|center|right/,a=/top|center|bottom/,r=/[\+\-]\d+(\.[\d]+)?%?/,l=/^\w+/,h=/%$/,i=V.fn.position,V.position={scrollbarWidth:function(){var t,e,i;return void 0!==s?s:(i=(e=V("
      ")).children()[0],V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})):i.apply(this,arguments)},V.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,s=s.width,o=t.left-e.collisionPosition.marginLeft,a=n-o,r=o+e.collisionWidth-s-n;s=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=this.document[0].activeElement;V(t.target).closest(e).length||V(e).trigger("blur")},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3])&&(a=i[3]+this.offset.click.top),s.grid&&(e=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||e-this.offset.click.top>=i[1]||e-this.offset.click.top>i[3]?e:e-this.offset.click.top>=i[1]?e-s.grid[1]:e+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis)?this.originalPageY:a)-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY
      ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?s.outerHeight():s.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s,n=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),n.containment&&(e+=V(n.containment).scrollLeft()||0,i+=V(n.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this._helper||(s=this._calculateAdjustedElementDimensions(o)),this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:s.width,height:s.height},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:s.width,height:s.height},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof n.aspectRatio?n.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(i=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(i=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,e=e?0:o.sizeDiff.width,e={width:o.helper.width()-e,height:o.helper.height()-i},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper)&&!n.animate&&this._proportionallyResize(),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.helper.css(t),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px",this.helper.width(t.width)),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px",this.helper.height(t.height)),t},_updateVirtualBoundaries:function(t){var e,i,s,n=this.options,n={minWidth:this._isNumber(n.minWidth)?n.minWidth:0,maxWidth:this._isNumber(n.maxWidth)?n.maxWidth:1/0,minHeight:this._isNumber(n.minHeight)?n.minHeight:0,maxHeight:this._isNumber(n.maxHeight)?n.maxHeight:1/0};(this._aspectRatio||t)&&(t=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,e=n.maxHeight*this.aspectRatio,s=n.maxWidth/this.aspectRatio,n.minWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_calculateAdjustedElementDimensions:function(t){var e,i,s=t.get(0);return"content-box"!==t.css("box-sizing")||!this._hasScroll(s)&&!this._hasScroll(s,"left")?{height:parseFloat(t.css("height")),width:parseFloat(t.css("width"))}:(e=parseFloat(s.style.width),s=parseFloat(s.style.height),i=this._getPaddingPlusBorderDimensions(t),e=isNaN(e)?this._getElementTheoreticalSize(t,i,"width"):e,{height:isNaN(s)?this._getElementTheoreticalSize(t,i,"height"):s,width:e})},_getElementTheoreticalSize:function(t,e,i){return Math.max(0,Math.ceil(t.get(0)["offset"+i[0].toUpperCase()+i.slice(1)]-e[i]-.5))||0},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
      ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,n=n?0:i.sizeDiff.width,n={width:i.size.width-n,height:i.size.height-o},o=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,a=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,a&&o?{top:a,left:o}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,t,e,n=V(this).resizable("instance"),o=n.options,a=n.element,o=o.containment,a=o instanceof V?o.get(0):/parent/.test(o)?a.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},o=n.containerOffset,e=n.containerSize.height,t=n.containerSize.width,t=n._hasScroll(a,"left")?a.scrollWidth:t,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:o.left,top:o.top,width:t,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,t=e._aspectRatio||t.shiftKey,o={top:0,left:0},a=e.containerElement,r=!0;a[0]!==document&&/static/.test(a.css("position"))&&(o=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-o.left),t&&(e.size.height=e.size.width/e.aspectRatio,r=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),t&&(e.size.width=e.size.height*e.aspectRatio,r=!1),e.position.top=e._helper?s.top:0),a=e.containerElement.get(0)===e.element.parent().get(0),i=/relative|absolute/.test(e.containerElement.css("position")),a&&i?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-o.left:e.offset.left-s.left)),a=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-o.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,t)&&(e.size.height=e.size.width/e.aspectRatio,r=!1),a+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-a,t)&&(e.size.width=e.size.height*e.aspectRatio,r=!1),r||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var i=V(this).resizable("instance"),t=i.options;V(t.alsoResize).each(function(){var t=V(this),e=i._calculateAdjustedElementDimensions(t);t.data("ui-resizable-alsoresize",{width:e.width,height:e.height,left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!0===V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,s=Math.round((s.height-n.height)/h)*h,u=n.width+c,d=n.height+s,p=i.maxWidth&&i.maxWidthu,m=i.minHeight&&i.minHeight>d;i.grid=r,g&&(u+=l),m&&(d+=h),p&&(u-=l),f&&(d-=h),/^(se|s|e)$/.test(a)?(e.size.width=u,e.size.height=d):/^(ne)$/.test(a)?(e.size.width=u,e.size.height=d,e.position.top=o.top-s):/^(sw)$/.test(a)?(e.size.width=u,e.size.height=d,e.position.left=o.left-c):((d-h<=0||u-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){var t,n,o,a,r,l,h;if(this.dragged=!0,!this.options.disabled)return o=(n=this).options,a=this.opos[0],r=this.opos[1],(l=s.pageX) *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t*{ cursor: "+o.cursor+" !important; }").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageYt[this.floating?"width":"height"]?h&&c:o",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width())||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V(" ",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3])&&(s=this.containment[3]+this.offset.click.top),e.grid)&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0]),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this===this.currentContainer||e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this._storedStylesheet&&(this._storedStylesheet.remove(),this._storedStylesheet=null),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i li > :first-child").add(t.find("> :not(li)").filter(function(t){return t%2==0}))},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V(""),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"===t?this._activate(e):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e)&&this._createIcons())},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).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(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),r={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,r)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(r),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(a=i.children(".ui-accordion-header-icon"),this._removeClass(a,null,e.icons.activeHeader)._addClass(a,null,e.icons.header)),n)||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(t=s.children(".ui-accordion-header-icon"),this._removeClass(t,null,e.icons.header)._addClass(t,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active"))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){function s(){o._toggleComplete(e)}var n,o=this,a=0,r=t.css("box-sizing"),l=t.length&&(!i.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(this.document[0].activeElement);!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active)&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]!==i[0])||i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),t=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(t,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),e=(i=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(e,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(e=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-e-i,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&"true"===this.element.prop("contentEditable"),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)i=!1,this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault();else if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){n?(n=!1,t.preventDefault()):this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("
        ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent)&&/^mouse/.test(t.originalEvent.type)?(this.menu.blur(),this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)})):(s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("
        ").text(i))},100)))},menuselect:function(t,e){var e=e.item.data("ui-autocomplete-item"),i=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.trigger("focus"),this.previous=i),!1!==this._trigger("select",t,{item:e})&&this._value(e.value),this.term=this._value(),this.close(t),this.selectedItem=e}}),this.liveRegion=V("
        ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=(t=(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))&&t[0]?t:this.element.closest(".ui-front, dialog")).length?t:this.document[0].body},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(V("
        ").text(e.label)).appendTo(t)},_move:function(t,e){this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur()):this.menu[t](e):this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}}),V.ui.autocomplete;var L,d,R=/ui-corner-([a-z]){2,6}/g;V.widget("ui.controlgroup",{version:"1.14.1",defaultElement:"
        ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};t&&("controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),a=a.concat(e.get())):V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(R,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?this._callChildMethod(e?"disable":"enable"):this.refresh()},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}}),V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.14.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",(t=this.label.contents().not(this.element[0])).length&&(this.originalLabel+=t.clone().wrapAll("
        ").parent().html()),this.originalLabel&&(e.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(e.disabled=t),e},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+CSS.escape(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(V(this).prop("form")).length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){"label"===t&&!e||(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e):this.refresh())},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V(""),this.iconSpace=V(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),V.ui.checkboxradio,V.widget("ui.button",{version:"1.14.1",defaultElement:"
        "+(0
        ":""):"")}h+=d}return h+=T,t._keyEvent=!1,h},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="
        ",y="";if(o||!f)y+=""+a[e]+"";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+=""}if(m||(b+=y+(!o&&f&&g?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!g)b+=""+i+"";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":" ")+y),b+="
        "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),s=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=s.getDate(),t.drawMonth=t.selectedMonth=s.getMonth(),t.drawYear=t.selectedYear=s.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),i=i&&e=s.getTime())&&(!n||e.getTime()<=n.getTime())&&(!o||e.getFullYear()>=o)&&(!a||e.getFullYear()<=a)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:"string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);s=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),s,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new Y,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.14.1";V.widget("ui.dialog",{version:"1.14.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var e=V(this).css(t).offset().top;e<0&&V(this).css("top",t.top-e)}},resizable:!0,show:null,title:null,uiDialogTitleHeadingLevel:0,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&V.fn.draggable&&this._makeDraggable(),this.options.resizable&&V.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?V(t):this.document.find(t||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:V.noop,enable:V.noop,close:function(t){var e=this;this._isOpen&&!1!==this._trigger("beforeClose",t)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||V(this.document[0].activeElement).trigger("blur"),this._hide(this.uiDialog,this.options.hide,function(){e._trigger("close",t)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(t,e){var i=!1,s=this.uiDialog.siblings(".ui-front:visible").map(function(){return+V(this).css("z-index")}).get(),s=Math.max.apply(null,s);return s>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=(t=(t=(t=(t=t||this.element.find("[autofocus]")).length?t:this.element.find(":tabbable")).length?t:this.uiDialogButtonPane.find(":tabbable")).length?t:this.uiDialogTitlebarClose.filter(":tabbable")).length?t:this.uiDialog).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=this.document[0].activeElement;this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus()},_createWrapper:function(){this.uiDialog=V("
        ").hide().attr({tabIndex:-1,role:"dialog","aria-modal":this.options.modal?"true":null}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){var e,i,s;this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE?(t.preventDefault(),this.close(t)):t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){this.uiDialogTitlebar=V("
        "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("").button({label:V("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}});var t=Number.isInteger(this.options.uiDialogTitleHeadingLevel)&&0").uniqueId().prependTo(this.uiDialogTitlebar);this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=V("
        "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("
        ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_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(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i)&&e&&this._makeDraggable(),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")),"modal"===t)&&s.attr("aria-modal",e?"true":null)},_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 t=V(this);return V("
        ").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i;this.options.modal&&(i=!0,this._delay(function(){i=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;i||(e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable())}.bind(this)),this.overlay=V("
        ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!0===V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),V.ui.dialog,V.widget("ui.progressbar",{version:"1.14.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=V("
        ").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&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)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("
        ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectmenu",[V.ui.formResetMixin,{version:"1.14.1",defaultElement:"",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t)},mousewheel:function(t,e){var i=this.document[0].activeElement;if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0e.max?e.max:null!==e.min&&t"},_buttonHtml:function(){return""}});V.ui.spinner,V.widget("ui.tabs",{version:"1.14.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(f=/#.*$/,function(t){var e=t.href.replace(f,""),i=location.href.replace(f,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1 li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n=V(e).uniqueId().attr("id"),o=V(e).closest("li"),a=o.attr("aria-controls");r._isLocal(e)?(s=decodeURIComponent(e.hash).substring(1),i=r.element.find("#"+CSS.escape(s))):(s=o.attr("aria-controls")||V({}).uniqueId()[0].id,(i=r.element.find("#"+s)).length||(i=r._createPanel(s)).insertAfter(r.panels[t-1]||r.tablist),i.attr("aria-live","polite")),i.length&&(r.panels=r.panels.add(i)),a&&o.data("ui-tabs-aria-controls",a),o.attr({"aria-controls":s,"aria-labelledby":n}),i.attr("aria-labelledby",n)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("
        ").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=t.length?t:this.active).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+CSS.escape(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){a.html(t),o._trigger("load",s,r),n(i,e)}).fail(function(t,e){n(t,e)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find("#"+CSS.escape(t))}}),!0===V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),V.ui.tabs,V.widget("ui.tooltip",{version:"1.14.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("
        ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){e.data("ui-tooltip-open")&&(i&&(i.type=n),s._open(i,e,t))}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,s.is(":hidden")||s.position(a)}i&&((o=this._find(e))?o.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),o=this._tooltip(e),s=o.tooltip,this._addDescribedBy(e,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(o=V("
        ").html(s.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),o.removeAttr("id").find("[id]").removeAttr("id"),o.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):s.position(V.extend({of:e},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(n=this.delayedShow=setInterval(function(){s.is(":visible")&&(r(a.of),clearInterval(n))},13)),this._trigger("open",t,{tooltip:s})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding)||(n.closing=!1)):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("
        ").attr("role","tooltip"),i=V("
        ").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=t.length?t:this.document[0].body},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!0===V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),V.ui.tooltip;var f,g=V,m={},q=m.toString,K=/^([\-+])=\s*(\d+\.?\d*)/,U=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16),t[4]?(parseInt(t[4],16)/255).toFixed(2):1]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16),t[4]?(parseInt(t[4]+t[4],16)/255).toFixed(2):1]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],_=g.Color=function(t,e,i,s){return new g.Color.fn.parse(t,e,i,s)},v={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},X={byte:{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},b=g.each;function y(t){return null==t?t+"":"object"==typeof t?m[q.call(t)]||"object":typeof t}function w(t,e,i){var s=X[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function $(s){var n=_(),o=n._rgba=[];return s=s.toLowerCase(),b(U,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[v[e].cache]=i[v[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&g.extend(o,M.transparent),n):M[s]}function T(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}b(v,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),g.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){m["[object "+e+"]"]=e.toLowerCase()}),_.fn=g.extend(_.prototype,{parse:function(n,t,e,i){if(void 0===n)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=g(n).css(t),t=void 0);var o=this,s=y(n),a=this._rgba=[];return void 0!==t&&(n=[n,t,e,i],s="array"),"string"===s?this.parse($(n)||M._default):"array"===s?(b(v.rgba.props,function(t,e){a[e.idx]=w(n[e.idx],e)}),this):"object"===s?(n instanceof _?b(v,function(t,e){n[e.cache]&&(o[e.cache]=n[e.cache].slice())}):b(v,function(t,i){var s=i.cache;b(i.props,function(t,e){if(!o[s]&&i.to){if("alpha"===t||null==n[t])return;o[s]=i.to(o._rgba)}o[s][e.idx]=w(n[t],e,!0)}),o[s]&&g.inArray(null,o[s].slice(0,3))<0&&(null==o[s][3]&&(o[s][3]=1),i.from)&&(o._rgba=i.from(o[s]))}),this):void 0},is:function(t){var n=_(t),o=!0,a=this;return b(v,function(t,e){var i,s=n[e.cache];return s&&(i=a[e.cache]||e.to&&e.to(a._rgba)||[],b(e.props,function(t,e){if(null!=s[e.idx])return o=s[e.idx]===i[e.idx]})),o}),o},_space:function(){var i=[],s=this;return b(v,function(t,e){s[e.cache]&&i.push(t)}),i.pop()},transition:function(t,a){var t=(h=_(t))._space(),e=v[t],i=0===this.alpha()?_("transparent"):this,r=i[e.cache]||e.to(i._rgba),l=r.slice(),h=h[e.cache];return b(e.props,function(t,e){var i=e.idx,s=r[i],n=h[i],o=X[e.type]||{};null!==n&&(null===s?l[i]=n:(o.mod&&(n-s>o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=w((n-s)*a+s,e)))}),this[t](l)},blend:function(t){var e,i,s;return 1===this._rgba[3]?this:(e=this._rgba.slice(),i=e.pop(),s=_(t)._rgba,_(g.map(e,function(t,e){return(1-i)*s[e]+i*t})))},toRgbaString:function(){var t="rgba(",e=g.map(this._rgba,function(t,e){return null!=t?t:2{var i,s,n={};for(i in e)s=e[i],t[i]===s||tt[i]||!V.fx.step[i]&&isNaN(parseFloat(s))||(n[i]=s);return n})(this.start,this.end),this}),i.attr("class",t),e=e.map(function(){var t=this,e=V.Deferred(),i=V.extend({},o,{queue:!1,complete:function(){e.resolve(t)}});return this.el.animate(this.diff,i),e.promise()}),V.when.apply(V,e.get()).done(function(){s(),V.each(arguments,function(){var e=this.el;V.each(this.diff,function(t){e.css(t,"")})}),o.complete.call(i[0])})})},V.fn.extend({addClass:(J=V.fn.addClass,function(t,e,i,s){return e?V.effects.animateClass.call(this,{add:t},e,i,s):J.apply(this,arguments)}),removeClass:(Q=V.fn.removeClass,function(t,e,i,s){return 1
        ").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.14.1",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){var s;return 0===e?{height:0,width:0,outerHeight:0,outerWidth:0}:(s="horizontal"!==i?(e||100)/100:1,i="vertical"!==i?(e||100)/100:1,{height:t.height()*i,width:t.width()*s,outerHeight:t.outerHeight()*i,outerWidth:t.outerWidth()*s})},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(S+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=S+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0
        ");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-o,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(r,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=at(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},P={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){P[t]=function(t){return Math.pow(t,e+2)}}),V.extend(P,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(P,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});var rt=V.effects;V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,o="show"===o,r=t.direction||"up",l=t.distance,h=t.times||5,c=2*h+(o||a?1:0),u=t.duration/c,d=t.easing,p="up"===r||"down"===r?"top":"left",f="up"===r||"left"===r,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),r=n.css(p),l=l||n["top"==p?"outerHeight":"outerWidth"]()/3,o&&((s={opacity:1})[p]=r,n.css("opacity",0).css(p,f?2*-l:2*l).animate(s,u,d)),a&&(l/=Math.pow(2,h-1)),(s={})[p]=r;g
        ").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,s="hide"===s,o=e.size||15,a=/([0-9]+)%/.exec(o),r=!!e.horizFirst?["right","bottom"]:["bottom","right"],l=e.duration/2,h=V.effects.createPlaceholder(i),c=i.cssClip(),u={clip:V.extend({},c)},d={clip:V.extend({},c)},p=[c[r[0]],c[r[1]]],f=i.queue().length;a&&(o=parseInt(a[1],10)/100*p[s?0:1]),u.clip[r[0]]=o,d.clip[r[0]]=o,d.clip[r[1]]=0,n&&(i.cssClip(d.clip),h&&h.css(V.effects.clipToBox(d)),d.clip=c),i.queue(function(t){h&&h.animate(V.effects.clipToBox(u),l,e.easing).animate(V.effects.clipToBox(d),l,e.easing),t()}).animate(u,l,e.easing).animate(d,l,e.easing).queue(t),V.effects.unshift(i,f,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(r=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*r.y+d.top,f.left=(p.outerWidth-f.outerWidth)*r.x+d.left,g.top=(p.outerHeight-g.outerHeight)*r.y+d.top,g.left=(p.outerWidth-g.outerWidth)*r.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),i=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(i.from.opacity=1,i.to.opacity=0),V.effects.effect.size.call(this,i,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; -var - // Use the correct document accordingly with window argument (sandbox) - document = window.document, +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; - version = "2.1.4", + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var version = "3.7.1", + + rhtmlSuffix = /HTML$/i, // Define a local copy of jQuery jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if not included) return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); }; jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used jquery: version, constructor: jQuery, - // Start with an empty selector - selector: "", - // The default length of a jQuery object is 0 length: 0, @@ -108,13 +176,14 @@ jQuery.fn = jQuery.prototype = { // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { - return num != null ? - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } - // Return all the elements in a clean array - slice.call( this ); + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; }, // Take an array of elements and push it onto the stack @@ -126,23 +195,20 @@ jQuery.fn = jQuery.prototype = { // Add the old object onto the stack (as a reference) ret.prevObject = this; - ret.context = this.context; // Return the newly-formed element set return ret; }, // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); + each: function( callback ) { + return jQuery.each( this, callback ); }, map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { return callback.call( elem, i, elem ); - })); + } ) ); }, slice: function() { @@ -157,14 +223,26 @@ jQuery.fn = jQuery.prototype = { return this.eq( -1 ); }, + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + eq: function( i ) { var len = this.length, j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); }, end: function() { - return this.prevObject || this.constructor(null); + return this.prevObject || this.constructor(); }, // For internal use only. @@ -176,7 +254,7 @@ jQuery.fn = jQuery.prototype = { jQuery.extend = jQuery.fn.extend = function() { var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, + target = arguments[ 0 ] || {}, i = 1, length = arguments.length, deep = false; @@ -191,7 +269,7 @@ jQuery.extend = jQuery.fn.extend = function() { } // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + if ( typeof target !== "object" && !isFunction( target ) ) { target = {}; } @@ -202,27 +280,34 @@ jQuery.extend = jQuery.fn.extend = function() { } for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { + if ( ( options = arguments[ i ] ) != null ) { + // Extend the base object for ( name in options ) { - src = target[ name ]; copy = options[ name ]; + // Prevent Object.prototype pollution // Prevent never-ending loop - if ( target === copy ) { + if ( name === "__proto__" || target === copy ) { continue; } // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; + clone = src; } + copyIsArray = false; // Never move original objects, clone them target[ name ] = jQuery.extend( deep, clone, copy ); @@ -239,7 +324,8 @@ jQuery.extend = jQuery.fn.extend = function() { return target; }; -jQuery.extend({ +jQuery.extend( { + // Unique for each copy of jQuery on the page expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), @@ -252,138 +338,56 @@ jQuery.extend({ noop: function() {}, - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; - }, - isPlainObject: function( obj ) { - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { return false; } - if ( obj.constructor && - !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { - return false; + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; } - // If the function hasn't returned already, we're confident that - // |obj| is a plain object, created by {} or constructed with new Object - return true; + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; }, isEmptyObject: function( obj ) { var name; + for ( name in obj ) { return false; } return true; }, - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - // Support: Android<4.0, iOS<6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call(obj) ] || "object" : - typeof obj; + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); }, - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; + each: function( obj, callback ) { + var length, i = 0; - code = jQuery.trim( code ); - - if ( code ) { - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf("use strict") === 1 ) { - script = document.createElement("script"); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE9-11+ - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; } } - - // A special, fast, case for the most common use of each } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; } } } @@ -391,11 +395,36 @@ jQuery.extend({ return obj; }, - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); + + // Retrieve the text value of an array of DOM nodes + text: function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += jQuery.text( node ); + } + } + if ( nodeType === 1 || nodeType === 11 ) { + return elem.textContent; + } + if ( nodeType === 9 ) { + return elem.documentElement.textContent; + } + if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; }, // results is for internal usage only @@ -403,10 +432,10 @@ jQuery.extend({ var ret = results || []; if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { + if ( isArrayLike( Object( arr ) ) ) { jQuery.merge( ret, typeof arr === "string" ? - [ arr ] : arr + [ arr ] : arr ); } else { push.call( ret, arr ); @@ -420,6 +449,17 @@ jQuery.extend({ return arr == null ? -1 : indexOf.call( arr, elem, i ); }, + isXMLDoc: function( elem ) { + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; + + // Assume HTML when documentElement doesn't yet exist, such as inside + // document fragments. + return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit merge: function( first, second ) { var len = +second.length, j = 0, @@ -455,14 +495,13 @@ jQuery.extend({ // arg is for internal usage only map: function( elems, callback, arg ) { - var value, + var length, value, i = 0, - length = elems.length, - isArray = isArraylike( elems ), ret = []; // Go through the array, translating each of the items to their new values - if ( isArray ) { + if ( isArrayLike( elems ) ) { + length = elems.length; for ( ; i < length; i++ ) { value = callback( elems[ i ], i, arg ); @@ -483,116 +522,141 @@ jQuery.extend({ } // Flatten any nested arrays - return concat.apply( [], ret ); + return flat( ret ); }, // A global GUID counter for objects guid: 1, - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - // jQuery.support is not used in Core but other projects attach their // properties to it so it needs to exist. support: support -}); +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} // Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); -function isArraylike( obj ) { +function isArrayLike( obj ) { - // Support: iOS 8.2 (not reproducible in simulator) + // Support: real iOS 8.2 only (not reproducible in simulator) // `in` check used to prevent JIT error (gh-2145) // hasOwn isn't used here due to false negatives // regarding Nodelist length in IE - var length = "length" in obj && obj.length, - type = jQuery.type( obj ); + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); - if ( type === "function" || jQuery.isWindow( obj ) ) { + if ( isFunction( obj ) || isWindow( obj ) ) { return false; } - if ( obj.nodeType === 1 && length ) { - return true; - } - return type === "array" || length === 0 || typeof length === "number" && length > 0 && ( length - 1 ) in obj; } -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.0-pre - * http://sizzlejs.com/ - * - * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-12-16 - */ -(function( window ) { + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +} +var pop = arr.pop; + + +var sort = arr.sort; + + +var splice = arr.splice; + + +var whitespace = "[\\x20\\t\\r\\n\\f]"; + + +var rtrimCSS = new RegExp( + "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", + "g" +); + + + + +// Note: an element does not contain itself +jQuery.contains = function( a, b ) { + var bup = b && b.parentNode; + + return a === bup || !!( bup && bup.nodeType === 1 && ( + + // Support: IE 9 - 11+ + // IE doesn't have `contains` on SVG. + a.contains ? + a.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); +}; + + + + +// CSS string/identifier serialization +// https://drafts.csswg.org/cssom/#common-serializing-idioms +var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; + +function fcssescape( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; +} + +jQuery.escapeSelector = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + + + + +var preferredDoc = document, + pushNative = push; + +( function() { var i, - support, Expr, - getText, - isXML, - tokenize, - compile, - select, outermostContext, sortInput, hasDuplicate, + push = pushNative, // Local document vars - setDocument, document, - docElem, + documentElement, documentIsHTML, rbuggyQSA, - rbuggyMatches, matches, - contains, // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, + expando = jQuery.expando, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), + nonnativeSelectorCache = createCache(), sortOrder = function( a, b ) { if ( a === b ) { hasDuplicate = true; @@ -600,251 +664,271 @@ var i, return 0; }, - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" + + "loop|multiple|open|readonly|required|scoped", // Regular expressions - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), + // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + // Operator (capture 2) "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - pseudos = ":(" + characterEncoding + ")(?:\\((" + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: // 1. quoted (capture 3; capture 4 or capture 5) "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) ".*" + ")\\)|)", // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + + whitespace + "*" ), + rdescend = new RegExp( whitespace + "|>" ), rpseudo = new RegExp( pseudos ), ridentifier = new RegExp( "^" + identifier + "$" ), matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + ID: new RegExp( "^#(" + identifier + ")" ), + CLASS: new RegExp( "^\\.(" + identifier + ")" ), + TAG: new RegExp( "^(" + identifier + "|[*])" ), + ATTR: new RegExp( "^" + attributes ), + PSEUDO: new RegExp( "^" + pseudos ), + CHILD: new RegExp( + "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + bool: new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + needsContext: new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) }, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, - rnative = /^[^{]+\{\s*\[native \w/, - // Easily-parseable/retrievable ID or TAG or CLASS selectors rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, - rescape = /'|\\/g, - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + // CSS escapes + // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + if ( nonHex ) { + + // Strip the backslash prefix from a non-hex escape sequence + return nonHex; + } + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + return high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); }, - // Used for iframes - // See setDocument() + // Used for iframes; see `setDocument`. + // Support: IE 9 - 11+, Edge 12 - 18+ // Removing the function wrapper causes a "Permission Denied" - // error in IE + // error in IE/Edge. unloadHandler = function() { setDocument(); - }; + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && nodeName( elem, "fieldset" ); + }, + { dir: "parentNode", next: "legend" } + ); + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} // Optimize for push.apply( _, NodeList ) try { push.apply( - (arr = slice.call( preferredDoc.childNodes )), + ( arr = slice.call( preferredDoc.childNodes ) ), preferredDoc.childNodes ); - // Support: Android<4.0 + + // Support: Android <=4.0 // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions arr[ preferredDoc.childNodes.length ].nodeType; } catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; + push = { + apply: function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + }, + call: function( target ) { + pushNative.apply( target, slice.call( arguments, 1 ) ); } }; } -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; +function find( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; - context = context || document; results = results || []; - nodeType = context.nodeType; + // Return early from calls with invalid selector or context if ( typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { return results; } - if ( !seed && documentIsHTML ) { + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; - // Try to shortcut find operations when possible (e.g., not under DocumentFragment) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE 9 only + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + push.call( results, elem ); + return results; + } + } else { return results; } + + // Element context } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; + + // Support: IE 9 only + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + find.contains( context, elem ) && + elem.id === m ) { + + push.call( results, elem ); + return results; + } } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType !== 1 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; - newSelector = groups.join(","); } - if ( newSelector ) { + // Take advantage of querySelectorAll + if ( !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when + // strict-comparing two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( newContext != context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = jQuery.escapeSelector( nid ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + try { push.apply( results, newContext.querySelectorAll( newSelector ) ); return results; - } catch(qsaError) { + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); } finally { - if ( !old ) { - context.removeAttribute("id"); + if ( nid === expando ) { + context.removeAttribute( "id" ); } } } @@ -852,12 +936,12 @@ function Sizzle( selector, context, results, seed ) { } // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); + return select( selector.replace( rtrimCSS, "$1" ), context, results, seed ); } /** * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * @returns {function(string, object)} Returns the Object data after storing it on itself with * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) * deleting the oldest entry */ @@ -865,18 +949,21 @@ function createCache() { var keys = []; function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + + // Use (key + " ") to avoid collision with native prototype properties + // (see https://github.com/jquery/sizzle/issues/157) if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries delete cache[ keys.shift() ]; } - return (cache[ key + " " ] = value); + return ( cache[ key + " " ] = value ); } return cache; } /** - * Mark a function for special use by Sizzle + * Mark a function for special use by jQuery selector module * @param {Function} fn The function to mark */ function markFunction( fn ) { @@ -886,76 +973,34 @@ function markFunction( fn ) { /** * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result + * @param {Function} fn Passed the created element and returns a boolean result */ function assert( fn ) { - var div = document.createElement("div"); + var el = document.createElement( "fieldset" ); try { - return !!fn( div ); - } catch (e) { + return !!fn( el ); + } catch ( e ) { return false; } finally { + // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); + if ( el.parentNode ) { + el.parentNode.removeChild( el ); } + // release memory in IE - div = null; + el = null; } } -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - /** * Returns a function to use in pseudos for input types * @param {String} type */ function createInputPseudo( type ) { return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; + return nodeName( elem, "input" ) && elem.type === type; }; } @@ -965,8 +1010,63 @@ function createInputPseudo( type ) { */ function createButtonPseudo( type ) { return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; + return ( nodeName( elem, "input" ) || nodeName( elem, "button" ) ) && + elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11+ + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; }; } @@ -975,25 +1075,25 @@ function createButtonPseudo( type ) { * @param {Function} fn */ function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { + return markFunction( function( argument ) { argument = +argument; - return markFunction(function( seed, matches ) { + return markFunction( function( seed, matches ) { var j, matchIndexes = fn( [], seed.length, argument ), i = matchIndexes.length; // Match elements found at the specified indexes while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); } } - }); - }); + } ); + } ); } /** - * Checks a node for validity as a Sizzle context + * Checks a node for validity as a jQuery selector context * @param {Element|Object=} context * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value */ @@ -1001,154 +1101,163 @@ function testContext( context ) { return context && typeof context.getElementsByTagName !== "undefined" && context; } -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - /** * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document + * @param {Element|Object} [node] An element or document object to use to set the document * @returns {Object} Returns the current document */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, +function setDocument( node ) { + var subWindow, doc = node ? node.ownerDocument || node : preferredDoc; - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { return document; } - // Set our document + // Update global variables document = doc; - docElem = doc.documentElement; - parent = doc.defaultView; + documentElement = document.documentElement; + documentIsHTML = !jQuery.isXMLDoc( document ); - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent !== parent.top ) { - // IE11 does not have attachEvent, so all must suffer - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } + // Support: iOS 7 only, IE 9 - 11+ + // Older browsers didn't support unprefixed `matches`. + matches = documentElement.matches || + documentElement.webkitMatchesSelector || + documentElement.msMatchesSelector; + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors + // (see trac-13936). + // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`, + // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well. + if ( documentElement.msMatchesSelector && + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 9 - 11+, Edge 12 - 18+ + subWindow.addEventListener( "unload", unloadHandler ); } - /* Support tests - ---------------------------------------------------------------------- */ - documentIsHTML = !isXML( doc ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( doc.getElementsByClassName ); - - // Support: IE<10 + // Support: IE <10 // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, + // The broken getElementById methods don't pick up programmatically-set names, // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); + support.getById = assert( function( el ) { + documentElement.appendChild( el ).id = jQuery.expando; + return !document.getElementsByName || + !document.getElementsByName( jQuery.expando ).length; + } ); - // ID find and filter + // Support: IE 9 only + // Check to see if it's possible to do matchesSelector + // on a disconnected node. + support.disconnectedMatch = assert( function( el ) { + return matches.call( el, "*" ); + } ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // IE/Edge don't support the :scope pseudo-class. + support.scope = assert( function() { + return document.querySelectorAll( ":scope" ); + } ); + + // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only + // Make sure the `:has()` argument is parsed unforgivingly. + // We include `*` in the test to detect buggy implementations that are + // _selectively_ forgiving (specifically when the list includes at least + // one valid selector). + // Note that we treat complete lack of support for `:has()` as if it were + // spec-compliant support, which is fine because use of `:has()` in such + // environments will fail in the qSA path and fall back to jQuery traversal + // anyway. + support.cssHas = assert( function() { + try { + document.querySelector( ":has(*,:jqfake)" ); + return false; + } catch ( e ) { + return true; + } + } ); + + // ID filter and find if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { + Expr.filter.ID = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find.ID = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [ m ] : []; + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; } }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { + Expr.filter.ID = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); return node && node.value === attrId; }; }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find.ID = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; } // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); + Expr.find.TAG = function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; + // DocumentFragment nodes don't have gEBTN + } else { + return context.querySelectorAll( tag ); + } + }; // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( documentIsHTML ) { + Expr.find.CLASS = function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { return context.getElementsByClassName( className ); } }; @@ -1158,143 +1267,94 @@ setDocument = Sizzle.setDocument = function( node ) { // QSA and matchesSelector support - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 rbuggyQSA = []; - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "
        " + - ""; + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } + var input; - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } + documentElement.appendChild( el ).innerHTML = + "" + + ""; - // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } + // Support: iOS <=7 - 8 only + // Boolean attributes and "value" are not treated correctly in some XML documents + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } + // Support: iOS <=7 - 8 only + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); + // Support: iOS 8 only + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); + // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ + // In some of the document kinds, these selectors wouldn't work natively. + // This is probably OK but for backwards compatibility we want to maintain + // handling them through jQuery traversal in jQuery 3.x. + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } + // Support: IE 9 - 11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+ + // In some of the document kinds, these selectors wouldn't work natively. + // This is probably OK but for backwards compatibility we want to maintain + // handling them through jQuery traversal in jQuery 3.x. + documentElement.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + } ); + + if ( !support.cssHas ) { + + // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+ + // Our regular `try-catch` mechanism fails to detect natively-unsupported + // pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`) + // in browsers that parse the `:has()` argument as a forgiving selector list. + // https://drafts.csswg.org/selectors/#relational now requires the argument + // to be parsed unforgivingly, but browsers have not yet fully adjusted. + rbuggyQSA.push( ":has" ); } - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); /* Sorting ---------------------------------------------------------------------- */ // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { + sortOrder = function( a, b ) { // Flag for duplicate removal if ( a === b ) { @@ -1309,7 +1369,11 @@ setDocument = Sizzle.setDocument = function( node ) { } // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? a.compareDocumentPosition( b ) : // Otherwise we know they are disconnected @@ -1317,144 +1381,109 @@ setDocument = Sizzle.setDocument = function( node ) { // Disconnected nodes if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { // Choose the first element that is related to our preferred document - if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a === document || a.ownerDocument == preferredDoc && + find.contains( preferredDoc, a ) ) { return -1; } - if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b === document || b.ownerDocument == preferredDoc && + find.contains( preferredDoc, b ) ) { return 1; } // Maintain original order return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : 0; } return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; }; - return doc; + return document; +} + +find.matches = function( expr, elements ) { + return find( expr, null, null, elements ); }; -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; +find.matchesSelector = function( elem, expr ) { + setDocument( elem ); -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + if ( documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { try { var ret = matches.call( elem, expr ); // IE 9's matchesSelector returns false on disconnected nodes if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document // fragment in IE 9 elem.document && elem.document.nodeType !== 11 ) { return ret; } - } catch (e) {} + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } } - return Sizzle( expr, document, null, [ elem ] ).length > 0; + return find( expr, document, null, [ elem ] ).length > 0; }; -Sizzle.contains = function( context, elem ) { +find.contains = function( context, elem ) { + // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { setDocument( context ); } - return contains( context, elem ); + return jQuery.contains( context, elem ); }; -Sizzle.attr = function( elem, name ) { + +find.attr = function( elem, name ) { + // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { setDocument( elem ); } var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) + + // Don't get fooled by Object.prototype properties (see trac-13807) val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? fn( elem, name, !documentIsHTML ) : undefined; - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; + if ( val !== undefined ) { + return val; + } + + return elem.getAttribute( name ); }; -Sizzle.error = function( msg ) { +find.error = function( msg ) { throw new Error( "Syntax error, unrecognized expression: " + msg ); }; @@ -1462,25 +1491,29 @@ Sizzle.error = function( msg ) { * Document sorting and removing duplicates * @param {ArrayLike} results */ -Sizzle.uniqueSort = function( results ) { +jQuery.uniqueSort = function( results ) { var elem, duplicates = [], j = 0, i = 0; // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); + // + // Support: Android <=4.0+ + // Testing for detecting duplicates is unpredictable so instead assume we can't + // depend on duplicate detection in all browsers without a stable sort. + hasDuplicate = !support.sortStable; + sortInput = !support.sortStable && slice.call( results, 0 ); + sort.call( results, sortOrder ); if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { + while ( ( elem = results[ i++ ] ) ) { if ( elem === results[ i ] ) { j = duplicates.push( i ); } } while ( j-- ) { - results.splice( duplicates[ j ], 1 ); + splice.call( results, duplicates[ j ], 1 ); } } @@ -1491,42 +1524,11 @@ Sizzle.uniqueSort = function( results ) { return results; }; -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; +jQuery.fn.uniqueSort = function() { + return this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) ); }; -Expr = Sizzle.selectors = { +Expr = jQuery.expr = { // Can be adjusted by the user cacheLength: 50, @@ -1547,20 +1549,22 @@ Expr = Sizzle.selectors = { }, preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); + ATTR: function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" ) + .replace( runescape, funescape ); - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; } return match.slice( 0, 4 ); }, - "CHILD": function( match ) { + CHILD: function( match ) { + /* matches from matchExpr["CHILD"] 1 type (only|nth|...) 2 what (child|of-type) @@ -1571,49 +1575,55 @@ Expr = Sizzle.selectors = { 7 sign of y-component 8 y of y-component */ - match[1] = match[1].toLowerCase(); + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - if ( match[1].slice( 0, 3 ) === "nth" ) { // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); + if ( !match[ 3 ] ) { + find.error( match[ 0 ] ); } // numeric x and y parameters for Expr.filter.CHILD // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) + ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); + } else if ( match[ 3 ] ) { + find.error( match[ 0 ] ); } return match; }, - "PSEUDO": function( match ) { + PSEUDO: function( match ) { var excess, - unquoted = !match[6] && match[2]; + unquoted = !match[ 6 ] && match[ 2 ]; - if ( matchExpr["CHILD"].test( match[0] ) ) { + if ( matchExpr.CHILD.test( match[ 0 ] ) ) { return null; } // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; // Strip excess characters from unquoted arguments } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && + ( excess = tokenize( unquoted, true ) ) && + // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); } // Return only captures needed by the pseudo filter method (type and argument) @@ -1623,28 +1633,36 @@ Expr = Sizzle.selectors = { filter: { - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + TAG: function( nodeNameSelector ) { + var expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); return nodeNameSelector === "*" ? - function() { return true; } : + function() { + return true; + } : function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + return nodeName( elem, expectedNodeName ); }; }, - "CLASS": function( className ) { + CLASS: function( className ) { var pattern = classCache[ className + " " ]; return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + ( pattern = new RegExp( "(^|" + whitespace + ")" + className + + "(" + whitespace + "|$)" ) ) && classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); }, - "ATTR": function( name, operator, check ) { + ATTR: function( name, operator, check ) { return function( elem ) { - var result = Sizzle.attr( elem, name ); + var result = find.attr( elem, name ); if ( result == null ) { return operator === "!="; @@ -1655,18 +1673,34 @@ Expr = Sizzle.selectors = { result += ""; - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; + if ( operator === "=" ) { + return result === check; + } + if ( operator === "!=" ) { + return result !== check; + } + if ( operator === "^=" ) { + return check && result.indexOf( check ) === 0; + } + if ( operator === "*=" ) { + return check && result.indexOf( check ) > -1; + } + if ( operator === "$=" ) { + return check && result.slice( -check.length ) === check; + } + if ( operator === "~=" ) { + return ( " " + result.replace( rwhitespace, " " ) + " " ) + .indexOf( check ) > -1; + } + if ( operator === "|=" ) { + return result === check || result.slice( 0, check.length + 1 ) === check + "-"; + } + + return false; }; }, - "CHILD": function( type, what, argument, first, last ) { + CHILD: function( type, what, _argument, first, last ) { var simple = type.slice( 0, 3 ) !== "nth", forward = type.slice( -4 ) !== "last", ofType = what === "of-type"; @@ -1678,12 +1712,13 @@ Expr = Sizzle.selectors = { return !!elem.parentNode; } : - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, + function( elem, _context, xml ) { + var cache, outerCache, node, nodeIndex, start, dir = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; + useCache = !xml && !ofType, + diff = false; if ( parent ) { @@ -1691,11 +1726,15 @@ Expr = Sizzle.selectors = { if ( simple ) { while ( dir ) { node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + nodeName( node, name ) : + node.nodeType === 1 ) { + return false; } } + // Reverse direction for :only-* (if we haven't yet done so) start = dir = type === "only" && !start && "nextSibling"; } @@ -1706,17 +1745,18 @@ Expr = Sizzle.selectors = { // non-xml :nth-child(...) stores cache data on `parent` if ( forward && useCache ) { + // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); + outerCache = parent[ expando ] || ( parent[ expando ] = {} ); cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; node = nodeIndex && parent.childNodes[ nodeIndex ]; - while ( (node = ++nodeIndex && node && node[ dir ] || + while ( ( node = ++nodeIndex && node && node[ dir ] || // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { + ( diff = nodeIndex = 0 ) || start.pop() ) ) { // When found, cache indexes on `parent` and break if ( node.nodeType === 1 && ++diff && node === elem ) { @@ -1725,24 +1765,39 @@ Expr = Sizzle.selectors = { } } - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } + // Use previously-cached element index if available + if ( useCache ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + cache = outerCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } - if ( node === elem ) { - break; + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + nodeName( node, name ) : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + outerCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } } } } @@ -1755,18 +1810,19 @@ Expr = Sizzle.selectors = { }; }, - "PSEUDO": function( pseudo, argument ) { + PSEUDO: function( pseudo, argument ) { + // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes + // https://www.w3.org/TR/selectors/#pseudo-classes // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters // Remember that setFilters inherits from pseudos var args, fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); + find.error( "unsupported pseudo: " + pseudo ); // The user may use createPseudo to indicate that // arguments are needed to create the filter function - // just as Sizzle does + // just as jQuery does if ( fn[ expando ] ) { return fn( argument ); } @@ -1775,15 +1831,15 @@ Expr = Sizzle.selectors = { if ( fn.length > 1 ) { args = [ pseudo, pseudo, "", argument ]; return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { + markFunction( function( seed, matches ) { var idx, matched = fn( seed, argument ), i = matched.length; while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); + idx = indexOf.call( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); } - }) : + } ) : function( elem ) { return fn( elem, 0, args ); }; @@ -1794,49 +1850,53 @@ Expr = Sizzle.selectors = { }, pseudos: { + // Potentially complex pseudos - "not": markFunction(function( selector ) { + not: markFunction( function( selector ) { + // Trim the selector passed to compile // to avoid treating leading and trailing // spaces as combinators var input = [], results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); + matcher = compile( selector.replace( rtrimCSS, "$1" ) ); return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { + markFunction( function( seed, matches, _context, xml ) { var elem, unmatched = matcher( seed, null, xml, [] ), i = seed.length; // Match elements unmatched by `matcher` while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); } } - }) : - function( elem, context, xml ) { - input[0] = elem; + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; + + // Don't keep the element + // (see https://github.com/jquery/sizzle/issues/299) + input[ 0 ] = null; return !results.pop(); }; - }), + } ), - "has": markFunction(function( selector ) { + has: markFunction( function( selector ) { return function( elem ) { - return Sizzle( selector, elem ).length > 0; + return find( selector, elem ).length > 0; }; - }), + } ), - "contains": markFunction(function( text ) { + contains: markFunction( function( text ) { text = text.replace( runescape, funescape ); return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + return ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1; }; - }), + } ), // "Whether an element is represented by a :lang() selector // is based solely on the element's language value @@ -1844,62 +1904,65 @@ Expr = Sizzle.selectors = { // or beginning with the identifier C immediately followed by "-". // The matching of C against the element's language value is performed case-insensitively. // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { + // https://www.w3.org/TR/selectors/#lang-pseudo + lang: markFunction( function( lang ) { + // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); + if ( !ridentifier.test( lang || "" ) ) { + find.error( "unsupported lang: " + lang ); } lang = lang.replace( runescape, funescape ).toLowerCase(); return function( elem ) { var elemLang; do { - if ( (elemLang = documentIsHTML ? + if ( ( elemLang = documentIsHTML ? elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { elemLang = elemLang.toLowerCase(); return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); return false; }; - }), + } ), // Miscellaneous - "target": function( elem ) { + target: function( elem ) { var hash = window.location && window.location.hash; return hash && hash.slice( 1 ) === elem.id; }, - "root": function( elem ) { - return elem === docElem; + root: function( elem ) { + return elem === documentElement; }, - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + focus: function( elem ) { + return elem === safeActiveElement() && + document.hasFocus() && + !!( elem.type || elem.href || ~elem.tabIndex ); }, // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, + enabled: createDisabledPseudo( false ), + disabled: createDisabledPseudo( true ), - "disabled": function( elem ) { - return elem.disabled === true; - }, + checked: function( elem ) { - "checked": function( elem ) { // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + return ( nodeName( elem, "input" ) && !!elem.checked ) || + ( nodeName( elem, "option" ) && !!elem.selected ); }, - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly + selected: function( elem ) { + + // Support: IE <=11+ + // Accessing the selectedIndex property + // forces the browser to treat the default option as + // selected when in an optgroup. if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions elem.parentNode.selectedIndex; } @@ -1907,8 +1970,9 @@ Expr = Sizzle.selectors = { }, // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo + empty: function( elem ) { + + // https://www.w3.org/TR/selectors/#empty-pseudo // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), // but not by others (comment: 8; processing instruction: 7; etc.) // nodeType < 6 works because attributes (2) do not appear as children @@ -1920,82 +1984,92 @@ Expr = Sizzle.selectors = { return true; }, - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); + parent: function( elem ) { + return !Expr.pseudos.empty( elem ); }, // Element/input types - "header": function( elem ) { + header: function( elem ) { return rheader.test( elem.nodeName ); }, - "input": function( elem ) { + input: function( elem ) { return rinputs.test( elem.nodeName ); }, - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; + button: function( elem ) { + return nodeName( elem, "input" ) && elem.type === "button" || + nodeName( elem, "button" ); }, - "text": function( elem ) { + text: function( elem ) { var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && + return nodeName( elem, "input" ) && elem.type === "text" && - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + // Support: IE <10 only + // New HTML5 attribute values (e.g., "search") appear + // with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); }, // Position-in-collection - "first": createPositionalPseudo(function() { + first: createPositionalPseudo( function() { return [ 0 ]; - }), + } ), - "last": createPositionalPseudo(function( matchIndexes, length ) { + last: createPositionalPseudo( function( _matchIndexes, length ) { return [ length - 1 ]; - }), + } ), - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + eq: createPositionalPseudo( function( _matchIndexes, length, argument ) { return [ argument < 0 ? argument + length : argument ]; - }), + } ), - "even": createPositionalPseudo(function( matchIndexes, length ) { + even: createPositionalPseudo( function( matchIndexes, length ) { var i = 0; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; - }), + } ), - "odd": createPositionalPseudo(function( matchIndexes, length ) { + odd: createPositionalPseudo( function( matchIndexes, length ) { var i = 1; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; - }), + } ), + + lt: createPositionalPseudo( function( matchIndexes, length, argument ) { + var i; + + if ( argument < 0 ) { + i = argument + length; + } else if ( argument > length ) { + i = length; + } else { + i = argument; + } - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; for ( ; --i >= 0; ) { matchIndexes.push( i ); } return matchIndexes; - }), + } ), - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + gt: createPositionalPseudo( function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; ++i < length; ) { matchIndexes.push( i ); } return matchIndexes; - }) + } ) } }; -Expr.pseudos["nth"] = Expr.pseudos["eq"]; +Expr.pseudos.nth = Expr.pseudos.eq; // Add button/input type pseudos for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { @@ -2010,7 +2084,7 @@ function setFilters() {} setFilters.prototype = Expr.filters = Expr.pseudos; Expr.setFilters = new setFilters(); -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { +function tokenize( selector, parseOnly ) { var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[ selector + " " ]; @@ -2026,37 +2100,39 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) { while ( soFar ) { // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { if ( match ) { + // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; + soFar = soFar.slice( match[ 0 ].length ) || soFar; } - groups.push( (tokens = []) ); + groups.push( ( tokens = [] ) ); } matched = false; // Combinators - if ( (match = rcombinators.exec( soFar )) ) { + if ( ( match = rleadingCombinator.exec( soFar ) ) ) { matched = match.shift(); - tokens.push({ + tokens.push( { value: matched, + // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); + type: match[ 0 ].replace( rtrimCSS, " " ) + } ); soFar = soFar.slice( matched.length ); } // Filters for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { matched = match.shift(); - tokens.push({ + tokens.push( { value: matched, type: type, matches: match - }); + } ); soFar = soFar.slice( matched.length ); } } @@ -2069,37 +2145,44 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) { // Return the length of the invalid excess // if we're just parsing // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; + if ( parseOnly ) { + return soFar.length; + } + + return soFar ? + find.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} function toSelector( tokens ) { var i = 0, len = tokens.length, selector = ""; for ( ; i < len; i++ ) { - selector += tokens[i].value; + selector += tokens[ i ].value; } return selector; } function addCombinator( matcher, combinator, base ) { var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", doneName = done++; return combinator.first ? + // Check against closest ancestor/preceding element function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { + while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { return matcher( elem, context, xml ); } } + return false; } : // Check against all ancestor/preceding elements @@ -2107,9 +2190,9 @@ function addCombinator( matcher, combinator, base ) { var oldCache, outerCache, newCache = [ dirruns, doneName ]; - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching if ( xml ) { - while ( (elem = elem[ dir ]) ) { + while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { if ( matcher( elem, context, xml ) ) { return true; @@ -2117,26 +2200,31 @@ function addCombinator( matcher, combinator, base ) { } } } else { - while ( (elem = elem[ dir ]) ) { + while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (oldCache = outerCache[ dir ]) && + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + if ( skip && nodeName( elem, skip ) ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = outerCache[ key ] ) && oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); + return ( newCache[ 2 ] = oldCache[ 2 ] ); } else { + // Reuse newcache so results back-propagate to previous elements - outerCache[ dir ] = newCache; + outerCache[ key ] = newCache; // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { return true; } } } } } + return false; }; } @@ -2145,20 +2233,20 @@ function elementMatcher( matchers ) { function( elem, context, xml ) { var i = matchers.length; while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { + if ( !matchers[ i ]( elem, context, xml ) ) { return false; } } return true; } : - matchers[0]; + matchers[ 0 ]; } function multipleContexts( selector, contexts, results ) { var i = 0, len = contexts.length; for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); + find( selector, contexts[ i ], results ); } return results; } @@ -2171,7 +2259,7 @@ function condense( unmatched, map, filter, context, xml ) { mapped = map != null; for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { + if ( ( elem = unmatched[ i ] ) ) { if ( !filter || filter( elem, context, xml ) ) { newUnmatched.push( elem ); if ( mapped ) { @@ -2191,34 +2279,38 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS if ( postFinder && !postFinder[ expando ] ) { postFinder = setMatcher( postFinder, postSelector ); } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, matcherOut, preMap = [], postMap = [], preexisting = results.length, // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + elems = seed || + multipleContexts( selector || "*", + context.nodeType ? [ context ] : context, [] ), // Prefilter to get matcher input, preserving a map for seed-results synchronization matcherIn = preFilter && ( seed || !selector ) ? condense( elems, preMap, preFilter, context, xml ) : - elems, + elems; - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches if ( matcher ) { + + // If we have a postFinder, or filtered seed, or non-seed postFilter + // or preexisting results, + matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results; + + // Find primary matches matcher( matcherIn, matcherOut, context, xml ); + } else { + matcherOut = matcherIn; } // Apply postFilter @@ -2229,8 +2321,8 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS // Un-match failing elements by moving them back to matcherIn i = temp.length; while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); } } } @@ -2238,25 +2330,27 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS if ( seed ) { if ( postFinder || preFilter ) { if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts temp = []; i = matcherOut.length; while ( i-- ) { - if ( (elem = matcherOut[i]) ) { + if ( ( elem = matcherOut[ i ] ) ) { + // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); + temp.push( ( matcherIn[ i ] = elem ) ); } } - postFinder( null, (matcherOut = []), temp, xml ); + postFinder( null, ( matcherOut = [] ), temp, xml ); } // Move matched elements from seed to results to keep them synchronized i = matcherOut.length; while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) { - seed[temp] = !(results[temp] = elem); + seed[ temp ] = !( results[ temp ] = elem ); } } } @@ -2274,14 +2368,14 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS push.apply( results, matcherOut ); } } - }); + } ); } function matcherFromTokens( tokens ) { var checkContext, matcher, j, len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], i = leadingRelative ? 1 : 0, // The foundational matcher ensures that elements are reachable from top-level context(s) @@ -2289,42 +2383,52 @@ function matcherFromTokens( tokens ) { return elem === checkContext; }, implicitRelative, true ), matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; + return indexOf.call( checkContext, elem ) > -1; }, implicitRelative, true ), matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || ( + ( checkContext = context ).nodeType ? matchContext( elem, context, xml ) : matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) + + // Avoid hanging onto element + // (see https://github.com/jquery/sizzle/issues/299) checkContext = null; return ret; } ]; for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); // Return special upon seeing a positional matcher if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling j = ++i; for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { + if ( Expr.relative[ tokens[ j ].type ] ) { break; } } return setMatcher( i > 1 && elementMatcher( matchers ), i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), + tokens.slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrimCSS, "$1" ), matcher, i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), j < len && toSelector( tokens ) ); } @@ -2345,26 +2449,42 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { unmatched = seed && [], setMatched = [], contextBackup = outermostContext, + // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + elems = seed || byElement && Expr.find.TAG( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), len = elems.length; if ( outermost ) { - outermostContext = context !== document && context; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; } // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + // Support: iOS <=7 - 9 only + // Tolerate NodeList properties (IE: "length"; Safari: ) matching + // elements by id. (see trac-14142) + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { if ( byElement && elem ) { j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + push.call( results, elem ); break; } } @@ -2375,8 +2495,9 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { // Track unmatched elements for set filters if ( bySet ) { + // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { + if ( ( elem = !matcher && elem ) ) { matchedCount--; } @@ -2387,20 +2508,30 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { } } - // Apply set filters to unmatched elements + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. if ( bySet && i !== matchedCount ) { j = 0; - while ( (matcher = setMatchers[j++]) ) { + while ( ( matcher = setMatchers[ j++ ] ) ) { matcher( unmatched, setMatched, context, xml ); } if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting if ( matchedCount > 0 ) { while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); } } } @@ -2416,7 +2547,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { if ( outermost && !seed && setMatched.length > 0 && ( matchedCount + setMatchers.length ) > 1 ) { - Sizzle.uniqueSort( results ); + jQuery.uniqueSort( results ); } } @@ -2434,20 +2565,21 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { superMatcher; } -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { +function compile( selector, match /* Internal Use Only */ ) { var i, setMatchers = [], elementMatchers = [], cached = compilerCache[ selector + " " ]; if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element if ( !match ) { match = tokenize( selector ); } i = match.length; while ( i-- ) { - cached = matcherFromTokens( match[i] ); + cached = matcherFromTokens( match[ i ] ); if ( cached[ expando ] ) { setMatchers.push( cached ); } else { @@ -2456,40 +2588,44 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { } // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + cached = compilerCache( selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) ); // Save selector and tokenization cached.selector = selector; } return cached; -}; +} /** - * A low-level selection function that works with Sizzle's compiled + * A low-level selection function that works with jQuery's compiled * selector functions * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile + * selector function built with jQuery selector compile * @param {Element} context * @param {Array} [results] * @param {Array} [seed] A set of elements to match against */ -select = Sizzle.select = function( selector, context, results, seed ) { +function select( selector, context, results, seed ) { var i, tokens, token, type, find, compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); results = results || []; - // Try to minimize operations if there is no seed and only one group + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) if ( match.length === 1 ) { - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + context = ( Expr.find.ID( + token.matches[ 0 ].replace( runescape, funescape ), + context + ) || [] )[ 0 ]; if ( !context ) { return results; @@ -2502,20 +2638,22 @@ select = Sizzle.select = function( selector, context, results, seed ) { } // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + i = matchExpr.needsContext.test( selector ) ? 0 : tokens.length; while ( i-- ) { - token = tokens[i]; + token = tokens[ i ]; // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { + if ( Expr.relative[ ( type = token.type ) ] ) { break; } - if ( (find = Expr.find[ type ]) ) { + if ( ( find = Expr.find[ type ] ) ) { + // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && + testContext( context.parentNode ) || context + ) ) ) { // If seed is empty or no tokens remain, we can return early tokens.splice( i, 1 ); @@ -2538,126 +2676,112 @@ select = Sizzle.select = function( selector, context, results, seed ) { context, !documentIsHTML, results, - rsibling.test( selector ) && testContext( context.parentNode ) || context + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context ); return results; -}; +} // One-time assignments +// Support: Android <=4.0 - 4.1+ // Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; // Initialize against the default document setDocument(); -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Support: Android <=4.0 - 4.1+ // Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { +support.sortDetached = assert( function( el ) { + // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); +jQuery.find = find; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.unique = jQuery.uniqueSort; + +// These have always been private, but they used to be documented as part of +// Sizzle so let's maintain them for now for backwards compatibility purposes. +find.compile = compile; +find.select = select; +find.setDocument = setDocument; +find.tokenize = tokenize; + +find.escape = jQuery.escapeSelector; +find.getText = jQuery.text; +find.isXML = jQuery.isXMLDoc; +find.selectors = jQuery.expr; +find.support = jQuery.support; +find.uniqueSort = jQuery.uniqueSort; + + /* eslint-enable */ + +} )(); + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); } - }); -} + } + return matched; +}; -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; + } + return matched; +}; var rneedsContext = jQuery.expr.match.needsContext; -var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); -var risSimple = /^.[^:#\[\.,]*$/; - // Implement the identical functionality for filter and not function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { + if ( isFunction( qualifier ) ) { return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ return !!qualifier.call( elem, i, elem ) !== not; - }); - + } ); } + // Single element if ( qualifier.nodeType ) { return jQuery.grep( elements, function( elem ) { return ( elem === qualifier ) !== not; - }); - + } ); } - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); } - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; - }); + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); } jQuery.filter = function( expr, elems, not ) { @@ -2667,44 +2791,44 @@ jQuery.filter = function( expr, elems, not ) { expr = ":not(" + expr + ")"; } - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); }; -jQuery.fn.extend({ +jQuery.fn.extend( { find: function( selector ) { - var i, + var i, ret, len = this.length, - ret = [], self = this; if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { + return this.pushStack( jQuery( selector ).filter( function() { for ( i = 0; i < len; i++ ) { if ( jQuery.contains( self[ i ], this ) ) { return true; } } - }) ); + } ) ); } + ret = this.pushStack( [] ); + for ( i = 0; i < len; i++ ) { jQuery.find( selector, self[ i ], ret ); } - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; + return len > 1 ? jQuery.uniqueSort( ret ) : ret; }, filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); + return this.pushStack( winnow( this, selector || [], false ) ); }, not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); + return this.pushStack( winnow( this, selector || [], true ) ); }, is: function( selector ) { return !!winnow( @@ -2718,7 +2842,7 @@ jQuery.fn.extend({ false ).length; } -}); +} ); // Initialize a jQuery object @@ -2728,11 +2852,12 @@ jQuery.fn.extend({ var rootjQuery, // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + // Prioritize #id over to avoid XSS via location.hash (trac-9521) + // Strict HTML recognition (trac-11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, - init = jQuery.fn.init = function( selector, context ) { + init = jQuery.fn.init = function( selector, context, root ) { var match, elem; // HANDLE: $(""), $(null), $(undefined), $(false) @@ -2740,9 +2865,16 @@ var rootjQuery, return this; } + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + // Handle HTML strings if ( typeof selector === "string" ) { - if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check match = [ null, selector, null ]; @@ -2751,25 +2883,26 @@ var rootjQuery, } // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { + if ( match && ( match[ 1 ] || !context ) ) { // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; // Option to run scripts is true for back-compat // Intentionally let the error be thrown if parseHTML is not present jQuery.merge( this, jQuery.parseHTML( - match[1], + match[ 1 ], context && context.nodeType ? context.ownerDocument || context : document, true ) ); // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { for ( match in context ) { + // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { + if ( isFunction( this[ match ] ) ) { this[ match ]( context[ match ] ); // ...and otherwise set as attributes @@ -2783,24 +2916,20 @@ var rootjQuery, // HANDLE: $(#id) } else { - elem = document.getElementById( match[2] ); + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { - // Support: Blackberry 4.6 - // gEBID returns nodes no longer in the document (#6963) - if ( elem && elem.parentNode ) { // Inject the element directly into the jQuery object + this[ 0 ] = elem; this.length = 1; - this[0] = elem; } - - this.context = document; - this.selector = selector; return this; } // HANDLE: $(expr, $(...)) } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); + return ( context || root ).find( selector ); // HANDLE: $(expr, context) // (which is just equivalent to: $(context).find(expr) @@ -2810,24 +2939,20 @@ var rootjQuery, // HANDLE: $(DOMElement) } else if ( selector.nodeType ) { - this.context = this[0] = selector; + this[ 0 ] = selector; this.length = 1; return this; // HANDLE: $(function) // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof rootjQuery.ready !== "undefined" ? - rootjQuery.ready( selector ) : + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + // Execute immediately if ready is not present selector( jQuery ); } - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - return jQuery.makeArray( selector, this ); }; @@ -2839,6 +2964,7 @@ rootjQuery = jQuery( document ); var rparentsprev = /^(?:parents|prev(?:Until|All))/, + // Methods guaranteed to produce a unique set when starting from a unique set guaranteedUnique = { children: true, @@ -2847,48 +2973,19 @@ var rparentsprev = /^(?:parents|prev(?:Until|All))/, prev: true }; -jQuery.extend({ - dir: function( elem, dir, until ) { - var matched = [], - truncate = until !== undefined; - - while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { - if ( elem.nodeType === 1 ) { - if ( truncate && jQuery( elem ).is( until ) ) { - break; - } - matched.push( elem ); - } - } - return matched; - }, - - sibling: function( n, elem ) { - var matched = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - matched.push( n ); - } - } - - return matched; - } -}); - -jQuery.fn.extend({ +jQuery.fn.extend( { has: function( target ) { var targets = jQuery( target, this ), l = targets.length; - return this.filter(function() { + return this.filter( function() { var i = 0; for ( ; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { + if ( jQuery.contains( this, targets[ i ] ) ) { return true; } } - }); + } ); }, closest: function( selectors, context ) { @@ -2896,27 +2993,29 @@ jQuery.fn.extend({ i = 0, l = this.length, matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; + targets = typeof selectors !== "string" && jQuery( selectors ); - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : - matched.push( cur ); - break; + // Don't pass non-elements to jQuery#find + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } } } } - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); }, // Determine the position of an element within the set @@ -2942,7 +3041,7 @@ jQuery.fn.extend({ add: function( selector, context ) { return this.pushStack( - jQuery.unique( + jQuery.uniqueSort( jQuery.merge( this.get(), jQuery( selector, context ) ) ) ); @@ -2950,26 +3049,26 @@ jQuery.fn.extend({ addBack: function( selector ) { return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) + this.prevObject : this.prevObject.filter( selector ) ); } -}); +} ); function sibling( cur, dir ) { - while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} return cur; } -jQuery.each({ +jQuery.each( { parent: function( elem ) { var parent = elem.parentNode; return parent && parent.nodeType !== 11 ? parent : null; }, parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); + return dir( elem, "parentNode" ); }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); }, next: function( elem ) { return sibling( elem, "nextSibling" ); @@ -2978,25 +3077,42 @@ jQuery.each({ return sibling( elem, "previousSibling" ); }, nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); + return dir( elem, "nextSibling" ); }, prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); + return dir( elem, "previousSibling" ); }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); }, siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + return siblings( ( elem.parentNode || {} ).firstChild, elem ); }, children: function( elem ) { - return jQuery.sibling( elem.firstChild ); + return siblings( elem.firstChild ); }, contents: function( elem ) { - return elem.contentDocument || jQuery.merge( [], elem.childNodes ); + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); } }, function( name, fn ) { jQuery.fn[ name ] = function( until, selector ) { @@ -3011,9 +3127,10 @@ jQuery.each({ } if ( this.length > 1 ) { + // Remove duplicates if ( !guaranteedUnique[ name ] ) { - jQuery.unique( matched ); + jQuery.uniqueSort( matched ); } // Reverse order for parents* and prev-derivatives @@ -3024,20 +3141,17 @@ jQuery.each({ return this.pushStack( matched ); }; -}); -var rnotwhite = (/\S+/g); +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache +// Convert String-formatted options into Object-formatted ones function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { object[ flag ] = true; - }); + } ); return object; } @@ -3068,156 +3182,186 @@ jQuery.Callbacks = function( options ) { // Convert options from String-formatted to Object-formatted if needed // (we check in cache first) options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : + createOptions( options ) : jQuery.extend( {}, options ); - var // Last fire value (for non-forgettable lists) + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists memory, + // Flag to know if list was already fired fired, - // Flag to know if list is currently firing - firing, - // First callback to fire (used internally by add and fireWith) - firingStart, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, + + // Flag to prevent firing + locked, + // Actual callback list list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } } } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { list = []; + + // Otherwise, this object is spent } else { - self.disable(); + list = ""; } } }, + // Actual Callbacks object self = { + // Add a callback or a collection of callbacks to the list add: function() { if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { + if ( isFunction( arg ) ) { if ( !options.unique || !self.has( arg ) ) { list.push( arg ); } - } else if ( arg && arg.length && type !== "string" ) { + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + // Inspect recursively add( arg ); } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); } } return this; }, + // Remove a callback from the list remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; } - }); - } + } + } ); return this; }, + // Check if a given callback is in the list. // If no argument is given, return whether or not list has callbacks attached. has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; }, + // Remove all callbacks from the list empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); + if ( list ) { + list = []; } return this; }, - // Is it locked? - locked: function() { - return !stack; + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + // Call all callbacks with the given context and arguments fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { + if ( !locked ) { args = args || []; args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); + queue.push( args ); + if ( !firing ) { + fire(); } } return this; }, + // Call all the callbacks with the given arguments fire: function() { self.fireWith( this, arguments ); return this; }, + // To know if the callbacks have already been called at least once fired: function() { return !!fired; @@ -3228,14 +3372,59 @@ jQuery.Callbacks = function( options ) { }; -jQuery.extend({ +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { Deferred: function( func ) { var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] ], state = "pending", promise = { @@ -3246,27 +3435,213 @@ jQuery.extend({ deferred.done( arguments ).fail( arguments ); return this; }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); + "catch": function( fn ) { + return promise.then( null, fn ); }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.error ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the error, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getErrorHook ) { + process.error = jQuery.Deferred.getErrorHook(); + + // The deprecated alias of the above. While the name suggests + // returning the stack, not an error instance, jQuery just passes + // it directly to `console.warn` so both will work; an instance + // just better cooperates with source maps. + } else if ( jQuery.Deferred.getStackHook ) { + process.error = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + // Get a promise for this deferred // If obj is provided, the promise aspect is added to the object promise: function( obj ) { @@ -3275,34 +3650,60 @@ jQuery.extend({ }, deferred = {}; - // Keep pipe for back-compat - promise.pipe = promise.then; - // Add list-specific methods jQuery.each( tuples, function( i, tuple ) { var list = tuple[ 2 ], - stateString = tuple[ 3 ]; + stateString = tuple[ 5 ]; - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; // Handle state if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; + list.add( + function() { - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); } - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); return this; }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); // Make the deferred a promise promise.promise( deferred ); @@ -3317,86 +3718,112 @@ jQuery.extend({ }, // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), resolveValues = slice.call( arguments ), - length = resolveValues.length, - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + // the primary Deferred + primary = jQuery.Deferred(), - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { + // subordinate callback factory + updateFunc = function( i ) { return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - } else if ( !( --remaining ) ) { - deferred.resolveWith( contexts, values ); + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + primary.resolveWith( resolveContexts, resolveValues ); } }; - }, + }; - progressValues, progressContexts, resolveContexts; + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, + !remaining ); - // Add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( primary.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return primary.then(); } } - // If we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); } - return deferred.promise(); + return primary.promise(); } -}); +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error +// captured before the async barrier to get the original error cause +// which may otherwise be hidden. +jQuery.Deferred.exceptionHook = function( error, asyncError ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, + error.stack, asyncError ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + // The deferred used on DOM ready -var readyList; +var readyList = jQuery.Deferred(); jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); return this; }; -jQuery.extend({ +jQuery.extend( { + // Is the DOM ready to be used? Set to true once it occurs. isReady: false, // A counter to track how many items to wait for before - // the ready event fires. See #6781 + // the ready event fires. See trac-6781 readyWait: 1, - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - // Handle when the DOM is ready ready: function( wait ) { @@ -3415,77 +3842,64 @@ jQuery.extend({ // If there are functions bound, to execute readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } } -}); +} ); -/** - * The ready event handler and self cleanup method - */ +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method function completed() { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); jQuery.ready(); } -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { - readyList = jQuery.Deferred(); + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // We once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); +} else { - } else { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - } - } - return readyList.promise( obj ); -}; - -// Kick off the DOM ready check even if the user does not -jQuery.ready.promise(); + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} // Multifunctional method to get and set values of a collection // The value/s can optionally be executed if it's a function -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { var i = 0, len = elems.length, bulk = key == null; // Sets many values - if ( jQuery.type( key ) === "object" ) { + if ( toType( key ) === "object" ) { chainable = true; for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + access( elems, fn, i, key[ i ], true, emptyGet, raw ); } // Sets one value } else if ( value !== undefined ) { chainable = true; - if ( !jQuery.isFunction( value ) ) { + if ( !isFunction( value ) ) { raw = true; } if ( bulk ) { + // Bulk operations run against the entire set if ( raw ) { fn.call( elems, value ); @@ -3494,7 +3908,7 @@ var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGe // ...except when executing function values } else { bulk = fn; - fn = function( elem, key, value ) { + fn = function( elem, _key, value ) { return bulk.call( jQuery( elem ), value ); }; } @@ -3502,127 +3916,126 @@ var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGe if ( fn ) { for ( ; i < len; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); } } } - return chainable ? - elems : + if ( chainable ) { + return elems; + } - // Gets - bulk ? - fn.call( elems ) : - len ? fn( elems[0], key ) : emptyGet; + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; }; -/** - * Determines whether an object can have data - */ -jQuery.acceptData = function( owner ) { +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (trac-9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + // Accepts only: // - Node // - Node.ELEMENT_NODE // - Node.DOCUMENT_NODE // - Object // - Any - /* jshint -W018 */ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); }; -function Data() { - // Support: Android<4, - // Old WebKit does not have Object.preventExtensions/freeze method, - // return new empty object instead with no [[set]] accessor - Object.defineProperty( this.cache = {}, 0, { - get: function() { - return {}; - } - }); + +function Data() { this.expando = jQuery.expando + Data.uid++; } Data.uid = 1; -Data.accepts = jQuery.acceptData; Data.prototype = { - key: function( owner ) { - // We can accept data for non-element nodes in modern browsers, - // but we should not, see #8335. - // Always return the key for a frozen object. - if ( !Data.accepts( owner ) ) { - return 0; - } - var descriptor = {}, - // Check if the owner object already has a cache key - unlock = owner[ this.expando ]; + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; // If not, create one - if ( !unlock ) { - unlock = Data.uid++; + if ( !value ) { + value = {}; - // Secure it in a non-enumerable, non-writable property - try { - descriptor[ this.expando ] = { value: unlock }; - Object.defineProperties( owner, descriptor ); + // We can accept data for non-element nodes in modern browsers, + // but we should not, see trac-8335. + // Always return an empty object. + if ( acceptData( owner ) ) { - // Support: Android<4 - // Fallback to a less secure definition - } catch ( e ) { - descriptor[ this.expando ] = unlock; - jQuery.extend( owner, descriptor ); + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } } } - // Ensure the cache object - if ( !this.cache[ unlock ] ) { - this.cache[ unlock ] = {}; - } - - return unlock; + return value; }, set: function( owner, data, value ) { var prop, - // There may be an unlock assigned to this node, - // if there is no entry for this "owner", create one inline - // and set the unlock as though an owner entry had always existed - unlock = this.key( owner ), - cache = this.cache[ unlock ]; + cache = this.cache( owner ); // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) if ( typeof data === "string" ) { - cache[ data ] = value; + cache[ camelCase( data ) ] = value; // Handle: [ owner, { properties } ] args } else { - // Fresh assignments by object are shallow copied - if ( jQuery.isEmptyObject( cache ) ) { - jQuery.extend( this.cache[ unlock ], data ); - // Otherwise, copy the properties one-by-one to the cache object - } else { - for ( prop in data ) { - cache[ prop ] = data[ prop ]; - } + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; } } return cache; }, get: function( owner, key ) { - // Either a valid cache is found, or will be created. - // New caches will be created and the unlock returned, - // allowing direct access to the newly created - // empty data object. A valid owner object must be provided. - var cache = this.cache[ this.key( owner ) ]; - return key === undefined ? - cache : cache[ key ]; + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; }, access: function( owner, key, value ) { - var stored; + // In cases where either: // // 1. No key was specified @@ -3635,15 +4048,12 @@ Data.prototype = { // 2. The data stored at the key // if ( key === undefined || - ((key && typeof key === "string") && value === undefined) ) { + ( ( key && typeof key === "string" ) && value === undefined ) ) { - stored = this.get( owner, key ); - - return stored !== undefined ? - stored : this.get( owner, jQuery.camelCase(key) ); + return this.get( owner, key ); } - // [*]When the key is not a string, or both a key and value + // When the key is not a string, or both a key and value // are specified, set or extend (existing objects) with either: // // 1. An object of properties @@ -3656,57 +4066,60 @@ Data.prototype = { return value !== undefined ? value : key; }, remove: function( owner, key ) { - var i, name, camel, - unlock = this.key( owner ), - cache = this.cache[ unlock ]; + var i, + cache = owner[ this.expando ]; - if ( key === undefined ) { - this.cache[ unlock ] = {}; + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { - } else { // Support array or space separated string of keys - if ( jQuery.isArray( key ) ) { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = key.concat( key.map( jQuery.camelCase ) ); + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); } else { - camel = jQuery.camelCase( key ); - // Try the string as a key before any manipulation - if ( key in cache ) { - name = [ key, camel ]; - } else { - // If a key with the spaces exists, use it. - // Otherwise, create an array by matching non-whitespace - name = camel; - name = name in cache ? - [ name ] : ( name.match( rnotwhite ) || [] ); - } + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); } - i = name.length; + i = key.length; + while ( i-- ) { - delete cache[ name[ i ] ]; + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; } } }, hasData: function( owner ) { - return !jQuery.isEmptyObject( - this.cache[ owner[ this.expando ] ] || {} - ); - }, - discard: function( owner ) { - if ( owner[ this.expando ] ) { - delete this.cache[ owner[ this.expando ] ]; - } + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); } }; -var data_priv = new Data(); +var dataPriv = new Data(); -var data_user = new Data(); +var dataUser = new Data(); @@ -3721,7 +4134,32 @@ var data_user = new Data(); // 6. Provide a clear path for implementation upgrade to WeakMap in 2014 var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} function dataAttr( elem, key, data ) { var name; @@ -3729,22 +4167,16 @@ function dataAttr( elem, key, data ) { // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { - name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); data = elem.getAttribute( name ); if ( typeof data === "string" ) { try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} + data = getData( data ); + } catch ( e ) {} // Make sure we set the data so it isn't changed later - data_user.set( elem, key, data ); + dataUser.set( elem, key, data ); } else { data = undefined; } @@ -3752,31 +4184,31 @@ function dataAttr( elem, key, data ) { return data; } -jQuery.extend({ +jQuery.extend( { hasData: function( elem ) { - return data_user.hasData( elem ) || data_priv.hasData( elem ); + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); }, data: function( elem, name, data ) { - return data_user.access( elem, name, data ); + return dataUser.access( elem, name, data ); }, removeData: function( elem, name ) { - data_user.remove( elem, name ); + dataUser.remove( elem, name ); }, // TODO: Now that all calls to _data and _removeData have been replaced - // with direct calls to data_priv methods, these can be deprecated. + // with direct calls to dataPriv methods, these can be deprecated. _data: function( elem, name, data ) { - return data_priv.access( elem, name, data ); + return dataPriv.access( elem, name, data ); }, _removeData: function( elem, name ) { - data_priv.remove( elem, name ); + dataPriv.remove( elem, name ); } -}); +} ); -jQuery.fn.extend({ +jQuery.fn.extend( { data: function( key, value ) { var i, name, data, elem = this[ 0 ], @@ -3785,23 +4217,23 @@ jQuery.fn.extend({ // Gets all values if ( key === undefined ) { if ( this.length ) { - data = data_user.get( elem ); + data = dataUser.get( elem ); - if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { i = attrs.length; while ( i-- ) { - // Support: IE11+ - // The attrs elements can be null (#14894) + // Support: IE 11 only + // The attrs elements can be null (trac-14894) if ( attrs[ i ] ) { name = attrs[ i ].name; if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); + name = camelCase( name.slice( 5 ) ); dataAttr( elem, name, data[ name ] ); } } } - data_priv.set( elem, "hasDataAttrs", true ); + dataPriv.set( elem, "hasDataAttrs", true ); } } @@ -3810,14 +4242,13 @@ jQuery.fn.extend({ // Sets multiple values if ( typeof key === "object" ) { - return this.each(function() { - data_user.set( this, key ); - }); + return this.each( function() { + dataUser.set( this, key ); + } ); } return access( this, function( value ) { - var data, - camelKey = jQuery.camelCase( key ); + var data; // The calling jQuery object (element matches) is not empty // (and therefore has an element appears at this[ 0 ]) and the @@ -3825,23 +4256,17 @@ jQuery.fn.extend({ // will result in `undefined` for elem = this[ 0 ] which will // throw an exception if an attempt to read a data cache is made. if ( elem && value === undefined ) { - // Attempt to get data from the cache - // with the key as-is - data = data_user.get( elem, key ); - if ( data !== undefined ) { - return data; - } // Attempt to get data from the cache - // with the key camelized - data = data_user.get( elem, camelKey ); + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); if ( data !== undefined ) { return data; } // Attempt to "discover" the data in // HTML5 custom data-* attrs - data = dataAttr( elem, camelKey, undefined ); + data = dataAttr( elem, key ); if ( data !== undefined ) { return data; } @@ -3851,46 +4276,34 @@ jQuery.fn.extend({ } // Set the data... - this.each(function() { - // First, attempt to store a copy or reference of any - // data that might've been store with a camelCased key. - var data = data_user.get( this, camelKey ); + this.each( function() { - // For HTML5 data-* attribute interop, we have to - // store property names with dashes in a camelCase form. - // This might not apply to all properties...* - data_user.set( this, camelKey, value ); - - // *... In the case of properties that might _actually_ - // have dashes, we need to also store a copy of that - // unchanged property. - if ( key.indexOf("-") !== -1 && data !== undefined ) { - data_user.set( this, key, value ); - } - }); + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); }, null, value, arguments.length > 1, null, true ); }, removeData: function( key ) { - return this.each(function() { - data_user.remove( this, key ); - }); + return this.each( function() { + dataUser.remove( this, key ); + } ); } -}); +} ); -jQuery.extend({ +jQuery.extend( { queue: function( elem, type, data ) { var queue; if ( elem ) { type = ( type || "fx" ) + "queue"; - queue = data_priv.get( elem, type ); + queue = dataPriv.get( elem, type ); // Speed up dequeue by getting out quickly if this is just a lookup if ( data ) { - if ( !queue || jQuery.isArray( data ) ) { - queue = data_priv.access( elem, type, jQuery.makeArray(data) ); + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); } else { queue.push( data ); } @@ -3937,15 +4350,15 @@ jQuery.extend({ // Not public - generate a queueHooks object, or return the current one _queueHooks: function( elem, type ) { var key = type + "queueHooks"; - return data_priv.get( elem, key ) || data_priv.access( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - data_priv.remove( elem, [ type + "queue", key ] ); - }) - }); + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); } -}); +} ); -jQuery.fn.extend({ +jQuery.fn.extend( { queue: function( type, data ) { var setter = 2; @@ -3956,30 +4369,31 @@ jQuery.fn.extend({ } if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); + return jQuery.queue( this[ 0 ], type ); } return data === undefined ? this : - this.each(function() { + this.each( function() { var queue = jQuery.queue( this, type, data ); // Ensure a hooks for this queue jQuery._queueHooks( this, type ); - if ( type === "fx" && queue[0] !== "inprogress" ) { + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { jQuery.dequeue( this, type ); } - }); + } ); }, dequeue: function( type ) { - return this.each(function() { + return this.each( function() { jQuery.dequeue( this, type ); - }); + } ); }, clearQueue: function( type ) { return this.queue( type || "fx", [] ); }, + // Get a promise resolved when queues of a certain type // are emptied (fx is the type by default) promise: function( type, obj ) { @@ -4001,7 +4415,7 @@ jQuery.fn.extend({ type = type || "fx"; while ( i-- ) { - tmp = data_priv.get( elements[ i ], type + "queueHooks" ); + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); if ( tmp && tmp.empty ) { count++; tmp.empty.add( resolve ); @@ -4010,58 +4424,410 @@ jQuery.fn.extend({ resolve(); return defer.promise( obj ); } -}); -var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; -var isHidden = function( elem, el ) { - // isHidden might be called from jQuery#filter function; +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; // in that case, element will be second argument elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; }; -var rcheckableType = (/^(?:checkbox|radio)$/i); + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); -(function() { +( function() { var fragment = document.createDocumentFragment(), div = fragment.appendChild( document.createElement( "div" ) ), input = document.createElement( "input" ); - // Support: Safari<=5.1 - // Check state lost if the name is set (#11217) + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (trac-11217) // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) + // `name` and `type` must use .setAttribute for WWA (trac-14901) input.setAttribute( "type", "radio" ); input.setAttribute( "checked", "checked" ); input.setAttribute( "name", "t" ); div.appendChild( input ); - // Support: Safari<=5.1, Android<4.2 + // Support: Android <=4.1 only // Older WebKit doesn't clone checked state correctly in fragments support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - // Support: IE<=11+ + // Support: IE <=11 only // Make sure textarea (and checkbox) defaultValue is properly cloned div.innerHTML = ""; support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -})(); -var strundefined = typeof undefined; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); +// We have to close these tags to support XHTML (trac-13200) +var wrapMap = { -support.focusinBubbles = "onfocusin" in window; + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
        " ], + col: [ 2, "", "
        " ], + tr: [ 2, "", "
        " ], + td: [ 3, "", "
        " ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (trac-15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (trac-12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; function returnTrue() { return true; @@ -4071,10 +4837,65 @@ function returnFalse() { return false; } -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); } /* @@ -4090,10 +4911,10 @@ jQuery.event = { var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, - elemData = data_priv.get( elem ); + elemData = dataPriv.get( elem ); - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { return; } @@ -4104,31 +4925,38 @@ jQuery.event = { selector = handleObjIn.selector; } + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + // Make sure that the handler has a unique ID, used to find/remove it later if ( !handler.guid ) { handler.guid = jQuery.guid++; } // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); } - if ( !(eventHandle = elemData.handle) ) { + if ( !( eventHandle = elemData.handle ) ) { eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ? + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply( elem, arguments ) : undefined; }; } // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; t = types.length; while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // There *must* be a type, no attaching namespace-only handlers if ( !type ) { @@ -4145,7 +4973,7 @@ jQuery.event = { special = jQuery.event.special[ type ] || {}; // handleObj is passed to all event handlers - handleObj = jQuery.extend({ + handleObj = jQuery.extend( { type: type, origType: origType, data: data, @@ -4153,18 +4981,20 @@ jQuery.event = { guid: handler.guid, selector: selector, needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") + namespace: namespaces.join( "." ) }, handleObjIn ); // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { + if ( !( handlers = events[ type ] ) ) { handlers = events[ type ] = []; handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); + elem.addEventListener( type, eventHandle ); } } } @@ -4196,19 +5026,19 @@ jQuery.event = { var j, origCount, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, - elemData = data_priv.hasData( elem ) && data_priv.get( elem ); + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - if ( !elemData || !(events = elemData.events) ) { + if ( !elemData || !( events = elemData.events ) ) { return; } // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; t = types.length; while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // Unbind all events (on this namespace, if provided) for the element if ( !type ) { @@ -4221,7 +5051,8 @@ jQuery.event = { special = jQuery.event.special[ type ] || {}; type = ( selector ? special.delegateType : special.bindType ) || type; handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); // Remove matching events origCount = j = handlers.length; @@ -4231,7 +5062,8 @@ jQuery.event = { if ( ( mappedTypes || origType === handleObj.origType ) && ( !handler || handler.guid === handleObj.guid ) && ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { handlers.splice( j, 1 ); if ( handleObj.selector ) { @@ -4246,7 +5078,9 @@ jQuery.event = { // Remove generic event handler if we removed something and no more handlers exist // (avoids potential for endless recursion during removal of special event handlers) if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); } @@ -4254,158 +5088,32 @@ jQuery.event = { } } - // Remove the expando if it's no longer used + // Remove data and the expando if it's no longer used if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - data_priv.remove( elem, "events" ); + dataPriv.remove( elem, "handle events" ); } }, - trigger: function( event, data, elem, onlyHandlers ) { + dispatch: function( nativeEvent ) { - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), - cur = tmp = elem = elem || document; + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && jQuery.acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, j, ret, matched, handleObj, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired @@ -4418,24 +5126,26 @@ jQuery.event = { // Run delegates first; they may want to stop propagation beneath us i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { event.currentTarget = matched.elem; j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { event.handleObj = handleObj; event.data = handleObj.data; - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { + if ( ( event.result = ret ) === false ) { event.preventDefault(); event.stopPropagation(); } @@ -4453,173 +5163,148 @@ jQuery.event = { }, handlers: function( event, handlers ) { - var i, matches, sel, handleObj, + var i, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { for ( ; cur !== this; cur = cur.parentNode || this ) { - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.disabled !== true || event.type !== "click" ) { - matches = []; + // Don't check non-elements (trac-13208) + // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; for ( i = 0; i < delegateCount; i++ ) { handleObj = handlers[ i ]; - // Don't conflict with Object.prototype properties (#13203) + // Don't conflict with Object.prototype properties (trac-13203) sel = handleObj.selector + " "; - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : jQuery.find( sel, this, null, [ cur ] ).length; } - if ( matches[ sel ] ) { - matches.push( handleObj ); + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); } } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); } } } } // Add the remaining (directly-bound) handlers + cur = this; if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); } return handlerQueue; }, - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, - fixHooks: {}, + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); } - - return event; - } + } ); }, - mouseHooks: { - props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: Cordova 2.5 (WebKit) (#13255) - // All events should have a target; Cordova deviceready doesn't - if ( !event.target ) { - event.target = document; - } - - // Support: Safari 6.0+, Chrome<28 - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); }, special: { load: { + // Prevent triggered image.load events from bubbling to window.load noBubble: true }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { - this.click(); - return false; + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", true ); } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; }, - // For cross-browser consistency, don't fire native .click() on links + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); } }, @@ -4633,41 +5318,104 @@ jQuery.event = { } } } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } } }; +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, isSetup ) { + + // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add + if ( !isSetup ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + if ( !saved ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + this[ type ](); + result = dataPriv.get( this, type ); + dataPriv.set( this, type, false ); + + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + + return result; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering + // the native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved ) { + + // ...and capture the result + dataPriv.set( this, type, jQuery.event.trigger( + saved[ 0 ], + saved.slice( 1 ), + this + ) ); + + // Abort handling of the native event by all jQuery handlers while allowing + // native handlers on the same element to run. On target, this is achieved + // by stopping immediate propagation just on the jQuery event. However, + // the native event is re-wrapped by a jQuery one on each level of the + // propagation so the only way to stop it for jQuery is to stop it for + // everyone via native `stopPropagation()`. This is not a problem for + // focus/blur which don't bubble, but it does also stop click on checkboxes + // and radios. We accept this limitation. + event.stopPropagation(); + event.isImmediatePropagationStopped = returnTrue; + } + } + } ); +} + jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); + elem.removeEventListener( type, handle ); } }; jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { + if ( !( this instanceof jQuery.Event ) ) { return new jQuery.Event( src, props ); } @@ -4680,11 +5428,22 @@ jQuery.Event = function( src, props ) { // by a handler lower down the tree; reflect the correct value. this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && - // Support: Android<4.0 + + // Support: Android <=2.3 only src.returnValue === false ? returnTrue : returnFalse; + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (trac-504, trac-13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + // Event type } else { this.type = src; @@ -4696,25 +5455,27 @@ jQuery.Event = function( src, props ) { } // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); + this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed this[ jQuery.expando ] = true; }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html jQuery.Event.prototype = { + constructor: jQuery.Event, isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, isImmediatePropagationStopped: returnFalse, + isSimulated: false, preventDefault: function() { var e = this.originalEvent; this.isDefaultPrevented = returnTrue; - if ( e && e.preventDefault ) { + if ( e && !this.isSimulated ) { e.preventDefault(); } }, @@ -4723,7 +5484,7 @@ jQuery.Event.prototype = { this.isPropagationStopped = returnTrue; - if ( e && e.stopPropagation ) { + if ( e && !this.isSimulated ) { e.stopPropagation(); } }, @@ -4732,7 +5493,7 @@ jQuery.Event.prototype = { this.isImmediatePropagationStopped = returnTrue; - if ( e && e.stopImmediatePropagation ) { + if ( e && !this.isSimulated ) { e.stopImmediatePropagation(); } @@ -4740,9 +5501,208 @@ jQuery.Event.prototype = { } }; +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + which: true +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + + function focusMappedHandler( nativeEvent ) { + if ( document.documentMode ) { + + // Support: IE 11+ + // Attach a single focusin/focusout handler on the document while someone wants + // focus/blur. This is because the former are synchronous in IE while the latter + // are async. In other browsers, all those handlers are invoked synchronously. + + // `handle` from private data would already wrap the event, but we need + // to change the `type` here. + var handle = dataPriv.get( this, "handle" ), + event = jQuery.event.fix( nativeEvent ); + event.type = nativeEvent.type === "focusin" ? "focus" : "blur"; + event.isSimulated = true; + + // First, handle focusin/focusout + handle( nativeEvent ); + + // ...then, handle focus/blur + // + // focus/blur don't bubble while focusin/focusout do; simulate the former by only + // invoking the handler at the lower level. + if ( event.target === event.currentTarget ) { + + // The setup part calls `leverageNative`, which, in turn, calls + // `jQuery.event.add`, so event handle will already have been set + // by this point. + handle( event ); + } + } else { + + // For non-IE browsers, attach a single capturing handler on the document + // while someone wants focusin/focusout. + jQuery.event.simulate( delegateType, nativeEvent.target, + jQuery.event.fix( nativeEvent ) ); + } + } + + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + var attaches; + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, true ); + + if ( document.documentMode ) { + + // Support: IE 9 - 11+ + // We use the same native handler for focusin & focus (and focusout & blur) + // so we need to coordinate setup & teardown parts between those events. + // Use `delegateType` as the key as `type` is already used by `leverageNative`. + attaches = dataPriv.get( this, delegateType ); + if ( !attaches ) { + this.addEventListener( delegateType, focusMappedHandler ); + } + dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 ); + } else { + + // Return false to allow normal processing in the caller + return false; + } + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + teardown: function() { + var attaches; + + if ( document.documentMode ) { + attaches = dataPriv.get( this, delegateType ) - 1; + if ( !attaches ) { + this.removeEventListener( delegateType, focusMappedHandler ); + dataPriv.remove( this, delegateType ); + } else { + dataPriv.set( this, delegateType, attaches ); + } + } else { + + // Return false to indicate standard teardown should be applied + return false; + } + }, + + // Suppress native focus or blur if we're currently inside + // a leveraged native-event stack + _default: function( event ) { + return dataPriv.get( event.target, type ); + }, + + delegateType: delegateType + }; + + // Support: Firefox <=44 + // Firefox doesn't have focus(in | out) events + // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 + // + // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 + // focus(in | out) events fire after focus & blur events, + // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order + // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 + // + // Support: IE 9 - 11+ + // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch, + // attach a single handler for both events in IE. + jQuery.event.special[ delegateType ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + dataHolder = document.documentMode ? this : doc, + attaches = dataPriv.get( dataHolder, delegateType ); + + // Support: IE 9 - 11+ + // We use the same native handler for focusin & focus (and focusout & blur) + // so we need to coordinate setup & teardown parts between those events. + // Use `delegateType` as the key as `type` is already used by `leverageNative`. + if ( !attaches ) { + if ( document.documentMode ) { + this.addEventListener( delegateType, focusMappedHandler ); + } else { + doc.addEventListener( type, focusMappedHandler, true ); + } + } + dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + dataHolder = document.documentMode ? this : doc, + attaches = dataPriv.get( dataHolder, delegateType ) - 1; + + if ( !attaches ) { + if ( document.documentMode ) { + this.removeEventListener( delegateType, focusMappedHandler ); + } else { + doc.removeEventListener( type, focusMappedHandler, true ); + } + dataPriv.remove( dataHolder, delegateType ); + } else { + dataPriv.set( dataHolder, delegateType, attaches ); + } + } + }; +} ); + // Create mouseenter/leave events using mouseover/out and event-time checks -// Support: Chrome 15+ -jQuery.each({ +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", @@ -4758,9 +5718,9 @@ jQuery.each({ related = event.relatedTarget, handleObj = event.handleObj; - // For mousenter/leave call the handler if related is outside the target. + // For mouseenter/leave call the handler if related is outside the target. // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { event.type = handleObj.origType; ret = handleObj.handler.apply( this, arguments ); event.type = fix; @@ -4768,115 +5728,33 @@ jQuery.each({ return ret; } }; -}); +} ); -// Support: Firefox, Chrome, Safari -// Create "bubbling" focus and blur events -if ( !support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { +jQuery.fn.extend( { - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - data_priv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = data_priv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - data_priv.remove( doc, fix ); - - } else { - data_priv.access( doc, fix, attaches ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); }, one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); + return on( this, types, selector, data, fn, 1 ); }, off: function( types, selector, fn ) { var handleObj, type; if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event handleObj = types.handleObj; jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, handleObj.selector, handleObj.handler ); return this; } if ( typeof types === "object" ) { + // ( types-object [, selector] ) for ( type in types ) { this.off( type, selector, types[ type ] ); @@ -4884,6 +5762,7 @@ jQuery.fn.extend({ return this; } if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) fn = selector; selector = undefined; @@ -4891,112 +5770,65 @@ jQuery.fn.extend({ if ( fn === false ) { fn = returnFalse; } - return this.each(function() { + return this.each( function() { jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } + } ); } -}); +} ); var - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rhtml = /<|&#?\w+;/, - rnoInnerhtml = /<(?:script|style|link)/i, + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g, - // We have to close these tags to support XHTML (#13200) - wrapMap = { + rcleanScript = /^\s*\s*$/g; - // Support: IE9 - option: [ 1, "" ], - - thead: [ 1, "", "
        " ], - col: [ 2, "", "
        " ], - tr: [ 2, "", "
        " ], - td: [ 3, "", "
        " ], - - _default: [ 0, "", "" ] - }; - -// Support: IE9 -wrapMap.optgroup = wrapMap.option; - -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// Support: 1.x compatibility -// Manipulating tables requires a tbody +// Prefer a tbody over its parent table for containing new rows function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; } // Replace/restore the type attribute of script elements for safe DOM manipulation function disableScript( elem ) { - elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; return elem; } function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); } else { - elem.removeAttribute("type"); + elem.removeAttribute( "type" ); } return elem; } -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - data_priv.set( - elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) - ); - } -} - function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + var i, l, type, pdataOld, udataOld, udataCur, events; if ( dest.nodeType !== 1 ) { return; } // 1. Copy private data: events, handlers, etc. - if ( data_priv.hasData( src ) ) { - pdataOld = data_priv.access( src ); - pdataCur = data_priv.set( dest, pdataOld ); + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); events = pdataOld.events; if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; + dataPriv.remove( dest, "handle events" ); for ( type in events ) { for ( i = 0, l = events[ type ].length; i < l; i++ ) { @@ -5007,24 +5839,14 @@ function cloneCopyEvent( src, dest ) { } // 2. Copy user data - if ( data_user.hasData( src ) ) { - udataOld = data_user.access( src ); + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); udataCur = jQuery.extend( {}, udataOld ); - data_user.set( dest, udataCur ); + dataUser.set( dest, udataCur ); } } -function getAll( context, tag ) { - var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : - context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : - []; - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], ret ) : - ret; -} - // Fix IE bugs, see support tests function fixInput( src, dest ) { var nodeName = dest.nodeName.toLowerCase(); @@ -5039,17 +5861,141 @@ function fixInput( src, dest ) { } } -jQuery.extend({ +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (trac-8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Re-enable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + + // Unwrap a CDATA section containing script contents. This shouldn't be + // needed as in XML documents they're already not visible when + // inspecting element contents and in HTML documents they have no + // meaning but we're preserving that logic for backwards compatibility. + // This will be removed completely in 4.0. See gh-4904. + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + clone: function( elem, dataAndEvents, deepDataAndEvents ) { var i, l, srcElements, destElements, clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); + inPage = isAttached( elem ); // Fix IE cloning issues if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + // We eschew jQuery#find here for performance reasons: + // https://jsperf.com/getall-vs-sizzle/2 destElements = getAll( clone ); srcElements = getAll( elem ); @@ -5082,102 +6028,14 @@ jQuery.extend({ return clone; }, - buildFragment: function( elems, context, scripts, selection ) { - var elem, tmp, tag, wrap, contains, j, - fragment = context.createDocumentFragment(), - nodes = [], - i = 0, - l = elems.length; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - // Support: QtWebKit, PhantomJS - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || fragment.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[ 2 ]; - - // Descend through wrappers to the right content - j = wrap[ 0 ]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Support: QtWebKit, PhantomJS - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( nodes, tmp.childNodes ); - - // Remember the top-level container - tmp = fragment.firstChild; - - // Ensure the created nodes are orphaned (#12392) - tmp.textContent = ""; - } - } - } - - // Remove wrapper from fragment - fragment.textContent = ""; - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( fragment.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - return fragment; - }, - cleanData: function( elems ) { - var data, elem, type, key, + var data, elem, type, special = jQuery.event.special, i = 0; - for ( ; (elem = elems[ i ]) !== undefined; i++ ) { - if ( jQuery.acceptData( elem ) ) { - key = elem[ data_priv.expando ]; - - if ( key && (data = data_priv.cache[ key ]) ) { + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { if ( data.events ) { for ( type in data.events ) { if ( special[ type ] ) { @@ -5189,91 +6047,82 @@ jQuery.extend({ } } } - if ( data_priv.cache[ key ] ) { - // Discard any remaining `private` data - delete data_priv.cache[ key ]; - } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; } } - // Discard any remaining `user` data - delete data_user.cache[ elem[ data_user.expando ] ]; } } -}); +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, -jQuery.fn.extend({ text: function( value ) { return access( this, function( value ) { return value === undefined ? jQuery.text( this ) : - this.empty().each(function() { + this.empty().each( function() { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { this.textContent = value; } - }); + } ); }, null, value, arguments.length ); }, append: function() { - return this.domManip( arguments, function( elem ) { + return domManip( this, arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.appendChild( elem ); } - }); + } ); }, prepend: function() { - return this.domManip( arguments, function( elem ) { + return domManip( this, arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.insertBefore( elem, target.firstChild ); } - }); + } ); }, before: function() { - return this.domManip( arguments, function( elem ) { + return domManip( this, arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this ); } - }); + } ); }, after: function() { - return this.domManip( arguments, function( elem ) { + return domManip( this, arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this.nextSibling ); } - }); - }, - - remove: function( selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; + } ); }, empty: function() { var elem, i = 0; - for ( ; (elem = this[i]) != null; i++ ) { + for ( ; ( elem = this[ i ] ) != null; i++ ) { if ( elem.nodeType === 1 ) { // Prevent memory leaks @@ -5291,9 +6140,9 @@ jQuery.fn.extend({ dataAndEvents = dataAndEvents == null ? false : dataAndEvents; deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - return this.map(function() { + return this.map( function() { return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); + } ); }, html: function( value ) { @@ -5310,7 +6159,7 @@ jQuery.fn.extend({ if ( typeof value === "string" && !rnoInnerhtml.test( value ) && !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - value = value.replace( rxhtmlTag, "<$1>" ); + value = jQuery.htmlPrefilter( value ); try { for ( ; i < l; i++ ) { @@ -5326,7 +6175,7 @@ jQuery.fn.extend({ elem = 0; // If using innerHTML throws an exception, use the fallback method - } catch( e ) {} + } catch ( e ) {} } if ( elem ) { @@ -5336,115 +6185,25 @@ jQuery.fn.extend({ }, replaceWith: function() { - var arg = arguments[ 0 ]; + var ignored = []; - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - arg = this.parentNode; + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; - jQuery.cleanData( getAll( this ) ); - - if ( arg ) { - arg.replaceChild( elem, this ); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - self.domManip( args, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - // Support: QtWebKit - // jQuery.merge because push.apply(_, arraylike) throws - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); - } - } - } + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); } } - } - return this; + // Force callback invocation + }, ignored ); } -}); +} ); -jQuery.each({ +jQuery.each( { appendTo: "append", prependTo: "prepend", insertBefore: "before", @@ -5462,117 +6221,258 @@ jQuery.each({ elems = i === last ? this : this.clone( true ); jQuery( insert[ i ] )[ original ]( elems ); - // Support: QtWebKit - // .get() because push.apply(_, arraylike) throws + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit push.apply( ret, elems.get() ); } return this.pushStack( ret ); }; -}); - - -var iframe, - elemdisplay = {}; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var style, - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - - // Use of this method is a temporary fix (more like optimization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery( "